みなさんこんにちは、syuyaです。
昨今ますます需要が増えているプログラミング技術。
プログラミングをする際に必要となるのがプログラミング言語であり、それぞれの言語によって特徴や出来る事などが違っています。
世界には使われる機会のないものも含め、何と既に数百種類ものプログラミング言語が存在しています。
この数値は、今後さらに増えていくものと思われます。
では、最初にどの言語を学ぶべきなのか?
当然、目的によって学ぶべきプログラミング言語は違いますが、
プログラミング言語にもプログラマに人気・不人気の言語があります。
この知識を知っておくと、これから学ぶプログラミング言語を選ぶ際に参考になると思います。
この記事では、2023年現在人気のプログラミング言語と、逆に不人気のプログラミング言語をそれぞれ5種類、代表的なプログラムである”Hello,World!プログラム”のそれぞれの言語でのコードと共にご紹介します。
プログラミングを学ぶなら、キラメックス株式会社の提供するTechAcademy(テックアカデミー)がおすすめ。
オンライン授業に特化した授業内容で、現役のエンジニアからプログラミングが学べます。
プログラミングのみならず、WEB制作やアプリケーション開発などのスキルを、自宅に居ながら学ぶことが出来ます。
詳細は下記のボタンをタップしてご覧ください。
人気のプログラミング言語ベスト5
まずご紹介するのは、人気のプログラミング言語です。
このランキングは、2023年度の”TIOBEプログラミングコミュニティーインデックス”に準拠したものです。
TIOBEプログラミングコミュニティーインデックスとは、TIOBE Software社が毎月発表しているプログラミング言語の人気度を示す指標で、GoogleやYahoo、Youtubeやwikipediaなどの検索エンジンでどれだけ検索されたか(人気があるか)を根拠に算出された指標となっています。
この指標で上位にあるという事は、それだけ需要があるという事なので、これから学ぶ価値が十分にあるプログラミング言語であると言えます。
1位 python
print("Hello,World!")
栄えある”人気のプログラミング言語ナンバー1”に選ばれたのがPythonです。
Pythonは1991年に、オランダ人プログラマであるグイド・ヴァンロッサムによって開発されました。
名前のPythonは”ニシキヘビ”を表わす英単語であり、開発者のヴァンロッサムがファンであったイギリスのコメディ番組”空飛ぶモンティ・パイソン”より名付けられています。
Pythonの特徴はその読みやすい構文で知られ、初心者であっても学ぶのが容易な事から、最初に学ぶプログラミング言語として人気があります。
その上、汎用性が高い言語である為様々な事が出来、Pythonが書けるプログラマの需要も高いという素晴らしい言語です。
数あるプログラミング言語の中でも、このPythonの人気が一位な事も頷けます。
豊富なライブラリやフレームワークが存在しているため、プログラミング初学者でも容易かつ効率的にプログラムを組むことが出来るため、学んだ成果も実感しやすい言語です。
Pythonの使用目的としては、データサイエンス、データアナリシス、機械学習、ウェブ開発、ゲーム開発、自然言語処理など、様々な開発用途に利用できます。
中でも機械学習・人工知能開発にとって、Pythonはとても優れた言語です。
OpenAI社が2022年11月に公開して以降、瞬く間に世界に広まったChatGPTのプログラムも、このPythonによって組まれています。
今後も続くであろう人工知能開発ブームを考えても、大変需要がある言語であると言えますね。
Pyrthonはこんな人におすすめ
・初めてプログラミング言語を学ぶプログラミング初学者で、何を学ぶか迷っている人
・データ解析・統計解析などデータサイエンス・アナリシスに興味のある人
・機械学習やディープラーニング、AI開発に興味がある人
2位 C言語
#include <stdio.h>
int main() {
printf(Hello,World!\n);
return 0;
}
二番目に人気があるプログラミング言語に輝いたのはC言語です。
C言語は1972年に、アメリカのAT&Tベル研究所の研究員であったデニス・リッチーらによって開発されたプログラミング言語です。
C言語はプログラミング言語の歴史を塗り替えた言語として知られ、後に開発される多くのプログラミング言語に影響を与えました。
シンプルで構造的な構文を持ち、更にどのプラットフォームでも機能する高いポータビリティを有しています。
そして、ポインタを使用する事でメモリ(主記憶装置)を直接操作する事により、コンピューターの深部に直接命令を下すことが出来るため、より高い効率性のプログラミングを行う事が可能です。
しかし、ポインタの使用によるメモリ操作は、下手をしたら使用しているデバイス本体を壊してしまう可能性も孕んでいます。
そのため、プログラミングに習熟した熟練のプログラマ以外はメモリ操作を行うべきではないでしょう。
そういった意味でも、C言語は玄人向けのプログラミング言語であると言えます。
使用用途についてもとても汎用性が高い言語であり、OS(オペレーティング・システム)の開発、ネットワークプログラミング、アプリケーション開発、デバイスドライバの開発など、多様な目的で使用する事が可能となっています。
いささか古いプログラミング言語であるものの、いまだに社会インフラの中枢で使用されている言語でもあるため、学習する価値の高いプログラミング言語であると言えるでしょう。
C言語はこんな人におすすめ
・C言語から派生した他の多くのプログラミング言語も学びたい人
・組み込みシステム開発からアプリ開発まで幅広い種類のプログラミングを行いたい人
・メモリ操作と言った、高度な技術を要する本格的なプログラミング技術を学びたい人
3位 C++
#include <iostream>
int main() {
std::cout <<"Hello,World!" << std::endl;
return 0;
}
続いてランクインしたのはC++(シー・プラスプラス)です。
C++はデンマーク人の計算機科学者ビャーネ・ストロヴストルップによって、1983年に開発されたプログラミング言語です。
先んじて開発されて大人気となっていたC言語に、オブジェクト指向と呼ばれる新たなプログラミングの概念を取り入れた言語となっています。
柔軟で汎用性の高いプログラミング言語であるため、広範囲の開発目的の為に使用できます。
例を挙げるならば、システムプログラミング、アプリ開発、ゲーム開発、組込みシステム、データベース管理システムなど、保守システム構築からソフトウェア開発まで多岐に渡ります。
そして、C言語同様にポインタを使用したメモリ操作まで行えるため、パソコンの最深部に直接的に命令をすることでより効率的な動作を促すことが可能です。
しかし、C言語同様にメモリ操作を始めとした”何でも出来る”特性は、時にパソコンデバイス自体を壊してしまう要因にもなってしまいます。
また、C++のコードは主要のプログラミング言語の中で最も難解な事で知られ、修得するにはかなりの時間が必要と言われています。
これらの事を踏まえて、C++はプログラミング初心者が最初に手を出すべき言語ではないと言えるでしょう。
ですが、知識を蓄えた熟練のプログラマが使用すれば、それこそ”なんでも出来る”言語である為、極めて玄人志向の言語であると言えそうです。
C++はこんな人におすすめ
・もう既に他のプログラミング言語を学習済みで、より高難易度の言語を学びたい人
・プログラマとして高いスキルを身につけたい人
・より複雑なプログラムを組みたい人
4位 java
public class HelloWorld {
public static void main(string[]args){
System.out.println("Hello,World!");
}
}
続いてご紹介するのはjavaです。
javaは1996年にアメリカのIT企業であったサン・マイクロシステムズによって開発されたプログラミング言語です。
2010年に同じくアメリカのIT企業であるオラクルによって同社が買収されると、javaの版権もそちらに移りました。
javaはC++に似た構文を持ち、オブジェクト指向言語です。
しかし、C言語やC++が可能なポインタによるメモリ操作などと言った、場合によってはハードウェアを壊してしまいかねない危険な操作は制限されている為、素人であっても比較的扱いやすい言語でもあります。
javaの一番の特徴はjava仮想マシン(JVM)と呼ばれる仮想マシンを用いる事により、異なるプラットフォームでも作動するプログラムを組むことが出来ます。
JVMによる利点としては、セキュリティの向上の他、ガベージコレクションと呼ばれるメモリ管理機能により、メモリ管理を主導で行う必要がないなどといった、様々な利点があります。
非常に汎用性の高いプログラミング言語であり、主な使用目的としては、組込みシステム、データベース接続、大規模分散システムの構築などのシステム開発。
ウェブアプリケーション開発、モバイルアプリケーション開発、デスクトップアプリケーション開発、企業アプリケーション開発などのアプリケーション開発。
その他にも科学計算や数値解析など、多様な使用用途があるプログラミング言語です。
javaはこんな人におすすめ
・初めてプログラミング言語を学ぶプログラミング初学者で、何を学ぶか迷っている人
・アプリケーション開発など、何かを開発したいと思っている人
・既に他のプログラミング言語を学習済みで、更に仕える言語を増やしたい人
5位 C#
using System;
namespace HelloWorld
{
class program
{
static void Main(string[] args)
{
Console.WriteLines("Hello,World!");
}
}
}
人気のあるプログラミング言語の5番目はC#です。
C#はマイクロソフトによって2000年頃に開発されたプログラミング言語です。
先だって開発されていたC++同様に、C言語にオブジェクト指向の要素を追加した言語で、C++とは異なる進化を遂げたものです。
構造化プログラミングや関数型プログラミング、オブジェクト指向プログラミングなど複数のプログラミングパラダイムに対応したマルチパラダイムプログラミング言語です。
C言語の名称を継いでいますが、C言語やC++ほどは難しくはなく、理解しやすいのが特徴です。
また、コードの構文としてはjavaに近いのが特徴です。
C言語やC++で可能であったポインタによるメモリ操作などといった、ハードウェアを壊す可能性のある危険な操作は設計段階で制限されている為、その点でも初心者でも安心して扱える言語となっています。
当初はマイクロソフトのOSであるWindowsのMicrosoft .NET Framework上で動作する事を目的として設計されましたが、現在ではWindowsに限らず複数の環境で動作する.NET上で動作するようになっています。
主な使用用途として、WEB開発、デスクトップアプリケーション開発、モバイルアプリケーション開発、クラウドコンピューティング、ゲーム開発、データベースアプリケーション開発など、多岐に渡ります。
さらに、ゲーム開発の分野で使用されるUnityエンジンはC#をサポートしており、3Dゲームや2Dゲーム開発を行いたい人にとっても学ぶ価値のある言語となっています。
C#はこんな人におすすめ
・Windowsアプリケーションを開発したい人
・Unityを使ってゲーム開発をしたい人
・.NETフレームワークに関連したシステムを学びたい人
不人気プログラミング言語ワースト5
続いてご紹介するのは、不人気のプログラミング言語です。
不人気の理由は様々で、
・古すぎるため
・難解すぎるため
といった理由から、
・そもそもネタとして作られたプログラミング言語であるため
などと言ったものがあります。
ここでは、そんな訳アリプログラミング言語を5種類ご紹介します。
*本項目はhttps://medium.com/@remobi/worst-programming-languages-you-can-learn-in-2023-1549fb6bc35cより参照されたランキングです。
1位 COBOL
IDENTIFICATION DIVISION.
PROGRAM - ID HelloWorld.
PROCEDUREDIVISON.
MAIN.
DISPLAY "Hello,World!".
STOP RUN.
栄えある(?)不人気プログラミング言語ワースト1に輝いたのがCOBOLです。
COBOLは”Common Business Oriented Language”の頭文字から名付けられた名称で、企業や公的機関の事務処理を担うプログラミング言語を目指し1959年に開発されました。
アメリカ合衆国の政府の事務処理プログラムの使用言語に選ばれるなど、一時期は事務処理系のプログラミング言語として絶対的な地位を持っていましたが、今ではいささか時代遅れの言語となっています。
COBOLを使用できるプログラマの案件としては、新規のアプリの開発といったものはほとんど無く、既存のシステムの保守や運用、移行の案件が大半のようです。
しかし、長年企業や官公庁などの事務処理プログラムに使用されていただけあって、信用が高い言語でもある為、これらの組織からの一定の需要は見込まれます。
ワースト1位になってしまったのは、単に他のプログラミング言語と比べても知名度が高かったけど、以前に比べて活躍の場が減ってしまった為に、
昔は人気だったけど今は人気がない
と、プログラマの印象に残っていたというだけの事であり、決して役立たずの言語という訳ではありません。
また、プログラミングの歴史を学ぶ上で、最初期のプログラミング言語のひとつであるCOBOLを学ぶ事は、より理解を深める事の一助となるでしょう。
COBOLのここが不人気
・古い言語であるため、学んだとしても既にCOBOLで組まれたシステムの保守作業くらいしか仕事がない
・ウェブ開発やアプリケーション開発といった新しい技術の開発には対応していない
・最初期のプログラミング言語ゆえの複雑さや構文の無駄があり、学び辛い
2位 Brainfuck
>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++
++>-]<.>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-]>
++++++++[<++++>-]<+.[-]++++++++++.
続いてご紹介するのはBrainfuckです。
名称の内の”fuck”が問題のあるワードである為、主に”Brainf*ck”や”Brainf**k”などと表記されます。
スウェーデン人のエンジニアであるUrban Mülleによって開発され、1993年に発表されたプログラミング言語です。
人間が理解しやすい高水準言語を、いったん機械が理解しやすい形式に変化する事をコンパイルと言いますが、そのコンパイルをするソフトウェアであるコンパイラの容量を極力小さくすることを目的に開発されました。
その結果、確かにコンパイラの容量は小さくなりましたが、人間には読解困難な言語となってしまいました。
Brainfuckは主に6つの記号とそれに伴う命令で構成されており、
” > ”・・・ポインタを右に移動
” < ”・・・ポインタを左に移動
” + ”・・・ポインタが指すセルの値を1増やす
” – ”・・・ポインタが指すセルの値を1減らす
” . ”・・・ポインタが指すセルの値を文字として表す
” , ”・・・入力から1文字読み取り、ポインタが指すセルに格納
上記の6つの記号で命令を下します。
Brainfuckはコンピューターの動作を指示する方法としてはとても簡潔で、無駄がありません。
その為、プログラミングの仕組みを学ぶのには役に立ちますし、趣味として学ぶ分には非常に興味深い言語ではあります。
ですが、ご覧の通り人間には理解しがたく、また間違いなく記述するには難しい事から実用的ではないため、不人気の言語となっています。
Brainfuckのここが不人気
・人間が読解するのに全く適さない
・書き間違いを無くコードを書くことが困難
・上記の事から、全く実用的でない
3位 INTERCAL
DO ,1 <- #13
PLEASE DO ,1 SUB #1 <- #234
DO ,1 SUB #2 <- #112
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #194
DO ,1 SUB #7 <- #48
PLEASE DO ,1 SUB #8 <- #22
DO ,1 SUB #9 <- #248
DO ,1 SUB #10 <- #168
DO ,1 SUB #11 <- #24
DO ,1 SUB #12 <- #16
DO ,1 SUB #13 <- #214
PLEASE READ OUT ,1
PLEASE GIVE UP
続いてご紹介するのはINTERCALです。
INTERCALは1972年にプリンストン大学の学生であったドナルド・ウッズとジェームズ・リヨンによって開発されたプログラミング言語です。
名称の”INTERCAL”とは”Incompatible Computer Calculator”の略で、直訳するならば”非互換的なコンピューター計算機”という意味となります。
実用的なプログラミング言語ではなく、当時主流であったFORTRANやCOBOLといったプログラミング言語の不便な点や非効率的な点を風刺する為に作られたプログラミング言語です。
その為、意図的に難解なコードになるように作られており、その構文は熟練のプログラマであっても読解する事は困難を極めます。
それどころか、プログラマ的な感覚からしてみれば気持ち悪い構文である為、熟練のプログラマほど嫌悪するようなコードだと言えます。
その難解さの例を挙げるならば
・コード行の番号は2、4、6、8といった偶数しか許可されず、その事により非常に使い勝手が悪くなっている
・変数名に通常使われるアルファベット以外の文字を使用でき、それが混乱を招く要因となる
・通常のプログラミング言語に観られる特定の場所へジャンプする”GO TO”ステートメントの代わりに、特定の場所から逆方向へジャンプする”COME FROM”ステートメントが実装され、通所の制御フローをややこしくしている
・その存在価値が全く不明な、変数の値をランダムな値にする”FORGET”ステートメントが実装されている
など、通常のコードを敢えて難解にした仕様が数多くみられます。
INTERCALは、黎明期の無駄が多く難解なプログラミング言語に対するアンチテーゼとして開発された側面が強く、そもそも実用される事を目的として作られたものではありませんでした。
一応計算機としての役割は果たせるものの、C言語などの言語に比べ計算に膨大な時間がかかってしまうなど、重大な欠点がありました。
ですが、INTERCALは上記のBrainfuckなど、いわゆる”難解言語”の始祖であると言われ、ある程度知識をつけたプログラマが趣味として学ぶ分には興味深い言語であると言えるでしょう。
INTERCALのここが不人気
・”難解言語”の始祖であり、とにかく難解である
・そもそもパロディ言語であり、実用向けに作られていない
・苦労してコードを完成させたとしても、プログラムの実行速度が遅く、とても実用的ではない
4位 Malbolge
(=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**
hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@9843W10/.R,+O<
続いてご紹介するのはMalbolgeです。
1998年にBen Olmsteadによって開発されたプログラミング言語で、いわゆる”難解言語”の一つです。
この言語もそもそも実用化を目指して開発されていない”ネタ言語”であり、
”いかにして理解不能な難解言語を作り上げるか”
という飽くなき挑戦によって生み出された言語です。
”Malbolge”という名前は中世のイタリアの詩人ダンテ・アリギエーリの代表作である”神曲”に登場する地獄の第八層(最下層であるコキュートスの一つ上の層)である”Malebolge(マーレボルジェ)”より名付けられました。
Malbolgeはその名に恥じぬ難解さであり、例を挙げるならば
・通常のプログラミング言語の値である二進数ではなく、値を三進数で扱う
・非常に限定された命令しかできず、しかも複雑な命令しかできない
・命令をした後、その命令の一部分を勝手に初期化してしまう
など、同じく難解言語であるBrainfuck同様に、意図的に不便に作られた設計となっています。
数ある難解言語の内、最も難解な言語の一つと見なされており、
”Malbolgeはプログラミング言語ではなく、暗号システムとして見なすべきだ”
という意見もあるほどです。
熟練のプログラマや頭の良い学者が趣味で学ぶという需要はあるかもしれませんが、それ以外には全く学ぶ価値がない言語であるといえるでしょう。
Malbolgeのここが不人気
・”難解言語”の中でも最も難解なプログラミング言語の一つであり、そもそも理解するのが難しい
・実用向けに作られていない”ネタ言語”である為、使いこなせたとしても需要がない
・単に趣味で学ぶにしても、相当な知識と努力をもって学ばないと全く理解できない
5位 Whitespace
[SP][SP][SP][LF]
[SP][SP][SP][TAB][SP][SP][TAB][SP][SP][SP][LF]
[TAB][TAB][SP][SP][SP][SP][TAB][LF]
[SP][SP][SP][TAB][TAB][SP][SP][TAB][SP][TAB][LF]
[TAB][TAB][SP][SP][SP][SP][TAB][SP][LF]
[SP][SP][SP][TAB][TAB][SP][TAB][TAB][SP][SP][LF]
[TAB][TAB][SP][SP][SP][SP][TAB][TAB][LF]
[SP][SP][SP][TAB][TAB][SP][TAB][TAB][SP][SP][LF]
[TAB][TAB][SP][SP][SP][SP][TAB][SP][SP][LF]
[SP][SP][SP][TAB][TAB][SP][TAB][TAB][TAB][TAB][LF]
[TAB][TAB][SP][SP][SP][SP][TAB][SP][TAB][LF]
[SP][SP][SP][TAB][SP][TAB][TAB][SP][SP][LF]
[TAB][TAB][SP][SP][SP][SP][TAB][TAB][SP][LF]
[SP][SP][SP][TAB][SP][SP][SP][SP][SP][LF]
[TAB][TAB][SP][SP][SP][SP][TAB][TAB][TAB][LF]
[SP][SP][SP][TAB][TAB][TAB][SP][TAB][TAB][TAB][LF]
[TAB][TAB][SP][SP][SP][SP][TAB][SP][SP][SP][LF]
[SP][SP][SP][TAB][TAB][SP][TAB][TAB][TAB][TAB][LF]
[TAB][TAB][SP][SP][SP][SP][TAB][SP][SP][TAB][LF]
[SP][SP][SP][TAB][TAB][TAB][SP][SP][TAB][SP][LF]
[TAB][TAB][SP][SP][SP][SP][TAB][SP][TAB][SP][LF]
[SP][SP][SP][TAB][TAB][SP][TAB][TAB][SP][SP][LF]
[TAB][TAB][SP][SP][SP][SP][TAB][SP][TAB][TAB][LF]
[SP][SP][SP][TAB][TAB][SP][SP][TAB][SP][SP][LF]
[TAB][TAB][SP][SP][SP][SP][TAB][TAB][SP][SP][LF]
[SP][SP][SP][TAB][SP][SP][SP][SP][TAB][LF]
[TAB][TAB][SP][SP][SP][SP][TAB][TAB][SP][TAB][LF]
*[TAB]=Tabキー [SP]=半角スペース [LF]=改行ボタン
最後にご紹介するのはWhitespaceです。
最初に書かれたコードの画像を見て
何じゃこりゃ?何も書かれてないぞ・・・?
と思われた方も多いとは思いますが、これがれっきとしたWhitespaceで書かれた”Hello,World!”プログラムのコードなのです。
”Whitespace”は世にも奇妙な、”Tabキー””半角スペース”そして”改行ボタン”の三種類のボタン入力で書かれるプログラミング言語なのです。
これらは文字入力のボタンではなく空白または改行ボタンである為、実際のコードの表示としては”全て空白”になるというとんでもない言語です。
画像の下にあるブロックでは、実際にどのボタンが押されて上記の空白のコードとなっているかが示されています。
言うまでもなく、全く実用的ではない”ネタ言語”であり、読解する事がほぼ不可能な”難解言語”です。
ですが、たった三つの、それも文字を入力しないキー入力でプログラミングが組めるという事実は、初学者にプログラミングというものに対する興味を抱かせるのにはうってつけだと言えます。
今後学校教育のプログラミングの授業などで、世の中に存在するユニークなプログラミング言語の例として、取り上げられる事があるかもしれません。
Whitespaceのここが不人気
・見ての通りネタ言語であり、全く実用的ではない
・コードが書かれた画像を見ても、何のことだかさっぱり分からない
・プログラミングの面白さを見せるのには有用かもしれない
まとめ
いかがだったでしょうか?
この記事では、2023年時点での人気のプログラミング言語と不人気のプログラミング言語を、それぞれ5つご紹介しました。
世の中には無数のプログラミング言語が存在し、そしてこれからも新たなプログラミング言語が開発されていく事でしょう。
より便利で効率的な言語も開発されていき、Python以上の人気の言語が登場するかもしれません。
また、一風変わった不人気言語を学ぶ事で、プログラミング言語全体の理解を深める事もできるかもしれませんね。
ここまで読んでいただき、ありがとうございました。
コメント