プログラミング言語には、Wikipediaに掲載されているだけでも200を超える種類があります。しかし全てが利用されているわけではなく、開発や研究、学習など、それぞれの場面で人気のプログラミング言語というものがあります。
今回はこれからプログラミング言語の勉強を始めようとしているけどどの言語を選べばいいのか迷っているという方へ、よく使われているプログラミング言語20種類の特徴や主な用途などについて、プログラミング言語の人気・関心度ランキングとして名高い「TIOBE Index」の順位を添えてご紹介したいと思います。
目次
1.Java(ジャバ)
1.1 概要
公開:1995年
開発者:Sun Microsystems社
TIOBE Index for April 2018の順位:1位
1.2 主な用途
Webアプリケーション開発、Androidアプリ開発など
1.3 特徴
Javaとは今人気の「オブジェクト指向型」のプログラミング言語の代表格です。2000年代以降、言語人口や仕事の求人数において、それまで独壇場だったC言語を追い抜き今でも第一位を堅守しています。
構文の特徴はCやC++から多くを引き継いでいますが、C言語を学ぶ場合に最も難所であると言われている「ポインタ」の概念はなく、代わりに複数メンバーでの開発やメンテナンスのしやすさで人気の「オブジェクト指向」を採用しています。
さらにJavaには、仮想マシン(ランタイム)上で動作するという特徴があります。旧来のアプリケーションはWindowsやMacなどのOSごとにそれぞれ異なる機械語に翻訳(コンパイル)して動かしていたため、ちょっとでも合わないマシンでは動作しないという難点がありました。ところがこのJavaで作成されたアプリケーションには、無料のランタイムさえインストールしていればOSだけでなくスマートフォンやPCなどの壁も越えてどんな場所でも動作する「汎用性」という大きな利点があります。(これをマルチプラットフォームといいます)
その特性から、現在はWebを通じて動作するアプリケーションやAndroidスマートフォン用アプリの開発など、さまざまな場所で利用されています。無料で便利な開発環境が提供されており環境構築が簡単という点や、その人気さゆえ学習方法に選択肢が多い点など、比較的初心者向けの言語となっています。
2.C言語(シー)
2.1 概要
公開:1972年
開発者:ベル研究所
TIOBE Index for April 2018の順位:2位
2.2 主な用途
ソフトウェア開発、ゲーム開発など
2.3 特徴
C言語は、歴史あるプログラミング言語の代表格です。Javaの登場まではシェア第一位の言語でしたが、今でも大学などの教育現場ではアルゴリズムやメモリの概念の学習のためにC言語が利用されています。
C言語の正式名称は単に「C」一文字ですが、分かりやすくするよう日本ではC言語と呼ばれています。「C」という名前の由来は、1970年に開発されたB言語を改良したものであるため、その次という意味を込めてC言語と呼ばれるようになりました。なお「A」にあたる言語は、「アセンブリ言語」や「ALGOL」ではないかと言われています。
ポインタやメモリの管理など多くの人間がつまづく面を持つC言語の習得は、数あるプログラミング言語の中でもかなり難易度が高いと言われています。その代わり、まず基本のC言語さえきちんと習得してしまえば、その他の言語はすぐに理解できるようになるというメリットもあります。
PythonやRubyといったスクリプト系言語は、実は元はC言語で作られています。習得が難しいだけありC言語はスクリプト系言語やJavaとは比較にならないほどの高速実行が可能で、速度が重要な場面で利用されています。
3.C++(シープラスプラス)
3.1 概要
公開:1983年
開発者:ベル研究所
TIOBE Index for April 2018の順位:3位
3.2 主な用途
ソフトウェア開発など
3.3 特徴
C++とは、C言語の機能を拡張しJavaのようなオブジェクト指向を組み合わせて開発されたプログラミング言語です。正式な読み方は「シープラスプラス」ですが、日本では「シープラプラ」などと省略して呼ばれることもあります。
当初まず「クラス」の機能が追加されたため、「C with Classes」と名付けられました。その後様々な拡張機能を追加(プラス)していったため、最終的に「C++」となりました。
基本的にC言語を拡張した言語であるため、Cで書いたソースをC++でコンパイルするとそのまま動かすことも可能です。またCに比べて多くの機能が追加されていますが、速度はほとんど失われていないという利点もあります。
ただしC++もCと同じく、ポインタやメモリ管理は必要です。つまり習得が難しいCにさらに機能が追加された状態のため、初めての方はC言語を学んだ後に学ぶことがおすすめです。
4.C#(シーシャープ)
4.1 概要
公開:2000年
開発者:Microsoft社
TIOBE Index for April 2018の順位:5位
4.2 主な用途
Webアプリケーション開発など
4.3 特徴
C#とは、マイクロソフトがJavaに対抗して作ったと噂されるプログラミング言語です。今でもJavaと競い合うように新機能が追加されており、非常に完成されたプログラム開発言語となっています。
C#の開発にはDelphiというプログラミング言語の開発者であるAnders Hejlsbergを筆頭に、多くのDelphi開発陣が参加しました。そのためCやC++を拡張した言語ですが、Delphiに準じた構文があちこちで採用されています。
ここもJavaと同じく、どこでも動作する「マルチプラットフォーム」に対応しています。全体的にCよりもJavaに似ており、CよりもJava経験者の方の方がなじみやすい言語となっていますが、Cシリーズらしく実行速度は速めとなっています。
5.Objective-C(オブジェクティブ シー)
5.1 概要
公開:1983年
開発者:Stepstone社
TIOBE Index for April 2018の順位:18位
5.2 主な用途
iPhoneアプリ開発など
5.3 特徴
Objective-Cとは、こちらもC言語をベースにオブジェクト指向機能を追加した言語です。
Mac OS Xの公式開発言語であり、OSのユーザ登録をすれば無償でダウンロードすることができます。そのためApple社のMac OS XやiOS上で動作するアプリケーションの開発では、今でもメインで使用されています。特にSwiftが登場するまではiPhoneアプリの開発に不可欠な言語だったため、iPhoneの普及と共に人気が急上昇していました。
Cにオブジェクト指向を追加で載せたというイメージの言語なので、C言語と互換性の高い言語です。またC言語に近いため、高速であるという特徴も引き継いでいます。
6.Visual Basic(ヴィジュアルベーシック)
6.1 概要
公開:1991年
開発者:Microsoft社
TIOBE Index for April 2018の順位:13位
6.2 主な用途
業務システム開発など
6.3 特徴
Visual Basicとは、初心者用言語として1970年台からプログラミング教育などに用いられた「BASIC」から派生して開発された言語です。正式名称は「Microsoft Visual Basic」ですが、多くの場面で単に「Visual Basic」や「VB」と省略して呼ばれています。
「Visual」という名前の通り、あらかじめ用意されたボタンなどのパーツを画面上に並べていき、「このボタンをクリックしたらこの動作をする」というようにイベントを視覚的に作成していくことができます。ソースコードだけで全ての処理を記述する必要がある言語に比べて、古いですがグラフィカルな画面に慣れた世代にとても親しみやすい言語となっています。
またExcelなどに代表されるVBA(Visual Basic for Applications)などもあり、初心者にもおすすめの言語です。
7.Visual Basic .NET(ヴィジュアルベーシックドットネット)
7.1 概要
公開:2001年
開発者:Microsoft社
TIOBE Index for April 2018の順位:6位
7.2 主な用途
業務システム開発など
7.3 特徴
Visual Basic .NETとは.NET Frameworkに対応した、Visual Basicの後継にあたるプログラミング言語です。こちらも正式名称は「Microsoft Visual Basic .NET」ですが、「Visual Basic .NET」や「VB.NET」などの略称で呼ばれています。
(.NET Frameworkとは、主にWindowsに常備されているプログラムを開発・実行するための部品セットのことです。Windowsアプリケーションだけでなく、Webアプリケーションにも対応しています)
なおVisual Studio 2005以降、VB.NETであっても単に「Visual Basic」と表記されるようになりました。そのためバージョン6.0より後のVBは、実はVB.NETとなっています。
VB.NETは旧来のVBの機能に加えて.NET Framework上で動作するようになったほか、オブジェクト指向にも本格的に対応しました。そのため旧来のVBとの互換性は低めとなっているので、学ぶ際には注意が必要です。
8.Python(パイソン)
8.1 概要
公開:1991年
開発者:Pythonソフトウェア財団
TIOBE Index for April 2018の順位:4位
8.2 主な用途
人工知能開発、機械学習など
8.3 特徴
Pythonとは元はC言語から作られたプログラミング言語であり、コードをとても簡潔に記述できる「スクリプト言語」にあたります。
文法を必要最小限に抑える代わりに膨大な量の標準ライブラリ(共通の部品セット)が用意されており、非常に簡潔に、少ない行数でプログラミングすることができます。さらにマルチプラットフォームに対応、かつプログラミング初心者であっても習得がかなり容易などの理由から初心者向けの言語として高い人気を誇っていますが、Cなどの「コンパイラ言語」と比べると速度面で劣るというデメリットもあります。
近年の機械学習やDeep learningに対する関心の高まりにより、それらに向けたライブラリが豊富に用意されているPythonの可能性と注目度はさらに急上昇しています。習得の難易度が低く流行にも対応でき、一度C言語などの難しいコンパイラ言語に挑戦して挫折した方にもおすすめです。
9.Ruby(ルビー)
9.1 概要
公開:1995年
開発者:まつもとゆきひろ
TIOBE Index for April 2018の順位:10位
9.2 主な用途
動的Webサイト、Webサービス開発など
9.3 特徴
Rubyとは、国際規格に認証された初の国産プログラミング言語です。コードの読みやすさを最優先したオブジェクト指向型のスクリプト言語であり、クラス定義やガベージコレクション、マルチスレッド、例外処理などの豊富な機能に対応しています。開発の初期からPerl(パール)というスクリプト言語に代わる言語にしようと意識されており、6月の誕生石Pearl(パール)に対して、7月の誕生石Rubyと名づけられました。
特に最近では、オープンソースのWebアプリケーションフレームワーク(無料のWebアプリ開発用部品セットのようなもの)である「Ruby on Rails(RoR)」が様々な業務用開発現場で利用されています。このRoRには、他のフレームワークよりも簡単なコードでプログラミングできることを重視して設計されているという特徴があります。
また国産であることから、言語仕様に関する最新のお知らせやフォーラムが日本語で充実しているなど、日本人にとっては特にとっつきやすい言語となっています。
なおエンターブレインから発売されている家庭用RPG作成ツールである「RPGツクールXP」や「RPGツクールVX」には、専用にカスタマイズされたRubyの拡張言語である「RGSS」が搭載されており、RPGツクールユーザーの間でも人気を博しています。
10.Perl(パール)
10.1 概要
公開:1987年
開発者:Larry Wall(ラリー・ウォール)
TIOBE Index for April 2018の順位:16位
10.2 主な用途
動的Webサイト、Webサービス開発など
10.3 特徴
PerlとはPythonやRubyなどといった似た感じのスクリプト言語の中では最も古株であり、昔からC言語で書くほどでもないという場面に利用されてきたプログラミング言語です。長く利用されてきたことから、様々なサンプルコードやテキストが揃っているという利点があります。
PythonやRubyと比べて目立つ特徴もなく昔流行したものというイメージですが、Perlにはこれまでの歴史が生み出してきた資産が膨大にあり、業務内でメンテナンスや拡張が求められる機会が最も多いのは意外にこのPerlであるようです。
11.JavaScript(ジャバスクリプト)
11.1 概要
公開:1995年
開発者:Brendan Eich(ブレンダン・アイク)
TIOBE Index for April 2018の順位:8位
11.2 主な用途
動的Webサイト、Webサービス開発など
11.3 特徴
JavaScriptとはオブジェクト指向型のスクリプト言語であり、ウェブブラウザ上で動作するという特徴があります。主に動的なウェブサイトの構築など、ウェブサイトで高度なユーザインターフェースを実現する際に使用されています。Web系の業界で仕事をする場合には、避けては通れない言語となっています。
名前に「Java」とあるので混同されがちですが、Javaとは特に関係のない言語です。正確には、JavaScriptという名称はMozilla Foundationが実装しているスクリプト言語の名称です。そのためMicrosoftが実装しているものは「JScript」という名称になります。なお国際標準化されている名称は「ECMAScript」となっており混乱しがちですが、一般的にはほとんどの場面でJavaScriptと呼ばれています。
12.PHP(ピーエイチピー)
12.1 概要
公開:1995年
開発者:Rasmus Lerdorf(ラスマス・ラードフ)
TIOBE Index for April 2018の順位:7位
12.2 主な用途
Webアプリケーション開発など
12.3 特徴
正式名称は「Hypertext Preprocessor」であり、JavaなどがWebアプリケーションにも使える汎用的な言語であるのに対して、Webアプリケーション専用として開発されたスクリプト言語タイプのプログラミング言語です。
構文が極めて簡単で完成したコードもシンプルであり、多くのWeb開発現場で採用されています。用途がWeb系のみに限定されていますが、最も学習時間が短い言語に挙げる人も多く、プログラミングを手軽に始めたい初心者にはおすすめの言語です。
13.Swift(スウィフト)
13.1 概要
公開:2014年
開発者:Apple社
TIOBE Index for April 2018の順位:15位
13.2 主な用途
iOSアプリケーション開発
13.3 特徴
SwiftはApple社製OS上で動作するアプリケーション開発のために作られた、プログラミング言語です。従来使用されていたObjective-CやC言語にとって代わるものではなく、それらの言語と共存できるように作られています。実際にObjective-Cのライブラリにも対応しており、インポートするだけで使用可能です。
実はCの名前を冠するObjective-Cよりも、実行速度が向上しているようです。その代わりスクリプト言語のような学習の簡単さは期待できず、Objective-Cよりも難しいという方もいます。しかし登場からたったの2年でTOIBE Indexの上位にランクインしており、関心の高さが伺える言語です。テキストも充実してきたので、これから初めてiPhoneアプリ開発を勉強したい方にはObjective-CよりSwiftの方がおすすめです。
14.アセンブリ言語(アセンブラ)
14.1 概要
公開:1940年代~
開発者:多数
TIOBE Index for April 2018の順位:14位
14.2 主な用途
組み込み系システム開発など
14.3 特徴
機械語とアセンブリ言語は低水準言語(低級言語)と呼ばれ、その他は全て高水準言語(高級言語)となります。ここでいう低水準とは劣っているという意味ではなく、低水準であればより機械にとって読みやすい言語であり、高水準であればより人間にとって読みやすい言語であるという意味です。
機械にとって読みやすいということは、つまり処理が高速に行えるという意味を指します。(もちろんC言語を超えます)特にコンピュータの処理速度が遅い時代には重宝され、かつての家庭用ゲームの多くはハードの性能を最大限に引き出すためにアセンブリ言語で書かれていました。今でも家電製品へ組み込まれているOSの開発などアセンブリ言語でなければならない場面が多数あり、習得すると安定した仕事と高めの平均年収が見込める言語です。
15.FORTRAN(フォートラン)
15.1 概要
公開:1954年
開発者:John Warner Backus(ジョン・バッカス)
TIOBE Index for April 2018の順位:29位
15.2 主な用途
学術研究など
15.3 特徴
FORTRANは、プログラミング言語の歴史の中でも一番最初に開発された高水準言語です。特に数値解析の分野では未だ最強であり、登場から60年が経過した今でもスーパーコンピュータ上で学術計算などを行うために利用されています。
16.LISP(リスプ)
16.1 概要
公開:1958年
開発者:John McCarthy(ジョン・マッカーシー)
TIOBE Index for April 2018の順位:21位
16.2 主な用途
人工知能開発、ゲーム開発など
16.3 特徴
LISPとはFORTRANに次いで2番目に古い高水準言語であり、とても珍しいポーランド記法という書き方を用いているプログラミング言語です。LISPという名称はList Processor(リスト処理言語)からきており、主要なデータ構造にリストが用いられています。
当初は数学計算に使われていましたが、やがて人工知能の分野で盛んに用いられるようになりました。開発者のジョン・マッカーシー自身、1955年に人工知能(Artificial Intelligence)という言葉を初めて使用した人物であり、初期の人工知能の第一人者と呼んでも過言のない人物です。また近年「関数型プログラミング」という考えが流行しましたが、LISPはこの関数を値として扱えるプログラミング言語の元祖にあたる言語なのです。
このようにLISPは古い言語ながらとても特徴的で強力な言語であり、プレイステーションの代表的RPGであるFinal FantasyⅦのモデリングツールにはLISPが使用されていたそうです。(出典:「関数言語ナイト! 記号処理、オブジェクト指向、幻のLISPマシンSymbolics!」https://peatix.com/event/27688)習得はかなり難しいですが、関数型言語や人工知能に注目が集まっている今、再度見直したい言語です。
17.COBOL(コボル)
17.1 概要
公開:1959年
開発者:Grace Murray Hopper(グレース・ホッパー)
TIOBE Index for April 2018の順位:25位
17.2 主な用途
事務系業務システム開発など
17.3 特徴
COBOLはFORTRANやLISPと同じ頃に開発された最古のプログラミング言語の一つであり、数学計算に特化した他二つに対して事務処理に特化したプログラミング言語です。
開発から60年近く経過する言語ですが、未だにエンジニアの求人が多数あります。なぜなら政府機関などで古くから動作している大規模システムのほとんどがCOBOLで書かれていることから、メンテナンスや機能追加で今でも続々と案件が発生しているためです。COBOLで書かれた資産を全て新しい言語に置き換えるには、膨大な手間と予算が必要であるとされています。情報処理技術者試験のプログラミング問題でも、CやJava、アセンブリ言語と並んで四つの選択肢のうちの一つに選ばれています。そんなCOBOLは、まだまだ前線で活躍していく言語でありそうです。
18.PL/SQL(ピーエル/エスキューエル)
18.1 概要
公開:1988年
開発者:Oracle社
TIOBE Index for April 2018の順位:20位
18.2 主な用途
データベースを使用したシステム開発など
18.3 特徴
PL/SQLとは、本来は単純な処理しかできないデータベース言語であるSQLを拡張し、複雑な内容の処理に対応させたSQL操作のためのプログラミング言語です。
PL/SQLの概念は、Oracleのバージョン6で初めて導入されました。次ぐバージョン7ではストアド・プロシージャという機能が導入され、データベースサーバ上でforやloop、ifなどの処理を扱えるようになり、変数や定数の宣言、サブプログラムの呼び出しなど、他の言語と遜色ない動作が実現できるようになりました。この機能はデータベースとアプリケーション間の通信量を大幅に削減すること可能となり、データベースを利用する多くの場面で使用されています。
19.Scala(スカラ)
19.1 概要
公開:2003年
開発者:Martin Odersky(マーティン・オーダスキー)
TIOBE Index for April 2018の順位:34位
19.2 主な用途
Webアプリケーション開発など
19.3 特徴
Scalaとは近年注目を集めている関数型言語であり、同時にオブジェクト指向型にも対応したプログラミング言語です。Javaと互換性がありながら関数型言語の機能を取り入れることで、Javaよりもかなり少ないステップ数(プログラムの行数)で同じ機能を実現することができるようになっています。
関数型言語自体は1950年代に登場しており、歴史の長い概念です。しかし高度な機能を持つ関数型言語を実現するには、当時のコンピュータでは処理能力が足りませんでした。ようやく関数型言語がスムーズに動作するだけの環境が整った今、次世代の言語として再度注目を浴びています。
ステップ数を抑えられる、つまり開発工数を抑えられるというメリットもあるScalaは求人が急増している一方、まだまだ対応できるエンジニアが不足しています。これからエンジニアを目指す方にも、よく似たJavaと合わせて習得しておくことがおすすめの言語です。
20.Scratch(スクラッチ)
20.1 概要
公開:2006年
開発者:MITメディアラボ
TIOBE Index for April 2018の順位:23位
20.2 主な用途
子ども向けのプログラミング学習教材など
20.3 特徴
Scratchとは、MIT(マサチューセッツ工科大学)で開発されたプログラミング言語学習環境であり、イベント駆動型のビジュアルプログラミング言語です。ビジュアルプログラミング言語は構文を理解していなくても視覚的・直観的な操作でプログラムを作成し、動作させることができます。そのため専門のプログラマでなくとも、手軽にプログラミングを行えるという利点があります。
Scratchは正確には開発用のプログラミング言語ではなく教育用の言語ですが、2020年から小学校でもプログラミング教育を必修化することが決定した日本でも、急速に注目が高まっています。
文字でのプログラミングが不要で主にマウスで操作すると聞くと正式なプログラミング言語ではないと大人は侮りがちですが、初めて学ぶ人がプログラムの動作方法やアルゴリズムの概念を学ぶにはとても良い教育ツールです。ビジュアルプログラミング言語で製品化されているものには他にも計測・制御システムの構築に特化した「LavVIEW」という製品などがあり、そちらは計測・制御系のエンジニアや研究者の間で盛んに利用されています。ヴィジュアルプログラミング言語だからといって、侮れない立派なプログラミングツールなのです。
まとめ
主要なプログラミング言語20種類について、いかがでしたでしょうか。これからプログラミング言語を学びたいという方も、新しく追加で習得したいという方も、ぜひこれだという言語を見つけてみて下さいね。