https://en.wikipedia.org/wiki/Compiler [wikipedia.org] In computing, a compiler is a computer program that translates computer code written in one programming language (the source language) into another language (the target language). The name "compi
あと「the binary representation of a computer program which is actually read and interpreted by the computer」への変換という意味を厳密に解釈すると、通常のCコンパイラでさえコンパイラ扱いから外れますよ。 UNIX/Linux 上のコンパイラは通常 machine code を吐くわけではなく、アセンブラのソースコードを吐きますから。
ちなみにそういう立ち位置にいる理由は、初期のC++コンパイラ (cfront) が 実体は C++ to C のトランスレータだったという知識も影響してますね。 → https://ja.wikipedia.org/wiki/Cfront [wikipedia.org] 高級言語 to 高級言語のトランスレータをコンパイラと呼ぶのは 別に JavaScript が初めてじゃなく、40年も昔の1983年の時点で普通に行われていた慣習なんです。 まあこれについては cfront + cc の両方合わせたものをコンパイラと呼んでいたんだという見方も可能なんですが。
コンパイル? (スコア:0)
ソースコードを機械語に変換することをコンパイルって言うんですよね
https://dictionary.cambridge.org/dictionary/english/compile [cambridge.org]
tsはjsに変換するんだからコンパイルではなくね?
Re: (スコア:0)
> ソースコードを機械語に変換することをコンパイルって言うんですよね
> https://dictionary.cambridge.org/dictionary/english/compile [cambridge.org]
Cambridge Dictionary は一般の辞書であって、IT用語の正確性については一歩劣ると思います。
こういうのは英語Wikipediaの方がむしろ正確で、そっちを見ると
https://en.wikipedia.org/wiki/Compiler [wikipedia.org]
In computing, a compiler is a computer program that translates computer code written in one programming language (the source language) into another language (the target language). The name "compi
Re: (スコア:0)
Wikipediaは二次ソースだと思うんですが一次ソースはどこから持ってきたものなんですか?
Re: (スコア:0)
Wikipedia のこの部分の記述には出典らしきものがないみたいなので(探し方が悪いかも?)
たぶん米国の Computer Science 系学科で習う内容そのまんまなのではないかと。
たとえば適当にググって出てきたブラウン大学 Computer Science 学科の講義資料がこれ
https://cs.brown.edu/courses/csci1260/spring-2021/lectures/what-is-a-c... [brown.edu]
A compiler is a program that takes in source code written in one language
(called the source lang
Re: (スコア:0)
たぶん米国の Computer Science 系学科で習う内容そのまんまなのではないかと。
プリンストン大学では違うみたいですよ
https://introcs.cs.princeton.edu/java/82compiler/ [princeton.edu]
Re: (スコア:0)
> プリンストン大学では違うみたいですよ
URLからわかるとおり、これは Java の講義のようで
Java VM byte code は machine language code (for some machine architecture) 扱いだし
javac はコンパイラ扱いです。
つまり machine language code は仮想機械の実行コードも含むわけです。
そして現代のブラウザでは JavaScript は JavaScript 仮想機械の実行コードであると見なせますから
そういう意味で machine language code 扱いでもいいわけですし
TypeScript もコンパイラでいいことになるのでは?
Re: (スコア:0)
> そして現代のブラウザでは JavaScript は JavaScript 仮想機械の実行コードであると見なせますから
この解釈が許されるなら人間が読めるソースコードも仮想機械の実行コードと見做せるから
最初からmachine codeからmachine codeの変換でしかなくなってしまうんだよね
そしてこれはmachine codeの定義と矛盾するので誤りとなる
https://en.wikipedia.org/wiki/Machine_code [wikipedia.org]
Re: (スコア:0)
> この解釈が許されるなら人間が読めるソースコードも仮想機械の実行コードと見做せるから
いやいや、さすがに virtual machine が直接実行できないコードを仮想機械の実行コードとは呼べないでしょう。
あと「the binary representation of a computer program which is actually read and interpreted by the computer」への変換という意味を厳密に解釈すると、通常のCコンパイラでさえコンパイラ扱いから外れますよ。
UNIX/Linux 上のコンパイラは通常 machine code を吐くわけではなく、アセンブラのソースコードを吐きますから。
問題は JavaScript ほどに高級な
Re: (スコア:0)
傍から見てると、それそんなに議論してまで決着せにゃならんことなの……コンパイルで大体意味通じるんだからいいじゃんとか思いますね。
トランスパイラをコンパイラと呼んだらプログラムが異常動作するとか暴走するとかあるんですかね。
正直、その議論に消費する時間を他のことに回したらいいんじゃないかなぁ……と思います。
Re:コンパイル? (スコア:0)
> 傍から見てると、それそんなに議論してまで決着せにゃならんことなの……
> コンパイルで大体意味通じるんだからいいじゃんとか思いますね。
自分は #4526846 ですが同感で
コンパイラって呼ぶのが嫌な人がいるのは分かるけど
現状見る限り、もはやコンパイラって呼んでもいいじゃんくらいの立ち位置です。
ちなみにそういう立ち位置にいる理由は、初期のC++コンパイラ (cfront) が
実体は C++ to C のトランスレータだったという知識も影響してますね。
→ https://ja.wikipedia.org/wiki/Cfront [wikipedia.org]
高級言語 to 高級言語のトランスレータをコンパイラと呼ぶのは
別に JavaScript が初めてじゃなく、40年も昔の1983年の時点で普通に行われていた慣習なんです。
まあこれについては cfront + cc の両方合わせたものをコンパイラと呼んでいたんだという見方も可能なんですが。
どうしても嫌って主張している人は、自転車置き場の議論に陥ってるんじゃないかなあ。
Re: (スコア:0)
言葉は生き物って主張なら、本来の意味に戻ることもまたありうることだから別にいいじゃん
むしろトランスレータって言い方があるんだったら無理に同一化する必要はないだろう
厳格に分けた方が文章が論理的でなくとも意味が伝わるという利点もあることだし