プログラミング言語の難易度【実際に書いた経験による感想】

プログラミング言語には難易度に差があります。難易度の差は、とくに未経験者にとっては習得しやすさに大きく影響します。

私は小学生のときにBASIC言語でプログラミングを覚えて、社会に出てからはVisualBasicを業務で使っていました。

次に習得するプログラミング言語を探したときに、それぞれの言語で一回はプログラムを書いてみてから決めることにしました。

C言語、C++、Ovjective-C、Java、Python、Rubyなどなど。実際にプログラムを書いてみると、難易度にはずいぶん差がありました。

この記事では、私がいままでに実際に書いた経験でプログラミング言語の難易度について解説します。

難易度には個人差があるのでは?

プログラミング言語の難易度には、どうしても個人的な主観が入ってしまうものです。

経験者に意見を聞いたとしても、その人が長く使ってきた言語というのは難しく感じないものです。

慣れや贔屓目ひいきめもあるので、難易度には個人差が出てしまうのです。一つだけの言語にこだわっている経験者の意見というのは、あまり参考にはならないでしょう。

私は、プログラミング言語を決めるときにいろいろな言語を書いてみた経験があります。その経験を活かして、慣れや贔屓目を抜きにして難易度を付けました。

  • 難易度1:HTML、CSS
  • 難易度2JavaScriptジャバスクリプト、VBA
  • 難易度3:PHP、PythonパイソンRubyルビーSwiftスウィフト、SQL
  • 難易度4Javaジャバ
  • 難易度5:C、C++、C#

難易度は5(難)~1(易)までの5段階。

HTML&CSSは、プログラミング言語ではありませんが、未経験者がはじめに学習する言語として最適です。コーディングの基礎を学べて、ウェブページを作れるようになります。

HTML&CSSの経験者があるのなら、最初のプログラミング学習に推したいのはJavaScriptです。HTMLファイルの中に埋め込むことができる言語なので、HTMLのスキルとの相乗効果も高いです。

Excelをよく使用しているなら、VBAが良いでしょう。ExcelにはVBAの開発環境がすでに入っています。VBAの記法はやさしく、プログラムの実行結果をシートで確認しながら学ぶことができます。

プログラミング未経験者には難易度の低いHTML&CSS、JavaScript、VBAが良いです。

プログラミング言語の難易度

プログラミング言語の難易度一覧
言語 難易度 用途
C 5 システム・組み込み
C++ 5 システム・組み込み・ゲーム
Java 4 システム・組み込み・スマホアプリ
JavaScript 2 ウェブサイト・ゲーム
PHP 3 ウェブサイト
Python 3 ウェブアプリ・人工知能・ブロックチェーン
Ruby 3 ウェブサイト
Swift 3 iPhoneアプリ
VBA 2 Excel自動処理

アルファベット順。難易度は5(難)~1(易)までの5段階。

プログラミング言語の難易度は、習得時間挫折率に影響します。

とくにプログラミングの未経験者が学習を始めるときには、学びやすく挫折しにくいプログラミング言語を慎重に判断する必要があります。

「有名だからC言語をやってみようと思った。」「友人のSEがやってるからJavaにしてみた。」などと難しい言語に手を出してしまうと、挫折の原因にもなります。

プログラミング言語の難易度に差が生まれる原因には、次のようなものがあります。

  • 環境構築:プログラミングを行うために用意する場所・道具。プログラミング言語や開発用ツールをインストールすることは未経験者にとってやや難しい。
  • 文法:プログラムの書き方。各プログラミング言語によって文法や記法が異なる。ただし制御構造はほぼ共通している。
  • :コンピューターに認識させる値のかたち。静的型付け、動的型付けがある。動的型付け言語の方が簡易。
  • コンパイル:機械が読めるように翻訳する作業。C系、Javaはコンパイルが必要なので難しい。未経験者にはコンパイル不要な言語が良い。
  • パラダイム:プログラミングの手法・スタイル。手続き型、関数型、オブジェクト指向など。
コンパイルとは、人間が書いたプログラムをさらに機械が読めるように翻訳する作業です。
私の友人は、大学時代にC言語を履修したときにコンパイルで挫折したと言っていました。

C/C++(難易度5)

C言語は、プログラミングに興味がある人なら誰でも知っているほど有名な言語です。

