COBOLとは何ですか?COBOLプログラミングの説明

いくつかの技術は決して死ぬことはありません—それらはただ木工品に消えていきます。 

平均的なソフトウェア開発者にCOBOL(Common Business Oriented Language)について尋ねると、カーボンペーパー、有鉛ガソリン、または78RPMレコードについて言及したかのように見えます。GoやPython、さらにはPascalやCのような現代の言語と比較すると、COBOLは言葉が多く、不格好で、パスのように見えます。

しかし、COBOLは耐えてきました。私たちが喜んで会社を手放した時代遅れのテクノロジーからはほど遠い、COBOLは機関になりました。大規模なCOBOLコードベースは現在も世界中で使用されており、それらの多くは最初に作成されたときとほぼ同じように実行されます。ハリウッドの用語では、COBOL言語には「レッグ」があります。

ですから、そうです、COBOLは依然として関連性があり、タイムリーです。実際、痛々しいほどです。ニュージャージーのような州が、COBOLアプリケーションを21世紀に移行するのを支援するようプログラマーに呼びかけたため、ここ数か月でCOBOLは再び国民の意識に戻りました。

この記事では、COBOLの起源、プログラミング言語の設計が今日でもどのように際立っているか、そしてCOBOLが非常に永続的で扱いにくいものになっている理由を見ていきます。

COBOLの履歴

COBOLは、1950年代後半から1960年代初頭に発生しました。この言語の開発は、IBM、Honeywell、Sperry Rand、Burroughsなどのコンピューター企業のコンソーシアムを含む米国国防総省(DoD)が後援したプロジェクトでした。目標は、次の属性を持つプログラミング言語を作成することでした。

  • コンピュータシステム間の移植性。したがって、世代を超えたハードウェア間およびハードウェアメーカー間でのソフトウェアの移行が容易になります。
  • 運用速度をいくらか犠牲にしても、より多くの聴衆によるプログラミングを奨励する方法として、当時の他の言語(FORTRANなど)よりも英語に似た構文。
  • 言語の将来の変更に対応する機能。

最初の公式のCOBOL仕様は1960年に発表されました。次の10年間で、批評家の驚いたことに、COBOLはビジネスアプリケーションを作成するためのデフォルトの選択肢になりました。その急速な普及の理由の1つは、ネットワーク効果でした。この言語の最初の協力者の1人であるIBMは、積極的な早期導入者になり、コンピューティングの世界におけるIBMの支配的な存在は、COBOLの採用に貢献しました。

COBOLは、その設計上の利点と業界の強力な支援により、設計された元のシステムを大幅に上回り、立ち往生しています。さまざまな見積もりによると、1970年までに、COBOLは世界で最も広く使用されているプログラミング言語でした。1997年までに、COBOLはビジネスアプリの約80%を実行していると考えられていました。

COBOL言語

COBOLの設計者は、当時の他のプログラミング言語(FORTRANなど)の簡潔な構文を破りました。アイデアは、プログラマー以外の人、特に会計、金融、保険、その他のビジネスの専門家が読んで理解できるプログラミング言語を作成することでした。

COBOLの初期の方言で書かれた「HelloWorld」プログラムについて考えてみます。

識別部門。

プログラムID。こんにちは世界。

手順部。

DISPLAY'Hello World! '。

エンドディスプレイ。

実行を停止します。

Pythonのような言語の簡潔さで育った現代のソフトウェア開発者にとって、このコードは冗長です。しかし、COBOLの冗長性(実行ではない場合)は、Pythonなどの現代言語に情報を提供するのと同じ考えから生まれています。つまり、コードは記述されているよりも何度も読み取られるため、読み取り可能に記述されている必要があります。

最新バージョンのCOBOLの同様のプログラムは、次のようになります。

プログラムID。こんにちは。

手続き部。

「Helloworld!」を表示します。

実行を停止します。

この例はより簡潔ですが、同じ基本原則が適用されます。コードは、各ステップで何が起こっているかを明示するように努めています。

COBOLには、構文とプログラムの内部編成に関して厳格な規則があります。COBOLプログラムが明示的にセクション、または分割され部門、それが簡単に見つけて、一目でそのコンポーネントを理解するために作り、:

  • 識別部門:基本的に、プログラム、その作成者などに関する詳細を含むメタデータセクション。
  • 環境区分:異なるハードウェアでプログラムを実行するときに編集が必要になる可能性のある外部デバイスのエイリアスなど、ランタイム環境に関する詳細が含まれます。これにより、システム間のプログラムの移植性が向上しました。たとえば、I / Oの処理がまったく異なる場合があります。
  • データ分割:ファイル作業用ストレージのセクションを含む データ分割は、プログラムで使用されるファイルと変数を(それぞれ)記述します。
  • プロシージャの分割:実際のプログラムコードはここにあり、セクション、段落、文ステートメントと呼ばれる論理単位に分割されています。これらの構造はほぼ同じ機能(入力と出力が制約されたブロックにコードを分割する)を提供しますが、柔軟性がはるかに低いため、これらの構造をモジュールまたは関数に類推するのは魅力的です。

