KOSEIのブログ

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

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

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

アセンブル言語のほかにも色々なプログラミング言語があります。あくまでも僕自身が経験したことのあるプログラミング言語限定で列挙してみます。

・ベーシック言語

アセンブル言語

コボル言語

・フォートラン言語

C言語

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

LISP

1)BASIC(ベーシック)言語

まず最初の「ベーシック言語」ですが、これはインタープリタ型言語といって、1ステップ*ごとに機械語に翻訳していく言語です。むかしは若いお金のない学生は高い機器やソフトウエアを購入できなくて、雑誌の付録みたいなところのBASICを動かして遊んでいたのですが、結構色々なプログラミングができたようで、やり方によってはゲームのプログラムも組めたようです。でも考えてみたらその若い人たちが成人して日本電気富士通IBM等に就職して今の日本のソフトウエア界をリードしていく存在になっていったのですね。僕も遊びで数十ステップのプログラムを書いては実行しました。BASIC言語以降の特徴としては、「マンマシンインターフェース」と呼ばれる考えが発達浸透し始めた、ということでしょうね。どういうことかというと、マン(人間)とマシン(コンピュータ)のインターフェース(つながり)が重要視されてきた、ということで、要するにわかりやすいプログラミング言語が出始めたということです。2進数のビットを意識しなくても英文を記述する感覚でコーディング(プログラムの実行文を記述すること)できるということでしょう。これを「記述型言語」とも言いました。いまは「ヴィジュアル・ベーシック(VB)」というものが発売されていて評判もいいみたいですね。

*「ステップ」とは「ピリオドで終了する一行」と考えればいいですね。コンピュータはピリオド( . )を読み取ると、そこが命令文の終了と判断します。だから例えば次のような命令コードがあったとします。

 IF A = B GOTO C

これだけだと文末に「 . 」ピリオドが無いので、コンピュータは命令実行時に、次の命令コードも続きだと判断して処理してしまいます。最初の文法チェックの段階でエラーとなってくれればいいのですが、文法的におかしくないと(たとえば IF = B などと書くと明らかに文法的におかしいですからエラーになります)エラーになりませんが、実行時に正しく動かないのです。とにかく行が変わっても関係なくコンピュータは進み続けますからピリオドを忘れないようにします。上の命令コードの正しい書き方は次のようになります。

 IF A = B GOTO C.

ピリオド忘れで正しく動かなかったことは無数に体験しています。集中力が必要ですね。なお、大きなプログラムになると数百ステップにもなります。

2)ASSEMBLE(アセンブル)言語

昨日のブログで大体のことは大まかに説明しましたが、僕が仕事で始めて接した言語です。僕が入社した会社はゲームソフトを作成していた会社でしたが、僕はプログラミングとゲームの企画の両方をこなしていました。当時では非常に人気のあった「MSX」というハードウエア上で動くゲームなのですが、今から見れば「オモチャ」以下です(笑)。なにしろ横一列に同時に出力できる色の数が制限されていて(5色前後だったと思いますけど)、出来上がりは今のゲームソフトから見ると雲泥の差があります。コンピュータ・グラフィクスの世界は40年の間に驚くべき進化を遂げたものですね!

3)COBOLコボル)言語

僕はその後、事務処理のプログラムを組みたくなり転職しました。ゲーム会社の社長は引き止めたかったようで「え?キミが事務処理プログラムを組むのぉ?大丈夫なの~??」といかにも、「お前には無理だからヤメろヤメておけ」という言い草。そういわれると僕はますます自分の行動を優先する性格なので、あっさりと転職しました。転職後の初仕事は茅場町の証券会社の金融プログラムです。事務処理でもっとも使われているのが、この「COBOL」というプログラミング言語です。これはいったん覚えてしまうと単純で簡単なプログラミング言語です。つい最近まで金融系のソフトウエアはCOBOLで組まれていたのですが、あるときから徐々にC言語等にコンヴァージョン(移し変え=変更)されていっています。理由としてはメンテナンスが楽とか、ネットワークに対応しやすいとかいった理由です。まだ特別な分野ではCOBOLを使っているようですが・・・・。僕としては事務処理業務の初仕事で使った言語なのでなくなるのは寂しいですが、これも時代の流れでしょうね。でも逆に今はPC(パソコン)上で走る(実行できる)COBOLが安く売られているみたいですから、趣味で楽しんでも良いのですが仕事でないとどうも気が入らないというかなんと言うか・・・。金融系の仕事(銀行・証券・保険)が多い会社だったので、COBOLは本当によく使いました。

