web-dev-qa-db-ja.com

なぜCOBOLは依然としてビジネスの世界で好まれる言語なのですか?

C++, Java, Pythonなどの言語がありますが、なぜCOBOLがビジネスの世界で依然として好まれる言語なのですか?

[〜#〜]編集[〜#〜]

なぜそんなに人気があったのですか?

この質問用に別のスレッドを作成しなかったことをお詫びします。

30
Prasoon Saurav

コードの慣性。COBOLで記述された膨大な量の既存のコード=すべてを別の言語に切り替えるための法外なコスト。 Wikipedia は、2,000億行を超えるCOBOLコードが使用されていると述べています。

ポリシーの慣性。COBOLが実際に深く使用されている場所は、政府機関や大企業である傾向があり、変更が遅いことで有名です。

人間の慣性。コードを書いて生計を立て、多くの言語を知っている人は、新しいコードを学ぶことは大したことだとは思わないでしょう。ある言語を学んだ人は、それ以外の場合は「ビジネス」の仕事を実行するためにその言語を知る必要があるため、切り替えることすら考えないかもしれません。

46
Arkaaito

COBOLが大企業や政府に好まれているかどうかはわかりません。容認された方が良い言葉かもしれません。

なぜ?

  1. 大きな政府/企業は、金融システムの管理に関してリスクを嫌うからです。ここを台無しにすると、企業全体が危険にさらされます。壊れていない場合は修正しないでください。

  2. 何百万行ものコードを含むミッションクリティカルなシステムを、「私の言語はあなたの言語よりも優れている」というタイプの議論に置き換えるための堅実なビジネスケースを作成することは困難です。それよりも複雑ですが、堅実なものを考え出します。ビジネスケースは難しいです。

  3. 取引量。 COBOLアプリケーションは、スループットが最適化される傾向があります。大量のデータをバッチ処理することは、COBOLが本当に優れているところです。 Javaアプリケーションは、プログラムと処理のドラッグを追加する「金属」との間にインフラストラクチャ層が増える傾向があるため、スループットを最適化するのがやや困難です。大企業/政府は、システムをプッシュスルーし、スループットが不可欠です。

  4. トランザクションあたりのコスト。 COBOLは通常、すべての要素が含まれている場合、トランザクションあたりのコストが低くなります。これは、処理に時間がかかり、一般的にCOBOLアプリケーションの方が効率的であるためです。ただし、COBOLアプリケーションの開発/保守コストも低いようです。

その最後のポイントのためにみんなが私を飛び越える前に、私に説明させてください...

私は非常に大きな店で働いており、数年前、Javaですべての新しいシステムを構築するという経営陣の決定が下されました。 COBOLは、既存のレガシーソフトウェアベースの保守のためにのみ保持される予定でした。完全な段階的廃止は、15年間の期間で計画されていました。

最高で最も明るいJavaの心が持ち込まれ、トレーニング、ベストプラクティスの設定、インフラストラクチャの構築、大規模な開発のサポートJava開発。このイニシアチブは十分に計画され、実行されました。その後、多数のJavaアプリケーションがデプロイされた後、「Beanカウント」が開始されました。その結果、COBOLアプリケーションの開発、保守、サポート、および実行にかかるコストはさらに低くなりました。結果が歓迎されなかったので、ここで長いハードナンバーがクランチ!

COBOLが復活しましたが、完全ではありません。新しいエグゼクティブの方向性は、重労働(バックエンドトランザクション処理)およびバッチ指向のアプリケーションのためにCOBOLを維持することです。基本的に、COBOLは数の計算とビジネスルールの実装に使用されます。 Javaは、GUIタイプのインターフェースと軽量処理を提供するために前面に出てきます。

これはおそらく業界のトレンドだと思います。 COBOLはすぐに消えることはありませんが、新しいプレーヤーを前もってサポートする舞台裏では見えなくなる可能性があります。

27
NealB

まず、私はMicro Focusで働いているので、興味のあるパーティーです。しかし、私はその質問を自分自身に戻します。何故なの?固有の前提は、C++、C#、またはJavaは新しいため、当然改善されるということです。ただし、COBOLは静止していません。構文が言葉で表現されていることもあり、次のことが可能であることが証明されています。 COBOLに新しい機能を追加して、競争力を維持します。COBOLの「悪い」ことについてよく言われますが、30年前のCOBOLを最新バージョンのC#と比較していますRubyなど!

確かに、COBOLが進化しているが下位互換性が維持されているという歴史そのものが、企業がCOBOLに投資する大きな理由です。書き直す必要がないため、tcoが削減されます。

COBOLの最新バージョンの詳細については、Managed COBOLのコミュニティサイトを確認してください。 http://knol.google.com/k/alex-turner/micro-focus-managed-cobol/2246polgkyjfl/4

6
alex turner

これらの言語はいずれも、Cobolが行うこと、つまり大量のデータを高速かつ効率的に処理することを提供していません。それはグラフィックスを必要とせず、ビットをいじる必要もありません、それはそれがうまくいくことをする必要があります-主に会計。

C++とCは、システムスタイルのものの代替としては問題ありませんが、固定小数点演算とレコード指向I/Oの強力なサポートに依存します。ほとんどの金融アプリとビジネスアプリが存在するスペースであるz/OSでは、Cobolとz/assemblerの両方がそれらをより適切にネイティブサポートしています。

Javaは優れており、安全で、実行可能です。また、IBMメインフレームでは、JavaとCobolは非常にうまく相互運用します。しかし、Cobolで簡単に実行できることの中には、Javaで実行するのが非常に難しいものもあり、その逆も当てはまります。それらは互いに補完し合っており、互いに置き換えているわけではありません。 Javaは、ライブラリ呼び出しを介してすべての固定小数点演算も実行します。これは、ネイティブのオペコードサポートよりもはるかに低速です。

Pythonは、固定小数点演算とレコードI/Oにライブラリ(別名モジュール)のサポートを使用します。また、インデントを使用してスコープを区切るという致命的なIMHOの設計上の欠陥もあります。これは、ISO8859-1文字セットのいくつかのバリアントを使用するMac/Windows/Unixの比較的均質な環境で問題なく機能します。 ASCII中心の世界とEBCDIC中心の世界の間を行き来するときに問題が発生する傾向があります。この世界では、行末記号は「\ n\r、\ r、\ n」ほど単純ではなく、ファイル転送パッケージの設定ミスもあります。 、文字変換ルーチン、または別の文字セット用に構成された端末による編集は、ソースのスコープを破壊します。

あなたが言及するすべての言語には、Cobolが最も強力な重要なビジネスニーズに弱点があります。

4

なぜそれが流行したのですか?

1950年代後半、米国政府は、ソフトウェアベンダーが政府向けにアプリを販売したり、アプリを作成したりする場合は、言語をcobolにする必要があると宣言したためです。

結果として、何十年もの間、それはそれをサポートするコンパイラベンダーの最大のセットを持っていた言語であり、それは最高度のISO標準化を備えた言語であり、FORTRANだけがそれに近づいていましたが、FORTRANは明らかに完全に異なっていましたターゲットオーディエンス。

2番目の理由:今日でも、かなり頻繁に発生する特定のビジネス上の問題の特定の側面について、私が知っている他のどの言語よりも優れているためです。これらの側面の中で最も重要なのは10進演算です。 Cobolはそれをネイティブに持っています(PL/1などの場合のように)が、それは「より現代的な」と言われている言語のいずれにも当てはまりません。ちなみに、「お金の値を格納するのに最適なデータ型は何ですか?」に関してここで非常に多くの質問があるのはまさにそのためです。これらの質問をする人々は、ITの世界全体がいくつかのOO言語といくつかのORMツールで構成されていることをよく知っており、なぜそのようなものが「お金の算術」が役立つのかわかりません。それをサポートするコンピューター言語の場合ネイティブつまり、コンピューター言語がbigint以外の組み込みのネイティブデータ型を持っている場合(プログラマーはまだ小数点)、または浮動小数点数(プログラマーは、あらゆる場所に正しい丸めロジックを追加する責任があります)。

4
Erwin Smout

これは、ハードウェアの一部をホットスワップできるマシンで動作し、プロセッサが停止すると正常に劣化します。数十億ドルで作業する場合、信頼性がすべてです。

これらのマシンは、途方もなく大きなIO速度もサポートしています。1日分のトランザクションをリアルタイムで処理できない場合は、廃業しています。

1985年以来、非推奨のビットがほとんどない安定した言語です。

開発者はそれが起こることを「計画」していなかったため、コードを別の言語に簡単に移植することはできません。今日のシステムを動かしているコードを別の言語に移動することは、リスクと非常に大きなコストです。

信頼性は重要であり、COBOLにはそれがあります。

3
Dean J

私はaoc、c ++、Javaも作業しました。すべてが高度な機能を備えています。しかし、コンピューティングの問題が発生した場合、ビジネスの計算と推測だけでハードワークは発生しません。 ..そして巨大なデータ処理、1日以上1日以上の処理.. Javaまたは他の言語!!!忘れてください。その唯一のcobolとメインフレーム。

  1. セキュリティの漂白剤。メインフレームには60年以上の漂白剤はありません。
  2. 緊急事態や見事な状況で処理するコードの単純さ。
  3. java、vb.net allでフロントエンドを使用しますが、データを維持するにはDB2.soに依存する必要があります。

そのすべての理由は、主要な銀行会社がメインフレームから他のフレームに移行する前に10回考えている理由です。

2
TAps

なぜそれが流行したのですか?

それはIBMによって強く押されました。これは、PL/1ではありませんが、FORTRANとCOBOLにとって大きな助けになりました。

それは非常に早い段階で利用可能であり、1960年以前に最初に登場しました。

アセンブラーを使用するよりもはるかに簡単で、IBM 360アセンブラー(ビジネス処理に非常に適したものでした)でさえも使用できました。それは、アセンブラーよりもうまくやろうとしている多くの人々を拾いました。

これは、当時の一般的なビジネスコンピューティングの慣行に非常によく一致していました。入力を受け入れ、マイナーな変換を行い、レポートを吐き出すのが非常に得意でした。 (それでもなおですが、今日の企業のニーズははるかに多様です。)

小数点を追跡しながらの小数演算やレコードデータ型など、ビジネスで非常にうまく機能するいくつかの特別な機能がありました。

2
David Thornley

多くの大企業、特に銀行は、COBOLで記述された複雑なシステムを持っており、それは単に機能します。そのようなシステムの書き直しと設計は、時間とお金を含むリソースの浪費であるとして多くのそのような機関によって観察されます。また、特定の要件固有の機能が途中で失われる可能性があるというリスクもあります。したがって、古くからの表現は、壊れていなければ、修正しないでください。

1
Dot NET

[ベンダーポスト-ただし、必ずしもベンダーの公式声明ではありません]

確かに、慣性、インストールベース、および変更のリスクは非常に正当な理由ですが、言語自体には正当な理由があると思います。大量のデータレコードのバッチ処理を実行する場合、または財務計算を実行する場合は、レコードレイアウトと数値データ型の定義が他のどの言語よりも優れています。

NealBが彼の投稿で説明しているように、私は自然環境と専門知識がJavaであるユーザーに話しましたが、それは仕事に最適なツールであるため、COBOLのコアロジックを維持します。 Java(主にUNICODE文字列操作とシステム統合用)同じアプリケーション内のCOBOLと。Java itで同じ作業を行うためのコードの量を比較した場合Alex Turnerは、COBOLとJavaの典型的なビジネス機能を比較するいくつかの優れた例を別のWebサイトに投稿しました。

1
Mark

Cobolは、コンピューターについて何も知らない人々がプログラムを作成できるようにするために発明されました。これはまさに、ビジネス、特にアメリカのビジネスが繁栄するような悪い考えです。

優れたソフトウェアには、高度なスキルと優れたツールが必要です。その中には、実際に使用するには、実際には実際の知識と理解が必要です。高いスキルレベルは高い賃金を要求する傾向があるため、スライバーの弾丸の検索は継続され、高いスキルは積極的に推奨されません。私を信じないの?これらのリンクを試してください

http://userweb.cs.utexas.edu/users/EWD/transcriptions/EWD12xx/EWD1284.html

0
MG1