プログラミング言語の定義
プログラミング言語は、コンピュータープログラムを記録するために設計された正式なサインシステムです。 プログラミング言語は、プログラムの外観と、エグゼキュータ(コンピュータ)が彼女の制御下で実行するアクションを決定する一連の字句、構文、およびセマンティックルールを定義します。
これはWikipediaに記載されており、他のリソースのほとんどはこの定義を完全に使用するか、意味を失うことなく自由に定義しています。 PLの定義のコンポーネントをより詳細に検討してください。
- 正式な言語は、有限のアルファベット上の有限の単語(線、鎖)のセットです。
- サインシステムは、通信中に交換できるメッセージ/信号を均一に解釈および解釈するシステムです。 サインシステムは、特定の「サイン」に対する参加者の反応に関して特定の妥当性を与えるために、コミュニケーションのプロセスを構築するのに役立つことがあります。 通常、言語は手話システムの例として引用されます(書面および自然言語の場合は音声の両方)。
- コンピュータープログラム - コンピューターの制御デバイスによる実行を目的とした一連の命令。
- 語彙とは、特定の個人またはグループに知られている、ある言語または別の言語の単語の集まりです。
- 構文は、プログラムの構造を文字のセットとして記述するプログラミング言語の側面です(通常、コンテンツに関係なく-と言います)。 言語の構文は、そのセマンティクスと対照的です。 言語の構文は「純粋な」言語を表しますが、セマンティクスは意味(アクション)をさまざまな構文構造に帰します。
- プログラミングのセマンティクスは、形式的な数学モデルを構築することにより、プログラミング言語の構成要素の意味の形式化を研究する学問です。 そのようなモデルを構築するためのツールとして、さまざまなツールを使用できます。たとえば、数学論理、λ計算、集合論、カテゴリー理論、モデル理論、普遍代数などです。 プログラミング言語のセマンティクスの形式化は、言語の記述、言語のプロパティの決定、およびこのプログラミング言語のプログラムの正式な検証の目的の両方に使用できます。
- 言語は、概念的な内容と一般的な音(スペル)を関連付けるサインシステムです。
簡単に言えば、これは次のように表現できます。
プログラミング言語は、コンピューターの一部であるデバイスによる実行を目的として順次書き込まれることを目的とした、あらかじめ定められた単調でエグゼキューターが理解できる(インタープリター/コンパイラー/コンピューター/プログラマー向け)命令のセットです。 また、プログラミング言語には多くの機能が必要です。限られた数の命令があり、誰もがそれらを知っている必要があります。 特定の結果を得るには、特定の方法で指示を作成する必要があり、誰もがこれを認識している必要があります 指示を書くためのルールがなければならず、誰もがそれを知っている必要があります。 各言語構成体は、記述されているものと指定する必要があるものを明確に相関させる必要があります。
とてもかさばってugいですが、複雑な言葉はありませんでした。 少し後でこの定義に戻ります。
プログラミング言語の種類
多くの場合、 低 レベル言語と高レベル言語への区分も使用していました。 これらのタイプは、プロセッサーとプログラマーの間の「層の厚さ」によって区別されます。 簡単な言葉で言えば、低レベル言語では、各命令は1つまたは少数のプロセッサ命令を表し、高レベル言語では、各命令はプロセッサ命令の大きなセットです。
ウィキペディアによるさまざまなタイプの定義を詳しく見てみましょう:
- アスペクト指向プログラミング(AOP)は、機能を分割してプログラムのモジュールへの分割を改善するという考え方に基づいたプログラミングパラダイムです。
- 構造プログラミングは、階層ブロック構造の形式でプログラムを提示することに基づいたソフトウェア開発方法論です。 これは、20世紀の70年代にE.ダイクストロイによって提案され、N。ワースによって開発および補足されました。
- 手続き型プログラミング -命令型言語でプログラミングします。この言語では、言語自体のメカニズムを使用して、順次実行されるステートメントをサブプログラム、つまりコードのより大きな統合単位にアセンブルできます。
- 論理プログラミングは、定理の自動証明に基づくプログラミングパラダイムであり、特定の事実と推論規則に基づいて情報の論理推論の原理を研究する離散数学のセクションです。 論理プログラミングは、解像度の数学的原理を使用した数理論理の理論と装置に基づいています。
- オブジェクト指向プログラミング(OOP)は、基本的な概念がオブジェクトとクラスの概念であるプログラミングパラダイムです。 プロトタイピングを使用する言語の場合、クラスの代わりにプロトタイプオブジェクトが使用されます。
- 関数型プログラミングは、離散数学のセクションであり、計算プロセスが後者の数学的理解における関数の値の計算として扱われるプログラミングパラダイムです(手続き型プログラミングのサブプログラムとしての関数とは対照的)。
- 通常、 マルチパラダイムプログラミング言語は、マルチパラダイムプログラミングツールとして開発されたプログラミング言語です。つまり、その画像機能は、もともといくつかの、ほとんどの場合無関係な言語から継承されるはずでした。
- 難解なプログラミング言語は、プログラミング言語の開発の可能性の限界を探求し、アイデアの潜在的な実装(いわゆる「概念実証」、英語の概念実証)をソフトウェアアートの作品として証明するために設計されたプログラミング言語です。ジョーク(コンピューターユーモア)。
命令的および宣言的アプローチ
すべてのプログラミング言語は、 宣言型と命令型の 2つのグループに分けられます。
数学的な観点からの命令型プログラミング言語のプログラムは、問題の一般的な解決策、言い換えると、「どうすればいいの?」という質問に対する答えです。 これは、エグゼキュータが実行する必要がある一連のコマンドです。
宣言型プログラミング言語のプログラムは、 プログラミング言語のフレームワーク内で形式化されたタスクと、そのソリューションに必要なすべての定理、つまり「何をすべきか」という質問に対する答えの組み合わせです。 コンパイラ、またはより多くの場合はインタープリターによって実行されるアクションの特定のシーケンスは、プログラムコードをマシンコードに変換せずにリアルタイムで実行するプログラムです。
チューリング完全性
計算可能性理論では、計算可能な機能を実装できる場合、実行者(計算要素のセット)はチューリング完全と呼ばれます。 言い換えると、各計算可能な関数には、計算要素(たとえば、 チューリングマシン )またはエグゼキューター用のプログラムがあり、多くの計算機で計算されるすべての関数は計算可能な関数です(おそらく、入力データと出力データの何らかのエンコードを使用)。
名前はAlan Turingに由来します。AlanTuringは抽象的な計算機-チューリングマシンを考案し、チューリングマシンを使用して計算できる多くの関数を定義しました。
言い換えれば、必要な計算可能な関数をその言語で記述し、そのエグゼキューターで解決できる場合、その言語はチューリング完全です。
不完全なチューリング言語も存在しますが、それらは主に学術目的のために作成されているため、ほとんど知られておらず、広く使用されていません。
いくつかの質問に答えます。
- HTMLは言語ですか?はい 言語に固有のプロパティがあります。
- HTML-プログラミング言語の定義と一致しますか?はい 構文、セマンティクス、語彙があり、言語であり、宣言型プログラミング言語のカテゴリーに分類されます。
- チューリングは完全な言語ですか?いや HTMLを挿入するだけで、ブラウザによって解釈されるアクションの限られたセットのみを実行できます。
- HTMLはプログラミング言語と呼ばれますか?文脈に応じて、そうです。 ただし、同じ成功を収めることでYaPとCSS、XMLとSQLと呼ばれることを覚えておく必要があります。 言い換えれば、これらの言語は正式にはプログラミング言語と呼ぶことができますが、ある程度の懐疑心と、これらの言語がすべての要件を満たしているわけではないことを完全に理解しています。
- HTMLはプログラミング言語ですか?いや 一般的なプログラミング言語のタスクはデータ処理であり、HTMLのタスクはデータマッピングです。 プログラミング言語ではないため、計算に使用できません。
結論:正式な論争の文脈でのみ、HTMLをプログラミング言語と呼ぶことができます。 実際、これはハイパーテキストマークアップ言語であり、それ以上のものではありません。 しかし、読者は、明確に定義された標準がない場合、言語とHTMLの構文を同一にすることを禁止することはできませんが、チューリング完全になるように完全に異なる方法で解釈されることを理解してください。