2009年12月27日日曜日

プログラム言語について -COBOL(1)-

ソフト会社に入社して最初に教わったCOBOLについてお話しましょう。

それまでプログラム言語であったアセンブラとfortranが、プログラムの処理ロジックや計算ロジックを記述する言語として開発されていました。その後に開発されたCOBOLでは、事務計算(会計や財務などの計算)向けの言語として開発されました。

それまでの計算機では、2進数の数値しかありませんでしたが、COBOLでは、10進数の数値が追加されて、計算誤差が発生しない10進数の数値が使えるようになりました。
例えば、2進数で0.1を表現しようすると
0×2-1 + 0×2-2 + 0×2-3 + 1×2-4 + 1×2-5 + 0×2-6 + 0×2-7 + 1×2-8 + 1×2-9 + …
となってしまい、2進数の小数表現が不可能となります。このため、利率の計算等で全く誤差が発生しないようにすることが不可能です。COBOLで導入された10進数の数値は、1バイトに1桁の数字を割りあて、10進数の計算をコンピューター上で実現しているので計算誤差が発生しません。

さらに、COBOLでは、プログラム自身がドキュメントとして使用できように、英文で文章を書くように処理を記述できるようになりました。プログラム記述では沢山のコードを書かなければなりませんが、fortranやアセンブラに比べ、プログラムソースを見れば、処理内容が分かる点が改善点となります。

しかし、COBOLはCODASYLによって定義されたCOBOL言語を元に、各コンピュータメーカーが独自に拡張をおこなったため、プログラム間の互換が完全に保たれなくっっているのが弱点となっています。特に、対話型に画面操作を行う処理、レポート作成処理、データーベースのアクセス方法などについて、各メーカー間で互換はありません。また、COBOLのもう一つの特徴である構造体を使ったコーディングでは、各処理系のメモリ配置や数値の構造を知った上でコーディングする必要があるので、すでに作れているプログラムを移行する際には、十分注意する必要があります。
このため、COBOLは、各社での互換のあるプログラム言語のように思われていますが、他のシステムに移行する際には、全部の処理を確認しなければ移行は不可能となります。オープンCOBOLと称するコンパイラーでも移植のためには、全ての処理を見直す必要があります。

C言語では、Unixで開発されたC言語を、各メーカーでそのまま移植しているケースが多く、また、共通ライブラリも各メーカーで同様の関数が用意されていることから、あまりこのようなことは発生しません。もっとも、C言語でもウィンドウ制御のプログラムが各メーカー毎に違うことはあるとは思いますが、COBOL程違ってる訳ではありません。

2009年12月23日水曜日

メリークリスマス

Merry Christmas !!
私のブログには、似つかわしくない写真ですが、家内が作ったクリスマスリースです。
家内は、私と違って手を使って作るのが好きで、リースや結婚式のブーケなども作ったりします。

サンタクロースが、素敵なプレゼントを持ってくると良いですね

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

この職業に就いてから多くのプログラミング言語について勉強しました。
Fortan、COBOL、PL/I、Pascal、アセンブラ、Basic、awk、Lisp、Prolog、VisualBasic、RPG、Perl、Java
などを使ったことがあります。これから、それぞれのプログラム言語について書きたいと思います。昔からのプログラミング言語を知ることで、過去の賢人がどのように考えて現在のような姿になったのか分かるかと思います。

今日は、まず、最初に触ったFortanについてお話しましょう。私は、あまりFortanを使ってプログラミングしたことはありません。大学の時の選択授業の「統計」でプログラミングで習った最初の言語になります。

プログラムは、偏差値を自動的に計算するものでした。当時は、今のように自分のパソコンなどなく、大学の計算センターで計算を依頼することになります。結果は、翌日に取りに行き、ストック用紙に印刷された結果を受け取るといったことになります。プログラムとデータは、当時は、パソコンのようなディスプレイ画面を自由に使用することができず、パンチカードに打っていました。

それまでCPU命令をそのまま記述するアセンブラ言語しかなかった時代に、IF文やDO文により手順を記述できるFortanは、高水準言語と呼ばれました。事務計算で利用されるCOBOL言語とともに、三角関数や指数関数が利用できるFortranは、科学技術計算で利用されました。

しかし、制御文としてDO文とIF文しか無かったために、do while制御やdo until制御を行おうとすると、必ずGOTO文が必要となりました。さらに、当時のプログラム開発では、フローチャートとよばれるチャートを使ってプログラム手順を記述することが標準されていましたが、GOTOを使うことで動作を制御することが普通に行われていました。私は、Fortranの最大の欠点は、この点であった気がします

しかし、大量のプログラムを開発する上には、いろいろな人が勝手にGOTO文を使うようになるとプログラムをメンテナンスすることが困難になっていくことが分かってきました。そこで、プログラム制御方法としてdo whileやdo untilなどようなプログラム制御方法の型が導入され、GOTOレス-プログラム(GOTOを使わないプログラミングスタイル)によりプログラム開発する構造化プログラミングが開発されました。私が、ソフトハウスに就職した時が、この時代になります。

そして、構造化プログラミングが可能な言語として、PascalやCなどの言語が開発されました。

2009年12月21日月曜日

Ruby On Railsの勉強を始めました

Yawdba開発する上で、データベースを簡易的にWeb画面に表示するシステムとして最近注目されるようになってきたRuby On Railsについて、調べ始めました。
Ruby On RailsもYawdba同様に、できるだけ簡単にデータベースをWeb画面に表示するためのツールです。Ruby On Railsでは、基本としてオブジェクト指向によるプログラミングですが、Yawdbaでは、難しいプログラミングを知らなくても、簡単に開発できることを目指しています。
おそらく、Ruby On Railsでは、プログラミングを使って非常に複雑なロジックも開発できるとは思いますが、Yawdbaでは、複雑なプログラミングなしに、どこまでデータベーステーブルをWeb画面に表示できることを目指しているので、若干、目標となる点が違っているのかもしれません。
いずれにしても、Ruby On Railsの勉強をするため、Webからダウンロードして調べる予定です。何か、分かったらYawdba開発サイトにアップする予定です。
また、同じく、StrutsやASP.NETについても勉強したいと思います。