パスワードを忘れた? アカウント作成
16725 story

Rubyの世界的人気度、TIOBE 9位に上昇 49

ストーリー by mhatta
Perlは長期低落傾向か 部門より

Ruby好き 曰く、

RubyInsideの記事によると、プログラミング言語の「人気度」をエンジニア数や教育コース数、扱うサードパーティベンダ数などから毎月算定しているTIOBE プログラミングコミュニティ指数の2007年度11月版において、RubyがJavaScriptを追い抜き初のトップ10入り(9位)を果たした。折れ線グラフで中長期的な傾向を見ても、2007年に入ってからRubyの人気度が急伸したのが見て取れる。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • タレコミリンク先…… (スコア:4, おもしろおかしい)

    by Anonymous Coward on 2007年11月26日 7時53分 (#1255487)
    JavaScriptを許可しないと記事が出てこないのは身を張ったギャグか何かなのでしょうか…
  • by Anonymous Coward on 2007年11月26日 21時59分 (#1255884)
    Ruby製フレームワークの代表であるRailsで作ったアプリのソースを見ると、
    どこにも明示的に定義されていないメソッドや変数なんてものが山ほど出てくる。
    (ぜんぶ動的に生成してる)
    さらに、既存のクラスに対していろんなところで拡張や変更を加えていて、
    実行時に、あるクラスの中身がどうなっているのか追うのが異常に困難。
    「設定より規約」というけど、実際には「規約が全て」で、
    規約(=仕様)を知らないとそれが即死亡を意味している。

    たしかに馴れれば効率はいいかもしれんが、こんな黒魔術はどう見ても
    絶賛されるようなもんじゃないと思ったよ。
    あれがRuby文化なら、これ以上流行ったらとんでもない地獄が待っていそうだ。

    それともRailsが異常なだけ?
    • by Anonymous Coward on 2007年11月27日 0時44分 (#1255982)
      >玄人向け言語

      素人を業界から駆逐する罠なのかも。
      玄人な人にとってはむしろ朗報だけどね。

      もともとRailsって「Hackとして」(たとえばGoogleに)賞賛されたわけでしょ。
      むろんGoogleの中にはHackerが一杯いるのでしょう。
      凡人かそれ以下の有象無象がどろどろしてるような場末の企業を支援するためのツールではないよね。
      親コメント
    • まあ、単純に言って、ソースコード中に明示的に現れないようなメソッドがあるなら、ドキュメントに書いておくべきだよね。Agile方法論では「ドキュメントとしてのソースコード」という考え方を持っているけど、ソースコードがあればドキュメントは不要とは言ってない [capsctrl.que.jp]し。

      ところで「既存のクラスに対していろんなところで拡張や変更を加えていて」っていうけど、Rails的には何のコードをどこに置くかはかなり決まっていて、おかげて探しやすくなっていると思うけど。既存のクラスに拡張や変更を行なったのなら、それもドキュメントに書いておけばいいんじゃない? 少なくとも拡張した張本人は、どこでどう拡張したか覚えているよね?

      親コメント
  • by Stealth (5277) on 2007年11月26日 9時57分 (#1255540)

    いくらなんでも Delphi よりは評価されていいと思う。今まで Delphi より下だったという事の方がショックでした。

    しかし、C++ が Visual Basic に抜かれた、という事の方が興味が。VB6 から VB.NET への移行、特に .NET Framework 2.0 以降への対応などによる人気なのでしょうか。

    .NET Framework 2.0/Visual Studio 2005 が出る少し前にかなり低下 (6.0% 程度) していつつ、その後の急上昇っぷり (最大 11% 超) がなかなか興味深いところです。

    # 最低でも 6% ってのは、やっぱり結構人気がある (Nov 2007 の順位でも 6% あれば 5 位以内) のか。

    • by Anonymous Coward on 2007年11月26日 12時36分 (#1255653)
      > いくらなんでも Delphi よりは評価されていいと思う。今まで Delphi より下だったという事の方がショックでした。

      Delphi は Windows 向け GUI Builder なので、Ruby の領域とは重ならないというのが実感です。
      評価軸が違えば結果も違ってくるでしょう。

      Win32 向けの GUI つくるなら、各種コンポーネントライブラリも充実しているので、いまでも Delphi が最速じゃなかろうか。

      Vista への移行が進まないので、結果として Delphi Win32 の活躍の場も延命してるなあ。

      親コメント
      • 同意です。
        Delphiの場合、言語の評価というよりもIDE込みでの快適さや早さなんかが重要なので直接比べるものではないですね。
        原始Pascalと比べればRubyのほうがリッチでしょうが、ObjectPascalはJavaぐらいの柔軟さはありますし。
        そういえば世界最古のDIコンテナはdelphiだという話もありましたね。
        親コメント
        • by Anonymous Coward on 2007年11月27日 1時45分 (#1256007)
          ガベコレがないとこんなに「コードの書きやすさ(にくさ)」に違いが出てくるものか!と
          驚かされてしまうのもDelphiです。
          Javaに遜色ないメタ機能を有する言語なんだけど、そういう情報にアクセスするたびに、アクセスに要した構造体だのなんだのを「さて、これいつ開放しようか?」と悩まないとならないので、そういう機能を使うのに二の足を踏んじゃいます。
          実際メタ機能を使いまくるクラスを書いてみたりしたけど、綺麗に書けない傾向にあります。残念だ。

          >世界最古のDIコンテナはdelphi

          そうです。
          オブジェクトやその組み合わせや属性について、
          コード中で生成&接続するんじゃなく、
          別のファイル(Delphiでいえばフォームファイル)の設定情報に基づいて
          コードの外からオブジェクトを組み立ててあげる。
          これすなわちDIです。

          フォームファイルのようなものはどこのGUIビルダにも有るし、
          GUIビルダとしての良さだけ考えるならば
          先輩のVBだのHyperCardだのに勝っているかどうかも微妙です。
          が、
          フォームファイルというものの位置づけと、
          プログラミングというものの
          「組み合わせ」を旨くデザインしたという意味では、
          Delphiが前代未聞の出来だったとは言えるでしょう。

          いっぽう、RubyだのPythonだのに、
          そういうフォームファイル的なものを与える
          というアプローチは原理的には十分可能だと思われます。
          それだけ言語が強力ですから。
          あとは実際にそれを実装する人が現れるかどうか、でしょうね。
          WebでRailsが出たように、良いGUI構築環境を作れば、
          Rubyはそっち畑でもブレイクし、
          「領域とは重ならない」
          という言葉も過去のものとなることでしょう。
          親コメント
        • 個人的には、Delphi より遥か下の方に Pascal がいる、というところに涙が。 COBOL より下って…
          親コメント
          • B&D言語とまで言われてましたからねえ
            といいつつランキングよく見てなかったので見てみました
            COBOL以下、Ada以上というのも何となく歴史を感じます
            間に挟まってるABAPって知らなかったんですが、SAPのPL/SQLみたいなものなんですね。これ以下ってのは嫌だなあ
            親コメント
    • by 335 (4199) on 2007年11月26日 11時34分 (#1255604) 日記
      >C++ が Visual Basic に抜かれた、という事の方が興味が。
      >VB6 から VB.NET への移行、特に .NET Framework 2.0 以降
      >への対応などによる人気なのでしょうか。

      予算に余裕のあるプロジェクトならGUIを実装するという単調な仕事
      はVBを使い、コアな実装のみVC++となることがおそらくMSの望みなの
      で、Windowsプログラマの場合、VBを使っている層がVC++使ってる層
      より「頭数」が多い。分業が進んだのかも。
      親コメント
      • by Stealth (5277) on 2007年11月26日 12時25分 (#1255645)

        それは C# を見落としすぎではないかと。C# 3.0 の強化を見ると VB との差がつきすぎですから。

        どうしてもネイティブな処理を各部分では C++ を使うようにして、それ以外は C# というのが MS の方向性に思えます。もっとライトな部分には Ruby とか Python とか。

        # さすがに IronRuby で XAML を動的生成とかはきもいと思いますが。

        親コメント
        • >C# 3.0 の強化を見ると VB との差がつきすぎ

          そしてそれを高みから見下ろすRuby(w

          パーシャルクラスだの、
          クロージャだの、
          LINQ(DSLと捉えるならば)だの、

          良くも悪くも近年のC#は
          「なにこのRubyの後追い言語は?」
          と思われる節が散見しますね。

          (もちろん強型言語としてのスジも通ってるんだけど)

          「みんながRubyを理解したらC#(当時の)はソッポを向かれてしまう!」と
          あのMSをすら怯えさせたわけだから、
          そういう意味でここ最近のRubyの影響力の強さは、すさまじいの一言だと思います。
          対MS戦を一個人(Matz氏)でやってのけた点だけ見ればJava以上だ。

          >IronRuby で XAML を動的生成

          XAMLそのものじゃなく、XAMLのDOM(?)を生成すればいいと思う。
          いちいちXMLというNotationレベル(ないしはシリアライズ形式)まで降りるのは無駄。
          • 元々 C# が Java のおいしいとこ取りである (そして現状とっくに抜いてしまっている) ところを考えれば、Ruby のおいしいとこ取りをしたところで全く違和感がない、というのもあったりしますね。

            C# 3.0 で追加された機能は、フレームワークレベルでは .NET Framework 2.0 の機能を総動員で実装している (ので、3.5 になっても根幹部分が変わってない) というのも肝だと思ったりします。それだけの機能を実装するための下地が揃っている、というか。

            C# Generics が C++ Template 並の使いやすさがあればもうちょっと楽なのですが、そこまで行くと他の言語が同じフレームワークを使えなくなりそうなのがアレでソレ。

            # フレームワークがコンパイラを内蔵しているので、スクリプトと称して C# なり VB なりで直接記述→動的にコンパイルして DLL を生成し実行、なんて荒業も簡単にできるのが微妙と言えば微妙です。

            親コメント
          • C#とRubyは比較してもしょうがないと思うなぁ。
            実業務での適用範囲が違いすぎるし。言語というか「開発環境」として。

            なお、私は両方とも好きです。
            --

            --- (´-`)。oO(平和な日常は私を鈍くする) ---
            親コメント
  • 全米が泣いた (スコア:2, 参考になる)

    by 127.0.0.1 (33105) on 2007年11月26日 13時47分 (#1255703) 日記
    ストーリー掲載から6時間経って10数個の投稿がされた今でも、
    ほとんどRubyにふれた話題らしいものが全くといってよいほどない
    スラドに全米が泣いた。
  • by Anonymous Coward on 2007年11月26日 9時20分 (#1255510)
  • rubyですか。もう既にそうですか。
  • 割り算 (スコア:1, 興味深い)

    by Anonymous Coward on 2007年11月26日 15時49分 (#1255765)
    ちょっとしたテキスト処理とか、ちょっとしたネットワーク処理とかにRubyは便利なんだけど、
    ちょっとした計算をするプログラムが書き難い気がする。

    特に、割り算(/)の定義がCに合わせてあって、整数と実数とで扱いが違うのが不自然。
    たとえば、この三角形の面積を計算する関数が間違いだというのは、どうも納得がいかない。
    def triangle(base, height)
        base * height / 2
    end
    もちろん、to_f とか quo を使ったり、引数に整数が来ないように気を付けたりすればいいんだけど、
    そういうことに気を使わなければならない必然性が良くわからない。

    元のCの場合にはこの問題は起きないわけだから、単純にCに合わせるというのは合理的でないし、
    実際PerlやPythonではCに合わせなかった。そこを敢えてこのようなふるまいにしたのは何故なのでしょうか?
    • Re:割り算 (スコア:3, 参考になる)

      by oldwave (20436) on 2007年11月26日 17時02分 (#1255790) ホームページ 日記

      何故かって言われても、二項演算子の正体がメソッド呼び出しのシンタックスシュガーだから、としか言いようがない気が。

      というか戻り値を浮動小数にしたいなら、base * height / 2.0って書けば良いだけで、すぐに慣れると思うけど。

      親コメント
      • Re:割り算 (スコア:1, すばらしい洞察)

        by Anonymous Coward on 2007年11月26日 18時59分 (#1255829)
        > 何故かって言われても、二項演算子の正体がメソッド呼び出しのシンタックスシュガーだから、としか言いようがない気が。

        いや、メソッドだろうがオペレータだろうが関係なく、オーバロードしてある(デフォルトの)動作に一貫性が無いってことなんじゃない? 何を以って一貫してるとするかは議論の余地があるけど、これに関してはCの悪い面を引きずったと言えるんじゃなかろうか。(「Cの仕様と一貫性がある」とは言えるだろうけど。ほんとに便利?)

        尤も、万人が納得する解決は無いだろうけどね。正確に割り切れない時は浮動小数点数に型変換する、という仕様だと、思わぬところで制度が落ちることがある。両方が正確な数なら分数で計算する、という仕様だと、うっかりしてると計算のほとんどが分数のまま進行して(浮動小数点数演算に比べて)がくんと性能が落ちることがある。
        親コメント
      • by Anonymous Coward
        > 何故かって言われても、二項演算子の正体がメソッド呼び出しのシンタックスシュガーだから、としか言いようがない気が。

        もちろんそうですが、なぜデフォルトの定義がそうなっているのかという質問です。

        > というか戻り値を浮動小数にしたいなら、base * height / 2.0って書けば良いだけで、すぐに慣れると思うけど。

        なるほど、例が良くありませんでした。
        長方形の面積(area)と幅(width)から高さを求めるときに、area / width と書くのが間違いという話でもいいです。
        たぶん私が言いたいことは、その場に 2 とか 2.0 とか書いてあれば挙動はわかるけど、
        変数にして
        • たぶん私が言いたいことは、その場に 2 とか 2.0 とか書いてあれば挙動はわかるけど、
          変数にしてしまうと挙動がわからなくなってしまうということなんだと思います。
          Rubyの場合だとそのオブジェクトがどこから来たのか追いかけないと挙動が分からない。
          型によって / の意味が「除算」になったり「整除」になったりするようなことでは困るわけです。

          なるほど。そういうフィーリングを持っている人はいるでしょうね。自分はそういうフィーリングではないんだけど、それはそれでわかります。

          僕としては、面積を求めるような処理の場合は各数値を浮動小数で持つことが前提になると思うんですね。浮動小数と整数はかなり挙動が違うので、暗黙の型変換はできるだけない方が良い、と考えるのはそんなに不合理ではないと思います。Matzの考えはここ [nikkeibp.co.jp]あたりによく出ているかな。

          Rubyの場合、BigDecimalやRationalも用意されているので、割り切れない割り算の結果が自動的にFloatに決まるのはちょっと問題ではないかという気がします。

          親コメント
          • by Anonymous Coward
            Rubyがって言うより、演算子オーバーロードがある言語には共通の問題だよね。「そのオブジェクトがどこから来たのか追いかけないと挙動が分からない」ってのは。
            主な原因はソースコード内の演算子そのものは1文字しかなくて圧倒的に情報量が足りないせいだから、メソッド名と同じくらい自由に名前を付けられるようにすれば解決すると思うんだけど、そういう言語ってめったにない。
            最低でもOcamlみたく、浮動小数演算子は「+.」とかにすればいいのに。
            • by Anonymous Coward
              > 主な原因はソースコード内の演算子そのものは1文字しかなくて圧倒的に情報量が足りないせい

              それは違います。どの演算子にどのような演算を割り当てるかを明確にしてさえいれば、
              その定義がどれほど奇抜なものでも、言語を学ぶ段階でわかります。

              Rubyの問題は「/」という演算子にどのような演算を割り当てるかを明確にしていない点にあると思います。
              おそらく「/」は「割り算」だと考えているのだと思いますが、「割り算」という言葉には「通常の除算」と
              「整数を商とする除算」の二つの任意性があるのに、どちらを選択するか明確にしていないということです。
              どちらを選択するかはどうでもいいことですが、どちらかを選択していないことが奇妙な型変換を要求することになるわけです。

              ただ、結論として、浮動小数点「的」な演算子を「+.」のようにするというのは一つの正しい解決策だと思います。
        • by Anonymous Coward
          暗黙の変換に期待せず area.to_f / width.to_f とか明示的にその場で必要なものを書くようにすれば
          変数が整数だろうが知らないオブジェクトだろうが平気という方向で考えてみてはどうでしょう。
    • Re:割り算 (スコア:2, 参考になる)

      by T.Sawamoto (4142) on 2007年11月26日 17時12分 (#1255793)
      いや、Pythonもいわゆる『真の除算(true division)』が導入されるのはPython 3.0からの予定ですよね。
      現時点の最新版であるPython 2.5では、除算"/"を使うと

      $ python -c "print 3/2"
      1

      となります。オプション等で変更すれば

      $ python -Qnew -c "print 3/2"
      1.5

      となりますけど。

      # ちなみに、切り捨て除算は"//"ですね。
      # 個人的には修正し忘れがちょっと怖い(^^;)
      親コメント
      • by Anonymous Coward
        ここ [python.org]に詳しい解説があります。互換性よりも問題解決を優先した大英断ですね。
    • by Anonymous Coward
      三角形の面積を求めたいなら、まず三辺の距離を求めよう。
      (それ不倫の公式)
    • by Anonymous Coward
      * とか / を再定義してマイRubyにしちゃえば?
    • by Anonymous Coward
      require 'mathn'
      すればいかがでしょう?
      数学の数式を書いているつもりでRubyの式が書けますよ。
  • by Anonymous Coward on 2007年11月28日 10時45分 (#1256702)
    以下のベンチマークで

    http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=... [debian.org]

    CPU時間でざっくり順位付けをすると以下;
    性能面では平均以下。
    Basicは意外に性能がいいのには驚いた!
    ソース効率では、Ocaml良かったと思う。

    C gcc>C++
    >Basic>Pascal,Ada,Ocaml
    >Java6serv>FortranG95>SmalltalkVW
    >Python>Perl>PHP
    >Ruby,JavaScr,TCL
  • から何が抜かれたのかなぁと思って見てみた.

    DelphiとSASとやらが落ちたようだがSASってなんじゃらほい?
  • by Anonymous Coward on 2007年11月27日 4時43分 (#1256041)
    人気度といっても好き嫌いの集計じゃないからねえ。

    俺はrubyもpythonもVBも好きではないが、問題解決に一番便利であれば迷わず使うしね。
typodupeerror

にわかな奴ほど語りたがる -- あるハッカー

読み込み中...