プログラマyasuhoの隠れ家

某ソフトウェア企業に勤務するおじさんプログラマyasuhoです

どのプログラミング言語を学ぶべきか


どのプログラミング言語を学ぶべきか、という質問に対する私の答えは、いろいろな言語を学べということになるかと思います。万能のプログラミング言語という物は存在しませんし、今後も出てくることはないでしょう。何の言語を習得するかではなく、いろいろな言語の持つ特性を見極め、目的に応じて言語を使い分けることができるように努力することが重要なのではないでしょうか。

どのプログラミング言語を学ぶべきか


プログラミングを始める時、どのプログラミング言語から学ぶべきか。また、今後のためには、どのような言語を習得すればよいのか。プログラマなら誰しも一度は悩むことではないでしょうか。


まずはどのような言語があるか、簡単に整理してみました。分類は自分で適当につけてみました。一般的な用語ではありませんので、あしからず。

プログラミング言語の種類

Native言語系


コンパイルによって機械語に変換してから実行するタイプ。C/C++アセンブラ言語がこれに当たります。


実行速度は一番早く、マシンの性能を最大限に引き出すことができます。その半面、OSやシステムの保護を受けにくく、簡単にクラッシュしたり、メモリ破壊やリークといった難しい問題を含んでいます。また、実行手順の煩雑さや、油断すると簡単にクラッシュすることから、いろいろと試してみる用途には向きません。


ある程度の速度を要求される部分や、メモリなどの資源の制約が厳しいコンポーネントなどを記述するのに適しています。

中間言語


直接機械語にするのではなく、コンピュータが理解しやすい中間言語に変換してから実行するタイプです。C#VB,Javaなどがこれに相当します。


実行速度はNative言語には劣りますが、システムの保護を受けやすいので、あまり派手なクラッシュには至らない場合が多いです。ガベージ処理など面倒な部分を処理系に任せてしまえるのも魅力の一つです。Native言語より気軽に試してみることが出来ます。


また、あまりマシンに依存しないので、実行環境さえあれば他のプラットフォームへの移植もやりやすいことも特徴の一つといえるでしょう。

Script言語系


変換と言う過程の必要がない、直接実行が可能な言語です。PerlJavaScriptなどがこれに相当します。


実行速度は最も遅いですが、機能追加や修正を柔軟に行うことが可能です。また、実行結果がすぐに得られるため、いろいろと試してみる時には最適の言語といえるでしょう。


ファイルやデータベース・ネットワークなどの各種リソースに頻繁にアクセスしたり、処理を行うのにも適しています。

言語を取り巻く環境


コンピュータが世の中に現れてから今日まで、実に様々なプログラミング言語が考案されてきました。そのほとんどはすでに使われなくなったり、一部のシステムで使われているだけだったりします。現在まで長く使われているのは、C/C++言語ぐらいなものでしょうか。


我々が日常使用している言語と違ってコンピュータ言語が様々に変化しているのは、コンピュータそのものの歴史がまだ浅いのと、システムに応じて変化してきたからだと思います。ソフトウェア開発手法はある程度確立されている部分はあるものの、言語の多くはまだまだ改良が続けられています。新しいシステムやOSに合わせて新しい言語が編み出されることも珍しいことではないのです。


そういう状況ですので、今後主流になると予想される言語を選んで習得するというのは難しいと思います。今主流でも、それが長く使われることはあまりありません。そういう意識はなくても、プログラミングを学ぶために何か選んで学習を始めても、その言語を極めた頃は、すでに使うための環境がなくなっているかもしれないのです。


ただ、何かの言語を学んだ経験がムダになるということはありません。プログラミング言語に多くの種類があるとは言っても、アルゴリズムやデータ処理など基本部分は同じです。新しい言語を学ぶ時も、その経験は必ず役に立ちます。

多くの言語を学ぼう


どのプログラミング言語を学ぶべきか、という質問に対する私の答えは、いろいろな言語を学べということになるかと思います。


プログラミング言語にはそれが登場した目的とコンセプトがあります。既存の言語では達成できない、あるいは不便であると感じた時、新しい言語は考案されるのです。そして、その問題を克服するための目的が、言語の得意分野ということになります。


コンピュータが動作する環境やシステムは、言語以上に多くのものがあります。利用できる言語もいくつか選ぶことができるシステムが多いです。多くの言語を学ぶことで、ある機能を実現するためにどの言語が適切であるか、判断材料を増やすことができます。


万能のプログラミング言語という物は存在しませんし、今後も出てくることはないと思います。何の言語を習得するかではなく、いろいろな言語の持つ特性を見極め、目的に応じて言語を使い分けることができるように努力することが重要なのではないでしょうか。