Java 8 では「シュガーリング」と「デシュガーリング」という言葉をよく耳にしますが、これらの用語はどういう意味ですか? 概念的なものですか、それとも構文的なものですか?
いくつかの例:
デフォルトの反復ループはJavaに戻ります
コンパイル時の糖衣構文に関する考察。
ベストアンサー1
砂糖プログラミングにおいて、通常は甘い追加機能(ほとんどはショートカット)により、一部の構造の入力と読み取りが容易になります(実際には、プログラムのライフサイクルで最も重要なのは読み取りです)。
Wikipediaには次のような定義がある。構文糖ただし、すべてのシュガーが本質的に構文的なわけではないことに注意してください (最近のすべてのスイートの追加がコンパイラの変更だけというわけではありません)。
以下にいくつか例を挙げます。
- 接尾辞と接頭辞の増分演算子 (
i++
と++i
)。これらの演算子の唯一の目的は、追加のステートメントを記述しないようにすることです。これらは純粋な砂糖です。 +=
、、などは|=
、&=
同じ種類の砂糖から作られています。- プリミティブ型とオブジェクト間の暗黙的な変換も砂糖です。
- 型推論も砂糖の一種です。
- Java 8で導入されたラムダ式は、別の種類の砂糖です(これは文法的なことだけではなく)
Java は、特に現代の言語と比較すると、簡潔さが足りないと広く考えられています。そのため、コードの読み取りを高速化する追加機能は歓迎されます。
最後に、糖分が不足するとプログラムが肥大化する可能性がある一方で、糖分が多すぎると、同じことをさまざまな方法で記述することになり、言語が不快になり、プログラムの一貫性が失われ、保守が困難になる可能性があることを指摘しておきます。別の種類の糖分である API 糖分は、ほとんどの場合、API が追加 (たとえばオーバーロード) で構成されている場合に特に、API を理解しにくくする厄介者です。
そうは言っても、脱糖のいずれかを指す
- 言語から余分なものをすべて取り除くプロセス
- コードプロセッサが、シュガーされたステートメントの背後にあるものを見つけるプロセス(これには、たとえば、型推論が含まれる場合があります)