1 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 10:48:30 ] 最強のLL=軽量プログラム言語は、どれよ? エントリーは、 Perl、PHP、Python、Ruby、JavaScript・・・ さあ、死ぬまで語りやがれ!!! ■LLとは? 軽量プログラミング言語(Lightweight Language,LL)とは、取り回しに優れ、 コードの作成や修正が容易と見なされるプログラミング言語のことを指す。 ここでいう「軽さ」はプログラマの負担の軽重を指し、 実行速度に優れているという意味ではない。 現在の水準では ・インタプリタ ・動的型 ・正規表現 ・関数オブジェクト などを利用できるものがLLと呼ばれることが多い。(Wikipediaより) ■過去スレ 【Perl,PHP】LLバトルロワイヤル5【Ruby,Python】 pc12.2ch.net/test/read.cgi/tech/1238720336/ 【Perl,PHP】LLバトルロワイヤル4【Ruby,Python】 pc12.2ch.net/test/read.cgi/tech/1234635513/ 【Perl,PHP】LLバトルロワイヤル3【Ruby,Python】 pc11.2ch.net/test/read.cgi/tech/1215319832/ 【Perl,PHP】LLバトルロワイヤル2【Ruby,Python】 pc11.2ch.net/test/read.cgi/tech/1209289408/ 【Perl,PHP】LLバトルロワイヤル【Ruby,Python】 pc11.2ch.net/test/read.cgi/tech/1188997302/
357 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 15:23:21 ] メソッドの引数も、ブロックの引数も、ライブラリの名前とかも宣言するのに 変数を宣言しない理由がよくわからない
358 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 15:25:31 ] R++ が出来たら Ruby を認めてやるよ。
359 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 15:27:44 ] >>357 変数は使う場所多いからいちいち宣言するのめんどいじゃん? というような趣旨のことをどっかで聞いた覚えがある
360 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 15:30:50 ] 変数宣言なんか導入されたら現状のRubyの利点である 「ローカル変数かインスタンスメソッドかよくわからないがとにかく返り値を返す何かであるhoge」 というのができなくなるじゃないかー
361 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 15:35:22 ] それ、やってるのお前だけだから。
362 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 17:31:50 ] >357 ライブラリ名の宣言というのがよく分からんが メソッドやブロックの引数はRubyの場合、代入だろ? モジュールやクラスの定義は Module、Classのインスタンスを作成し定数に代入 さらに最後の式の結果を返す文 メソッド定義だけは少し毛色が違う気がするね あれはProcのインスタンス作成とかしないだろうし
363 名前:デフォルトの名無しさん [2009/07/03(金) 18:47:03 ] >>352 変数のスコープが無い って、言ってることがよくわからんな。 ローカル変数もインスタンス変数もクラス変数もスコープはちゃんとあるし。 ブロックがスコープを作らないってならPythonもJavascriptも一緒だし。
364 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 18:53:39 ] JavaScript1.7だったかからはブロックごとのスコープを持つletというのが出てきてvarの影が薄くなってる
365 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 18:54:27 ] Rubyの通常のブロックはスコープ作るよ ブロック開始時の文脈でブロック内の変数の新規性をチェックしてるに過ぎない
366 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 19:03:09 ] うん、 class C def initialize hoge = 'hoge' @block = lambda{puts hoge} end def run hoge = 'MODIFIED!' @block.call end end C.new.run は、call で実行された環境ではなく block が定義された文脈を考慮して 'hoge' を表示する
367 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 19:05:44 ] 本スレにもクロージャのスコープが理解できなくて延々文句垂れてた奴がいたな そんな特殊なものでもないしちょっと調べれば分かるのに、Rubyばっかり話題になる意味がよく分からん
368 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 19:12:55 ] それは別の話じゃね
369 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 22:11:48 ] >>365 単純に、initializeとdefとは違うスコープになってて 呼び出し先が違うだけって事じゃないの?
370 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 04:29:55 ] >>349 遅すぎだろ。jkw
371 名前:デフォルトの名無しさん [2009/07/06(月) 00:08:20 ] なー、シンプルにそれぞれの最も優れてる実例を出してくれないか? 結局大事なのは使えるかだろ?
372 名前:デフォルトの名無しさん [2009/07/06(月) 00:37:19 ] www.google.com/
373 名前:デフォルトの名無しさん [2009/07/06(月) 21:34:43 ] えっ
374 名前:デフォルトの名無しさん [2009/07/06(月) 21:35:26 ] 何これこわい
375 名前:デフォルトの名無しさん [2009/07/07(火) 01:33:20 ] >>372 の脳内 (検索しろ!と言う。俺かっこいいべ!昔はmanだったけど今はGoogleだべ。)
376 名前:デフォルトの名無しさん [2009/07/07(火) 07:30:19 ] www.youtube.com/
377 名前:デフォルトの名無しさん [2009/07/07(火) 08:50:13 ] d.hatena.ne.jp/keyword/Python googleに使われてるよ
378 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 09:02:34 ] >>377 で?
379 名前:デフォルトの名無しさん [2009/07/07(火) 09:04:06 ] >>378 Pythonが一番
380 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 09:30:20 ] Pythonはいいけど信者はうざい。この点rubyを凌駕している。
381 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 09:32:12 ] 信者「ではない」よ たぶんね
382 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 09:44:18 ] 信者は「他称」だからなw
383 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 09:48:50 ] 傍目にウザい時点で他人が装ってる可能性が大 >>380 みたいに単純な人はいいオモチャ
384 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 10:48:48 ] 信者はうざい。はここの書き込みに言ったのではない。
385 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 12:51:34 ] >>380 ルビ厨のほうがひどいだろ。jk
386 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 13:15:51 ] どの言語信者も最近はわりと皆おとなしいだろ 弾やmatzも
387 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 13:21:28 ] >>384 >>379 がageてるのに気づいて後出しじゃんけんですね。わかります。
388 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 14:05:45 ] お前に何がわかるっていうんだ!!
389 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 14:16:03 ] JavaってLLじゃね?
390 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 15:31:14 ] >>1 にエントリーされていないのでスレ違いとなります
391 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 17:06:57 ] >>390 ダメです。
392 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 18:00:16 ] 久し振りにラクダ本を開いた。 テキトーなページを開いたら「配列の配列」について書かれていて for $i ループ内には $AoA[$i] = @array; # 間違い $AoA[$i] = [ @array ]; # 正しい と書かれていた。 …俺は読むのをやめた。
393 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 18:46:27 ] >>392 それのどこに嫌要素が? 超わかりやすいだろ。
394 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 18:54:26 ] >>392 何が問題なん?
395 名前:デフォルトの名無しさん [2009/07/07(火) 19:29:05 ] で、1は誰なんだよ
396 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 19:33:28 ] お前に決まってるだろ
397 名前:デフォルトの名無しさん [2009/07/07(火) 19:36:38 ] じゃあ独断と偏見でPythonって事で
398 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 20:00:10 ] もう俺JavaScriptでいいや
399 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 23:04:16 ] Python最強ですよねー
400 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 23:09:03 ] >>392 は、以前にPerlを触ったときにはスカラーの概念やリファレンスまでは たどり着けなかったんだと。 まあどの言語でも、一つずつ覚えてちょっとずつ進歩していけばいいと思うよ。
401 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 03:33:31 ] 俺には393や394の感覚がわからん。400もな。 392の例はあからさまに直感的じゃないと思うよ。
402 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 03:44:53 ] $AoA[$i] = $@array;
403 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 04:41:20 ] 配列のリファレンスも分からないようなPerl素人がいきなりラクダ本なんて読もうと思うのが間違い。 もっと初心者向けび本にしとけ。 というか、リファレンスとかポインタとか理解出来ない人間は職業プログラマーの素養がないので、PHPで日曜プログラマーでよい。
404 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 05:00:29 ] 〜が理解できないとかPerl上級者とかそういう話はしてないよ
405 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 05:04:00 ] リファレンスが解るかどうかと、392が直感的かとは別問題でしょ… 俺だってCやJavaやPythonやRubyでリファレンスなら扱えるさ Perlのは同じ記述がコンテキストで意味変わり過ぎてちと無理だわ
406 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 05:05:55 ] $AoA[$i] = [ @array ]; # usually best $AoA[$i] = \@array; # perilous; just how my() was that array? @{ $AoA[$i] } = @array; # way too tricky for most programmers perldscから引用 直感的ではないなどと主観で言われても、 ああ、そうですかとしか言いようが無いけどね。
407 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 05:15:50 ] >>402 それ、エラー出ないか? ちなみに同じページに $AoA[$i] = \@array; もほぼ間違い、と書かれていた。 @arrayがループ内でmyされたものなら問題は起きないが ループより外にスコープがあるものだった場合 \@arrayは毎回同じ配列へのリファレンスを取得してしまうから、だそうだ。
408 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 06:20:36 ] 言語毎にまとめてみた。 上はコピーされてリファレンスが渡され、下は直接リファレンスが渡される。 Perl $AoA[$i] = [ @array ]; $AoA[$i] = \@array; PHP $AoA[$i] = $array; $AoA[$i] = &$array; Ruby AoA[i] = array.dup AoA[i] = array Python AoA[i] = list(array) AoA[i] = array
409 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 06:29:28 ] Perlの場合リファレンスとかがわかりにくいというより コンテキストが問題を分かりにくくしてると思う
410 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 07:52:09 ] 今回の例に限って言えば、配列(およびハッシュ)の要素にはスカラー値のみ格納できる、 っていう言語仕様を知ってるかどうかだけのことなんだろうけどな
411 名前:デフォルトの名無しさん [2009/07/08(水) 07:56:55 ] 配列の配列とかが直感的に思った通りに出来る言語が勝ちだな。
412 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 08:06:57 ] >>411 直感は個人によって違うわけだから、そんなに直感的にやりたいなら自分で言語作ればいいんじゃないかと つプログラミング言語を作る 前橋 和弥 (著) www.amazon.co.jp/dp/4774138959/
413 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 10:08:45 ] @hoge = (1, 2, (3, 4, 5), (6, 7, (8, 9)), 10);
414 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 10:48:19 ] いつ見ても、Perlの文法は糞過ぎる。 なんで未だにこれを擁護出来る人が居るのか不思議でならない。
415 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 10:54:06 ] 糞であるが故のバッドノウハウ症候群。 そして今更捨てられることができない認知的不協和。
416 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 11:42:12 ] 無名関数を積極的に使いたい人は クラス・メソッドの関係にこだわらないperlの方がむしろ癖がなくて良い
417 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 11:49:27 ] >416 まともな関数型言語触った事無い奴が、そんな寝ぼけた事言ってるんだろうな。
418 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 11:51:04 ] 無名関数を積極的に使うならJSが割と最適解かも
419 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 11:52:21 ] 416 は Perl しか使っていない
420 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 12:07:54 ] 使いまわしの出来るクラスの一つや二つ作れるようになってから(ry
421 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 12:30:21 ] >>418 合意
422 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 12:31:36 ] >>408 Javaに慣れてしまった俺としては、Rubyが一番素直に見える。 次はPython、でPHPの順かな。 Perlはやっぱり複雑怪奇だ。 配列をオブジェクトとして扱えた方が、array.lengthみたいな書き方が出来て便利だと思う。 >>418 確かに。 最初のうちは無名関数の使いどころがよくわからなかったけど、 JavaScriptを使っているうちになんとなく身についた。
423 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 12:38:37 ] 無名関数を関数型言語で覚えた奴は、純粋な関数処理を書く。 JavaScriptで覚えた奴は、副作用大前提のプロシージャっぽいのを書く。
424 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 12:56:06 ] >>414 いつ見ても、Rubyの文法は糞過ぎる。 なんで未だにこれを擁護出来る人が居るのか不思議でならない。 と、何にでも適用可能だな。w
425 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 13:02:03 ] >>423 副作用大前提のおかげで、ジェネレータが発明されたんだぜ
426 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 13:08:20 ] LISPだって副作用バリバリだろ。
427 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 13:13:00 ] perlだけはレベルが違う
428 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 13:26:55 ] >>422 Java はどのへん? C# は?
429 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 14:53:48 ] ラクダ本って言うのは、Perlに詳しい人が読む本。初心者が無理して読む本じゃない。
430 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 15:05:58 ] Javaは数値以外は基本的に参照、だからコピーのときに明示 C#は知らん
431 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 15:06:15 ] ダウト。ラクダ本は多言語上級者がPerl入門のために読むもの。
432 名前:430 mailto:sage [2009/07/08(水) 15:15:26 ] 盛大にコンテキスト(文脈)を読み間違えたぜ…
433 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 15:59:44 ] 結局コードも示さずに複雑怪奇やら、糞やら、呪詛を吐くしかできないのか。 だめだこりゃ。
434 名前:デフォルトの名無しさん [2009/07/08(水) 16:01:49 ] >>433 そりゃほとんどの人間の悪口は脳内の言語イメージに対して言っているものだから仕方ない そういう馬鹿がよりつかなくてよかったと思うしか
435 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 19:10:09 ] package MyObj; sub new { my ($class) = @_; my $self = { 'items' => [] }; bless $self, $class; } sub set { my ($self, $newitem) = @_; push @{ $self->{'items'} }, $newitem; } sub take { my ($self) = @_; pop @{ $self->{'items'} }; } 1; いまPerl初心者の俺のコードが簡単に言うとこんな感じになってるんだが Perl使い的にはどう書くんだ?
436 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 19:55:55 ] Perlスレで聞けばいいのに。 モダンに書くとしたら。 package MyObj; use Moose; has 'items' => ( is => 'rw', isa => 'ArrayRef', default => sub { [] } ); sub set { my ($self, $newitem) = @_; push @{ $self->items }, $newitem; } sub take { my ($self) = @_; return pop @{ $self->items }; } 1; これだけ単純なら、use Mooseじゃなくてuse Mouseでも。
437 名前:デフォルトの名無しさん [2009/07/08(水) 21:22:20 ] モダン(笑) ハイソ(笑) ハイカラ(笑)
438 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 21:47:52 ] ニーソ馬鹿にすんな
439 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 23:30:45 ] perlerの連中も、意識的にモダンに書かないと、非モダンな出来上がりになる事は 認めてるらしい。
440 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 23:56:12 ] perlの文を見ると吐き気がする。C++の仕様の方がカワイイぐらいだ いい加減に間違った進化だったって、さっさと淘汰されないかな
441 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 00:04:30 ] Perl系の言語って、Perlそのもの以外になんかあるんだっけ?
442 名前:436 mailto:sage [2009/07/09(木) 00:34:14 ] >>439 まあ、モダンでなければ非モダンだわな。>>435 そのままだし。 >>436 でもAny::Mooseぐらい使えとか、no Mooseしとけとか突っ込まれそうな気がする。 >>441 直系はPHPとRuby。既に別物。
443 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 00:40:49 ] >441 JPerlとIronPerlがあるよ
444 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 00:47:37 ] PHPってPerl系なのか
445 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 00:55:53 ] PHPは元を辿ればPerlの派生だけど、 ポリシーの無い付け足しをしまくりでワケワカメ状態。
446 名前:デフォルトの名無しさん [2009/07/09(木) 04:27:04 ] モノポリー
447 名前:デフォルトの名無しさん [2009/07/09(木) 04:39:45 ] のんぽり
448 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 08:50:51 ] >>440 Rubyの文を見ると吐き気がする。Pythonの仕様の方がカワイイぐらいだ いい加減に間違った進化だったって、さっさと淘汰されないかな
449 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 09:44:49 ] というレスを書いて「何にでも当てはめられるなw」とかご満悦の奴が時々いるけど、 オリジナルのようには的を射ていないのが大半で、ミジメな抵抗に終わる。
450 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 10:20:23 ] 的を射
451 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 11:31:33 ] >>451 ATOKまじお勧め
452 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 11:33:03 ] ATOK は自分を指すミスまでは直してくれないんだね
453 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 12:10:45 ] ATOK なんかをつかうやつはばかです
454 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 12:41:12 ] SKKこそ正義
455 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 12:41:30 ] ATOK使ってみたら草生やすのが大変すぎてワロタ
456 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 13:20:05 ] っっっっっっっっっっっっw
457 名前:デフォルトの名無しさん mailto:sage [2009/07/09(木) 19:48:51 ] っっwの状態でファンクションキー1回押すだけだよ