プログラミング言語の種類
プログラミング言語は、日々新しい種類がリリースされています。約300から500種類程度の言語が公開されており、オープンソース版が主流となった現在では、派生バージョンを含むと1,000種類以上に及びます。現実的に良く利用されるものは、その1割程度と考えられます。
主に使用されるのは1割程度とはいっても、約30から50種類のプログラミング言語全てを学ぶことは、容易なことではありません。ここでは、プログラミング言語を種類や用途別に分類し、初心者のおすすめの言語を紹介していきます。
コンパイラ言語とインタプリタ言語
プログラミング言語で最も使われる分類は、コンパイラ言語とインタプリタ言語でしょう。ともに高水準言語を細分化したものです。高水準言語では、人間が理解できる自然言語に基づく構文を用いており、ソフトウェア開発の生産性を向上させたものです。
コンパイラ言語は、テキストエディタで作成したソースコードを用いて、コンパイラが中間コードやアセンブリ言語を生成し、実行ファイルを作ります。実行ファイルはOSによってメモリにロードされ、実行されます。
インタプリタは、ソースコードに記述されているプログラムの宣言や命令を、インタプリタが逐次翻訳します。翻訳した実行コードは、そのまま実行したり、機械語に変換後にメモリにキャッシュし再利用したりします。
初心者のプログラミング言語の選定方法
上記のように、初心者が多数のプログラミング言語からいくつも学習するのは現実的には困難です。したがって、以下のように分析してみると学習の優先順位を決めやすくなります。
人気があること
人気のプログラミング言語は、自身のスキル向上に役立てることができます。人気があるということは、需要があるということですので市場価値が高く、将来的なキャリアップにも繋がります。
【参考】:TIOBE
将来性があること
プログラミング言語は多岐に渡っていますが、長きにわたり利用されるものもあり、一概には決められません。特に新しく登場した言語は、淘汰される心配もあります。そのため、基本に忠実な言語共通知識を学び、応用スキルとしていくつかに挑戦するのが良いでしょう。
学習しやすいこと
学習しやすい言語は、学習時間をかけずに利用できるので利用価値も高いと判断できます。難易度が低いことで再利用性が高く、ライブラリ活用等により開発生産性も高い言語は、需要としても高い傾向が見られます。
プログラミング言語の分類方法
プログラミング言語の種類は非常に多いために、分類の仕方も多岐に渡ります。ここでは、通常用いている分類方法について解説していきます。
言語仕様の人間との関係
我々人間は、文字や言葉でコミュニケーションを図っており、人と人との意思疎通を図ることができます。プログラミング言語は対象がコンピュータですので、人とコンピュータとのやり取りとなります。
そのやりとりが、人間寄りの自然言語に近いか、コンピュータに近い言語かによって分類することができます。人間の言語に近いものを、「高水準言語」と呼びます。コンピュータに近い言語を、「低水準言語」と呼びます。
高水準言語はさらにコンパイラやインタプリタなどに細分され、低水準言語は機械語あるいはアセンブリ言語が該当します。
プログラムコードの編集方法と実行形式
プログラムコードの編集方法ですが、テキストエディタで編集できるものを「ソースプログラム」と呼びます。ソースプログラムは、そのままではコンピュータが理解できないので、コンピュータが理解できるオブジェクトコードを生成させる方法と、逐次変換する方法があります。
オブジェクトコードを生成させる方法をとるのが、コンパイラです。C・C++・Java・C#などが該当し、比較的新しいものでは、Go・Julia・Kotlin・Rust・Swiftなどもあります。
次に、逐次変換するのがインタプリタです。BASIC・JavaScript・Perl・Python・PHP・Ruby・Rなどが該当します。CLI(コマンドラインインターフェース)のシェルや、シェルスクリプトも同等の処理が実装されています。
また、実行形式のオブジェクトを直接編集するにはバイナリエディタを用います。オブジェクトコードと1対1に対応するニーモニックと呼ばれるコード対比表を用いる方式がアセンブラです。
用途別の分類
近年情報活用が進んでおり、多種多様な用途でITシステムが利用されています。従来の業務は、基幹業務システムという定型業務の効率化が中心でした。その後、情報系と呼ばれる意思決定システム等に利用されています。これらのシステムでは、C・Java・FORTRAN・COBOLなどが良く用いられます。
その後、生産システムや産業システムで生産の効率化や自動化が進み、ロボット制御等も多く取り入れられています。IoT(Internet of Things)ではあらゆる機器が情報発信源となり、生成されたデータを活用するデータ分析も盛んです。この場合は、CやJavaが良く用いられます。
多くのシステムがインターネットに接続されたことで、ウェブシステムの利用が進み、スマホをはじめとするモバイル端末はこの流れを推進し、どこでもだれでも情報を活用することができるようになりました。この場合はHTML・CSS・JavaScript、内部ではPerl・Python・PHPなどが利用されています。
学習難易度別の分類
学習のしやすさも1つの分類の考え方です。コードの作成のしやすさとともに、コードが再利用可能で利用者を獲得しているプログラミング言語があります。コードの再利用性が高いということは、1からコード作成が不要で、公開されているライブラリを利用することで簡単にプログラミングを行うことができます。
再利用性が高いのは、JavaやPythonです。多くのライブラリが公開されており、特にPythonの場合はAIやデータ分析で圧倒的な利用率を誇ります。
次に、専門知識が必要かどうかでも分類できます。使用用途問わず共通で用いるのが汎用プログラミング言語です。業種や業界固有の仕様や用途が限定されるものが、用途特化型です。幼児教育向けの言語も多数登場していますが、こちらもある意味では教育用途に特化したプログラミング言語と考えられます。ロボットの制御言語も、機種依存性の高いものは用途特化型と言えます。
プログラミング方式による分類
プログラミング方式による分類ですが、ベースとなる考え方として構造化プログラミングがあります。これはプログラムで必要な要素をブロックに分割し、処理を分岐したり反復したりするフローや処理手順を定義することで、プログラム構造を分かりやすくし開発しやすくします。今日では、ほとんどのプログラミング言語で取り入れられています。
オブジェクト指向プログラミングという言い方も、多く現れます。これはモジュールを作成し、相互に利用するために定義や手続きを抽象化して開発効率を高める手法です。オブジェクト指向プログラミング言語では、クラスとオブジェクトというデータや手続きを継承する手法をとります。
オブジェクト指向プログラミングは、Java・C++・C#・Perl・Python・PHP・Ruby・R・JavaScriptなど多数が該当します。
初心者におすすめのプログラミング言語5選
ここでは前述の分類や考え方に基づき、初心者が最初のステップで学ぶべき、おすすめのプログラミング言語を解説していきます。余裕のある方は追加してプログラミング言語の学習を行っていくのが良いでしょう。
Python
Pythonは、人気と需要ともにランキング上位に位置付けられています。インタプリタのため開発環境を柔軟に選べ、人工知能(AI)を始めとするデータ分析では圧倒的な利用度を誇ります。ライブラリが豊富で生産性が高く、学習効果が高いです。
多岐に渡るライブラリは、ウェブ開発など幅広い用途でも利用されています。
【参考】:Python 【参考】:日本Pythonユーザ会
JavaScript
JavaScriptは、ウェブ系システムでは必須のプログラミング言語と言えます。人気と需要も高く、モバイル端末の普及により高い需要を維持しています。現在は、ECMAScriptとして標準化されておりブラウザベースのアプリケーションには欠かせません。市販参考書も多数ありますので、覚えやすいと言えます。HTMLやCSSの知識も、合わせて吸収することができます。
【参考】:Ecma 【参考】:MDN JavaScript
発展知識としては、Node.js・jQuery・React・Vue.jsなどの実行環境やライブラリも理解できます。JavaScriptのスーパーセットであるTypeScriptについても、学習後の次のステップで学ぶことができます。
C言語
C言語は1970年代に登場以来、汎用プログラミング言語の第一線で用いられています。基幹業務システムからモバイル端末までカバーし、低水準言語に近い処理も得意としており、組み込みシステムでも用いられています。
C言語はコンパイラ言語であり、仕組みの理解に多少時間がかかりますが、市販の参考書は多数ありますので自習も可能です。理解が進めば、自身のスキル向上に直結します。開発環境ではC++のコンパイラはC言語にも対応しますので、余裕があればC++のスキルアップも可能です。以下の言語リファレンスサイトや、各コンパイラベンダのドキュメントサイトなどが参考になります。
【参考】:C++リファレンス C言語リファレンス
Java
Javaは、分散コンピューティングのプラットフォーム環境で利用されます。C++に似た構文で、Java向け統合開発環境(IDE)が多数提供されており、開発環境の整備には困りません。オブジェクト指向プログラミングを学びたい方は、Javaの学習をおすすめします。
JVMは、プラットフォームに依存しないためあらゆるデバイスで動作します。組み込みシステムでも、C言語に続き人気があります。
【参考】:Oracle Java
C#
C#は、Visual Studioや.NETで標準的に利用されるプログラミング言語です。マイクロソフト社製のプログラミング言語のため、Windows開発環境を優先して学習する場合は特におすすめです。C#は、ゲーム開発でも良く用いられます。主要ゲームエンジンであるUnityのスクリプト処理はC#ですので、ゲーム業界に興味を持つ方にもおすすめです。
【参考】:Microsoft Docs C# 関連のドキュメント 【参考】:Unity
さらに余裕がある方向け
前述のプログラミング言語が理解できたら、ウェブのバックエンド処理を得意とするPHPを学ぶのも良いでしょう。データベース処理が増加しており、需要があります。インタプリタのPerlやPythonの次の候補としては、日本語のドキュメントが豊富なRubyを学ぶのが良いでしょう。
iOSやmacOSが主体の方は、Swiftを学ぶのが良いでしょう。Objective-Cを引き継いでおり、Apple社の統合開発環境(IDE)である、Xcodeで効率的なソフトウェア開発が可能です。
プログラミング言語を学びスキルの中核とオプションを準備しましょう
プログラミング言語を学ぶことで、ITスキルの基礎知識や応用力がつきます。プログラミング言語は1つのみでOKということではありませんので、最初に取り掛かりやすい言語から学び、さらに知識の幅と深さを武器にすべく学習を継続することをおすすめします。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから