初心者にお勧めの言語

これからプログラミングを勉強したいという人にお勧めの言語は何だろうか、ということをちょっと書いてみたいと思います。

一口にプログラミング言語と言ってもこれだけあります(これが全てではない)。
プログラミング言語の比較 - Wikipedia

まぁ結論としては JavaRubyHaskell に持って行きたいわけですが、その前にいろいろ比較してみたいと思います。
C は古くからある代表的な手続き型言語です。今でも「初心者にお勧め」と名前が挙がるほどの言語なのですが、C には初学者泣かせの難関が一つあります。ポインタです。このポインタという概念、ひとたび覚えてしまえば非常に強力なのですが、覚えるまでが一苦労で、たいていの初学者はここで挫折します。C++ は C を拡張し、オブジェクト指向を取り入れました。しかし C もおぼつかないのに C++ というのはさすがに無謀と言わざるを得ません。C にある程度通じていても、オブジェクト指向という新たな概念はやはり障壁になります。

そこら辺の事情からすると、Java は初学者にはもってこいです。もちろんオブジェクト指向という壁は存在しますが、C++ と比べると他に覚える要素が少ない分、そこまで厚いものではありません。また C や C++ と違って、厳密にメモリ管理する必要が無いので純粋にプログラミングに専念できるという意味でも初学者に優しいと言えます。歴史も長いので、その分だけ先人の知恵が蓄積されていて、学べば学ぶほど奥の深さを味わえます。

PerlPHP は Web の CGI に良く使われる言語ですが、上記三つの言語とはややお作法が異なるので、いきなりこれらから入るのはちょっと危険な香りがします。

Ruby は近年注目を集めている言語です。「初めての Ruby」の著者である Yugui 氏曰く「より良い Perl」という一面を持ちます。また同時に「動く疑似コード」でもあり、処理の内容が一目でわかりやすいという一面も持ちます。私の最近の一押しでもある Ruby on RailsRuby をベースとした Web アプリケーション開発のためのフレームワークであり、非常に良く設計されたフレームワークです。

Python は世界的に人気のある言語で、ハッカーの御用達とも言われる言語です。Python はこれはこれで面白いのですが、どちらかと言えば玄人が好みそうな言語と言えます。

関数型言語も長い歴史があります。近年注目されているのは Scala*1Haskell です。ScalaJava のノウハウが活かせるので、Java にある程度習熟した人には良いかと思います。しかし、前提知識のないところから関数型言語に触れてみたいのであれば断然 Haskell をお勧めします。強い静的型付けと強力な型推論、遅延評価や再代入の禁止など、すっきりしたコードを書けるという点では今のところ Haskell の右に出る言語はそうそうないと思います。

というわけで、JavaRubyHaskell から入れば、その他の類似言語に関してもまあつぶしがきくという点において、この三つのどれかから入ってみてはいかがでしょうか、というのが結論であります。

*1:厳密には Scala関数型言語の要素を取り入れたプログラミング言語、という位置づけなので、完全な関数型言語ではありません。