4)FORTRAN(フォートラン)言語

フォートランは科学技術計算用のプログラミング言語といわれています。僕がいた会社は金融系も強かったのですが、「航空システム」にも力を入れていました。全日空ANA)の「事前座席予約システム」はだいぶ前から存在していたのですが、僕はその何代目かのヴァージョンアップ版を開発する部隊に配属されました。予約と発券のチームに分かれていたのですが、僕は予約チームのリーダーとして活躍。ここでは実に様々なことを覚えました。上流工程(客先との打ち合わせ)でまずANAのシステム部の人と話をして「要求仕様」としてまとめます。ANAのシステム部の人はシステム部といってもあくまで「素人」ですから、僕がいた会社のほうに相談してくるわけですね。

それを何回も何回も見直しをして長い会議を経て、要求仕様書ができあがり、次は「概要設計」です。ここからいよいよコンピュータシステムの中に入っていくわけですが、プログラミングやシステム設計を経験してない人間には上流工程の「要求仕様」をまとめることはできないのです。客から出た要求はシステム的に実現できるものなのかどうか?これがわかっていないと「トンチンカン」な要求仕様書を作ってしまい、システム設計に入っての第一歩である「概要設計」の時につまづき「出戻り」です。時間のロスになりシステム開発が遅れていきます。世の中の多くのシステム開発は大体遅れますが、現場を知らない人間が上流工程を担当するからです(もちろんそれだけが原因ではないですけれど)。その後「概要設計」から「詳細設計」へ落とし込んでいき、さらに「プログラム設計」へブレイクダウンしていきます。そしてプログラマーへ渡す「プログラム仕様書」を書き、プログラマーへ指示を出します。

このANAの航空システムですが、まあ、その当時はここに限らずですが、ドキュメントはなんと!すべて手書き!です。現代の開発環境からすると考えられません。いま僕が書いている、このブログにしてもワープロで打っていますし、いまではシステム職ではない一般の人でもみんな「Word」といったワープロで文書を作成していますが、その当時は手書きでコピーという信じられない前時代的な環境でした!僕が仕事をしていた会社は「日本ユニシス」という会社なのですが、大元の会社はアメリカなので、何かわからないことがあると重たいファイルを引き出してきて読むのですが、悲しいことに英語で書いてあります(それは何故か活字でした)。外資系の企業でよかったことは給料が高かったということと、アメリカの休日には自分達も休めるといったことぐらいです。

おまけにユニシスのマシーンは11ビット・バンダリーとかいった、実に変則的な奇天烈(キテレツ)なコンピュータでした。プログラミングは論理的な作業だったのでまだしも、ファイル設計のようなフィジカルな部分を作りこむときの苦労は並大抵ではありません。如何に苦労したか思い出したくない思い出ですね・・・・。これはファイル設計を経験された方はよく解ると思います。フェーズ1の完了までに3年間かかりました。オンスケジュール(予定通り)に比較的近かったのではないかなと僕も仲間も皆自負していました。

コンピュータ・システムズエンジニアという職業はその当時花形職業でしたが、家にはほとんど帰っていませんでしたね。もちろん土日はないに等しいです。気力(意志の強さ)、体力(内臓のタフさ)、知力(というよりもロジックを追求しても客先と長時間話してもブレない強い脳みそ)の三拍子が揃っていないと上級SEはつとまりません。

まあよかったことといえば給料が破格でよかったことぐらいです。しかしそれは別にしても、僕の上級SEとしてのキャリアはここで形成されたといってもいいと思いますので、充分感謝です!辛い思い出もありますが楽しい想い出も満載で・・・。

プログラミング言語の種類とかいうタイトルですが、僕自身の履歴書みたいになってしまってます。長くなりますので続きはまた明日。

KOSEI