COBOLには、コマンドの前のスペースの数に至るまで、コードの非常に厳密なフォーマット規則もあります。(Pythonユーザーはこれをよく知っているでしょう!)これらの制限のいくつかは、プログラムがパンチカードでエンコードされ、80列の行の正確なフォーマットが重要であった1960年代のメインフレーム時代のCOBOLの時代の到来の副産物です。 。ただし、他のフォーマット制限により、読みやすさが強制されます。

COBOLプログラムの厳密な管理の背後にある考え方は、それらを可能な限り自己文書化することです。結局のところ、COBOLプログラムは、何年も何十年も継続して使用される傾向がありました。その意図は(常に最終結果ではないにしても)、すべてのCOBOLプログラムを、それを作成したプログラマーの助けがなくても、何年も経っても、すべてのCOBOLプログラマーが理解できるアーティファクトにすることでした。 

COBOLの課題

COBOLの継続的な普及と慣性の多くは、一度作成されたCOBOLアプリケーションは、わずかな変更を加えるだけで無期限に残される傾向があるという事実に起因しています。アプリが大きく、ミッションクリティカルであるほど、邪魔される可能性は低くなります。メインフレームは、IBMの製品と同様に重要な役割を果たしました。メインフレームは、下位互換性が高く、最小限の変更で世代を超えてCOBOLアプリなどのレガシーソフトウェアを実行するように構築されています。結果:何十年にもわたって基本的に変更されずに実行されている数十億行のCOBOLコード。

何年にもわたって、COBOLゆっくりではあるが進化してきました。現在でも、オブジェクト指向のバリアントであるOO-COBOLがあり、Unicode、ロケール、文字列や整数以外のより高度なデータ型などの最新機能のサポートが含まれています。ただし、COBOLは下位互換性を積極的に保持しているため、これらの改善と拡張でさえ、既存のCOBOLアプリケーションを引き続き実行する必要があるという義務に準拠しています。

COBOLの言語設計の選択肢のすべてがCOBOLプログラマーに人気があるわけではありません。一部のプログラムは、理解やデバッグが困難で、書き直しや改善を思いとどまらせる、過度に複雑なプログラムにつながっています。COBOLのGO TOコマンドは、Cの対応するコマンドと同様に、プログラマーがプログラムを自由に飛び回ることができるため、より強力なアプリケーションを作成できます。しかし、を無秩序に使用するとGO TO、COBOLプログラムが追跡が困難な相互参照のネズミの巣に変わる可能性があります。

今日のCOBOLプログラミング

COBOLは、今日、いくつかの化身で生き残っています。 IBMは、独自のCOBOL実装を積極的に維持し、それらが実行される多くの既存のCOBOLアプリケーションを維持しています。 Micro Focus COBOLは、Microsoft Windows上で実行され、COBOLアプリケーションをJavaおよび.NETにコンパイルし、さらにAzureなどのクラウド環境にデプロイする商用のCOBOLエディションです。また、GnuCOBOLなどのCOBOLのオープンソース実装もあります。これらは無料で入手でき、ネイティブマシンコードにコンパイルされます。ただし、商用COBOLのより高度なデプロイメントまたはデバッグ機能の一部が不足している場合があります。

COBOLは引き続き広く使用されていますが、COBOLに関する深い専門知識は、年を追うごとに取得するのが難しくなっています。その結果、多くの元COBOLプログラマーは、古いアプリケーションを21世紀に巻き込むために、引退から解放されなければなりません。多くの場合、最も重要なのはCOBOLプログラミングの知識ではありませんが、COBOLが実行されるメインフレーム環境についての深い理解です。多くのCOBOLアプリケーションは、IBMのIMSおよびCICSトランザクション管理やデータベースシステムなどのレガシーテクノロジーと連携して動作します。これらはすべて、ますますまれな専門知識を必要とします。

したがって、COBOLと同じくらい古風なように見えるかもしれませんが、COBOL言語と開発環境の専門知識の必要性は年を追うごとに高まっています。COBOLおよび関連する専門知識の求人情報はたくさんあります。2020年3月、ニュージャージー州は、COVID-19の危機を受けて、州の失業手当システムのアップグレードを支援するようCOBOLプログラマーに緊急要請を出しました。

COBOLを学ぶ

言語に対する需要の高まりを考えると、COBOLの学習リソースは再び急増しています。この最も永続的な言語に慣れたい現代の開発者には、いくつかのオプションがあります。

  • アイルランドのリムリック大学は、コンピュータサイエンスおよび情報システム学部の厚意により、完全なCOBOLプログラミングコースをオンラインで提供しています。他のリソースほど最新ではありませんが、COBOLが時間とともにほとんど変化しないことを考えると、それは必ずしも欠陥ではありません。
  • Open Mainframe Project(Linux Foundationの一部)もCOBOLリソースを提供します。1つは、IBMが共催するCOBOLプログラミングのフルコースです。これは、リムリック大学のコースよりも最新であり、IBMのCOBOLのzOS実装に合わせて調整されています。これは、広く展開されている言語のバージョンです。

COBOLは、何十年にもわたってビジネスコンピューティングの定番であり、COBOLプログラミングの才能に対する需要は増え続けています。COBOLプログラムの保守または最新化に関心がある場合は、これまで以上に時間をかけて飛び込むことができます。