C言語の学習ではプログラムのみならずコンピューターについても深い知識が身に付きます。そのため、理系大学や専門学校ではC言語を履修させるところもあります。

C言語を書いてみて私が感じたのは、未経験者にはかなり難しいということです。

  • ポインタやメモリの概念など、コンピューターに関する知識が必要となる。
  • 他の言語では必要がないような、細かな制御文や関数を記述する必要があるので記述量が多い。
  • 記法の自由度が高くマイルールで書くことができる反面、他人のコードを読み解きづらい。
  • プログラム実行にはコンパイルが必要なので手間がかかり、面倒。
  • 習得に1年以上はかかるだろうと判断。

C言語やC++は、官公庁や銀行、物流管理など社会生活を支える大規模なシステム開発に使われています。

C++シープラプラC#シ―シャープ、Java、Rustラストは、C言語の影響を強く受けているプログラミング言語です。

C#は、Unityというゲーム開発ツールとセットなら開発のハードルが下がるため、難易度がやや易しくなる感じがしました。

Rustは2010年に生まれた新しい言語で、難解なC言語に替わるプログラミング言語を目指して改良が続いてますが、難易度は高めです。

ただ、C系の言語は総じてややこしく面倒くさくて、未経験者が手を出すと習得に相当な時間がかかってしまいます。

C言語のプログラム実行を自動車の運転に例えるなら、運転の仕方や交通ルールに加えてエンジンやミッションの構造まで知っておかないと運転できないような感じです。わざわざコンパイルしなくても動くプログラミング言語はあるわけで、C言語に費やす膨大な学習時間はもったいなく感じました。

Java(難易度4)

Javaは、C++から派生した言語ですが、オブジェクト指向でプログラミングできる点でC言語よりは記述しやすいです。

ただ、Java未経験者だった私が書いてみた感想は、けっこう難しい。未経験者にとってはオブジェクト指向の理解自体が難しいと思います。

  • 環境構築が難しい。JDKや統合開発環境のインストールは、パソコンが不得意な人には厳しい。
  • オブジェクト指向の恩恵もあり、プログラムは読みやすい。ただ、オブジェクト指向の理解に時間がかかる。
  • プログラム実行にはコンパイルが必要なので面倒。
  • 習得に1年以上はかかるだろうと判断。

Javaは、家電製品への組み込みプログラムのために生まれた言語です。今では金融系や官公庁のシステムなどへ用途が広がり、多くの企業のシステムに利用されています。

AndroidOSのスマホアプリの開発にも使われます。最近では、派生言語のKotlinコトリンでアプリ開発が行われることも増えてきました。

組み込みとは、家電製品などのボタン操作を実現するプログラムを組み込むこと。

Javaは生活に近い分野での需要が高く、現代の社会基盤を担う言語とも言えます。習得には時間がかかりますが、仕事には困らない恩恵を受けられます。

未経験者でも採用するようなシステム開発会社では自社で育成を行っており、2~3ヶ月でJavaを叩き込んで現場に送り出します。当然2~3ヶ月では無理があるので、あとは現場でまれながらスキルアップしていくことになります。「未経験でもSEに!」みたいな求人ではJavaが散見されます。

JavaScript(難易度2)

ウェブデザインに興味があるならJavaScriptがぴったり。このサイトでもJavaScriptをちょこちょこ使っています。

JavaScriptは、ウェブサイトに動きを付けたりや計算機能を付けたりするのに使われます。ウェブ制作しながら楽しんで学習できる、難易度の低い言語です。

学習の目的を見つけやすく、プログラミング未経験者がかなり取り組みやすい言語です。

  • 環境構築が簡単。エディタとウェブブラウザくらい。
  • ウェブでの使用目的がわかりやすい関数が用意されているので、未経験者でもプログラムを組みやすい。
  • 開発の内容によっては、制御構造を身につける機会に恵まれないことがある。
  • コンパイル不要。ウェブブラウザで実行結果を確認しながら開発できる点が簡便。
  • 3ヶ月もあれば基本的なプログラミングは身につく。未経験者にもぴったり。

Googleでは、JavaScriptをもとにGoogleAppsScriptを生み出して、Googleスプレッドシートなどのウェブアプリケーションを開発しています。

GoogleマップはJavaScriptの派生技術Ajaxが使われています。ウェブ開発をもっと簡便に高度にするフレームワークvue.jsも注目されています。

