沢山あるプログラミング言語、
何からはじめて良いかわからないという人が多いと思うので、自分の知っている範囲でまとめてみた。
でも間違っていることもあると思う。
※ぜんぶ僕が使えるわけではない。
それぞれの言語は、以下の4つ指標で表現した。
難易度 難しいかどうか
仕事度 仕事があるかどうか
悟り度 プログラミングをとうして精神がさらなる高みに行くかどうか
推奨度 総合的に初心者に薦められるかどうか
それぞれを3段階で評価
では行ってみよう。
C言語
難易度 ★★★
仕事度 ★★★
悟り度 ★★★
推奨度 ★
昔(1972年)からあるベストセラー言語。
どこもかしくもC言語。誰もが皆お世話になっている。
今も需要がある。
組み込み系(パソコンではなくてリモコンとか制御盤とか)で使われている。
逆にWEB系とかには使われない。
ハードウェアに近い部分を触ることができるので深いことができる。
自由度がある文法だけれども、その分プログラマがどうにかしなければならない部分があるので煩わしい。
最初にやるにしては難易度が高くておすすめできないし、途中でやる気がなくなる可能性大。
そもそもWindowsで開発環境を整えるのが少し面倒。
使われた主な製品
LinuxとかOS系、ミドルウェア系、というかほぼ何でも
C++
難易度 ★★★
仕事度 ★★★
悟り度 ★★★
推奨度 ★
C言語を発展させてオブジェクト指向を取り入れた言語。
でも、C言語の難しさ新たな仕様がプラスされとても複雑な言語になった。
それでも規模の大きいアプリケーションを作ることにも向いているし、C言語と同じようにハードウェアよりで実行速度も早く、
需要はある。
使われた主な製品
色々なアプリ。FireFoxとかChromeとか
ゲームエンジンとか
Java
難易度 ★★
仕事度 ★★★
悟り度 ★
推奨度 ★★★
JavaはC言語やC++の煩わしさを極力なくして、ストレス無く書くことができる。
ただし、その分自由度は無くなり厳密な文法を守ることが要求される。
ただしすぐに文法間違いも教えてくれるので初心者には優しい。
今ITリーマンが最も使える言語。仕事はあるけれど技術者も多いのでオンリーワンにはなれない。
ただし、開発環境を整えるのは上の2つよりは簡単だし、
動いて形のあるソフトウェアを作るまでの道のりは短く、勉強にはなる。
大規模なシステムに向いていて、企業の内部で動くシステムによく使われている。
またAndroidアプリはJavaを使って作られるので、その道でも需要はある。
ただ冗長な書き方をしたり自由度が無いので、どちらかというと仕事向けというか楽しさは半減…
(仕事で使っているからかも知れない…)だから悟り度は低め。
でもネットに情報も多いし、プログラミング始めるには良いと思う。
使われた主な製品
Androidアプリ
各種企業のウェブアプリ
世界の30億のデバイス
Ruby
難易度 ★★
仕事度 ★★★
悟り度 ★★★
推奨度 ★★★
日本生まれのプログラミング言語Ruby
Javaより少ない量で動くものが作れる。
Javaよりも先に進んだ文法なので、楽しく作れる。
主にRuby on RailsというWEBアプリを作るフレームワークでの需要が多い。
日本生まれということもあって日本で需要が多い
簡単なスクリプトから、WEBアプリまで
やれることは様々。
使われた主な製品
Ruby on Railsで作られた製品(githubとかRedmineとか)
Mikutter(Twitterクライアント)
Python
難易度 ★★
仕事度 ★★
悟り度 ★★★
推奨度 ★★★
Rubyと競合する言語
Rubyに似ているけれど、Rubyは一つのやりたいことに対して色々なやり方が用意されているけれど
Pythonは少ないやり方でプログラマごとのコードのゆらぎを減らしているらしい。
日本ではRubyのほうが需要があるけれど、海外はPythonのほうが需要がある。
こちらもDjangoというWEBアプリを作るフレームワークがあって、WEBアプリを作る需要もある。
Linuxとの親和性が高い。
使われている主な製品
Dropbox
Googleの内部でいろいろ
moinmoin(wikiソフト)
Django
APT
PHP
難易度 ★★
仕事度 ★★★
悟り度 ★
推奨度 ★
WEBアプリを作ることに特化された言語。
HTMLの中に書き入れる書き方が従来の書き方だけれども、
今は別に書くのが主流らしい。
動的なWEBページでは圧倒的な需要がある。
逆に標的にもされやすく、脆弱性の報告も多い。
ただ、WEBアプリに特化した言語ということなので、
この言語だけでなくHTMLやJavaScriptなどの学習も必要だし、
少々特殊なので、プログラミング言語学習のスタートを切る選択にしては適切ではないかも知れない。
使われている主な製品
様々なウェブページ
WordPress(このブログもそう)
Facebook
wikipedia
もう殆どのウェブページがそうだと思っていいんじゃないか?
JavaScript
難易度 ★★
仕事度 ★★★
悟り度 ★★
推奨度 ★★
Javaとは関係ない言語
主にWEBページを動的に表示させることに使われる。
HTMLと共に一緒に覚える。
WEBページを動的に動かすだけの言語ではなく、
Node.jsなどを使ってサーバーサイドで使われることもある。
言語仕様も面白く、書いていて楽しい。
とにかくWEBページには必要とされる言語で、
PHPはWEBページで沢山使われるけれど、PythonやRubyが代わりになることができるが、
JavaScriptはシェアNo.1で独占状態。
ちなみにPHPはサーバー内で動く、HTMLにくっついているJavaScriptはクライアントつまり各々のユーザーのパソコンで動く。
JavaScriptだけを習っても、HTMLやCSS、そしてサーバーサイドで動かすPHPやRubyなどの言語も一緒に覚えないといけないので
初心者のスタート言語にはおすすめしない。
二個目にチャレンジする言語としてやると良いと思う。
主に使われている製品
ほぼほとんどのウェブページ
Scala
難易度 ★★★
仕事度 ★
悟り度 ★★★
推奨度 ★
Java実行環境で動く関数型言語と言われるタイプのプログラミング言語
今まで紹介した言語は手続き型言語やオブジェクト指向言語に分類されるけれども、そのどれとも違う。
大幅に違うのでハードルが高いし、中々それを説明できる人もいないので、初心者が最初に始める言語には全く不向き。
でも、使っていると楽しく知的好奇心も刺激される。だから悟り度は高い。
Javaと同じ土台を使っているのでJavaと相性は抜群。
PlayFrameWorkというものがあって、WEBアプリにも向いている。
ただ、意外と知っている人が少なくて、ITリーマンオッサンには知名度は致命的に低い。
主に使われている製品
Twitter
Haskell
難易度 ★★★
仕事度
悟り度 ★★★
推奨度
純粋な関数型言語。
様々なサイトを見ているとやってみたい!!と思うけれど本もサイトもすくねー
フレームワークも何があるのかもわからない。
Scalaは関数型言語とはいってもJavaの文法を足がかりになんとか行ける感じだけれどもHaskellはわからない…
主に使われている製品
知らない
C#
難易度 ★★
仕事度 ★★
悟り度 ★★
推奨度 ★★
Windowsアプリを作ることに特化された言語。
マイクロソフト謹製の開発環境があって、本もサイトも多い。
Javaに似た感じの文法で、GUIアプリ(ウィンドウとかあってマウスを使うようなソフト)も簡単に作れる。
ただしあくまでもWindowsに特化しているので、つぶしは利かないかも知れない。
一応Windows以外の実装もあるらしいがあまり使われている場面を見ない。
でもプログラミングはじめて二年目くらいで簡単にGUI家計簿アプリを作ることができたので、勉強には向いているかも知れない。
主に使われている製品
Windowsのアプリ色々
VBA
難易度 ★
仕事度 ★★★?
悟り度
推奨度 ★
エクセルについてくるプログラミング言語(ワードとかにもあるけれど…ほぼエクセルで使われる)
エクセル大好き日本企業の様々なエクセルファイルを魔改造できる。
使えるとオッサンに可愛がられる。
ただし文法が少々今風ではなくて書いていてつまらないし、エクセルの枠から出るのは難しい。
一応C#と同じように.NET FrameWorkというWindowsの共通基盤を使うことが出来て、エクセルでインベーダーゲームを作っている人がいたけれど
あくまでもエクセルがあってのことなので汎用さは全くない。
仕事で必要になればやればいいと思う。すぐまあまあ使えるようになると思う。
あと、仕事をする際のアピールにはならない。
主に使われている製品
ゴミエクセルファイル
LISP
難易度 ★★★
仕事度
悟り度 ★★★★★★★★
推奨度
むかーし(1958年)からある言語。
多くの方言が存在する。CommonLispとかClojureとかschemaとか
関数型言語に分類されるけれども、他のどの言語ともちょっと違っている文法。
言語仕様はシンプルなので、様々なプログラミング言語上でLISP実装を作る人が多い。
あまり仕事はないけれども、学問方面には向いているらしい。
ただ、ポール・グレアムが後のYahooストアになるviawebを作ったのはこの言語で、
拡張性のある言語仕様は可能性がある。
事実、ガベージコレクションや関数オブジェクトなどの仕様は他の言語にも受け継がれるようになったそうだ。
でも最初にやる言語としては不向き。
使われた主な製品
Emacsの拡張用に
vieaweb
※Objective-CとかSwiftとか林檎製品系の言語もあるけれど、割愛