他言語の紹介

プログラム言語には非常に沢山の言語が存在します。みなさんもベーシックやシー、ジャバ、といった言葉を耳にしたとはありませんか?ここに掲載しているもの以外にも沢山の言語が存在しますが、私の知ってる限りで少し書いてみます。私が勘違いしている可能性は否定できません。あくまで参考程度に留めて下さい。

Basic(ベーシック)

古くからのパソコンユーザーには一番馴染み深い言語でしょうね。特徴としては、プログラム作成後に、コンパイル(翻訳)を行なわず、実行中に翻訳を行ないます。(インタプリタと言います)一つの命令語ごとに内部で翻訳を行なっているため、当然ですが処理に時間がかかります。BASICは直訳すれば基礎という意味あいで、プログラムの初心者向けに開発された言語で非常にわかりやすいという特徴があります。Visual BasicやエクセルのマクロであるVBAもBasicの種類に一応入りますが全くの別物だと考えて下さい。古いNECユーザーならばN-88 Basic とか。

C言語(シー)

現在のパソコンゲームやプレステのソフト開発もコレでやっている、という話しを耳にします。ゲーム業界に進むのであれば覚えておきたい言語です。もちろんWindowsの一般ソフトにも多く利用されている言語ですし、UnixやWindowsなどのOSもC言語で書かれています。参考書も腐る程あります。ネット上でも広く公開されています。情報処理試験の選択にもあります。個人向け言語としてはJavaと並んで最高峰じゃないでしょうか。Windowsで起動するVisual CやC++(シープラスプラス)などが有名です。現在ではC言語から派生したC++が主流であり、C言語とは別モノだという意見もあります。私個人の意見としては、少なくともC言語は覚えていたほうがいいように思います。

《注釈を頂きました》
実を言うとCも「移植しやすいアセンブラ」だったりします。最近「バッファーオーバーランによる脆弱性」が問題になる話題が多いですが、元凶はC言語でプログラムを書いてるから、というのがほとんどです。「Cより安全で同じぐらいダーティーな言語があると良いなあ」とはみんな思ってるんですが、なかなか本命が出ないというのが実情です(ただ最近D言語というものが生まれて今後十年で本命化する可能性が高いですが)

FORTRAN(フォートラン)

科学計算用言語。少し難解ですがCOBOLが出来ればプログラムは組めます。少し前までは情報処理試験の言語にもありましたが、利用シェアの減少に伴い試験問題から外されました。現在ではこれをメインにシステムを構築できる人は鳥のトキより貴重です。仕事上でもCOBOL以上に見かけません。

《注釈を頂きました》
FORTRANは、これでシステムを作るというより、過去の資産を利用するための言語でしょう。 しかし、最近のFORTRAN90/95などは、C言語やPL/Iのような機能もあります。それと、Windows、UNIX、メインフレーム系OSとで、共通に動くプログラムを作ろうとしたら、事務処理系ならCOBOLもありますが、それ以外のものならFORTRANで作る手もあるでしょう(コンパイラ自体の価格は、COBOLよりFORTRANの方が、はるか安いこともある)。昔のデータベースシステムで、FORTRANで作られていたものもあります。いまでは、G77など、フリーのFortranコンパイラもあります(WindowsやUNIXなどで使える)。COBOLもフリーなコンパイラがあります。

《注釈を頂きました》
これは計算が速いというより「数式が書きやすいアセンブラ」というのが本音だと思います。実際ほとんど機械語が透けて見えます。今も現役なのは何故かといえば、主にスパコンがこれで動いてるからです。普通のパソコンや汎用機程度でも1%ぐらいなら性能低下は許容範囲だと思うんですが、スパコンの1%は億単位で損失が出るわけで、本気の高級言語が入る余地は無いわけです。(そもそも数値計算それ自体には高度な言語が必要ないという事もあります)

PL/I(ピーエルワン)

はっきり言って知りません。記述式言語です。COBOLと似てるようですが、ソースコードを見たことないので詳細は不明。多分同じようなものでしょう。

《注釈を頂きました》
PL/Iは、レコードの記述などはCOBOLに似ていますが、これも言語全体としては、むしろC言語の方が近い、といえるところがあります。IBM系のメインフレームでは、まだ使われているようですが、C言語はおろか、COBOLに比べても、あまり普及はしていないですね。

《注釈を頂きました》
PL/Iは普及してないというより単に古いだけです。UNIXの前身に当たるMULTICSというシステムがあるんですが、これがPL/Iを使ってました。Cに似ているのはどちらもシステム記述用の言語だからでしょう。COBOLやFORTRANの生存圏と違い、OS分野は栄枯盛衰が激しいので淘汰されたのも無理はありません。

アセンブラ

私も学生時代にこの言語を習いましたが、機械語に近いせいか、ややとっつきにくい印象があります。カシオの古いポケコンでは動作するものもありました。情報処理試験では現在でも選択設問に残っています。情報処理試験問題の中で、一番簡単なのは、実はアセンブラ(CASL)だと学生時代の講師が話していました。私は勉強不足で理解するに到りませんでしたが、やってみる価値は大いにあるように感じます。

