プログラミング言語の特徴【できること・得意分野を解説】

プログラミング言語の特徴
言語
(難易度)
できること
得意分野
用途
プロダクト
HTML&CSS
(1)
ウェブ画面レイアウト
ウェブデザイン
ウェブフロント全般
JavaScript
(2)
ウェブ開発
ウェブアプリ開発
ウェブフロント全般
ウェブアプリ
ブラウザゲーム
ChatWork
Slack
Node.js(サーバー環境)
VBA
(2)
MicrosoftOffice®マクロ Office製品の自動処理
Ruby
(3)
ウェブアプリ開発 ウェブアプリ全般
クックパッド
GitHub
PHP
(3)
ウェブサービス開発 ウェブサービス全般
WordPress
Facebook
メルカリ
Python
(3)
ウェブアプリ開発
AI/人工知能開発
AI/人工知能
ブロックチェーン
YouTube
Instagram
Dropbox
Swift
(3)
MacOS/iPhoneアプリ開発 MacOSアプリ
iPhoneアプリ
Java
(4)
システム開発
家電制御組み込み
スマホアプリ開発
家電制御
AndroidOS
スマホアプリ
Twitter
LINE
C#
(4)
システム開発
ゲーム開発
システム全般
Windowsゲーム
HoloLensアプリ
Sansan(名詞管理)
C/C++
(5)
システム開発
ゲーム開発
OS
システム全般
ゲーム機
Switch
プレステ
Xbox

難易度:易(1)~ 難(5)

ITエンジニアになりたい。プログラミング言語を学びたい。と思っても、言語がたくさんあってどれを選べばよいのか判断が難しいものです。

それぞれの言語で、何ができるのか、どんなことに使われているのか。

言語ごとの特徴を知れば、プログラミング言語を選ぶときのヒントになります。プログラミングスクールを選ぶときに、コースの見極めにも役立つでしょう。

上の表の言語は、現在いろいろなプロダクトで使われている主要な言語であり、プログラミングスクールもカリキュラムにしている言語です。

これらの主要なプログラミング言語にはどのような特徴があるのか。この記事ではプログラミング言語の特徴について解説します。

プログラミング言語の特徴

言語 OS 型付け コンパイル パラダイム
C WindowsMacOSLinux 静的 手続き型
C++ WindowsMacOSLinux 静的 手続き型・オブジェクト指向
C# WindowsLinux 静的 マルチ
COBOL WindowsMacOSLinux 静的 手続き型・オブジェクト指向
Fortran WindowsMacOSLinux 静的 手続き型・オブジェクト指向
Go WindowsMacOSLinux 静的 マルチ
Java WindowsMacOSLinux 静的 関数型・オブジェクト指向
JavaScript WindowsMacOSLinux 動的 不要 マルチ
Kotlin WindowsMacOSLinux 静的 関数型・オブジェクト指向
Ovjective-C MacOS 動的 マルチ
Perl WindowsMacOSLinux 動的 不要 マルチ
PHP WindowsMacOSLinux 動的 不要 マルチ
Python WindowsMacOSLinux 動的 不要 マルチ
R WindowsMacOSLinux 動的 不要 関数型・オブジェクト指向
Ruby WindowsMacOSLinux 動的 不要 関数型・オブジェクト指向
Scala WindowsMacOSLinux 静的 関数型・オブジェクト指向
Swift WindowsMacOSLinux 静的 関数型・オブジェクト指向
VBA Windows 静的 不要 手続き型
VisualBasic Windows 静的 不要 手続き型・オブジェクト指向

OS:WindowsWindows、MacOSMacOS、LinuxLinux

OS

OSとは

OS(Operating Systemオペレーティングシステム)は、パソコンの動作を担うシステムのことです。主要なOSにはWindows、MacOS、Linuxがありますが、シェアの90%はWindowsとなっています。

現在は、ほとんどのプログラミング言語がWindows、MacOS、Linuxリナックスに対応しています。

市販されているパソコンのOSはWindowsかMacOSです。どちらのOSでもプログラミング言語はたいてい動きます。

