プログラミング言語

2022/02/27

プログラミング

低水準言語

低水準言語はマシン命令と一対一に対応していて、処理系に強く依存する機械語やアセンブリ言語のような言語で、以下の性質を持つ。

  • 一対一の変換 低水準言語で書かれた一つのステートメントは一つのマシン命令に対応する。機械語への変換は一対一。
  • ハードウェアに依存 低水準言語は処理系に強く依存し、ある形式のハードウェアのために書かれた低水準言語は他の形式のハードウェアでは利用できない。
  • 数少ない抽象 低水準言語では複雑なデータ構造や制御文を提供しない。プログラマは低レイヤーのハードウェア機構から抽象を構築することを強いられるため、精密な制御や極度な効率化が必要な場合のみ使われる。
  • 機械語

    機械語はコンピュータが認識出来る言語で、0と1のみの数列で表現される。第一世代言語とも呼ばれる。

    人間にとって機械語でコンピュータへの命令を書くのは困難な作業であったため、人間が読み書きしやすいプログラミング言語(アセンブリ言語や高水準言語)の開発が進んだ。

    01101001 01011010 10010110 10100101

    アセンブリ言語

    アセンブリ言語はニーモニックと呼ばれる人間が理解しやすい単語列を機械語と一対一で対応させた言語。第二世代言語とも呼ばれる。

    アセンブリ言語はハードウェアに特有の性質を含んだ低水準言語なので、ハードウェアごとに多くのアセンブリ言語が存在し、「アセンブリ」という特定の言語があるわけではない。そのため、アセンブリ言語プログラマはハードウェアごとに新しい言語を覚えなければならないが、ほとんどのアセンブリ言語で基本的な構造は共通しているため、あるアセンブリ言語を習得すれば、他のアセンブリ言語も素早く習得できるようになる。

    LD A, B
    LD B, C
    ADD A, B
    CLR B

    高水準言語

    高水準言語は低水準言語と比べて人間が読みやすく、処理系に依存しないCやJavaのような言語で、一般に以下の性質を持つ。

  • 一対多の変換 高水準言語で書かれた一つのステートメントはコンパイラによって複数のマシン命令に翻訳される。
  • ハードウェアに依存しない 高水準言語の記述方法は処理系に依存せず、プログラマはハードウェアに関する詳細を意識する必要はない。
  • 強力な抽象 高水準言語では一連の処理をカプセル化し、プログラマに簡潔な表現方法を提供する。
  • なお、C言語は現在、さらなる高水準言語の登場により低水準言語に分類されることもあるが、本記事では高水準言語に分類する。

    FORTRAN、COBOLなどの手続き型プログラミング言語一般は第三世代言語、SQLなどの非手続き型言語は第四世代言語と呼ばれることもあるが、第三世代言語と第四世代言語の定義は人によって異なることもある。

    参考資料


    著者画像

    ゆうき

    2018/04からITエンジニアとして活動、2021/11から独立。主な使用言語はPython, TypeScript, SAS, etc.