トップページphp
547コメント140KB

Rubyにはプログラミング言語以上の価値があると思う

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/08/05(火) 06:00:14ID:???
日本人開発者との一体感とか、プログラミングを通じて学ぶ楽しさとか。
そういった、プログラミング以外での重要性を、語っていこう
0148nobodyさん2008/08/23(土) 08:08:23ID:???
誰も>>137に挑戦しないか…
やっぱりお前ら実はRuby使えないんだろ?
参考書買って眺めて終わりなんだろ?
0149nobodyさん2008/08/23(土) 10:55:34ID:???
>>148
振りが唐突すぎたとは考えないのか
オススメのPHPで(もなんでもいいが)お手本を見せてくれれば
刺激されてやる奴はいるんじゃね?
0150nobodyさん2008/08/23(土) 13:03:26ID:???
軽くやってみたがDと大して変わらん
どっちの言語にも高階関数はあるし、
Dの配列、連想配列、foreachがRubyのArray、Hash、eachブロックに対応する形になるので
似たようなコードになる

ただ、Rubyには組み込みで正規表現と(大量の)文字列操作メソッドがあるので
上の関数2個はそれなりに縮んだ

def strip_non_digit(line)
 line.gsub(/\D/, "")
end

def word_to_num(word)
 translate = "57630499617851881234762239"
 ret = ""
 word.upcase.each_byte do |x|
  ret << translate[x - 65] if 65 <= x && x <= 90
 end
 ret
end
0151nobodyさん2008/08/23(土) 14:13:47ID:???
rubyってそういう記法なんだ…

なんか違和感バリバリ。

句読点(;)もないけど、
Lispみたいにフリースタイルで書けるわけでもなさそうなところが…
0152nobodyさん2008/08/23(土) 14:28:40ID:???
Pythonにくらべりゃシンプルなもんです
0153nobodyさん2008/08/23(土) 20:59:36ID:???
どっちかというとシェルスクリプトに近いかも。
かならずしも行継続に ¥ が必要なわけではないけど。

0154nobodyさん2008/08/23(土) 21:03:59ID:???
Rubyには行継続は必要ありません
という思想かな
セミコロンとのトレードオフでね

・・・結構横長にはなるんだけどね(ぼそ)
0155nobodyさん2008/08/23(土) 23:18:05ID:???
やっぱり、Rubyで行末(っていっていいのかわからんが)の
セミコロンをなくしたのって失敗じゃない?

自由気ままに書きたいなら、むしろそれくらいの縛りは必要
だという意味で。
実際、その為だけに、記述方法が限定されているような気がする

aaaaaaaaaaaaaaaaaaaaaaa +
bbbbbbbbbbbbbbbbbb

で我慢出来ない人、例えば

aaaaaaaaaaaaaaaaaaaaaaa
+ bbbbbbbbbbbbbbbbbb

と書きたい(その方が見やすいという)人を、実質排除している訳だし。
0156nobodyさん2008/08/24(日) 13:50:54ID:???
いや、別に、RubyではセミコロンはPerlのようにきちんと動作するよ
「書かなくても動作するんだから書くのめんどくさくねそっちのほうが大概きれいじゃね?」という人が多い
Emacsのruby-modeなんかでは突飛な書き方するとインデント量推測が狂うけど、明示的にセミコロンを置くと回復する
そもそもの誤解としてRubyの文法はそれほど(いや、ほとんど)フリースタイルでもない