初心者が学びやすいJavaScript、PHP、PythonなどはOSに依存しないので、プログラミング言語を選ぶときにOSを意識する必要はあまりないでしょう。

また、プログラミング学習のためにパソコンを買おうと考えている方には、Windowsのパソコン(ThinkPadなど)をおすすめします。ウェブデザインを学習したい方は、業界やデザインソフトと相性のよいMacOSのパソコン(AirMacなど)がおすすめです。

現場で使われ続けるプログラミングに最適なノートPC2機種

型付け

静的(例:C言語)

int main(void) {
int x, y; //整数を宣言
double z; //小数を宣言
x = 3;
y = 2;
z = x / y;
printf("%f\n", z);
return (0);
}

動的(例:Python)

x = 3
y = 2
z = x / y
print(z)

※C言語は型の宣言が必要でコードが冗長ですが、Pythonは同じ処理をこれだけシンプルに記述できます。

型付けとは

型付かたつけとは、プログラムに書いた字(文字・数字・日付など)をパソコンが判断できるように宣言によって教えることです。

動的型付けのプログラミング言語は、プログラム実行時に自動で型付けされるので記述(コーディング)量が少なくなります。読み書きに気を遣わなくてよいので扱いが楽です。

プログラミングの学習中に非常によく遭遇するエラーが、型のエラーです。「型が一致しません」というエラーに引っかかって手が止まります。

動的型付けの言語を選ぶと、型のエラーで悩まされることが少なくなります。プログラミング学習でもストレスを軽減できます。

コンパイル

コンパイルとは

コンパイルとは、人間が書いたプログラムを機械語に翻訳する作業のことです。コンパイルするとプログラムの実行速度は高速になります。

コンパイルが不要なプログラミング言語は、プログラムの書き換えや拡張がしやすく扱いやすいです。扱いが楽なため初心者にも向いています。

コンパイルの必要が無い場合はインタプリタという方式でプログラムが実行されていきます。コンパイルしたプログラムよりも実行速度が遅くなるのがデメリットです。

とは言っても、実行速度の差は人間が感じられるようなものではありません。

パラダイム

パラダイムとは

パラダイムとは、プログラムの記法スタイルのことです。処理を順に記述する手続き型、プログラムを関数として記述する関数型、オブジェクトとして扱うオブジェクト指向などがあります。

手続き型がもっとも原始的であり、処理を淡々と上から書いていく単純な記法です。

現在はオブジェクト指向プログラミングが多くの開発現場で採用されていることもあり、オブジェクト指向を習得しておくと有利です。

「マルチ」は、オブジェクト指向も含めて手続き型でも関数型でもプログラミングできるパラダイムのことです。

マルチパラダイムのプログラミング言語を選んでおくと、応用力の高いプログラミングを身につけていくことができます。

プログラミング言語の用途

プログラミング言語の用途

  • ウェブサイト:JavaScript、PHP
  • ウェブアプリ:JavaScript、Ruby、Python
  • スマホアプリ:Java、Kotlin、Swift、Go
  • システム/組み込み:C、C++、Java
  • ゲーム:C++、C#、JavaScript
  • AI/人工知能:Python、R
  • オフィス業務:VBA

ウェブサイト・ウェブアプリ

動的・コンパイル不要(インタプリタ)

ウェブでは、HTML(マークアップ言語)と合わせて記述できるJavaScriptPHPが定番になっています。

ウェブページは、デザインや機能などの変更に応じて書き換えする頻度も多いので、JavaScriptやPHPのようなスクリプト言語が向いています。

プログラムの実行速度がそれほど高速である必要はなく、書き換えしやすいことが求められます。

2010年代はRubyという言語もよく使われていましたが、保守性が悪いので今後は衰退していくと考えられます。

スマホアプリ

静的・コンパイル要

スマホのOSに合ったプログラミング言語が使われます。

iPhoneならアップルが生み出したSwiftが、アプリ開発に使われます。

AndroidOSはJavaで作られているのでJava、または最近ではKotlinもアプリ開発に使われます。

スマホアプリは、リリースしてしまうと書き換えの機会が無いので、コンパイルする言語が向いています。

システム/組み込み

静的・コンパイル要

