12/08/16 11:05:52.40
>>235
Rubyは関数内関数を素直に定義できないじゃん
Proc と lambda の違いとかキモイし
どさくさにまぎれて関数型言語と一緒にすんなよ
238:デフォルトの名無しさん
12/08/16 11:45:22.78
phpでの話なんですが教えて下さい
あるアドレスに下記の様にHTTPヘッダー関数で移動すると返ってくる内容がブラウザに表示されるのですが
header("Location: {$add}") ;
file関数、fgets関数等で下記の様に読み込むと中身がカラッポで入っていません
$data = '' ;
if ($fp = @fopen($add, "r")) {
while (!feof($fp)) $data .= @mb_convert_encoding(fgets($fp, 1024), "EUC-JP", "auto");
fclose($fp);
}
$data = htmlspecialchars($data);
file関数、fgets関数等で読み込んで中身を得るにはどうしたら良いでしょうのでか
教えて頂ける様お願いします
239:238
12/08/16 12:26:57.50
エラー抑制を外してみました
if ($fp = @fopen($add, "r")) {
↓
if ($fp = fopen($add, "r")) {
そしたら次の様なワーニングが出てきました
『
Warning: fopen(アドレス) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in 動いてるスクリプト on line 374
』
どうもアクセス相手側から拒否されている様です
しかしヘッダー関数では取得できる様なのでどうにかしてfile関数等でデータを取り込みたいのですが
どうしたら良いかご存知のかたいらっしゃったら教えて頂ける様お願いします
240:デフォルトの名無しさん
12/08/16 12:30:36.27
>>239
WebProg
URLリンク(kohada.2ch.net)
241:238
12/08/16 12:32:19.66
>>240
thx
242:uy
12/08/16 14:10:29.16
rubyは[]でかけるLISPとしても使えるんじゃなかった?
メソッド揃えば完全変換できるかもよ
procのlambda違いは有りなんだよ
rubyは同じに見えて微妙に違う動作をするメソッドが数多く存在する
それだけ細かい調整が標準ライブラリで効くってこと
243:153
12/08/16 14:13:16.73
>>237
>Rubyは関数内関数を素直に定義できないじゃん
エッ!、Rubyは普通に関数内関数を定義できるよ???
以前(1.8)は関数内関数のスコープに問題があったけど、今(1.9)では解消されたし
・メソッド定義のネスト - Ruby 1.9.3 リファレンスマニュアル
URLリンク(doc.ruby-lang.org)
というか、OOPLであるRubyでは、プライベートメソッドとして定義するのが一般的で、
関数内関数はまず目にすることはない
しかも(>>211のPyhtonのような)他LLでは関数定義を「普通」に使うけど、
Rubyならブロックがあるから一度しか適用しない関数は式の中に埋め込むのが「普通」
つまり、(関数内関数を多用せざるをえない他LLと違って)関数内関数を使う頻度は少ない
>Proc と lambda の違いとかキモイし
確かにProcとlambdaの微妙な差異は分かりづらいよね
でもRubyにはブロック構文があるから、(Procやlambdaのような)明示的な無名関数宣言を
使う頻度は比較的少ないし、使うケースでもどちらか一方を使えば済むことが多い
また、言語の微妙な弱点を避けて、良い点を引き出すことに注力することが
(Rubyに限らず)中級プログラマのたしなみの一つだと考える
>どさくさにまぎれて関数型言語と一緒にすんなよ
え、一度も「Rubyは関数型言語である」とは言ってないけど.....???
「関数型言語風プログラミングには(他LLよりも)Rubyは明らかに優れている」と主張している
244:デフォルトの名無しさん
12/08/16 14:25:57.61
>>243
> エッ!、Rubyは普通に関数内関数を定義できるよ???
はあ?じゃあ何で関数内関数が外から見えてんだよ
URLリンク(ideone.com)
245:デフォルトの名無しさん
12/08/16 14:42:18.11
> つまり、(関数内関数を多用せざるをえない他LLと違って)関数内関数を使う頻度は少ない
関数型言語でも関数内関数を多用するけど...?
「関数型言語風プログラミング」って何?
それってただの「Ruby風プログラミング」なんじゃないの?
246:uy
12/08/16 14:43:56.36
rubyの仕組みがなんにもわかってないんだな
それは結局selfが省略されているに過ぎない
rubyはすべてがオブジェクトであり、インスタンスは特異メソッドをもつ事が出来る
self.define_singleton_method :uy do
p :uy
end
お前らの大好きなシングルトン
でもこの設計はゴミカスだな
俺様個人の意見を言わせてもらうならdef内のdefは使わないほうがいいよ
普通にlambdaで ->{ } 書いたほうが短いんだからそっち使えばいいじゃん
247:uy
12/08/16 14:48:03.05
>>246
すいません、思いっきり間違っていました忘れてください 旅にでます
248:153
12/08/16 14:50:55.63
>>244
わざわざideon上のコードを引用しなくても、Rubyの振る舞いは>>243で示した
リファレンスマニュアル「普通のメソッド定義式と同じ」の通りだよ???
確かに、理想的には内側のメソッドが外部から隠蔽されたほうが望ましいことは認める
これが>>211のPythonコードのように、関数定義を多用するのが「普通」、
あるいは関数定義を多用「しなければならない」言語であれば、致命的な欠陥になる
でも>>243で述べたように、Rubyでは関数内関数の必要性がほとんど存在していないんだ
もしも可能であるならば、ブロックやプライベートメソッド定義では読みづらかったり
冗長だったりするけど、関数内関数であれば素直に表現できるコード例を示してほしいなあ...
249:デフォルトの名無しさん
12/08/16 14:57:03.42
rubyはそこら中が関数といえば関数だからね
do ~ endって、でてきたらそれ全部関数だよ
250:デフォルトの名無しさん
12/08/16 15:03:34.35
だから関数型言語では関数内関数を多用するって言ってるのに...
関数型言語と違うスタイルなんだから「関数型言語風プログラミング」とか言うなよ
251:デフォルトの名無しさん
12/08/16 15:07:46.32
> 確かに、理想的には内側のメソッドが外部から隠蔽されたほうが望ましいことは認める
理想的にはじゃなく、ここが一番大事なところ
252:uy
12/08/16 15:08:18.16
proc
Proc.new
lambda
->{ }
def
define_method
define_singleton_method
Module.new / Class.new / Struct.new
こんくらいかな?メソッド内で関数のようなものを定義する方法
動作違うものが、これだけあるんだから動作調べて好きなの使えよ?
defしか使えないバカなの?
253:デフォルトの名無しさん
12/08/16 15:23:14.80
>>248
> もしも可能であるならば、ブロックやプライベートメソッド定義では読みづらかったり
> 冗長だったりするけど、関数内関数であれば素直に表現できるコード例を示してほしいなあ...
なんだ、読みづらさや冗長さの観点で批判してたのか?関数型うんぬんは関係なく?
じゃあ>>198に比べて>>211は読みづらくて冗長だからダメって言いたいんだな?
そういうことは最初から言えよ
254:デフォルトの名無しさん
12/08/16 15:35:35.20
はよ旅立て。
255:153
12/08/16 15:41:10.73
>>245
>関数型言語でも関数内関数を多用するけど...?
うん、関数型言語では関数内関数でプログラムを構築していくのが普通だね
でもRubyはオブジェクト指向言語であり(>>243の最後で書いたように)関数型言語ではないから、
モジュールやクラスでプログラムを構築するのが普通なんだ
>「関数型言語風プログラミング」って何?
「(破壊的代入を含む)副作用を避けた参照透明性のあるプログラミング」(>>181も参照)
これは関数型言語のパラダイムと同じ
もちろん(関数内関数ではない)Rubyでは、入出力や効率(性能や資源)といった理由から
完全に参照透明性のあるコードは書けないけど、それでも副作用を極力避けたり、
参照透明性のある部分とない部分を意識的に使い分ける、あるいは副作用のあるコードを隠蔽する
現実に実用的なテキスト処理プログム開発で試したところ(全体で約20Kstep)、
8割は参照透明性のあるコードで実装することが可能だった
残る2割の部分は、トップレベルの(入出力を含む)メイン処理モジュール群と
最下層の副作用をカプセル化(隠蔽)した内部ライブラリ群になる
256:avacript
12/08/16 16:27:56.11
関数型扱えない言語は終わってるよな
rubyとか
257:uy
12/08/16 16:51:25.73
rubyは関数型プログラミングも出来て便利だよな
258:デフォルトの名無しさん
12/08/16 16:55:24.10
でもOSやミドルウエア、あるいはビジネスアプリにいたるまで
日本製ソフトのシェアはゼロに等しいよね。
259:153
12/08/16 16:57:54.51
>>250
>関数型言語と違うスタイルなんだから「関数型言語風プログラミング」とか言うなよ
うん、ググってみたら確かに「関数型言語風プログラミング」は風変わりだった
では、一般的な「関数型プログラミング(functional programing)」と改めよう
260:153
12/08/16 17:09:48.97
>>251
>理想的にはじゃなく、ここが一番大事なところ
そう、クロージャやまともなラムダ式の無いPythonのような手続き言語における
関数型プログラミングでは、関数内関数こそが一番大事だよね
Rubyはというと、(>>248で書いたように)OOPLでブロックがあるからそれほど大事じゃないけど....
261:デフォルトの名無しさん
12/08/16 17:15:09.50
ラムダの文法を def 1; end にして、
メソッド定義は
@method = def 1; end
こんな感じの文法でよかったんだよ。
func = def 1; end
こう書けばfuncはローカル変数だから外から見えないし。
同じようなものが一杯ありすぎる。
C++みたいに厳しいパフォーマンスが求められるってわけでも無いのにさ。
こんな行き当たりばったりな言語を良しとしている人は、
さぞプログラムも行き当たりばったり何だろうな。
かといって、ラムダの弱いPythonは土俵にすら立ててないのだが。
普及しててまともなLLって無いのかね。
もしJSにブロックスコープがあったなら、かなり良い言語になりえたんだがな。
262:uy
12/08/16 17:42:47.29
>>261
おいバカ
これ
lambda ↓
->{ }
これlambda
263:デフォルトの名無しさん
12/08/16 17:43:38.98
ラムダしか知らないのかよお前はw
264:デフォルトの名無しさん
12/08/16 17:48:13.46
旧世代的なラムダ脳にはリスト内包表記、イテレータ、ジェネレータ、デコレータを上手く使うPythonicなコードは理解出来ない
なんとかラムダで書こうとするのは、どの言語でもCみたいなコードを書く奴と何も変わらん
265:153
12/08/16 17:59:30.07
>>261
>ラムダの文法を def 1; end にして、 ....(以下、省略)
構文の簡潔さという意味では、>>83で紹介したSML(Standard ML)が理想に近いのではないかと
【ラムダ式】 fn hoge x y = <expr>
【条件分岐式】 if <expr1> then <expr2> else <expr3>
【多分岐式】 case <expr> of <pat1> => <expr1> | <pat2> => <expr2> | ....
【代入(束縛)】 val x = <expr>
【関数定義】 fun fuga x y = <expr>
【局所宣言式】 let val x = <expr> fun fuga x y = <expr> in <expr>
【モジュール定義】structure bar = struct <declarations> end
構文要素が必ず予約語で始まっていることがポイントになる
また ;(セミコロン)は演算子であり、式「a ; b」は(aを捨てて) b の評価値を返すという意味になる
結果として言語仕様はコンパクトにまとまっているので習得が容易であり、
しかも言語全体の公式な形式的定義が存在するという特異な存在となっている
・Amazon.co.jp: The Definition of Standard ML: 洋書
URLリンク(www.amazon.co.jp)
>もしJSにブロックスコープがあったなら、かなり良い言語になりえたんだがな。
これは同感だね
さらに条件分岐(if や switch)が文(statement)ではなく式(expression)であることも大切だと思う
266:デフォルトの名無しさん
12/08/16 18:07:02.49
そう思ってしまうのはクロージャがないC脳だから。
内から外へのスコープを区切るものは関数しかない、という単純さが損なわれる。
クロージャがあるからそれだけでも既にややこしくなってるのに。
267:153
12/08/16 18:11:28.09
>>264
論よりコード
268:デフォルトの名無しさん
12/08/16 18:35:16.39
つまり、日本国はこの町並みを維持できる限り安泰ということだから、
大声張り上げて街中をデモ行進する人は宇宙空間にでも行って欲しい。
269:153
12/08/16 18:39:03.55
>>265のカキコの中で、最後の「>もしJSにブロックスコープがあったなら、」以降を取り消す
ブロックスコープをスコープと早合点していた
270:デフォルトの名無しさん
12/08/16 18:42:06.27
>>267
Closures in Python (part 1)
URLリンク(ivan.truemesh.com)
>(ie. use a "list comprehension" - I think it reads a bit easier than using the map/lambda).
271:153
12/08/16 18:53:18.70
>>270
リンク先を眺めたけど、これらの例というのは(説明も何も無いから)
RubyでもPyhtonでも同レベルで簡潔に書けるコードに見える
これらの例について、いかにPythonが優れているかを「>>270自身の言葉で」語って欲しい
あるいは>>197,198のように、明らかにPythonが優位性であることが分かる例を希望する
これじゃバトルにならんのだよ....
272:デフォルトの名無しさん
12/08/16 18:54:43.69
>>271
別にRubyが劣ってるなんて言ってないよ
馬鹿が譫言のようにクロージャクロージャと連呼してたから
ああ、こいつはPythonのことをあまり知らないんだなあ、と思っただけ
273:デフォルトの名無しさん
12/08/16 18:55:24.50
Pythonが優位であることが分かる例か。シェアだな。
274:153
12/08/16 18:56:07.05
>>269(>>265)を再訂正 ....orz
X: スコープと早合点していた
O: ブロックと早合点していた
275:デフォルトの名無しさん
12/08/16 18:56:16.68
なお>>197,198でPythonが明らに劣勢であることを示せてると思ってる所にも同情する
276:153
12/08/16 19:00:35.26
>>272
では、そのPythonのクロージャとやらを使って、>>211を書き直して欲しい
Pythonにはクロージャがあるから、関数定義無しに書けるよね?
277:デフォルトの名無しさん
12/08/16 19:01:46.12
>>273
それに伴うライブラリの充実とかコミュニティの活発さはあるね
278:デフォルトの名無しさん
12/08/16 19:02:19.29
そもそも関数定義無しに書けなきゃダメって
勝手にルール作ってるところがおかしい
279:デフォルトの名無しさん
12/08/16 19:02:23.31
なぜ関数を定義したらいけないのか理解できない
280:デフォルトの名無しさん
12/08/16 19:05:32.80
領空侵犯機 ロシア約68%、中国約25%、その他約7%
281:153
12/08/16 19:09:44.52
>>275
独り言かな?
282:デフォルトの名無しさん
12/08/16 19:09:59.70
153はダブルスタンダードすぎる
283:デフォルトの名無しさん
12/08/16 19:12:19.57
>>279
そりゃ明らかに面倒だろ。
いまどき、あのC++にすら無名関数やラムダがあるのに。
あの保守的なC++が取り入れたんだよ?
しかも文法を [&](int i)-> int { return i; } って糞キモくしてまで取り入れた。
今までのC風の関数のスタイルを捨ててまで、取り入れたんだよ。
今までになかったこと。それぐらい無名関数やラムダは求まれた。
int func( int i ){ return i; }
これが
auto func = []( int i ) -> int { return i; }
こんなになっちゃったんだよ。こんなに見た目が変わったんだよ。
それを受け入れたんだよ、あのC++er達が。その意味を考えろ。
284:デフォルトの名無しさん
12/08/16 19:15:38.78
>>283
いや上の例を見ても明らかとは思えないけど
別にC++erだって全ての関数をラムダ式で書くわけもなく、普通に関数定義するし
285:デフォルトの名無しさん
12/08/16 19:21:31.64
>全ての関数をラムダ式で書くわけもなく、普通に関数定義するし
普通の関数もかけるのは当たり前で、
それだけじゃつらいからラムダを導入したって話だろ。
論点ずれてるだろ。何言ってんだか。
ラムダが要らないものならわざわざ変な文法作ってまで導入するかよ。
286:デフォルトの名無しさん
12/08/16 19:23:37.43
>>285
上のはラムダで書くべき例なの?
287:153
12/08/16 19:26:19.29
>>278,279
あらゆる関数型言語であれば関数定義無しにかけるから、
それは「関数型プログラミング」の特徴の一つである、という理屈
だってPythonだけが関数定義が無ければ書けないんだから、
マイナス評価されても当然だろ?
というかさ、もしルールに不満があるならそれを最初に主張すべきだった
具体的には、>>235の指摘に対して即座に反論すればよかったのに....
いろいろゴネたあげく、技術論で反論できないからルールに不満を言うのは
カッコワルイと思うよ
288:デフォルトの名無しさん
12/08/16 19:29:06.48
>>287
つまり、実用上では何の意味もない所で優劣を競ってるのか?
289:デフォルトの名無しさん
12/08/16 19:30:21.57
昔からお題を出し続けてる奴だろうけど、出題がゴミすぎるよね
290:デフォルトの名無しさん
12/08/16 19:30:51.67
実用上問題がなければC++にラムダが導入されるわけ無いだろ。
あんな変な文法にしてまで、無理にでも導入したんだぞ。
291:デフォルトの名無しさん
12/08/16 19:36:11.33
ラムダの有用性は、このお題では1ミリも示せなくても、いくらでもあるだろ
C++がさらに糞言語化したからラムダは有用!とか言わなくてもさ
292:デフォルトの名無しさん
12/08/16 19:42:16.59
「こんな書き方も出来る、こんな書き方も!」
で?もっと身のある話はないのかよ
293:デフォルトの名無しさん
12/08/16 19:55:52.82
URLリンク(www.youtube.com)
294:デフォルトの名無しさん
12/08/16 20:14:22.38
>>287
あれ?お前>>255でRubyはOOPLだから関数内関数無くても良いんだとか
言ってなかったっけ?
関数型言語では関数内関数あるんだからRubyではdefの入れ子で
関数内関数が定義できないのはマイナス評価されても良いの?
295:デフォルトの名無しさん
12/08/16 20:16:11.07
Pythonに無名関数(複数行lambda)あってもいいじゃんと思ってたけど
[Python-ideas] a new lambda syntax
URLリンク(mail.python.org)
めぐりめぐってGuidoのコメント
URLリンク(mail.python.org)
# URLリンク(mail.python.org) のコードをもとに
ys = [Document(lambda{
h = generate_header() if x.is_first_page else None
b = generate_body(x)
f = generate_fotter() if x.is_last_page else None
return h, b, f}) for x in xs]
こういうコード書く人が出てくるからやめたほうがいいね
296:uy
12/08/16 20:16:17.97
それはマイナスだよ
ゴミ
297:デフォルトの名無しさん
12/08/16 20:18:08.51
(1)Pythonのlambdaじゃ書けなくて
(2)関数を定義したら冗長になってしまうほど短い
そんな例題があればいいんだよ
298:デフォルトの名無しさん
12/08/16 20:22:49.99
153は出す御題もゴミの上に
都合の悪いレスはスルーするというゴミっぷり
ゴミの中のゴミ
299:uy
12/08/16 20:23:21.31
勘違いされやすい文法はゴミカスだ
300:デフォルトの名無しさん
12/08/16 20:24:33.39
私が改造したソース帰ってこないじゃん。
301:uy
12/08/16 20:33:38.40
ゴミだからだろ
302:デフォルトの名無しさん
12/08/16 20:38:52.33
8時半だしお家かえる
303:デフォルトの名無しさん
12/08/16 20:42:02.02
>>287
いやいや、スレ読んでみたら、>>211に対して後付けで
関数定義はダメって言い出してるけど?
後付けでルールを追加するのってカッコワルイね
304:uy
12/08/16 20:53:09.03
rubyのメソッド内メソッド定義はカス
しかしそれをマイナス点にしても最強なのだった
305:デフォルトの名無しさん
12/08/16 20:57:19.93
Rubyはひたすらendでも打ってろ
306:153
12/08/16 21:05:50.99
関数型言語としてHaskellだけを取り上げて「あらゆる関数型言語(>>287)」と言うのは
不公平だと思うから、それ以外の関数型言語のコード例について、過去スレ19,20からコピペする
なお、このコードは>>286氏ご希望のラムダ式で書く典型的なコード例となる
==== Standard ML ====
datatype 'a Option = None | Some of 'a
val ys = map (
fn x =>
let
val h = if is_first_page x then generate_header else None
val b = generate_body x
val f = if is_last_page x then generate_footer else None
in
(h, b, f)
end
) xs
同等な多言語のコード例については以下を参照
・Haskell >>197上段
・Python >>197下段および>>211
・Ruby >>198
307:デフォルトの名無しさん
12/08/16 21:10:23.55
関数型言語の話をしたいだけなんだな、こいつは
308:デフォルトの名無しさん
12/08/16 21:10:42.85
お題がクソだと散々言われてるのに
話を引っ張る空気読めないっぷりがウケるw
309:uy
12/08/16 21:15:05.50
たまに関数型言語厨が迷い込むよね
同じ奴なんですか?
310:153
12/08/16 21:19:31.47
>>294
>関数型言語では関数内関数あるんだからRubyではdefの入れ子で
>関数内関数が定義できないのはマイナス評価されても良いの?
正確には「関数内関数定義で内部の関数が外部から隠蔽されない」だね
もちろんこの点はRubyのマイナス評価であると認めるよ
また、アンカも間違いで(>>255ではなくて)>>243じゃないかな?
さらに言えば、>>297自身も(>>243,248から)引用しているように、
このマイナス評価はRubyにとっては致命的な欠点ではない
もしも致命的ではないという意見が不満ならば、
>>248の最後でリクエストしたように具体的なコードで語って欲しい
論よりコードだ
311:デフォルトの名無しさん
12/08/16 21:23:03.20
>>310
> もしも致命的ではないという意見が不満ならば、
Pythonの関数定義が致命的だって話は何時同意を得たんだ?
少なくとも>>211は関数定義で全く問題ない
せめて>>297を満たす御題くらい作れよ
論よりコードなんだろ?
312:デフォルトの名無しさん
12/08/16 21:23:21.86
>>310
Pythonユーザなら誰も書かないようなコード貼っといて論よりコードは流石になかろう
313:153
12/08/16 21:23:30.23
>>289
その「都合の悪いレス」とやらのレス番を書きなさい
そうすれば反論してあげるよ
それとも反論されるのが怖いヘタレかい?
314:デフォルトの名無しさん
12/08/16 21:23:47.98
関数型言語としてどれが素晴らしいかって、HaskellとかSMLが素晴らしんじゃないでしょうかw
でも関数型言語スレって盛り上がらないんだよな。TIOBEのランキング見れば分かるけど
そもそも利用者が少ない。LispはまだしもHaskellとかMLとかは、マイノリティすぎる
結局、関数型言語としての評価軸って対して価値がないのかなと思う
まあノイジィマイノリティのノイジィ具合は全てのパラダイムの中で群を抜いてるだろうけど
それに対応してRuby、Pythonその他の言語にも導入されてる機能もあるし
導入された分は使える範囲で使えればいいと思うし、それで足りないなら関数型言語を使うしかないけど
そういう選択をする人が少ないのも事実で、関数型言語でなければならないという観点は間違ってる気がする
315:153
12/08/16 21:33:07.50
>>303
リスト内包表記(Haskell: >>197)にせよラムダ式(SML: >>306)を使うにしても、
関数型言語プログラマであれば「再利用されないコード断片」は
関数定義無しでも書けるのは「常識」なんだから、そんなルールはわざわざ書かなかった
今の議題は「LLにおける関数型プログラミングの適性比較」なんだよ
316:デフォルトの名無しさん
12/08/16 21:34:19.08
「LLにおける関数型プログラミングの適性比較」というスレでやれば?
317:デフォルトの名無しさん
12/08/16 21:34:28.89
えーその議題いつ決まったのーーーー!!!
さすがに突っ込ませてもらうわ。
とりあえず君は関数型言語の巣へ帰った方がよいね。
318:デフォルトの名無しさん
12/08/16 21:35:10.02
>関数型言語プログラマであれば
(笑)
319:uy
12/08/16 21:36:45.56
関数型言語でスクレイピングしたいんですけど
あ、やっぱあいいや
320:デフォルトの名無しさん
12/08/16 21:48:26.95
>>295
> I believe that the main reason
> people keep arguing for anonymous blocks (and this will never stop) is
> simply that there is **a certain segment of the programmer** population
> that is used to solving a large variety of problems with anonymous
> blocks and that **they don't want to learn how to solve each of those
> cases using the existing tools in Python.** (強調引用者)
どう考えても>>153そのものです。本当にありがとうございました
321:153
12/08/16 21:49:45.82
>>312
では、議題(>>315)に沿った「Pythonユーザなら誰でも書くコード」を提示しなさい
>>272氏がPythonにもクロージャは存在すると指摘してくれたので
>>276でコード例をリクエストしてレスを待っているんだけどな....
残念ながら、今のところ具体的なPythonコードを書いてくれたのは>>211一人だけだ
過去スレ19,20でも結局は一人だけだったし、もしかして同じ人かなあ....
322:デフォルトの名無しさん
12/08/16 21:51:22.33
俺RubyもPythonもHaskellもOCamlも仕事で使った事在るけど
こんなスレで関数型言語アピールとかアホとしか思えん
関数型言語が好きなら黙って使ってろっての
323:デフォルトの名無しさん
12/08/16 21:52:27.55
なんでお前に命令されなきゃいかんのか分からんし
なんか前もお前の間違いを訂正したのは
「ああ、そうなんだ、ふうん。でも俺の主張は間違ってない。じゃあこのお題はどうよ?」
みたいな対応しかしなかったし、関わるだけ無駄。関数型云々について、いつまで続けるんだ?
もう結論出して良いよ。それでLLの優劣なんて何も決まらんから
324:デフォルトの名無しさん
12/08/16 21:52:32.06
覚えた言葉をすぐに使いたがる小学生。
325:デフォルトの名無しさん
12/08/16 21:53:32.53
>>321
まず議題が承認されてないじゃん
というかPythonいけてねえって主張するあなたのほうに立証責任がある
「なんでPythonで(名前つき)関数定義するのがよろしくないのか」を示すべき
326:デフォルトの名無しさん
12/08/16 21:55:05.79
315は関数型言語で遊ぼう!みたいな本が大好きな関数型マニアだってことは分かるけど
このスレで何をしたいのかは理解できない
327:デフォルトの名無しさん
12/08/16 21:57:21.87
このスレ住民は現実的な意見が多いな
関数型は効率というベクトルからは外れた趣味だもんな
328:デフォルトの名無しさん
12/08/16 22:02:23.59
Pythonディスりたければ、俺みたいに、
あの糞みたいな、ネスとスコープの仕様をつつけば良いのに。
あれだけは生粋のパイソニストでも擁護不可能だからね。
擁護しようものなら、
今になってnonlocal追加した事実に反してしまうしな。
329:デフォルトの名無しさん
12/08/16 22:02:35.37
というか、ある程度はそのプログラミング言語の用途とかが競合しないとさ
330:デフォルトの名無しさん
12/08/16 22:06:00.91
ガチでぶつかるのはPythonとRubyぐらいでしょう。
しかも外国VS国内みたくなってるから余計に。
他の言語は大体用途が被らないし、
その用途でのスタンダードを確立しているものばかりだからな。
shとJSで喧嘩するのは無理。
331:デフォルトの名無しさん
12/08/16 22:07:22.74
>>328
nonlocalの追加は、リストにする手間が省けたという意味では確かに改善だけど
スコープ自体は問題なくね。だからこそnonlocalが要るんだし
332:153
12/08/16 22:08:05.65
>>311
>せめて>>297を満たす御題くらい作れよ
え、>>197,198,306の御題は>>297を満たしているけど、何か?
> (1)Pythonのlambdaじゃ書けなくて
==> わざわざ複数の引数を渡しているから、Pythonのlambdaじゃ書けない
(タプルを使えば書けないことも無いかもしれないけど冗長になる)
> (2)関数を定義したら冗長になってしまうほど短い
==> 1カキコ内に収まるほどのコードなので、十分に短い
しかも再利用されないコード断片なのだから、関数定義が冗長なのは明らか
(Pythonの無名関数(=ラムダ式)って、一体何のために存在してるの?)
また、お題について不満があるなら、それを最初に(>>198の直後に)主張しないとね
散々ゴネたあげく後出しでブーブー文句を言うのはカコワルイよ
333:デフォルトの名無しさん
12/08/16 22:08:32.79
>>328
nonlocal(酷い名前だ)を追加したPython3ではネストスコープの問題は無いの?
334:デフォルトの名無しさん
12/08/16 22:09:07.30
じゃあ前もって言うけど、今後二度とクソレスすんな
335:デフォルトの名無しさん
12/08/16 22:10:44.41
>>332
>> (2)関数を定義したら冗長になってしまうほど短い
>>211のコードは>>197のHaskellや>>306のSMLより簡潔だけど?
ああ関数型言語は冗長なのか
336:デフォルトの名無しさん
12/08/16 22:11:12.57
皆が153みたいに粘着してないんだから、後から文句言うなとか文句言ってる時点で頭おかしい
間違いは素直に認めろよ
337:デフォルトの名無しさん
12/08/16 22:13:45.93
間違いを認めるなんて無理だろうから
目の前のPCを破壊して二度と書き込まないでほしい
338:デフォルトの名無しさん
12/08/16 22:15:45.76
>>330
RubyとPerlは?
というかPerlが完全に空気化してるのは、負けたからか?
まだそこそこ使われてるイメージだけどなあ
339:153
12/08/16 22:16:29.83
>>314
>関数型言語でなければならないという観点は間違ってる気がする
ああ、これについては同感だね
現状のどの関数型言語も文字列、パターン、ハッシュの操作に難があるから、
現行LLであるPerl/Python/Rubyを置き換えるには無理があると思う
ただし、関数型言語にも良い特性がある訳で、実際に(LLを含む)多くの言語に影響を与えている
だから自分は「LLにおける関数型プログラミング」に注目している
340:デフォルトの名無しさん
12/08/16 22:18:23.40
>>331
意味わかんねー。問題があったからnonlocalが追加されたんだろ。
しかもnonlocalが有るんなら、代入のある無しでスコープが変わる糞仕様は要らないだろ。
互換性のために残っちゃってるけど。
代入が無ければネストスコープ。
代入が有ればローカルスコープ。
しかしnonlocalが有れば代入があってもネストスコープ。
はぁ、糞ややこしいな。
代入の有る無しと、nonlocalの有る無しの、
二箇所を確認しないといけないなんて。
直感的でも無いしな。
しかし、代入の有る無しでスコープ切り替わるってのは意味分からないよな。
代入は「代入」だろ。代入に別の意味持たせるなよ。
341:デフォルトの名無しさん
12/08/16 22:18:38.00
>>339
LLにおける関数型プログラミング
スレリンク(tech板)
お前一人が明らかに邪魔なので、こちらでどうぞ
342:デフォルトの名無しさん
12/08/16 22:21:13.16
>>340
いや互換性はもはやないよ。あと、代入するならnonlocalだよ
343:デフォルトの名無しさん
12/08/16 22:24:19.36
>>332
再利用しないものに名前を付けるのが冗長だというなら
>>197にあるh,b,fという一次変数も冗長で不要
344:デフォルトの名無しさん
12/08/16 22:24:22.12
>>333
ああ、問題残ってるよ。代入の有る無しでスコープが切り替わる問題が。
互換性のためか残っちゃってるけど、
nonlocal追加したんなら、思い切ってこの糞仕様は廃止すべきだったな。
nonlocal有りならネストスコープ、無しならローカルスコープ。
一貫してそれでよかったんだよ。シンプル、単純、分かりやすい。
スコープ調べるのに代入の有る無し調べるとか意味わかんねー。
折角nonlocal追加したのに、なぜに。
二箇所調べなきゃならなくなったから、状況はより悪化したともいえる。
345:デフォルトの名無しさん
12/08/16 22:25:04.92
>>340
shadowingの概念知らんの?
346:デフォルトの名無しさん
12/08/16 22:26:16.84
>>344
ちょっと待てよ。nonlocal追加以前はそもそも代入不可だろ
347:デフォルトの名無しさん
12/08/16 22:27:08.83
代入と宣言の区別もつかんアホがスコープ批判か...
348:uy
12/08/16 22:27:35.56
perlは終了
jsは用途が違う
PHPはいわずもがな
pythonは日本じゃ流行らない
rubyですね
349:デフォルトの名無しさん
12/08/16 22:30:33.87
>>346
いや、代入できるよ。ローカルスコープの変数になるけどな。
代入があっても、nonlocalならネストスコープ。
nonlocal無くても、代入が無ければネストスコープ。
あー超ややこしいね。
単に、nonlocal有り/無しで、ネスト/ローカルが切り替わる
方が直感的で良いよなぁ。
350:デフォルトの名無しさん
12/08/16 22:31:24.90
>>349
いや、nonlocalを何のために使うのか理解してないでしょw
351:デフォルトの名無しさん
12/08/16 22:34:27.06
>>349
その側の変数には代入できない。それを可能にするのがnonlocal
352:153
12/08/16 22:34:31.89
>>335
え、単純なステップ数で比較しているの!
こちらとしては「再利用されない(一度しか使われない)コード断片を
わざわざ関数として定義するのは無駄(=冗長)」と言ってるだけだけど、これは非常識なのかな?
というかPythonの無名関数(=ラムダ式)は、いったいぜんたい何の為に存在してるんだろう?
ああPythonのラムダはやっぱり「まがい物」なのか
353:デフォルトの名無しさん
12/08/16 22:35:25.54
>>351訂正:その側→外側
globalに似てて、globalとも違うから、いいネーミングだと思うけどなあ
354:デフォルトの名無しさん
12/08/16 22:37:12.96
>>350
その変数がネストスコープであることを示すためだ。
しかし、nonlocalが無くても、参照のみならネストスコープだ。
ここがまずおかしいね。普通、ローカル変数となるべきところだ。
そして、(代入無しで参照しているから)プログラムはエラーで落ちなければならない。
普通そういう動作が求められるところ。
355:デフォルトの名無しさん
12/08/16 22:40:05.99
そんな基地外スコープの言語がつかわれてる理由ってなに
356:デフォルトの名無しさん
12/08/16 22:42:12.88
>>351
なぜnonlocal無しで代入は出来ないのに参照は出来るんだ?
そこがまずおかしいと思わないと。しかも完全なリードオンリーならまだ使い道もあるが、
実際にはメンバ変数を変更したりは自由なんだからCのconstの代わりとしても役に立たない。
別に狙ったものでもなんでもなくて、代入で宣言を代用したことによる単なる文法上の不備でしかないからな。
しかし代入の有る無しでスコープの変わるカス仕様を擁護できるとはおめでたい。
そういう頭じゃないとPythonに惚れ込むのは無理なのか。
357:uy
12/08/16 22:44:18.14
なんかpython使いたくなってきた
スコープは基地外なほうが便利なこともあるんじゃない
358:デフォルトの名無しさん
12/08/16 22:44:18.55
2.xは外側の変数を書き換えられなかったけど、3.xは明示すれば書き換えられるようになっただけじゃね
なにを混乱するんだろう
359:デフォルトの名無しさん
12/08/16 22:45:56.65
>>356
局所変数を定義したら外側のスコープの
同名の変数は直接見えなくなる
Cで書けばこういうことね
int x = 0, y = 0;
{
int x = 1;
printf("%d,%d\n", x, y);
}
printf("%d,%d\n", x, y);
こんな簡単なことも分からない馬鹿って生きてる意味あるの?
360:デフォルトの名無しさん
12/08/16 22:47:51.21
>>352
Pythonのラムダ式は要らんね
ただ再利用されなくても関数として定義するのは言語問わず無駄ではないよ…マシンには無駄かも知れないが
コードを読む際には処理の区切りや、その処理の区切りにとって必要なデータは何なのか、などが明確になる
361:uy
12/08/16 22:48:23.51
>>359
それはCのゴミカスコープ
362:デフォルトの名無しさん
12/08/16 22:51:18.10
>>359
だからそれがカス仕様だって言ってるんだ。
>局所変数を定義したら外側のスコープの同名の変数は直接見えなくなる
それはごもっとも。しかしだ、問題はそこじゃない。
変数の宣言に代入を代用しているから、代入しようとすると宣言する羽目になって、
お前の言う、「局所変数を定義したら外側のスコープの同名の変数は直接見えなくなる」
に陥ってるんだ。だから変数の宣言と代入が別の構文なら、こういう問題は発生しない。
宣言せずに、代入だけすれば、その側のスコープの変数に代入できるからな。
そこがまずミスってるわけ。そんで今になってnonlocal追加。余計にカオス。
他の言語で見られるようなvar方式の方がましだったってわけ。
363:153
12/08/16 22:52:20.86
>>341
お、わざわざスレを立ててくれたんだね、ありがとう
早速、Python関連サイトへのリンク集をカキコしておいたよ
では、このスレでは議題が「Pythonにおけるnonlocalの是非」へと移ったからみたいだから、
(このスレでは)しばらくROMにまわることにする
364:デフォルトの名無しさん
12/08/16 22:53:35.57
いや、そんなに混乱することコレ?w
なんか本当に混乱して全く理解できない状態で説明してるんだよね
365:デフォルトの名無しさん
12/08/16 22:54:19.53
>>363
お前の引き出しの少なさに唖然とするわ
というかお前Pythonのこと何も知らんくせにPythonのリンク貼るなカス
366:デフォルトの名無しさん
12/08/16 22:55:12.21
var: 局所変数を宣言するときに付ける
nonlocal: 外側のスコープの変数へ代入するときに付ける
局所変数の宣言の方が沢山書くんだからvarの方が冗長
ていうかnonlocalが無ければ外側の変数に代入できないんだから
混乱するのはアホだけだ
367:デフォルトの名無しさん
12/08/16 22:55:34.09
>>363
良かったね^^
これで思う存分お前のやりたい議論が出来るね^^
368:デフォルトの名無しさん
12/08/16 22:58:26.10
簡単に言えば、「何で代入したいだけなのに勝手に宣言しちゃうわけ?」ってこと。
代入と宣言はまったく別のものだろ。
代入は代入だし、宣言は動的型言語の場合スコープを決めるためのものだ。
一緒くたにしてしまって、使い分けできなくなってしまって不便になったものだから、
あとからnonlocal追加。塩と砂糖を混ぜておいて、後から塩だけ分離するようなものだ。
はじめから混ぜるな。あたりまえ。
369:デフォルトの名無しさん
12/08/16 23:00:16.56
いやだから、nonlocalの追加で解決したんだろ?w
370:デフォルトの名無しさん
12/08/16 23:00:51.21
>>366
自分で書く場合は混乱しない。問題はは他人のソースを読む時。
ある変数のスコープを調べたい時、nonlocalと代入の有る無しの両方を確認しないと
スコープが確定しない。
371:デフォルトの名無しさん
12/08/16 23:03:05.53
そうかなあ、混乱するコード見せてよ
372:uy
12/08/16 23:03:18.38
uyを分離するにはpythonの話題にすればいい
だったら最初から混ぜるな!
373:デフォルトの名無しさん
12/08/16 23:03:35.02
>>370
> 自分で書く場合は混乱しない。問題はは他人のソースを読む時。
いや、お前明らかに混乱してたろww 面白い奴だな
374:デフォルトの名無しさん
12/08/16 23:06:00.64
>>369
解決していない。代入の有る無しでスコープが変わる糞仕様は残ったまま。
代入で宣言を代用する、アホな発想は残ったまま。
便利な万能調味料を作ろうとして、塩と砂糖を混ぜたのが今までのPython。
使い分けできなくなって困ったから、そこから塩だけ分離する機能をつけたのが新しいPython。
しかしだ、小学生でも言うぜ?
はじめから混ぜなければ、あとで分離する必要は無いのにって。
375:デフォルトの名無しさん
12/08/16 23:07:31.61
宣言するの面倒じゃん
376:デフォルトの名無しさん
12/08/16 23:09:13.91
代入でスコープが変わるって何?
代入で宣言するから、宣言でスコープが決まるだけでしょ
377:デフォルトの名無しさん
12/08/16 23:10:17.73
>>374
だからお前がアホなのは分かったって
378:デフォルトの名無しさん
12/08/16 23:11:41.04
nonlocalも宣言だから、別に矛盾してないよなあ
379:デフォルトの名無しさん
12/08/16 23:13:36.05
>>375
なぜか知らないが、君がそう勘違いしているだけ。
たとえ宣言をしなくて良かったとしても、
どの道、初期化してからしか変数を使用できない。
さすがに初期化するの面倒じゃん、とは言えないでしょ。
初期化は必ず必要。だから、初期化するついでに宣言すればよい。
手間は変わらないということ。varが嫌なら、i @= 0とかでも良い。
何でも良い。普通の代入と宣言付き代入の区別さえ付けばよい。
380:デフォルトの名無しさん
12/08/16 23:15:09.84
>>379
i @= 0とかいくらなんでもキモすぎだろ。そういう言語があるの?
381:デフォルトの名無しさん
12/08/16 23:16:46.28
>>376
なんで代入で宣言するんだよ。宣言無しの普通の代入は?
代入と宣言は別のものだろ。代入は代入。宣言はスコープを決めるもの。
ぜんぜん動作が違う。なぜ両者を混ぜる?そしてなぜ後で分離する(nonlocal)?
ナンセンスだろ。馬鹿げてるって分からない?
382:デフォルトの名無しさん
12/08/16 23:16:53.87
> i @= 0
Perlに倣ってシメジ代入演算子と命名しました
383:デフォルトの名無しさん
12/08/16 23:17:30.34
PythonはNoneにappendしたらリスト作ってほしい
384:デフォルトの名無しさん
12/08/16 23:18:27.99
リストとNoneを返す関数の返り値にappendするならいいけど
それ以外の場合はろくなことにならない悪寒
385:デフォルトの名無しさん
12/08/16 23:18:54.59
>>381
便利だからだろ。それで必要な所だけで宣言するようにしたんだから
お前の案よりエレガントじゃね
386:デフォルトの名無しさん
12/08/16 23:19:35.83
>>380
宣言が i := 0 って言語なら有る。
@=はキモいけど、今回あえてそう書いたのは、
プロポーショナルフォントだと「:」が潰れて:=と=の区別がつきにくく、
掲示板に投稿するのには向いて無いから。
でも実際なんでも良い。普通の代入と宣言付き代入の区別さえ付けば。
387:デフォルトの名無しさん
12/08/16 23:23:04.62
動的言語を使わないほうが精神衛生上良いのでは…
388:デフォルトの名無しさん
12/08/16 23:26:50.76
Pythonのネストスコープに欠陥がある!なんて言うから楽しみだったのに
自分の好みを連呼するだけの馬鹿だと分かってガッカリ
389:デフォルトの名無しさん
12/08/16 23:29:09.85
のんろーかるってなんぞ?
390:デフォルトの名無しさん
12/08/16 23:29:37.78
nonlocal使った具体的なソースがみたい
391:デフォルトの名無しさん
12/08/16 23:30:33.43
さぁ、これでまたパイソニストの数が減ったかな。
ラムダは貧弱だし、スコープはおかしいし、
単純にラムダ多用が当たり前の今の風潮に向いて無い言語なんだよね。
ラムダはスコープが重要になってくるし、しかもそのラムダ自体が貧弱なのだから。
392:デフォルトの名無しさん
12/08/16 23:31:54.33
はい勝利宣言はいりました
393:デフォルトの名無しさん
12/08/16 23:35:12.23
こりゃラムダ
394:デフォルトの名無しさん
12/08/16 23:37:44.86
これだけは断言できる
今日一日で関数型言語を嫌う人間は確実に増えた
395:デフォルトの名無しさん
12/08/16 23:44:43.34
Pythonのリスト内包は見にくくて、Rubyの関数型の記述は見やすいの?
396:デフォルトの名無しさん
12/08/16 23:51:58.10
仮にPythonのラムダが強化されて無名関数が作れるようになったとしても、
こんどは代入の有る無しでスコープが切り替わる変な仕様が牙をむいてくる。
ことラムダに関してはPythonは2重に詰んでいる。
逆にその辺を何故かうまくかいくぐったJSの先見の明には驚かされる。
シンプルで素直な言語仕様が生きたな。
Cにも通ずるものがある。
397:デフォルトの名無しさん
12/08/17 00:07:03.34
>>390
クロージャでよくある例として、関数が呼び出された回数を数えるカウンタ
ここではデコレータで、カウントしたい関数をデコレートして実現してみた
Python2.x:参照が読めるだけだからリストを使う
URLリンク(ideone.com)
Python3.x:nonlocalで宣言した外側の変数に代入できる
URLリンク(ideone.com)
398:デフォルトの名無しさん
12/08/17 00:13:45.80
c = 0
def f():
nonlocal c
c += 1
print(c)
f()
つかこれは動かないけどw
メソッドの内部にはない変数はまた別ってこと?
399:デフォルトの名無しさん
12/08/17 00:15:21.58
それはnonlocalじゃなくてglobal。Python2.xから出来る
400:デフォルトの名無しさん
12/08/17 00:19:40.50
URLリンク(www.python.jp)
チュートリアルにデコレータないんだけどなんなの
401:uy
12/08/17 00:21:22.59
うえ
ちょっと試したけどPythonきも
これはrubyで余裕で勝てる
402:デフォルトの名無しさん
12/08/17 00:26:22.46
デコレータは使い方が色々あって重いし、なくても当面はなんとかなるからな
チュートリアルに載ってないことなんてナンボでもあるべ
403:デフォルトの名無しさん
12/08/17 00:30:07.04
いちおー言っとくけど重いってのは学習のことね
404:デフォルトの名無しさん
12/08/17 00:37:20.38
ちなみにPythonスレに2タブのコードを貼ると掘られます
405:デフォルトの名無しさん
12/08/17 00:45:42.98
>>391
減るわけないじゃん。 >>385を論破してみろよ
406:デフォルトの名無しさん
12/08/17 00:54:36.95
代入で宣言を兼ねるのは問題が全く無いワケではないが、彼はそれについて全く説明できていないんだよなあ。
面白いから答え書かずに眺めておこう。
407:デフォルトの名無しさん
12/08/17 00:59:43.48
はいはい、頭良いフリはいいからROMってろよ
408:デフォルトの名無しさん
12/08/17 01:11:43.19
>>405
代入で宣言を代用する方式は、ネストスコープを持つ最近の言語には殆ど採用されて無い、
というか、俺は見たことが無い。優れた方式ならもっと採用されているはずだろ。
409:デフォルトの名無しさん
12/08/17 01:18:03.74
>>407
バカですが何か
410:デフォルトの名無しさん
12/08/17 01:35:29.44
>>408
そのレスだけでは詭弁でしかない
411:デフォルトの名無しさん
12/08/17 01:39:45.14
採用されてれば優れてるのか
Python自体はあちこちにそこそこ採用されてるからやっぱり優れた言語なんだな
412:デフォルトの名無しさん
12/08/17 01:59:31.43
>>410
どこが詭弁なんだよ。
Pythonが出来た時代にはこんなにラムダが多用されるようになるとは
夢にも思わなかったんだろうよ。
だから、インナー関数は殆ど使われないし、ネストスコープもそんなに現れない、
そういう前提で、代入で宣言を代用したんだろう。
ところが、世の中ラムダだらけ、スコープだらけになってしまった。
時代を読むのは難しいが、ネスケ社が片手間に作ったJSがその辺上手に切り抜けているから
言い訳は出来ないわ。やはり言語仕様はシンプルで素直なのが一番。
当時の常識で変に捻ると後々邪魔になる。
413:デフォルトの名無しさん
12/08/17 02:05:54.04
JSのどこがシンプルなんだよ。JSの本にもクセがあると書いてあるくらいなのに
まず、Pythonでも普通にラムダは使うし、他の言語より使わないとしたらそれはリスト内包表記が便利だからだよ
414:デフォルトの名無しさん
12/08/17 02:08:22.62
JSの何をもってシンプルと言ってるのか分からない
自分が好き=シンプルなのか?
415:デフォルトの名無しさん
12/08/17 02:10:14.31
>>413
Pythonのラムダって、あの式しか書けないやつですか?
416:デフォルトの名無しさん
12/08/17 02:10:46.27
>>413
どっちかっつーと機能制限のせいだと思う、というか自分はそれがあるから内部関数のほうが多い
今は三項if式があるから昔よりマシになったけど、文が書けないってのは何気にキツいと思う
417:uY ◆gXFLM6waxs
12/08/17 02:12:07.39
なんでこのスレ今日はこんなにヒートアップしてんの
ちょっと落ち着けば?
URLリンク(img.pics.livedoor.com)
URLリンク(img.pics.livedoor.com)
418:デフォルトの名無しさん
12/08/17 02:13:45.30
CoffeeScript はプログラミング言語のひとつである。コードはJavaScript のコードに変換される
Ruby や Python、Haskell から影響を受けたシンタックスシュガーの導入により、JavaScript に比べ簡潔さと可読性を向上させた
ワロタ
419:デフォルトの名無しさん
12/08/17 02:16:05.29
ラムダを多用ってどこの誰が多用してんの?
420:デフォルトの名無しさん
12/08/17 02:19:28.36
最近の言語と言ってるが、最近の言語で言語仕様がシンプルなんてなくね?
JSがシンプルというのも甚だ疑問だけど、他の最近の言語だって全然シンプルじゃないだろ
421:デフォルトの名無しさん
12/08/17 02:20:53.14
>>419
関数型では多用するけど、手続き型では代替手段を使うことのほうが多いよね
PerlやRubyはブロックだし、Pythonはforイテレータやリスト内包、ジェネレータ式や内部関数
強いて言えば無名関数リテラルでやるJSくらいじゃないか?当て嵌まるのって
422:デフォルトの名無しさん
12/08/17 02:25:00.28
俺は式の途中で関数オブジェクトが入るべき場所に
巨大なラムダをねじ込む方が明らかに醜いと思うけど
423:デフォルトの名無しさん
12/08/17 02:27:11.15
>>421
え、このスレでは、Rubyのブロックをラムダって言ったら怒られるわけ?
424:デフォルトの名無しさん
12/08/17 02:29:13.98
式で表現できるくらいならまだしも、ある程度まとまった機能を分けるのは当然のことだと思うけど
関数定義してはいけないという宗教の人は酷いコードを書いてそうだな
425:uY ◆gXFLM6waxs
12/08/17 02:33:33.57
俺様から言わせてもらうとラムダとオブジェクト指向は相性悪いと思うよ
ある程度まで大きな処理になるならラムダじゃなくてクラスにするべきなんだよ
そこら辺のさじ加減を間違えるとゴミ
426:デフォルトの名無しさん
12/08/17 02:35:21.78
>>424
嫌だよ。俺の感覚だと、ラムダはfor文やif文に続くブロックと同じ扱いだから。
あそこを名前つけて関数化したいやつはおるまい。
427:デフォルトの名無しさん
12/08/17 02:40:31.77
それはお前の感覚が完璧に間違ってるだけ
428:デフォルトの名無しさん
12/08/17 02:45:41.20
>>423
Rubyのブロックはそれ自体ではまだ値ではないからな
オマケにラムダは別で存在するし
429:uY ◆gXFLM6waxs
12/08/17 02:57:30.07
むしろrubyのブロックは標準では(ラムダ)lambdaじゃなくてprocだよ
lambdaを渡す事も出来るってだけで別物
430:デフォルトの名無しさん
12/08/17 03:02:03.44
>>429
いや{|v| }の段階ではまだprocですらないだろ
ただのメソッド呼び出しの一部でしかない
431:デフォルトの名無しさん
12/08/17 08:56:29.28
Ruby(笑)
スレタイ見えない馬鹿がいる
432:デフォルトの名無しさん
12/08/17 09:09:32.70
良くも悪くもRubyはこのスレの主役
433:デフォルトの名無しさん
12/08/17 09:33:25.47
スレタイにRubyが入っていないのは永久欠番だから?
434:uY ◆gXFLM6waxs
12/08/17 10:08:49.41
勝ち抜け
435:デフォルトの名無しさん
12/08/17 10:51:41.54
>>433
どこぞのクソコテのせい。
436:uY ◆gXFLM6waxs
12/08/17 11:22:36.94
使えば使うほど他言語との差を感じる
rubyをはじめ動的言語は型情報がない分、ソースを書くのが楽だから
静的言語だと作業時間や労力的に見て
絶対にかけないようなシステムが構築できると思う
人間は例外なくプログラミング言語を完璧には使いこなせないので
「理論的に出来る」じゃ、出来ないんだ
動的言語がオモチャだなんてとんでもない
型エラーで悩まされることのない動的言語はやばいぞ
437:デフォルトの名無しさん
12/08/17 22:35:04.98
ねぇーよ。動的言語なんてIDE直結の開発できねえから大規模な開発なんて不可能に決まってんだろ。
コーディングの量が多くても潜在バグを探知できるから静的型付けは生産性が高いんだ。
JavaScriptでバグがでようがでまいがどうでもいい箇所しか使い道なんて無いんだよ動的型付けは。
RubyやPythonでサーバーサイドなんえ実用性とか全くない。
438:デフォルトの名無しさん
12/08/17 22:39:12.61
IDEだと静的言語でも今時のテンプレートバリバリのソースとか
うまく扱えないだろ?
あの手の環境って時代遅れかもよ?
439:uY ◆gXFLM6waxs
12/08/17 23:12:05.26
やってる奴もいるのに不可能とか言われてもね
動的言語で大規模開発できる奴らはスキル低くないんだってば
440:uY ◆gXFLM6waxs
12/08/17 23:25:37.50
動的言語と静的言語を比べる時に
なんか静的言語ならバグが混入しないみたいな事言ってる奴いるけど
凄い勘違いだと思う
実際はただ混入しやすいバグの種類が違うだけ
441:デフォルトの名無しさん
12/08/18 00:41:53.89
韓国最大手の釜山貯蓄銀行が破産。自己資本比率は驚異の-50.29%
スレリンク(poverty板)
釜山(プサン)地方裁判所は16日、債務超過に陥った釜山貯蓄銀行に対し、破産を宣告しました。
釜山貯蓄銀行は去年2月17日に営業停止処分を受けたのに続き、去年4月29日には、BIS=国際決済銀行による
自己資本比率がマイナス50.29%と、健全性を示す基準の1%を大幅に下回っていたため、
不健全金融機関に指定されました。
当時、釜山貯蓄銀行の資産総額は1兆3000億ウォン、借金は3兆5000億ウォンで、
資本金の増額や第三者による買収など経営改善の可能性も低いことから、
管財人が清算に向けて破産を申請していました。
5000万ウォン以下の預金資産や優良資産などはすでにブリッジバンクのイェソル貯蓄銀行に引き継がれており、
破産宣告により、釜山貯蓄銀行に5000万ウォンを超える預金を預けている
預金者と後順位の債権者は、破産手続きによる配当を受けることになりますが、
残った資産を処分しても、配当として受け取る資金はほとんどないものとみられます。
ただ、5000万ウォン未満の預金者は、今後もイェソル貯蓄銀行の管理のもとで、金融取り引きを続けることができます。
これに先立ち、今月14日には第一(チェイル)、第一2、プライム相互貯蓄銀行が
ソウル中央地方裁判所に破産申請を行っており、
トマト貯蓄銀行とパランセ貯蓄銀行もすでに先月、裁判所に破産を申請しています。
URLリンク(world.kbs.co.kr)
442:デフォルトの名無しさん
12/08/18 00:46:48.57
z
443:デフォルトの名無しさん
12/08/18 01:02:28.22
>>419
LLがどうとかおいておくとC#とか?あとPowerShellもか
444:デフォルトの名無しさん
12/08/18 01:37:03.91
>>443
お前それマジなの?
445:デフォルトの名無しさん
12/08/18 01:43:56.23
PyPyのSTM早く来てぇ
446:デフォルトの名無しさん
12/08/18 02:02:51.80
>>444
2ch総力を上げてもいいのよ?
447:デフォルトの名無しさん
12/08/18 02:24:21.07
韓国経済が急激に失速している。一番の原因は、これまで韓国経済を引っ張ってきた原動力である輸出に陰りが見え始めたためだ。
輸出に次いで内需の鈍化も懸念されている。住宅価格の下落とそれに伴う消費や投資の抑制がみられ、バブル崩壊以降日本が苦しんだ
「日本型長期デフレ」の兆候が現れている、との指摘も少なくない。
■好調に見えたのはヒュンダイやサムスンだけ
韓国の輸出は、2012年7月の通関ベースで前年同月に比べて8.8%減と大きく減った。マイナス幅は3年ぶりの高い数値だという。
これまで韓国の輸出をけん引してきた自動車の輸出が頭打ちになったのをはじめ、船舶や石油化学製品、携帯電話など主力製品の輸出が急速に落ち込んだ。
韓国の輸出額は国内総生産(GDP)対比で50%を超える。「輸出国」といわれる日本でもGDP対比では10%半ばだから、輸出依存度の高さは圧倒的だ。
そのため、輸出の不振は即韓国経済の失速に直結する。
なかでも韓国経済を支えてきたのが欧州連合(EU)向けの輸出。EUとは自由貿易協定(FTA)を結んでいる。そのEU向けが12年1~6月期には前年同期に
比べて16.0%も減った。EU諸国の債務危機から発した景気低迷が影響した。
さらには中国向けも1.2%減った。第一生命経済研究所経済調査部の主任エコノミスト、西?徹氏は、「中国向け輸出の減少はボディブローのように効いています」と話す
。韓国の素材や部品メーカーは中国を介して、間接的にEU向け輸出を増やしてきたからだ。
URLリンク(headlines.yahoo.co.jp)
448:デフォルトの名無しさん
12/08/18 04:18:00.22
まー、Twitter社がRuby捨てたっていう事実関係は大きいよな。
449:デフォルトの名無しさん
12/08/18 04:30:22.45
え、なにが
ツイッター潰せばいいだけでしょ
450:デフォルトの名無しさん
12/08/18 09:45:36.90
>>443
テキトー抜かすな
451:デフォルトの名無しさん
12/08/18 11:28:02.65
TwitterはRuby捨ててJavaに移りましたよ。
動的型付け言語に人生をかけてるuvさんもきっとどこかに捨てられたんでしょうね。
452:デフォルトの名無しさん
12/08/18 11:35:57.91
関数の引数不正、演算の型不一致は静的ならエラーを吐いてくれる。
型宣言がソースが長くなるだけの無用なものとか言ってるやつらは開発なんてしたことがないエセプログラマー。
オブジェクト指向言語でわざわざpublicとかの修飾子つけるのが無駄だとしか思ってないんだろうな
453:デフォルトの名無しさん
12/08/18 12:02:57.81
そらRubyは捨てられるでしょ。
可読性ゼロの変態文法だし、アプデするごとに互換性なくなるんだもんw
454:デフォルトの名無しさん
12/08/18 12:06:16.28
静的言語ってウンkばっかなんだよな
Goには頑張って欲しい
455:デフォルトの名無しさん
12/08/18 12:22:28.86
Xtend使えばJavaの冗長さも大半解消されるわけで
456:デフォルトの名無しさん
12/08/18 12:28:14.05
>>452
型チェックがないと簡単にバグってしまうような技術レベルなら
それこそエセですよ
457:デフォルトの名無しさん
12/08/18 12:45:51.68
多分452と456とでは想定してるコードの規模が全く噛み合ってない
458:デフォルトの名無しさん
12/08/18 13:15:12.79
>>453
言語仕様が変だというのが捨てる理由なら、真っ先にPHPのシェアが0に
なってなければ変なんだけどwwwwwwww
459:デフォルトの名無しさん
12/08/18 14:03:14.72
>>448
捨ててないよ
Rubyのエンジニアが多いからこれからも使っていくみたいだよ
460:uy
12/08/18 14:14:03.81
なんていうかわかったんだけどさ
言語の互換性ってそれほど大きな問題でもない気がする
仕様変わっても1日あればバグ全部とれるわ
それにrubyは順調にひろまってるwww
評判がわるいガラパゴスは2chだけwwww
461:デフォルトの名無しさん
12/08/18 15:05:28.42
Rubyって韓流と同じ臭いがする
流行ってる、流行ってるっていうけどRuby使ってるヤツなんか見たこと無い
462:デフォルトの名無しさん
12/08/18 15:07:25.28
rubyでめし食っててスマン
463:デフォルトの名無しさん
12/08/18 15:11:58.61
参考資料に URLリンク(github.com)
JavaScript 20%
Ruby 14%
Python 9%
Shell 8%
Java 8%
PHP 7%
C 6%
C++ 4%
Perl 4%
Objective-C 3%
JavaScript相変わらずつよす
464:デフォルトの名無しさん
12/08/18 15:26:32.95
>>463
それってプロジェクト数で出してるのかなぁ。そしたら使い捨てほど上に来やすいと納得。
465:デフォルトの名無しさん
12/08/18 15:27:47.86
どーいう集計のしかただよw。
Rubyが高いとか捏造ランキング乙w
>>462
え?なに?ウンコでも食ってんのRuby使いは?
466:uy
12/08/18 15:38:52.03
だってgithubってこういう認識だもの・・・
URLリンク(d.hatena.ne.jp)
Rails や RSpec 等、また URLリンク(gems.github.com) の
Rubygems のレポジトリソース等、Ruby 関係のライブラリの
コードを中心とした様々なオープンソースの開発の場所ともなっている。
それに 「参考資料に URLリンク(github.com) 」というのは実は
URLリンク(www.infoq.com)
> 言語に関する統計ページがあるが、これは
> プロジェクト数ではなくコード行数をカウントしている。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
467:デフォルトの名無しさん
12/08/18 15:48:55.18
え?
コード行数でカウントしててruby2位って相当じゃねーの
468:デフォルトの名無しさん
12/08/18 15:53:27.80
Rubyのスパゲッティっぷりを証明してるサイトってことか。
469:uY
12/08/18 15:53:45.61
念のため
URLリンク(d.hatena.ne.jp)
>git のプロジェクトホスティングサービス。Rails で作成されており、使いやすいインターフェイスが特徴。
~~~~~~~
R a i l s
~~~~~~~~~~~
470:デフォルトの名無しさん
12/08/18 15:57:38.08
じゃあZopeで作成されたプロジェクトホスティングサービスの統計を
調べればいいんじゃね?
ところで、どこにあるん?
471:デフォルトの名無しさん
12/08/18 16:02:57.25
おいやめろ
>>467
行数でカウントしたいならこっちか
URLリンク(www.ohloh.net)
472:デフォルトの名無しさん
12/08/18 16:19:16.14
___
/| |
||. |∧_∧|
||. (´・ω・| うわっ、クソスレに来てしまった。
||oと. U|
|| |(__)J|
||/ ̄ ̄
___
| |
| |
| o|
| |
| |
彡 ̄ ̄ パタン、
473:uy
12/08/18 16:29:17.41
行数でカウントなんてプロっぽくないな。
ステップ数でカウントと言おう
Rubyはステップ数が多い。
474:デフォルトの名無しさん
12/08/18 17:08:37.68
RubyやPythonなんて使ってる時点でプロじゃねぇだろw
475:デフォルトの名無しさん
12/08/18 17:22:25.77
そもそもプロってなんだよ、みんなプロぐらまーだよってか?
476:デフォルトの名無しさん
12/08/18 17:35:21.01
プロならスクリプティング言語じゃなくてプログラミング言語と言いたいわけですね。
477:デフォルトの名無しさん
12/08/18 17:36:33.02
かぶってたはずかしい
478:デフォルトの名無しさん
12/08/18 17:57:03.32
いやいや、君のオヤジギャグの方がクールだよぉ~
オレのは余計サブくなったけど・・・
479:デフォルトの名無しさん
12/08/18 18:11:35.41
i=""
if(i)
puts "true"
else
puts "false"
end;
なんでtrueになるの?
480:uY ◆gXFLM6waxs
12/08/18 18:43:59.73
空っぽになっても自分を曲げたくないからだよ
481:デフォルトの名無しさん
12/08/18 20:03:14.87
サブッ・・
482:uY
12/08/18 22:10:47.15
ha?
483:デフォルトの名無しさん
12/08/18 23:23:57.45
Lisp由来の、非nilはすべて真ルールは
なかなかうまく機能する
484:デフォルトの名無しさん
12/08/19 01:06:57.21
blank? が欲しい時はあるけどね
485:デフォルトの名無しさん
12/08/19 01:28:14.60
blank?ってどういう意味?
486:uy
12/08/19 01:36:50.63
(頭が)空っぽ?って意味だよw
487:デフォルトの名無しさん
12/08/19 03:42:32.99
白板
488:デフォルトの名無しさん
12/08/19 04:18:39.97
>>479
文字のインスタンスがあるから
489:デフォルトの名無しさん
12/08/19 04:21:03.00
ruby流行ってるていうのはステマ
まわりでruby使ってるやつみたことない
490:デフォルトの名無しさん
12/08/19 04:39:40.97
>>484
もし空文字列(長さがゼロの文字列)かどうか調べるならString#empty?があるよ
491:デフォルトの名無しさん
12/08/19 05:37:53.95
使ってる人の声が大きいんだろう
492:uY ◆gXFLM6waxs
12/08/19 06:10:13.39
>>489
かわいそう
493:デフォルトの名無しさん
12/08/19 07:03:19.28
rubyさいきょう