プログラミング言語の種類と、それを学ぶメリットについて情報をまとめています。
以下の順序で説明していきます。
プログラミング言語の人気度を計測する有名な3つの指標について説明します。
各プログラミング言語の詳細な説明の前に、プログラミング言語の種類・分類について説明します。
メジャーなプログラミング言語から順に、マイナーなプログラミング言語まで、その特徴と、学習することで活躍できる分野などについて説明していきます。
まず、3つの有名な指標で各プログラミング言語の順位を把握しましょう。
プログラミング言語の人気度の指標は以下の3つが参考になります。
多くの企業で参照されている有名な指標の一つです。
「熟練エンジニア」「学習コース」「サードパーティベンダー」の数、Web検索結果のカウント数などに基づいて評価されています。
GitHubのソースコードと Stack Overflow の質問データからプログラミング言語を評価した指標です。
米電気電子技術者協会(IEEE)のメンバーを対象にした調査に基づいて各プログラミング言語を評価した指標です。
また、Google検索・Google トレンド・Twitter・GitHub・StackOverflow・Reddit・Hacker News・CareerBuilder・Dice・IEEE Xplore Digital Library など複数のデータソースを参考に評価されています。
プログラミング言語には、静的型付け言語と動的型付け言語の2種類に分けられます。
静的型付け言語は、ルールが厳密で習得難易度が高く、実行速度が高速な傾向があります。
動的型付け言語は、曖昧なコードの書き方が許容され、習得難易度が低めで書きやすく、実行速度は比較的遅い特徴があります。
どちらが言語的に優れているという話ではなく、それぞれ利用場面に特徴があります。
静的型付け言語: 高速な処理が必要な場面や、大規模プログラムを安全に開発する場面で使われやすい
動的型付け言語: 処理速度に厳しい制約がない場面や、開発効率を優先する場面で使われやすい
自分が作りたいものや目指す業界に合った言語を優先的に習得するために、 各言語の特徴を把握しておくと良いでしょう。
Pythonは1991年に登場した動的型付け言語です。
Webアプリケーション開発、機械学習、データサイエンス、Raspberry Piを使用したIoTアプリケーション開発などの場面で利用されます。
特に機械学習の分野ではとても広く普及しています。
学習コストが低く、読みやすく、かつ、書きやすいプログラミング言語です。
機械学習の発展とともに活用場面が一気に拡大しています。
JavaScriptは、1995年に登場した動的型付け言語です。
JavaScriptは、Webブラウザ上で実行できる唯一のプログラミング言語であることから、Webアプリの画面側(フロントエンド)の開発において必須の言語となっています。
近年では、JavaScriptをWebブラウザ上だけでなくサーバー上でも実行するための環境(Node.js)が登場したことで、 Webアプリのフロントエンドのみならず、サーバーサイド開発・デスクトップアプリ開発・モバイルアプリ開発など幅広い領域で利用されるようになりました。
学習の難易度はやや高いですが、Webアプリケーション開発においてはほぼ必須で学ぶべき言語の一つです。
TypeScriptは、JavaScriptを拡張した言語であり、2012年に登場した静的型付け言語です。
TypeScriptは、JavaScriptで大規模なアプリケーション開発を行う上での弱点を克服するために、JavaScriptに静的型付けなどの複数の機能拡張が実装されています。JavaScriptとは完全に互換性があり、JavaScriptと同義として扱われることもあります。
基本的にJavaScriptをより便利にした言語なので、近年では一般的なWebアプリケーション開発においてもJavaScriptで開発していた部分をTypeScriptに置き換える形で取り入れられることが増えています。
Javaは、1995年に登場した静的型付け言語です。
マルチプラットフォームな汎用言語で、幅広い分野で利用されています。
Javaを学習すると、WebアプリケーションやAndroidアプリが作れるようになります。
また、組み込みソフトウェアやPCアプリも作成可能です。
作れる物の種類は多いですが、実際の現場では大規模な業務用アプリケーションの開発に使われていることが多いです。
Javaは大人数で大きなアプリケーションを構築する場面に適しており、個人開発や小規模なプログラム開発においては冗長な印象です。
また、Androidアプリは後述するJava互換のKotlinという言語で開発する事例が増えています。
Kotlinは、2011年に登場した静的型付け言語です。
Javaを拡張した言語で、Javaとの互換性があります。 Javaよりも簡潔に書けることを目指して作られており、便利な機能が複数実装されています。
2019年に、Google社が Kotlin をAndroidアプリ開発の推奨言語に指定したこともあり、 Androidアプリ開発の現場での利用が増加しています。
Scalaは、2003年に登場した静的型付け言語です。
Javaを拡張した言語で、Javaとの互換性があります。 オブジェクト指向言語と関数型言語の特徴を統合した言語で、スケーラブルな汎用言語を目指して開発されています。 学習コストが高く、難しいプログラミング言語です。 採用求人では年収が他のプログラミング言語より高くなりやすいです。
大量のアクセスをさばくWebサーバーのバックエンドで利用されるケースが多いです。 ただ、近年ではそのポジションをGo言語に奪われることがあります。
Objective-Cは、1984年に登場した静的型付け言語で、C言語を拡張した上位互換言語です。
Apple社の macOS と iOS 上で動作するソフトウェアの開発に利用されます。
構文にクセがあり、他のプログラミング言語を学んできた人にとっても一定の学習コストがあります。
Apple社が開発した後発のプログラミング言語 Swift への置き換えが進んでいます。
Swiftは、2014年に登場した静的型付け言語です。Apple社がサポートしています。
Objective-C より安全にコーディングできるような言語仕様となっており、近年のiOSアプリ開発では習得が必須のプログラミング言語となっています。
Dartは、2011年に登場した静的型付け言語です。Google社がサポートしています。
当初はJavaScriptの置き換えを目指して開発されていました。 しかし、他のブラウザ開発企業がその方針に追従しなかったことと、TypeScriptの登場によってJavaScriptの弱点が克服されたこともあって、JavaScriptの代替は断念されました。
その後、Dartの話題性は一旦低まりましたが、2017年にクロスプラットフォームアプリケーション開発のフレームワークである Flutter の開発言語としてDartが採用され、再び人気を取り戻しました。
FlutterはひとつのコードでiOSとAndroidの両方のアプリを開発することができます。
Flutter と Dartを学習することで、スマホアプリ開発を低い工数で実現できます。
C#は2000年に登場した静的型付け言語です。Microsoft社がサポートしている言語です。
C++と関連がありそうな名前ですが、C言語およびC++との互換性は無く、利用される場面も異なります。
C#が主に活躍している分野は、Unityです。
Unityとは、2Dや3Dゲームの制作、VR・AR・MRコンテンツの制作ができる開発環境です。
メタバースやVRが流行していく中で活用場面が一気に広がりつつあります。
ゲーム開発における Android と iOS のクロスプラットフォーム開発でも利用されることが多いです。
C言語は、1972年に開発された静的型付け言語です。
処理速度が高速で、macOSやLinuxなどのOSの開発や、家電製品や産業機器(例えば冷蔵庫やカーナビなど)に組み込まれたソフトウェアの開発に使用されます。
アプリケーションを実行するためのプラットフォームとしてのシステムソフトウェアを開発するための、システムプログラミングでよく使用されます。
C++は、C言語を拡張した言語であり、1983年に登場した静的型付け言語です。
C言語との互換性があり、C言語で作られたプログラムはC++でも実行できます。
C++は、C言語にオブジェクト指向や例外処理が取り入れられており、より複雑なプログラムを構築できるようになっています。
利用される場面は、C言語と同様にシステムプログラミングの分野であったり、音声や動画に関するプログラムなどの処理速度制限が厳しい分野における高速なアプリケーション開発のために用いられます。
C++はシステムプログラミングなど高速処理が必要な分野で十分普及しています。
Goは、2009年に登場した静的型付け言語です。Google社がサポートしています。
静的型付け言語でありながら動的型付け言語のようなプログラミングの容易性をもつことや、 軽量スレッドによる並列処理が可能であることなどの特徴をもちます。
大量のアクセスをさばくWebサーバーのバックエンド技術として利用されることが多いです。 大企業の有名サービスのサーバーサイド開発を担当したい人は学んでおくべきプログラミング言語です。
また、開発用ツールの開発にも利用されています。 DockerやVagrant、JavaScriptのビルドツールであるesbuildなど、有名なプロジェクトの開発にも利用されている実績があります。
Rustは、2010年に登場した静的型付け言語です。
C++の置き換えを目指して開発されており、C++と同等の処理速度を誇ります。 C++よりも安全でバグのないプログラムを開発しやすいように、様々な機能が実装されています。
既に海外大手IT企業でもRustが採用される事例が出始めていますが、普及度はまだマイナーな状態です。
学習コストがとても高いですが、すべてのプログラミングにおいて有益な概念を学ぶことができ、学ぶ価値のある言語といえます。
また、Webブラウザ上での高速処理を実現するためのWebAssemblyという技術があり、WebAssembly向けアプリケーションの開発言語としてRustが採用されるケースが多いです。
PHPは、1995年に登場した動的型付け言語です。
WebページのHTMLを動的に生成する目的で開発された言語であり、Webサイトのサーバーサイド言語として広く普及しました。
PHPは全世界のWebサイトの約80%で使用されており、サーバーサイド言語として確固たる地位を築いてます。
全ウェブサイトの40%で稼働しているCMSのWordPressも、PHPでできています。 Webサイトの運営に興味のある人であれば、PHPを学ぶことでWordPressのテーマやプラグインを開発可能になります。
WordPressは現在でもWeb広告業界で広く扱われており、広告LPサイトや企業ホームページの構築で使用されます。 このことから、小規模なWeb開発案件ではPHPが使われていることが多いです。 Web広告業界においてはほぼ必須で習得しておくべき言語と言えます。
PHPは長らくWebアプリケーションフレームワークの種類が分散していましたが、近年ではLaravelというフレームワークが支配的な状況であり、PHPを使ったWebアプリケーション開発も盛んです。
また、PHPの言語構文は、よくRubyの書き心地の良さと比較され、プログラマーから嫌われている傾向がありました。 しかし、他のプログラミング言語の便利な機能を取り入れながらPHPのバージョンアップは継続されており、以前より快適な言語に進化してきています。
Rubyは、1995年に登場した動的型付け言語です。
2004年に登場した有名なWebフレームワーク「Ruby on Rails」の影響で、Web開発において2006年頃に普及しました。
純粋なオブジェクト指向を取り入れた言語で、書きやすさが特徴的です。反面、書き手によって様々な書き方ができてしまうことから、他人が書いたRubyのコードを読むのに苦労する場合があります。
Rubyの言語仕様はストレスなくプログラミングを楽しめることが重視されており、その設計思想により他の言語と差別化されています。
有名スタートアップ企業で Ruby on Railsが採用されたケースが複数あり、現在もそのコードが保守されている職場は多数存在します。
ChefやVagrantなどインフラ関連ツールもRubyで開発された実績があります。