あと、Rubyの行継続判定はわりと謎動作なので、「文法」としてメジャーなものだけ覚えるのがいい
普通の人はメジャーなものしか使わない
変な行継続で喜ぶのは変な行継続で書くことそれそのものを目的にしてる変な人だから言う事真に受けたら駄目だよ
0157nobodyさん2008/08/24(日) 20:55:34ID:???
文法が気に入らないなら他の言語行った方がぜんぜんいいぞ。
0158nobodyさん2008/08/24(日) 21:22:11ID:7pqXXoc3
クラス作って、オブジェクト作って、関数呼んで、作りたいアプリを作る・・
たったそれだけなのにコピー言語の方言乱立でみんなてんてこまいだよな。
まあいずれECMAScriptあたりで統一化の流れが一気に進んで雑多な地方言語は
駆逐されるだろうな。
0159nobodyさん2008/08/24(日) 21:30:50ID:???
統一化の流れは必然だろうね。
いくらなんでも現在のプログラミングって非効率すぎる。
その最大の原因はポスト・バベルな言語乱立。

一つの言語で、あらゆるノウハウが蓄積されたら、
生産性が爆発的に増大すると思うんだが…

イッツオーライ、シーユーネクストウィーク。
0160nobodyさん2008/08/24(日) 21:32:06ID:???
>>158
ECMAScriptは概念が違いすぎるので、必ず現在の
クラスベース言語は残ると思われる

大体、ブラウザ以外のフリー実装が少ないじゃん
ECMAScriptのCUIインタプリタって、WSH以外では
SpiderMonkeyしか知らない
0161nobodyさん2008/08/24(日) 22:22:37ID:???
んで統一化まではとりあえず必要な使い捨て言語を覚えちゃったプログラマも、
同様に使い捨てなオチ。10年前のVisualBasic全盛期を思い出すぜ。
俺はISOに認められたC/C++/C#/JavaScript/ActionScritp/Java?しかやらねーぜ
0162nobodyさん2008/08/24(日) 22:25:19ID:???
いまだにVBも仕事はあるけどね
あれは言語というよりはWindowsの力だろうけど
0163nobodyさん2008/08/24(日) 22:59:35ID:???
Ruby/Python/PHP/Perl/EcmaScript程度の違いなら、まだなんとかなるだろう。
関数型言語がメジャーになったらヤバイが。
0164nobodyさん2008/08/24(日) 23:10:20ID:7pqXXoc3
>Ruby/Python/PHP/Perl/EcmaScript
ねじ山の形がいろいろある位にしか思えないし工業規格で標準化してくれ。
もっと本質的なところに注力したいんだよ。
0165nobodyさん2008/08/24(日) 23:11:32ID:???
ねじの山の形が色々あるのは、場面場面に適したねじがあるからだよ。
0166nobodyさん2008/08/24(日) 23:16:03ID:???
まあ、ウェブ用のスクリプト言語は1個でいいような気はする。もっとも普及してるPHPがウンコなのがこの混乱を招いてるんだろうな。
0167nobodyさん2008/08/24(日) 23:21:35ID:???
>>166
それを言うなら、簡単に使える mod_perl, mod_ruby, mod_python を
作れなかった(作らなかった?)各陣営にも責任はあるんじゃね?

Rails, Django あたりが数年遅かったのかな
0168nobodyさん2008/08/24(日) 23:44:47ID:???
「パソコン」が遅過ぎたんだよ
たとえば、Windows98時代のパソコンでEclipseが動くかい?
0169nobodyさん2008/08/25(月) 00:03:43ID:???
PHPは4までは良かったと思う。5以降がウンコ。
0170nobodyさん2008/08/25(月) 11:02:07ID:???
俺も言語色々覚えようってのが嫌でC++一辺倒だったけど
仕事上 PHP, JavaScript, Emacs Lisp, Haskell には手を出さざるを得なくなった。
0171nobodyさん2008/08/25(月) 11:35:12ID:???
昔だってUNIX系OSユーザー基本セット(C・sh・Perl・sed/awk/grep・emacs/vi)とかあったからな
環境によって「使えるようにならなければならない言語」が増えるのは仕方ない
0172nobodyさん2008/08/25(月) 19:24:59ID:???
そういう考え方でも、なぜRubyって特に必要となってこないよね。
0173nobodyさん2008/08/25(月) 22:08:21ID:???
仕事の都合でHaskelってある意味すげーな。
0174nobodyさん2008/08/25(月) 22:18:24ID:???
ライターにでも転職したんじゃね?
0175nobodyさん2008/08/25(月) 23:21:33ID:???
>>164
大小の戦国武将たち(RubyとかPerlとかPHPやら)が
互いに小競り合いをしているだけというたとえ話を聞いて苦笑したことがある。
車輪の再発明の繰り返しはエネルギーの無駄なのか、切磋琢磨なのか。
まぁ帝国軍による独裁がいいとも思わないが・・・。