家電や自動車、ATMなどの機械には、決まった動作をさせるプログラムが組み込まれています。この用途を組み込みと言います。

たとえば、炊飯器には「ボタンが押されると30分炊いて10分蒸らす」というようなプログラムが組み込まれています。

コンパイルする言語はプログラムの実行速度が早いです。また、製品に組み込んでリリースしてしまうと今後書き換える必要が無いので、C++Javaなどのコンパイルする言語が使われています。

システムや組み込みのプログラムは、非常に重い責任を負っています。誤動作によって人命をおびやかすことにもなりかねないからです。この分野のプログラマーには強い責任感が求められます。

ゲーム

静的・コンパイル要

現代のゲーム(家庭用ゲーム機やPCゲーム)では高速で描画が繰り返されるので、高速で処理できるプログラミング言語が向いています。

いまどきの高密度なゲーム画面の描画には常に演算が行われるため、処理速度の速いプログラミング言語C++や、ゲームエンジンUnityC++セットが使われることが多いです。

また、PCブラウザのゲームではJavaScriptが使われることが増えています。

AI/人工知能

動的・コンパイル不要

近年、注目されている人工知能やロボットの開発には、数理ライブラリの揃うPythonや、統計分析を得意とするRのようなプログラミング言語が向いています。

とくにPythonはライブラリが豊富なため、幅広い分野に応用が利く万能さが好まれています。Rは統計分析に使いやすいため、機械学習に多用されています。

RでできることはPythonでもできるため、Rの需要がPythonに呑まれていく動きが見られます。

ライブラリとは

特定の分野でプログラミングしやすいように機能がまとめられたツールです。たとえばPythonでExcelライブラリを使うと、Pythonで記述したプログラムでExcel処理できます。

オフィス業務

静的・コンパイル不要

オフィスワークでExcelを使う場面は多いと思います。Excelにおいて手作業で行っている業務は、ほとんどの場合VBAで自動化できます。

Excelでマクロ記録を使用したことがある人も多いと思います。マクロとはコンピューターの処理を自動化する機能のことを言います。Excelでマクロ記録したときは、VBAでマクロが記録されています。

VBAは開発環境がExcelやAccessなので、パソコンにMicrosoftOffice®が入ってさえいれば、その開発モードで学習を始められます。

HTML/CSSの特徴

  • おすすめ度:★★★★☆
  • 習得難易度:1
  • できること:ウェブ画面レイアウト・ウェブデザイン
  • プロダクト:ウェブフロント全般

HTMLはウェブページのレイアウト、CSSはウェブページのデザインを担う言語です。

プログラミング言語ではないので制御構造を持ちません。そのため、単に記述のしかたを覚えるだけで習得できます。未経験者でも1~2ヵ月間で単一のウェブページを作るスキルを身につけられます。

ウェブアプリ開発では、ブラウザやアプリに表示される画面デザインにも使用されます。ウェブ系言語のRubyやPHPを学習する場合は、HTML&CSSも一緒に習得しなければ実務で役立ちません。

ウェブに関わる以上は、HTML&CSSを避けては通れないです。

方向性

  • ウェブデザイナー
  • ウェブアプリ開発エンジニア
  • ブログ運営者
  • ホームページ制作代行

ウェブデザインスクールで学習するのがHTML&CSSです。ウェブページのレイアウトとデザインを学ぶことで、ホームページやLPを作るスキルが身に付きます。

プログラミングスクールでも、カリキュラムの最初はHTML&CSSとなっているケースがほとんどです。HTML&CSSでコーディングに触れてもらい、プログラミング言語へのステップにしているわけです。

HTML&CSSをある程度覚えたら、WordPressワードプレスでブログを始めてみるのも良い役立て方です。WordPressはHTML&CSSさえ知っていれば、記事(ウェブページ)を作ることができます。

JavaScriptの特徴

  • おすすめ度:★★★★★
  • 習得難易度:2
  • できること:ウェブ開発ウェブアプリ開発
  • プロダクト:ウェブフロント全般・ウェブアプリ・ブラウザゲーム・ChatWork・Slack・Node.js(サーバー環境)

