Java、C/C++、Python、Javascript……などなど、 プログラミング言語 にもさまざまな種類があります。
それぞれに違う特徴を持ち、得意な分野も異なります。
本稿ではまずコンパイラ言語とインタープリタ言語、静的型付け言語と動的型付け言語について簡単に説明していきます。
その後、主要なプログラミング言語をいくつか挙げて、それぞれの特徴を見ていきたいと思います。
目次
コンパイラ言語・インタープリタ言語
人間の書いたプログラムをコンピュータに理解させるためには、プログラミング言語を機械語に翻訳するための「翻訳機」が必要という話を以前の記事でさせていただきました。
以前の記事はこちら。
その翻訳機は大きく二種類に分けることができます。
一つはコンパイラです。
コンパイラはプログラム実行前に全てのコードを一括で機械語に翻訳します。
事前にコンパイルという処理が必要というデメリットはありますが、プログラムの実行速度が速いという特徴があります。
もう一つはインタープリタです。
インタープリタはコードを一行一行機械語に翻訳しながらプログラムを実行します。
その分実行速度は遅くなりますが、素早くコードを書いて実行することができます。
コンパイラとインタープリタの違いは、翻訳と通訳の違いに似ています。
まとまった文章を一括で翻訳するのがコンパイラで、その場で話者の言葉を都度通訳するのがインタープリタというイメージです。
コンパイラとインタープリタの違いに関しては、下の記事で詳しく解説しています。
静的型付け言語・動的型付け言語
プログラミングで扱うデータには「データ型」という概念が存在します。
一言で言えば「そのデータが何のデータか」を表す区分のことを指します。
例えば整数データであれば「整数型」、文字列を扱うなら「文字列型」というデータ型が存在します。
プログラマーが独自に定めた型を作成することもできます。
静的型付け言語とは、変数宣言時にデータ型を指定する必要のある言語のことを指します。
事前にデータに不整合がないかをチェックできるメリットがありますが、その分コードの記述量が多くなると言うデメリットがあります。
それに対して動的型付け言語とは、変数宣言時にデータ型を指定しなくてもよい言語のことを指します。
記述量が少なく簡潔に素早くコードが書けるというメリットがありますが、事前にデータの不整合を検査することはできません。
静的型付け言語と動的型付け言語の違いは、下の記事で詳しく解説しています。
主要な プログラミング言語 一覧
以下では、主要なプログラミング言語とその特徴について説明していきます。
Java
Javaはコンパイラ言語・静的型付け言語であり、世界で最も広く普及している汎用プログラミング言語です。
Java仮想マシンとよばれる実行環境がプラットフォームの違いを吸収してくれるため、業務システム、Web開発、スマホアプリ開発など、様々な場面で利用されています。
習得難易度は中~高と決して易しくはありませんが、オブジェクト指向を学ぶには最適の言語です。
C/C++
C言語はコンパイラ言語・静的型付け言語であり、プログラミング言語の中で最も高速に動作します。
C++はC言語にオブジェクト指向の考えを取り入れた拡張版であり、基本的にC言語でできることはC++にもできます。
メモリやハードウェアなどのリソースを制御できるため、IoTやロボット制御、組み込み系の開発が得意です。
ポインタやメモリ割り当てなど、コンピュータのリソースを意識しながらプログラミングする必要があるため、習得難易度は高いです。
C#
C#はコンパイラ言語・静的型付け言語であり、Windowsアプリ開発やゲーム開発で活発に利用されている言語です。
名前が似ているためC言語の派生言語と思われがちですが、もともとはMicrosoft社がJavaとC++をベースに作り上げた言語です。
C/C++とは構文的には似ていますが互換性はありません。
習得難易度は中~高です。
JavaScript
JavaScriptはインタープリタ言語・動的型付け言語であり、ブラウザ上で動くのが特徴です。
Webページを動的に変更するのに利用されるため、HTML/CSSと合わせて、Web制作ではほぼ必須の知識となります。
近年ではNode.jsと呼ばれる技術により、ブラウザだけではなくサーバー上でも実行できるようになりました。
習得難易度は中程度です。
TypeScript
TypeScriptはトランスパイルと呼ばれる仕組みでJavaScriptのコードへと変換される少し特殊な静的型付け言語です。
もともと「クラス」や「モジュール」という概念がなかったJavaScriptに、モジュール性を導入することを目的に開発されたAltJS(代替JavaScript言語)と呼ばれる言語の一つです。
JavaScriptで利用できる構文はTypeScriptでもそのまま利用できます。
最大の特徴は、JavaScriptが動的型付けであるのに対し、TypeScriptは静的型付けであるため、インテリセンスや型チェックが利用できることです。
習得難易度は中~高程度です。
Python
Pythonはインタープリタ言語・動的型付け言語であり、文法が簡潔で覚えることが少ないのが特徴です。
近年では人工知能の分野で注目を浴びていますが、もともと汎用プログラミング言語として設計されているため、Web制作やアプリケーションの作成にも利用できます。
複雑な処理を少ない行数で実現できることに強みを持っています。
習得難易度は低~中程度です。
Ruby
Rubyはインタープリタ言語・動的型付け言語であり、日本発のプログラミング言語として有名です。
「Ruby on Rails」というフレームワークを利用して簡潔にWebアプリが作れるところに強みがあります。
日本発のプログラミング言語ということもあって日本語ドキュメントも豊富で、習得難易度は低です。
Scala
Scalaはコンパイラ言語・静的型付け言語であり、Javaと互換性を保ちつつ関数型プログラミングパラダイムを取り入れているという特徴を持っています。
ScalaもJava同様Java仮想マシンという実行環境で動作するため、クロスプラットフォームで移植が可能です。
Javaのオブジェクト指向に加えて関数型プログラミングも可能な、非常に柔軟性のある言語です。
それゆえJavaよりも覚えることが多く、習得難易度は高いです。
PHP
PHPはインタープリタ言語・動的型付け言語であり、Webアプリの開発に特化したプログラミング言語です。
WordPressにもPHPは採用されており、高度なカスタマイズをしたい場合はPHPを学ぶ必要があります。
シンプルな構文でデータベースとの連携ができる点も優れています。
習得難易度は低です。
Kotlin
Kotlinはコンパイラ言語・静的型付け言語であり、Androidアプリの開発が得意な言語です。
Javaとの互換性があり、かつJavaよりも簡潔にプログラムが書けます。
またNull安全であり、不具合が起こりにくい仕組みを備えているのも特徴です。
習得難易度は中です。
Swift
Swiftはコンパイラ言語・静的型付け言語であり、iOSアプリの開発が得意な言語です。
iOSアプリ開発言語としてObjective-Cというものがありますが、これに代わる高速かつシンプルな言語としてApple社が2014年に開発しました。
Objective-Cとの互換性があり、SwiftからObjective-Cのコードをそのまま利用することができます。
習得難易度は中程度です。
Go
Goはコンパイラ言語・静的型付け言語であり、シンプルな記述と高速な処理の両方を実現した言語です。
Googleによって開発されているオープンソースのプログラミング言語で、効率的な開発を目指して設計されています。
並列処理に強みがある一方、継承や例外処理の仕組みなどが無いなどのデメリットもあります。
文法はシンプルですが日本語文献が少なく、習得難易度は中程度です。
Groovy
Groovyはインタープリタ言語・動的型付け言語であり、Javaとの相互互換性をとりつつスクリプト言語的な軽量さを獲得した言語です。
文法的にはほぼJavaの上位互換的な位置づけであり、JavaのコードはそのままGroovyコードとしても実行することができます。
Javaがインタープリタ言語になったような使い勝手でプログラミングすることができます。
習得難易度は中~高です。