ネタつつき28-言語進化の鍵はCOBOLが握っているのかもしれない。
私はこの傾向が気になって何日も考えていました。すると一つの仮説が思い浮かびました。それは、 言語利用者がそれを求めているのではないかという事です。C#などの開発でよく使う言語は商業用の物です。という事は、新しい概念が出現しないのは、購買している我々開発者や会社がそれを求めているのといっても良いかと思います。そう考えれば思い当たる節が沢山あります。
会社は保守性という言い分けの元教育を放棄して言語のフル機能を使わせません。そして、技術者もサボりたいのでそれを容認している節があります。本来プロは業務に適した道具を選びます。しかしこの業界の体質は、自社の都合だけを考えて色々な事を禁止します。やれ、関数型言語は使うな、三項演算子は使うな、C#は使うな、C++は使うな、多重継承は使うな、テンプレートは使うな・・・。多くの有用な言語やその機能が保守性を免罪符にした会社や技術個人の怠慢により殺されています。それらの禁止事項は大半が怠慢の産物であって論理はありません。そもそも、必要だから生まれた言語や機能を禁止する事態がおかしいのです。
少し話しはづれますが、保守性を言い分けにする会社や人が多いので一応その事に触れておきます。保守性というのは本来プロが正しく美しいプログラムを書くことを意味しております。プロとして常識的なコードを書けということであって、決して素人に毛が生えた程度の人を想定した概念ではありません。現在の様に「○○は新人は分からない」という馬鹿げた理屈でコーディングをしていればそのうち、RDBMSは難しいから使わない、オブジェクト指向は難しいから使わない・・・と、どんどん低レベル化していきます。これでは最早プロとは呼べません。プロは技術力を鍛えるものであって、退化することを目標とするのは馬鹿げています。そんな怠惰で馬鹿な人が作った商品は誰も要りません。
もう十分だと思いますので話しを戻します。このような怠惰精神が購買側に広がればコンパイラを売る方としては当然既存概念の延長線上のものしか作れなくなります。せっかく新しい概念の言語や機能を作ってもお客様に拒否されては商売になりませんからね・・・非常に悲しい事ですが商業的要素は免れません。
では昔はどうだったのかと言いますと、新しい概念や機能がどんどん発明されていました。C++はオブジェクト指向の新しい形を提示し、テンプレートなどの画期的な機能を取り入れましたし、FORTRANやCOBOLなどの特定の分野を想定した言語なども作られてきました。私はこれこそがプロの道具としてのコンパイラのあるべき姿だと思います。昨今は都合や勘で選んだ言語に作るものを無理やり合わせていますが、本来道具は作る物に合わして選ぶべきです。誤解されそうなので書いておきますが、かといって一つの言語を究める道を否定するものではありません。とはいえ、それは個人での話しです。特定の技術に特化した人はチーム開発にとって必要な人材です。しかし、会社全体がそんな事をすればシステムの品質が下がるのは目に見えています。システム開発は色々な道具を使ってするものです。特定の言語の特定機能だけを使って作れるものではありません。そんな事をすれば被害を受けるのはエンドユーザーや何も知らない一般人です。どんなに悪い品質でも売ったらよいという考えは私は納得できません。それはプロの考えではなく犯罪者の考え方です。
長くなりましたのでそろそろ纏めます。言語の進化はドメイン特化型の方向もあるべきです。現在の様に無難に「皆一緒に同じ機能をつけましょう」では進化は望めません。COBOLの様な個性の強い特化型言語をどんどん作るべきです。そして、技術者も進化を恐れずに学び続けましょう。前に進まなければ滅ぶのは目に見えているのですから・・・