目次
- 多過ぎるプログラミング言語
- プログラミング言語と自然言語
- プログラミング言語は道具である
- プログラミング言語の淘汰を加速するべき
- 他業種にもある規格を統一しない例
- 自然言語はただの道具ではない
- 未来のプログラミング言語は1つになる
以前の記事でプログラミングの勉強を始めたことを書きました。
Progateというサービスを利用して、マークアップ言語であるHTMLとCSSを少し齧り始めた話をしたのでした。
そんな私は最近、他の言語も学ぼうと思い情報を集めています。
そこで問題発生です。
「プログラミング言語って一体何でこんなにたくさんの種類があるんだ?」
「1つか2つにしろよ!」
という怒りにも似た疑問が湧いてきたのです。
多過ぎるプログラミング言語
よく見聞きする言語だけを少し挙げてみても
Java、Python、C、C++、C#、Ruby、PHP、JavaScript、Swift、Go、Kotlin、R
等々ふざけるなっていうくらいの種類があるではないですか?
ちょっと調べてみたところ、分類の仕方にもよるのかもしれませんが250以上の言語があるそうですよ。
一体私は何の言語を学べばいいのでしょう。
誰かプログラミングに詳しい人いますか?
いるならば、私のこの質問に真っ向から答えてもらいましょう。
「なんでプログラミング言語は何種類もあるのか?」
「何でもできる最強の言語が1つあればいいのではないか?」
プログラミング初心者の私が誤解を恐れずに言えば次の通り。
すなわち「改善」「改良」の名の下に勝手に新しい言語を乱造する人たちがいるからなのです。
GoogleはGoなんていう言語を使い始めたり、AppleはSwiftを開発したり、Kotlinなどという「何て読むんだよ?」っていう言語もできた。
「オレたちが実現しようとしていることは既存の言語では不可能なんだ」とでも言いたいのでしょうか?
「不備を改善したもっと使い易い言語を発明してやる」っていうことでしょうか?
新しいプログラミング言語を作ってやろうなどと企てるなんて、なんと不遜な連中なのでしょう?
既存の言語に対するリスペクトの気持ちがないのでしょうか?
好き勝手に次々とプログラミング言語を作るんじゃねえ。
許可は取ったのか?
誰にって?
オレにだよ。それと世間の皆さんにだ。
自分の名誉欲だか自己満足だかのために勝手に言語を作って、オレたちにもそれを学ばせようだなんて、どれだけ厚かましいんだ。
プログラミングスクールが学習コースの数を増やして儲けられるように、新しい言語を提供してスクールから幾らか貰ったのかい?
などと、ちょっと息巻いて騒いでしまいました。すみません。
プログラミング言語と自然言語
プログラミング「言語」という言い方に惑わされて、日本語のような自然言語に対しての考え方と混同してしまいました。
日本語の世界においても既存の言葉を用いて表現する努力をせず、造語や新語を作って悦にいっている人たちがいます。
「文化人」と呼ばれる人たちの中にもいます。
日本語の弱点を補って、日本語を改良して、より完成された言語に近づけてやろうとでも思ってるんでしょうか?
偉そうな人ですね。
私に言わせれば傲慢な輩です。
そんな人たちを見るにつけ苦々しく思っていたのです。
そんなわけでプログラミング「言語」についても同じように感じてしまったのです。
しかしそもそもプログラミング言語自体が人間が人工的に作ったものなのですから、それに手を加えることは一向に非難には値しませんね。
プログラミング言語は道具である
プログラミング言語なんていうのはたんなる道具なのだからどんどん改良して進化させていけばいいという考えも理解できます。
企業同士で製品の開発競争をするように、製品開発のための道具の開発も自由にすればいいでしょう。
だけど新しい言語として開発しなくても、元から有る言語をアップグレードして使うこともできるのではないでしょうか?
「新しい言語ではできて、既存の言語では絶対にできないこと」というものがあるのでしょうか?
「既存の言語でもできるのであればその言語でやりなさい」と言いたい。
「もっと頭を使って、工夫しなさい」と言いたい。
「こんな言語じゃダメだ。不便だし役に立たねぇ」なんて言って、自分たちに都合のいい言語を作って「どうだ」なんて得意がっているのかもしれませんが、それは勝利ではなく敗北のように私には見えますよ。
願わくは、めいめいが独自にプログラミング言語を作るのではなくて、開発者同士で話し合って作ってもらいたいものです。
ウェブサイトを作るにはこの言語、アンドロイドアプリの開発にはこの言語、機械学習にはこの言語、ビッグデータの処理にはこの言語だなんて、不便だと思わないのでしょうか?
プログラミング言語の淘汰を加速するべき
例として挙げますが、PHPでもできてRubyでもできるのであればどちらかは要らないんじゃないでしょうか?
新しい言語を開発する人というのは、将来的に言語の淘汰が進めば、自分の作った言語が生き残って主流になることを当然目指しているのでしょう。
だったら旧言語を圧倒的に凌ぐようなものを作ってもらいたい。
たいした差別化ができていないから「あれを使う人」と「これを使う人」とに二分して、言語の「不必要な共存」が起こってしまうのです。
選択肢が豊富なことはこの場合に何の利益にもならない。
HTMLのように迷うことなくそれ一択という状況が望ましいのです。
多様性の意味を勘違いしているとしか思えないですね。
HTMLの亜流品のような言語を作って、「ウェブサイトに文章を書くのにどの言語を使おうかな」なんて迷わせるような輩がいたら、本当に怒りますよ。
もし開発するのなら、HTMLを旧石器時代の遺物のように時の彼方に葬り去るくらいの画期的な言語だけにしてください。
他業種にもある規格を統一しない例
ちょっと余談になりますが、自動車のホイールを車体に取り付けるためのナットがメーカーによって異なるのをご存知でしょうか?
例えばトヨタとホンダではナットの六角面のサイズが異なるし、座面の形状も違います。トヨタと日産ではピッチが異なります。
トヨタ車にホイールを取り付けるときに、日産のナットじゃ締められないんですよ。
ボルトとナットのネジ山の間隔が違うんです。ギザギザの部分が嚙み合わないんです。
どういう経緯でそうなったのかは知りませんが、いろいろなメーカーの車を扱う整備工場などでは不便だと思いますよ。
統一しない、できない理由がきっとあるはずですので調べてみようと思います。
各メーカーにこだわりがあって絶対に譲れないのでしょうかね?
自然言語はただの道具ではない
地球上の自然言語を統一した方がいいとは全然思いません。
東南アジアの山岳民族の言葉もアフリカの少数民族の言葉もみんな尊い、人類の財産だと思います。
世界中の人々が自由に意思疎通できる1つの言語ができた方が便利になることは想像できます。しかし自然言語はただの道具ではないのです。
「言葉はコミュニケーションの道具」「思考するための道具」などと考えている人もいるかもしれません。
確かに道具としての側面もあります。
しかし言葉はただの道具ではなく、何かのための手段としてのみ存在しているのでもない。
言葉を使うということ自体が人間としての存在理由でもあると思います。
「脚は人間が移動するための道具だ」などと言う人がいるでしょうか?
それは「脚」の存在意義の中の分かり易いある一点を指摘したに過ぎない。
脚はその上に乗っかっている人体を移動させるための道具であるだけではない。
脚が交互に前方に踏み出すことによって人体を前進させる。これを「歩く」と我々は呼んでいますが、歩くことは移動の手段であるだけではなく、それ自体が目的でもあるのと同じです。
未来のプログラミング言語は1つになる
将来的にはプログラミング言語は1つになるべきだと思います。
汎用性が高く、プラットフォームを選ばず、あらゆることができ、可読性に優れ、高速で動き、安全性が高く、学習も用意な言語。
そんな言語は作れないのか? いや、作れるでしょう。
ぜひ作ってもらいたいものです。
それができるまで、私はJavaScriptとPHPを勉強しようかなと考えています。
以上、プログラミングを全く知らない私の暴論でした。
プログラマーのみなさん、専門家のみなさん、「無知な人間が何言ってやがる!」なんて、怒らないでくださいね。