当方、C/C++, Java, C#, VB6, VB.NET は知っておりますので、
これらとの対比で説明していただけると助かります。
http://e-words.jp/w/COBOL.html
COBOLとは 【コボル】 (COmmon Business Oriented Language) ─ 意味・解説 : IT用語辞典 e-Words
ここにさらっと書いてありますが、会計処理に使われていたそうです。
そういえば、プログラムの授業で、先生がその昔COBOLで経理システムをつくっていたと言っていたのおもいだしました。
1959年に開発されたとあります。
私はCOBOLについて簡単なリファレンスをペラペラとめくった程度に
知っている(ほとんど知らないとも言える…)のですが、
印象としては、私が知っているALGOL系の言語とは何か根本的に
別物と感じました。
ALGOL系言語でしたら、この言語のこの文法はあの言語のあれに相当するな、
とコードを見ればピンとくるのですが、COBOLについてはそういったものが
なかったです。
こんな私がCOBOLプログラマとプログラミングについて会話をする上で
有用な情報がありましたら、どしどしお待ちしております。
http://www.cobol.gr.jp/knowledge/report/report001/report005.html
COBOL�R���\�[�V�A�� Web Site �| �L���E�_�� �| 21���I���CCOBOL����
COBOLと他の言語との比較はこのリンクにあります
このような情報を待っていました。
さらに、細かいところまで突っ込んだものがあれば
お待ちしております。
http://www.page.sannet.ne.jp/mnagai/msj/pgm_lang.htm
�}�C�N���\�t�g�E�W���[�N�X�^�v���O���~���O���ꂪ�����Ȃ�
女性に喩えると「太った秘書」のような言語だそうです。
C言語やC++言語に比べると汎用度が低く(専用度が高く)、特定の分野向けの高級言語で、事務処理向き言語と言われています。
僕のイメージでは、帳票(プリンタから打ち出される紙)出力に非常に強く力点を置いてデザインされた言語と言う理解をしています。
http://d.hatena.ne.jp/keyword/COBOL
COBOLとは - はてなダイアリー
COBOL言語には、COBOL75とかCOBOL85のように、年次を後置きする様々なバージョンが存在していて、それらの間の差分は可なり大きいとも聞いています。(89年版C言語と99年版C言語との違いが笑い飛ばせるくらい、C言語とC++言語との間ほど違う?)
↑、COBOLプログラマな古い友人との世間話から。
21世紀になった今でもそうかどうかは分かりませんが、元々は専門職の職業プログラマがコーディングするものではなくて、エンドユーザコンピューティングのための言語だったそうです。
専門職の職業プログラマがコーディングして納品する場合も、顧客がソースを読んで理解して自分で改良したりすることさえ前提とされる場合もあったそうです。
↑、若い頃に会社の先輩から聞かされた話から。
http://dir.yahoo.co.jp/Reference/Libraries/By_Region/
Yahoo!カテゴリ - 図書館 > 地域別
VisualBasicのご先祖様であるQuickBasicや、その前をご存知でしょうか?
COBOLのソースコードは雰囲気としては、C/C++やJavaよりも、昔ながらのBASICに近い感じの(行指向の)、全編大文字で書くのが作法の言語のようです。
百聞は一見にしかず。COBOLの教科書なり参考書なりの模範的なコードを見れば言語の雰囲気は一発で掴めます!
どちらにお住まいかは分かりませんが、公共のちょっとした図書館であればCOBOLの参考書くらいは置いてありますよ。(古いかも知れませんが)
ありがとうございました。
私はCOBOL嫌いで、これにあまりコストをかけたくないというのが
正直なところで、ささっと最小限のリテラシーを身に付けてしまいたい。
図書館で本を借りるというのは妙案です。
http://ja.wikipedia.org/wiki/COBOL
COBOL - Wikipedia
COBOLは、メンテナンスを重視した言語です。英語を読める人なら何となく意味がわかるほど、英語っぽい文法をしています。その意味では、BASICに似ていますが、BASICよりもその傾向が強いと思います。COBOLのソースは、まるで英語の文章です。Cなどの簡潔な表現になれた人にとっては、逆にまどろっこしく読みにくいかもしれません。また、COBOLには、「お役所」っぽいイメージがあります。定義や計算処理などをDIVISIONに分けて記述させる点が、「お役所」を連想させます。課によって役割が截然と分かれているといった感じです。書き手の利便性よりも、引き継ぎを重視しているかのようなところにも「お役所」を感じます。それから、常に必要な定義が多い点も、「お役所」らしいです。毎度提出する書類に決まりきったことを毎回書いて埋めるような、あの儀式っぽさがあります。VBなどがカジュアルな印象を持っているのとは対照的です。
>書き手の利便性よりも、引き継ぎを重視しているかのようなところにも
>「お役所」を感じます。それから、常に必要な定義が多い点も、
>「お役所」らしいです。
オブジェクト指向言語のインターフェイスを連想しました。
当時のコードの保守性や可読性を保障するための知恵なのかな、と。
http://www.pro.or.jp/~fuji/mybooks/okite/okite.6.6.html
Karetta/($B%3(B)$B$N6H3&$N%*%-%F(B
自分は、COBOLしか分かりませんので、対比での説明はできませんが・・・
COBOLは、大型計算機に色々な計算をさせるプログラムですね。
計算事務処理なんかに向いていると思います。
「COBOLは事務処理に向いている」と聞くたびに思うのが、
SQLとの住み分けはどうしているのか、
トランザクションや分離レベル等の概念が存在するのか、
ということです。この辺はどんな感じなのでしょうか?
コボルの説明分かり安いですよ。
http://coin.nikkeibp.co.jp/coin/nos/cobol/
$@%*!<%W%s%7%9%F%`$K3h$+$9!!<BA)!!(JCOBOL$@;q;:!!0\9T%,%$%I(J</p>
ほんだったらこんなのどうですか?
ところで、COBOLについてこれからはそんなに意識する必要ないですよ。
あれは職人のプログラムですから、
感覚やイメージで作るものではありません。
画面でも、帳票でもきっちり設計図作ってから、右から何番目上から何番目と図って作っていくもので、今の作り方とはまったく違います。
ハードはPCではありません。
オフコンや汎用機が中心ですので、機器のメーカーにより同じCOBOLでも言語が違います。
その機械を持っていないとディバックどころかテストもできません。
メーカー違えばユーティリティも違いますのでファイルのコピーもSEにはできません。
どんなものかは最初のサイトでイメージできるでしょう。
比較についてはまるっきり違うものなので、
日本語を英訳するイメージではなく、古代文字を現代語にするようなイメージですから、同じプログラムとして話をつなぐのは難しいでしょう。
ご紹介いただいたページがわかりやすく大変参考になりました。
DIVISIONに分けて記述するというのが、Pascalに近いという印象です。
こういう冗長さはわかってしまえばありだと思いました。
思い出したのは、変数のスコープの概念って存在するのでしょうか?
>あれは職人のプログラムですから、
>感覚やイメージで作るものではありません。
開発スタイルがスパイラルではなく、
完全にウォーターフォールで作るといったイメージでしょうか?
>画面でも、帳票でもきっちり設計図作ってから、右から何番目上から
>何番目と図って作っていくもので、今の作り方とはまったく違います。
「何ピクセル目に〜を描画する」という命令を記述するイメージですかね。
VBのように、フォームにコントロールをドラッグ&ドロップではなく。
なんとなくイメージがつかめてきたわけですが、
また新たな疑問も生まれてきましたので、今後、下記の点についても
ご回答いただきたいと思います。
●COBOLとRDBMSの関係
●COBOLプログラマから見た他の言語の印象
●COBOLプログラマは初心者のとき、どうやって勉強したのか
http://www.cobol.gr.jp/knowledge/technical.html
COBOL�R���\�[�V�A�� Web Site �| ���p�Z�p
再回答ですいません
第6回に”J2EE環境でのシステム構築において COBOLを活用することのメリット”(本文より引用)
について解説してあります
そのページの2.一般的な比較のところにJavaとの比較が書いてあります
そのほかの回にも色々COBOLについて書いてありますので読んでみてはどうですか
>再回答ですいません
いえいえ。とんでもありません。
何度でも回答していただきたいと思います。
(たしか、はてな人力検索では、回答が2回までだったと
思いますが、それ以降は「いわし」に書いていただければ
助かります。)
ご紹介いただいたページは非常に良いページだと思います。
Javaのところは、今、読んだばかりですがすごく役に立ちました。
このページをくまなく読めば、私の疑問は大部分が解決されそうな
気がします。
http://www.hatena.ne.jp/1140187355#
人力検索はてな - COBOLとは、どんな言語なのでしょうか? 当方、C/C++, Java, C#, VB6, VB.NET は知っておりますので、 これらとの対比で説明していただけると助かります。..
コメント面白いですね。
勉強熱心な方だと思います。
まず、一つの前提として
COBOLにはマウスは不要というかないということです。
ディバックも基本的に画面でなく、リスト=紙を出力して、手で追っかけるのが基本と言うことです。最後のほうはさすがに、一部は画面を使っていたでしょうが。。。
ところで
●COBOLとRDBMSの関係
データーベースも基本的にはメーカー仕様なんです。最初にデータ件数確認して、あらかじめファイル容量計算して、よく計算ミスで溢れたものです。
ですからデータベースはメーカーごとに付属で付いてきていて、基本的に他メーカーのコンピュータとは互換性がないということです。
これが各ベンダーの強みであり、他の会社のPGがプログラムの修正をしたくてもできない大きな原因でした。
●COBOLプログラマから見た他の言語の印象
どうなんでしょうね。私はプログラマーでありませんから分かりませんが、きっと今の言語はなんだか分からんというのが正直なところでしょうね。
COBOLしかしらないSEとPC用の言語しか知らないPGとの打ち合わせなんかまったくかみ合っていなくて面白いですよ。
●COBOLプログラマは初心者のとき、どうやって勉強したのか
ほとんど丁稚奉公のような世界でしょうね。
先輩の作ったものを一部修正して、タイトルと印刷の中身だけ変えるようなとことから初めて、その後は簡単なサブルーチンをつくるとかいったようなものでしょう。
あとCOBOLは画面設計より帳票のほうが簡単です。
まずはリストの作成が仕事の中心で、計算結果(といっても+-*/ぐらいしかしないでしょうが)を印字できるようになるのが目標でしょう。
画面の入出力はベテランが作るというものでしたね。
今と逆なような気がしますが、、、
あとCOBOL時代の最大の問題点はディスクの容量とスピードでしたね。
20MB(単位は間違ってません。GBではありません)で数十万円とかの世界でしたから、とにかく小さくまとめることが重要です。
職人はプログラムのステップ数を自慢してましたから(もちろん少ないということを)
あと、下手なPGやデータベースの設計では極端に処理結果の時間が変わってきます。
計算に数時間というのもざらでしたから、命令どおり動くことより、いかに短い時間で処理できるかが技でした。
見ていて楽しいですよ。
今で言えばOSに近いもの作っていた人もいっぱいいましたからね。
>コメント面白いですね。勉強熱心な方だと思います。
感激至極に思います。
ちなみに、7番目の回答からは酔っ払いながらも真面目に書いている
のですが、ご無礼がありましたら、ご容赦願いたいと思います。
>●COBOLとRDBMSの関係
>ですからデータベースはメーカーごとに付属で付いてきていて、
>基本的に他メーカーのコンピュータとは互換性がないということです。
COBOLの環境は汎用機だから、OracleなどのRDBMSはないだろう、
だったら、SQLも使えない、COBOLの言語仕様ですべてを解決しちゃうん
だろうな、と思っていたのですが、メーカー付属のDBが付いてくるの
ですね。盲点でした。
>●COBOLプログラマから見た他の言語の印象
>COBOLしかしらないSEとPC用の言語しか知らないPGとの打ち合わせ
>なんかまったくかみ合っていなくて面白いですよ。
本質問の発端がまさしくこれです。
私もプログラマではないですが、PC用の言語側の当事者としては
辛いものがあります。。。
>●COBOLプログラマは初心者のとき、どうやって勉強したのか
>ほとんど丁稚奉公のような世界でしょうね。
やはりそうなんでしょうね。
COBOLは、気軽に試せるメジャーな実行開発環境がなく、
動作結果もVBのように視覚的に面白いわけでもない。
進んで勉強するためのきっかけがない。
丁稚奉公のように、仕事上、仕方なく叩き込まれて
身に付けるのが本当のところなような気がします
>あとCOBOLは画面設計より帳票のほうが簡単です。
>まずはリストの作成が仕事の中心で、計算結果
>(といっても+-*/ぐらいしかしないでしょうが)
>を印字できるようになるのが目標でしょう。
>画面の入出力はベテランが作るというものでしたね。
>今と逆なような気がしますが、、、
MVCモデルで言うところの、Mを初心者が作って、
Vをベテランが作るような感じでしょうか。
本当に、今とは逆ですね。
Mを初心者が作るなんて、怖くて怖くて。。。
>計算に数時間というのもざらでしたから、命令どおり
>動くことより、いかに短い時間で処理できるかが技でした。
>今で言えばOSに近いもの作っていた人もいっぱいいましたからね。
COBOLほど専門特化された言語でも差がでるような処理があることに
驚きです。
そして、COBOLにポインタがあるのでしょうか?
ポインタなしで低レベルなチューニングされた処理をするのは
難しいような気がするのです。
http://hp.vector.co.jp/authors/VA003991/kouza/beginner/kouza_cob...
止揚流プログラム講座(COBOL編)
25年ほど前にCOBOLでプログラマーをしていました。COBOLは、まず大きくわけて4つのDIBISION(部)から構成されており、定義が多くステップ数も多かったですね。このURLを見ていると思い出されます。残念ながら他の言語の特徴はあまり知らないので比較は出来ません。
http://software.fujitsu.com/jp/manual/manualfiles/M050005/B1JN59...
3.2.3 COBOL$B%W%m%0%i%`$+$i$N<B9T(B </p>
このようなプログラムです。
ご紹介いただいたページはよくまとめられていて、私の頭を整理するのにもってこいでした。
ありがとうございました。
http://tiny-cobol.sourceforge.net/index.php
The TinyCOBOL Project Home Page - Index
対比した回答をさせていただきますので,よろしくお願いいたします。
私は、COBOLを少ししか知らず、あまり好きではありませんが.....。
COBOLは、下記の様に考えます。
[A]C言語関連の言語と比べ、オブジェクトファイルサイズが大きく, 処理速度が遅い。システムを高性能化できるとは言い難い。
[Bオブジェクト指向の言語に対し、非オブジェクト指向の言語である。オブジェクト指向がプログラムの高品質化に必ずしも繋がらないが、時代の流れに沿っているとは言い難い。
[C]VBなどの言語と比べ、(COBOLのコンパイラだけでは)GUIのプログラムを作れない。
COBOLを知っていて損は無いと思いますが、そんなにご存知であれば、それらを深く追求するのも一考かもしれません。
なお、PC(Linux)上でフリーのCOBOLコンパイラはあります。
COBOLが好きの方にはすいませんが、悪気はありません。現実論です。
ご参考になりましたでしょうか。
いかがでしょうか。
まず、誤解のないようにお願いしたいのは、
言語の優劣を決めるために対比しているのではなく、
既知の言語の知識を用いてCOBOLを理解したい、
そして、COBOLプログラマとのコミュニケーションを
図りたい、というのが本質問の趣旨です。
# でも、同じことができるのなら、慣れている言語で
# やりたいなぁ、とは思いますけどね。
ご紹介いただいたページでは、COBOLでWebプログラミングをしてました。
こういうインターフェイス付のプログラムを見せられると
イメージしやすくて、とてもよかったです。
>[A]C言語関連の言語と比べ、オブジェクトファイルサイズが大きく,
>処理速度が遅い。システムを高性能化できるとは言い難い。
COBOLはトリッキーなコードが書きにくそうですし、
実行環境が特定されてますので、コンパイラの最適化がしやすく、
処理速度が速そうだと思っていました。
>[Bオブジェクト指向の言語に対し、非オブジェクト指向の言語である。
>オブジェクト指向がプログラムの高品質化に必ずしも繋がらないが、
>時代の流れに沿っているとは言い難い。
事務処理用言語を何もオブジェクト指向言語にする必要はないと思います。
仮にCOBOLがオブジェクト指向言語になったとして、
状態を持つ必要がない処理ばかりだと勝手に思ってますので、
メソッドを作ると、クラスメソッドばかりになって
オブジェクト指向の意味がないと思います。
GUIプログラミングやシミュレーションプログラミングにおいては、
オブジェクト指向は力を発揮しますが、それ以外の場合ですと、
コード量が増えて面倒くさくなるだけです。
PerlやPHPのように、なんでもかんでもオブジェクト指向言語化する
昨今の流れには眉をひそめてます。
>[C]VBなどの言語と比べ、(COBOLのコンパイラだけでは)GUIの
>プログラムを作れない。
MVCモデルでいうところの、MはCOBOLに任せて、VはVBに任せる、
適材適所ということで良いんではないかと思ってます。
以上、回答が出尽くしてきた感がありますので、これで質問を終了します。
皆さんのおかげで、苦手だったCOBOLの大いに理解が進みました。
ありがとうございました。
コメントはありません