JavaScriptは、ウェブページやウェブアプリのフロントエンド(ブラウザやスマホ画面)で動作するプログラミング言語です。

HTMLタグのなかに<script>タグを用いてプログラムを混ぜ込んで記述することもできます。HTMLを習得した次に学習するのにも適した言語です。

JavaScriptは、インターネット黎明期れいめいきには単にウェブブラウザに「クリック禁止です」のような警告を出すことくらいの用途にとどまっていました。しかし、近年は目覚ましい応用力を発揮しています。jQueryやReactリアクトによってウェブアプリ開発が容易になり、世界中でシェアが増大しています。

サーバー実行環境のNode.jsは、フロントエンドでのみ動く言語だったJavaScriptをサーバーサイドで動くようにしたことで、開発の可能性を飛躍的に押し広げました。実装のための派生言語TypeScriptが注目されています。

GoogleもJavaScriptをもとにGoogle Apps Scriptを生み出し、スプレッドシートなどのブラウザアプリ開発に使っています。

私も次は、Google Apps Scriptを学習したいです。

JavaScriptは今や応用力の高い言語として世界中から将来性を期待される言語となっています。

方向性

  • ウェブデザイナー
  • ウェブアプリ開発エンジニア
  • ウェブシステム開発エンジニア
  • ホームページ制作代行

ウェブデザイナーに必須のHTML&CSSに加えて、動きのあるページを作るスキルにJavaScriptが必要となります。ウェブデザイナーがスキルアップとして学習することも多いです。

サーバー実行環境のNode.jsは、チャットなどのリアルタイム通信に使われます。今後の需要が高く見込まれるため、JavaScriptを習得してからNode.jsでサーバーサイド開発に進むのも良い展望です。

JavaScriptと似た記法を持つ言語Dartダートも注目されています。一時は「もっとも学ぶ価値のない言語」として憂き目にあったDartですが、近年は開発環境Flutterでの開発しやすさを得て、スマホアプリ開発でシェアを伸ばしています。スマホアプリ開発を目指すなら、JavaScriptからDartに進むのも良いでしょう。

Rubyの特徴

  • おすすめ度:★★☆☆☆
  • 習得難易度:3
  • できること:ウェブアプリ開発
  • プロダクト:ウェブアプリ全般・クックパッド・GitHub

Rubyは、日本人開発者まつもとゆきひろ氏によって生み出され、世界に羽ばたいたプログラミング言語です。

フレームワークのRuby on Railsルビーオンレイルズによりウェブアプリ開発に多用されてきました。Ruby on Railsは開発工程を短絡的に効率化させ、高い生産性を実現しました。

プログラミングの理解が浅くてもアプリくらいは作れてしまうという、とっかかりの良さゆえにプログラミングスクールでもRuby on Railsを教えるところが多いです。

しかし、Ruby on Railsを学習すると、それがプログラミングだと思ってしまいがちです。Ruby on Railsに満足せず、フレームワークに頼らずともプログラミングできる実力を身につけていく向上心を自分で持つことがRubyの習得につながります。

ただ、他の言語(Pythonなど)とくらべて、Rubyの言語仕様は自由過ぎるのが欠点です。書く人によって記述にひどいバラツキが出るため、他人のコードを読み解くのに苦労した経験があります。

覚えてしまえば、Rubyの開発者まつもとゆきひろ氏の思惑どおり「プログラミングを楽しむ」ことができるかもしれません。が、わざわざRubyに学習コストをかけるくらいなら、応用性・将来性の高いPythonの方が良いのでは?というのが率直な印象です。

方向性

  • ウェブアプリ開発エンジニア
  • ウェブシステム開発エンジニア

一時のRuby on Railsの大流行により、たくさんの企業がプロダクトを持っています。

そのため、未経験者がITエンジニアを目指す場合は、Ruby on Railsがもっとも近道です。実際に、多くのプログラミングスクールがRuby on Railsのカリキュラムで生徒を育成し、修了後にアプリ開発企業への転職をサポートしています。

ただし、覚悟しておかなければならないのは、今後は新規開発にRubyが選ばれる機会は減っていくでしょう。同じことができるPythonの方が圧倒的に便利だからです。