JavaScriptはウェブ開発には欠かせないため需要が尽きません。今後も発展を期待できる言語なので、身に付けておくと長く使える強いスキルになります。

プログラミング未経験者に「一つだけプログラミング言語を学習するなら、どれ?」と質問されたら、私なら迷わずJavaScriptを推します。記述が簡単で、ウェブ上での利用目的が見えるので、自発的に開発する意欲につながりやすいです。挫折率がもっとも低い言語ではないかと思います。

生活に欠かせないウェブだけに、ウェブ開発会社も多くあり、就職先を見つけやすいのも魅力です。
JavaScriptを習得できるプログラミングスクール・コース

PHP(難易度3)

ウェブサービスの開発やブログ運営をやってみたいならPHPを学んでおくと良いです。

PHPはウェブサーバー側で動く言語です。多くのウェブサイトで使われているWordPressというツールはPHPで動いており、データベースと連携してウェブページを生成します。

ウェブとの親和性が高いだけあって未経験者でも学習しやすい言語です。ただ、学習するための環境構築が難しいです。

  • 環境構築がやや難しい。環境構築ツール(XAMPPなど)があるが、パソコンが不得意な人には厳しい。
  • プログラムの実行結果がウェブへの出力となるので確認しやすく、学習しやすい。HTMLの知識が必要。
  • サーバーを含めたウェブサービスの構造を理解していける。ただ、データベース連携まで含めると習得にはやや時間がかかる。
  • コンパイル不要
  • 3ヶ月程度あればウェブ用のプログラミングは身に付く。

WordPressワードプレスを使っているサイトのすべてがPHPのお世話になっています。Yahoo!やFacebook、Wikipediaなどの大きなウェブサービスにも使われています。

自分でブログ運営してみたいという方には、WordPressをPHPの学習に利用できます。

また、クラウドソーシングでもブログの改修や機能追加の案件がかなり多いです。身に付けると副収入につなげやすいプログラミング言語です。

私の場合はプログラミングの知識がある状態でPHPを習得しましたが、未経験者でも始めやすい易しい言語だと感じました。人によってプログラムの記述がやや乱れるものの、用途がウェブにかたよっているので分かりやすいです。このブログもPHPを使ったWordPressで運用しています。

PHPを習得できるプログラミングスクール・コース

Python(難易度3)

業務自動化やウェブ、人工知能までどんな分野でも活かせるプログラミング言語はPython。

Pythonはプログラミング言語のなかでも記述量が少なく、書きやすくて読みやすい言語です。

プログラミング言語を探していた時にいろいろ書いてみた中で、もっとも無駄がなくスマートに記述できる言語だと感じました。

他のプログラミング言語よりも格段に簡易な記述ルールのおかげで、学習のハードルが低くなっています。

  • 環境構築が簡単。Pythonのインストールとエディタがあれば良い。
  • Python独自の記法があり、読み書きしやすいように工夫されている。
  • コンパイル不要なので、プログラムを書いて、すぐ実行しながら組み上げていくことが可能。
  • ライブラリが豊富なので、ファイルやExcelを操作したり、写真を編集したり、自在なプログラムを簡単に実現。
  • 6ヶ月程度あれば、ファイル操作から簡単なアプリケーションの作成が身に付く。

Pythonは、データサイエンスの分野でデータ分析に使われていた言語でしたが、近年は人工知能の開発にも使われています。

ライブラリが豊富なので、どんな分野でも応用が利く柔軟性を持っています。

Excelのライブラリを使えばExcelを操作できます。ウェブ開発のライブラリを使えばウェブアプリも作れます。InstagramにもPythonが使われています。

PythonのバージョンはPython2とPython3があります。現在はPython3が主流になり、ウェブ上の情報も入手しやすくなってきています。

人工知能やブロックチェーンなど、未来の技術開発に使われる言語として定着したので、これから身に付ける価値がとても高い言語です。

ライブラリとは、特定の用途で開発しやすいように数式や関数をまとめたツールです。私がPythonに決めた理由も、豊富なライブラリと簡易な記法のおかげで、学習コストが低いわりに応用性が高いと感じたからです。要するにコスパがとても良いプログラミング言語なのです。

Ruby(難易度3)

RubyにはRuby on Railsルビーオンレイルズというウェブ開発用のフレームワークがあり、プログラミング未経験者にも学習しやすい言語です。

