自然言語学からみたプログラミング言語 Vol.2 – 言語の「死」-


Learn to Program, not a Programming Language – codeburstより

はじめに

Happy Holidays!!
こんにちは、Oasistです。

前回の「Vol.1 -世界に現存する数とその需要-」では、

  1. プログラミング言語の数
  2. プログラミング言語人気ランキングトップ10
  3. プログラミング言語の需要を左右する要因

について触れました。

クリスマス本番の本日は、「Vol.2 -言語の「死」-」です(聖なる夜に暗いタイトルですみません)。

目次

  1. プログラミング言語が「死ぬ」時
  2. まとめ

1. プログラミング言語が「死ぬ」時

前回同様、まずは自然言語から考えてみましょう。
自然言語が「死ぬ」時とはどんな時なのでしょうか。
Alpha Omega Translationsではこのように定義されています。

The true definition of a dead language is one that has no native speakers left. There are several different ways that it can happen, but the bottom line is that if there is only one person left who speaks the language as their native tongue and fluently, then the language has died.
(死語の本当の定義はネイティヴスピーカーが全くいない言語のことである。そのような事態に至る経緯はいくつか存在するが、結論としてはその言語を母語として流暢に話す人が一人しかいなくなった時、それは死んだことになる。)

Alpha Omega Translationsより引用

上の引用の第一文と第二文の繋がりが分かりづらいので補足します。

言語が生きるためには、それがコミュニケーションに使われ、変化し続けなくてはなりません。
ところで、コミュニケーションが成立するために最低限必要な人数はいくつでしょうか。
答えは二人です。
話し手(speaker)と聞き手(listener)が最低一人ずつ存在しなければいけないのです。
つまり、自然言語が「死ぬ」時は、話者が2人以上存在しなくなってその変化が完全に止まった時、と結論づけることが出来ます。

それでは、プログラミング言語が「死ぬ」時とはどんな時なのでしょうか。
Codementorは以下の定義付けで2018年現在の「最も学習する価値のない言語」ワースト20を発表しています。

Be it because nobody is using it, nobody is hiring for it, or nobody is talking about it — based on the level of community engagement, the job market, and overall growth — some languages just aren’t worth your time anymore.
(その言語を誰も使わないとかそれを生業としていないという理由であろうと、もしくはそれがコミュニティのエンゲージメント、就職市場、総合的な成長性において全く俎上に上らないという理由あろうと、その言語はもはや時間を費やす価値のない言語である。)

Worst Programming Languages to Learn in 2018より引用

記事の情報量が膨らんでしまうので、それぞれの言語を学ぶべきでない理由の詳細については、英語サイトになりますが元ページを参照して下さい。


* この手の記事は恣意的かつ独断的なきらいがあり、中立で客観的な主張をしているものを見つけるのは難しいと感じます。この参考サイトもそのような「匂い」はしますが、少なくとも感情論ではなく、コミュニティのエンゲージメント数や成長性、市場価値を他の言語と比較検証しているので、「こんな意見もあるのか」というスタンスで参照して頂ければと思います。


C++の生みの親であるBjarne Stroustrup氏は、プログラミング言語について以下のように述べています。

There are only two kinds of languages: the ones people complain about and the ones nobody uses.
(世の中には二種類の言語しか存在しない。一つは人々がケチをつける言語、そしてもう一つは誰も使わない言語だ。)

Bjarne Stroustrupより引用

前者はコミッターやデベロッパー、ユーザーがいる言語のことを指しています。
コミッターがいるということは、そのプログラミング言語はバージョンアップし続けていることになります。

例えば、Rubyの2018年のリリースバージョンをRuby Releasesを参考にまとめると下記の通りです。

* スペースの都合上、テーブルに掲載仕切れないものは「etc.」としました。

Release Version Release Date Note, Features
Ruby 2.6.0-rc1 2018-12-07 *Page Not Found
Ruby 2.6.0-preview3 2018-11-06 JIT (Just-in-time) compiler, RubyVM::AST, A new alias, Endless range etc.
Ruby 2.5.3 2018-10-18 Complements of some missing files in the release packages of 2.5.2
Ruby 2.5.2 2018-10-17 Some bug fixes and some security fixes
Ruby 2.4.5 2018-10-17 About 40 bug fixes after the previous release, and also includes several security fixes.
Ruby 2.3.8 2018-10-17 Several security fixes
Ruby 2.6.0-preview2 2018-05-31 JIT (Just-in-time) compiler, RubyVM::AST, A new alias, Endless range etc.
Ruby 2.5.1 2018-03-28 Some bug fixes and some security fixes
Ruby 2.4.4 2018-03-28 Some bug fixes and some security fixes
Ruby 2.3.7 2018-03-28 70 bug fixes after the previous release, and also includes several security fixes
Ruby 2.2.10 2018-03-28 Several security fixes
Ruby 2.6.0-preview1 2018-02-24 rescue/else/ensure inside do/end blocks, yield_self etc.

