初心者「どの言語から学ぶといいですか?」
経験者の多くは「やりたいことによる」と答えるでしょう。
でも、初心者はそもそも何ができるかわからないから聞いているんですよね。
というわけで、今日はメジャーな言語の特徴を挙げつつ紹介していきたいと思います。
言語は武器である
アクションゲームの醍醐味といえば、キャラメイクと並んで武器選択にあるでしょう。
大ぶりな両手剣で辺りを薙ぎ払うのか、スナイパーとして物陰から一人ずつ狙い撃つのか。
使用する武器によってジョブ(職業)が決まるゲームも多いです。
プログラミングにおいて使用する言語も同じで、その言語が使いやすいから使うのか、何か目的があってその言語を選ぶのかは人それぞれ。
プログラミングを始めたい人、他の言語の特徴も見てみたい人はぜひ下記のフローチャートをやってみてください。
あなたには何が向いている?
個人的にこれが一番わかりやすいと思っている、言語フローチャートと言語の特徴全部盛り!みたいな画像です。
元記事に飛んでも少し小さめの画像ですが、フローチャートの方はスマホで拡大するなどしてご覧ください。
ロードオブザリングに例えられた各言語の特徴は以下に文章化してお伝えします。
Python
難易度:★☆☆☆☆
人気度:★★★★☆
例えるならエント(樹の守護者にして強力な賢者)。小さなホビット(プログラミング初心者)にプログラミングの概念を教える手助けをしてくれる。ウィザード(コンピュータサイエンティスト)の研究の手伝いをしてくれる。
初心者に最適なプログラミング言語として広く知られており、習得が最も容易。
また、人工知能などの科学技術・学術分野で広く用いられている一方で、Pythonの代表的なフレームワークであるDjangoをつかってWebサイトを構築することができる。
私が主に使っているPythonはかなりの高評価でした。入門言語としての顔をもつ一方で、ライブラリの豊富さを活かしてWeb開発から科学計算まで行えるのが魅力ですね。
最近は『人気プログラミング言語ランキング』として検索すると、どのランキングでも高い順位に入っています。
できることが幅広い上に習得難易度は易しめ。コンパイラも必要ないので、初心者にオススメしたいNo.1言語です。
Java
難易度:★★★☆☆
人気度:★★★★★
例えるならガンダルフ(誰にでも平等に力を貸した魔法使い)。平和を求め、様々な人と協力して働く(どこででも動く)。
移植性の高さから、全てのOS、プラットフォームそしてデバイスにおいて非常に人気のある言語。世間で最も需要があり、最も報酬の高いプログラミング言語のひとつ。
スローガン:一度書けばどこででも動く
有名なJavaも高評価です。有名な理由は、OSやプラットフォームを選ばないところから使用者数が増えているところにありそうです。最も求人数が多く、給料も高めというところが魅力ですね。
最近は他の新興言語にやや押されがちですが、それでも人気プログラミング言語には毎年上位に入ってきます。
C
難易度:★★★☆☆
人気度:★★★★★
例えるなら強力な指輪そのもの。そのパワーは皆がよく知っている。皆がその力を手に入れたいと願っている。
数あるプログラミング言語の共通語であり、世界で最も古く、最も幅広く使われている言語である。組み込みシステムやハードウェアのプログラミング言語として一般的。C++に内包されている。
コンピュータサイエンス黎明期に現れた言語でありながら未だ第一線で使われているC言語。ハードウェア制御をするならマストで習得したいところです。
ポインタなど最初は理解が難しい概念も多くありますが、多くの言語の大元になっているので、最初の言語に選ばなくても一度触れておくことを個人的にオススメします。
C++
難易度:★★★★☆
人気度:★★★★★
例えるならサルマン(強大な魔術師)。皆が彼のことを善人だと思っているが、ひとたび彼のことを知れば、彼が求めているのは善行ではなく権力だということに気づくだろう。
C言語のより複雑なバージョンで、その分より多くの機能を備えている。ゲーム、産業用、パフォーマンス重視のアプリケーションの開発などに広く使用されている。C++を学ぶことは、車の製造から組み立て、運転の仕方すべてを学ぶようなものなので、指導してくれるメンターがいる場合にのみ学習することを推奨する。
競プロでは主力言語として重宝されているC++。非常に高速な動作が魅力ですが、習得言語は高めのようです。
JavaScript
難易度:★★☆☆☆
人気度:★★★★☆
例えるならホビット。読みやすく、やさしいがWebブラウザでは遅い。
「JavaとJavaScriptはCarとCarpetと同じくらい似ている」- Greg Hewgill
クライアント側のWebスクリプトとして最も一般的な言語。フロントエンドをやるならHTMLやCSSと同じくらい必ず触れるべき。サーバーサイド言語のnode.jsが伸びているため、今でも最も盛り上がっている言語のひとつ。
Javaと混同されがちなJavaScript。オーストラリアとオーストリアくらいエンジニア界ではネタにされています。
登場した当初はフロントエンド言語として扱われていたのですが、近年はサーバーサイドで動くプラットフォームが多く登場し、盛り上がっていますね。用途が幅広いので、身につけていて損はない言語です。
私はJSとはなかなか仲良くなれないのですが、いつか習得したいと思っています。
C
難易度:★★★☆☆
人気度:★★★★☆
例えるならエルフ。美しい言語だが、自分たちの王国に閉じこもるエルフと同じようにマイクロソフトのプラットフォームでしか動かない。
.NETフレームワークを使用したWebサイトやWindowsアプリケーションを作成する企業でよく使用されている。ASP.NETによるWebサイト構築にも利用可能なマイクロソフトが提供するWebフレームワーク。基本的な構文や一部の機能はJavaに似ており、Windowsプラットフォームのみをターゲットとする場合は、Javaの代わりにC#を学ぶとよい。
C#はあまり馴染みがない言語のように思えますが、Unityという開発プラットフォームでゲームを作る際に必要になってくる言語です。
しかし、用途が限られているため最初に学ぶ言語としてはあまりオススメできないかもしれません。
Ruby
難易度:★★☆☆☆
人気度:★★★☆☆
例えるなら人間。非常に感情豊かな言語で、Rubyの開発者の中には、自分たちが優れていて地球を支配しなければいけないと考えている人もいる。
RubyのWebフレームワークはRuby on Railsであり、かなり有名である。物事を完遂させることに重点を置いており、楽しくて生産的なコーディングのために設計されている。楽しい個人プロジェクト、スタートアップ、開発に最適。
出ました、Ruby。開発者がまつもとゆきひろ(Matz)さんという日本人であることでも有名なRubyですが、WebフレームワークであるRuby on Rails(RoR)人気に支えられているところがあるでしょう。比較的小規模の開発に向いている印象があります。
オブジェクト指向言語ですが習得難易度は易しめ。Web系の開発を目指すなら第一に選択しても良いかもしれません。
PHP
難易度:★★☆☆☆
人気度:★★★★☆
例えるならオーク。ルールなんてお構いなし、予測不可能。開発者にとってコードの管理は大きな頭痛の種だが、それでもまだ地球上で最も人気のあるWebスクリプト言語である。
小規模でシンプルなサイトを短時間で構築するのに適している。ほぼ全てのWebホスティングサービスで、低価格で利用できる。
PHP、まだまだ現役の言語ですがすごい言われようですね…。PHPのフレームワークといえばLaravelあたりが有名です。
メリットは導入が簡単、低コストというところですが、メンテナンスの面倒さから言えば大規模な開発には向いていないでしょう。
しかし、Webアプリケーションがサーバーサイドで何を行っているかを理解するのにはオススメです。インフラエンジニアの第一歩としてはいいかもしれません。
Objective-C(とSwift)
難易度:★★★☆☆
人気度:★★★☆☆
例えるならスマウグ(貪欲なドラゴン)。孤独でお金が大好き。
AppleがMac OS XとiOSで使用している主要言語。iOS開発者になりたい場合にのみ選ぼう。ただし、2014年に後継となる言語Swiftが発表されたため、一から習得を望む場合はSwiftを検討すべき。
最近はSwiftに置き換わりつつあるObjective-C。
SwiftはiOS開発に必須の言語ですが、逆に言えばiOS開発くらいしか用途がありません。
iPhone向けアプリをつくりたいという人は多いかもしれませんが、iOSアプリは自分だけが使うといった限定公開はできず、必ずApp Storeへ登録しなければいけません(しかも審査アリ)。
さらに開発者としての登録費用として、日本円で毎年1万円と少しかかります…(この点が”お金大好き”に繋がったのかも?)。
お試しや遊びで個人開発をするには少し敷居が高いと言わざるを得ません。
まとめ
人気や注目が集まっているプログラミング言語は、毎年RedMonkなどからランキングが発表されています。
毎年不動の人気を誇る言語も多いのですが、人気が急上昇している言語は10年先に主流になっていることが多いと言われており、毎年チェックして動向を把握してみると良いでしょう。
しかし、人気があるから誰にでもとっつきやすいというわけではありません!
用途が限られていたり、他の言語を習得済みで慣れている人に人気の場合もあります。
気になる言語がどういった特徴を持っているのかを調べること、そしてできれば、ふわっとでもいいのでこういうことができたらいいなと自分の中で考えを持っておくことが大事です。
PR
株式会社スマレジTechFarm事業部ではWebエンジニアを募集中です!
PythonやRustなど最新の言語の案件も多数あり、未経験含む様々なご経験をお持ちの方にご活躍いただける会社です。 こちらのフォームからエントリーしていただき、就職が決まれば10万円を進呈中です! カジュアル面談も随時受付中です。どうぞお気軽にエントリーください。 (「ゲネのブログを見た」とおっしゃっていただければ嬉しいです。)