魔術師をめざして

魔術師を目指して、相場・数学・プログラム言語を研究しています。

やさしいプログラミング言語

正直に言って、ぼくは古い人間だ。Basic、Pascal の世代なんだ。

ぼくが職業プログラマだった時代は 3年ほどで、アセンブラを使っていた。そして、ぼくが最近学んだ言語は、JavaSchemePythonHaskell なんだ。つい最近は、Go、D、Nim、Rust、Julia それに Common Lisp に興味を持っている。プログラミング言語というものは、それ自体が面白い。

まぁ、ぼくのようなプログラミング言語愛好者にとっては、言語が複雑でもそれほど苦にはならない。しかし、その昔の Pascal のようにシンプルなものはなくなってしまったと言ってよいだろう。残念なことだ。

それにネットを調べれば、出てくるのは Linux 使いの記事ばかり。世間で最も多いのは Windows だって言うのにね。それにね、日本人が作った Gauche という Scheme 処理系が人気なようだが、これって Windows(の DOS窓)に日本語が表示できない。ふざけんなって言いたいのはぼくだけだろうか。もちろん、不可能ってことじゃないだろう。

これについては D などもそうだ。D で、DOS窓に日本語を表示するためには Shift_JIS に変換すればいい。これって、コンパイラ言語だということで、どうにか理解できるけどね。でもね、Gauche のことだけど、Scheme を学びたい多くの学習者(それは Windows ということだ)に日本語は表示できません。Linux を前提としているから、あしからずってことなのだろうか。

最大多数の利用者(Windows 野郎ってこと)を馬鹿にすんな!
ってのは言い過ぎだろうか。

その点においては Go はよくできている。それに Go はシンプルで書きやすい。その言語の哲学が全体に染み渡っている。いまやこの業界全体に行き渡っている C++ 方式の書式にも反抗している。よくやってくれたものだと思う。しかしね、Go はコードが見やすいとは言えない。

Go は C++ に辟易した職業プログラマへの救いであり、シンプルだからやさしいってわけじゃないと思うんだ。プロフェッショナルな言語だと思う。だから、その意味で面白味がない。

ぼくは Go があれば大抵のことは書けそうだ。ありがたい存在だと思う。だけど、これからプログラミング言語を学びたいという人たちにはお勧めできない。

じゃ、いま、そういった人たちにお勧めできるプログラミング言語とはどれだろう。

まぁ、Python ならすべての点において妥当だろう。プログラミング言語をこれから学びたい人には Python(か Scheme)を勧めるのが間違いないだろう(Scheme はちょっと大変だろうか)。

とくに Python はやさしいことは簡単にできる。難しいことだって機能が揃っている。これを「学習シームレス」と呼ぶことにしよう。その使用者のレベルに応じて、そのやさしさ、難しさの顔を変えるということだ。

Go は、学習シームレスな言語とは言えないように思う。

Julia は、学習シームレスな言語だと言えると思う。Julia を知ってしまうと Python がくすんで見えてしまう。Julia の初級者向けの優れた日本語書籍が出れば、これほど覚えやすいプログラミング言語はないだろう。

それに現代のプログラミング言語だけあって、その全体はとても現代的だ。だが、初級者にそれを見せる必要はない。必要なときが来れば、そのときに覚えればよいだろう。

ぼくがもう一つ注目したのが、Nim なんだ。
Nim も学習シームレスなプログラミング言語だと思う。

現時点では(あるいはひょっとしたら将来的にも)品質的な不安があるようだ。しかし、ぼくがちょっとだけど使ってみた印象では、とても魅力的だ。

個人的に Nim のシンタックスに惹かれるという面もあるのだろう。

最後に Rust に触れよう。Rust はとてもじゃないけど学習シームレスとは言えないね。Rust はどんな人が使うのだろう。それは ScalaHaskell を使う人とかぶるのだろうか。いや、それよりは C++ 寄りなのだろう。Java に対する ScalaC++ に対する Rust という関係なのだろう。いずれにせよ、職業プログラマの世界だね。

ぼくは、プログラミング言語というものは、学習シームレスであるべきだと思うんだ。よく Java はやさしいといわれるけど、 Java は学習シームレスじゃない。なぜ、Python のようにできないんだろう。

さて、ぼくが推奨する学習シームレスなやさしいプログラミング言語を挙げてこんかいは終わりにしよう。

それは Python、Julia、Nim の 3つだけど、Nim は仕様と品質の安定、それに、DOS窓への日本語の表示が文字コードの変換なしに可能になることが条件。

Julia は現在、日本語の書籍がまだ出ていない。しかし、その実行速度はコンパイラ言語並だし、言語仕様も美しい。そして、学習シームレスな言語だ。知らない人がいたら、ぜひ、一度使ってみてもらいたい。

Julia は素晴らしいプログラミング言語だと思う。