プログラムを書く時の基本的な考え方(3)


さて、そろそろプログラム言語のことを話さなくてはなりません。

プログラミングについて学ぼうとする時に、誰もが何より最初に意識するであろうことにプログラム言語の選択があります。

つまり、プログラム言語というのがあるが、どれを使うのか?どれを使うのがよいのか?プログラム言語によってどんな違いがあるのか?

不安と共に疑問がたくさんある大事な要素です。



わたしがプログラミングを学んだ頃はあまり悩むことがありませんでした。理由は単純です。選択肢が少なかったのです。当時は大型計算機でプログラムを書く時には、IBMとその互換機を使うことを前提として言えば、

- FORTRAN  (数値計算用)
- COBOL   (事務計算用)
- PL/I     (上記の両方をカバー)
- アセンブラ  (基本ソフトの制御用)

が選べるプログラム言語で、用途がおおよそ決まっていました。わたしは大学で工学部(理系)でしたので、必然的にFORTRAN(フォートラン)でした。経済学部(文系)の学生はCOBOL(コボル)です。学生は理系でも文系でも、PL/I(ピーエルワン)はあまり使いませんでした。IBMの大型計算機で業務用にはPL/Iが使われていたと思います。(おそらく、IBMの経営政策的意図によります)

アセンブラを使うことは基本的にありません。コンピュータのハードウェアを意識した制御処理で何かしなくてはならない時だけ、コンピュータメーカーのSE(System Engineer)やCE(Customer Engineer)が使っていました。



さて、パソコン(PCと言います)が世の中に出てきた時、PCのプログラム言語は基本的にBASIC(Beginners' All-purpose Symbolic Instruction Code:ベーシックと言います)でした。一部にアセンブラが内蔵されていたり、機械語(Machine Language)と言われる数値の羅列のプログラムを直接パソコンに読み込んで使うということはありましたが、まず使われません。

機械語はプログラムですが、人間が判断できる言語の要素は、ほぼありません。

もう少し言うと、何らかのプログラム言語でプログラミングし、パソコンが判断できるプログラムコードに翻訳した結果が機械語のプログラムです。後で出てきますが、オブジェクトコードと言います。このオブジェクトコード(Object Code、目的コード)は後々出てくる「オブジェクト指向のオブジェクト」とは無関係ですので、念のために言っておきます。

同じ言葉が全然違うことを意味するので、厄介ですね。



さて、そうこうする間に色々なプログラム言語が作られました。

パソコンについて言えば、少し先走った話ですが、パソコンでもOSを意識して使うようになってから、プログラム言語の選択肢が広がりました。後でその話もします。

ともあれ、プログラム言語が色々出てきた、最初のきっかけは、あくまでもわたしの想像ですが、カーニハンとプローガー、リッチーと言った人たちが、コンピュータをもっと身近なものとして、多くの人が利用しやすいものとしよう・・・と考えたことですね。

この人たちは大学の研究者や学者でした。それで、当時一般的だったIBMの大型計算機やその互換機の利用には多くの制限があるし、そもそもコンピュータ自体、非常に高価なものだったので、簡単に使えなくて苦労していたのです。

おそらくコンピュータ大好きだったこれらの人たち(絶対、オタクだった思います)は、大型コンピュータより少し小さい(中型クラスの)コンピュータで、いろいろな制限の少ないものに、自分たちの使い易い新たなOS(オペレーティングシステム)を作って載せ、自分たちがこうあるべきだと思った新たなプログラム言語でプログラムを書いて使いたいと、そう思っていたはずです。

わたしが若い時に読んだ、

1. 「プログラム書法」Brian W.Kernighan (著), P.J.Plauger(著), 木村 泉 (翻訳) 共立出版
2. 「ソフトウェア作法」Brian W.Kernighan (著), P.J.Plauger(著), 木村 泉 (翻訳) 共立出版

という2冊の書籍と、

3. 「プログラミング言語C」Brian W.Kernighan (著),Dennis M. Ritchie(著)共立出版

というプログラム言語の原典にしてバイブル(聖典)にその気持ちが著されています。

ですから、間違いないとわたしは思っています。

ということで、今ある多くのプログラム言語の原点の一つはC言語です。



ちょっと特殊なプログラム言語として、SmallTalkとか、Lispとか、Algolとか、simulaとかもありますが、すべてマイナーな言語だったり、AIに特化して使われたりするものです。

また、C言語は構造化プログラミングを意識したプログラム言語ですので、さらにその源流としてPascal(パスカル)があるということ覚えておいても良いです。

汎用のプログラム言語としての、一つの原点は間違いなくC言語で、ここから多くのプログラム言語とくにオブジェクト指向言語が派生しました。

次の話でその違いや、どれを使うのか・・・という話をします。



(2022-03-01→2022-03-23)



















よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次