コンピュータ言語

この記事はシリーズの一部であり、シリーズインデックスにアクセスします。 ( シリーズインデックス )

バイナリは素晴らしく、すべてですが、私たちが望むことをコンピュータにどうやってもらうのですか? バイナリ表現がその入力を受け取り、その入力に応じて一連のステップを経て出力を作成するプロセッサに、バイナリ表現がどのように供給されるのかを議論しましたが、どうすればそれを実現できますか? そうするには、プログラミング言語を選択するか、マシン上での制御のレベルに応じて独自のプログラミング言語を作成します。

プログラミング言語とは何ですか?

Wikipedia.orgはプログラミング言語を非常によく定義しているので、ここで引用するつもりです:

「プログラミング言語は、コンピュータ、特にコンピュータで実行できる計算を表現するために設計された人工言語です。」

プログラミング言語は、コンピュータにあなたが何をしたいのかを伝えるために使用するものです。 これは、コンパイラまたはインタプリタと呼ばれるプログラムによって「処理され」、コンピュータが理解できるものに変わります。 たとえば、次のようなものがあります。

a + b = 1 + 2 = 3として3を出力します。プログラミング言語は、コンピュータに何をすべきかを指示する一連の命令です。

最も基本的なプログラミング言語は、プロセッサによって設定されます。 プロセッサの仕様によって、バイナリ表現がプロセッサに何をさせるのかがわかります。 次に、バイナリ表現を使用して一連のステップにまとめ、最終目標を達成します。 コンピュータの初期段階では、指示をフロントパネルに直接入力することでこれを達成しました。 これは、第1世代のプログラミング(言語)として知られていました。

この種のプログラミングは、今日のビットレベルではめったに行われず、通常は「アセンブラ」を使用して展開されます。 アセンブラは、アセンブリ言語(プログラミング言語)をまとめてプロセッサ固有の命令を作成します。 どのアセンブラ言語も、アセンブラの唯一の利点を持つプロセッサ命令用のニーモニックのセットであるため、第2世代のプログラミング言語として知られています。

アセンブリ言語があるのと同様に、「上位レベル」の言語もあります。 これらのプログラミング言語は、機械ではなくプログラマに向けられたプログラミングプロセスの改善によって特徴づけられました。 特徴的には、第3世代のプログラミング言語は、コンピュータに特定の自動化された細部を配慮させ、プログラマがもはやそうする必要がなくなりました。 そのような言語の例としてはFortranとCOBOLがありますが、C、Java、Pythonなどの人気のあるいとこを認識することができます。

第3世代のプログラミング言語を上回るようになったら、一般化ではなく、さらなる専門化の逆の傾向に入るようになります。 しかし、例外があるので、それを100%毛布の声明として取ってはいけません。 第4世代のプログラミング言語は、一般的に、問題解決とシステムエンジニアリングに向けられています。 これらは、通常、特定の目的(環境)を念頭に置いて設計されているため、プログラミングの労力をさらに削減するためのメカニズムとして設計されています。 彼らはしばしば仕様の一形態をとり、問題を解決するために必要なプログラミングを生成します。 これは単純化すぎですが、それは一般的な考えです。

同様に、第5世代のプログラミング言語は、人間のプログラマによって供給される所定のアルゴリズムではなく、プログラムに与えられた制約を使用して問題を解決することに基づいている。 これについて考えるなら、これは人工知能の明白な解決策になるでしょう。 Star Trekのコンピュータが問題を自動的に解決する傾向にあるのと似ています。 残念なことに、これらのプログラムは書くのが非常に難しく、限られた機能しか持たない少数のプログラムしか存在しません。

ビルディングブロック

しかし、何がプログラミング言語を構成していますか?

まず、プログラミング言語は、コンピュータに入力できるものからのみ構築できます。 つまり、コンピュータの唯一の入力形式が8つのスイッチであれば、これらの8つのスイッチでできることからプログラミング言語が構築されます。 幸いなことに、現代のコンピュータには、前の記事で説明したように、マウスとキーボードがあります。

プログラミング言語は、構文とセマンティクスの2つの部分で構成されています。

構文は、入力のフォーマット方法を定義します。 ほとんどのプログラミング言語は、キーボードに入力できるもので構成されているので、構文は理解できるプログラミング要素(文または式)にテキスト部分を配置する方法に関する一連の規則になります。 構文は、字句的にも文法的にも定義されています。 これらの2つの仕組みについては別の記事で説明します。 要するに、構文は一般に「Backaus-Naur Form」を使って定義されると言います。 このフォームについては、別の記事でも詳しく説明します。 その間、そのような定義の簡単な例がここにあります:

私がこの書式でよく書いていないので、私がした可能性のあるエラーを許してください。 このフォームは次の行を受け入れます:

あなたの上には特に有用ではありませんが、照明の例があります。 整数は1、14、555などとすることができます。識別子は、文字の後に他の文字と数字を続けることができ、変数のようなものを形成します。 文字列は、二重引用符で囲まれた一連の文字と数字です。 これら3つのうちのどれかが引数になり、関数定義に適合することができます。 私が言ったように、間違いを許してください(またはコメントの中で私に教えてください)。 これはほんの一例です。 上記を理解していないと落胆しないでください。 時間の中で、私はちょうど導入時にその建設を示すことが重要であると考えたので、事前にそれを検討することができます。

それは構文になります。 セマンティクスは、プログラミング言語を処理するプログラムであるコンパイラのプログラミングの一部です。 セマンティクスは、入力プログラム(またはコード)が従わなければならないさまざまな規則であり、適切な変数の処理や型付けなどです。 セマンティクスは、プログラムを書くための文脈を定義し、順に文の意味を与えます。 メモリ内の別の場所、または関数から値をメモリに配置しようとしていますか?

結論

この記事は、プログラミング言語の紹介としてのものであり、すべての情報の終わりとしてではありません。 この記事の多くのトピックは、後の記事で詳しく説明されていますので、プログラミング言語については、より詳細な方法で、また基礎から学ぶことができます。 その間、私はこれがやや役立ったと思う。

あなたが私の執筆を感謝するなら、私のパトロンを通して私を支えてください。( パトロン )

photo credit: working dog learning ‘Go’ via photopin (license)

あわせて読みたい

コメントを残す

%d人のブロガーが「いいね」をつけました。