コードの勉強をはじめようと思ったら、まずどのプログラミング言語を習得するか決める必要があります。そしてその選択は、どのような技術を得たいのかと密接に関係しています。
言語にはそれぞれ特徴があって、習得が比較的容易なものやコミュニティが活発なもの、応用範囲の広いものなどさまざまです。
米 Lifehacker では、読者の意見に基づき5つの「学ぶのに最適な5つのプログラミング言語」をピックアップしてみました。
Java
オラクルの Java は、ウェブでもっとも歴史が古く、持続性があり、影響力の大きなプログラミング言語のひとつです(編注:Java を開発したサン・マイクロシステムズは2010年オラクルによって買収された。とはいえ Java はあくまで「Javaコミュニティのもの」というべきかもしれない)。ウェブ内外のアプリケーションや、あらゆるプラットフォーム、オペレーティングシステム、デバイスを見れば、その中心には Java があるはずです。高度な機能を持つクラスベースのオブジェクト指向言語であり、可能な限り多くのプラットフォーム上で正常に機能するよう設計されています。
そうした理由から、Java は世界でもっとも人気の高いプログラミング言語のひとつになっており、プログラミングの習得に興味がある人にとっては、学習する価値のきわめて大きな言語といえるでしょう。ただし、移植性や適用性には優れているものの、理解するのはなかなか大変で、効率的かつ効果的にプログラミングするのがとても難しいという欠点もあります。
Java は完璧なプログラミング言語ではありませんが、多くの学校や講座が、C や C++ の学習からスタートするのは、そうした初期の言語のシンタックスの多くが、Java でも使われているからです。
一方、最初に習うのに適した言語として Java を推薦している人は、Java を使うと自然とプログラマのような考え方をするようになると指摘しています。つまり、論理的かつ分析的思考力が身につき、コンピュータに情報をどう処理させればうまくいくのか、よく理解できるようになるというわけです。そうした基本となる中心的なコンセプトは、この先、ほかの言語や技術に移行する際にも役に立つはずです。
Ruby
Ruby は、動的なオープンソースのオブジェクト指向言語で、コンピュータ科学者のまつもとゆきひろ氏が1990年代に開発しました。広く使われているものとしてはもっとも新しい言語のひとつで、ここで紹介する言語のなかでは特に新しいといえるでしょう。
シンタックスが人間にとって読み書きしやすいように設計されていて、膨大な量の基本的なコマンドや特殊な「ボキャブラリー」を覚えなくても使い始めることができます。この言語自体はオブジェクト指向ですが、手続き型プログラミング、関数型プログラミング、命令型プログラミングにも対応しています。そうした特徴のおかげで、柔軟性のきわめて高い言語になっているのです。
Ruby は、比較的習得しやすい言語として定評があります。Ruby 公式サイトで提供されている所要時間20分の簡単なスタートガイド(英語)を読めば、ごく短い時間で基本的な知識を身につけることができます。Perl や Python といった言語のファンなら、いくつかの共通点を見いだせるでしょう。
最初に覚える言語としてRubyを推薦する人たちは、理解と習得が容易で、言語を読まなければならない場合にも簡単に読める点を称賛しています。また、大規模で活気と情熱にあふれる開発者コミュニティがあり、Rubyの普及に力を注いでいる点も高く評価されています。
Python
最初に学ぶべきプログラミング言語や、すぐに理解できる簡単な言語について議論する際に、必ず名前の挙がる言語が Python です。Python は80年代にグイド・ヴァンロッサム氏が開発した言語で、のちに、非営利の Python ソフトウェア財団に譲渡されました。現在は、この財団が Python の管理を担っています。
Python はオープンソースの言語で、商用アプリケーションに使う場合でも無料で使用が可能です。たいていはスクリプト言語と見なされており、実際そのように使用され、読みやすい機能コードを短い時間で量産することができます。
一方で Python は動的プログラミング言語でもあり、オブジェクト指向型プログラミング、手続き型プログラミング、関数型プログラミングなどにも対応しています。そうした柔軟性のおかげで、Python は今日もっとも広く使われている、高水準のプログラミングのひとつになっているのです。
Python は必ずしも基本が学べる言語ではありませんが、インデント、モジュラリティ、命名規則の重要性といった、いくつかの大切なことを教えてくれます。そうした知識は、ほかの言語を学んだり使ったりする際に役に立つはずです。ノミネーションスレッドで紹介しているこの「reddit」のスレッド(英語)を読めば、最初に学ぶ言語としての Python の長所と短所がよくわかります。
また、Python を推薦する人たちは、Python の開発者コミュニティが Python を教育用の言語として使うことにとても前向きであり、初心者がプログラミングを理解するのに役立つ数多くの学習用ツールやドキュメントを提供してくれている点をアピールしています。公式チュートリアルはわかりやすく有益で、実用的です。
CとC++
厳密にいえば、ノミネートされたのは C 言語で、C++ にはあまり票が集まらなかったのですが、C++ は C が自然に発展したものなので、とりあえず並べておきます。
C 及び C++(C を最先端アプリケーションに導入するための改良およびアップデートのセットとして開発されたのが始まり)の、豊かで複雑な歴史に深入りするのはやめ、ここでは、両者とも70年代と80年代はじめから存在していると紹介するだけにしておきましょう。
C のほうは、きわめて広く使われている汎用的な命令型プログラミング言語で、その後に生まれたほぼすべての言語に大きな影響を与えました。一方の C++ は、C をさらに進化させたもので、クラスなどのオブジェクト指向機能や、仮想関数、テンプレートなどが追加されています。
C++ も世界でもっとも人気のあるプログラミング言語のひとつとされており、ビデオゲームから生産性ソフトウェアまで幅広く使われています。C++ は C よりも習得するのがやや難しいのですが、もはや C から始める理由はないという意見も多くあります。その議論については、ここで白黒つけるつもりはありません。
C と C++ で重要なのは、コンピュータ科学とプログラミングの分野において、どちらもきわめて基本的な言語だという点です。C や C++ を身につければ、結局あとで使わなくなったとしても、得られるものがあるはずです。
どちらの言語にもそれぞれの長所と短所がありますが、C や C++ を学べば、コンピュータ科学とコンピュータプログラミングの始まりとルーツを知ることができます。C か C++ のどちらかを学ぶのは、まず車の組み立て方を覚えてから運転を覚えるようなものだと指摘する人も多いのです。C や C++ を最初に学ぶべき言語として推薦している人たちも、これらから始めれば、プログラミングをより深く理解することができると主張しています。ある推薦者が挙げたこの素晴らしい記事(英語)には、C や C++ が「良い」プログラマをいともたやすく「偉大な」プログラマに引き上げると書かれています。もっとも、プロのプログラマーを目ざしているのでなければ、その点は関係ないかもしれませんが、それでも考えてみる価値はあるでしょう。
C や C++ のさまざまなフレーバーやバリエーションは多くの人が推薦していて、Arduino マイクロプロセッサのプログラミングに使われている ANSI C や、ロボット工学専用の Robot C といった特殊なアプリケーションへの応用が可能です。また、C や C++ のような厄介な言語からはじめれば、そのほかの言語(例えば Java など)がさほど難しく感じなくなる、という意見も多く見られました。。
JavaScript
JavaScript(Java と混同しないでください)は、元 Netscape Communications、現 Mozilla Foundation のブレンダン・アイク氏が90年代に開発したスクリプト言語で、現在のウェブの基礎となった基本的技術のひとつです。JavaScript はブラウザの外にも存在していますが、主には、ウェブに接続するアプリケーションやサービスといった状況で使われています。
JavaScript そのものは動的な言語で、オブジェクト指向型プログラミング(JavaScript 自体がおおむねオブジェクト指向です)のほか、関数型プログラミングや命令型プログラミングに対応する柔軟性を備えています。シンタックスの多くは C から受け継がれています。どんな形であれ、ウェブに関係するプログラミングを志すなら、JavaScript を学ぶ必要があるでしょう。
さいわい、JavaScript は比較的覚えやすいですし、あなたのブラウザにもすでに使われているので、いろいろといじって試してみることができます。また、開発されたのはだいぶ前ですが、最近になって急速に人気が高まっています。
JavaScript を推薦する人たちは、JavaScript を身につければ、努力に見合うだけの大きな価値が得られると主張しています。JavaScript を使えば、すぐにウェブ用のアプリやサービスの開発を始められるからです──おそらく多くの人にとっては、それこそがプログラミングを学ぶ理由でしょう。
また、最初に JavaScript を習得しておけば、C や Java といったもっと複雑な言語もスムーズに覚えられるという意見もあります(ただし、 JavaScript と Java には、共通点はほとんどないので気をつけてください)。さらに、プロのプログラマを目ざしているのなら、JavaScript の需要は現在きわめて高くなっています。
Alan Henry(原文/訳:梅田智世/ガリレオ)
Title photo by Michael Himbeault.