phpの特徴

  • おすすめ度:★★★★☆
  • 習得難易度:3
  • できること:ウェブサービス開発
  • プロダクト:ウェブサービス全般・WordPress・Facebook・メルカリ・EC-CUBE

PHPはカナダの開発者ラスマス・ラードフが自身のウェブサイトを効率的に運用するために生み出した言語です。

個人用途の言語ですが、HTMLタグのなかに<?PHP…?>の記述でプログラムを混ぜ込むことができる利便性が支持され、2000年頃から急速に世界中にシェアを広げました。

PHPの用途をイメージしやすいのは、ブラウザやアプリ画面を通して、ユーザーの入力(リクエスト)に応答するシステムです。そのため、旅行予約やグルメサイトなどのウェブシステム開発に使われます。

近年はフレームワークLaravelララベルによって生産性が上がり、開発現場でも多用されています。PHP自体のバージョンアップで処理速度が高速化されたことも追い風となっています。

方向性

  • ウェブサービス開発エンジニア
  • ブログ運営者
  • ホームページ制作代行

プロダクトとして有名なのがWordPressワードプレスです。ブログ人口がもっとも多い日本ではとくに、個人ブログから大企業のホームページまでもWordPressが使われる環境がPHPの需要を押し上げています。

そのため、クラウドソーシングでもWordPressによるサイト構築やカスタマイズの案件が非常に多い状況です。もっとも副業しやすい言語かもしれません。

学習においてもインターネット上に情報が多いので、初心者でも勉強しやすい言語です。学習するのための環境構築がやや難しいです。プログラミングスクールや学習サービスを頼るのが良いでしょう。

Pythonの特徴

  • おすすめ度:★★★★★
  • 習得難易度:3
  • できることウェブアプリ開発・AI/人工知能開発
  • プロダクトAI/人工知能・ブロックチェーン・YouTube・Instagram・Dropbox・ペッパー君

この言語のすごさは、書くとわかります。とくに、他の言語から乗り換えた場合は、その良さに驚くでしょう。読みやすく、書きやすい。

それもそのはず、開発者グイド・ヴァンロッサムは、常に書きにくく読みにくい既存のプログラミング言語にごうやして、「万人が読み書きしやすい言語仕様」をPythonに落とし込みました。

この言語仕様は当たり、2010年頃に米国シリコンバレーでビッグデータ分析に使われ始めます。現在はAI/人工知能開発に多用されるようになりました。

こう聞くと難しい言語なのかと思われるかもしれません。しかし、Pythonは読み書きしやすい言語仕様のため、未経験者でもとても学びやすい言語です。日本の高等学校の情報科でもPythonを履修することになっています。

YouTubeやInstagramなどのウェブアプリ、画像処理、ウェブ上のデータ収集、Excel自動処理など、何にでも使える万能な言語です。プログラミング言語のなかで、もっとも学習コスパが良いプログラミング言語と言えるでしょう。

エンジニアとして長く食っていきたいならPython一択です。

方向性

  • ウェブアプリ開発エンジニア
  • AI/人工知能開発エンジニア
  • 業務タスク自動処理

Pythonは、フレームワークやライブラリが豊富なため、どんな分野にも応用が利きます。仕事としては上に挙げたものが主となりますが、業務の効率化においては、どの仕事でも使える応用性があります。

未経験者の場合は、今の職場にある手作業のルーティーンワークを自動化したり、Excelの手入力を自動処理するあたりから取り組むと、利用価値を感じやすいです。

ある程度Pythonを習得したら、その後の展望は大きく開けます。技術者の需要が追い付いていないAI/人工知能開発にも進めます。近い将来は、ブロックチェーンをPythonが担うようになるでしょう。

学習コスパにすぐれ、高い将来性のあるPythonを今のうちに学んでおくことは、生き方の可能性を大きく広げる賢明な手段と言っても過言ではありません。

Swiftの特徴

  • おすすめ度:★★★☆☆
  • 学習難易度:3
  • できることMacOS/iPhoneアプリ開発
  • プロダクトMacOSアプリ・iPhoneアプリ