Ruby on Railsを利用すると、パーツを組み合わせるようにして高品質なウェブサイトを作れます。

ただ、フレームワークを使わないRubyは、決して書きやすい言語には感じません。Perlパールのような古臭い記法が残っており、言語の仕様が整理されていないような印象です。

他人の書いたコードを読み解くのに苦労します。(Pythonがいかに合理的な言語仕様であるかを感じました。)

  • 環境構築が簡単。Rubyのインストールとエディタがあれば良い。
  • Rubyの記法はルールがゆるく、どのように書いてもそれなりに動く。反面、他人のコードを読み解きにくい。
  • コンパイル不要なので、プログラムを書いて、すぐ実行しながら組み上げていくことが可能。
  • Ruby on railsルビーオンレイルズというフレームワークでアプリ開発がより簡単になる。ただし、プログラミングとは言い難い。
  • 6ヶ月程度あれば、簡単なウェブアプリケーションの作成が身に付く。

Ruby on Railsルビーオンレイルズは、食べログや価格ドットコム、クックパッドなどのウェブサービス・サイトに使われています。

記法のルールがゆるいRubyの開発現場では、チーム内で厳密なルール作りが必要になります。これがRubyの余計な開発コストになっているので、開発現場でRubyが使われる機会は減っていくでしょう。

Twitterも、Ruby on Railsで開発されましたが、現在はScalaスカラに移行しています。

Ruby on railsのおかげでRubyのプログラミングは簡便になり、一時は大人気となりました。現在はJavaScriptやPythonで同様の開発ができるようになり、Rubyの需要は下がっています。Rubyではなくても同様のことができるNode.js(JavaScript)やPythonを学習したほうが今後のためにも良いでしょう。

Perlと同じく、Rubyの時代も終わっただろうと個人的には感じます。

Swift(難易度3)

Macが好きだったりiPhoneアプリを作ってみたいならSwift一択。

AppleがObjective-Cに替わる言語として生み出したのがSwiftです。MacOS用アプリやiPhoneアプリの開発に使われます。

個人的には、Objective-Cの記法を引きずったような書きにくさを感じましたが、開発環境のXcodeエックスコードの使い勝手が良いので難易度は低いと感じます。

  • 環境構築はXcodeをインストールするだけ。Macのパソコンを持っているなら簡単に構築できる。
  • Objective-Cのような、やや難解な記法のなごりがある。
  • コンパイルが必要であるが、開発環境Xcodeで対話的に開発できるので、難易度には影響しない。
  • 6ヶ月程度あれば、簡単なiPhoneアプリの開発くらいは身に付く。

AppleのOS上で動くアプリケーションの開発には長らくObjective-Cが使われてきましたが、現在は開発現場でもSwiftを使う機会が増えています。

iPhoneアプリを開発してみたい。という方にはSwiftです。

Appleのパソコン(iMacやMacBook)があれば、Xcodeをインストールするだけで学習を始められます。

スマホのシェアが今後どうなっていくのかは見通しがつきません。SwiftはApple製品(MacBookやiPhone、AppleWatchなど)のシェアと運命をともにする言語なので、そこを慎重に判断する必要があります。私個人の考えでは、Swiftに学習コストをささげるのはちょっと怖く感じます。用途が狭すぎるからです。

VBA(難易度2)

ExcelやAccessでの業務効率を向上したいならVBA。

VBAはMicrosoftのアプリケーション(ExcelやAccess)に機能追加したり自動化したりできるプログラミング言語です。

やりたいこと(処理)を上から順に記述していけばよいので、とても書きやすいです。プログラム実行の結果をExcelシートで確認できる点が難易度を易しくしています。

  • VBAの動作環境として簡易なのはExcel。開発モードが実はすでに整っている。
  • 記法の自由度が高く、他人が書いたコードを読み解きづらい。自分ですら読めなくなることがある。
  • プログラミング言語と比べて文法が独特。レトロなのでうんざりするような書き方を強いられることもある。
  • コンパイル不要。ワークシートで動作を確認しながら開発できるのは、学習において楽。
  • 3ヶ月程度あれば業務効率の向上につながるプログラムが書けるようになる。

記法に厳密なルールがなく、ひとそれぞれの記述のバラつきが大きくなります。