>>167
166の言うことも一理あるが167の意見には同意する。


誤解が無いように言うが、Rubyは結構好きだ。自分だけのためならRubyでいい。
でも、仲間や多くの利用者にとっての本質は言語じゃないんだよね。
目の前の問題を解決することだからね。
悩ましいよなぁ。
0176nobodyさん2008/08/27(水) 04:41:41ID:???
Haskellの仕事ってどんなの?
0177nobodyさん2008/08/27(水) 07:26:53ID:???
そんな言語の乱立を終焉させるため、ゴスリングがJavaの開発に取り掛かった
のが10数年前・・
0178nobodyさん2008/08/27(水) 08:02:04ID:???
python,lisp,ruby,perl を同時に使ってるんだが、配列アクセスとか
微妙な差があるたびに、入門書や昔作っておいたトイプログラムに戻って、いちいち確認してる。
syntax の細かい違いがもの凄く生産性を下げてるよ。
個人的にはrubyは滅んでくれても全然困らない。もうpythonだけでいいよ。
0179nobodyさん2008/08/27(水) 08:27:53ID:???
君はバベルの塔の前の時代に生まれるべきだった。
0180nobodyさん2008/08/27(水) 09:20:42ID:???
各言語固有のコードを吐いてくれる言語が必要そうだな
0181nobodyさん2008/08/27(水) 09:29:51ID:???
www
0182nobodyさん2008/08/27(水) 09:39:56ID:???
結局あれか
みんなCとPerlで満足しておけば良かったのにってことかw
0183nobodyさん2008/08/27(水) 09:41:16ID:???
Perlだけは勘弁してください
0184nobodyさん2008/08/27(水) 09:50:08ID:???
↑そういうわがままを言うから乱立するんじゃないか
0185nobodyさん2008/08/27(水) 11:20:03ID:???
>>182
Perlなくなってもいいが、電卓として使ってるLISPと
テキスト処理に使ってる sed,awk は絶対譲らんからな
0186nobodyさん2008/08/27(水) 20:55:41ID:???
今の時代でもsedとawkを使っているあんたは男だ
0187nobodyさん2008/08/27(水) 21:14:51ID:???
> 男だ
なにこの女性蔑視発言
0188nobodyさん2008/08/27(水) 21:49:17ID:???
たしかに 185 が女性だったら 186 は 185 を両性具有化したことになるのですぐ謝るべき。
0189nobodyさん2008/08/27(水) 22:02:01ID:???
じゃあ試しに言い直してみてくれ
0190nobodyさん2008/08/28(木) 00:49:35ID:???
今の時代でもsedとawkを使っているあんたは女神のようでもあり、雷神のようでもある

模範回答としてはこんなところだろ。
0191nobodyさん2008/08/28(木) 01:07:55ID:???
Rubyなんかつかいたくない
0192nobodyさん2008/08/28(木) 01:55:54ID:???
はいはい
0193nobodyさん2008/08/28(木) 08:06:46ID:???
心配しなくてもすぐすたれるから平気
0194nobodyさん2008/08/28(木) 13:41:41ID:???
おいおい
0195nobodyさん2008/08/28(木) 18:16:31ID:???
おれはPHPが好きだ

0196nobodyさん2008/08/29(金) 00:38:06ID:???
>>195
俺はRubyもPerlも好きだ
Pythonは・・・ごめん。覚えられなかった

