一部の言語でこれを行うことができ、他の言語ではできないことは何ですか?最後にセミコロンを追加する均一なシステムを維持してみませんか?
ロバートはスウィフトに関して良い答えを与えました、私は一般的な解析とセミコロンを使用するかしない理由についてもう少し追加しようとします。
プログラムをコンパイルすると、ソースファイルが実行可能コードに変換されるまでのいくつかの手順があります。最初の1つは読み取りと解析です。解析中、コードは文字のシーケンスから言語の文法に従って構造化された表現に変換されます。そのためには、コードを構成する要素(変数、定数、宣言など)を何らかの方法で識別して分離する必要があります。次のような宣言を行う場合:
int someNumber = 0;
それは何とかコンセプトがたに有効にする必要があり、文字だけの列だ「と呼ばれる『もの』を作成someNumber
タイプのint
と割り当てを0
そこに」。
これには、ステートメントの開始位置と終了位置を正確に識別する必要があります。あなたがこれを持っていたと想像してください:
int someNumber = 0;
int otherNumber = 1;
これらは2つの異なる宣言であることを知っておく必要があります。;
Cのような言語では、そのために使用され、そのパーサは、それが1つを見つけるまで、文字を読み、そしてただ一つの文として読まれたかを理解しようとする試みています。これにより、ロバートが言ったように、同じ行に次のような複数のステートメントを含めることができます。
int someNumber = 0; int otherNumber = 1;
2行で記述するのとまったく同じ効果があります。
Pythonのような他の言語では、各ステートメントを異なる行に入れることが期待されています。
x = 3
if x < 10:
print 'x smaller than 10'
else:
print 'x is bigger than 10 or equal'
その;
ため、言語自体が同じ行にステートメントを追加できないため、を追加する必要はありません!
さらに、LISPやSchemeのような他の言語では、ステートメントをグループ化する方法が非常に異なります(まあ、実際にはステートメントではありませんが、今のところは無視しましょう)。だから、あなたはすべてのためにちょうど括弧を持っています:
(define (do-stuff x)
(begin
(display (format "value: ~a" x))
x))
ここでも、あなたが必要としない;
あなたは同じ記号(使用という理由だけで)
、(
他の言語であることをもののために){
、}
、:
など、唯一のLispの構文を知っている誰かがあなたを頼むかもしれない:なぜ必要なのですか;
、あなたの文の終わりに?
見知らぬ人の例を追加するために:OCamlにはステートメントの最後にセミコロンがあるだけでなく、2つあります!
let rec fact x =
if x <= 1 then 1 else x * fact (x - 1);;
どうして?知りません。:)
異なる言語は、異なる目的と異なる哲学で設計されています。すべての言語が同じ構文と規則を共有している場合、おそらく同じ方法で同じことを行うことしかできません。