そのため、他人の書いたVBAのプログラムを読み解くのは困難です。自分の書いたプログラムさえ、3ヶ月後に読めなくなったことがありました。

Excelワークシート間のコピペ作業や、毎日の繰り返し入力作業などを自動化できます。普段の業務でExcelを使っているならVBAは強力な武器になります。

私が社会人になってまず武器にしたのがVBAです。Excelを使う業務を自動化していったところ、社内での評価がどんどん上がっていったのを覚えています。業務でExcelを使っている方は、VBAで学習するのが良いでしょう。私の場合は、VBAのプログラミングスキルを流用するかたちでPythonを習得しました。

プログラミング言語以外の言語の難易度

言語 難易度 用途
CSS 1 ウェブサイト
HTML 1 ウェブサイト・ウェブアプリ・ゲーム
SQL 3 データ管理・データ分析・ウェブサイト・ゲーム

アルファベット順。難易度は5(難)~1(易)までの5段階。

CSS(難易度1)

HTMLを装飾・デザインするための言語です。スタイルシート言語と呼ばれます。

HTMLとセットで学習するのが適切です。HTMLと同様に難易度が低く、ウェブページを作る楽しさを味わいながら学習していけます。

ウェブ上にはCSSの情報があふれているので、分からないことを調べるのも容易です。

  • CSSの学習環境はHTMLと同様にエディタとブラウザさえあればよい。
  • ウェブページを装飾・デザインする楽しさのなかで学習していける。
  • 独学も可能。
  • 学習期間は、1ヶ月程度あればそれなりのウェブデザインは身に付けられる。
  • ウェブデザイナーの仕事への道が開ける。

HTML(難易度1)

プログラミング未経験者はHTML&CSSから学習すると自信にもつながります。

HTMLはウェブページをレイアウトするための言語で、マークアップ言語と呼ばれます。

マークアップ言語は、プログラムの実行結果を出力するために使ったりもするので、プログラミング学習と併せて覚えておくと便利です。

HTMLの難易度は低く、スクールのカリキュラムでもまず最初に学習する言語になっています。ウェブ上にもHTMLの情報がたくさんあります。

  • HTMLの学習環境はエディタとブラウザさえあれば始められるほど容易。
  • ウェブページでよく使われているHTMLタグは決まっており、覚えることが限られている。
  • 独学も可能。
  • 学習期間は1ヶ月程度あれば、ウェブページやブログを作成できるようになる。
  • 自身でウェブサイトを立ち上げたり、ウェブ制作やライティングの仕事を請け負って副収入を得ることも可能。

HTMLは独学でも身に付けられる言語です。IT未経験者だけどプログラミングに興味がある場合は、まずHTMLの学習から始めてみると向き不向きを判断できると思います。私は学生のころに自力でウェブページを作ってみたくて夢中で身に付いてしまいました。

SQL(難易度3)

SQLはデータベースを操作するための言語で、データベース言語と呼ばれます。Microsoft AccessやMySQLなどは聞いたことがあると思います。

データベースによって記法がやや異なりますが、よく使われる構文はどのデータベースも同じです。

プログラミング言語ではありませんが、プログラムのような制御構造を持たせることもできます。

構築済みのデータベースを操作する機会・環境があれば、SQLの学習はそれほど難しくはありません。

  • 未経験者の場合はデータベースが何なのか、何に活用するのかを理解することが難しい。
  • Microsoft Accessの使用経験があれば、データベースの理解は早い。
  • データベースを構築するのは手間がかかる。未経験者の場合は環境構築に相当な時間がかかる。
  • データの型やインデックスを理解するのが難しい。

まとめ

  • C言語、またはC系の言語は難易度が高い。
  • C系、Javaはコンパイルが必要なので、未経験者には難しい。
  • 未経験者にはJavaScriptを推す。ウェブブラウザへの反映が楽しく感じられる。今後も技術の進化への期待が大きい。
  • JavaScript、PHP、HTML&CSSはウェブデザイン、ウェブサービスの開発に役立つ。需要も多い。
  • Pythonは、個人的に習得して良かったプログラミング言語。未来の技術を作る言語として定着。食いっぱぐれなし。
  • SwiftはiPhoneやMacと運命をともにしている。学習する前に慎重に判断したほうがいい。
  • VBAはMicrosoft Excelがあれば開発環境が整っている。今すぐに学習を始められる。

© 2019-2021 ノンブロ.