38

ので(私が見たものに基づいてまたはそれを体験したい、)なしJavaScriptの経験を持つ、新しいWebプログラマ(背景はC、C++、およびPythonでmostelyある)として私はCoffeeScriptの上のいくつかの前兆研究を行うと、本当に思いますされています私が見るものが好きです。私が気づいたクールな微妙なニュアンスは、CoffeeScriptはCoolScriptで書かれていたということでした。しかし、それはどういうことが可能か分かりません。残念ながら私は最後の高等レベルのコンピュータサイエンスコースでコンパイラの代わりにネットワークセキュリティを取ることにしました。CoffeeScriptはどのようにCoffeeScriptで記述できますか?

私は、その言語用の既存のコンパイラを使用して解釈するために、ターゲット言語の言語を書く人々の聞いたことがあるが、私はこれが最初の実装であるので、これはうまくいくかもしれない方法上の任意の情報を掘ることができません。

私の推測では、自己参照この用語を正しく、この動作を説明していますか?)言語を構築するための最初のフレームワークの一部を敷設するの世話をする可能性が埋め込まれたシェルスクリプトですか?

+4

http://en.wikipedia。org/wiki/Bootstrapping_(コンパイラ) –

+3

すべての実行時エラーがコンパイルされたソースを指しているので、CoffeeScriptでコード化するためにJavascriptをよく知っている必要があることに注意してください。 –

+0

再用語:CoffeeScriptコンパイラは元のRuby実装から**ブートストラップ**されていると言えます。また、CoffeeScript言語は** self-hosting **であると言うこともできます。 – Quuxplusone

答えて

46

これは新しいものではありません。 CコンパイラはC. Python has been written in Pythonで書かれている。

それはより多くの機能で、自分自身の新しいバージョンをコンパイルするLanguage Xのためのコンパイラを使用することが可能です。それはbootstrappingと呼ばれています。あなたは、UNIで逃したにもかかわらず、コンパイラについての詳細を知りたい場合はところでBootstrapping a compiler: why?

+0

私は前にBootstrappedという言葉を聞いたことがありますが、それを本当に明確に理解できませんでした。これは本当に面白いですが、偉大なリンクのおかげで、私はいくつかのブートストラップを読んで行います。私はドラゴンの本も "プログラミングの本を読まなければならない"ということを聞いたことがありますので、それをチェックしなければなりません – Hortinstein

+1

私はMattに同意します。しかし、あなたがCoffeescriptを学びたいなら、私はJavascriptを最初に学ぶことを強く勧めます。これは、異なる言語の背景を持つ人々には少し外見的に見えるかもしれませんが、その概念(関数やプロトタイプベースなど)は、さまざまなソフトウェア/アプリケーションのソリューションやフレームワークに役立ちます。再び、CoffeescriptはJavascriptにコンパイルされます。それで、明らかに、CSのクラスと異なる見た目のコンセプトの下に隠れて、Javascriptのコンセプトは大きな役割を果たします。 そして、The Dragon Bookを読んで、コンパイラの仕組みを理解してください。 – NirmalL

42

マットの答えは優れています。私はいくつかのCoffeeScript固有の情報を詳しく説明してみましょう:

のCoffeeScriptコンパイラのオリジナルバージョンのRubyで書かれていたが、それはv0.5.0のためのCoffeeScriptに移行して、2月21日に、2010年

として実際の問題では、ブートストラップされたコンパイラは、変化する言語に合わせてコンパイラを書き直さなければならないため、言語を変えることで困難になります。公式ドキュメントからこの段落は、あなたに関わる課題のいくつかのアイデアを与える:

git checkout lib && bin/cake build:fullを使用すると、コア言語で作業しているときに実行するための良いコマンドです。 libディレクトリをリフレッシュして(何か壊してしまった場合)、変更されたコンパイラをビルドし、それを使って再構築し(すべてのテストを実行します)彼らが合格すれば、あなたは成功したチャンスがあります。

libディレクトリには、ブートストラッププロセスで役立つ仲介を提供し、CoffeeScriptのコンパイラのコンパイルJavaScriptを(それを得たか)が含まれています。コンパイラのCoffeeScriptのコードは決して直接自体にを実行していないので、それはそれは簡単に言語への重大な変更を行うことができます。

+3

私はこれ以上、upvoteできる言語の詳細を与えるためにありがとう。 – Hortinstein

関連する問題