【Perl,PHP】LLバトルロワイヤル4【Ruby,Python】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/02/15(日) 03:18:33エントリーは、
Perl、PHP、Python、Ruby、JavaScript・・・
さあ、死ぬまで語りやがれ!!!
0039デフォルトの名無しさん
2009/02/15(日) 23:27:270040デフォルトの名無しさん
2009/02/15(日) 23:31:490041デフォルトの名無しさん
2009/02/15(日) 23:33:04ってことでいいのかNA
0042デフォルトの名無しさん
2009/02/15(日) 23:35:30汎用ポインタみたいなのしかないの?
0043デフォルトの名無しさん
2009/02/15(日) 23:37:34それ以前もべつに全部VARIANTというわけじゃなくて
整数だの文字列だのといった組み込み型や構造体やクラスぐらい使えたYO
0044デフォルトの名無しさん
2009/02/16(月) 00:20:25いまどきどの言語でもリストなんてライブラリがあるし
0045デフォルトの名無しさん
2009/02/16(月) 00:23:25C++はLLだネ☆
STLとか使えるし
匂いだっていいし
0046デフォルトの名無しさん
2009/02/16(月) 00:35:110047デフォルトの名無しさん
2009/02/16(月) 00:50:290048デフォルトの名無しさん
2009/02/16(月) 00:56:38大昔から存在する古典的なデータ構造なんだし
0049デフォルトの名無しさん
2009/02/16(月) 00:57:53うn
代数データ型もパターンマッチも遅延評価も使えない言語はうんこだよね
たとえばPerlとか
LL?何それ
0050デフォルトの名無しさん
2009/02/16(月) 00:58:58CPUの勉強でもしてくれ。
0051デフォルトの名無しさん
2009/02/16(月) 01:01:22いや、C言語みたいなCPUやメモリに近い言語ならそれでも良いけどさ…
ある程度の高級言語になってくると気になる。
0052デフォルトの名無しさん
2009/02/16(月) 01:02:15でもPerlもPythonもリストなんか組み込みで持ってないよ
あれは動的配列
0053デフォルトの名無しさん
2009/02/16(月) 01:03:400054デフォルトの名無しさん
2009/02/16(月) 01:04:20ってことはデータを動的に追加しまくると重くなったりするの?
0055デフォルトの名無しさん
2009/02/16(月) 01:04:38データ構造を意識しないで済む型がゴールだよな
リスト、スタック、ツリーetc言ってる時点で古い
0056デフォルトの名無しさん
2009/02/16(月) 01:04:54あたりまえだけどinsertionがO(N)でインデクスアクセスがO(1)
0057デフォルトの名無しさん
2009/02/16(月) 01:05:30アルゴリズムのオーダーも意識できない奴はプログラマをやめたほうがいい
どんな言語だろうとそれは同じ
0058デフォルトの名無しさん
2009/02/16(月) 01:06:59言語仕様をコンパクトにしてライブラリで高度な機能を提供する。
これが正しいプログラミング言語。
もちろんスクリプト言語やら動的言語はこの限りではない。
0059デフォルトの名無しさん
2009/02/16(月) 01:07:13古い、ではなく(脳内処理が)重い、っていうとLightweightの概念に少し近づく?
0060デフォルトの名無しさん
2009/02/16(月) 01:08:33その考えが古いよ。
少なくともここで語られているようなスクリプト言語の進化の方向性と
君の考えは異なっているようだ。
0061デフォルトの名無しさん
2009/02/16(月) 01:12:23アルゴリズム本の良書おしえて
0062デフォルトの名無しさん
2009/02/16(月) 01:12:27は?
効率がどうでもいいなら連想配列は単なるassociative listとして
実装してもいいわけでハッシュとか要らない
メモリ効率がどうでもいいんならgeneratorとか実装する必要は無い
むしろドン亀スクリプト言語で悪いアルゴリズムを選ぶと、C/C++では
バレなかったかもしれないがモロに影響が出るわけだが
なんか勘違いしてんじゃねーの?
0063デフォルトの名無しさん
2009/02/16(月) 01:15:09最近アルゴリズムの勉強し始めたのか?
スクリプト言語はアルゴリズムが具体的になんであるべきかは規定していないものが多い。
変数の使われ方から最適なアルゴリズムをコンパイラが選択できるのがベスト。
人間からアルゴリズム時間を見積もる必要がある用途ではそもそも
ここで語られているような言語は向いてない。
0064デフォルトの名無しさん
2009/02/16(月) 01:19:49> スクリプト言語はアルゴリズムが具体的になんであるべきかは
> 規定していないものが多い。
は?例えばPerlの配列が動的配列でハッシュがハッシュテーブルであることは
Perlプログラマならみんな知ってるし理解していなければならないことだろ
0065デフォルトの名無しさん
2009/02/16(月) 01:20:15ちょっと冷静になった方がいいかも。
> 効率がどうでもいいなら連想配列は単なるassociative listとして
> 実装してもいいわけでハッシュとか要らない
これは、言語の内部実装じゃないの?
むしろあんたの主張と逆に、アルゴリズムなんか考えなくてもいいようになってる例じゃないか?
> メモリ効率がどうでもいいんならgeneratorとか実装する必要は無い
ただ単に言語の使い勝手の問題として捉えると、これは極論過ぎるだろw
簡単な事を簡単にできるのが大事なことで、選択肢として複雑な事ができるのは悪いことでも
不必要なことでもないだろ。ってなんか書いてて恥ずかしくなってきた。
0066デフォルトの名無しさん
2009/02/16(月) 01:23:08その通りで、言語側の組み込みないしライブラリのデータ構造だが、
それについて何も知らなければ効率の良いコードは書けないということ。
「アルゴリズムなんか知らなくても/考えなくてもいい」というのは全くの誤りだ。
0067デフォルトの名無しさん
2009/02/16(月) 01:23:28珠玉のプログラミング か プログラミングの宝箱
0068デフォルトの名無しさん
2009/02/16(月) 01:27:11馬鹿げた話はアルゴリズムとデータ構造への根本的無知から生じる
0069デフォルトの名無しさん
2009/02/16(月) 01:30:48組み込みの抽象データ型なんてのはどうにでも実装できるし、
最近のスクリプト言語では、万人がよくつかう使い方でいかに効率よく処理できるかを
考えて色々組み合わせて実装されている罠。だからあえてリストですとかハッシュですなんていわない。
0070デフォルトの名無しさん
2009/02/16(月) 01:31:02だから、その時どっち(実行効率? コーディングの簡略・利便?)をとるかってことで
まったく別の路線があるだろw
そこんところはわかって書いてるんだよな?
0071デフォルトの名無しさん
2009/02/16(月) 01:34:03ん?「ハッシュ」という名前ならハッシュテーブルだろ?
実際には赤黒木なのにハッシュという名前をつけているのならそれは名前が悪い
抽象化したいのなら単にディクショナリとでも呼んでおくべきだ
が、集合が順序付けされているかどうかは、例えばキーを列挙するときに
ソートが必要かどうか、という「実質」に関わってくるのだから、
その内実を知らなくていいということには全くならない
0072デフォルトの名無しさん
2009/02/16(月) 01:37:03RubyのHashの話だったら、そう変な要求でもない
追加順にリンクをつないでやるだけだから、ハッシュ操作自体のオーダーに変化はない
SortedMapっていうか、赤黒木やB木みたいな整列済みツリーにしろってのは無茶だがw
0073デフォルトの名無しさん
2009/02/16(月) 01:37:07応用ができないやつ。
0074デフォルトの名無しさん
2009/02/16(月) 01:38:29組み込み型を赤黒木やらハッシュやらそのまんまべっちょり実装してるとおもってないよなw
0076デフォルトの名無しさん
2009/02/16(月) 01:42:08> 正しく組み込み型の処理時間を計算出来る
誰もそんなこと言ってねーっつーの極論に走る奴だなw
例えば
if x in foo
がリニアサーチかディクショナリルックアップかぐらい意識しとけって話だよ
>>55は極論過ぎる
例えば集合の性質によって、列挙するコードが変わるという例は挙げたよな?
0077デフォルトの名無しさん
2009/02/16(月) 01:47:56Cプログラムがどんなアセンブリコードに変換されるか考えて、
命令実行時間も出力されたアセンブリ命令から計算できる、
それができないやつはプログラマじゃない。
君が言っているのはそういうこと。
007861
2009/02/16(月) 01:49:000079デフォルトの名無しさん
2009/02/16(月) 01:50:00組み込み型がスクリプト言語で気持ち悪いとおもうプログラマは殆どいないだろ。
それと同じだよ。
0080デフォルトの名無しさん
2009/02/16(月) 01:53:00いやそこまで言ってねえよ、勝手に決め付けるなw
ゴールも何も、効率をあえて度外視するとしても、重複の有無だの順序性だの、
機能/使用のレベルで違うものを同一視しようがないだろ
データ構造を全く考えなくても良いという話には絶対にならない
0081デフォルトの名無しさん
2009/02/16(月) 02:04:11ハードが高速化したのの大部分はソフト開発の生産性向上についやされているのよ。
そもそもスクリプト言語ってのは、ハード性能に甘えて、実行効率よりも生産性やプログラミングの敷居の低さを
狙った方向性から出てきたモノなわけで。少しは想像力をはたらかせてくれよとw
0082デフォルトの名無しさん
2009/02/16(月) 02:13:48今度は「例え」で逃げるのかよ
ハードがちょろっと進歩しようがO(1)とNPの違いはそれこそどうにもならんだろが
数独パズルでも総当りで解いてろって話だ
0083デフォルトの名無しさん
2009/02/16(月) 02:16:30>76
線形探索と辞書のこと?
確かにリストと連想配列の違いは意識した方が良いかも知れないけど…
最初に言いたかったのは、リストやそれに相当するものの生成に関して。
組み込み構文とまでは言わないけど、JavaScriptぐらいには書けて欲しいよ。
(変数名 = new Array(要素,要素,要素...); で書ける)
あとは、リストやそれに相当するものに対するforeach、map、filter(select)
辺りもせめて標準添付のライブラリで持ってて欲しいなぁ、と思う。
0084デフォルトの名無しさん
2009/02/16(月) 02:19:26その選択(forarch, map, filter..)がものすごく恣意的かもしれないことに
気づいてる?
>>49みたいな人もいるかもしれないよ
0085デフォルトの名無しさん
2009/02/16(月) 02:22:53データ構造/アルゴリズムの基礎を知っていればスクリプト言語の組み込み型の使い方を理解するのに
助けになる。とでも書いておけばいいのに、>>57は視野が狭いとしかいいようがない。
残念ながらアルゴリズムを意識しなくてもスクリプト言語は十分使えるものだ。
0086デフォルトの名無しさん
2009/02/16(月) 02:28:34している電波に突っ込んだだけだが
0087デフォルトの名無しさん
2009/02/16(月) 02:33:35そんなの誰も言ってないって。勘違い大杉。全てのレスに勘違いが入ってるよ、君。
アルゴリズムやデータ構造を意識しなくても一般に使える型に近づけることが
(人間の脳力を最小限にするという意味で)ゴールなの。
現時点の処理系の妥協点が、()だったり[]だったり{}だったりするわけよw
動的コンパイルで分析・最適化できることはハード性能の向上とともに広がっている。
スクリプト言語やその処理系はそれに乗っかって成り立っているもの。
今はわりに合わないと思われることも将来はできるようになる可能性があります。
0088デフォルトの名無しさん
2009/02/16(月) 02:36:03いやだからハード性能で替わるのは定数項であってオーダーは同じだろ
算数もできないのか?
0089デフォルトの名無しさん
2009/02/16(月) 02:39:53JITやらVMなんてハード性能がある程度なきゃそもそも成り立たないモノ。
当然今時のスクリプト言語もね。
0090デフォルトの名無しさん
2009/02/16(月) 02:43:520091デフォルトの名無しさん
2009/02/16(月) 02:45:34リニアサーチはO(n)だし、バブルソートはO(n^2)だろ
本質的な計算を自分で行わないない/計算量が少ないプログラムなら確かに
どうでもいいだろうし、実際にそういうプログラムは多い
が、そのようなものが全く不要という状態にはならない
だから「プログラマなら」と言ったんだ
手遊びでちょろっとオモチャを書いてる人の話をしていたんじゃないんだぞ
0092デフォルトの名無しさん
2009/02/16(月) 02:46:50int sum = 0;
for ( size_t i = 0 ; i < strlen(buf1) ; i++ ) {
for ( size_t j = 0 ; j < strlen(buf2) ; j++ ) {
sum += buf2[j];
}
}
return sum;
}
関係ないけど、別スレで上のC言語のコードでstrlen()をfor(...)内に入れるやつは馬鹿だという奴がいて、
結局、最新のコンパイラでコンパイルすると、strlen()は1度だけ評価されてあとは変数になって
しまうで実行時間は殆どかわらないというのがあったな。コンパイラの進歩はあなどれないよ。
0093デフォルトの名無しさん
2009/02/16(月) 02:47:59そんなわけねえ
0094デフォルトの名無しさん
2009/02/16(月) 02:48:12ハードが速くなり、コンパイラ進歩すれば、
もっと適切なデータ構造やアルゴリズムを実行時に選択できるようになります。
0095デフォルトの名無しさん
2009/02/16(月) 02:50:18ああ、「ボブ、あのプログラム書いといてくれ」とメールすれば済むみたいな奴な
理解したよ、何を言っているかを
0096デフォルトの名無しさん
2009/02/16(月) 02:51:25実行速度なんて考えないよ。遅かったらそのとき考えればいい。
その必要なところに労力をかけて、他は要領よくこなす加減がプロです。
0097デフォルトの名無しさん
2009/02/16(月) 05:05:54そのアルゴリズムの計算量を教えてくれ。
0098デフォルトの名無しさん
2009/02/16(月) 05:32:28配列なのかリストなのかわけわかんねーって思うし。リストはLinkedListか・・うーん。
もともとVectorだったのに同期化ないバージョンはArrayListですとか、ジェネリクス
バージョンはList<T>ですとか、これは概念としてのリスト構造でありアルゴリズムは
配列ですとか、概念とアルゴリズムの名前がかぶっててなんかもうカオスw
でも実態は、どの言語でも使うのは配列・マップ(辞書)でほとんどだし、双方向リストは
途中挿入が頻繁な場合にくらいしか使わないし、あとは各言語のリファレンス見て
ふむふむって感じかなあ。
> もっと適切なデータ構造やアルゴリズムを実行時に選択できるようになります。
インターフェースが同じならできる場合もあるよね。たとえばソートとかは実装が
なにかはあんまり外に出てこないよね。クイックソートかヒープソートかとかは。
例えばマイクロソフトのSTLは、数が少ないとインサーションソートして、数が
多いとクイックソートに切り替えるみたいな内部的に選択している実装。
でもデータ構造の双方向リストと配列とかは、リストはインデックスアクセスは構造的に
作れなくてインターフェースが変わるから、やっぱ別の系統にするしかないと思う。
さらにマップとハッシュマップはインターフェースが同じにできてもイテレータの取得結果が
変わるからこれも別にするしかないよね。
0099デフォルトの名無しさん
2009/02/16(月) 13:20:08全く勉強してないけど適当にあれこれやってたら速くなったっていうならそれはそれで結構なことかもしれないけど
普通は考えても何も浮かんでこないと思うよ
0100デフォルトの名無しさん
2009/02/16(月) 14:03:49無視していいかどうかを判断して無視するのがプロ
スクリプトならアルゴリズムのオーダーなど気にせずともよいとか言ってるお前は
DBも常にCOBOL風に全件スキャンするド素人
0101デフォルトの名無しさん
2009/02/16(月) 14:20:22PERFORM VARYING 〜 END-PERFORM だっけ?
大概のLLでやってることはそうじゃない
例えばリストの中から条件に当てはまるものを抽出して、という処理
(Pythonのfilterとかリスト内包表記のif、Rubyのselect、Perlだと…grepだっけ?)
だとしても、実際の処理は実装・ライブラリにお任せします、ってのがスクリプトじゃない?
まぁ、どの言語も似たような実装になるのは目に見えてるけどさ
…で、内部処理を見るのがプロで見ないのが素人だとしても
それがボトルネックで無いなら、プロでも可読性を選ぶだろ
0102デフォルトの名無しさん
2009/02/16(月) 15:16:02誰も常に効率を優先させて最適化しろなんて言ってないんだが
むしろ早すぎる最適化は悪で、そんなことは昔からの常識だ
「スクリプトなんだから効率やアルゴリズムやデータ構造なんか
気にする必要は無い」というのがナンセンスだという話
「スクリプトかどうか」は、「効率云々を気にすべきかどうか」とは独立の
無関係な問題だ
「スクリプト〜」を過度に強調する奴は、ボトルネックがCPUなのかIOなのか
ネットワークなのかプログラマの脳みそなのか、
本当にプログラミング言語による実行効率の違いなのか、
アルゴリズム自体に改善の余地がないのかも
判断できていない証拠だ
スクリプトなら、ウン100万件のデータが入っているDBから一件データを
抜きたいときに、いつもテーブルスキャンを行うのだろうか?
そんなことは馬鹿げていて、それはスクリプトかどうかとは関係ない
0103デフォルトの名無しさん
2009/02/16(月) 19:29:27趣旨はわかるが、それでもオレなら
馬鹿説を主張したい。
ループ内で関数呼び出しを追加したら、
最適化は難しくなる。
コンパイラの賢さや機嫌を考えながら
コードを書くのは嫌だ。
0104デフォルトの名無しさん
2009/02/16(月) 19:35:50誰でも同じ書き方ができて、そんで平均値(ってかそれなりの速さ)
出せるって事を狙ってるんじゃねえの。
速いことに越したこたねえけど、もっとこう、本質的な部分(目的)に力を注ごうぜ
っていうスタンス。
0105デフォルトの名無しさん
2009/02/16(月) 19:36:06この最適化って、コンパイラの組み込み関数使う時だけ効く最適化なのかな?
0106デフォルトの名無しさん
2009/02/16(月) 19:39:131. アルゴリズムを学習する気がないけどコンプレックスはある人
2. 必要なアルゴリズムは十分に理解しているが、経験的にいってほとんどの
プログラムは最適化によって十分速くなると考える人
”アセンブラ言語を学習するべきか”とか”関数型言語を学習するべきか”なんて話題を振ると意味も無く
攻撃的になる人いるじゃん。
0107デフォルトの名無しさん
2009/02/16(月) 21:39:29アルゴリズム否定なんて誰もしてないだろ。
ちゃんと意図よめよ、理解力のないクズさん。
0108デフォルトの名無しさん
2009/02/16(月) 21:41:51他人の知識や能力をあまくみすぎですよ。
0109デフォルトの名無しさん
2009/02/16(月) 21:45:04とりあえずアンカーつけたら?
文章に内容がないからこのレスの意図はわからん。
>>100とか>>102とか、必死になってる人かも知れんが、そうだとしてこれらのレスも、
プログラムやるんなら最低限、内部実装を意識して書く能力が無いと糞!認められん!
っていうなんとも言えない主張しか伝わらんので、このスレで頑張ってレスしてる意図は
あんまり汲めない。悪いけど。
0110デフォルトの名無しさん
2009/02/16(月) 21:46:14立場としたら逆の方か。まあどっちにしろ、アンカーつけてわかりやすくしてくれ。
なんかごっちゃごちゃになってる
0111デフォルトの名無しさん
2009/02/16(月) 21:53:22コンパイルの質があがれば、事前に時間のかかる処理を排除できる。
アルゴリズムやデータ構造も応用しだいで組み合わせてつかえば弱点を補完して使うこともできる。
その辺の理解がないやつが特に1人いて暴れていたっだけの話だ。
0112デフォルトの名無しさん
2009/02/16(月) 22:23:450113デフォルトの名無しさん
2009/02/16(月) 22:24:56連結リストと配列の中間的な探索速度を得られる。
理解できますかな?(わらい
ハッシュテーブルもリストで連結したり、ツリーにしたりとかよくやるんだよ。
特にスクリプト言語のように動的コンパイルで、あらゆるユーザがどんな使い方をするかわからないような
組み込み型は、頭の良い言語設計者や処理系の設計者が一般的なケースを研究したりして、
条件によってアルゴリズムを選択したりとか色々と工夫しています。
0114デフォルトの名無しさん
2009/02/16(月) 22:25:400115デフォルトの名無しさん
2009/02/16(月) 22:38:41でっていう
0116デフォルトの名無しさん
2009/02/16(月) 22:54:00見てる分には面白いが。
0117デフォルトの名無しさん
2009/02/16(月) 23:00:440118デフォルトの名無しさん
2009/02/16(月) 23:04:21いや主張の意図をやっと理解した
ほんとごめん
「処理系が最適化してくれるからアルゴリズムとか関係ねー」
「総当たりのアホみたいな探索コードを書いても最適化すれば
小人さんが頭の良いコードに書き換えてくれます」
とかいう主張だと思ってずーっと意味不明だったんだけどな
いきなり無説明で「スタックだのキューだのは古い」とか言われても
主張の意図がわかんなかったよ
0119デフォルトの名無しさん
2009/02/16(月) 23:04:27あるいは、相手の手からボールが離れた瞬間に全力でその軌道から離れて、
「どこ投げてんだ下手糞!」
ってなじりあう負のキャッチボールみたいな。
0120デフォルトの名無しさん
2009/02/16(月) 23:07:110121デフォルトの名無しさん
2009/02/16(月) 23:40:55の悪寒
0122デフォルトの名無しさん
2009/02/16(月) 23:41:25ループ不変命令のループ外移動は、よく知られた最適化の一つ
ある程度賢い最適化コンパイラならやってくれるはず
0123デフォルトの名無しさん
2009/02/17(火) 00:43:49・LLでは処理の裏側のアルゴリズムまで書き込むようなマイクロマネージメント的なコードは書かない
・もっと抽象的なレイヤで書き、使われ方などからアルゴリズム選択などを処理系に裏で丸投げするのがLL
・LLはクソコードを適正化しないが、詳細をスルーできるので普通のコードの作成での脳力削減になる
でおけ?
0124デフォルトの名無しさん
2009/02/17(火) 01:12:380125デフォルトの名無しさん
2009/02/17(火) 01:12:52テーマは100年後の言語だが、
計算機資源の無駄遣いもある程度許されるという点では、LLの環境は近い
ttp://practical-scheme.net/trans/hundred-j.html
0126デフォルトの名無しさん
2009/02/17(火) 01:39:26なんつーか進歩ねーよな。まあ所詮コンピュータ動かすための文脈的設定ファイルだから
もうやることもねーんだろうけど。コンピュータ言語って数千種類くらいあるんだったっけな。
あとは、ぱくりだらけの俺流に実装しましたみたいなオレオレ糞言語が湧いてくるだけだな。
0127デフォルトの名無しさん
2009/02/17(火) 01:42:35上から目線と下層階級の臭いが
良い感じにブレンドされたレスだな。
0128デフォルトの名無しさん
2009/02/17(火) 02:02:51既に医学や心理学の担当だったりして
手続き型の言語は、もう概念だけ全部まとめてしまって、後の言語のデザインは、
心理学者とラット(プログラマ)に任せちゃえばいいじゃないか?
0129デフォルトの名無しさん
2009/02/17(火) 02:06:080130デフォルトの名無しさん
2009/02/17(火) 02:15:41ソフトウェア工学で扱ってる話題に持ってけるんでは
0131デフォルトの名無しさん
2009/02/17(火) 02:15:51falseと0を比較するためだけに演算子を追加するという
誰もが想像しなかった進化をした言語があるじゃないかwww
0132デフォルトの名無しさん
2009/02/17(火) 05:06:08どれ?
0133デフォルトの名無しさん
2009/02/17(火) 06:40:400134デフォルトの名無しさん
2009/02/17(火) 07:44:15脊髄にびりびりきちゃった?
0135デフォルトの名無しさん
2009/02/17(火) 10:41:510136デフォルトの名無しさん
2009/02/17(火) 11:28:32感じなんだろうな。まあ日本のごく一部の人が勝手に言ってるだけだからそもそも知らないだろうけど。
0137デフォルトの名無しさん
2009/02/17(火) 11:40:280138デフォルトの名無しさん
2009/02/17(火) 12:16:28■ このスレッドは過去ログ倉庫に格納されています