言語の構文、文法、セマンティクスの違いを知っていますか?


答え 1:

言語学者とコンピューター科学者による「構文」と「文法」という言葉の使い方には違いがあることに注意することが重要だと思います。

コンピュータ科学者は、「文法」という言葉を使用して、特定の記号シーケンスが構文的に有効かどうか、つまり特定の言語に属しているかどうかを判断するための一連のルールに名前を付けます。 言い換えれば、文法はある構文の記述であり(同じ構文の多くの代替記述を持つことができます)、言語は構文的に正しい一連のシンボルのセットです。 文法は、多くの場合、いわゆるバッカスナウア形式で提供されます。

言語学者は、「文法」という言葉を使用して、言語を適切に使用するための一連の規則に名前を付けます。 ルールにはさまざまなタイプがあり、これらのタイプの中で、構文ルールは単語を正しい順序に並べることに関係しています。 注意すべき2つのことは、(1)はい、自然言語を不適切に使用できます(そして世界は崩壊しません)、および(2)言語学者は通常、特定の文が言語に属しているかどうかはあまり気にしませんが、代わりに言語の使用方法に関係しています。

言語学とコンピューターサイエンスの両方で、「セマンティクス」という言葉は、記号のシーケンスがどのように解釈されるべきかを説明する一連の規則を指します。


答え 2:

構文:言語のレイアウト方法。 これには、キーワードと句読点の配置が含まれます。 たとえば、Python構文はいくつかの点でC構文とは異なります。最大のステートメントはCでセミコロンで終わる必要がありますが、Pythonは特定のインデントを処理する必要があります。

構文は、多くの開発者が自分自身を含む言語に対する愛情や憎しみを獲得する場所です。 私はPHPとJavaScriptが嫌いです。見づらく、大きなブロックは魅力的で不必要に複雑になり、率直に言って、開発者は推論されたタイピングパラダイムと悪い習慣にだらしなくなります。 それでも、Rubyはとても読みやすいので、Rubyが大好きです。Rubyにはもう少し厳密なタイピングがあり、言語自体がどのように開発されたかによってブロックが過度に面倒になることはありません。 Cの非常に重要な抽象化層であるにもかかわらず、この言語構​​成体はエレガントな言語になります。

文法:文を適切に並べ、意味を持たせ、可能な限り最小限の計算オーバーヘッドで処理できるようにします。 私が最近見た最高の例の1つは、次のようなものを印刷する目的でネストされたforループのペアでした:

**********

一連のprintf()ステートメントを使用することは、より良く、より簡単に理解され、計算量の少ない課金方法でした。 優れたプログラマティックグラマーには練習が必要です。また、新しい開発者はすべて、シンプルさを追求するために物事を過度に複雑にしがちです。

これは、目標を達成するための正しい方法と間違った方法があると言うことではありません。 猫の皮を剥ぐ方法は常に100ありますが、許容できるBig O表記法を持っているのはほんの一握りで、通常はエレガントと見なされるほど読みやすいものはわずかです。

セマンティクス:ステートメントの意図とステートメントの実際の機能。 セマンティクスは、話し言葉とプログラミングの両方で非常に重要です。 違い:セマンティクスが当てはまる場合でも、人はステートメントを誤解する可能性があります。 コンピューターはあなたが書いたとおりに動作するか、完全にオフの場合は動作しません。これが論理バグの原因です。