KOSEIのブログ

自分の可能性をどこまでも

プログラミング言語の種類その3<元SE独白記>

<元SE独白記>  2016/06/10

C言語

・日本語プログラミング言語

LISP

プログラミング言語の種類ということでお話してきましたが、昨日のブログでは「フォートラン言語」までお話しました。次に挙げているのが「C言語」というプログラミング言語です。いまはすっかり定着していますが、この「C言語」が登場したとき、「妙な名前のプログラミング言語だなあ~」と思ったのを覚えています。仕事仲間と「C言語」の話題になった時に「Cという命名があるからにはのはBもあって、Bの次に出たんじゃないの?」と冗談半分で盛り上がったものです。僕も半信半疑で「どうでもいいか」ということで無視していましたが、Wikipediaに次のようにありました。

B言語(ビーげんご)は、AT&Tベル研究所ケン・トンプソン (Ken Thompson) によって開発されたプログラミング言語である。ケン・トンプソンがデニス・リッチー(Dennis Ritchie)監修の元で設計し、1969年頃に登場した。

やはり本当にあったのですね。でも「C言語」のほうが使い勝手がいいので主流になってしまったのでしょう。なぜかというと、Wikiの同じ頁に「特徴」として以下の様に書かれています。

B言語で記述されたプログラムは、コンパイラによって中間コードに変換され、実行にはインタプリタを必要とした。実行時にインタプリタによって逐次処理されるため、実行速度は極めて遅かった。ただしPDP-7版は機械語を出力できるように改良された。

これからプログラミングを勉強しようとしている人に向けてこのブログを書いているため、そのような方は上記「コンパイラ」といわれてもチンプンカンプンでしょうが、「高級言語で記述されたコードをコンピュータが理解できる言葉に直す処理の一つの段階」と思っていてください。

インタプリタというのは僕のブログでもベーシック言語の紹介のところで書きましたが、実行時にワンステップ単位で翻訳していく方式です。当然速度は遅いのです。ふつうはコンパイルをした後は、リンカーというものによって「リンケージ」の作業、つまり関連ファイルをくっつけて(リンケージして)、オブジェクトファイル(exe-イグゼファイル-とか実行ファイルとも)をつくりあげます。これが最終の実際に動くプログラムですが、exeファイルは機械語になっていますからスピードは速いのです。しかしコンパイラのあとにインタープリタって・・・、やっぱり非現実的で「変わり種プログラミング言語一覧」にでも掲載するような部類ですね。でもこの「B言語」のコード例をみてみましたが、C言語の前身というだけあって、似ている部分は結構あります。

しかしこのB言語のほかにも驚くべきことに、「O言語」以外はA~Zすべてあるのです!物好きで暇な方が調べた結果がこちらsappari wiki

http://memo.sappari.org/a2z-languages

僕が現場を離れて事務所での管理職に昇格したあたりに、概念としては「構造化プログラミング」とか、ハードウエアの枠組みとしては「ワークステーション(WS)」というものが出始めてきて、C言語も普及し始めたのです。だから僕は「C言語」は実務ではほとんど使っていません、数本組んだだけですが、やはりとてもわかりやすく機能が高いプログラミング言語だと思っています。

C言語はネットワークにも強い言語です。今はPCでネットワーク接続をして独立して仕事ができますから、ある業務に慣れていて、またひとつのOSを使いこなせるならば、自宅でも仕事ができるわけです。僕の現役時代からは信じられないことです。

ある物流会社のNECの中型コンピュータで支社とラボを通信回線で繋ぐという仕事を経験したことがありますが、その当時はインターネットが無かった時代です(信じられないでしょう?!)。なので電話回線を使って繋いだのですが、詳細は覚えていませんが、「通信プロトコル(通信上の双方の決め事)」が現在のインターネット通信を前提としたものとはまったく違っていて、プログラムで直接に、あるビットのフラグを立てて、相手に送る。すると受信側はそのフラグが立っているのを確認してそれなりの処理をするという段取りなのですが、人生を同じで、話どおりに進まないのがプログラミングの世界で・・イヤ苦労の連続でした。失敗の繰り返しで3日間缶詰状態とか1週間前後でようやく繋がりました。

日本語プログラミング:これは経験した技術者は少ないと思います。富士通の「BAGLES」という名前のプログラミング言語なのですが、COBOLの英文をそのまま日本語に置き換えてコーディングするのですが、結局は内部的にCOBOLに変換されますから、内容のチェックをするときはCOBOLが解っていないと読めません。某金融会社(生保だったかな)の仕事でしたが、この「BAGLES」で組みました。しかし日本語プログラミングは、あまり意味が無かったように思います。いまはだいぶ進化しているみたいです。↓

http://www.fujitsu.com/jp/group/fmcs/solutions/purpose/developptlang/bagles-open/

他のメーカーでも色々と販売していたようですね。

最後のLISPですが、これは人工知能言語です。これは解説すると長くなりますので、やめておきます。それに僕は実務での経験はまったくないです。会社内で「LISP研究会」をやろうという話が持ち上がったので、僕も賛同し勉強会を開いて研究していた程度です。

**さすが「C言語」ですね。ブログ記事がいつのまにか長くなってしまって。次のブログでは、「論理演算」についてお話したいと思います。

KOSEI