バックグラウンド
Syntactic SugarのWikipediaページには次のように記載されています。
コンピューターサイエンスでは、構文シュガーは、読みやすく、表現しやすいように設計されたプログラミング言語内の構文です。これにより、人間が使用する言語が「より甘く」なります。物事をより明確に、より簡潔に、または一部の人が好む代替スタイルで表現できます。
私は、Syntactic SugarとSyntaxの違いが本当に理解できません。
私は、甘いバージョンがより明確で簡潔になり、おそらくいくつかの定型的なものがなくなる可能性があるという点に感謝します。しかし、ある程度のレベルでは、すべての構文が本質的にそれを行って、コードがコンパイルされるものを抽象化することを感じています。
同じウィキペディアのページから:
コンパイラー、静的アナライザーなどを含む言語プロセッサーは、しばしば「デシュガー化」と呼ばれるプロセスの前に、シュガー化されたコンストラクトをより基本的なコンストラクトに拡張します。
思考演習として、このステートメントで「頻繁に」「常に」を意味する場合:コンパイラが次の段階に進む前に構文を「デシュガー」するかどうかだけでは、内臓を知らないコーダーはコンパイラの何がSugar'd Syntaxとは何かを知っている(または気にしている)?
このサイトに関する非常に関連した質問「構文糖の厳密な定義?」始まる答えがあります:
私見私はあなたがフレーズがBSであり、「本当のオペレーティングシステム」で「本当のツール」を使用して「本当のプログラマー」について話す人々によって使用される可能性が高いので、構文糖の定義を持つことができるとは思わない
おそらく、この言語を使用しているコーダーに大きな違いはないことを私に示すかもしれません。おそらく、違いはコンパイラの作者にしか認識できないのでしょうか?言語を使用するコーダーがSyntactic Sugarの内部にあるものを知ることが役立つ場合がありますか?(しかし、実際には、主題に関するどんな言説でも、炎の餌としてこの用語を使用する傾向がありますか?)
質問の核心
だから...質問の短いバージョン:
- SyntaxとSyntactic Sugarの間に本当の違いはありますか?
- 誰が重要ですか?
思考のための余分な食べ物
トピックの矛盾に関するボーナス:
ウィキペディアのページに例を示します。
たとえば、C言語では、
a[i]
表記法は*(a + i)
上記のリンクされた質問に関する別の答えは、同じ例について語っています:
考えてみてください
a[i] == *(a + i)
。実質的な方法で配列を使用するCプログラムについて考えてください。
そしてそれを要約します:
[]
表記は、この抽象化を容易にします。構文糖衣ではありません。
同じ例の反対の結論!