2018年の一年間だけでも、12ものリリースバージョンが存在し、その中で多くのバグ修正、セキュリティ修正、新機能の追加が行われています。
そして、それらはコミッターやデベロッパー、ユーザーがいなければ成し得ないことです。
換言すれば、コミッターやデベロッパー、ユーザーが一人もいなくなれば、バグの多い、セキュリティが脆弱な不便で機能に乏しい言語のままである、ということが言えます。

つまり、プログラミング言語が「死ぬ」時は、コミッターやデベロッパー、ユーザーが一人もいなくなってその進化が完全に止まった時、と結論づけることが出来ます。

追記:記事公開後に再考した結果、性能の向上やセキュリティ上の脆弱性の補強は、実際に使うユーザーのフィードバックがあり、コミッターやデベロッパーが議論を重ねて実現するものであると認識しました。
よって、プログラミング言語が「死ぬ」時は、コミッターやデベロッパー、ユーザーが二人以上存在しなくなり、その進化が完全に止まった時、と結論を訂正します。

2. まとめ

二回に渡り、自然言語と比較しながらプログラミング言語とは何かについて言及してきました。
結論としては、以下の四点にまとめられます。

  1. 世界に現存するプログラミング言語は数は、明確な基準を持つTIOBEの「250」という数字が最も信用出来る。
  2. プログラミング言語の需要は求人にその市場価値が如実に反映される。
  3. プログラミング言語はそれを使う人(コミッター、デベロッパー、ユーザー)がいなければ「死ぬ」。
  4. 自然言語とプログラミング言語の共通点は、どちらも人間が生み出したものであり、時代や取り巻く環境の中で人が使うことで進化し続ける。

あとがき

前回の「Vol.1 -世界に現存する数とその需要-」、今回の「Vol.2 -言語の「死」-」の二回に渡り、自然言語と比較しながらプログラミング言語とはなんぞや、について筆者の個人的な興味に基づいて触れました。

末筆になりますが、貴重なお時間を割いてお読み頂いてありがとうございました。
いささか実験的な内容の記事ですが、少しでも楽しんで頂けたならば幸いです。

そして、2018年もあと7日ばかり。
良い状態で2019年を迎えられるように、くれぐれも体調等お気をつけ下さいませ。

それでは!

追記:時間の都合で没にした英語版の記事を加筆・推敲して個人ブログに公開しました。
宜しければご覧下さい。

参考ページ

おまけ -クリスマスについて-

昨今、いわゆるPC Wordsの観点から、「言葉狩り」の風潮が強くなりつつあり、ひと昔前であれば問題のなかった表現が差別表現として認識されるケースが多くあります。
多民族国家である米国ではその傾向が特に顕著です。

クリスマスは、日本では商業的なイベントの性格が強く、宗教的な文脈を特に意識することはありませんので、Merry Christmas!を常套句として用いていることと思います。
しかし、Christ-から分かるように、クリスマスはキリスト教の歴とした宗教行事です。
特に米国の文脈では、ハヌカという宗教行事を持つユダヤ人は、クリスマスを祝いません。
このような様々な宗教を信仰する人々が存在する文脈では、Happy Holidays!という中立的な表現が無難です。

以下、とあるコラムの抜粋です。
大変参考になりますので、是非ご一読ください。

米国は、もともと移民を主体とする多民族国家で、多様な宗教を抱えていますが、
歴代大統領すべてがそうであるように、やはりキリスト教国家。国民の7割がキリスト教徒です。
そのうち約7割がプロテスタント、約3割がカトリックと、プロテスタントが多数派。

欧米人と知り合い、関係を続けていきたい場合には、クリスマスカードを送るのは有効な手段です。
日本で年賀状を送るような感覚ですね。ただし年賀状と異なり注意しなければいけない点もいくつかあります。
クリスマスは、キリスト教諸国では、あくまで宗教行事。ですので、キリスト教徒以外には、”Merry Christmas!”と書かれたクリスマスカードは送りません。
米国で売られているこの時期のグリーティングカードには、”Happy Holidays!”と書かれているものが多くあります。
ユダヤ人など、どんな宗教の人にも送ることができて非常に便利です。

それから元日に配達される年賀状とは異なり、クリスマスカード(グリーティングカード)は、クリスマス前にやりとりをし、飾っておくものです。
クリスマスシーズンの初めと終わりは国によっても微妙に異なりますが、米国の場合は、11月の第4木曜日に祝うThanksgiving(感謝祭)
が終わった翌日からスタートします。ですので、この日を過ぎたら早めにクリスマスカードを送りましょう。

そしてクリスマスの終了は、1月6日のEpiphany(公現祭)。
日本では12月25日には片付けてしまうクリスマスツリーもキリスト教国ではこの日まで飾ります。

[初出「小田康之の海外出張・赴任のトリビア Column」in『今日からはじめる!出張英会話』(日本英語検定協会刊) を改変]

2018年11月23日付 Vital Japan イベント案内メール内コラム「クリスマスカードはいつ送る?」より引用

関連記事

自然言語学からみたプログラミング言語 Vol.1 – 世界に現存する数とその需要 –

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ 開発エンジニア積極採用中です! Ruby on Rails の開発なら実績豊富なBPS

週刊Railsウォッチ

インフラ

ActiveSupport探訪シリーズ

BPSアドベントカレンダー