「プログラミング言語の違いがわからない。」初心者に向けて10個の違いを分かりやすく解説します。
こんにちは!
現役Webエンジニアの今井(@ima_maru)です。
いざプログラミングを学ぼうと思っても、プログラミング言語がいっぱいあって何を学んでいいんだかわかりにくいですよね。
今回は、そんな多くのプログラミング言語がある理由からそれぞれの違いや特徴、人気のプログラミング言語の種類などをまとめて紹介していきます。
- プログラミングの違いがわからない/知りたい方
- なんでこんなに多くのプログラミング言語があるのかを知りたい方
- どのプログラミング言語を学べばよいか迷っている方
- 人気のプログラミング言語の種類や特徴を知りたい方
それでは見ていきましょう。
プログラミング言語の違いを10個わかりやすく解説!
違い①:プログラムの書き方・文法
当たり前ですが、まずはプログラミング言語によってプログラムの書き方や文法が違います。
例えば、「"Hello, World!"」と表示するプログラムでもC言語で書けば以下のように。
#include <stdio.h>
main()
{
printf("Hello, World!\n");
}
Pythonで書けば以下のようになります。
print("Hello, World!")
違い②:適している分野や用途
プログラミング言語の違いとして、意外に重要な違いが「適している分野や用途」であったりします。
つまり「何を開発するために使える言語なのか?」ということです。
大体のプログラミング言語には適した分野や用途が存在します。
プログラミング言語 | 適している分野 |
---|---|
Python | AI開発/データ分析/IoT開発/Webアプリ開発 |
JavaScript | Webサイト制作/Webアプリ開発/スマホアプリ開発 |
Java | Webアプリ開発/業務システム開発/組み込み開発 |
PHP | Webアプリ開発 |
C# | Windowsアプリ開発/3Dゲーム開発/VR開発 |
Kotlin | Androidアプリ開発/サーバーサイド開発 |
Swift | iPhoneアプリ開発 |
C言語 | OS開発/組み込み開発/ライブラリ開発 |
適している分野や用途がある理由はさまざまですが、大きな要因としては言語の開発思想やエコシステムが大きく関係しているでしょう。
違い③:人気度・ユーザー数
プログラミング言語においての人気度やユーザー数は重要です。その理由は2つあります。
1つ目の理由は、人気が高いほどユーザー間での情報共有が盛んになりネットの情報が多くなるからです。
プログラミング言語を学ぶ場合、ネットの情報を一切使わずにマスターする人はいないと言ってもよいでしょう。
みんな何かしらのエラーや問題に突き当たっては調べて解決するというプロセスを経て、プログラミング言語のスキルを習得していきます。
そこでユーザー数が多い人気の言語を選択していれば、それだけ同じエラーや問題に遭遇しているユーザー数が多くなります。
そのため、技術ブログに解決策を執筆してくれている開発者がいたり、質問サイトで多くの情報が集まったりするというメリットがあるわけです。
この理由から、初心者はまず人気の言語から学ぶべきともいえるでしょう。
2つ目の理由は、その言語におけるライブラリやフレームワークの開発が盛んになり、開発環境がどんどんと整っていくからです。
このライブラリやフレームワークの豊富さについては次で詳しく説明します。
違い④:ライブラリやフレームワークの豊富さ
ライブラリは「便利機能」でフレームワークは「開発キット」のようなもので、どちらも大まかにいえば「開発を楽にしてくれる便利ツール」です。
開発者としては楽に開発できるほうが好ましいわけですから、便利ツールがほとんどない言語よりも豊富に揃っている言語を選びたいと思うのは当然ですね。
違い⑤:言語自体の性能や特徴
実は、プログラミング言語自体に性能や特徴が存在します。
一番わかりやすい例としては処理速度で、同じ処理でも処理速度の速い言語ほど短い実行時間で処理を終えることができます。
「なら実行速度が速いほうが絶対いいのでは?」と思うかもしれませんが、実はそうでもないんです。
単純に考えれば速いほうがいいのですが、「処理速度を速くするために失っているものがある」「あるものを得た結果、処理速度が遅くなってしまうことがある」といったようなトレードオフの関係についても考えなくてはいけません。
例えば、コンパイラ言語とインタプリタ言語については以下のようなメリットデメリットがあります。
このように片方のメリットは片方のデメリットとなりえる関係もあるのです。
ほかにも、「動的型付け言語と静的型付け言語」「低水準言語と高水準言語」といった実行速度に影響のある言語の特徴があるので、気になる方は以下の記事をご覧ください。
実行速度のほかに、メモリ安全性もプログラミング言語の特徴として挙げられます。
メモリ安全性 (メモリあんぜんせい、英語: Memory safety) は、バッファオーバーフローやダングリングポインタなどの、RAMアクセス時に発生するバグやセキュリティホールなどから保護されている状態のことである。例えば、Javaは実行時エラー検出で配列の境界とポインタの参照外しを確認するので、メモリ安全であると言われている。対照的に、CとC++は境界チェックを行わないメモリアドレスを直接参照するポインタを使用した任意のポインタ演算が可能なので、メモリ安全ではない。
wikipedia - メモリ安全性
ざっくり言えば、メモリ安全性とはメモリアクセスを扱うプログラミングにおいてバグが起こりにくいかどうかということです。
言語のメモリ安全性について詳しく知りたい方は、「ガベージコレクション」「Rust 所有権」などと検索してみてください。
違い⑥:言語処理系
プログラミング言語には、言語処理系において違いがあります。
言語処理系とは、プログラミング言語で書かれたプログラムを処理してコンピュータが直接実行できる機械語へと変換する、または実際にそれらプログラムを実行するソフトウェアのことを言います。
- 「プログラミング言語で書かれたソースコードはそのままコンピュータで実行できない」
- 「どうにかしてコンピュータで実行できる形にしないといけない」
- 「そこでどういう方法をとるか」➡これを担うソフトウェアが言語処理系
大きく分けて、言語処理系にはコンパイラとインタプリタがあります。詳しく知りたい方は、以下の記事をご覧ください。
違い⑦:サポートされている開発手法
プログラミング言語によって、サポートされている開発手法が違います。
ここでいう開発手法とは、「オブジェクト指向プログラミング」や「関数型プログラミング」といった開発手法のことです。
イメージとしては、プログラムをどのように構成していくかといった非常にスケールの大きなものです。
この辺の内容は難しいので、コードを書くことに慣れてきたら思い出す程度でよいでしょう。
違い⑧:設計思想
プログラミング言語の違いとして「設計思想」の違いも特徴的ですね。
簡単に言えば「どのような想いで開発されたプログラミング言語なのか」以下のようなことです。
例えば、プログラミング言語「Java」は「"Write Once , Run Anywhere"」、つまり「一度書けばどこでも動く」をコンセプトとして開発された言語であり、実際に多くのOSや環境に対応して動作するプログラミング言語となっています。
ほかにも、プログラミング言語「Go」は以下のような起源があります。
起源はGoogleのエンジニアであるRobert Griesemer、ロブ・パイク、ケン・トンプソンによる、新しいプログラミング言語を設計する実験的なプロジェクトに端を発する。Googleなど、多くのIT企業ではソースコードの複雑さや肥大化が問題になっていた。他の言語がよく受ける批判を解決するとともに、それらの言語のよい特徴をできる限り損なわないようにすることを目指した。彼ら設計者たちは、新しい言語として、以下の特徴を持つものを構想していた。
wikipedia - Go(プログラミング言語)
・JavaやC++のように、静的に型付けされ、巨大なシステムでもスケールする
・RubyやPythonなどの動的な言語のように生産性(英語版)が高く、リーダブルであり、過度なボイラープレートが必要ない
・IDEが必須ではない。ただし、十分にサポートする
・ネットワークおよびマルチプロセッシングをサポートする
実際Goはだれが書いても同じようなコードになる短くシンプルな文法が特徴的な言語であり、開発背景に強く影響されていることがわかります。
このように、プログラミング言語それぞれにどういう言語を目指すのかというの設計思想やコンセプトがあったりして、実際に言語の機能や用途などに大きく影響を与えている場合が多いです。
そのため、こういった設計思想を調べてみるのも面白いかもしれません。
違い⑨:開発元
プログラミング言語には開発元の違いもあり、その開発元ならではの特徴があることも面白い点です。
例えば、開発元の製品と相性が良い場合があります。
プログラミング言語 | 開発元 | 相性の良い自社製品 |
---|---|---|
C# | Microsoft | Windows/Azure |
Swift | Apple | iOS/Mac |
そもそも自社の製品のために言語を開発することもあるため、順序が逆かもしれませんね。
自社製品との相性以外にも、日本人が開発したRubyには日本のユーザーが多く日本語の情報が多くあったり、Googleが開発した言語は人気になりやすかったりといったように、開発元に注目してみるのも面白いでしょう。
違い⑩:利用料金
プログラミング言語によっては、利用料金を取る言語もあります。
例えば、大学の授業などでも使われるプログラミング言語「MATLAB」はライセンスを購入する必要がある有料のプログラミング言語です。
ほとんどの言語は無料で使えるものが多いですが、たまに有料のプログラミング言語があるので注意が必要です。
以上「「プログラミング言語の違いがわからない。」初心者に向けて10個の違いを分かりやすく解説します。」でした!
最後までご覧いただきありがとうございます。