Swiftは、Apple社が基盤言語としていたObjective-Cに代わり、開発機会の拡大を狙って2014年にリリースされたプログラミング言語です。

Swiftは実装においてコンパイルする必要がありますが、開発はMacOS開発環境Xcode上でインタラクティブ(対話的)に行えます。Xcodeのちょかん的な使いやすさも相まって、開発しやすく感じました。

このおかげもあって、SwiftはiPhoneアプリ制作の障壁を大きく下げることに成功しています。81歳でiPhoneアプリを作った若宮正子さんのことが話題にもなりました。

欠点は、用途がApple製品・Macに限られることです。日本においては、スマホのシェアはiPhoneが高い状態ですが、世界的にはAndroidのシェアが上回っています。

Swiftの将来性は、iPhoneなどのApple製品のシェアにかかっています。

方向性

  • iPhoneアプリ開発エンジニア

プログラミング学習には時間、費用ともにそれなりのコストがかかります。Swiftの有用性と学習コストをよく勘案して判断したほうがよいでしょう。

iPhoneアプリをどうしても開発したい。という強い動機があるならSwiftに挑戦する価値があります。

iPhoneアプリを自分でリリースできれば、アプリ販売やアプリ内広告で収益を得ることも展望に入ります。

Javaの特徴

  • おすすめ度:★★★☆☆
  • 学習難易度:4
  • できること:システム開発・家電制御組み込み・スマホアプリ開発
  • プロダクト:家電制御・AndroidOS・スマホアプリ・Twitter・LINE

Javaは、家電に制御プログラムを組み込む目的で開発されたプログラミング言語です。オブジェクト指向で柔軟に開発でき、コンパイルして実装することによる堅牢さが特徴です。

Javaの応用力は高く、JSP(Java Server Pages)でPHPのようにHTMLに混ぜ込んで記述することもできます。これを実現しているのがJavaServletジャバサーブレットであり、OSや機器に依存せずにプログラムを実行できるようになります。

官公庁や金融機関のシステムや、家電制御の組み込みに常用されています。スマホのAndroidOSもJavaで作られています。

このような用途ゆえに、Javaエンジニアの責任は非常に重く、開発にあたってはそれなりの経験を積んだプログラマーが求められます。とくにJavaでのシステム開発には、データベース、JavaServletによるデータ処理を含めた広い知識が一丸いちがんに必要となります。

未経験者が習得するには、相応の学習期間と実務経験が必要な言語です。

方向性

  • システム開発エンジニア
  • メーカー開発エンジニア
  • スマホアプリ開発エンジニア

手堅い業界の需要が多く、求人は安定的です。この点に魅力を感じて、Javaエンジニアになりたいと思う方も少なくないでしょう。

しかし、Javaを実務で扱えるレベルというのは、他の言語よりはるかに高いものです。

プログラミング経験の長い私でも難しく感じます。

ただ、どういうわけか、「Javaエンジニア募集!未経験可」の求人が目立ちます。ここにちょっとした闇を感じるのは私だけではないでしょう。

スマホアプリ開発であれば、求められるスキルレベルは下がります。Javaエンジニアを目指す場合は、スマホアプリ開発を足掛かりにすると学習順序としても着実です。

Androidアプリの開発ではKotlinコトリンを使う現場が増えてきています。Yahoo!もニュースやカレンダーアプリに使っています。Androidアプリ開発を希望する場合は、JavaにこだわらずKotlinを検討してみても良いでしょう。

C#の特徴

  • おすすめ度:★★★☆☆
  • 学習難易度:4
  • できること:システム開発・ゲーム開発
  • プロダクト:システム全般HoloLens(VR)・ゲームソフト(Switch・プレステ・Xbox)Sansan(名詞管理)

C#はMicrosoftが開発した言語で、主にWindowsのアプリケーションを開発に使われる言語です。

Microsoftの提供する開発環境VisualStudioをパソコンにインストールすることで開発環境が整うので、初学者でも学習を始めやすい言語です。Javaに似た記法を備えており、オブジェクト指向プログラミングができればC#での開発をより高度に効率的に行えます。

ゲームエンジンUnityでのゲーム開発を行うためにも多用されています。コンシューマーゲームやスマホゲーム開発者を目指すなら、C#とUnityのセット一択と言っても良いでしょう。

