【技】COBOLはアセンブラみたいなものである
聴いてみよう
この記事は、Podcast「にゃおのリテラシーを考えるラジオ」の2022年12月7日配信の書き起こしです。
読んでみよう
にゃおのリテラシーを考えるラジオ
読書と編集の千葉直樹です。
このチャンネルでは、読書と IT 時代の読み書き、そろばんを中心に様々な話をしています。
今回のタイトルは 、
COBOLはアセンブラみたいなものである
というものです。
メインフレーム?
古いシステムと新しいシステムを同じレベルで比較してはいけないという話をします。
僕がエンジニアとして仕事を始めたころ、パソコンはおもちゃだと思われていました。業務システムには使えないと思われていたんです。
今は普通に使われているし、ネット上にあるサーバーもパソコンの技術の延長線上にある時代になっていますけどね。
で、実用的に使えるシステムは、メインフレームと呼ばれる冷房完備のガラス張りの部屋に陳座するコンピューターが担っていたわけです。
業務系のシステムは、大抵COBOLという言語でプログラミングされていました。というか今でもこれは変わっていないかもしれません。
古いシステムが使われる理由
よく、なぜそんな古い言語やシステムが使われているのかが議論になるのですが、これは最新のシステムしか知らない人にはわからないだろうし、逆に古いシステムしか知らない人にも、なぜなのかは説明しにくいところがあると思います。
古いシステムが残っているのは、ズバリ速いからです。
「最新のシステムより昔のシステムの方が速い」なんて言ったら、「嘘だ!」って言う人もいるでしょう。でもそうなんです。その理由はこういうことです。
COBOLは、マシン語に近いんです。COBOLはコンパイル・リンクを終えるとほぼマシン語になり、それが実行されることになります。
ほぼマシン語というのは、動かすコンピューターがほぼそのまま実行できるという意味です。
移行対象とされることが多いJavaはどうかというと、コンパイルされたものはJava仮想マシンのバイトコードになります。
Java仮想マシンは、実際にはインタプリタです。
OSの上に仮想マシンを動かして、その上でインタプリタでバイトコードを実行するんです。
最近は、アセンブラでプログラミングすることはほとんどなくなってしまったので、マシン語になったコードとインタプリタ上で実行されるコードのスピードの違いを体感することが難しいんですが、インタプリタで「実行!」ってキーを押して一呼吸あって答えが出る感じの処理が、マシン語だと「キーを押さないうちに答えが出た」と感じるくらいのスピードの違いがあるんです。
あくまで体感ですけどね(笑)
もちろん、その間にストレージとかネットワークにアクセスするケースもあるので一概には言えませんがそんな体感です。
COBOLはソースコードレベルでほとんどメモリマップである
COBOLのコードをまじまじと見てみると、これはメモリマップだなと思います。ほとんどそのままメモリ上に張り付けて実行できそうな感じなんです。
これも、最近のプログラミング言語から始めた方には、分かりにくいでしょうけど、コンピューターのプログラムはメモリー上にマッピングされて実行されて、しかも、そのサイズがコンパクトであればあるほど処理が早いんです。
COBOLは古い時代の言語ですから、最初からメモリにコンパクトに載せることを考えてプログラミングするようにできているんですね。
だから、COBOLが優れているんだと言いたいわけではありません。そもそも、プログラミングのモデルが違うから比較してもしょうがないと言っているんです。
COBOLでプログラミングされたものを、現在の複雑化したモダンなOS上で動作させるためには、COBOLを動かせるコンピューターをシミュレーションする必要があって、 最初からCOBOLに特化した構造のコンピューターとは勝負にならないほど遅くなってしまうというわけなんですね。
新しいシステムに置き換えるのが難しいシンプルな理由
結論は、COBOLのロジックをそのまJavaに置き換えると百万倍遅くなるということです。百万倍というのはベンチマークではありませんよ(笑)
そんなわけで、COBOLで作られた業務系システムを、モダンなシステムに単純に置き換えるというのは難しいわけです。
やるなら今のシステムに合わせて設計し直してから、モダンな言語でプログラミングする必要がありますが、そんな時間もそれができる人的リソースの確保も難しいというのが現状だと思います。
これは技術の断絶、 メインフレームとパソコンの違いがいまだに尾を引いていると言っていいかもしれません。
「どっちも同じコンピューターだろう?」というのはお門違いなんですね。
マガジンはこちら
コメントはこちらで
noteのコメントだけでなく、Stand.fmのコメントや Twitter の DM などでコメントをいただけると嬉しいです。
今後配信の中で参考にしていきたいと思います。
おわりに
読書と編集では IT を特別なものではなく、常識的なリテラシーとして広める活動をしています。
ITリテラシーの基礎を学べるオンライン講座をやっています。
詳しい内容については、概要欄のリンクから、または「読書と編集」と検索して、猫がトップページに出てくるホームページをご覧ください。
概要欄にリンクがありますので、フォローいただけると嬉しいです。
この配信の書き起こしをnoteで連載しています。
今日もワクワクする日でありますように。
千葉直樹でした。
ではまた。
YouTubeはこちら
Podcastの聴き方
Podcastの聴き方は以下のnoteをお読みください。
この記事が気に入ったらサポートをしてみませんか?