COBOLは私が最初に学んだ言語の1つです。Basicの無数のバージョン、3つまたは4つのアセンブラー言語、およびForthのバリアントを無視すると、最初の5つになり、Pascalと同時に学習しました。IOW、私は言語を使用して個人的な経験から答えています。
編集私は古代の経験を言う必要があります。80年代の終わり以降、この言語を使用したことはありませんでしたが、ホラーストーリーがあまり歪まないように参照できるように、新しい本を購入しました(嫌悪感で捨てた古い本を置き換えるため)。しかし、少なくとも過去20年で言語がどのように進化したかはわかりません。
明らかに、多くの人にとって、それは jonscaがすでに説明している「古いことは悪い」という見方に過ぎません。しかし、その根底には本当の問題があります。
言葉が多すぎることは本当の問題です-コードを理解する方法にはあまりにも多くの混乱があります。これが最大の問題です。見て人々MOVE
、ADD
そしてMULTIPLY
恐怖内などのステートメントは、真の本の少し誇張されたビューを持っている- COMPUTE
ステートメントが近い他の言語での割り当てにあります。しかし、これらすべての部門とセクションにはまだ多くの混乱があります。COBOLで最初に学んだことの1つは、常に標準のA4ページのSKELETON.COBをコピーすることから始めることでした。
COBOLにはいくつかの興味深い機能がありますが、それらの機能(例PIC
)は、プログラミング言語ではなく、DBMSの一部になりつつあり、私は通常、これらの責任を分離するためのより良い方法であるようです。また、他の言語の一部のライブラリは、それに匹敵するものを使用しますPIC
(C標準ライブラリのprintfおよびscanfなど)。おそらく、最高のものが保持されていますが、最悪のものは落ちました。
また、すてきな機能ごとに、少なくとも1つの耐えられない機能がありました。たとえば、ループがどれほど些細なものであっても、本体を別の手順に移動する必要があります。PERFORM ... UNTIL ...
同様のステートメントはありませんブロック構造-単一のステートメント。ある意味、COBOLは構造化プログラミングが発明される前の構造化プログラミングの趣味でした-がありましたがGO TO
、その使用は推奨されませんでした(少なくともCOBOLを使用した場合)が、特にループ処理はうまく処理されませんでした。
実際、COBOLの後に私が最も思い出させた言語は、dBaseでした。Ashton-Tate dBase III +のように。最近では、xBaseという一般名につながった、現在死んでいるか、死にかけているすべてのクローン(Clipper、FoxProなど)を覚えている可能性が高くなります。xHarbourにはまだ生きている子孫がいます。重要なのは、これらはデータベース言語でしたが、SQLのようなものではないということです。
その場合でも、特定のデータベースで動作するすべての COBOLプログラムがそのデータベースの仕様のコピーを含める必要がある(そして、コピーが最終的に矛盾する可能性がある)場合、データベースがそれ自身の構造を知っているxBaseでは実際にはそうではありません。
それを考慮に入れると、COBOLは、それが何であるかを受け入れた場合、それほどひどいものではありません。しかし、データ構造を記述するための言語ではありません。これがCOBOLがC対Pascalの聖戦の時代に多くの苦しみを受けた理由かもしれません-両者はCOBOLが二分木を再発明するのにふさわしくないことに同意することができました。
ああ、忘れられないことの1つは、最初のCOBOL教科書がSORT
コマンドを説明していないことです。コマンドの範囲外であると言っています。 COBOL学生の小さな小さな頭脳が対処できる以上のものであると考えました [最後の編集を参照]。そのようなことから、COBOLを真剣に考えることは非常に困難でした。
これの奇妙な側面は、Jackson Structured Programmingでした。これは、ほぼ同時に、特にCOBOLで使用するために学ぶことを余儀なくされました。その一部は、入力の構造図、次に出力の構造図を描画し、次にコードの中間構造図を描画することでした。ソートはすでに解決済みの問題であることが明らかに予想されていました。この方法ではソートアルゴリズムを導出できませんでした。したがって、推奨される教科書で、並べ替えの概念全体が私の小さな心を超えていると同時に、数十種類の並べ替えアルゴリズムとそれらをPascalで実装する方法などを教えられていると言われるのは奇妙でした。
JSPが処理できる問題は、おそらくCOBOLが比較的うまくできることの良いガイドです。しかし、それでも、それは必ずしもJSPまたはCOBOLがこれらの問題を処理するための良い方法であることを意味しません。
2014年7月30日に編集
私はこれから評判が高まり、ここにいることを思い出しました。たまたま、懐かしさのある古書収集のために、WRTのSORT
コマンドを修正することができます。
COBOLを学習するときに推奨テキストとして最初に使用した本は、Ray Wellandによる「COBOLのメソッドプログラミング」でした。これはCOBOL 85をカバーしていません(ただし、後のエディション「Methodical Programming in COBOL-85」はまだ見たことがありません)。
「OSに付属しているソートユーティリティを使用して、入力ファイルを読み取る前にソートするか、生成後に出力ファイルをソートすることになっていた」という以下のすべてのコメント。それへの返信から、「OSに付属」という点を逃しました。KindallはUnixの哲学AFAICTに似たものを提案していました。COBOLはそれが良いビットに使用され、ソートユーティリティなどのOSユーティリティは他のものに使用され、おそらくバッチ/スクリプト/シェル言語を使用してビットを結合します。これは、対話型ソフトウェアがほとんど存在しない古代の世界でははるかに理にかなっているので、とにかく作業のバッチ(つまり「バッチ言語」)を送信することになります。
以下は、「COBOLでのメソッドプログラミング」の165-166ページから引用されています...
順序付けられたシリアルファイルの使用は、ファイル内のレコードをキーで指定された順序に並べ替える手段が必要であることを意味します。ほとんどの大規模なコンピューターシステムには、キーを構成する各データ項目の位置、タイプ、サイズを指定してファイルをソートするソートユーティリティがあります。
COBOLプログラム内からレコードをソートする機能もありますが、これは2つの理由からこのマニュアルの範囲外です。
(a)オペレーティングシステムへのインターフェイスは非常に複雑であることが多く、システムごとに異なります。
(b)並べ替えモジュールはANS '74 COBOLのオプション部分であり、小規模なコンピューターのCOBOLシステムには実装できません。
したがって、ファイルを指定された順序に並べ替えるための機能が存在すると想定され、そのようなファイルを更新する問題が考慮されます。
要するに、kindallは正しいです。通常、ソートはCOBOLの外部で行われるという仮定でした。1974年頃に小さなコンピューターのプログラミング言語から並べ替えを除外することは、実際に正当化されていたかもしれません。
上で言ったことは、基本的に、本を捨てたために事実を確認できなかった約20年後に得られるものです。
ただし、1988年と1989年に1974年の標準(1985年の標準ではない)を扱ったこの推奨書からCOBOLを正式に研究したことを指摘しておく必要があります。 COBOL 85をカバーする初版は1990年まで公開されていませんでした。確信はありませんが、「メソッドプログラミング」のCOBOL 85版は1994年まで公開されていなかったと思います。
しかし、それは必ずしもCOBOLの世界が足を引きずっているわけではありません。現在でも、どの言語でも新しい標準の採用には時間がかかります。