プログラミング言語は世の中にたくさんありますが、今回は習得を考えた時の難易度ランキングをつけてみました。
10のプログラミング言語を対象とします。
対象言語は現在おすすめであるとともに、プログラミングをやったことがある言語ですので、経験も含めて難易度判定をしています。
プログラミング言語の難易度ランキング
5段階で評価しました。1が最も習得が容易なもので、5が最も難しいものになります。
最も簡単なのが、HTMLおよびCSS、最も難易度が高いものが、C/C++です。
その間に8つの言語が並びます。
今回の難易度考察から、プログラミング言語で何を学習するかについては、最後にまとめています。
まずまとめを読んでみる。
それでは、それぞれの難易度の理由を次から説明していきます。
HTML+CSS 難易度 1
特に開発環境の構築は不要で、ブラウザとテキストエディタのみではじめられます。
文章にタグという決まりで印「マーク」をつけると、見た目が変わります(HTML)。
また対象の文字などにつけたマークに対して、更に色やサイズなどの装飾を指定することもできます(CSS)。
指定したものが、わかりやすく目に見えた結果になるのと、情報がネット上でもわりと容易に手に入ることもあり、難易度を1としました。
実際のCSSは奥が深いものであり、完全に習得すればかなりのことはできます。
それでも、入りやすさという観点で、難易度1としました。
HTMLとCSSだけでは、ブラウザ上の見た目の制御までしかできないため、実際のシステムとして動作させるためにはサーバ側のプログラミングが必要となります。
仕事という意味では、HTML+CSS、余裕があればJavascriptまでの知識で、画像編集スキルがあれば、Webデザイナーになれます。
Javascript 難易度 2、 Typescript 難易度 3
ブラウザの操作をコントロールする言語で標準になっているのは、Javascriptです。
HTMLだけではできない、操作やブラウザ上での入力チェック、見た目の動的な変化などをコントロールできる言語になります。
環境構築は特に不要で、HTMLファイルに指定するだけで動作させることができますが、条件分岐やループ等も含めプログラミング要素が一通りはいってきますので、難易度をひとつあげて2としました。
Jacascriptは、Node.jsでサーバ側のプログラミングも可能だし、汎用性はありますが、ここではブラウザ上の制御という意味であつかっています。
本格的なプログラミングを実施しようとする場合、またクライアントのブラウザ上である程度リッチな操作性をもとめるものをJavascriptで実現するには、相当の熟練を必要とします。
もっともWebブラウザで動作するアプリのクライアント制御を実施しようとすると選択肢はJavascriptか、次に登場するTypescript以外の選択しはないので、必要に応じて最低限の知識は身につけておくべきと考えています。
Typescriptは、Javascriptが変数宣言などをしなくてもプログラミングできてしまうのが、楽な反面、動かしてみないとエラーがわからずバグの発見に時間がかかってしまう課題への対策として生まれたプログラミング言語になります。
しくみとしては、Typescriptで書かれたものを、Javascriptにチェックしながら変換して、変換後のものがブラウザ上で動作するというものです。
TypescriptからJavascriptへの変換作業、Typescriptの動作環境の構築、日本語情報の少なさなどまだまだ敷居も高いので、難易度をひとつあげています。
PHP 難易度 2
PHPは,HTMLの中にサーバー側で動作するロジックを埋め込んで、サーバ側で処理した結果をクライアントに返す仕組みになります。
HTMLを覚えたら、その延長でサーバー側のロジックを手軽に記述できることもあり、処理ロジックを記述するとはいえ、Webアプリケーションを開発する敷居は低くなっています。
そんなこともあり、PHPはWebプリ開発のシェアを伸ばしに伸ばしてきました。
クライアントだけで動作させることはできないため、開発環境の構築等は必要になりますが、それもXAMPPを使えば簡単に用意できます。
利用者も多く開発者のための情報も簡単に手に入ります。
wordpressもPHPで開発されているし、実際にメールフォームや掲示板をPHPで開発したことがありますが、思った以上に簡単につくれました。
そのあたりも含め、難易度は2にしてます。
Python、Ruby 難易度 2
PythonとRubyは、ともに難易度2にしています。
両方ともインタプリタ型のスクリプト言語で、プログラミング即実行が手軽にできるし、手元のPCに対する開発環境の構築なども簡単にできます。
あわせて、開発者のための情報も多くでまわっており、開発に苦労しないことから、難易度は低めに設定しました。
Web開発は、Railsがあるので多少はRubyの方が得意な部分もあるし、データ分析や機械学習はPythonの方がライブラリがそろっており優位にたっています。
とはいえ、この2つの言語、やれる範囲はほぼ同じで、RubyもWebスクレイピングやデータ分析が普通にできますし、PythonでもWebアプリ開発はフレームワークをつかって普通に行われています。
難易度という意味では、ほぼ互角といっていいと考えています。
C# 難易度3
C#は、デスクトップで動作するアプリを開発する場合は、右にでるものはないくらい、Visualにコンポーネントを配置しながらの開発ができます。
個人的にC#を学習する場合は、Visual Studio Communityと呼ばれる高機能なIDEが無料で使えます。チュートリアルやサンプルもたくさん用意されているため、最初のスタートはスムーズに進められます。
また、Unityというゲームエンジンを使った開発もできるため、ゲーム開発では他の言語をよせつけずにC#がトップを走っています。
ただ、C#でグラフィカルに開発するには、マイクロソフトから提供されている近年のVisual Studioはかなり動作が重いので、開発用に高スペックのマシンが必要です。
ビジュアルに開発ができる。長年の歴史もあり開発資料もそろっているものの、サイズも大きくインストールに時間がかかることを考えて難易度をRubyやPythonより、ひとつあげています。
Go、Java 難易度4
コンパイラ型の言語のGoとJavaについては、難易度をあげて4にしています。
コンパイルというひと手間がはいることで開発難易度があがるためです。C#もコンパイルしますが、Visual Studioが同時にインストールされるし、チュートリアルなどもマイクロソフトが一式用意してくれていますが、GoやJavaについてはC#ほど充実した学習環境は整ってはいません。
もっとも、Javaは歴史も古く数多くの書籍や学習教材、ネット上の情報があり学習に困ることはありませんが、自分で取捨選択しながら学習を進める必要があり、多少難易度があがります。
Goについても近年利用が増えてきていることもあり学習するための情報には困らなくなってきました。
一方、インタプリタ型のスクリプト言語である、PythonやRubyと比べると、言語としてシンプルになっている分だけプログラミングするときの記述する量が増加することも多いです。
プログラミング言語としては、PythonやRubyと比較し、静的な型チェック、コンパイルしてマシン語に変換されるため処理速度が速いという長所もありますので、利用用途にあわせて使い分けるという感じになると思われます。
C/C++ 難易度5
最後にC/C++ です。最高難易度の5。
ポインタ処理や、C++の言語の複雑性と、エラー発生時の原因特定の難易度の高さから難易度5にしています。
もっとも、組込み系やシステム系のプログラミング言語としては、現在の主流になっていて、その方面を目指すのであれば身につけておく言語になります。
まとめ
プログラミング言語を選ぶひとつの基準として10のプログラミング言語の難易度を整理しました。
難易度だけでは語れませんが、プログラミング言語選択としては、何をつくるのか、その利用目的にあわせて選択していくことになると思います。
言語別には下記に書いていますが、プログラミング言語は1つ覚えると第二言語は比較的短時間で習得できます。
何かを極めるのが先ですが、プログラマの目指す姿を思い描いて第一言語を選択するのもありだと思います。
プログラマが目指す一例
- HTML+CSSを習得(知識は必須。業務に応じて深さを調整)
- Javascript,Typescript(Javascriptも必修。Typescriptは必要性に応じ)
- Python,Ruby(いずれかを習得)
- Java,Go,C/C++(業務の幅が広がります)
プログラミング言語とその選択について。
Web系フロントエンド中心:
HTML+CSS(必須)
Javascript/TypeScript
サーバサイドのプログラミング(Webアプリ-比較的小規模):
Python、Ruby、PHP
サーバーサイドのプログラミング(Webアプリ-中~大規模システム開発):
Java、Go
データ分析、機械学習:
Python
ゲーム開発、VR開発:
C#
組込み系、システムプログラミング:
C/C++
以上、最後までお読みいただき、ありがとうございました。