プログラミング言語について

 コンピュータに何かを処理させるためには、コンピュータが処理できる形で指示を行わなければなりません。
 コンピュータへの指示は予めコンピュータの回路自体に記録された(または回路として内蔵された)何種類かの命令で行われます。
 この命令をマシン語と言い、マシン語を人間が扱い易いように記号にし、メモリーのアドレスやレジスタに名前をつけたものがアセンブラまたはアセンブリ言語と言います。
 ただしこのアセンブリ言語でコンピュータの処理をすべてプログラミングするのは、効率が悪く、複雑な処理をプログラミングするには膨大な時間を要します。

 その問題を解決するために開発されたのがコンパイラ言語でCOBOLやFORTRANでした。
コンパイラ言語はコンパイルという処理を行うことで、アセンブリ言語に翻訳し、アセンブリ+リンクの処理で実行可能な機械語レベルのプログラムを生成することができます。

 その後初心者でもプログラミング可能な簡易言語であるBASICが世に出ます。BASICはコンパイラ言語ではなくインタープリタ型の言語です。

 インタープリタとは、日本語では逐次実行型と訳され、処理の実行が始まると、入力された文字列を解読しながら、順次処理していきます。

 FORTRANやCOBOL、BASIC等によって様々な大きなプログラムを作ることができるようになりましたが、プログラムが大きくなって来ると今度はバグ(プログラムの不具合)の問題が大きくなってきます。

 FORTRANやCOBOL、BASICには処理ブロックの概念がなく、メモリーを効率的に活用するためGOTOを多用するトリッキーなプログラミングが多くプログラミング当事者以外内容を理解するのが困難なため、バグ取りに多くの時間を要しました。

 この問題を解決するためGOTOを使わない構造化プログラミングが提唱され、開発されたのが、ALGOL、Pascal、Cなどの言語です。
 このような言語が開発されたのは確かに開発の効率化とプログラミング時に発生するバグを減らすのが目的でしたが、コンピュータ自体の高速化とメモリー価格の低下にによって、搭載できるメモリーの容量が増えたことも一因でした。

  コンピュータの高速化とメモリー量の増加はさらに複雑なプログラムの開発が可能になり、それに伴い開発期間が長くなるという問題がでてきました。

  また、コンピュータ自体が一般大衆化し、OSがシングルユーザ対象からマルチユーザー、マルチタスク処理が可能になると、さらに効率の良いプログラム開発に適した言語が求められるようになったきました。

 そこで現れたのがオブジェクト処理が可能な言語C++等です。
 OS自体もWindows一辺倒ではなく、Linuxが広く用いられるようになるとOS非依存の言語開発が行われ、そこで登場したのがJavaです。
  Javaの構造はOS非依存の中核部分とOS依存部分に分かれ。このOS依存部分の書き換えで、複数のOSに対応することができるようになっています。
 またOSだけではなく、複数のCPUのアーキテクチャーに対してもOS依存部分の書き換えで対応できるようになっています。
 Javaはコンパイラ言語に近い形態ですが、コンパイル後にOS非依存の中間コードが生成され、実行時はその中間コードをJavaが処理していく形になります。

 時代の要請、開発対象の変化でJulia(2012)のようなプログラミング言語が新たに開発されたり、Python(1990)、R(1993)のように旧来の言語が見直しまたは注目されたりしています。

 今後も新たな言語がかいはつされたり、旧来の言語のバージョンアップなどが行われていきます。
 ほとんどの言語は無償でダウンロードできるので、機会があれば何種類か試してみてはどうでしょう

2021年06月27日