見出し画像

当世プログララミング入門言語事情

最初に書いておくと徒然に書いただけで、結論はありません。

昔BASIC、PASCAL、今は…何?

時は1976年。日本初のマイコンキットTK-80が販売された当時はまだBASICはなく、TK-80BSを経て、SHARPのMZ-80シリーズやNEC PC-8000シリーズが発売されるとBASICが搭載されていたため、マイコン(当時はパソコンではなくマイクロコンピュータとmyコンピュータをかけてマイコンだった)と言えばBASICであり、必然的にプログラミングもBASIC言語で学ぶことになりました。

もう少しアカデミックになると、Pascalで基礎を学ぶのが当たり前とされた時代がありました。今は無料の開発環境が色々提供されていますが、当時のプログラミング言語環境は有料かつ高価。個人が買うのはちょっと勇気が必要でしたが、そこに現れたのがTurbo Pascal。個人でも手を出しやすい価格帯で、性能もそこそこよかったために瞬く間にBASICを卒業したら(Turbo)Pascalという風潮が生まれました。

その後、Turbo Cが発売されて、個人ベースでは瞬く間に主流になります。その後、Turbo C++となり、Borland C++となり、一時はパソコン用C/C++言語の主流になったのですが、後発のMicrosoft Cが同様にC/C++、そしてVisual C++となるに連れて、いつの間にか消えていってしまいました。

もちろん、他の言語から入る人もたくさんいましたが、なんとなくパソコンベースではBASIC,Pascal,C/C++というあたりが入門言語の三巨頭だったかと思います。これがUNIX系になるとGNU C/C++(gcc)が絶対王者でした。

教育用言語と呼ばれたPascal

そんな歴史背景は置いておいたとしても、Pascalは当初からプログラミング言語教育を意識して作られた言語ですので、これを最初に学ぶという流れがありました。

Pascal(パスカル)は、1970年に発表されたプログラミング言語。ニクラウス・ヴィルトにより構造化プログラミングとして設計・デザインされた。名称は、ブレーズ・パスカルにちなむ。
ALGOL、ALGOL Wをベースとし、簡素だがよく整った言語仕様(構文と意味)を持つ。プログラミング教育を意識しており、「判読性」を重視している反面、「最適化」を犠牲にしていると批判もされた。 言語的には、自身のコンパイラを自身で書けるといった、言語処理系のブートストラップを備え、多くの実用プログラム例を持っている。

Wikipediaの冒頭部分を引用しましたが、教育用というイメージが付き纏い、あまり実用アプリを書くことは少なかったように思います。そのイメージを打ち砕いたのがTurbo Pascalだったのですが、その会社がTurbo Cを出したら、結局そっちに皆流れてしまったという。
その後、Module-2/3とかObject Pascalなんてものも出ましたが、なんとなくPascalのイメージが付き纏ったためかC/C++系に比べると地味なイメージです。

そんなわけで、今、プログラミングを学ぶのにPascalをまず学びます、という人はあまりいないような気がします。

初心者向け汎用言語BASIC

ある世代より前の人は必然的にBASICが最初のプログラミング言語という人が多いです。基本という単語ですが、それは「beginners' all-purpose symbolic instruction code」の頭文字を並べたものだったりして、すごく大袈裟な名前だったりします。多分、この正式名称を言える人は少なくなったのでは?

かって一世を風靡したN-BASICをはじめとしたMicrosoft BASICや、その流れを汲むVisual Basic、Visual Basic .NET等、かなりの期間入門から実用アプリまでカバーしていた時期がありましたが、流石に今は新規での採用はなかなか少ないかと思います。かってのシステムがまだまだあるので、使われているところはいまだに多いとは思います。

ただ、これも今からプログラミング学習に積極的に使うかというと微妙です。上述の通り、まだまだ残っているので、食いっぱぐれがしばらくはないという意味では狙い目とも言えますけど。どちらかと言うとExcelマクロやVBScriptの方が手軽でわかりやすいかもしれません。

JavaScriptは?

WindowsだとJScriptという形でなんとなく使えるし、Node.jsとかあるのでどうでしょう。ただ、過去の経緯からしてちょっとぐちゃぐちゃな感じがしてしいます。

あと、自分はNode.jsについて勘違いしていました。どうしても当初のきっかけである非同期イベントドリブンのライブラリという発想から抜け出せないのですが、以下によるとそういうところから抜け出して一つのサーバ上で動かす言語という位置付けのようです。

ただ、ここにも色々とJavaScriptやNode.jsの抱える学ぶ上での問題点があげられており、最初に学ぶのはこれとは言い難い感じがします。とは言え、ちゃんとしたプログラミング言語をやるなら、PythonよりはES2015以降のJavaScriptを、それに準拠した資料を参照して学ぶのが1番のように思います。

今は…やっぱりPython?

過去を辿ってみましたが、さて当世のプログラミング言語の入門はどこから入るのが良いでしょう?もちろん、やることがはっきりしていて、そのためにはこの言語が良いと言うのがあれば、そこから入るのがいいかと思います。
しかし、漠然とプログラミングを学びたいとか、例えばはっきりしているからと言っていきなりRustとか言っても敷居が高そうだし、もうちょっと初心者的な言語はないのか、となるように思います。

そうなると、最近この入門書がすごいと話題になったPythonに落ち着いてしまうのでしょうか。

どうもPythonは初期のBASICの香りがしてきて、これを最初の言語とすることに抵抗を感じてしまいます。自分の最初の言語はN88-BASICなので、あまり大きなこと言えないですが、逆にその経験があるので言えることもあります。これに慣れすぎちゃうと他の言語が使いにくくなるんじゃないかと。Pascalが教育用言語としてもてはやされたのは変な癖が少なく、他の言語に移行しやすいと言う面もありましたが、Pythonはかなり癖が強いので。パクチーくらい?慣れてる人は何も感じないでしょうが、ダメな人はダメというあれ。

でもまあ、Pythonくらいしか思いつかないのも確かで、割り切れない想いです。まあ、単に自分がPython嫌いなだけなんですが。そのPythonもVer2系とVer3系で一部後方互換性がないみたいで、Ver3環境でVer2ベースのサンプルを試そうとしたらエラーになったなんてことがありました。

まとめ(のようなもの)

そういうかつてPascalとかBasicが負っていた役割を果たす言語がなくなったしまったが故に、未だに「この言語をやっとけば問題ないという言語はなんですか」、「最初に学ぶ言語は何がいいですか」みたいな質問が絶えないのでしょうか。

そういう意味では、やはりCとかPascalとかBasicとかの比較的シンプルなものから始めて、その大変さを知った上でモダンな言語に取り組む方が良いように感じてしまいます。でないと、必要性もわからずにたくさんある機能を全て覚えようとして自滅するパターンが増えそうです。

拙い記事でございますが、サポートしてもよいよという方はよろしくお願いします。著者のやる気アップにつながります。