2023年11月7日火曜日

Rubyの地位が下がっている原因は何だと思いますか? コメント:Ruby on Railsでシステムを開発すると最初に開発した人以外は、ほとんどメンテナンス出来なくなり、会社のメインシステムがRubyで開発されていたりすると、致命的で、最初の開発者が退職すると、営業停止になったも同様で御座います。Aon CEO 石塚 正浩 090-7555-5011

https://jp.quora.com/Ruby%E3%81%AE%E5%9C%B0%E4%BD%8D%E3%81%8C%E4%B8%8B%E3%81%8C%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E5%8E%9F%E5%9B%A0%E3%81%AF%E4%BD%95%E3%81%A0%E3%81%A8%E6%80%9D%E3%81%84%E3%81%BE%E3%81%99%E3%81%8B

並べ替え
 · 
フォロー

手軽にプログラミングできる軽量プログラミング言語(lightweight language)においては、プログラミングのしやすさだけではなく、プログラムの読みやすさ、管理のしやすさ、ライブラリの豊富さ、サポートしている環境の多彩さ、処理速度の速さ、言語仕様の安定性(バージョン間の互換性)、といったいろいろな要素が普及度合いに大きな影響を与えます。

以前は長らくPerlが軽量プログラミング言語の王者として不動の地位を占めていましたが、オブジェクト指向への対応が不十分だっために次第にユーザが離れてしまいました。またUnicodeへの対応が不十分でライブラリ間の文字列処理の互換性がメチャクチャになったことも大きな理由でしょう。
それでもPerl6にうまく移行できれば問題なかったのですが、Perl6の言語仕様があまりに野心的過ぎてPerl5とは全く別の言語になってしまいました。複雑な仕様のマイナー言語をわざわざ学習したがるプログラマーはそれほど多くはありません。もしPerl5のプログラムをそのままPerl6でも動かすことができれば今もPerlは健在だったかも知れません。

で、90年代からPerlをバリバリ使っていた私は2000年代になってから「次に何を使うべきか」を当然考えたわけですが、Rubyは言語仕様が全く安定しなかったので選択肢には入りませんでした。バージョンがちょっと上がる度に互換性がなくなるような言語は仕事では危なくて使えません。その点はPythonの方がだいぶ安定していました。この部分は言語の普及速度に大きな影響を与えたと思います。

なのでRubyは正直言いますと「日本でだけ知られているマイナーな言語」で終わると予想していました。

ではなぜRubyが世界的に有名になったかと言うと、それはもちろん「Ruby on Rails」が登場したためです。サーバサイドMVCモデル全盛期において、重量級のJavaを使うかヘボいPHPを使うかという選択肢しかなかった状況でのRoRの登場は非常に劇的なものでした。世界中に熱狂を巻き起こしたと言っても言い過ぎではないでしょう。

そして時代は移り変わり、RESTとSPAの普及によりサーバサイドMVCの全盛期は終わりを告げました。今はマイクロサービスの時代です。RoRももちろんそれに対応していますが主役を張れるほど素晴らしいというわけではありません。今はRoRはもう時代遅れのフレームワークだと多くの人に思われています。

つまり、「プログラミング言語のRubyの地位が下がった」という見方は正確ではなく、「Ruby on Railsの地位が下がった」が正しい見方と言えます。プログラミング言語としてのRubyの地位はもともとそれほど高くはなかった、という話です。

もちろんそれはRubyが言語として優れていないことを全く意味しません。それは全く関係ない話です。PHPが普及している理由がPHPが優れた言語だからではないのと同じ話です。

広告
 · 
フォロー

Pythonの地位が上がっていること。

 · 
フォロー

このブログにあるように

Ruby has dropped in rankings over the last few years. While the number of contributors coding in Ruby is still on the rise, other languages like JavaScript and Python have grown faster. New projects are less likely to be written in Ruby, especially projects owned by individual users or small organizations, and much more likely to be written in JavaScript, Java, or Python.

新しいプロジェクトが個人とか、小さい組織で作られるようになっていて、そのプロジェクトはRubyで書くよりJavaScriptや、JavaやPythonで書く方が多くなっている。

とのことなので、大きいプロジェクトを作るのが一段落しているのではないかと思います。Railsなども安定していて、特にGitに載せて管理するほどではないのかもしれません。

Objective-Cのように完全にSwiftに乗り変わったような事ではなく、Rubyが安定しているのだと思います。

広告
 · 
フォロー

いろいろと足りていませんが、過去廃れていったプログラミング言語のいろいろに思いを馳せると、廃れていくプログラミング言語でまず不足するのは初心者、という印象があります。つまり人の流入がなくなっていくとプログラミング言語は蛸壺になりやすそうな気がする。

いま、たとえば、RubyKaigiというカンファレンスを行うと、各国から参加者があってありがたい反面、ロシア以外のCIS諸国やブラジル以外のラテンアメリカ諸国、それとアフリカ諸国などからの参加者は残念ながらほとんどいません。それは地理的に遠いからとか、日本に入国するビザが厳しくてとか、色々理由はあるかとは思います。でも単にリーチしてないんじゃないかという思いもある。

べつに地理的な問題だけでもないと思っていて、いまRubyをとりまくデモグラフィックはまだそれ以外の一般的な人口分布とは異なると思います。さまざまな箇所で意図せずだれかを排除していることがある結果ではないでしょうか。

流入を増やすと参加者の質が変わっていくという面はあろうかと思います。でもそれは自然なことで、参加者固定のままでゆるやかに衰退していくよりはずっといい。これからのことを考えるとRubyに足りていないのは、初心者だと思います。

 · 
フォロー

ここ最近は、Rubyのコアに新機能を入れることにはずいぶんと抑制的です。Gemにするかコアに入れるかはほとんど機械的に、全部Gemでという感じです。どうしてもGemでは達成できない機能がたまにあり(文法とか)、そのような場合はコアに新機能として入るかもしれませんが、それはGemにできないということ自体の判定は機械的に判定されるものだと思います。

 · 
フォロー

だいたい以下のような理由です。

  • クラスやメソッドなどソフトウェアを構成する部品にあたる存在がオブジェクトであり、プログラムから操作可能である
  • 動的型言語なので、型の整合性を気にせず実行時に自由に変更できる
  • evalなどをはじめとするメタプログラミング用メソッドが充実している

Rubyを越えるレベルでメタプログラミングを行う、Lispのようなプログラムコードそのものをデータとして処理できる言語もありますが、Rubyはそこまでは踏み込まないと決めています。

そこまでしちゃうと言語文法の意味を変えてしまうので(マクロなど)、実行中のソフトウェアの仕様に踏み込まないと、プログラムの意味を読み取れなくなってしまうからです。コンパイラにはどうということはないのですが、人間には厳しいだろうと見積もっています。

0 コメント:

コメントを投稿