ただ、実際の用途はVRやゲームなどに偏りがあるため、一般的な有用性を感じにくい言語です。また、これらのプロダクトを実現するには高いレベルのプログラミングスキルが必要です。

VRやゲーム開発に強い興味があるなら、C#を学ぶ価値があります。

方向性

  • VR・ゲーム開発エンジニア
  • スマホゲーム開発エンジニア

現在のところC#の用途はゲーム開発の印象が強いです。

Microsoft VisualStudioをパソコンに導入すれば学習環境が整うのは、初学者にとっても手を付けやすいです。ブラウザやアプリ画面でユーザーが入力するフォームをきれいに作っていくことが可能です。

学習の際は、まずWindowsで操作する簡単なアプリケーションを作っていくところから始めるとC#の有用性を感じやすく、学習の動機にもなるでしょう。

オブジェクト指向プログラミングを身につけられれば、VRやゲーム開発エンジニアへの展望も見えてきます。

C/C++の特徴

  • おすすめ度:★☆☆☆☆
  • 学習難易度:5
  • できること:システム開発・ゲーム開発
  • プロダクト:OS・サーバー・システム全般・コンシューマーゲーム機器

現在、主に使われている言語のなかで、もっとも古い言語です。原始的な言語仕様ゆえに、OSやプログラミング言語なども作れるみなもととも言える存在です。

カエルもオケラもアメンボもC言語でできていると表現する人もいます。

ガベージコレクションを持たないC言語は、処理に必要なメモリ領域を確保したり、不要となったメモリ領域を解放したりといった、細かな指定をプログラムする必要があります。コンピューターの知識が欠かせません。

PHPやPythonのシンプルな記法に比べると、C言語の記法はとてもレガシーです。他の言語では関数化されているような処理も、C言語では手作りしなければならないケースも多いです。

未経験にC言語をおすすめできないのは、こういった特性ゆえに学習コストがかかり過ぎる点にあります。しかし、コンピューターがプログラムを実行することがどういうことなのか…といった本質を学ぶには最適です。理系の大学でC言語を履修することが多いのはそのためです。

方向性

  • システム開発エンジニア
  • ゲーム開発エンジニア

処理速度が非常に速いため、あらゆる物をC言語で作れば理想的でしょう。しかし現実には、C言語ほどの厳密で手間のかかるプログラムは要求されません。手軽に処理さえできれば良いものに、わざわざC言語は必要ないわけです。

正確に運用できなければ信頼性を損なうようなシステム、人命にかかわるようなシステム。または、高速な描画処理が連続するゲームなど、C言語の用途は決まってきます。

学習には相当な期間を要するため、自身のやりたいことや目的がC言語でなければならない場合が明確であるなら学べば良いと感じます。

まとめ

  • プログラミング言語の世界的な検索数を集計しているTIOBEを見ると、いまの主要なプログラミング言語がわかる。
  • プログラミング言語の特徴を知っておけば、これからプログラミングを学習する言語を決めやすくなる。
  • プログラムを動かせるOSや、型付け、コンパイル、パラダイムに、プログラミング言語の特徴があり、用途が分かれる。
プログラミング言語の種類【分野分類を知って言語を決める】

プログラミングの未経験者に向いているのは、次のプログラミング言語です。

  • Python:書きやすく読み書きしやすい言語仕様であるため、学習しやすい。アプリからAI開発まで何にでも応用でき、将来性が高い。
  • JavaScript:フレームワークやライブラリによりアプリ開発がしやすく発展している。サーバーサイドの構築も可能になり、将来性が高い。
  • PHP:ウェブ開発に親和性があり、未経験でも用途を理解しやすい。転職や副業での需要が高く、仕事を見つけやすい。
  • この記事を書いた人

non

小学生のときにBASIC言語でプログラミングを覚え、社会に出てからはPythonを主力に通信業界で無線設計とGISシステム開発に携わること12年目。プライベートではPHP・MySQLでウェブサービスを作りつつ、副業で収入を得ています。「プログラミングは人生を豊かにする」と実感しています。