- 1 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 03:18:33 ]
- 最強のLL=軽量プログラム言語は、どれよ?
エントリーは、 Perl、PHP、Python、Ruby、JavaScript・・・ さあ、死ぬまで語りやがれ!!!
- 335 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 14:14:09 ]
- 教祖様は気分で仕様変えるし、
メンテナはすぐヘソ曲げるし、 コミュニティの殆どは「誰か働けよ、中傷してやるからよぅw」モードだし、 普通に考えてRubyに価値があるわけないよね。
- 336 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 15:27:46 ]
- PHPはやはり強いな。
初めにやったもん勝ちなんだよな、こういうのは。
- 337 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 18:37:40 ]
- Rubyの方が昔からあったような気がする
- 338 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 20:32:57 ]
- まあ、シェア奪ったもん勝ちってことだろ。
- 339 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 22:32:21 ]
- >>335
Rubyの教祖様ってPHPをさんざん叩いてた人じゃないの? 当のRubyはそんな有様だから足引っ張ってんのか?ww
- 340 名前:デフォルトの名無しさん [2009/02/28(土) 23:59:35 ]
- PHPはウェブアプリのコーディングしてて「こんなのないかな?」っていう
関数は既に用意されてることが多いからやっぱ強い(自作関数だらけにもならんし)。 ヴォキャブラリーの力が圧倒的だから まあウェブ用途では当面代替になりそうな言語はないね。
- 341 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 00:22:09 ]
- PHPよか、Rubyの方が柔軟に書けそうに見えるんだけど気のせいか?
パッと見でPHPって、Webで使う用のCにしか見えないんだけど
- 342 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 00:32:08 ]
- Web用のCだったら、今頃使いまくってるけどな。
PHPは歴史を引きずって関数が増えてるだけ。 末期のBASICを思い出すわ。 DB接続だけで6種類以上あったり、勘弁してくれ。
- 343 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 00:34:11 ]
- まぁDB周りはクラス作ったりしてまとめたりしてるわ
PostgreSQLとMySQLしかつかってないが。 B→Cときた自分としては、PealやRubyってすごくソースが見づらい。
- 344 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 00:36:15 ]
- 沢山の人が読める
動かせる鯖多い phpの利点なんて他に無いでしょ ライブラリなんてpythonだろうがrubyだろうがperlだろうが不自由しませんよ phpは書きやすくはないと思う。むしろ他より疲れる。 よくも悪くも馬鹿正直な子のイメージ
- 345 名前:デフォルトの名無しさん [2009/03/01(日) 00:45:37 ]
- >>344
PHPは書きやすいから沢山の人が読めて、多くの鯖がサポートしてるんだが。
- 346 名前:デフォルトの名無しさん [2009/03/01(日) 00:57:26 ]
- PHPとPerlのちがいはなにですか?
PHPの方がゴージャスなのでしょうか。
- 347 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 01:04:24 ]
- >>345
書きやすくないよ。PHP以外の言語やったことは?
- 348 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 01:04:57 ]
- Web鯖新調したら動かないって大概Perlで
PHPで書き直すことになって俺の作業がすすまん。。。
- 349 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 01:24:37 ]
- >>348
普通は逆じゃないか? サーバ依存のPerlコードなんてどんなのがあるんだろう。 モジュールが入ってないとかそんな問題では。FastCGIとかそういう関係かな。 書き方があんまり古いから、いっそ書き直すってのならわからんでもないが、 PHPの古いコードを書き直すのも大概しんどい作業だから、それは言語のせいではないし。 PHPで書き直す必要のあるシチュエーションがあんまり思い浮かばない。
- 350 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 01:41:08 ]
- >>349
サーバーの中のことはあまり知らないんだが、今あるWebサーバーを CentOSに集約する作業で動かないのが出てくる パーミッションやら権限やらパスやら書き直したんだがやっぱり動かないんだわ 大半はメール、あとはDBやら出力の文字化けたりとかそんなかんじ バッチの書き直しが俺に来なかったのだけが救い・・・
- 351 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 01:57:49 ]
- >>350
コード読まずに環境変えて動かんってそれは仕方がない。 Perlのせいではないぞそれ。 むしろPHPの方が、バージョンや設定の違いのせいで書き直しとか動かんとか多い印象。 また、例えば/etc/aliasesいじってメールアカウントを量産するとか、パイプなどで コマンド直に叩いてるとか、そう言った感じのサーバ依存処理をごにょごにょされまくってたら、 もともとPHPだったとしても多分ひどいことになってるだろ > サーバーの中のことはあまり知らないんだが 一番の問題はこれじゃないかと。 結局これである程度できてしまうのが、PHPの利点ってことになるんだろうか。 欠点と言うことになるんだろうか。
- 352 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 02:37:01 ]
- >>351
鯖見てる人がPerl使える人だから上司もそうか、じゃぁ仕方ないで俺に来るんだよね。 メールは、ライブラリ入れてるんだけど動かないっていう状態。 俺はパイプとかさっぱり。 普通にPHPの文法でDBから引っ張ってきてメール送信するように書き直してるだけ。 PHPもDB入れ替えたからSQL全部書き換えなんだが全く手が付けられん状態。。。
- 353 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 06:00:02 ]
- 最近のCentOSではデフォでsendmailとpostfixが両方入ってるしMySQLは3系、4系、4.1系以降で
文字の取り扱いが大きく変わってるからその辺りだろうね。 直すのにそれほどの手間じゃないと思うけどそれを出来ない人に任すような会社であれば どのみちPHPにしてしまった方がいいかもね。
- 354 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 07:07:35 ]
- >>341
PHPは誰でも使えるJavaとかC#みたいな感じ。 しかし、仕様の変さでハマりどころの多さVBやVBA並w
- 355 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 08:45:27 ]
- >>350
馬鹿じゃね
- 356 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 09:38:27 ]
- 全くの素人です
プログラミングを学ぶにはパイソンかルビーのどちらかが良いと聞いて3日ほど調べてるんだけど ルビーの方がわかりやすい解説を見つけられるんでルビーにします
- 357 名前:デフォルトの名無しさん [2009/03/01(日) 10:04:04 ]
- ルビー
- 358 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 10:32:40 ]
- さあ、ソースコードをコンパイルする作業に戻るんだ。
- 359 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 11:02:50 ]
- >>356
ルビーに比べたらパイソンの資料が少ないのは否めないな。 レンタルサーバーへのインストールはどっちも少なくてガッカリするが。
- 360 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 11:58:25 ]
- なんかプログラミングしたいだけならschemeでもやってれば。マジレス
- 361 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 12:18:04 ]
- パイソンからジャバののちCかルビーからジャバののちCを学ぶルートがよいとありましたので
この二つから選んだ次第です
- 362 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 12:34:04 ]
- 何のルートだw
趣味なら何でもいいんじゃないか。
- 363 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 12:54:45 ]
- >>359
重要なのは中身さ。 英語ふくめればPythonの濃さは異常だぞ! 濃さ(マニアックさ?)で言えば最強はperlだと思うけどw
- 364 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 13:02:14 ]
- 真にディープなPerl信者は、言語の汚さをどれだけ指摘しても、
全部受け止めた上で「だがそれがいい」って自然体で言ってのけるからな。 指摘に対して必死になりがちなRuby信者やPython信者には無い強さがあるw
- 365 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 13:02:31 ]
- >>361
やるならforthをやれ
- 366 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 13:02:33 ]
- basic->asm->Prolog->FORTRAN->Pascal->Lisp->C->PL/I->C++->Smalltalk->Objective-C->Java->Perl->Ruby->PHP->Python->C#->JavaScript<-いまここ
- 367 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 13:03:07 ]
- ああforthもやったわ
- 368 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 13:21:07 ]
- やはりパイソンは良いですか
私も読みやすいというのは大きな利点じゃないかとは思ったんですよね すでにあるものをもう一度一から作るような真似は避けろともありましたし
- 369 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 14:24:48 ]
- 俺のスクリプトのルート
PHP→Python←いまここ PHPから入ると組み込み関数に頼りすぎて他の言語をやる時に散々なことになる。
- 370 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 14:25:04 ]
- Pyは初心者にとっては字下げ矯正箸だな
あのインデントが総てにおいて正しい、とまでは流石に言わないが かなりの場面で通用する、それなりに正しいインデントが身につく
- 371 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 17:21:39 ]
- いや、そもそもインデントもろくにできないなんて
プログラムできるとかいう以前の問題だろ 俺のスクリプトルート BASIC→C→C++→VB→VBA→Perl→PHP←いまここ 文字列関数とか連想配列とかどんだけ便利(ry
- 372 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 18:29:08 ]
- BASIC->C->sh,awk,sed->elisp->Perl->Tcl->Python->Ruby->Java<-今ココ
インデントって...。どんなエディタつかってんだよ 作りたいものがないのに入門したいなら、Cとscheme。異論は認めない。
- 373 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 19:11:28 ]
- >>372
まあプログラムがどう実行されるかを理解するなら両者が基本だよね。 それ以前のプログラミング手習いの段階なら多分Py,R,JSあたりで打鍵に抵抗なくした方がいいが。
- 374 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 09:36:59 ]
- レンタルサーバーならさくらインターネットがパイソンもルビーも対応してるようですが
どなたかご利用の方いらっしゃいましたら使用感を教えてください
- 375 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 09:43:31 ]
- レンタル鯖板いけ
- 376 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 09:44:33 ]
- RubyもPythonも、インタープリタとして使うだけなら使用感も何もないのでは。
バージョン通りの動きをするだろ。 WEBシステムの実装言語として使うなら、本体よりもむしろFastCGIやmod_**の方の 設定の可否などが大きいはず。そういうことを聞いてるのかな?
- 377 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 09:46:38 ]
- >>374
レンタルサーバの使用感ならhosting板、 CGIのバックとしての使用感ならwebprog板で訊いて下さい。
- 378 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 13:54:25 ]
- 以下の内容は、某スレに書き込んだものなんだけど、自分には結構面白いやり
取りになったので、いろんな言語でやってみたくなった。 ある大きな連想配列から、いくつかのキーを持つ要素だけを取り出した、部分 連想配列を作りたい。 // PHP版 $request = array('hoge'=>1, 'fuga'=>2, 'piyo'=>... //これからキーが hoge, fuga の物だけを取り出すとすると、 foreach (array('hoge', 'fuga') as $param) { $a[$param] = $request[$param]; } これ、いろんな言語で、なるべく簡潔に書くにはどうしたらいいだろう?
- 379 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 14:11:16 ]
- >>378
Perlで my %request = ('hoge'=>1, 'fuga'=>2, 'piyo'=>3); my %a = (); my @keys = ('hoge', 'fuga'); @a{@keys} = @request{@keys}; ググってサンプルを見ながら適当に。なんかおかしいorもっと簡潔に書けるかも。
- 380 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 15:00:14 ]
- >>379
Perl って、 ・連想配列の引数に、配列を与えられるのか。すげー。 ・変数名のプレフィックスが型によって違うから、目がちかちかするのう。 Perl講座 2章 [変数] www.site-cooler.com/kwl/perl/2.htm
- 381 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 15:02:53 ]
- ちなみに、ほかに書き込んだのは
PHP@プログラム板 pc11.2ch.net/test/read.cgi/tech/1232712334/341- Pythonのお勉強 Part32 pc11.2ch.net/test/read.cgi/tech/1234716330/275-
- 382 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 15:07:09 ]
- JavaScriptは多分愚直にループするしかないかな?
Rubyはなんかメソッドうにょうにょでできそうだけど、俺は知らね。
- 383 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 15:08:14 ]
- >>380
配列周りでぼんぼことフラット化する癖は……
- 384 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 15:32:05 ]
- バベル案内
www.aoky.net/articles/steve_yegge/tour_de_babel.htm > Perlは夏の台湾の通りの上で破裂したマッコウクジラだ。はらわたがそこら > 中に飛び散って、車や自転車や歩行者を覆っている。それがPerlだ。本当に > チャーミングだ 。 (略) > Perlがリスト処理をできないのは、リストを自動的に平坦にするという救い > がたく愚かな決断をラリーが初期にしたことによる。そのため(1, 2, (3, > 4))は不思議なことに(1, 2, 3, 4)に変わってしまう。あなたはこんな風になっ > てほしいと思ったことはないだろう。しかしラリーがある日たまたま何かの > 問題でそうなるのが都合が良かったため、それ以来Perlのデータ構造はまっ > たくの破裂したクジラとなってしまったのだ。
- 385 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 15:38:56 ]
- >>384
釣れますか?
- 386 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 15:55:14 ]
- Rubyをよく知らない俺様が通りますよ。
irb(main):001:0> request = {'hoge'=>1, 'fuga'=>2, 'piyo'=>3} => {"fuga"=>2, "hoge"=>1, "piyo"=>3} irb(main):002:0> a = {} => {} irb(main):003:0> ["hoge", "fuga"].map{|x| a[x] = request[x]} => [1, 2] irb(main):004:0> a => {"fuga"=>2, "hoge"=>1} これではforループがmapに変わっただけだな。
- 387 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 16:20:28 ]
- Rubyは中途半端な私が通りますよ。
request = { 'hoge' => 1, 'fuga' => 2, 'piyo' => 3 } keys = ['hoge', 'fuga'] a = Hash[*keys.zip(request.values_at(*keys)).flatten]
- 388 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 16:26:37 ]
- >>387
*keys の * ってなにをするものなの? 良かったら教えて。ググりようがないので。
- 389 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 16:38:22 ]
- >>388
中を展開すると理解してる。ちょっと違うかもしれないけど。 こうすると分かりやすいと思う。 p [1, 2, 3] p *[1, 2, 3]
- 390 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 16:53:46 ]
- グモ
- 391 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 16:56:04 ]
- >>389
ごめん、やっぱりよく分からない。 p *[1, 2, 3] は動くけど、 *[1, 2, 3] は動かない。どうなってるの? リファレンスのどこに載ってるか、教えてもらえるととてもうれしい。 www.ruby-lang.org/ja/man/html/
- 392 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 16:57:47 ]
- メソッド呼び出し のところ
- 393 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 17:40:45 ]
- >>392
> メソッド呼び出し のところ そういうことか!やっとわかった。ありがとう。 メソッド呼び出し - Rubyリファレンスマニュアル www.ruby-lang.org/ja/man/html/_A5E1A5BDA5C3A5C9B8C6A4D3BDD0A4B7.html ちなみに Pythonだと、* で配列の展開、** で連想配列の展開になる。 >>> def hoge(a, b, c): ... return a >>> hoge(*['a', 'b', 'c']) 'a' >>> hoge(**{'a':1, 'b':2, 'c':3}) 1 4. その他の制御フローツール www.python.jp/doc/release/tut/node6.html#SECTION006720000000000000000 なるほどRubyにもあったのか。 正直に言うと、Hash[], Enumerable#zip, Hash#values_at とか、全部知らなかった。 Rubyってホントにメソッドが山盛りだな。 まあ俺が無知なだけか。
- 394 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 17:42:26 ]
- >>391
>>392さんの通り。 www.ruby-lang.org/ja/man/html/_A5E1A5BDA5C3A5C9B8C6A4D3BDD0A4B7.html 多重代入でも最後のメンバー限定で展開できたり。 a, b, c = [1, *[2, 3]] p a, b, c www.ruby-lang.org/ja/man/html/_B1E9BBBBBBD2BCB0.html#a.c2.bf.bd.c5.c2.e5.c6.fe 多重代入の左辺と、メソッドの仮引数で意味が変わったりする謎アイテム。
- 395 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 17:44:06 ]
- ぐは。
- 396 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 18:00:39 ]
- 交代リストからハッシュを作れるRubyの仕様は、古き良き時代のLISPの香りが
するような。
- 397 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 18:21:30 ]
- 静的型の言語はお呼びじゃないか。
標準ライブラリのtemplateをひっかきまわすのは面倒そうなのでこれで。 int[string] request = ["hoge":1, "fuga":2, "piyo":3]; auto keys = ["hoge", "fuga"]; typeof(request) result; foreach(i; keys) if(i in request) result[i] = request[i];
- 398 名前:デフォルトの名無しさん [2009/03/02(月) 18:51:45 ]
- >>397
何かと思ったが、これは C++0x か! すげえ、こんな風に書けるようになるのか!
- 399 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 19:09:04 ]
- しかしロジックは>>378のforループと変わっていないんだな。
- 400 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 19:22:37 ]
- いや、D。
0xだとdecltypeだったりstd::for_eachだったりunordered_mapだったりすると思うわけだが。 ロジックはまるっきり同じ。 組み込みの連想配列を持っていてfor .. in相当の構文がある言語ならなんでもこの形式で書けるんじゃないのかな
- 401 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 19:25:21 ]
- やった、RubyのEnumerable#injectで書けたよママン。
['hoge','fuga'].inject({}){|x, y| x[y]=request[y]; x}
- 402 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 19:40:53 ]
- Ruby の inject が使えるなら Python の reduce も使えるはずだ。
def func(x, y): x[y]=request[y]; return x reduce(func, ['hoge', 'fuga'], {}) なんで無名関数使わないのかって? Pythonのlambdaは代入とかできないんだようるせえな。 いいんだよPythonでは名前空間の不足に困ったりしないから。 あと何でも一行で書こうとするのは悪い習慣。
- 403 名前:デフォルトの名無しさん [2009/03/02(月) 19:56:39 ]
- >>400
> いや、D。 なんだそうか。C++に連想配列リテラルが組み込まれたかと思って驚いちゃった よ。恥ずかしいな。 D vs C++0x - プログラミング言語 D 2.0 www.kmonos.net/alang/d/2.0/cpp0x.html#initializer-lists
- 404 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 19:59:17 ]
- ちんこ
- 405 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 20:10:25 ]
- どれも別に短くはなっていない件について。
- 406 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 20:17:38 ]
- わざとキモく書いてみるテスト
$request = @{hoge=1; "fuga"=2; 'piyo'=3} $a = @{}; echo hoge,'fuga' | % { $a.$_ = $request[$_] }
- 407 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 20:22:05 ]
- >>402
dict(reduce(lambda x, y: x + [(y, request[y])], ['b','c'], []))
- 408 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 20:24:01 ]
- dict(reduce(lambda x, y: x + [(y, request[y])], ['hage','fuga'], []))
- 409 名前:402 mailto:sage [2009/03/02(月) 20:36:40 ]
- >>407-408 まいりました。おまい頭いいな。
- 410 名前:デフォルトの名無しさん [2009/03/02(月) 20:40:14 ]
- どれも大体分かるけど、>>406 だけ全然分からん。
- 411 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 20:40:26 ]
- 何でも一行で書こうとするのは悪い習慣
- 412 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 20:53:22 ]
- python の dict って hoge.append('key', value) みたいなこと出来ないんですか?
- 413 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 21:00:10 ]
- >>406は言語すらわからん。
Perlっぽいが、動くとは思えん。これ何?
- 414 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 21:00:57 ]
- >>412
知らんけど、無さそうだね。 hoge['key'] = value じゃ駄目? 3.8 マップ型 www.python.jp/doc/release/lib/typesmapping.html
- 415 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 21:03:00 ]
- >>407-408
最後にdictを使うのなら、injectじゃなくて、リスト内包表記やmapの方が素直 じゃね?Python本スレではそうなってた。
- 416 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 21:07:51 ]
- >>410,413
PowerShellですよ どうせならはっきりキモイと言ってくれても私は一向に構わん % は Foreach-Object というコマンドのエイリアスで ハッシュテーブルへは配列表記プロパティ表記どちらでも可能なのでこんな感じでキモく書けます
- 417 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 21:16:02 ]
- >>412
{}.__setitem__(k, v)
- 418 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 21:16:44 ]
- >>412
>>414 hoge.__setitem__(key, value) 無理やりreduceで書くなら例えば reduce(lambda d, x: d.__setitem__(x, request[x]) or d, ['hoge','fuga'],{}) こんな書き方になると思うけど、Python使いはこの例を普通こんな風には書かない dict((k, request[k]) for k in ['hoge','fuga']) のほうがずっと素直で短く読みやすいからね
- 419 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 22:00:38 ]
- >>416
なるほど、キモいけど面白れー!
- 420 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 22:15:29 ]
- >>418
内包記法はうらやましい
- 421 名前:341 mailto:sage [2009/03/02(月) 22:30:41 ]
- なんか、このスレでも結構盛り上がったかな。ありがとうございます。
ちなみに元の言語であるPHPにも、forループしかないわけじゃなくて、むやみ やたらと沢山のarray関連関数がある。 jp2.php.net/manual/ja/book.array.php これを利用したら簡潔にならないかと思ったんだが、 array_intersect_key($request, array_flip(array('hoge', 'fuga'))); 関数名の長いせいもあって、どうも垢抜けないのう。
- 422 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 22:47:33 ]
- Python人口多いな。
Perl とか Ruby とか、もっと面白いことできないの?
- 423 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 22:52:03 ]
- 「面白いこと」を定義してください
- 424 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:00:41 ]
- じゃ、Rubyで。>>387とあんまり変わらないか。
Hash[*['hoge','fuga'].map {|x| [x, request[x]]}.flatten] 個人的には、リスト内包表記より、Rubyのmapとブロックのほうが好きだな。
- 425 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:06:06 ]
- >>423
Rubyはさておき、Perl だったら、とにかく変態的なことをしてほしい。 ほかの言語だったらありえないようなこと。
- 426 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:13:37 ]
- >>423
pc11.2ch.net/test/read.cgi/tech/1231856193/412 >中二設定豊富
- 427 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:15:50 ]
- >>425
>>379の縦横無尽の記号乱舞リスト展開くらいではまだ足らんと申すか
- 428 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:21:58 ]
- >>427
いや、逆。あれで火がついちゃった。Perlすげえ。 もっと何か見せてほしい。
- 429 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:26:58 ]
- 目的と手段を取り違えている典型的な例だな
- 430 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:30:32 ]
- >>424
> 個人的には、リスト内包表記より、Rubyのmapとブロックのほうが好きだな。 ブロック内に複数行でも書けるから、凝ったことがやりやすいよね。 Pythonのリスト内包表記だと、長くなるとだんだん読み書きしづらくなる。 そのうち業を煮やして、手作業でforループに書き換えることに。 そのときの面倒さと言ったら。 これって俺だけ?
- 431 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:31:11 ]
- つってもありゃイディオムだしな。
リファレンスでごちゃごちゃしたって簡潔にも面白くもならんだろうし。 他の例のようにループ(?)にするとこんな感じかな。 my %a = map { ($_, $request{$_}) } ('hoge', 'fuga');
- 432 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:31:22 ]
- perlのハードルがあがっているところ普通で申し訳ないが
面白そうなので俺も書いてみた。 for(keys %request){if(/hoge/||/fuga/){$r{$_}=$request{$_};}} grepで出来んかな
- 433 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:32:24 ]
- >>429
ええそうです。手段のためなら目的を選びませんとも!
- 434 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:43:30 ]
- あー、やっと気づいた。>>407-408って、Schemeとか関数型言語で多用される
「継続渡し」スタイルだ。 だから副作用の書けないPythonのlambdaでも、ちゃんと結果を累積できるんだ。 >>426 Haskell わかんないから君が書いてよ。
- 435 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:45:22 ]
- >>431と>>432を合わせて無理矢理grepも使ってみた
my %a = map {$_, $request{$_}} grep {/^hoge|fuga$/} keys %request;
|

|