Too many a “200” over
この見出しの”200″は、世界中に存在するプログラミン言語の種類数を表しています。「over」という単語もあるので、まとめると「世界には200を超える数のプログラミング言語が存在」しているということです。プログラミング言語ごとに向き不向きを確かにあるかと思いますが、筆者としてはこの数は異常であると考えております。
※Linuxディストリビューションの方がまだマシですね。
プログラミング言語の変遷
最初に考案されたプログラミング言語というのは、電子機器を制御するために考案された「アセンブリ言語」と呼ばれるものです。次に、個人向け(趣味など)のプログラミング言語として「Basic言語」と呼ばれる言語が開発されました。その後、銀行システム向けなどとして「Fortran言語」など、いくつか考案されましたが数種類の言語のみで統一して使われてました。
ところが、インターネットが発展するにしたがって、プログラミング言語との総数が短期間に上昇してきました。同じ用途で使う言語であっても、数種類のプログラミング言語が登場しております。そして今日に至り、200種類を超えるプログラミング言語が存在することになってしまっております。選択肢は多いほうが良いと考える方もおるかと思います。
車輪の再発明
しかしながら、「車輪の再発明」という言葉がプログラミング業界において存在します。同じ機能を2回以上、コーディングすることを指しております。
選択肢が多いということは、最適なプログラミング言語を選択することが出来る反面、その最適なプログラミング言語を探す時間や労力などが負担となる上、選択したプログラミング言語の学習コストもかかってきます。特に、インターネットを介するWebアプリを開発するプログラミング言語については、増大する一方になっております。主な、言語を挙げてみますと「Perl・PHP・Ruby・Python・JavaScript(node.js)」が存在しておりますして、パッと考えただけでも5種類ものプログラミング言語が「車輪の再発明」を行ったということです。
※PythonとJavaScriptは別の分野でもよく利用されています。
プログラミングの基礎としてのC言語
昨今、聞かなくなりましたが、つい最近までは最初に学ぶ「プログラミング言語」として、よくC言語を覚えるべきというのが定番でした。筆者も、そう考えております。
基本的にプログラミング言語の行うことは、シンプル言うと「データの操作」と「デバイスの制御」に尽きます。「データの操作」は、「入力▶データ修正▶出力」ですし、「デバイスの制御」の機能については、「C言語とアセンブリ言語」のみしかサポートしておりません。つまり、ほとんどのプログラム言語は「データの操作」の機能のために「車輪の再発明」を行ったということです。
繰り返しますが、初学者が学ぶプログラミング言語は「C言語」が最適だと考えております。もし、他の言語からスタートしてうまく習得できたとしても、それは付け焼き刃に過ぎません。なぜなら、「C言語」を習得すること自体が、プログラミング初学者にとって大きな壁となるためです。もしも、「C言語」を理解せずに他の、プログラミング言語を習得しようとする際、同じ機能を同じ時間かけてまた習得しなければなりません。
プログラミングを理解するために
筆者は、今日(こんにち)使われているすべてのプログラミング言語は、すべてC言語から派生したプログラミング言語だと考えています。なぜなら、プログラミングのコーディングで記述したプログラムの流れは、「順列・分岐・繰り返し」が基礎となっているためです。
※JavaScriptは除く
オブジェクト指向言語
オブジェクト指向といったプログラミング言語がたくさんありますが、やはり「順列・分岐・繰り返し」の流れは存在しています。オブジェクト指向の場合、データの扱いをオブジェクトにまとめることで、C言語では配列や構造体までしかデータを効率的に扱うことができませんでしたが、リストや連想配列など、新しい構造でデータをまとめることが出来るようになりました。しかしながら、オブジェクト指向言語が登場したあたりから、様々なプログラミング言語が乱立するようになり、また、今までオブジェクト指向に対応していなかった言語も、オブジェクト指向のプログラミングが出来るようになってきています。
プログラミング言語の多様化
確かに、多くのプログラミング言語が存在することで、少しのソースコードだけで需要を満たすようなメリットは有るでしょう。しかしながら、多くのプログラミング言語から、最適なプログラミング言語を選ぶことは大きな労力が必要になります。もちろん、採用するプログラミング言語に対する知識も必要になってきます。プロジェクト単位のグループで開発を行う際には、各々のメンバーが採用するプログラミング言語に対する知識を持っていることが必要であります。
しかし、プログラミング言語の乱立による「車輪の再発明」及び「プログラミング言語の選定」に、時間をかける要因にもなることから、昨今のプログラミング言語の多様化は筆者は疑問に思っています。
以上になります。
まぁ、チラシの裏に書いとけって話ですけどせっかくブログあるので、書かせてもらいました。あと、ライブラリもですけどフレームワークも最近は乱立している傾向にあるので、一種類から三種類くらいまでに、統合していってほしいと思います。