きっと言語が悪いんじゃない。容量の少ない頭で楽な言語を先に
覚えてしまったからだ・・・
0197nobodyさん2008/08/29(金) 06:57:14ID:???
PerlもRubyも割と楽に書けるが、
他人が読むのは辛いね。
0198nobodyさん2008/08/29(金) 07:41:44ID:???
PerlとRubyは書くとき楽
Pythonは読むとき楽
PHPは読むのも書くのもあんまり楽じゃない
0199nobodyさん2008/08/29(金) 09:14:28ID:???
PerlとRubyはちょっとしたものが書くとき楽。大きいのは無理。
Pythonは読むとき、大きいものは楽。ちょっとしたのはどっちでもいい。
PHPとJava, Cは読むのも書くのもあんまり楽じゃない。
0200nobodyさん2008/08/30(土) 00:48:50ID:???
おれはPHP読むのも書くのも楽だけどな。
Perlはきらい。
書く人によっては読めないし。
正規表現使いまくりだとなんだかな。

Rubyはどう?
書きやすいし、読みやすいの?
0201nobodyさん2008/08/30(土) 02:26:34ID:???
RubyはPerlの後継としてはいいけど
Perl系自体がどうよ、って状況ではある。

いまのところは、よくもわるくもベターPerlだよ。
0202nobodyさん2008/08/30(土) 06:30:21ID:???
Perlは数年間よく使ったけど、他人のを読むのはやっぱり辛いわ。
変な文法のせいでRubyもPerlと読みにくさは同じぐらいだな。
0203nobodyさん2008/08/30(土) 06:39:18ID:???
>>200
Perlが正規表現のせいで読みにくいとか何人か書いてるが、どうもぴんと来ないな

むしろ、@ % {} [] -> およびその略記の組み合わせの方が引っかかると思うんだが
縦横無尽のリファレンス・デリファレンス・配列スライスこそ、Perl読解の一番の難所
じゃね?

Rubyは、上記のような記法上の難儀さはないから、基本的なクラスのメソッドさえ
覚えてしまえば、書きやすいし読みやすいと思う
0204nobodyさん2008/08/30(土) 07:10:03ID:???
2chでRuby読みにくい読みにくい言ってるのは>>202だけなんじゃねーかとも思う
Ruby読みにくいって言ったら他のたいていの言語は読みにくいことになるぞ

あと、「駄目」な理由をきちんと問い詰めると「だって○○言語じゃないんだもん」に行き着く人が多いので注意
0205nobodyさん2008/08/30(土) 07:23:33ID:???
だって堅牢な言語じゃないんだもん
0206nobodyさん2008/08/30(土) 07:30:23ID:???
堅牢 = 馬鹿が馬鹿なことをできない(やりにくい)
でおk?
その基準ならCとか最低だな
0207nobodyさん2008/08/30(土) 07:50:28ID:???
Rubyは本家の実装がアレだから
0208nobodyさん2008/08/30(土) 08:23:44ID:???
読みやすさなんて、大抵は書き手の技量と読み手の技量の問題。
技量が足りない奴は日本語であっても、読めない文章を書く。
読めないという奴は、平易な日本語であっても読めないって言う。
0209nobodyさん2008/08/30(土) 12:19:12ID:???
問題をすり替えて正当化。素晴らしい展開ですね。
0210nobodyさん2008/08/30(土) 16:15:43ID:???
>>208
自分が思うほど、文章が良くない件。
0211nobodyさん2008/08/30(土) 18:22:23ID:???
>>210
自分が下手なのは分かってるさ。

どんな言語でも、平易な表現を使って高度な処理を実装する人が居る。
そんな人が書いたソースは、言語を問わず読みやすい。
自分の力の無さを思い知らされる。
一方、その逆のケースもあるということ。
0212nobodyさん2008/08/30(土) 19:14:45ID:???
読みやすさ論議はあんまり言語には関係ないっていうのは、まあ同意

