コラム24.  :消えたライバル

C言語のライバル言語たち

現在主流の言語は、C#やJava言語のように、C言語をベースとした言語がほとんどですし、OSや組み込みなどの分野では、相変わらずC言語の優位はゆるぎません。かつてのようにC/C++はプログラミング言語の中心ではなくなりましたが、いまだに必要とされており、現役の言語です。

しかし、かつてはそんなC/C++言語にも、ライバルとなるようなプログラミング言語が存在しました。それが、BASIC言語とPASCAL言語です。ではいった、それらはどんな言語で、なぜC言語のように「生き残る」ことができなかったのでしょうか。

BASIC言語

まずは、一つ目のBASIC(ベーシック)言語から取り上げてみましょう。BASICとは、「Beginner's All-purpose Symbolic Instruction Code(初心者向け汎用記号命令コード)の略で、これに、「基本的な」という言葉である英単語basicをかけて、プログラミング言語の名前としたもので、初心者向けのプログラミング言語でした。

BASIC言語は、FORTRANの文法が基になっており、初心者向けのコンピュータ言語として、1970年代以降のコンピュータ(特にパソコン)で広く使われた言語です。まだまだコンピュータのCPUが8ビットが中心で、家庭用のパソコンのことを「マイコン」などと呼んでいた時代には、最も普及したプログラミング言語でした。現在はOfficeやWindowsなどを手掛けているマイクロソフト社が飛躍したのも、このパソコン用のBASIC言語を開発したことがきっかけでした。

BASICが衰退した理由

BASIC言語の全盛期は、1980年代で、世界中のメーカーが8ビットのコンピュータを発売すると、その付属品としてBASICインタープリタが内蔵され、初心者でも気軽にプログラミングができる環境が安価で提供されるようになりました。

しかし、それは同時にBASIC言語の限界でもあり、ハードのメーカー各社が独自の仕様のBASIC言語を開発し、相互の互換性がなかったことから、極めて移植性が低いうえに、インタープリター言語であることから本格的なアプリケーションを作成するには力不足であり、時代の変化とともに淘汰されていき、現在ではマイクロソフト社のVisualBasicなどがごく一部の領域でわずかに使用されている程度になりました。

PASCAL言語

そして、もう一つのライバルである、PASCAL(パスカル)は、1970年にスイスのチューリッヒ工科大学のニクラウス・ヴィルトが教育用プログラミング言語として開発されました。名前の由来は、世界で最初の機械式計算機を発明した哲学者であり、数学者でもあった、パスカルに由来します。

この言語は、C言語とどうように構造化言語であるとともに、創られたのも同じ1970年代ということもあり、文字通り、「C言語のライバル」とでも言うべき言語で、1980年~90年代にかけて、多いに普及し、「TURBO PASCAL」といったベストセラーのコンパイラが普及したり、Macintoshの初期のOSはPASCALで書かれていたり、と大変普及していました。

PASCALがC言語に負けた理由

とはいえ、今は各方面でPASCALと使っている、という話はほとんど聞かれなくなりました。理由はいろいろあるでしょうが、PASCALは教育用言語だったということもあり、C言語とは違い強力な標準化団体も存在せず、そのためプログラミング言語の主流が構造化言語からオブジェクト指向言語に移った時に、CからC++言語が生まれたように、その資産を受け継ぐ後継言語がなかったことが大きな要因でしょう。

Delphiなど比較的成功した言語もありましたが、あくまでも開発メーカーであるボーランド社のもの、という感じで、C/C++のように仕様が統一され、広く標準化して利用されなかったのが、その後の運命の分かれ道だったと言えるかもしれません。

C言語の将来は盤石か

とはいえ、C言語の将来が盤石か、というと必ずしもそうとは言えないかもしれません。C言語が現在でも用いられている原因の一つは、比較的生成するバイナリのサイズがほかの言語より少ないため、アセンブラに近いコードが生成できるという点にあるからです。

そのため、相変わらず組み込みプログラミングや、OS、プログラミング言語の開発に用いられていますが、将来的にこういったC言語の「強み」を持ちC言語よりもプログラミングが容易な言語が現れないとも限りません。

それに、C言語がわかるプログラマーも次第に高齢化し、徐々にではありますが、減少の一途をたどっています。もしかしたら将来、「昔、C言語という原始的なプログラミング言語があって…」などと、昔話で語られるような時代が来ないとも限りません。