Scribble at 2022-06-08 10:29:29 Last modified: 2022-06-08 10:51:41
This is an index to notable programming languages, in current or historical use. Dialects of BASIC, esoteric programming languages, and markup languages are not included. A programming language does not need to be imperative or Turing-complete, but must be executable and so does not include markups such as HTML or XML, but does include domain specific languages such as SQL and its dia
定期的にフォーラムや Q&A サイトで話題となるのが、「どれくらいのプログラミング言語を習得しているか」とか、「どのプログラミング言語を習得するべきか」といった質問だ。もちろん、最初に言っておくべきことがあるので、特に学生や初心者の方々には留意してもらいたい。
最初の問い(どれくらいのプログラミング言語を習得しているか)は、結局のところどういう回答がどれほど集まろうと、しょせんはアンケートにすぎない。プログラミング言語を1つしか知らない人でも(一つしか知らないというのは、いまどき特殊だとは思うが)プロのエンジニアとして特別な環境で仕事ができるかもしれないし、100個の言語を習得している実装経験のないアマチュアだっている。プログラミング言語を習得している数は、おおむねプログラミング言語というもの全般についての理解なり見識と正の相関があるとは言えるかもしれないが、プログラマとしての現実的な技量とか、もちろん企業内での信頼や地位とは殆ど関係がない。よって、たくさん習得していると就職に有利だとか、あるいは同僚から信頼されたり出世できるなどということは、一般論としてはありえない。
そして次の問い(どのプログラミング言語を習得するべきか)は、自分自身がプログラミング言語を学ぶ「内在的」あるいは「自発的」な動機とか目的によって答えが変わって当然だし、自分が特定のプログラミング言語を学ばなくてはいけないという仕事上の「外在的」あるいは「強制的」な要求とか目的によっても答えが変わるのが当たり前である。よって、一般論として言えば、或る人物の動機や目的や状況や事情を知らない他人が、どの言語を習得するべきだなどと勧めたり決めたりできる問題ではない。
以上の二つを押さえておけば、おおよそこうした話題を取り上げるメディアの記事とかフォーラムのスレッドが、読むに値しない暇潰しでしかないという、プロの見識が身につくというものだ。プロのエンジニアは、こんな下らない話題など気にしない。自分が学びたいか、学ぶ必要があるものを習得するだけである。会社や他人から要求される以外に何を学ぶかは、自分で調べたり見つけたりできる情報や資料は、いまやオンラインでいくらでも手に入る。たとえば、上記で紹介した Wikipedia の "List of programming languages" には十分な数のエントリーが掲載されている。仮に、何かマイナーな取りこぼしがあるとしても、それを知らなかったことであなたの開発能力に何か重大な不足が生じたり、知っていれば格段の成果が上がったと見込める可能性は、ほぼゼロである。そんな未知の決定的な情報がないかどうかを心配する暇があったら、手持ちの情報をもとに現実にプログラミング言語を一つでも習得して成果(それが儲けや就職や昇進という「実績」にまで結びつくかどうかは別の話だが)を上げる方がマシである。
現実的な議論として言えば、仕様の変更とかセキュリティ上の問題とかバグ報告、それから開発上のヒントや技法などの情報をフォロー・アップしつつ、自分の開発環境においても処理系をメンテナンスし続けられるという条件を仮定すると、せいぜい自分の仕事道具としてまともに維持できるプログラミング言語は5つ以内が限度だろうと思う。
僕が企業の技術系役職者として採用応募のエントリー・シートや派遣企業からの営業などを見ている経験から言えば、まずプログラミング言語を一つや二つしか知らないという人は採用の対象としては論外である(冒頭で一つしか知らなくてもプロはいると書いたが、それはメインフレーム専用のおかかえ技術者など特別な経緯や環境に限られる)。こういう人物は、たいていが再就職を目当てに職業訓練などでプログラミング言語を習得したような素人であり、そういう人々を雇用して育てることも含めて事業内容としている企業でもない限り、一般的には即戦力どころか役に立たないと判断するべきである。
そして逆に、これでもかとたくさんの言語を並べるような人間も、仕事の役には立たない。Ruby のまつもと氏みたいな有名人(言語オタクと称して数多くの言語に造詣が深いと言われる)ともなれば好きに色々な言語を習得してもいいだろうが、仕事の道具として数多くの道具を現実に使う事例など限られている。毎回のように使用言語が違う現場を渡り歩いてきたような人物がいてもおかしくはないし、そういう条件でもやってこれたというのは一つの才能かもしれないが、ふつうは「器用貧乏」だと判断するだろう。つまり、そういう人は各々の言語を使った本質的に重要な設計業務を担当してきたのではなく、基本的な文法さえ習得すればカマキリやイソギンチャクていどの知能でもコーディングできるような、末端のコーダとしてルーチン・ワークをやってきたにすぎないと判断するべきであろう。
それから、習得している言語の種類によって一概にスキルのあるなしを判断することも軽率であろう。しばしば PHP という言語は、デザイナーが片手間に習得するイージーな言語だとフォーラムなどで馬鹿にする者もいるが、PHP を主な道具として大手企業の開発案件を数多く手がけてきた者として言わせてもらえば、C++ や Java が使えるというだけの無数の凡人よりも、僕の方が遥かにサラリーマンとしても成功しているし、実質的にプログラマとしても凌駕しているという自信はある。
この他に、毎年のようにトレンドとか「これから勉強したい言語」の一覧が記事として公開されたりしているのをご存じだろう。たとえば、"Most Used Programming Languages 2022: a Full Guide" (https://www.bitdegree.org/tutorials/most-used-programming-languages/) などという記事がある。タイトルには "Most Used" とあるのに、目次では "Most In-Demand" 書いていてややこしい記事なのだが、要するに勉強しておいた方がよさそうな言語としては、C, C++, Java, Visual Basic, C#, PHP, Python, JavaScript といった、おなじみのポピュラーな言語が並んでいる。確かに10年くらいのスパンで眺めたら Perl が圏外になっていたり、R や SQL のような汎用性のない、「プログラミング言語」と言っていいかどうかすら怪しいものも含まれるが、それほど数年で劇的な変化があるわけでもない。そして、C や Java といった定番の言語はとうぶん使われ続けるだろう。でも、やはり冒頭で述べたように、だからといって無条件に C を最初に勉強すればいいなどとは他人に言うものではない。