# perl
while(<>){
 print unless /^#/;
}

// php
while($line = fgets(STDIN)){
 if(!preg_match('/^#/', $line)){
  echo $line;
 }
}

のどちらが読みやすいかっていうのは、人それぞれだと思う
で、前者が読みにくい人は、Perlでも

# perl
while(my $line = <STDIN>){
 if($line !~ /^#/){
  print $line;
 }
}
って書くだろう。
正規表現が苦手な人は、どちらの言語でも if(substr($line, 0, 1) != '#') とか書くかも知れないw
できるだけいろんな記述が出来た方が読みやすいかも知れないし、逆かもしれない。
PHPが読みやすいっていう人は、きっと略記が無い方がいい人なんだろうとは思うが、ぶっちゃけ
結局は、その言語への慣れと、書く人・読む人次第な部分が大きいんじゃないかな。
0213nobodyさん2008/08/31(日) 01:04:50ID:???
>>211
最後の展開が無駄。
0214nobodyさん2008/08/31(日) 02:30:26ID:???
>>212
をみておもった。.NETerでよかった。
0215nobodyさん2008/08/31(日) 04:01:52ID:???
OSSは安かろう悪かろうだからな。
0216nobodyさん2008/08/31(日) 04:46:01ID:???
>>214
Visual Basic最強ですね。わかります
0217nobodyさん2008/08/31(日) 15:20:25ID:???
>>212
読む側の知識とかバックグランドの問題も大きい

ex) 以下の式は何を意味しているか?
(m + n) * (m - n + 1) / 2
0218nobodyさん2008/08/31(日) 17:03:09ID:???
>>217
言いたいことはわかるけど、例が極端過ぎる
前提とできるバックグラウンドの範囲ってのはあると思うよ

s = (m + n) * (m - n + 1) / 2; /* n..mの総和 */

こう書けば誰でも読めるし、それほど不自然じゃないが、

while(<>) { # 標準入力から、一行ずつ$_に代入しながら読み込む
 print unless /^#/; # (print $_ unless $_ =~ /#/;)
}

↑は不自然だろ。
言語の文法・記法・イディオムと、アルゴリズム・公式などを
一緒くたにするのはちょっとずれてる気がする
うにゃうにゃうにゃーって処理に、一言 // sort by hoge って書いて
おいてくれ、みたいな
0219nobodyさん2008/09/01(月) 00:22:29ID:???
今日人のPHP読んだんだけど、仕事で。
読みにくかった。
あんな読みにくいコード初めて見た。
人によりけりだな
0220nobodyさん2008/09/01(月) 19:49:09ID:???
>>218
> s = (m + n) * (m - n + 1) / 2; /* n..mの総和 */
こう書いても意味不明のやつは山ほどいるからorz なんだが、うちの場合…

# おまえら小学校で「台形の面積の出し方」習わへんかった? >うちのアホども
0221nobodyさん2008/09/01(月) 20:14:01ID:???
>>220
教授も大変だな
02222202008/09/01(月) 20:22:47ID:???
>>221
おもいっきり、現場です
数値計算結果をグラフにしてWEB表示するための…
0223nobodyさん2008/09/01(月) 23:30:31ID:???
変数代入という概念はわりと高等だぞ
= を使っている場合は特にな
算数・数学上では = は等号であってそれ以外を考えるのは「普通ではない」のであり、
代入の意味はプログラミング言語ローカルだということを忘れてはいけない
0224nobodyさん2008/09/02(火) 07:06:09ID:???
やっぱ代入は := じゃないとな
0225nobodyさん2008/09/02(火) 08:44:56ID:???
慣れれば何でも一緒だが、RubyはPerlに通じる読みづらさあるな。文法そっくりなんだから。
0226nobodyさん2008/09/02(火) 09:32:16ID:???
>>225
なんでPerlもRubyもやったことのない人が話に入ろうとしてるの?
0227nobodyさん2008/09/02(火) 09:47:55ID:???
代入演算子ってこうした方が分かりやすくない?

