最初に学ぶプログラミング言語の選び方

近年、プログラミングの人気が高まっています。

仕事の効率化、教養のため、あるいは本業のエンジニアになりたいなど理由は様々かと思います。

私もエンジニアとして「どんな言語を学んだらいいのか」と質問されることが増えてきました。本記事では私なりの考えをまとめます。

対象としてはこれからプログラミングを始めたい方、あるいはキャリアをスタートしたばかりで、これから技術を広げていこうとする方です。いずれにせよ初級者が対象の内容となります。

やりたいことが決まっているなら、最適な言語を選ぼう

結論としては、作りたいソフトウェアやりたいこと(業務の効率化など)が決まっているなら、それに適した言語を選ぶべきです。

スマートフォンのアプリケーションを作りたいならiOSならSwift、AndroidならKotlinでしょうし、話題のAI分野をやりたいのであればやはりPythonが第一選択肢になると思います。

目的に対してどんな言語が第一選択肢になるかは調べればすぐに分かるはずですが、基本的には現在最も人気があるもの、人気が二分しているような場合にはより新しいものを選ぶと良いと思います。

初学者にとって情報量というのはとても大切で、あえてマイナーな言語を選ぶメリットはほとんどありません。プログラミングでは言語の文法を学ぶ前に最初の環境構築でつまづく人が多いとされますが、人気の言語であればそのあたりはたくさん情報がありますし、自動で環境を作るツールなども充実していることが多いです。特に新しい環境はそのあたりが非常にスマートになっていることが多く、素早く学習を始めることができます。

業務をしているとどうしてもマイナーで古い言語(あるいは環境)を使わざるを得ないことがありますが、やはりそういったプロジェクトは様々な問題に直面することが多いです。

そういったことへの対処も大事なスキルではあるのですが、まずはプログラミングの楽しさを知るためにも、学習における余計なノイズは無いに越したことはありません。

プログラミングは向き不向きがはっきりしている分野だと思います。楽しい人はとことん楽しめますが、苦痛すら覚えるという人も結構多かったりします。でもそれはやってみないと分かりません。

可能であれば実際に作りたいものを作るというモチベーションを元に、楽しみながら学習できると良いと思います。

仕事を見据えるなら求人数も考慮

本業のエンジニアを目指す人も最近増えてきました。そういう場合は求人数なども参考に学ぶ言語を選ぶのもありだと思います。

エンジニアに強い求人サイトでは言語やフレームワーク、OSなどといった技術領域別で求人検索をすることができるサービスもあります。

基本的に人気のある言語は求人数も多く就職に繋がりやすいと言えますが、同時に競争も激しいため、マイナーな言語が就職に不利とまでは言えません。

ただ、コンピュータ業界の技術の推移は非常に早いので、マイナーな言語はいずれ仕事が無くなってしまう可能性も大いにあるため「ニッチな需要を目指す」という目的であえてマイナーな言語を学ぶのはあまりオススメできません。

古い言語でも長い間使われ続け求人が出てくるような言語もあれば、全く聞かなくなったような言語もあります。技術の流れを判断することは難しいので、基本的には人気が高まっている言語だったり、十分実績のある言語を選ぶのが良いと思います。

学習目的で選ぶ場合

番外編ですが、コンピュータサイエンスをしっかり学びたいという場合には少し趣旨が変わります。

情報系の学生さんだったり、基本・応用情報技術者試験などの資格を取るために基礎を勉強したい方、単純に現代のコンピュータがどう動いているかといったようなことに興味がある方に向けては、個人的にC++とPythonは学ぶ価値の高い言語だと思っています。(それぞれ目的は異なります)

C++

C++は今となっては古くなった印象は拭えませんが、現代の言語では隠されがちなコンピュータの動く原理、具体的にはメモリの管理方法などがダイレクトに見える言語です。ベースとなったC言語ではメモリを扱う仕組みであるポインタが初学者の1つの鬼門とされていますが、C++では加えて参照やムーブセマンティクスといった概念も登場します。

学習難易度は高い言語です。悪い意味で世界一難しい、と言われるようなこともあります。C言語を無理やり拡張してきたというような歴史もあって、難しいというより複雑な部分が多いです。

メモリ管理含め、現代の言語ではうまく隠されて意識しなくて良くなった様々な概念がむき出しで存在しており、私も初めて仕事で本格的に扱った際は苦労したのですが、それを学んだことで現代的な言語で加えられた様々な機能がどうして存在するのか、なぜ隠されるようになったのか、といったことを学ぶことができました。

現代的な言語でもそれらは隠されていたり、より高度な概念になっただけであり、コンピュータの動く仕組みが変わったわけではないので、C++はコンピュータの仕組みを学ぶには良い言語です。

とは言ったもののC++は実用言語としてもまだまだ現役で、仕事にするということを考えても悪くない選択肢です。動作が高速なため競技プログラミングなどでも使われ、そういったことに挑戦したい人にとっても良い選択肢です。

Python

PythonはC++とは対極的に、分かりにくい部分をうまく隠蔽し、より便利に、人間の自然な言語に近い形でプログラミングすることができます。(高級とか、抽象度が高いというような表現をします)

ライブラリが豊富で、かなり複雑なことがほとんどコーディング無しに出来てしまったりします。

「こういうツールを作ってみよう」という時にPythonであれば楽に、場合によってはC++などと比べ10分の1ぐらいの時間で実装できてしまうこともあります。

現在ではAIに代表されるような非常に高度なことも簡単に試せるようになってきており、勉強の一環でいろいろなものを実装してみるのに向いている言語です。

Pythonはコンピュータの動く仕組みのような、機械寄りの話(低レイヤー、低級などと表現します)ではなく、より高度で現代的なアルゴリズムや数学的な問題を簡単に実装し、試すことに向いた言語です。

Pythonも決して新しい言語というわけではありませんが、AIはもちろん業務効率化のためのツールやWeb系開発などでも現役で使われており、学習用途ということを抜きにしても十分使える言語です。

最後に

いくつか言語の具体例は挙げましたが、基本的には皆さん自身の「やりたいこと」を基準に選ぶのが最善だと考えています。プログラミングで実現したいこと、やってみたい仕事をイメージしながら選ぶのが良いと思います。

プログラミングを続けていけば自然と新しい言語に触れる機会はあると思います。

最初に学ぶ言語は入口に過ぎません。プログラミングの楽しさに目覚めれば、どんどん新しい技術を学びたくなってくるはずなので、気楽に始めて自分の興味のある領域を探していけばよいのだと思います。

皆様の参考に少しでもなれば幸いです。

コメント

タイトルとURLをコピーしました