Scribble at 2022-05-28 10:38:55 Last modified: 2022-05-28 10:56:08
この手の宗教戦争は、たいてい下らない「おま環」の話に終わるので読む気がしない。確かに、ここで書かれているように Go は Java や C# などに比べたら学習効率のよい言語だと思う(Java なんて初心者からすれば最初に何をインストールすればいいかすら迷うだろう。OpenJDK だの JRE だの Java One だの「ただの Java」だのと、初めて訪れた人を尻込みさせるようなラベルが並べられたダウンロード・サイトを大昔から延々と運用しており、京都の料亭みたいだ)。他にも、特に Rust と比べて有利な点があるのだろうとは思うが、逆に Rust の方が優れていることもあろうし、結局のところ何が「優れている」のかは、それで何をやりたいのかという事情や目的によって評価の基準や達成度も変わるので、幾つかの言語を真面目に仕事の道具として使った経験のある人間は、こんな論争に決して参加しない。
たとえば、どれほど Java が PHP に比べて色々な点で優れていようと、問い合わせフォーム一つを動かすのに Java をサーバに入れて続々と報告されるセキュリティ・ホールの対応に工数を割くべきだと考える人間がウェブ制作会社のシステムを担当してるなら、その会社の経営者は即座にその者を解雇するべきであろう。エンジニアとして以前に、企業人として明らかに無能だからだ。とは言え、事情によって変わると言ったとおり、金と人が有り余っていて、「Java は堅牢」などという都市伝説だけを理由に株主へ顔向けできるような上場企業のクズ PM や、たいていは得意先営業でのし上がった SE 出身の無能な CTO/CIO がいる会社なら、もちろん問い合わせフォームでも Java を使い、そして送信された情報を適切に保護するためにプロセッサあたりのライセンスが年間で600万円の Oracle サーバを問い合わせフォーム専用に立ち上げることだろう。
いっときの、愚かな関数型言語ブームがとっくに過ぎ去ったのは、プロのエンジニアの一人として言えば結構なことだ。プログラミングのパラダイムを替えた程度で、馬鹿がまともなコードを設計できるわけがない。システム開発とは、パラダイムが要点なのではなく、結局のところ与件の妥当性を吟味したり、与件から仕様に落とし込む設計の力や、そこからクラスを適切に定義できるアルゴリズムの才能など、コーディングの前に本質がある。そして上記の記事が語るような、現今の Go vs. Rust といった〈最新の宗教戦争〉についても、結局は同じことが言える。どの言語で書くかは、そうしたソフトウェア・エンジニアリングの本質からすれば、はっきり言って些末な話でしかない。仕様に応じて選べる一群の選択肢から何を選ぶかは、まさしく実装する事情によって幾らでも基準が変わるのであり、一般論として言えばどうでもよいことだ。
僕は、もちろんここでも何度か Rust について書いているとおり、Rust の本も一通り目を通しているし、処理系を自分のマシンに入れてもいる。Go だろうと Rust だろうと、少なくとも無能でない限りは自分で使ってみるのが一番だろう。そうして、エンジニアとして無能でない限りは、どういう言語にもそれぞれの特徴があると分かるだろうし、その特徴が利点なのか欠点なのかも、自分の扱い方によって色々とわかってくる筈だ。そして、当該の個々の案件において、特定の欠点があるせいで開発に重大な支障をきたす予測よりも、特定の利点があるせいで開発に絶大な効用があると期待できる方が強いなら、その言語を(欠点があっても)採用すればいいだろう。そういう、条件ごとに適切な選択をしてゆくという、しごく当たり前の思考と判断をすればいいだけのことだ。