x <- 12
0228nobodyさん2008/09/02(火) 09:52:23ID:???
どっかで見たことがあるような
0229nobodyさん2008/09/02(火) 09:57:21ID:???
既にデフォの=でもういいということで
0230nobodyさん2008/09/02(火) 10:36:07ID:???
>>227
12 -> x
とやろうとして、あるぇえ?となる初心者続出の予感
0231nobodyさん2008/09/02(火) 11:28:26ID:???
現時点でも < と = で「以上」を表現しようとして

if x => 3 then

と何の気なしに書いて「?」となる人が続出だというのに
# 「大なりイコール」「小なりイコール」の順番に書くと覚えるとよい
0232nobodyさん2008/09/02(火) 21:24:53ID:???
Smalltalkの代入は←(コードは違う。要は左向き矢印)で、
値を返すときは↑だったな。もともとは。
0233nobodyさん2008/09/02(火) 21:58:52ID:???
Pythonはパイソン文化(つーかspam文化)が定着しているのが正直うらやましい。
0234nobodyさん2008/09/02(火) 23:45:38ID:???
は?Rubyの文法は多くをPerlから流用してるのは事実じゃん。
0235nobodyさん2008/09/02(火) 23:51:05ID:???
どこまでを文法と呼んでいるのだろうか。
0236nobodyさん2008/09/02(火) 23:59:54ID:???
もともとPerlのモダン化を目指したものだから、Perlに似ていて当然。
0237nobodyさん2008/09/03(水) 00:11:25ID:???
Perlのアイディアを多く取り込んでいるのは事実だが、
文法は、と言われると、かなり違う気がする。
0238nobodyさん2008/09/03(水) 02:53:54ID:???
文字列処理周りはPerlの影響が見られるが、
骨格部分はSmalltalkに近いような気がする
(実際、Smalltalk陣営の一部がRuby処理系を手がけてる)
0239nobodyさん2008/09/03(水) 11:50:30ID:???
オブジェクト.メソッド(引数) の形をとってる限りはPerlっぽさは微塵もないね
演算子やシンタックスシュガーにPerlっぽさが見え隠れするくらいか?
0240nobodyさん2008/09/03(水) 13:06:59ID:???
微塵もない、って言われると逆らいたくなるw

・ メソッド(関数)呼び出しの括弧を省略できるようにした所
・ これにより、オブジェクトのメソッド(特にgetter、setter)もプロパティも外見上同様に見える(こともある)

っていうのは、Perlっぽいかも。由来はPerlじゃないのかも知れないけど。
0241nobodyさん2008/09/03(水) 13:10:34ID:???
って書いたが、Rubyはそもそもプロパティアクセスなんてないし、
Perlもそんなことなかったぜ!
0242nobodyさん2008/09/04(木) 00:31:04ID:???
似てる似決まってるだろ。better perlなんだから。
0243nobodyさん2008/09/04(木) 10:30:19ID:???
で、結局プログラミング言語以上の価値って何なんですか?
0244nobodyさん2008/09/04(木) 13:58:49ID:???
日本製で初めてまともな海外水準のオープンソースプロジェクトというところ。
0245nobodyさん2008/09/04(木) 15:48:32ID:???
日本製だから応援してあげましょう ぐらいでいいのでわ
0246nobodyさん2008/09/04(木) 18:08:59ID:???
同意。
そして>>1に戻るのか
0247nobodyさん2008/09/04(木) 18:23:33ID:???
思ったが、なんでRubyにこんなにアンチが湧くんだろうね
現状、仕事でRubyを強制される訳じゃないのに・・・(悲しいことにw)
■ このスレッドは過去ログ倉庫に格納されています