Java(ジャバ)

現在一番の売れ筋。今後も発展していく第四世代言語の柱です。ホームページの中に記述できる簡単なジャバスクリプトは、Javaとは別物だと言われています。ジャバサーブレットなど本格的にプログラムが組めるものやアプレットなどなど。特徴としてはオブジェクト指向型言語であること。書籍もホームページもゴマンとあります。私の会社でも新人教育は3年ぐらい前からジャバ一色。仕事の依頼も現在ジャバジャバジャバ…という状況。ただし、バージョンにより利用機能にバラつきがあります。オープン系のシステム構築によく利用されています。

Lisp(リスプ)

元々はスーパーコンピュータ用に開発された言語だったと記憶しています(違ってたらスミマセン)。歴史はCOBOLよりも古く1960年代初頭に開発された言語です。古い言語ですが、現時点でもLispを超える言語は存在しません。まず最大の利点としては、ソフトウェアを構築する場合、どの言語の追随も許さないほどに作成までの速度が早いという特徴があります。それはプログラム内にマクロ(プログラム)を直接記述できるからです。通常の言語ではコンパイラが構文を解析します。ところがLispの場合、プログラム内に直接プログラムを記述できるわけです。つまり構文セット自体を自分で作成することができる。このスゴさがわかるでしょうか?マクロを利用することで、他言語では到底できないような芸当をいとも簡単にやってのけます。ある有名人はこう言っています。「本当に真剣なハッカーはLispを学ぶことを熟慮すべきだ」と。

COBOL(コボル)

第三世代言語。事務処理と言えばコボル。プログラム(ソースコード)をいくら作ってもコンパイル(翻訳)しないと使えません。記述式言語で一括処理、ベタ打ち印字処理が得意です。このサイトはCOBOL入門サイトとして開設したので、色々言いましたが私にとってCOBOLという古臭い言語を日本中の人達に知ってほしいと結構本気で思ってます。Javaがバージョンアップを繰り返しているのは、まだまだ発展途上だから、という意見もあります。それに比べCOBOLは20年以上も前の言語が現役で稼動しているのです。それだけ安定しているということの証左ではないでしょうか?(ほとんどの企業が予算の関係で古いCOBOL資産を無理矢理運用しているだけなんですけどね)古い言語だと敬遠する前に、COBOLを学んでみましょうよ。その過程の中で、使いづらいなぁとかクセがあるなぁなんて感じてもらえば結構ですので。ちなみに関数系とGUIが、まだまだ弱いですね。生産性もかなり低いです。…えっと、褒める点がみつかりません。

最後に

言語は沢山存在しますし、利用用途もさまざまです。ただ、間違いなく私が言えることは、言語は何であれそれは機械に理解させるための選択肢でしかない、という事です。ある特定の言語でなければ絶対にプログラムが組めない、という事も(ほとんど)ないのです。作る際に、比較的簡単にテストが出来たり、プログラム作成に時間がかからない、というだけの話です。

もうひとつ大事なことがあります。さっきの発言を否定することになりますが、『プログラミング言語は、その力において差がある』ということも事実です。たとえば同じ動作をさせるためにCOBOLでは最低10本のプログラムが必要で作成に一ヶ月かかるとします。ところが別の言語であればプログラムは1本に収まり、作成には三日しかかからないといった場合もあるのです。生産性だけを比較してみても言語によってかなりの差が生じます。これには関数をはじめ様々な要素が絡んでいます。いうなれば、COBOLは図体ばかり無駄に大きい上、かゆい所に手は届きません。言語レベルでは完全に劣っています。

ですから、Cobolだけ覚えておけば安心だ、Javaさえ知っていれば大丈夫、なんて考えてはいけません。全ての言語を学べとは言いませんが言語による得意分野ぐらいは抑えておいたほうがいいでしょう。。

ちょっと汚い話題になりますが、言語をトイレに喩えてみましょう。A言語では手でお尻を拭いて毎回手を洗うとします。B言語ではトイレットペーパーで拭くだけでいいわけです。さらに強力なX言語になると紙も使わずウォシュレットでお尻を洗った上に乾燥まで自動でやってくれる、さらに席を立ったら勝手に流してくれる、こんな風に考えてもらえばいいでしょうか。

A言語しか知らない人は、手で拭くのが当たり前でウォシュレットが使えるトイレと聞いてもピンときません。B言語しか知らない人はA言語を使う人を見て笑います。アイツ、手で拭いてるよって。でもX言語の人からすればB言語の人も笑われているわけです。アイツ、いまどき紙で拭いてるよって。だから自分がA言語だけ習得して満足してはいけません。世にはもっと便利なトイレがあるのです。じゃあX言語だけ覚えればいいじゃないかって?それは違います。どんな場面においても必ずX言語が一番だとは限らないからです。簡易式のトイレにウォシュレットがついていますか?もし入ったトイレに紙がなかったらアナタはどうやってお尻を拭きますか?つまりそういうことです。それぞれの使い方をキチンと理解した上で、その場に一番適した言語を正しく使うこと。それが大事なのです。


<< Back   Index   Next >>  < Top >