【Perl,Python,PHP】LL バトルロワイヤル 25【JavaScript】
1 :
uy :
2012/08/11(土) 12:21:25.19 面白かったのでコピペ 979 名前:uy[sage] 投稿日:2012/08/11(土) 11:53:55.80 面接官「特技はRubyとありますが?」 学生 「はい。Rubyでならなんでもかけます。」 面接官「ではシングルトンパターンを書いてください。」 学生 「存在しません?」 面接官「え、存在しない?」 学生 「はい。存在しません。Rubyはシングルトンパターンを言語でサポートしています。」 面接官「・・・で、その言語でサポートされた機能を使うとシングルトンパターンになるんですよね?」 学生 「はい。シングルトンパターンです。」 面接官「いや、あなたRubyでシングルトンパターンは存在しないといいましたよね。なぜシングルトンパターンになるんですか?」 学生 「でも、シングルトンパターンは存在しないんですよ。」 面接官「いや、存在しないとか問題じゃなくてですね・・・」 学生 「Rubyなら簡単にシングルトンパターン書けますよ。」 面接官「ふざけないでください。それに機能が用意されてるってことは存在するでしょ。だいたい・・・」 学生 「機能は用意されていますが言語でサポートしているんです。だから存在しません。」 面接官「聞いてません。帰って下さい。」 学生 「あれあれ?怒らせていいんですか?シングルトンパターン書きますよ。」 面接官「いいですよ。書いてください。Rubyでシングルトンパターンを。それで満足したら帰って下さい。」 学生 「運がよかったな。Rubyにシングルトンパターンは存在しないようだ。」 面接官「帰れよ。」
面白くないし
>>1 にそんなもん貼る神経が分からん
キモすぎるわ
3 :
uy :2012/08/11(土) 12:28:09.50
>>1 に貼っておけばスレがある限りずっと見れるだろう?
4 :
uy :2012/08/11(土) 12:32:37.65
5 :
uy :2012/08/11(土) 12:37:30.73
はいはい雑魚ざっこ しねしね
6 :
uy :2012/08/11(土) 12:59:49.00
>>4 でさ、マジで聞きたいんだけど、
お前その2つが両方共
シングルトンだと思ってるの?
7 :
uy :2012/08/11(土) 13:01:39.22
なんで知識量で完全に劣ってるのに、そんなに勇猛果敢に挑戦してきて敗北して涙目になろうとするんだろう わけがわからないよ
8 :
uy :2012/08/11(土) 13:02:12.10
9 :
uy :2012/08/11(土) 13:03:18.76
はやく謝れよ
10 :
uy :2012/08/11(土) 13:12:19.06
ねえまだ?
11 :
uy :2012/08/11(土) 13:20:55.28
def self.あ end これはシングルトンメソッドです 特異メソッドです
12 :
uy :2012/08/11(土) 13:34:36.00
シングルトンメソッドというのは シングルトンパターンとどういう関連があるのでしょうか?
13 :
デフォルトの名無しさん :2012/08/11(土) 13:41:46.47
ゴミ
14 :
uy :2012/08/11(土) 13:48:27.68
シングルトンメソッドは、 シングルトンパターンという名前の シングルトンを借りただけってことがわかりました。 つまり、目的がぜんぜん違う別物です。 Rubyはもちろんシングルトンパターンがありますが それとは別にシングルトンメソッドがあるということです。
singletonはインスタンスが複数になりそうな時のが良く使うな。
16 :
uy :2012/08/11(土) 13:50:16.10
よくできましたおめでとうー(≧ヘ≦)
17 :
uy :2012/08/11(土) 13:52:11.02
書籍「デザインパターン」にも載っていたね。 名前とは反して、インスタンス数を最大いくつって 制限する方法が応用例として書いてあったよ。
18 :
uy :2012/08/11(土) 13:52:54.07
馬鹿がシングルトンメソッドの話をして
混乱させただけというわけかw
さあ、シングルトンパターンの話に戻りましょう。
つまり
>>1 です。
19 :
uy :2012/08/11(土) 13:54:27.80
馬鹿が混乱させたというか、 馬鹿が一人で混乱してただけだろw
20 :
uy :2012/08/11(土) 13:57:06.71
どうやらキチガイも消えたし、 デザインパターンは、考え方であって 実装コードじゃないの意味がやっと理解できたんだろうね。 無知なやつほど、よく噛み付く。
21 :
uy :2012/08/11(土) 14:07:20.82
observerみたいに実装コードを一部巻き込んでるものもあるよ メソッド名がupdateと決まってる
22 :
uy :2012/08/11(土) 14:09:19.05
メソッド名が決まってるだけじゃ 実装コードとは言わんw
23 :
uy :2012/08/11(土) 14:10:24.11
Ruby厨って、インターフェースと 実装を分けて考えるってのが 苦手なのかもしれないね。 インターフェースって言語機能のやつじゃなくて これも考え方の話。
無駄に書き込み分けるのってrubyの言語仕様なのかな。
25 :
uy :2012/08/11(土) 15:18:01.22
rubyではこのようにして現在ヒープにある様々なオブジェクト一覧を取得できます p ObjectSpace.count_objects test_uy = 9999999999 ObjectSpace.each_object.map do |m| m end .each do |m| if m.to_s =~ /test_uy/ p m end end こんな事出来る言語ほかにある? 勝てそうな言語ある?
uyは定期的にRuby関係のスレをageまくる。 そんな事しても、Rubyはそのうちフェードアウトするのでご心配なく。 なぜなら文法が汚すぎるから。
27 :
uy :2012/08/11(土) 16:23:45.44
もともとrubyはperlの代用 一時的にperlがいけなかった場所まで上っているにすぎない
28 :
uy :2012/08/11(土) 17:02:00.80
rubyは日本語資料多いので 英語が苦手なプログラマーにもお勧めです
スクリプト言語のオブジェクト指向は連想リストと名前空間で十分だろうなと思っている
30 :
デフォルトの名無しさん :2012/08/11(土) 17:14:16.81
普段の作業はそんなもんだと思う でもそれだけだとスクリプト言語でCのライブラリを書き写して公開するとかが簡単にはできない
matz,guido,larry,stroustrup,gosling,Hejlsberg,K&R を一ヶ所に閉じ込めれば最強のecmaスクリプトが出来上がると思うの
33 :
uy :2012/08/11(土) 18:47:14.71
34 :
uy :2012/08/11(土) 18:47:55.40
35 :
デフォルトの名無しさん :2012/08/11(土) 18:48:08.19
小学校の頃ヒステリーな奴がいたなぁ
とりあえずPythonのコード置いときますね foo = 999999 [print(y) for x,y in locals().items() if x == 'foo']
それ出来ないのって、c/c++だけじゃないのか
C++の美徳は余計なことをしない、だからな。 そういうことをしたいなら、そういうコードを書いてくださいっていう。 共通の基底クラスすらないし。
c++で共通の基底クラスを自前で実装しているコードは眺めたことあるな あれは一体、何が嬉しいんだろう
デバッグがしやすいとかじゃないかな。
デバッグ用途にutilクラスでも作るのかしら c++にinstanceofみたいな命令あったかな
何がしたかったとかC++使いに問うてはいけないと思う
〜使いって、はてなやtwitter民だよね リア充臭いから爆発しないかな
cとmatlabが最強だよ web系記者はアホな記事を書きやがって
LLだの言ってスクリプト言語しか会話できんやつら&言語がキモすぎる。 RubyやPytonなんてLLなんて言わん。単なるスクリプト言語。 もう俺がLLの必須定義を2つ書いておくからお前ら条件満たしてない言語の会話するなよ。 LLの定義 ・C/C++/javaの代替を目指す言語であること。 ・コンパイラが存在すること、VMが充実していること。 この2つは絶対に必要十分条件だ。 低レベルなプログラミングを目指すのに実行環境が用意できん言語とか一発退場だ。 RubyとPythonはこの時点でアウト、スレチ、なんのために存在するの? LLなんて入れるのはJavaScriptしかねえだろ。 VMはほぼどのパソコンにも乗っている。 コンパイラもインテルがHPC向けに作ってる。 サーバーサイドもJavaScriptも浸透してる。 今の世の中、JavaScript以外にLLの選択肢なんてない。 LLの定義を勘違いしてるウンコ君どもはサーバーサイドプログラムのバトルロワイヤルでもやってな。
うわぁキモいwww お前日本語のLLの定義が嫌なら 書き込みも英語でしろよ
RubyやPythonは特殊すぎるからスレを分類すべき。 PHPも独立させるべきかな。 あとついでPerlはもう誰も触れないからいっか。
次スレはJavaScriptひとりロワイヤルになるのか
他の言語は全部劣ってんだからJavaScriptでいいやん…。
スクレイピングも出来ない言語はこまる
>>51 言語として本当にJavascriptが優れてたら
>>50 のリストがこんなに一杯にならないと思うよ
直接Javascript書けば済む話だからね
>>51 試しにコマンドラインから使えるgrepとcurlのサブセットでも書いてみてくれないか(煽りじゃないよ)
どんなふうにJavaScriptでPerlやRubyを代替するのか知りたい
>>36 どちらかというと gc.get_objects() じゃない?
56 :
uy :2012/08/12(日) 18:22:47.60
Xtendが結構やばいよ scala(笑)とは違うのが一目でわかった rubyっぽくかけるJAVAって印象 あれが伸びたら動的言語の地位が危ない気がすると俺様は警告を出してみる
jsはもう2段階くらい化けないと
Javaの方向に二段階くらい化けてドカタ専用言語化すると良い
それがいい。ドカタ専用言語ってことはそれだけ高い生産性と派遣でも理解できる容易さがあるってことだ。 C言語、Java、HTML&JavaScript、PHPやらが現状のドカタ専用言語。 社会で使われないRubyとPythonは生産性の欠片もないんだろうな。
ドカタは生産性の高い言語を選んでるワケじゃなくて 低能だから習得可能な言語が限られているだけだよ ドカタ専用言語 ≠ 生産性が高い
で、君の言う生産性の高い言語を使うと、いったい何パーセント生産性があがるわけ? たいして上がらなかったから未だにC言語がシェアNo1なんじゃないの?
100歩譲ってrubyがゴミだという事にしても Pythonをバカにする奴はにわか
つっこみにくい自虐釣りだなあ
>>62 それ訊いてどうしたいの?どうせ低能の君には使えないのに
>>54 こんな簡単な問題にレスがつかないのって何で?
67 :
デフォルトの名無しさん :2012/08/12(日) 22:19:00.80
パイソニスタ ルビリストが今日は荒れてるな
このスレの存在意義って…
rubyによる他LL公開処刑場だよ スレタイに入ってる言語はruby様に刃向かった為に論破されていく
>>69 キチガイをヲチしてニヤニヤするスレです
ほーらruby厨がすぐ近くに!
varってどうにかならんの
つ coffeescript
JavaScriptのvarは省略できるけどグローバル変数になるんだったか
JSはvarがあるから良いんだよ。 動的型言語だから、型を指定する必要は無いけど、 それでも変数のスコープを指定する必要はあるので、 結局変数宣言は省けない。 無理に省くとPythonやRubyみたいに奇妙なことになる。
80 :
デフォルトの名無しさん :2012/08/13(月) 11:11:23.23
てかそれだとjsってイテレータ用の変数にまでvarつけなきゃじゃねーの 使われない理由のひとつがまずそこら辺だろう
81 :
デフォルトの名無しさん :2012/08/13(月) 11:13:52.71
グローバル変数のほうが使う機会って少ないんだから 何かオプションつけて宣言するならグローバル変数のほうだよ jsは逆に設計しちゃったのか? ローカル変数は簡単な記述でいいのに
>>81 一理あるが、それがその場しのぎの屁理屈ではないということを示すためには
「引数も多いから引数も宣言するべきではない」と言い切る覚悟が必要
ML系の言語、たとえばSML(Standard ML)だと、 代入(名前への値の束縛)にはJSと同様、文の頭に val が付く。 ただし、SMLの場合はあらゆる構文で文が予約語から始まることで 言語全体の構文が簡潔で明解になっている。 また階層的で明確な名前空間があるから、変数にグローバルや ローカルといった区別は不要。トップレベルで代入された変数が、 いわるゆグローバル変数と同等な扱いになる。さらには大規模開発向けに モジュールによって名前空間を明示的に分離できる。 考えるに、元々JSはWebブラウザ上の素朴な簡易スクリプト言語として 設計されたけど、近年では重要度が増して開発規模が増大してきた。 言語設計の想定外の用途に利用が広がったことの弊害ではないかと思う。 結論から言うと、言語設計時に大規模開発を想定していた PythonやRubyといった他のLLと比較して、JSは大規模開発に向いていない。
そもそもブロックスコープがないjsでローカル変数っていうのもな Cみたいに関数冒頭で宣言する言語なんだろ結局 関数ネストがよく使われる言語だし jsで大規模やろうとするとオレオレのクラス実装や名前空間実装出てきちゃうのはあるな その為のcoffeescriptとかなんだろうけど
>>81 グローバルとローカル以外にも、その中間にあたる、ネストスコープとかあるから。
特に最近はクロージャやラムダを多用する方向だから、ネストスコープだらけになる。
もし変数宣言がなければ、の { i=0; { i=1; } }
内側のiと外側のiが同じものなのか違うものなのか区別を付けれない。
ちなみに、Rubyだと同じもの、Pythonだと違うもの、となる。
Ruby方式だと、意図せずに変数名が被ったときにバグるし、
Python方式だと、外のスコープの変数への代入が出来ない。
その点、JSだと、varが付いていれば新しい変数、なければ外のスコープの変数、
だから、使い分けが出来るし、かつ安全で、可読性も高い。
>>83 言ってることはわからなくも無いが、スコープについて言及しているのであれば、最後の一文、
>PythonやRubyといった他のLLと比較して、JSは大規模開発に向いていない。
これはおかしい。なぜならPythonやRubyのスコープは、JSよりもさらに劣っているから。
特にPythonはスコープ内での代入の有る無しでスコープが切り替わる。
この前代未聞なカス仕様を擁護できる奴は誰もいない。マジでひどい。
3.0でnonlocal追加したときに、このカス仕様も修正すればよかったのに。
nonlocalがあるなら、代入の有る無しでスコープが切り替わるカス仕様は要らないわな。
>>85 お前それサバンナでも同じこと言い切る覚悟あるの?
すでにJSはブラウザ上の実装が全世界で広がっているから、 Pyhtonのような思いきって後方互換性を切り捨てるというような 言語仕様の変更や拡張は無理だろうね。 言い換えると、今後とも言語仕様の発展性は見込めない。
>>86 けどそれだとちょっとした小さな使い捨てスクリプトを書く時に
varをつけるかつけないか悩む事にならね?
使い捨てスクリプトとして書いても、後からコピペして別の場所で使う可能性も考えると
varつけなきゃいけない気もしてくるし
jsのサンプルってみんなそうなってる気がする
俺の気のせいじゃなければjsって
大規模プログラム向いていないし、小規模スクリプトも向いてなくね?
>>90 外のスコープの変数にアクセスする場合は、つけないし、
そうじゃない場合はつければよい。何も悩む必要は無い。
変数の最適なスコープは常に一つしかないのだから、それに準じればよい。
外のスコープで同名の変数が有るか無いか気を配らなければならないRubyや、
代入の有る無しでスコープが切り替わってしまうPythonなんかに比べれば、
遥かに単純で、考えることは少ない。
スコープ以外のことに関してで、RubyやPythonを持ち上げて、JSをこき下ろす事は結構だけど、
ことスコープに関しては、それは無理。
ただ、JSのスコープの仕様が特に優れているというわけでもないが。
RubyとPython、特にPythonの仕様が異端で、どうかしているってだけの話なので。
JSのスコープのやり方は他の言語でも見られるスタンダードなものだし、
当たり前のことを当たり前にやってるだけ。
難点を挙げるとすれば、ブロックスコープが無いことか。まぁRubyやPythonにも無いんだけどね。
ただ単にvarかくのが面倒くさいって話だよ 変数宣言が必要になる時点で小さなスクリプトを書くのにjsは向いていない かといって >結論から言うと、言語設計時に大規模開発を想定していた >PythonやRubyといった他のLLと比較して、JSは大規模開発に向いていない。 こういう事情もあるから大規模開発にも向いていない あ、ゴミか^^; rubyを知らない知ったかゴミカス野朗みたいだけど、rubyにブロックスコープはある
>rubyを知らない知ったかゴミカス野朗みたいだけど、rubyにブロックスコープはある 他の言語で言うところのブロックスコープだ。
君の知識レベルで他言語ディスるの無理
初心者死ね
hirata-create.toypark.in
.NET,ASP,PHP,javaこの辺の言語を何れもやれって会社は大した技術者が居ない糞会社
Lispのスコープも最初は問題があったがSchemeで解決した Smalltalkの影響を受けた言語は今でもスコープがおかしい
Prologにはブロックが無いよな Cでも if (foo && bar && ……) return 1; のように書ければ{}はほぼ無くなるし
スコープについてはRubyもPythonもPHP大きな差はないかな。 ブロックスコープなのはPerlだけでしょ。 それでもJSの場合、名前空間もなければClassもないので、一番分かりづらいというのはあるね。
>>100 繰り返し構文がないのだから、「ない」と言い切っていいんじゃないか。
仕様が「繰り返せ」の場合は再帰で表現するのだが、これも、繰り返しとも
読める、くらいの解釈でいい。節と節がバラバラに主張していて先ずその主張の
核心を「宣言的に」読み取るのがPrologなのではないか。仕様の繰り返しを陽に
するには、述語名で「・・・を繰り返す」とはっきり述べるのが一番よいだろう。
>>103 RubyもPythonも大きな差はないとか言われてもスルーしてる時点でおかしいだろ
さらっと流されてるが、
>>86 とか
>>91 のJSに関する説明はちょっとおかしいよね?
{i=0; {var i=1;} }
とかしてもJSにはブロックスコープは無いから外側のiと内側のiは同じものになってしまう
var宣言を単純にブロックの内側と外側の変数を区別するものには使えない
JSでブロックスコープ的なものが使いたいときはブロックの代わりに無名関数でくくらないと
{i=0; (function(){ var i=1; })(); }
あーそれは擬似コードだから。 PythonとRubyとJSでそれぞれ記述が違うので、 {{}}で、ネストスコープ一般を表現したってだけ。
JSのスコープのネストは関数スコープで作る前提の話なのか たしかにブロックのスコープとは書いてないね
うんこな言語集めてどっちがマシとかマジうけるわ マトモな言語使いたかったら静的型付け関数型言語でも使ってろ
Javascriptを読み書きしてると function() がゲシュタルト崩壊する
Perlよりマシといえば大抵のことが許される雰囲気があった 実際にはPerlに勝ったとか負けたとか考えない言語のほうがマシだった
javascriptとsmalltalkのうんこさはそっくり
# C 1 for() 2 { 3 コード 4 } # ruby 1 map do 2 コード 3 end do 〜 endより { } のほうが、読みやすいことが分かった
>>113 smalltalk風の開発環境でDOMやhtml5を弄れるruby処理系なんてあれば最強じゃね?
Smalltalk処理系を流用した Ruby処理系(MagLev)ならあったが……
>>114 ハア?
irb(main):001:0> [1,2,3].each { |x| p x }
1
2
3
=> [1, 2, 3]
codejamってjavascriptだけハブられてるのね PHPからclojureまであるのに
JSの良さは、熱心なファンがいないってところでもあるからな。 勝手に広まって勝手に定着したから。
Javascriptのファンなんて希少種だろ 他言語からJavascriptへコンパイルするのが流行り 直接Javascript書くのは低能
>>120 定着しないのが特徴かな。実行環境が不安定過ぎた。
一時熱中して、そして去っていく。だから、プログラマ数も増えない。
>>120 今後は、これまでの軽量言語を抑えて最大になると思うけど
githubは既にjsの登録数がrubyを越えている
そして、熱心なファンは海外ではninjaだとか言われてるみたいだぞ
>>121 TIOBE INDEX がそれを物語っているね。みんなJSはもっと
使われてるでしょって言う。使ってみた人の数は多いが、
現時点での活性はやはり検索数のようなものに出てしまう。
124 :
デフォルトの名無しさん :2012/08/15(水) 11:16:18.20
jsがどこで流行ってるのかわからない あれがブラウザ以外で使えると思ってる子はちょっとな ブラウザ用に作られてる言語だからそれを外に引っ張り出してきても コーディング自体が楽になるようなシンタックスシュガー系の拡張は何もやってくれないと思うよ そんな言語で頑張りたければどうぞ
>>124 Ajaxは流行ったと思うけど、それでもダメだった。きびしいですね。
ここはどんだけガラパゴスですか
どうであれ、ブラウザでは生き残るから、 流行り廃りに関係ない、息の長い言語になるだろうね。
129 :
デフォルトの名無しさん :2012/08/15(水) 12:01:49.91
まあブラウザに多言語乗っける流れがくるよ その時がjsの終わり
Googleが乗せようっていうとMSは嫌だって言うだろうし、 MSが乗せようっていうとAppleが嫌だって言うだろうし、 なかなか標準の規格に入らないんじゃないかね。 別に規格外でも、互換性糞食らえで乗せたきゃ勝手に 乗せればよいんだが、特定のブラウザでしか動かないのでは 普及するわけ無いし。 やっぱり足並み揃えない取って事で、 新バージョンのJSが乗っかって終わりでしょう。
131 :
デフォルトの名無しさん :2012/08/15(水) 12:26:28.68
>>129 今以上にカオスになるな
クロスブラウザ対応不可能になる
132 :
uy :2012/08/15(水) 13:14:53.16
これから苦労してjsをマシな言語にさせていくよりは他言語入れたほうが早い
たとえそうでも、他の言語をねじ込むのは無理。 Appleが提案してもGoogleとMSは反対する。
134 :
uy :2012/08/15(水) 13:30:47.00
ruby2.0はChromeで動く可能性が高い
はぁ、NaCLね。はいはい
またuyがRuby関係のスレをage荒らしてるな。 議論に負けるといつもこれだ。
137 :
uy :2012/08/15(水) 14:18:24.05
IronRubyは存在する IronJavaScriptは存在しない
.NetならC#だろ。バカじゃね。 同様にブラウザで動かすならJSだがな。 RubyはPythonともろに食い合う不幸な運命。
139 :
uy :2012/08/15(水) 14:25:59.58
まずさ、Rubyを普及させたいのなら、何かツールを作ったら? C言語はOSを作るために作った言語だし、 JSはネスケ社がブラウザ作る片手間に作った言語だし、 JavaはJavaVMと一蓮托生だし、 C#は.Netのために作った言語。 だからさ、Rubyも普及させたいのなら、marzに頼んで、 社会の基盤になってしまうような、革新的超便利ツール作ってもらって、 その組み込みスクリプト言語としてRuby乗せれば? 言語だけ作って後はポイ投げってのはダメ言語の典型なんだよ。 むしろツールの作成を本業とし、そっちの普及を目的とすべし。 言語開発なんかは、必要に迫られて、傍らでするぐらいでよい。 普及してて人気のある言語はほとんどそう。 ツールに引っ付いて勝手に広まった。
>>140 元がPerlに不満を持ったMatzが書き上げたオレ言語がRubyなので
実際今でも一番多い使い方が
たぶんシェルスクリプト・Perl・make辺りの代替でしょ
プロダクト未満の小物が本来の主戦場
ただ、何か知らんが一部のハッカーの琴線に触れるものがあるらしく
RailsやらRedmineやらMetasploitやら
一線級のソフトも出てきた、というのがここ5年ぐらいの話
144 :
デフォルトの名無しさん :2012/08/15(水) 15:07:36.87
(*´・∀・)(・∀・`*)ヘー
145 :
uy :2012/08/15(水) 15:10:21.84
Rubyはまだまだ歴史が浅い
Rubyはなんでdoに|つけるの?
たしかJavaと同時期のリリースだったよね。
148 :
uy :2012/08/15(水) 15:23:41.39
どうしてこんなに差がついたのか。
>>146 パイプでブロック引数をはさまないと、
それがブロック引数なのか、
単に式としてそこにあるのかが区別できない
150 :
uy :2012/08/15(水) 15:42:23.84
クソ仕様ですみませんwww
>>149 pythonみたいな
for t in list:
みたいにできなかったの?
絶対にこっちのほうがわかりやすいと思うんだけど||でかこったら特殊な演算やってそうじゃん
152 :
uy :2012/08/15(水) 15:48:47.94
>ただ、何か知らんが一部のハッカーの琴線に触れるものがあるらしく ていうか、何で分からないのか分からない 最初から最後までオブジェクトで出来てる時点でさ if true 5 end.times do | n | p n end こう、IFの戻り値さえそのままメソッドチェインで使えるんだけど
>>151 for t in list; end という構文も最初から存在していますけど、なにか?
>>152 Rubyにおいて if や case といった条件分岐は
文(statement)ではなく式(expression)だから
これはSmalltalkも同じ
手続き型言語として見れば異端だけど、
関数型言語として考えれば実に自然なプログラミングができる
>>153 なんであんまりrubyではその構文使わずに使わずにeach doするの?
156 :
uy :2012/08/15(水) 16:22:03.27
for文()よりもeachの方がメソッドチェインできて最強だからだよ
157 :
uy :2012/08/15(水) 16:23:28.48
メソッドチェインってなにがいいの?
158 :
153 :2012/08/15(水) 16:26:13.52
>>155 おそらく列挙オブジェクトへブロック付きメッセージを送るという
Smalltalk流のオブジェクト指向スタイルが好まれるからだと思う
for構文は手続き型スタイルであり、PerlやPythonから移ってきたばかりの
Ruby初心者は、最初for構文を使うけど、Rubyを深く知るにに従って
(forよりも柔軟な)オブジェクト指向スタイル、つまりRubyらしい
プログラミングスタイルを身につけていく
159 :
uy :2012/08/15(水) 16:39:40.59
メソッドチェインの有用性から説明しないとダメな奴がいるの?
160 :
153 :2012/08/15(水) 16:42:30.15
>>157 メソッドチェインに関しては過去スレで話題になったけど、
最大の利点は左から右へと流れる、自然に読み取れるコードが
書けることだと思う
柔軟な例とかない?
162 :
uy :2012/08/15(水) 16:52:58.51
rubyで一番よく使うのはmap、これは戻り値に配列を返す 普通に書いたら p [1,2,3].map { |x| x*2 } # => [2, 4, 6] だけど、メソッド(イテレータ)チェインする事によって、本来配列を返さない each_with_indexなども p [1,2,3].each_with_index { |x,i| x*(2+i) } # => [1, 2, 3] mapを置く事による戻り値を変えられる p [1,2,3].each_with_index.map { |x,i| x*(2+i) } # => [2, 6, 12] これをforで書くとこう s = [] i = 0 for x in [1,2,3] s << x*(2+i) i += 1 end p s for文とイテレータじゃ力の差が有りすぎて異論の余地すらない
163 :
153 :2012/08/15(水) 17:05:47.91
>>161 たとえば「あるリストを選別してソートして計算して書き出す」という
お題の場合、以下のような破壊的代入の無い流れるようなコードが書ける
list.select { .... }.sort { .... }.map { .... }.each do; .... end
もしRubyにfor構文しか存在しなければ、一時変数をゴリゴリと更新していく
ループ処理を並べた典型的な手続き型コードになる
164 :
uy :2012/08/15(水) 17:19:49.47
つまり、書き方がちょっと変わっただけである。
165 :
uy :2012/08/15(水) 17:21:52.02
実際は list.select { hoge hoge hoge hoge hoge hoge }.sort { hoge hoge hoge hoge hoge hoge }.map { hoge hoge hoge hoge hoge hoge }.each do; hoge hoge hoge hoge end となって見難いのである。 だから縦に流れるようなコードにしたほうがいい。 list.select { hoge hoge hoge hoge hoge hoge } list.sort { hoge hoge hoge hoge hoge hoge } list.map { hoge hoge hoge hoge hoge hoge } list.each do; hoge hoge hoge hoge end
166 :
153 :2012/08/15(水) 17:28:12.26
>>165 文が1行で収まらなければ、改行とインデントを使って
上から下へ流れるコードを書けばいい
工夫すれば、実用的なプログラムでもすべて80桁以内になるよ
list.select {
hoge
hoge
hoge
}.sort {
hoge
hoge
hoge
}.map {
hoge
hoge
hoge
}.each do
hoge
hoge
hoge
end
167 :
デフォルトの名無しさん :2012/08/15(水) 17:28:58.74
>>> [val*(2+idx) for idx,val in enumerate(sorted([3,2,1]))] [2, 6, 12] メソッド入れ子でもいいんちゃう?
168 :
153 :2012/08/15(水) 17:44:23.49
>>167 はPyhon自慢のリスト内包表記だけど、
同じ計算は、Rubyであれば(
>>162 を少しだけいじって)
左から右へと流れるコードになる
irb(main):001:0> [3,2,1].sort.each_with_index.map { |x, i| x * (2 + i) }
=> [2, 6, 12]
さて、どちらが読みやすいと感じるかな?
読みやすさで言えば、一時変数を用意するやり方だろう。
それはペチパー君が慣れてないだけです
慣れ言い出したら、それで全て解決だな。
自転車こぐのも慣れが必要だよ
>>168 どうみてもPythonのほうが読みやすい
174 :
デフォルトの名無しさん :2012/08/15(水) 18:15:01.60
.map{|x| x*2}. みたいに続いていく構文が若干分かりにくいんだよね {}で囲まれてると関数に見えるし ||も引数なのかなんなのか謎だし まあ慣れなんだろうけど
175 :
153 :2012/08/15(水) 18:21:38.11
>>173 >>168 のRubyコードを第三者へ説明しようとしたら
リスト定数をソートしてから添字付きで列挙し、各要素の計算値で写像する
と、左から右へと流れるコードの構成に沿って記述できる
これはトイプログラムに限らず、
>>166 のような長く大きなコードでも同じ
さて、
>>167 を第三者へ説明しようとすれば、どんな文章になるかな?
176 :
153 :2012/08/15(水) 18:25:51.31
>>174 関数に見えるというか、無名関数という関数そのものだよ
lambdaのような予約語が省略されているだけ
だから、分かりやすいのがよいなら、 一時変数用意すればよいだろ。何の説明も要らなくなるよ。
178 :
uy :2012/08/15(水) 18:46:19.62
はーーー ばぐった Rubyごみかす
短くて分かりやすいのがベストだよね!
Smalltalkの #(1 2 3) collect: [:x | x*2] って書き方をパクってこなければ どっちかっていうとPythonっぽいこっちの文法のままだったんだろうな。きっと。 do [1,2,3].map using x; x*2 end
181 :
153 :2012/08/15(水) 19:14:29.25
>>177 一時変数は悪ではないし、否定しないよ
実際に実用的なプログラムでは、あまりに長いメソッドチェーンを
途中で切って、間に一時変数を入れることがある
ただし、一度代入したら二度と更新しない
問題は変数の「破壊的代入」
たとえば
>>162 の最後にあるforを使った手続き型スタイルでは、
最初にリスト変数とループ変数に初期値を代入した後、
forループ内でこれら変数をゴリゴリと更新(破壊的に代入)している
これが可読性の悪化とコード品質の低下をまねく要因
なお破壊的代入の無さは、専門用語だと「参照透明性」と呼ばれる
破壊代入が嫌いなら、手続き型言語の世界から去ってもらうしかないね。 表面のコードに表れて無いだけで、結局mapの中で破壊代入しているのだから、一緒だよ。 書いてある場所が違うだけで、本質的な動作が同じなのだから、危険度も同じ。
183 :
uy :2012/08/15(水) 19:34:44.27
ライブラリや言語処理系側に破壊的操作をさせるのと、 自分で直に破壊的操作を行う処理を書くのは全然危険度が違うよ
だったら、関数型言語の参照透過性のメリットなど何も無いって事だな。 破壊的代入は全てライブラリにやってもらえば安全なのだから。
185 :
uy :2012/08/15(水) 19:43:25.26
頭悪いね
>>114 ブロック内の処理が一つの場合は{}で複数処理はdo end がいいってじっちゃが言ってた
187 :
uy :2012/08/15(水) 20:20:56.63
長く書くとわかりやすいって考える奴居るよなw 数学でも長い式を 一時変数に代入するのにな。
188 :
デフォルトの名無しさん :2012/08/15(水) 20:22:00.55
do | o | ってやったら外人に笑われた なんで?
189 :
uy :2012/08/15(水) 20:38:54.52
キチガイなんじゃね
>>188 lolはlaugh out loudlyで(笑)と同じように使われるから、笑えよってことだね。英語圏のコミュニティ行くとよくあるよ。
内包表記が読み難いとか言ってる奴は 数学の素養が無いって自己紹介してることに気付いてないの? かっこわるいから控えた方が良いよ
集合のアレだと気づくのに半年かかったお
193 :
uy :2012/08/15(水) 21:19:39.91
ブロック記法は任意の(ただし関数引数は一つだけの) 高階関数を記述できる分だけ汎用性があるが、 mapとかfilterとかの組み合わせに関してはリスト内包表記のほうが簡潔になりうる 細かい優劣はあれど、matzは内包表記みたいな専用構文を用意するのを嫌った PythonあるいはHaskellその他のように、頻出する記述に糖衣構文を与えるのは間違っていないと思うが、 Rubyはそれよりもブロック構文による均質性を採ったという事
なんでSmalltlakみたく{ |x| x*2 } をファーストクラスにしなかったの? そしたらもっと簡潔にも均質にもなったのに。
Pythonの内包表記はプログラミング独特の手続き的なところをない交ぜにしてるから 数学の内包表記は読みやすいからPythonのも読みやすいみたいな論法はちょっとしっくり来ないな
197 :
153 :2012/08/15(水) 21:57:54.67
>>191 自分は内包表記が読み難いとは思わないね
ただしPythonの場合、局所宣言またはクロージャがないから
せっかくの内包表記構文が台無しになっている
過去スレ19,20で議論になったコードを以下に示す
==== Haskell ====
data Option a = None | Some a
ys = [fn x | x <- xs]
where fn x =
let
h = if is_first_page x then generate_header else None
b = generate_body x
f = if is_last_page x then generate_footer else None
in
(h, b, f)
Haskellには局所宣言としてwhere節があるから、関数fnを定義することで
内包表記を含む式をトップダウンに数学っぽく記述できる
==== Python ====
ys = (Document.new(h,b,f) for x in xs
for h in [generate_header() if x.is_first_page else None]
for b in [generate_body(x)]
for f in [generate_footer() if x.is_last_page else None])
このPythonコードが何をしているかどうか、はたして一目で把握できるかな?
198 :
153 :2012/08/15(水) 22:01:18.03
参考として、
>>197 に関するRubyのコードを過去スレからコピペする
==== Ruby ====
ys = xs.map { |x|
h = if x.first_page? then generate_header else nil end
b = generate_body x
f = if x.last_page? then generate_footer else nil end
Document.new h, b, f
}
Rubyには内包表記構文は無いけれど、普通に書ける(実に初歩的なコードだ)
199 :
uy :2012/08/15(水) 22:05:42.94
いやそこは h = generate_header if x.first_page? b = generate_body x f = generate_footer if x.last_page? だろ falseだろうとローカル変数は宣言されるから
>>197 HaskellもPythonも使えるから
どっちも楽勝で読める
あとHaskellならそのケースだと内包表記じゃなくて map fn xs だな
短いし読み易い
>>195 確かGroobyはそういう仕様だったから、整合性は何とかなるんだろうけど
実際問題として誰も困ってないんじゃないの
ブロックがリテラルとして書けたとしても、どっちみちブロック付きメソッド呼び出しの時は
ブロックを特別扱いする構文を認めることになるから、特段簡潔になるというほどでも……
いわゆる無名関数を直接操作したいならブロック(Procオブジェクト)ではなくてlambdaが適当で
lambdaに関しては1.9から糖衣構文が入った
202 :
uy :2012/08/15(水) 22:09:14.11
Rubyは色々考えながら作っていってる感はあるよね
現在のrubyに
>>197 こういうの導入すれば、開発効率は一時的に上がるけど
低脳プログラマは優秀なプログラマが管理してやらないと
意味不明なコード書いて自滅するから
全体パフォーマンスを見れば入れるべきでないものもある
メソッドチェインって書いた後から付け足す事って結構あるからね イテレータやループの書き方は統一されてたほうが良い
この辺りはある程度個人の感性だけど 内包表記が多段ネストし始めるのはさすがに勘弁して下さいっていうか 読むのも書くのも面倒じゃない? Haskellはまだwhere節で後ろに押しこみ直すことでトップダウンに読めるから 場合によっては許せるかなあと。少なくとも適切な変数名が条件w
内包表記が活きるのはイテレートする変数が 複数になったときじゃねーの f n = [(x,y,z) | x <- [1..n], y <- [1..n], z <- [1..n], x^2 + y^2 == z^2]
>>201 どうして? ブロックがファーストクラスなら yield や &block なんて小細工いらなくなるし、
複数のブロックを引数として簡単に渡せるから表現の幅も広がるし、
機能も意味もずっと簡潔になると思うよ。
内包表記とか参考演算子なみのウンコやん。 Pythonってそんな誰得非効率機能が特徴なの?ウンコやん。 ついでにRubyもウンコやん。 ラムダ式とかevalが使えんコンパイル言語がなんちゃってevalを実装してるようにしか見えん。ウンコやん。
>>207 もっと具体的に実現例を出してもらわないと
よく分からない
とりあえずsmalltalkは演算子優先順位すらないクソ言語だから このスレで議論する価値無い Java以下のウンコの中のウンコ
>>197 をPythonで(RubyやHaskellのコード相当で)書くならごく素直に
def preprocess(x):
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
ys = [Document(preprocess(x)) for x in xs]
じゃないかと。まずリスト内包で書くことはない
212 :
uy :2012/08/15(水) 22:53:01.74
初心者は消えろ
みんな消えたか…
>>209 - 複数のブロックをとるメソッド呼び出しを簡潔に書ける
[1,2,3].find(lambda{ :not_found }){ |e| e>5 }
[1,2,3].find { :not_found }, { |e| e>5 }
- ブロックをレシーバーにできる
lambda{ :do_something }.should_not raise_error
{ :do_something }.should_not raise_error
- ブロックをとるメソッドの仮引数に前置&が不要になる
def meth(&block); other(&block) end
def meth(block); other(block) end
-> をタイプする手間すら億劫っていうのは ちょっと病気ですよ Rubyってそういう言語かもしれないけど
>>204 付け足す事もあるけど、途中の処理の内容を変えたり、途中で処理を分岐する事もあるよね?その場合、一時変数を使ってる方がやりやすくない?
>>143 Perl代替で一番成功してるのはPythonじゃない?
Rubyの場合、作者の思惑はともかく、現状はほぼRails専用と言っていいのでは。
Railsを便利に使うためのツールはいろいろあるけど、OSだったりミドルウェアから使うようなRuby製のツールってPerlやPythonと比べて全然無いでしょう。
>>214 >- 複数のブロックをとるメソッド呼び出しを簡潔に書ける
そういう部分でメソッド引数括弧の省略を使うのは筋悪でしょ
現在のRubyのコーディングスタイルでも、引数がある場合は原則省略しないのが主流
あるいは括弧を省略しない場合、確かにルールは単純だけど見栄えがよろしくない
hoge({|x| p x })
そしてブロック構文の仮定として
大部分の高階関数は関数引数を一つしか取らないという
観察結果があるわけだから、一つに特化した構文でも十分
>>217 ここで小物と表現していたのは、ツールと呼ぶのもおこがましいほど小さい
日常の雑務を処理するような小規模スクリプトだよ。ワンライナーも含む
例えばRubyに大量に残ってるPerl譲りの特殊変数とか、
外部コマンドのためにリテラルとか、インタプリタの変な起動引数とか、
色々あるが、おそらく全部そういう小物のためのもの
>>218 しかし関数型言語で圧倒的に利用頻度の高い
関数合成は関数引数を複数取る関数なんだよね
(.) :: (b -> c) -> (a -> b) -> a -> c
Rubyではブロックとブロックを合成して
新しいブロックを作りたくなることは無いの?
xs.map(f).map(g).map(h) を
xs.map(f.g.h) と書けたら良いと思わない?
221 :
uy :2012/08/16(木) 01:00:12.30
俺はrubi使いだけど、ちょっとrubyの考えは改めようかな 言語が複雑なことやってるから、実装もバグ取るのも大変なんだろうし 俺が普通じゃないコード書いてるからなんだけど バグ多すぎてワロタwwww 今日だけで2個踏んだったwwww なんでだろ、世界でずいぶん使ってる奴いるはずなのに、 俺はもういままでrubyのバグには自分で出したのだけで少なくとも10個以上 どうなってるのこの言語 とりあえずlambda周りとハッシュ周りに何かがある・・・
それがパーサのバグなら諦めろ Rubyのパーサはどうもならん
rubi使いはフリガナふってろ。初心者って自分のバグを人のせいにするよな。
>>218 201,209が「簡潔にならない」「具体例がないと分からない」というから挙げた例に
横からしゃしゃり出てきて一例だけピックアップして筋悪とか十分とか
結論ありきの難癖つけるってなんなのあんた?
225 :
uy :2012/08/16(木) 01:20:06.45
> なんなのあんた? 俺俺。俺だよ。
コミュ障です。
227 :
uy :2012/08/16(木) 01:30:59.89
>>223 ひとつは普通に[BUG]ってでた これはlambda周りのバグ
もうひとつは、これはハッシュ周り [BUG]とはでないが、
存在しているはずの変数の中身が一定確率で(1度のイテレーションのみ?)だけ勝手にnilになってる
nil => nil のハッシュなんか追加した覚えないのに両方nil
とりあえずイテレータでまわしてる時に中でこれをやってはいけないっぽい
task = Hash.new
task.marge(...)
task.each do
task = 新しいハッシュ
end
これをどうにかなくしたらバグらなくなった
いずれも小さなコードで再現させようとしてもバグってくれない
俺がわけわからんコード書いてるせいもあると思う もういやだ
>>227 中級者はバグを回避するコード書くのがあたりまえっえこと。
229 :
uy :2012/08/16(木) 01:35:37.63
>>227 [BUG]というのは
テメーのバグっていう意味だよw
230 :
uy :2012/08/16(木) 01:36:32.34
>>227 あ,ごめんハッシュのほうは両方nilではないわ
でも何か動作おかしいのは事実
そりゃお前、コンテナをイテレートしている最中にコンテナいじったら、 危ないだろうJK。Rubyに限らずどの言語でもご法度。
>>224 この一例が重要だから214が例示して、218が反論したんだよ
もしブロックが単独のリテラルだったなら
1. Procを簡潔に記述できる
2. ブロック構文に関わる一連の糖衣構文(yield、&block、)が
通常のメソッド引数括弧の省略という形で統一的に記述できる
3. またこの枠組みでは複数の関数引数の記述も自然にできる
それに対する反論が
1. 関数型スタイルを使いたいならProcではなくてlambdaでいいじゃん(糖衣構文がある)
2. メソッド引数括弧の省略に頼った記法は良くないとされている
逆に省略しないと記述が煩雑になる。つまり専用構文を用意するのがベター
3. 複数の関数引数は出現頻度が低いことが分かっているから重要でない
むしろ一引数に特化している事が重要 →再反論:関数合成のような例は?
っていう議論なんだから
233 :
uy :2012/08/16(木) 02:12:27.19
もういいじゃんruby最強なんだから バグがあっても使う価値があるくらいには最強
235 :
153 :2012/08/16(木) 10:04:35.58
>>211 ん、最終行にはリスト内包表記が見えるけど、気のせいかな?
それはさておき、Pythonでは「ごく普通に」関数を定義して適用するのに対して、
Ruby(および関数型言語)では「ごく普通に」ブロックや無名関数を使って
シンブルな式として表現できる、ということになった
また当たり前だけど、
>>211 のような関数を定義するコードはRubyでも書ける
これは
>>197 ,198で述べたように、関数型言語風プログラミングにおいて
局所宣言が無いというPythonの欠点、そしてRubyの優位性を示している
無名関数のあるJSの勝利ですね。
>>235 Rubyは関数内関数を素直に定義できないじゃん
Proc と lambda の違いとかキモイし
どさくさにまぎれて関数型言語と一緒にすんなよ
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 :2012/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関数等でデータを取り込みたいのですが どうしたら良いかご存知のかたいらっしゃったら教えて頂ける様お願いします
241 :
238 :2012/08/16(木) 12:32:19.66
242 :
uy :2012/08/16(木) 14:10:29.16
rubyは[]でかけるLISPとしても使えるんじゃなかった? メソッド揃えば完全変換できるかもよ procのlambda違いは有りなんだよ rubyは同じに見えて微妙に違う動作をするメソッドが数多く存在する それだけ細かい調整が標準ライブラリで効くってこと
243 :
153 :2012/08/16(木) 14:13:16.73
>>237 >Rubyは関数内関数を素直に定義できないじゃん
エッ!、Rubyは普通に関数内関数を定義できるよ???
以前(1.8)は関数内関数のスコープに問題があったけど、今(1.9)では解消されたし
・メソッド定義のネスト - Ruby 1.9.3 リファレンスマニュアル
http://doc.ruby-lang.org/ja/1.9.3/doc/spec=2fdef.html#nest_method というか、OOPLであるRubyでは、プライベートメソッドとして定義するのが一般的で、
関数内関数はまず目にすることはない
しかも(
>>211 のPyhtonのような)他LLでは関数定義を「普通」に使うけど、
Rubyならブロックがあるから一度しか適用しない関数は式の中に埋め込むのが「普通」
つまり、(関数内関数を多用せざるをえない他LLと違って)関数内関数を使う頻度は少ない
>Proc と lambda の違いとかキモイし
確かにProcとlambdaの微妙な差異は分かりづらいよね
でもRubyにはブロック構文があるから、(Procやlambdaのような)明示的な無名関数宣言を
使う頻度は比較的少ないし、使うケースでもどちらか一方を使えば済むことが多い
また、言語の微妙な弱点を避けて、良い点を引き出すことに注力することが
(Rubyに限らず)中級プログラマのたしなみの一つだと考える
>どさくさにまぎれて関数型言語と一緒にすんなよ
え、一度も「Rubyは関数型言語である」とは言ってないけど.....???
「関数型言語風プログラミングには(他LLよりも)Rubyは明らかに優れている」と主張している
> つまり、(関数内関数を多用せざるをえない他LLと違って)関数内関数を使う頻度は少ない 関数型言語でも関数内関数を多用するけど...? 「関数型言語風プログラミング」って何? それってただの「Ruby風プログラミング」なんじゃないの?
246 :
uy :2012/08/16(木) 14:43:56.36
rubyの仕組みがなんにもわかってないんだな それは結局selfが省略されているに過ぎない rubyはすべてがオブジェクトであり、インスタンスは特異メソッドをもつ事が出来る self.define_singleton_method :uy do p :uy end お前らの大好きなシングルトン でもこの設計はゴミカスだな 俺様個人の意見を言わせてもらうならdef内のdefは使わないほうがいいよ 普通にlambdaで ->{ } 書いたほうが短いんだからそっち使えばいいじゃん
247 :
uy :2012/08/16(木) 14:48:03.05
>>246 すいません、思いっきり間違っていました忘れてください 旅にでます
248 :
153 :2012/08/16(木) 14:50:55.63
>>244 わざわざideon上のコードを引用しなくても、Rubyの振る舞いは
>>243 で示した
リファレンスマニュアル「普通のメソッド定義式と同じ」の通りだよ???
確かに、理想的には内側のメソッドが外部から隠蔽されたほうが望ましいことは認める
これが
>>211 のPythonコードのように、関数定義を多用するのが「普通」、
あるいは関数定義を多用「しなければならない」言語であれば、致命的な欠陥になる
でも
>>243 で述べたように、Rubyでは関数内関数の必要性がほとんど存在していないんだ
もしも可能であるならば、ブロックやプライベートメソッド定義では読みづらかったり
冗長だったりするけど、関数内関数であれば素直に表現できるコード例を示してほしいなあ...
rubyはそこら中が関数といえば関数だからね do 〜 endって、でてきたらそれ全部関数だよ
だから関数型言語では関数内関数を多用するって言ってるのに... 関数型言語と違うスタイルなんだから「関数型言語風プログラミング」とか言うなよ
> 確かに、理想的には内側のメソッドが外部から隠蔽されたほうが望ましいことは認める 理想的にはじゃなく、ここが一番大事なところ
252 :
uy :2012/08/16(木) 15:08:18.16
proc Proc.new lambda ->{ } def define_method define_singleton_method Module.new / Class.new / Struct.new こんくらいかな?メソッド内で関数のようなものを定義する方法 動作違うものが、これだけあるんだから動作調べて好きなの使えよ? defしか使えないバカなの?
>>248 > もしも可能であるならば、ブロックやプライベートメソッド定義では読みづらかったり
> 冗長だったりするけど、関数内関数であれば素直に表現できるコード例を示してほしいなあ...
なんだ、読みづらさや冗長さの観点で批判してたのか?関数型うんぬんは関係なく?
じゃあ
>>198 に比べて
>>211 は読みづらくて冗長だからダメって言いたいんだな?
そういうことは最初から言えよ
はよ旅立て。
255 :
153 :2012/08/16(木) 15:41:10.73
>>245 >関数型言語でも関数内関数を多用するけど...?
うん、関数型言語では関数内関数でプログラムを構築していくのが普通だね
でもRubyはオブジェクト指向言語であり(
>>243 の最後で書いたように)関数型言語ではないから、
モジュールやクラスでプログラムを構築するのが普通なんだ
>「関数型言語風プログラミング」って何?
「(破壊的代入を含む)副作用を避けた参照透明性のあるプログラミング」(
>>181 も参照)
これは関数型言語のパラダイムと同じ
もちろん(関数内関数ではない)Rubyでは、入出力や効率(性能や資源)といった理由から
完全に参照透明性のあるコードは書けないけど、それでも副作用を極力避けたり、
参照透明性のある部分とない部分を意識的に使い分ける、あるいは副作用のあるコードを隠蔽する
現実に実用的なテキスト処理プログム開発で試したところ(全体で約20Kstep)、
8割は参照透明性のあるコードで実装することが可能だった
残る2割の部分は、トップレベルの(入出力を含む)メイン処理モジュール群と
最下層の副作用をカプセル化(隠蔽)した内部ライブラリ群になる
256 :
avacript :2012/08/16(木) 16:27:56.11
関数型扱えない言語は終わってるよな rubyとか
257 :
uy :2012/08/16(木) 16:51:25.73
rubyは関数型プログラミングも出来て便利だよな
258 :
デフォルトの名無しさん :2012/08/16(木) 16:55:24.10
でもOSやミドルウエア、あるいはビジネスアプリにいたるまで 日本製ソフトのシェアはゼロに等しいよね。
259 :
153 :2012/08/16(木) 16:57:54.51
>>250 >関数型言語と違うスタイルなんだから「関数型言語風プログラミング」とか言うなよ
うん、ググってみたら確かに「関数型言語風プログラミング」は風変わりだった
では、一般的な「関数型プログラミング(functional programing)」と改めよう
260 :
153 :2012/08/16(木) 17:09:48.97
>>251 >理想的にはじゃなく、ここが一番大事なところ
そう、クロージャやまともなラムダ式の無いPythonのような手続き言語における
関数型プログラミングでは、関数内関数こそが一番大事だよね
Rubyはというと、(
>>248 で書いたように)OOPLでブロックがあるからそれほど大事じゃないけど....
ラムダの文法を def 1; end にして、 メソッド定義は @method = def 1; end こんな感じの文法でよかったんだよ。 func = def 1; end こう書けばfuncはローカル変数だから外から見えないし。 同じようなものが一杯ありすぎる。 C++みたいに厳しいパフォーマンスが求められるってわけでも無いのにさ。 こんな行き当たりばったりな言語を良しとしている人は、 さぞプログラムも行き当たりばったり何だろうな。 かといって、ラムダの弱いPythonは土俵にすら立ててないのだが。 普及しててまともなLLって無いのかね。 もしJSにブロックスコープがあったなら、かなり良い言語になりえたんだがな。
262 :
uy :2012/08/16(木) 17:42:47.29
>>261 おいバカ
これ
lambda ↓
->{ }
これlambda
ラムダしか知らないのかよお前はw
旧世代的なラムダ脳にはリスト内包表記、イテレータ、ジェネレータ、デコレータを上手く使うPythonicなコードは理解出来ない なんとかラムダで書こうとするのは、どの言語でもCみたいなコードを書く奴と何も変わらん
265 :
153 :2012/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: 洋書
http://www.amazon.co.jp/The-Definition-Standard-Robin-Milner/dp/0262631814/ >もしJSにブロックスコープがあったなら、かなり良い言語になりえたんだがな。
これは同感だね
さらに条件分岐(if や switch)が文(statement)ではなく式(expression)であることも大切だと思う
そう思ってしまうのはクロージャがないC脳だから。 内から外へのスコープを区切るものは関数しかない、という単純さが損なわれる。 クロージャがあるからそれだけでも既にややこしくなってるのに。
267 :
153 :2012/08/16(木) 18:11:28.09
268 :
デフォルトの名無しさん :2012/08/16(木) 18:35:16.39
つまり、日本国はこの町並みを維持できる限り安泰ということだから、 大声張り上げて街中をデモ行進する人は宇宙空間にでも行って欲しい。
269 :
153 :2012/08/16(木) 18:39:03.55
>>265 のカキコの中で、最後の「>もしJSにブロックスコープがあったなら、」以降を取り消す
ブロックスコープをスコープと早合点していた
271 :
153 :2012/08/16(木) 18:53:18.70
>>270 リンク先を眺めたけど、これらの例というのは(説明も何も無いから)
RubyでもPyhtonでも同レベルで簡潔に書けるコードに見える
これらの例について、いかにPythonが優れているかを「
>>270 自身の言葉で」語って欲しい
あるいは
>>197 ,198のように、明らかにPythonが優位性であることが分かる例を希望する
これじゃバトルにならんのだよ....
>>271 別にRubyが劣ってるなんて言ってないよ
馬鹿が譫言のようにクロージャクロージャと連呼してたから
ああ、こいつはPythonのことをあまり知らないんだなあ、と思っただけ
Pythonが優位であることが分かる例か。シェアだな。
274 :
153 :2012/08/16(木) 18:56:07.05
>>269 (
>>265 )を再訂正 ....orz
X: スコープと早合点していた
O: ブロックと早合点していた
なお
>>197 ,198でPythonが明らに劣勢であることを示せてると思ってる所にも同情する
276 :
153 :2012/08/16(木) 19:00:35.26
>>272 では、そのPythonのクロージャとやらを使って、
>>211 を書き直して欲しい
Pythonにはクロージャがあるから、関数定義無しに書けるよね?
>>273 それに伴うライブラリの充実とかコミュニティの活発さはあるね
そもそも関数定義無しに書けなきゃダメって 勝手にルール作ってるところがおかしい
なぜ関数を定義したらいけないのか理解できない
280 :
デフォルトの名無しさん :2012/08/16(木) 19:05:32.80
領空侵犯機 ロシア約68%、中国約25%、その他約7%
281 :
153 :2012/08/16(木) 19:09:44.52
153はダブルスタンダードすぎる
>>279 そりゃ明らかに面倒だろ。
いまどき、あのC++にすら無名関数やラムダがあるのに。
あの保守的なC++が取り入れたんだよ?
しかも文法を [&](int i)-> int { return i; } って糞キモくしてまで取り入れた。
今までのC風の関数のスタイルを捨ててまで、取り入れたんだよ。
今までになかったこと。それぐらい無名関数やラムダは求まれた。
int func( int i ){ return i; }
これが
auto func = []( int i ) -> int { return i; }
こんなになっちゃったんだよ。こんなに見た目が変わったんだよ。
それを受け入れたんだよ、あのC++er達が。その意味を考えろ。
>>283 いや上の例を見ても明らかとは思えないけど
別にC++erだって全ての関数をラムダ式で書くわけもなく、普通に関数定義するし
>全ての関数をラムダ式で書くわけもなく、普通に関数定義するし 普通の関数もかけるのは当たり前で、 それだけじゃつらいからラムダを導入したって話だろ。 論点ずれてるだろ。何言ってんだか。 ラムダが要らないものならわざわざ変な文法作ってまで導入するかよ。
287 :
153 :2012/08/16(木) 19:26:19.29
>>278 ,279
あらゆる関数型言語であれば関数定義無しにかけるから、
それは「関数型プログラミング」の特徴の一つである、という理屈
だってPythonだけが関数定義が無ければ書けないんだから、
マイナス評価されても当然だろ?
というかさ、もしルールに不満があるならそれを最初に主張すべきだった
具体的には、
>>235 の指摘に対して即座に反論すればよかったのに....
いろいろゴネたあげく、技術論で反論できないからルールに不満を言うのは
カッコワルイと思うよ
>>287 つまり、実用上では何の意味もない所で優劣を競ってるのか?
昔からお題を出し続けてる奴だろうけど、出題がゴミすぎるよね
実用上問題がなければC++にラムダが導入されるわけ無いだろ。 あんな変な文法にしてまで、無理にでも導入したんだぞ。
ラムダの有用性は、このお題では1ミリも示せなくても、いくらでもあるだろ C++がさらに糞言語化したからラムダは有用!とか言わなくてもさ
「こんな書き方も出来る、こんな書き方も!」 で?もっと身のある話はないのかよ
293 :
デフォルトの名無しさん :2012/08/16(木) 19:55:52.82
>>287 あれ?お前
>>255 でRubyはOOPLだから関数内関数無くても良いんだとか
言ってなかったっけ?
関数型言語では関数内関数あるんだからRubyではdefの入れ子で
関数内関数が定義できないのはマイナス評価されても良いの?
296 :
uy :2012/08/16(木) 20:16:17.97
それはマイナスだよ ゴミ
(1)Pythonのlambdaじゃ書けなくて (2)関数を定義したら冗長になってしまうほど短い そんな例題があればいいんだよ
153は出す御題もゴミの上に 都合の悪いレスはスルーするというゴミっぷり ゴミの中のゴミ
299 :
uy :2012/08/16(木) 20:23:21.31
勘違いされやすい文法はゴミカスだ
300 :
デフォルトの名無しさん :2012/08/16(木) 20:24:33.39
私が改造したソース帰ってこないじゃん。
301 :
uy :2012/08/16(木) 20:33:38.40
ゴミだからだろ
302 :
デフォルトの名無しさん :2012/08/16(木) 20:38:52.33
8時半だしお家かえる
>>287 いやいや、スレ読んでみたら、
>>211 に対して後付けで
関数定義はダメって言い出してるけど?
後付けでルールを追加するのってカッコワルイね
304 :
uy :2012/08/16(木) 20:53:09.03
rubyのメソッド内メソッド定義はカス しかしそれをマイナス点にしても最強なのだった
Rubyはひたすらendでも打ってろ
306 :
153 :2012/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
関数型言語の話をしたいだけなんだな、こいつは
お題がクソだと散々言われてるのに 話を引っ張る空気読めないっぷりがウケるw
309 :
uy :2012/08/16(木) 21:15:05.50
たまに関数型言語厨が迷い込むよね 同じ奴なんですか?
310 :
153 :2012/08/16(木) 21:19:31.47
>>294 >関数型言語では関数内関数あるんだからRubyではdefの入れ子で
>関数内関数が定義できないのはマイナス評価されても良いの?
正確には「関数内関数定義で内部の関数が外部から隠蔽されない」だね
もちろんこの点はRubyのマイナス評価であると認めるよ
また、アンカも間違いで(
>>255 ではなくて)
>>243 じゃないかな?
さらに言えば、
>>297 自身も(
>>243 ,248から)引用しているように、
このマイナス評価はRubyにとっては致命的な欠点ではない
もしも致命的ではないという意見が不満ならば、
>>248 の最後でリクエストしたように具体的なコードで語って欲しい
論よりコードだ
>>310 > もしも致命的ではないという意見が不満ならば、
Pythonの関数定義が致命的だって話は何時同意を得たんだ?
少なくとも
>>211 は関数定義で全く問題ない
せめて
>>297 を満たす御題くらい作れよ
論よりコードなんだろ?
>>310 Pythonユーザなら誰も書かないようなコード貼っといて論よりコードは流石になかろう
313 :
153 :2012/08/16(木) 21:23:30.23
>>289 その「都合の悪いレス」とやらのレス番を書きなさい
そうすれば反論してあげるよ
それとも反論されるのが怖いヘタレかい?
関数型言語としてどれが素晴らしいかって、HaskellとかSMLが素晴らしんじゃないでしょうかw でも関数型言語スレって盛り上がらないんだよな。TIOBEのランキング見れば分かるけど そもそも利用者が少ない。LispはまだしもHaskellとかMLとかは、マイノリティすぎる 結局、関数型言語としての評価軸って対して価値がないのかなと思う まあノイジィマイノリティのノイジィ具合は全てのパラダイムの中で群を抜いてるだろうけど それに対応してRuby、Pythonその他の言語にも導入されてる機能もあるし 導入された分は使える範囲で使えればいいと思うし、それで足りないなら関数型言語を使うしかないけど そういう選択をする人が少ないのも事実で、関数型言語でなければならないという観点は間違ってる気がする
315 :
153 :2012/08/16(木) 21:33:07.50
>>303 リスト内包表記(Haskell:
>>197 )にせよラムダ式(SML:
>>306 )を使うにしても、
関数型言語プログラマであれば「再利用されないコード断片」は
関数定義無しでも書けるのは「常識」なんだから、そんなルールはわざわざ書かなかった
今の議題は「LLにおける関数型プログラミングの適性比較」なんだよ
「LLにおける関数型プログラミングの適性比較」というスレでやれば?
えーその議題いつ決まったのーーーー!!! さすがに突っ込ませてもらうわ。 とりあえず君は関数型言語の巣へ帰った方がよいね。
>関数型言語プログラマであれば (笑)
319 :
uy :2012/08/16(木) 21:36:45.56
関数型言語でスクレイピングしたいんですけど あ、やっぱあいいや
>>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 :2012/08/16(木) 21:49:45.82
>>312 では、議題(
>>315 )に沿った「Pythonユーザなら誰でも書くコード」を提示しなさい
>>272 氏がPythonにもクロージャは存在すると指摘してくれたので
>>276 でコード例をリクエストしてレスを待っているんだけどな....
残念ながら、今のところ具体的なPythonコードを書いてくれたのは
>>211 一人だけだ
過去スレ19,20でも結局は一人だけだったし、もしかして同じ人かなあ....
俺RubyもPythonもHaskellもOCamlも仕事で使った事在るけど こんなスレで関数型言語アピールとかアホとしか思えん 関数型言語が好きなら黙って使ってろっての
なんでお前に命令されなきゃいかんのか分からんし なんか前もお前の間違いを訂正したのは 「ああ、そうなんだ、ふうん。でも俺の主張は間違ってない。じゃあこのお題はどうよ?」 みたいな対応しかしなかったし、関わるだけ無駄。関数型云々について、いつまで続けるんだ? もう結論出して良いよ。それでLLの優劣なんて何も決まらんから
覚えた言葉をすぐに使いたがる小学生。
>>321 まず議題が承認されてないじゃん
というかPythonいけてねえって主張するあなたのほうに立証責任がある
「なんでPythonで(名前つき)関数定義するのがよろしくないのか」を示すべき
315は関数型言語で遊ぼう!みたいな本が大好きな関数型マニアだってことは分かるけど このスレで何をしたいのかは理解できない
327 :
デフォルトの名無しさん :2012/08/16(木) 21:57:21.87
このスレ住民は現実的な意見が多いな 関数型は効率というベクトルからは外れた趣味だもんな
Pythonディスりたければ、俺みたいに、 あの糞みたいな、ネスとスコープの仕様をつつけば良いのに。 あれだけは生粋のパイソニストでも擁護不可能だからね。 擁護しようものなら、 今になってnonlocal追加した事実に反してしまうしな。
というか、ある程度はそのプログラミング言語の用途とかが競合しないとさ
ガチでぶつかるのはPythonとRubyぐらいでしょう。 しかも外国VS国内みたくなってるから余計に。 他の言語は大体用途が被らないし、 その用途でのスタンダードを確立しているものばかりだからな。 shとJSで喧嘩するのは無理。
>>328 nonlocalの追加は、リストにする手間が省けたという意味では確かに改善だけど
スコープ自体は問題なくね。だからこそnonlocalが要るんだし
332 :
153 :2012/08/16(木) 22:08:05.65
>>311 >せめて
>>297 を満たす御題くらい作れよ
え、
>>197 ,198,306の御題は
>>297 を満たしているけど、何か?
> (1)Pythonのlambdaじゃ書けなくて
==> わざわざ複数の引数を渡しているから、Pythonのlambdaじゃ書けない
(タプルを使えば書けないことも無いかもしれないけど冗長になる)
> (2)関数を定義したら冗長になってしまうほど短い
==> 1カキコ内に収まるほどのコードなので、十分に短い
しかも再利用されないコード断片なのだから、関数定義が冗長なのは明らか
(Pythonの無名関数(=ラムダ式)って、一体何のために存在してるの?)
また、お題について不満があるなら、それを最初に(
>>198 の直後に)主張しないとね
散々ゴネたあげく後出しでブーブー文句を言うのはカコワルイよ
>>328 nonlocal(酷い名前だ)を追加したPython3ではネストスコープの問題は無いの?
じゃあ前もって言うけど、今後二度とクソレスすんな
皆が153みたいに粘着してないんだから、後から文句言うなとか文句言ってる時点で頭おかしい 間違いは素直に認めろよ
間違いを認めるなんて無理だろうから 目の前のPCを破壊して二度と書き込まないでほしい
>>330 RubyとPerlは?
というかPerlが完全に空気化してるのは、負けたからか?
まだそこそこ使われてるイメージだけどなあ
339 :
153 :2012/08/16(木) 22:16:29.83
>>314 >関数型言語でなければならないという観点は間違ってる気がする
ああ、これについては同感だね
現状のどの関数型言語も文字列、パターン、ハッシュの操作に難があるから、
現行LLであるPerl/Python/Rubyを置き換えるには無理があると思う
ただし、関数型言語にも良い特性がある訳で、実際に(LLを含む)多くの言語に影響を与えている
だから自分は「LLにおける関数型プログラミング」に注目している
>>331 意味わかんねー。問題があったからnonlocalが追加されたんだろ。
しかもnonlocalが有るんなら、代入のある無しでスコープが変わる糞仕様は要らないだろ。
互換性のために残っちゃってるけど。
代入が無ければネストスコープ。
代入が有ればローカルスコープ。
しかしnonlocalが有れば代入があってもネストスコープ。
はぁ、糞ややこしいな。
代入の有る無しと、nonlocalの有る無しの、
二箇所を確認しないといけないなんて。
直感的でも無いしな。
しかし、代入の有る無しでスコープ切り替わるってのは意味分からないよな。
代入は「代入」だろ。代入に別の意味持たせるなよ。
>>340 いや互換性はもはやないよ。あと、代入するならnonlocalだよ
>>332 再利用しないものに名前を付けるのが冗長だというなら
>>197 にあるh,b,fという一次変数も冗長で不要
>>333 ああ、問題残ってるよ。代入の有る無しでスコープが切り替わる問題が。
互換性のためか残っちゃってるけど、
nonlocal追加したんなら、思い切ってこの糞仕様は廃止すべきだったな。
nonlocal有りならネストスコープ、無しならローカルスコープ。
一貫してそれでよかったんだよ。シンプル、単純、分かりやすい。
スコープ調べるのに代入の有る無し調べるとか意味わかんねー。
折角nonlocal追加したのに、なぜに。
二箇所調べなきゃならなくなったから、状況はより悪化したともいえる。
>>344 ちょっと待てよ。nonlocal追加以前はそもそも代入不可だろ
代入と宣言の区別もつかんアホがスコープ批判か...
348 :
uy :2012/08/16(木) 22:27:35.56
perlは終了 jsは用途が違う PHPはいわずもがな pythonは日本じゃ流行らない rubyですね
>>346 いや、代入できるよ。ローカルスコープの変数になるけどな。
代入があっても、nonlocalならネストスコープ。
nonlocal無くても、代入が無ければネストスコープ。
あー超ややこしいね。
単に、nonlocal有り/無しで、ネスト/ローカルが切り替わる
方が直感的で良いよなぁ。
>>349 いや、nonlocalを何のために使うのか理解してないでしょw
>>349 その側の変数には代入できない。それを可能にするのがnonlocal
352 :
153 :2012/08/16(木) 22:34:31.89
>>335 え、単純なステップ数で比較しているの!
こちらとしては「再利用されない(一度しか使われない)コード断片を
わざわざ関数として定義するのは無駄(=冗長)」と言ってるだけだけど、これは非常識なのかな?
というかPythonの無名関数(=ラムダ式)は、いったいぜんたい何の為に存在してるんだろう?
ああPythonのラムダはやっぱり「まがい物」なのか
>>351 訂正:その側→外側
globalに似てて、globalとも違うから、いいネーミングだと思うけどなあ
>>350 その変数がネストスコープであることを示すためだ。
しかし、nonlocalが無くても、参照のみならネストスコープだ。
ここがまずおかしいね。普通、ローカル変数となるべきところだ。
そして、(代入無しで参照しているから)プログラムはエラーで落ちなければならない。
普通そういう動作が求められるところ。
355 :
デフォルトの名無しさん :2012/08/16(木) 22:40:05.99
そんな基地外スコープの言語がつかわれてる理由ってなに
>>351 なぜnonlocal無しで代入は出来ないのに参照は出来るんだ?
そこがまずおかしいと思わないと。しかも完全なリードオンリーならまだ使い道もあるが、
実際にはメンバ変数を変更したりは自由なんだからCのconstの代わりとしても役に立たない。
別に狙ったものでもなんでもなくて、代入で宣言を代用したことによる単なる文法上の不備でしかないからな。
しかし代入の有る無しでスコープの変わるカス仕様を擁護できるとはおめでたい。
そういう頭じゃないとPythonに惚れ込むのは無理なのか。
357 :
uy :2012/08/16(木) 22:44:18.14
なんかpython使いたくなってきた スコープは基地外なほうが便利なこともあるんじゃない
2.xは外側の変数を書き換えられなかったけど、3.xは明示すれば書き換えられるようになっただけじゃね なにを混乱するんだろう
>>356 局所変数を定義したら外側のスコープの
同名の変数は直接見えなくなる
Cで書けばこういうことね
int x = 0, y = 0;
{
int x = 1;
printf("%d,%d\n", x, y);
}
printf("%d,%d\n", x, y);
こんな簡単なことも分からない馬鹿って生きてる意味あるの?
>>352 Pythonのラムダ式は要らんね
ただ再利用されなくても関数として定義するのは言語問わず無駄ではないよ…マシンには無駄かも知れないが
コードを読む際には処理の区切りや、その処理の区切りにとって必要なデータは何なのか、などが明確になる
361 :
uy :2012/08/16(木) 22:48:23.51
>>359 だからそれがカス仕様だって言ってるんだ。
>局所変数を定義したら外側のスコープの同名の変数は直接見えなくなる
それはごもっとも。しかしだ、問題はそこじゃない。
変数の宣言に代入を代用しているから、代入しようとすると宣言する羽目になって、
お前の言う、「局所変数を定義したら外側のスコープの同名の変数は直接見えなくなる」
に陥ってるんだ。だから変数の宣言と代入が別の構文なら、こういう問題は発生しない。
宣言せずに、代入だけすれば、その側のスコープの変数に代入できるからな。
そこがまずミスってるわけ。そんで今になってnonlocal追加。余計にカオス。
他の言語で見られるようなvar方式の方がましだったってわけ。
363 :
153 :2012/08/16(木) 22:52:20.86
>>341 お、わざわざスレを立ててくれたんだね、ありがとう
早速、Python関連サイトへのリンク集をカキコしておいたよ
では、このスレでは議題が「Pythonにおけるnonlocalの是非」へと移ったからみたいだから、
(このスレでは)しばらくROMにまわることにする
いや、そんなに混乱することコレ?w なんか本当に混乱して全く理解できない状態で説明してるんだよね
>>363 お前の引き出しの少なさに唖然とするわ
というかお前Pythonのこと何も知らんくせにPythonのリンク貼るなカス
var: 局所変数を宣言するときに付ける nonlocal: 外側のスコープの変数へ代入するときに付ける 局所変数の宣言の方が沢山書くんだからvarの方が冗長 ていうかnonlocalが無ければ外側の変数に代入できないんだから 混乱するのはアホだけだ
>>363 良かったね^^
これで思う存分お前のやりたい議論が出来るね^^
簡単に言えば、「何で代入したいだけなのに勝手に宣言しちゃうわけ?」ってこと。 代入と宣言はまったく別のものだろ。 代入は代入だし、宣言は動的型言語の場合スコープを決めるためのものだ。 一緒くたにしてしまって、使い分けできなくなってしまって不便になったものだから、 あとからnonlocal追加。塩と砂糖を混ぜておいて、後から塩だけ分離するようなものだ。 はじめから混ぜるな。あたりまえ。
いやだから、nonlocalの追加で解決したんだろ?w
>>366 自分で書く場合は混乱しない。問題はは他人のソースを読む時。
ある変数のスコープを調べたい時、nonlocalと代入の有る無しの両方を確認しないと
スコープが確定しない。
そうかなあ、混乱するコード見せてよ
372 :
uy :2012/08/16(木) 23:03:18.38
uyを分離するにはpythonの話題にすればいい だったら最初から混ぜるな!
>>370 > 自分で書く場合は混乱しない。問題はは他人のソースを読む時。
いや、お前明らかに混乱してたろww 面白い奴だな
>>369 解決していない。代入の有る無しでスコープが変わる糞仕様は残ったまま。
代入で宣言を代用する、アホな発想は残ったまま。
便利な万能調味料を作ろうとして、塩と砂糖を混ぜたのが今までのPython。
使い分けできなくなって困ったから、そこから塩だけ分離する機能をつけたのが新しいPython。
しかしだ、小学生でも言うぜ?
はじめから混ぜなければ、あとで分離する必要は無いのにって。
宣言するの面倒じゃん
代入でスコープが変わるって何? 代入で宣言するから、宣言でスコープが決まるだけでしょ
nonlocalも宣言だから、別に矛盾してないよなあ
>>375 なぜか知らないが、君がそう勘違いしているだけ。
たとえ宣言をしなくて良かったとしても、
どの道、初期化してからしか変数を使用できない。
さすがに初期化するの面倒じゃん、とは言えないでしょ。
初期化は必ず必要。だから、初期化するついでに宣言すればよい。
手間は変わらないということ。varが嫌なら、i @= 0とかでも良い。
何でも良い。普通の代入と宣言付き代入の区別さえ付けばよい。
>>379 i @= 0とかいくらなんでもキモすぎだろ。そういう言語があるの?
>>376 なんで代入で宣言するんだよ。宣言無しの普通の代入は?
代入と宣言は別のものだろ。代入は代入。宣言はスコープを決めるもの。
ぜんぜん動作が違う。なぜ両者を混ぜる?そしてなぜ後で分離する(nonlocal)?
ナンセンスだろ。馬鹿げてるって分からない?
> i @= 0 Perlに倣ってシメジ代入演算子と命名しました
PythonはNoneにappendしたらリスト作ってほしい
リストとNoneを返す関数の返り値にappendするならいいけど それ以外の場合はろくなことにならない悪寒
>>381 便利だからだろ。それで必要な所だけで宣言するようにしたんだから
お前の案よりエレガントじゃね
>>380 宣言が i := 0 って言語なら有る。
@=はキモいけど、今回あえてそう書いたのは、
プロポーショナルフォントだと「:」が潰れて:=と=の区別がつきにくく、
掲示板に投稿するのには向いて無いから。
でも実際なんでも良い。普通の代入と宣言付き代入の区別さえ付けば。
動的言語を使わないほうが精神衛生上良いのでは…
Pythonのネストスコープに欠陥がある!なんて言うから楽しみだったのに 自分の好みを連呼するだけの馬鹿だと分かってガッカリ
のんろーかるってなんぞ?
nonlocal使った具体的なソースがみたい
さぁ、これでまたパイソニストの数が減ったかな。 ラムダは貧弱だし、スコープはおかしいし、 単純にラムダ多用が当たり前の今の風潮に向いて無い言語なんだよね。 ラムダはスコープが重要になってくるし、しかもそのラムダ自体が貧弱なのだから。
はい勝利宣言はいりました
こりゃラムダ
これだけは断言できる 今日一日で関数型言語を嫌う人間は確実に増えた
Pythonのリスト内包は見にくくて、Rubyの関数型の記述は見やすいの?
仮にPythonのラムダが強化されて無名関数が作れるようになったとしても、 こんどは代入の有る無しでスコープが切り替わる変な仕様が牙をむいてくる。 ことラムダに関してはPythonは2重に詰んでいる。 逆にその辺を何故かうまくかいくぐったJSの先見の明には驚かされる。 シンプルで素直な言語仕様が生きたな。 Cにも通ずるものがある。
398 :
デフォルトの名無しさん :2012/08/17(金) 00:13:45.80
c = 0 def f(): nonlocal c c += 1 print(c) f() つかこれは動かないけどw メソッドの内部にはない変数はまた別ってこと?
それはnonlocalじゃなくてglobal。Python2.xから出来る
400 :
デフォルトの名無しさん :2012/08/17(金) 00:19:40.50
401 :
uy :2012/08/17(金) 00:21:22.59
うえ ちょっと試したけどPythonきも これはrubyで余裕で勝てる
デコレータは使い方が色々あって重いし、なくても当面はなんとかなるからな チュートリアルに載ってないことなんてナンボでもあるべ
いちおー言っとくけど重いってのは学習のことね
ちなみにPythonスレに2タブのコードを貼ると掘られます
代入で宣言を兼ねるのは問題が全く無いワケではないが、彼はそれについて全く説明できていないんだよなあ。 面白いから答え書かずに眺めておこう。
はいはい、頭良いフリはいいからROMってろよ
>>405 代入で宣言を代用する方式は、ネストスコープを持つ最近の言語には殆ど採用されて無い、
というか、俺は見たことが無い。優れた方式ならもっと採用されているはずだろ。
採用されてれば優れてるのか Python自体はあちこちにそこそこ採用されてるからやっぱり優れた言語なんだな
>>410 どこが詭弁なんだよ。
Pythonが出来た時代にはこんなにラムダが多用されるようになるとは
夢にも思わなかったんだろうよ。
だから、インナー関数は殆ど使われないし、ネストスコープもそんなに現れない、
そういう前提で、代入で宣言を代用したんだろう。
ところが、世の中ラムダだらけ、スコープだらけになってしまった。
時代を読むのは難しいが、ネスケ社が片手間に作ったJSがその辺上手に切り抜けているから
言い訳は出来ないわ。やはり言語仕様はシンプルで素直なのが一番。
当時の常識で変に捻ると後々邪魔になる。
JSのどこがシンプルなんだよ。JSの本にもクセがあると書いてあるくらいなのに まず、Pythonでも普通にラムダは使うし、他の言語より使わないとしたらそれはリスト内包表記が便利だからだよ
JSの何をもってシンプルと言ってるのか分からない 自分が好き=シンプルなのか?
>>413 Pythonのラムダって、あの式しか書けないやつですか?
>>413 どっちかっつーと機能制限のせいだと思う、というか自分はそれがあるから内部関数のほうが多い
今は三項if式があるから昔よりマシになったけど、文が書けないってのは何気にキツいと思う
CoffeeScript はプログラミング言語のひとつである。コードはJavaScript のコードに変換される Ruby や Python、Haskell から影響を受けたシンタックスシュガーの導入により、JavaScript に比べ簡潔さと可読性を向上させた ワロタ
ラムダを多用ってどこの誰が多用してんの?
最近の言語と言ってるが、最近の言語で言語仕様がシンプルなんてなくね? JSがシンプルというのも甚だ疑問だけど、他の最近の言語だって全然シンプルじゃないだろ
>>419 関数型では多用するけど、手続き型では代替手段を使うことのほうが多いよね
PerlやRubyはブロックだし、Pythonはforイテレータやリスト内包、ジェネレータ式や内部関数
強いて言えば無名関数リテラルでやるJSくらいじゃないか?当て嵌まるのって
俺は式の途中で関数オブジェクトが入るべき場所に 巨大なラムダをねじ込む方が明らかに醜いと思うけど
>>421 え、このスレでは、Rubyのブロックをラムダって言ったら怒られるわけ?
式で表現できるくらいならまだしも、ある程度まとまった機能を分けるのは当然のことだと思うけど 関数定義してはいけないという宗教の人は酷いコードを書いてそうだな
俺様から言わせてもらうとラムダとオブジェクト指向は相性悪いと思うよ ある程度まで大きな処理になるならラムダじゃなくてクラスにするべきなんだよ そこら辺のさじ加減を間違えるとゴミ
>>424 嫌だよ。俺の感覚だと、ラムダはfor文やif文に続くブロックと同じ扱いだから。
あそこを名前つけて関数化したいやつはおるまい。
それはお前の感覚が完璧に間違ってるだけ
>>423 Rubyのブロックはそれ自体ではまだ値ではないからな
オマケにラムダは別で存在するし
むしろrubyのブロックは標準では(ラムダ)lambdaじゃなくてprocだよ lambdaを渡す事も出来るってだけで別物
>>429 いや{|v| }の段階ではまだprocですらないだろ
ただのメソッド呼び出しの一部でしかない
431 :
デフォルトの名無しさん :2012/08/17(金) 08:56:29.28
Ruby(笑) スレタイ見えない馬鹿がいる
良くも悪くもRubyはこのスレの主役
スレタイにRubyが入っていないのは永久欠番だから?
勝ち抜け
436 :
uY ◆gXFLM6waxs :2012/08/17(金) 11:22:36.94
使えば使うほど他言語との差を感じる rubyをはじめ動的言語は型情報がない分、ソースを書くのが楽だから 静的言語だと作業時間や労力的に見て 絶対にかけないようなシステムが構築できると思う 人間は例外なくプログラミング言語を完璧には使いこなせないので 「理論的に出来る」じゃ、出来ないんだ 動的言語がオモチャだなんてとんでもない 型エラーで悩まされることのない動的言語はやばいぞ
ねぇーよ。動的言語なんてIDE直結の開発できねえから大規模な開発なんて不可能に決まってんだろ。 コーディングの量が多くても潜在バグを探知できるから静的型付けは生産性が高いんだ。 JavaScriptでバグがでようがでまいがどうでもいい箇所しか使い道なんて無いんだよ動的型付けは。 RubyやPythonでサーバーサイドなんえ実用性とか全くない。
438 :
デフォルトの名無しさん :2012/08/17(金) 22:39:12.61
IDEだと静的言語でも今時のテンプレートバリバリのソースとか うまく扱えないだろ? あの手の環境って時代遅れかもよ?
439 :
uY ◆gXFLM6waxs :2012/08/17(金) 23:12:05.26
やってる奴もいるのに不可能とか言われてもね 動的言語で大規模開発できる奴らはスキル低くないんだってば
440 :
uY ◆gXFLM6waxs :2012/08/17(金) 23:25:37.50
動的言語と静的言語を比べる時に なんか静的言語ならバグが混入しないみたいな事言ってる奴いるけど 凄い勘違いだと思う 実際はただ混入しやすいバグの種類が違うだけ
韓国最大手の釜山貯蓄銀行が破産。自己資本比率は驚異の-50.29%
http://engawa.2ch.net/test/read.cgi/poverty/1345217353/ 釜山(プサン)地方裁判所は16日、債務超過に陥った釜山貯蓄銀行に対し、破産を宣告しました。
釜山貯蓄銀行は去年2月17日に営業停止処分を受けたのに続き、去年4月29日には、BIS=国際決済銀行による
自己資本比率がマイナス50.29%と、健全性を示す基準の1%を大幅に下回っていたため、
不健全金融機関に指定されました。
当時、釜山貯蓄銀行の資産総額は1兆3000億ウォン、借金は3兆5000億ウォンで、
資本金の増額や第三者による買収など経営改善の可能性も低いことから、
管財人が清算に向けて破産を申請していました。
5000万ウォン以下の預金資産や優良資産などはすでにブリッジバンクのイェソル貯蓄銀行に引き継がれており、
破産宣告により、釜山貯蓄銀行に5000万ウォンを超える預金を預けている
預金者と後順位の債権者は、破産手続きによる配当を受けることになりますが、
残った資産を処分しても、配当として受け取る資金はほとんどないものとみられます。
ただ、5000万ウォン未満の預金者は、今後もイェソル貯蓄銀行の管理のもとで、金融取り引きを続けることができます。
これに先立ち、今月14日には第一(チェイル)、第一2、プライム相互貯蓄銀行が
ソウル中央地方裁判所に破産申請を行っており、
トマト貯蓄銀行とパランセ貯蓄銀行もすでに先月、裁判所に破産を申請しています。
http://world.kbs.co.kr/japanese/news/news_Dm_detail.htm?No=44906
442 :
デフォルトの名無しさん :2012/08/18(土) 00:46:48.57
z
>>419 LLがどうとかおいておくとC#とか?あとPowerShellもか
444 :
デフォルトの名無しさん :2012/08/18(土) 01:37:03.91
PyPyのSTM早く来てぇ
韓国経済が急激に失速している。一番の原因は、これまで韓国経済を引っ張ってきた原動力である輸出に陰りが見え始めたためだ。
輸出に次いで内需の鈍化も懸念されている。住宅価格の下落とそれに伴う消費や投資の抑制がみられ、バブル崩壊以降日本が苦しんだ
「日本型長期デフレ」の兆候が現れている、との指摘も少なくない。
■好調に見えたのはヒュンダイやサムスンだけ
韓国の輸出は、2012年7月の通関ベースで前年同月に比べて8.8%減と大きく減った。マイナス幅は3年ぶりの高い数値だという。
これまで韓国の輸出をけん引してきた自動車の輸出が頭打ちになったのをはじめ、船舶や石油化学製品、携帯電話など主力製品の輸出が急速に落ち込んだ。
韓国の輸出額は国内総生産(GDP)対比で50%を超える。「輸出国」といわれる日本でもGDP対比では10%半ばだから、輸出依存度の高さは圧倒的だ。
そのため、輸出の不振は即韓国経済の失速に直結する。
なかでも韓国経済を支えてきたのが欧州連合(EU)向けの輸出。EUとは自由貿易協定(FTA)を結んでいる。そのEU向けが12年1〜6月期には前年同期に
比べて16.0%も減った。EU諸国の債務危機から発した景気低迷が影響した。
さらには中国向けも1.2%減った。第一生命経済研究所経済調査部の主任エコノミスト、西?徹氏は、「中国向け輸出の減少はボディブローのように効いています」と話す
。韓国の素材や部品メーカーは中国を介して、間接的にEU向け輸出を増やしてきたからだ。
http://headlines.yahoo.co.jp/hl?a=20120817-00000006-jct-bus_all
まー、Twitter社がRuby捨てたっていう事実関係は大きいよな。
え、なにが ツイッター潰せばいいだけでしょ
TwitterはRuby捨ててJavaに移りましたよ。 動的型付け言語に人生をかけてるuvさんもきっとどこかに捨てられたんでしょうね。
関数の引数不正、演算の型不一致は静的ならエラーを吐いてくれる。 型宣言がソースが長くなるだけの無用なものとか言ってるやつらは開発なんてしたことがないエセプログラマー。 オブジェクト指向言語でわざわざpublicとかの修飾子つけるのが無駄だとしか思ってないんだろうな
そらRubyは捨てられるでしょ。 可読性ゼロの変態文法だし、アプデするごとに互換性なくなるんだもんw
静的言語ってウンkばっかなんだよな Goには頑張って欲しい
Xtend使えばJavaの冗長さも大半解消されるわけで
>>452 型チェックがないと簡単にバグってしまうような技術レベルなら
それこそエセですよ
多分452と456とでは想定してるコードの規模が全く噛み合ってない
>>453 言語仕様が変だというのが捨てる理由なら、真っ先にPHPのシェアが0に
なってなければ変なんだけどwwwwwwww
>>448 捨ててないよ
Rubyのエンジニアが多いからこれからも使っていくみたいだよ
460 :
uy :2012/08/18(土) 14:14:03.81
なんていうかわかったんだけどさ 言語の互換性ってそれほど大きな問題でもない気がする 仕様変わっても1日あればバグ全部とれるわ それにrubyは順調にひろまってるwww 評判がわるいガラパゴスは2chだけwwww
Rubyって韓流と同じ臭いがする 流行ってる、流行ってるっていうけどRuby使ってるヤツなんか見たこと無い
rubyでめし食っててスマン
参考資料に
https://github.com/languages JavaScript 20%
Ruby 14%
Python 9%
Shell 8%
Java 8%
PHP 7%
C 6%
C++ 4%
Perl 4%
Objective-C 3%
JavaScript相変わらずつよす
>>463 それってプロジェクト数で出してるのかなぁ。そしたら使い捨てほど上に来やすいと納得。
どーいう集計のしかただよw。
Rubyが高いとか捏造ランキング乙w
>>462 え?なに?ウンコでも食ってんのRuby使いは?
466 :
uy :2012/08/18(土) 15:38:52.03
467 :
デフォルトの名無しさん :2012/08/18(土) 15:48:55.18
え? コード行数でカウントしててruby2位って相当じゃねーの
Rubyのスパゲッティっぷりを証明してるサイトってことか。
469 :
uY :2012/08/18(土) 15:53:45.61
じゃあZopeで作成されたプロジェクトホスティングサービスの統計を 調べればいいんじゃね? ところで、どこにあるん?
472 :
デフォルトの名無しさん :2012/08/18(土) 16:19:16.14
___ /| | ||. |∧_∧| ||. (´・ω・| うわっ、クソスレに来てしまった。 ||oと. U| || |(__)J| ||/ ̄ ̄ ___ | | | | | o| | | | | 彡 ̄ ̄ パタン、
473 :
uy :2012/08/18(土) 16:29:17.41
行数でカウントなんてプロっぽくないな。 ステップ数でカウントと言おう Rubyはステップ数が多い。
RubyやPythonなんて使ってる時点でプロじゃねぇだろw
そもそもプロってなんだよ、みんなプロぐらまーだよってか?
プロならスクリプティング言語じゃなくてプログラミング言語と言いたいわけですね。
かぶってたはずかしい
いやいや、君のオヤジギャグの方がクールだよぉ〜 オレのは余計サブくなったけど・・・
479 :
デフォルトの名無しさん :2012/08/18(土) 18:11:35.41
i="" if(i) puts "true" else puts "false" end; なんでtrueになるの?
空っぽになっても自分を曲げたくないからだよ
サブッ・・
482 :
uY :2012/08/18(土) 22:10:47.15
ha?
Lisp由来の、非nilはすべて真ルールは なかなかうまく機能する
484 :
デフォルトの名無しさん :2012/08/19(日) 01:06:57.21
blank? が欲しい時はあるけどね
blank?ってどういう意味?
486 :
uy :2012/08/19(日) 01:36:50.63
(頭が)空っぽ?って意味だよw
白板
488 :
デフォルトの名無しさん :2012/08/19(日) 04:18:39.97
489 :
デフォルトの名無しさん :2012/08/19(日) 04:21:03.00
ruby流行ってるていうのはステマ まわりでruby使ってるやつみたことない
>>484 もし空文字列(長さがゼロの文字列)かどうか調べるならString#empty?があるよ
使ってる人の声が大きいんだろう
493 :
デフォルトの名無しさん :2012/08/19(日) 07:03:19.28
rubyさいきょう
494 :
デフォルトの名無しさん :2012/08/19(日) 12:32:05.50
ruby使ってる人ムトゥ神以外に見たことない
495 :
デフォルトの名無しさん :2012/08/19(日) 14:52:41.00
ruby全然流行ってるない みんな煽ってるだけ ステマ
496 :
uY :2012/08/19(日) 15:58:54.74
>>495 スクレイピングやったことある?
ツイッターBOT作ったことある?
makefile不便だと思った事ない?
2chねるに書き込みとかしたくなったことない?
それらはすべてrubyで簡単に解決できます
どれもないな てかその用途自体、Rubyが言語というよりツールの趣が強いって証だ
498 :
uY :2012/08/19(日) 16:09:45.70
つまりrubyはツールが強い言語ってことは認めたのかな?
日本語でおk
そんなのどんな言語でもできるだろ。 できない言語探す方が難しいわw
新事実! ruby は 2chねるに書き込むために創られた!
502 :
デフォルトの名無しさん :2012/08/19(日) 18:24:03.91
>>498 特定用途に強いことはわかった
レールから外れるとなにもできないのはわかった
ようやくこのスレにふさわしい平壌運転が再開されたみたいですなw
504 :
デフォルトの名無しさん :2012/08/19(日) 18:47:09.29
これからプログラミングはじめてみたいんですけどなにがいいでしょうか あ、rubyでよさそうですね rubyやることにします
505 :
uY :2012/08/19(日) 18:48:13.63
>>504 あ、おめでとうございます
それ正解です
rubyをやりましょう
506 :
uy :2012/08/19(日) 19:27:48.09
というかやれ、
ひどい自演だ
508 :
uy :2012/08/19(日) 20:48:32.33
ぷw 自演じゃねーよ 他演だよ。 他演ってのはな、自演に見えるように 他の人がわざと意図的に 都合のいいレスをすることだ。
自演乙
馬鹿には無理
自演には無理
512 :
uY :2012/08/20(月) 05:46:11.83
さっきちょっと書いたコードなんだけど 何も考えずに適当に書くとこうなるコードでも n = i = 0 s = [] b = ["a","b"] [1,2,3].cycle do | m | n += 1 i += 1 break if n == 21 s << m if i == 4 i = 0 s << b.first b.rotate! end end p s ↓ちゃんと書けばちゃんとブロック内に全部収まるところが、rubyが最強である所以だと思う [1,2,3].cycle.take(20).each_with_index.each_with_object [ s = [] , ["a","b"] ] do | ( m , i ) , ( s , b ) | s << m ( (i += 1) % 4 ).zero? and s << b.rotate![-1] end p s メソッド名が長かったりしてソースは長いけどアルゴリズムとしては完璧なものが書けるんだよ
513 :
uy :2012/08/20(月) 07:39:28.20
ごめんそのソースコード忘れてミスってる 徹夜明けはだめだ消えますさよなら
ふ〜ん(笑)
自演確定
>>512 仕様がどう与えらてんのかによるけど、何も考えずに書くなら普通こうだろ?
a = [1,2,3].cycle
b = ["a","b"].cycle
p (1..25).map{ |i| (i%5)!=0 ? a.next : b.next }
517 :
uy :2012/08/20(月) 14:50:30.46
おまえの普通とか知らんし
rubyの何がどう優れているのかはさっぱりわからんが、 uyが無駄に長いコードを書いて悦に入っているってことはわかった
519 :
uY :2012/08/20(月) 16:31:55.85
40.times.map.each.with_index(1).each_with_object( [ [1,2,3] , ["a","b"] ].map(&:cycle) ).map do | ( m , i ) , ( a , b ) | Hash[ true , b.next , false , a.next ][ ( i % 5 ).zero? ] end.display puts [1,2,3].cycle.take(40).each.with_index(1).each_with_object( ["a","b"].cycle ).map do | ( m , i ) , b | ( i % 5 ).zero? ? b.next : m end.display 変数の完全隠蔽がされている アルゴリズムとして完璧なんだよこれは これを無駄に長いとはいわない 短くしようと思えば出来る長さなんだよ すべてがメソッドで、その引数で構成されているから ↓これが出来る a = [1,2,3].cycle.take(40).each.with_index(1).each_with_object( ["a","b"].cycle ) a.map do | ( m , i ) , b | ( i % 5 ).zero? ? b.next : m end.display
from itertools import cycle print([s if i % 5 == 0 else n for n,s,i in zip(cycle([1,2,3]), cycle("ab"), range(1,41))])
>>519 あのぉ、516の細かいところををしれっとパクってるうえに
仕様がかわっちゃっている(バグってる)んですけど?
相変わらず読みにくいし汚いし。
完璧なアルゴリズムが聞いてあきれるわ。
522 :
uY :2012/08/20(月) 17:36:57.99
>>521 俺様の使うコードでは配列じゃない都合が悪いから配列で書いている
このスレ的にはcycle.nextの方が良いと思ったから書き直しただけ
これが読めないなら慣れろとしかいえない
バグってるって何が?意味が分からない頭大丈夫?take20がtake40になっただけだよ?生きてる?
>>520 > from itertools import cycle
えっ
Pythonってこんな宣言書かないとcycle使えないの?
523 :
uY :2012/08/20(月) 17:38:29.70
import含めてもRuby(っていうかuyのクソコード)のほうが冗長やんけ
>>522 > バグってるって何が?意味が分からない頭大丈夫?take20がtake40になっただけだよ?生きてる?
>>512 の出力
[1, 2, 3, 1, "a", 2, 3, 1, 2, "b", 3, 1, 2, 3, "a", 1, 2, 3, 1, "b", 2, 3, 1, 2, "a"]
>>519 の出力
[1, 2, 3, 1, "a", 3, 1, 2, 3, "b", 2, 3, 1, 2, "a", 1, 2, 3, 1, "b", 3, 1, 2, 3, "a", 2, 3, 1, 2, "b", 1, 2, 3, 1, "a", 3, 1, 2, 3, "b"]
526 :
uY :2012/08/20(月) 17:48:06.99
>>525 ばーか、細かいこと気にしてるから
お前はハゲなんだ。ハーゲw
527 :
uY ◆gXFLM6waxs :2012/08/20(月) 17:48:45.11
うっほw これは恥ずかしいww
どっちが正解なんだよぉー。おーしえろぉよーw
算数ドリルの宿題ですか
531 :
uY ◆gXFLM6waxs :2012/08/20(月) 18:09:43.34
ひとつの規則にしたがって、一行にかけますねってことだよ
Pythonは
>>520 2つくらいの規則がはいってる
>>529 別にどっちでも正解、どういう仕様にするかってだけ
これは俺様Libの中の数列生成ライブラリ
俺様Libでこの数列は
func(5,["a","b"],[1,2,3])
によってEnumratorを返すから
p func(5,["a","b"],[1,2,3]).take(20)
で表現できる
いま思ったけど
>>512 と
>>519 は両方の仕様を入れてもいいかもしれないね、そうだね、そうしよう
Pythonがfunctoolsやitertoolsを別にしてる理由がなんとなくわかった
馬鹿除けfoolproof
534 :
デフォルトの名無しさん :2012/08/20(月) 19:46:46.99
国際規格になってるのがRubyで国際規格になってないのがPythonなんだよ
ただし処理系は国際規格に準拠していません
536 :
デフォルトの名無しさん :2012/08/20(月) 19:51:45.79
何でこんなにruby使いたがらないのかが分からない 日本で生まれた言語だよ? なるべく多くの用途にrubyを使っていく事で今後世界のITにおいて日本が優位に立てる要因のひとつになる 明日の飯の種しか見れない人たちなんですか?
俺は日本産推しはやめて欲しい いい言語だからruby使うというだけのこと
rubyが合ってる用途にrubyを使うのはいいが すべての用途にrubyをなんて流れが日本で主流になったら、 間違いなく日本のIT業界は滅びるな
539 :
デフォルトの名無しさん :2012/08/20(月) 20:06:23.73
日本のソフトウェア技術ではRubyが最後の砦といっても過言じゃない ほかはどうにもならないくらいに差をつけられた お前らが何を考えているか分からない
日本産とか言うならGauche使えよ。関数型だしオマエ大好物だろ? rubyなんかよりGauche使うべき。
gemがイマイチ。
Ruby輸出して国益になってるか? ぼったくられてるだけだろ
rubyはまず処理系のバグが多すぎる。やわい。ちょっと何かさせるとすぐSEGVる。 次に遅すぎる。下手打つと簡単に帰ってこなくなる。そのたびにC書いたりチューンしないといけない。 そして一度書いたコードが処理系ver upですぐ動かなくなる。ころころ変わり過ぎ。 どんなに開発効率が上がったとしても、こんなネガティブだらけじゃ怖くて使えない。
ooの教育用言語でいいじゃん。
rubyでは開発効率が上がることすらないと思うなあ というか二人以上で使う言語じゃない気がする まあ、一人で使うとしてもPythonの方が、自分のコードを見返した時に分かりやすいと思うけど
546 :
uY :2012/08/21(火) 01:05:59.17
もうrubyなんて使わなくていいよ この言語はダメだ やっぱ不安定 いやでも大勢が使えばバグどんどん見つかって便利になっていくんだろ やっぱみんなで使えばいいじゃん クズゴミなのは分かってる でもつかっていけばいいじゃん 今日俺は2時間も犠牲にしてバグの特定 2時間だよ2時間、それだけの時間あれば俺はきっと萌え絵を一枚描きあげてる なんで世界で数十万単位の人間が使ってるはずなのに俺程度で見つけられるバグが こんないくつも残ってんの?おかしい もうやんない 再現したり再現しなかったりふざけてるし、俺がソースかいてたら絶対こんなバグは入らない はいでも直して欲しいから報告しましたよ2時間もかけて再現性の低いものをさああああ バグってなんで入るの? プログラムにバグとか入れた事ないから全然よくわかんない
rubyってワンライナーで最強とか言って喜ぶくらいしか使い道無いでしょ perlと同じ道をたどるんだよ
548 :
uY :2012/08/21(火) 01:33:38.87
perlがほろんだのはrubyのせい rubyの上位互換が今後出てくるなら素直に乗り換える
549 :
デフォルトの名無しさん :2012/08/21(火) 01:47:09.40
OpenSSLのビルドにはPerlが必須でございます。 Rubyユーザーはnet/httpsを使うためにPerlをインストールするのですよw
551 :
uy :2012/08/21(火) 01:59:21.64
Perlは嫌いじゃない perlやrubyって結局毎日プログラミングして無いと意味無いんだろうな たまにしかコードかかないなら 1文字2文字の違いなんてどうでもいいんだろどうせ
PHPの勉強するためにmacに対応してるっていう ノン・プログラマのためのPHP入門10日間コースって本を買ったんだけどさ windows中心で書かれてて凄く使いずらい 金返せよ失敗した誰か助けて
rubyは不満の掃きだめだね 末期症状が現れ始めてる気が railsバブルが完全に終わってしまったからかな? rubyからはなんの新しいものも出てこない。
今思えばDHHは夢を見せた分だけ罪が重いね
555 :
uY :2012/08/21(火) 04:10:46.94
どんだけ叩いても無駄無駄 rubyは使われ続ける
556 :
uy :2012/08/21(火) 04:24:45.16
rubyは2.0で1.9との完全互換とるんでしょ? 仕様変更がなくなったとわかればここから一気に広まるよ rubyを使ってない奴の多くは仕様変更を怖がっているだけ 2013年はrubyの年になる
お前らはWindowシステム何分で作れますか? 俺はいまからあと46分で作る
マウス移動クローズ、重ね合わせ順序までは作れた お前ら雑魚 俺が天才
rails案件はのきなみ大炎上だしね。 ようやくみんなrubyのたちの悪さが分かってきた感じ。 あと心配なのは、rubyの悪評がossや動的言語一般を巻き込んでしまうことだから、 rubyにはできるだけひっそりと死んでいって欲しい。
これからもrubyは広まっていくだろうね
もうrubyなんて使わなくていいよ この言語はダメだ やっぱ不安定
562 :
デフォルトの名無しさん :2012/08/21(火) 09:46:34.89
>>536 信者キモい
様々な意味で使い物にならない
俺、昔のruby界隈のログを漁った事があるけど 結局rubyたたいてる奴は元ruby使いであると結論付いた rubyコミッター側も気持ち悪いけど、アンチ側もすっげー気持ち悪かった rubyの効率は理解してるけどrubyが嫌いで嫌いでしょうがなくなっちゃった奴らだ あまりに空虚で、無意味なことにこだわっている どんだけ2ch内で言語の評判を下げようと上げようと意味はないよ 俺がrubyを触ってから2ch内でのruby評判は落ちたかもしれない それでもそんなこととは無関係に国際規格になってるし、 Googleでのruby情報の検索ヒット数はどんどん増えている 2年前はPerlより検索ヒット数少なかったからね、普通に伸び続けてるよruby なんか終わった終わった言ってる奴が多いのはこの板だけ こんな板を見てるのなんて毎日ほとんど同じ奴なんだよ 毎日この板を見ている奴なんて、日本の中で数百人程度しかいない、 1日板全体で500レスあるか? ないだろう 1人が5レスずつ書き込むとしたら、1日に100人しかこの板を見てない 無意味である 確かにrubyはバグだらけ、俺は他LLをrubyほど使い込んではいないから、他LLのバグ事情は知らない LLは所詮こんなものなのかもしれないが、そういういいわけを許したくない
564 :
デフォルトの名無しさん :2012/08/21(火) 16:21:10.86
Pythonは使わないのだけど
>>520 はうまいね Rubyだと
p (1..40).zip([1,2,3].cycle,%w[a b].cycle).map{|i,n,s| i%5==0 ? s : n}
かな
最初の仕様だと
>>516 と同じようにして
from itertools import cycle
n=cycle([1,2,3])
s=cycle("ab")
print([s.next() if i%5 == 0 else n.next() for i in range(1,25)])
かな
無理やり一時変数をなくすと
from itertools import cycle
print((lambda n,s:[s.next() if i%5 == 0 else n.next() for i in range(1,41)])(cycle([1,2,3]),cycle("ab")))
だろうか? ふつうのPython使いは内部関数を作るのかもしれないけれど
Rubyで
>>516 から一時変数をなくすなら
p (1..25).map.with_object([1,2,3].cycle,%w[a b].cycle){|i,(n,s)| i%5==0 ? n.next : s.next}
とかかな
LinuxだとPerlからPythonに移行しようって動きがあるけど、OSミニマムインストールした後、ちょっと何かのミドルウェアインストールすると依存関係ですぐPerlが要求されるよね。 ワンライナーも考えれば、PythonじゃPerlの代わりにはなかなかならない。 もちろんRubyは論外。 Perlなら外部モジュール使ってなければ、10年前に書かれたプログラムでも最新のバージョンで余裕で動くし。
ワンライナーなんか上手いも下手も無い。 こんなの"ab"が”abc”になっただけですぐ破綻する。
rails案件はのきなみ大炎上だ氏ね
最初の仕様は 最初の数列から4つづつと、次の数列から1つづつ交互に取り出すってことだろうから Ruby 2.0では p [1,2,3].cycle.each_slice(4).lazy.zip(%w[a b].cycle).flat_map(&:flatten).take(25).force ってかけるんだけど たいして短くはならないな 2.0ではEnumertor::Lazyが導入されるので Pythonのジェネレーター式やitertoolsみたいに無限列を取り扱えてうれしい
>>565 の
print((lambda n,s:[s.next() if i%5 == 0 else n.next() for i in range(1,41)])(cycle([1,2,3]),cycle("ab")))
はステキだわぁ〜、これなら破綻しないわぁ〜
p [*[[1,2,3].cycle]*4,%w[a b].cycle].cycle.take(25).map(&:next)
[x.next() for x in islice(cycle([cycle([1,2,3])]*4+[cycle("ab")]),25)]
574 :
デフォルトの名無しさん :2012/08/21(火) 19:30:10.57
VB確かに書きやすいけど、javascript書けた方がチャラい感あるしモテるんじゃないかと思ってる。
575 :
uY :2012/08/21(火) 19:39:58.13
なんかあまりに再実装する奴が多すぎてかわいそう 俺の当初の目的は無駄の無い短いアルゴリズムでこれを表現するとかじゃなくて ただの、こういう数列生成メソッドの実装 func( 5 , ["a","b"] , [1,2,3] ).take(20) # => [1, 2, 3, 1, "a", 2, 3, 1, 2, "b", 3, 1, 2, 3, "a", 1] zipとかcycleでそれほど簡潔に書けない事が分かったし これからはメソッドに引数与えるだけですし
576 :
uY :2012/08/21(火) 19:53:34.60
def func n , aa , bb y = Enumerator.new do | e | a = aa.cycle b = bb.cycle [*1..n].cycle { |i| r = (i%n) == 0 ? a : b e << r.next } end end y = func 5 , ["a","b"] , [1,2,3] p y.take(20) # => [1, 2, 3, 1, "a", 2, 3, 1, 2, "b", 3, 1, 2, 3, "a", 1, 2, 3, 1, "b"] y = func 2 , [true] , [false] p y.take(20) # => [false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true] ゲームでインターバルの制御に使うんです
あ、ゴメンゴメン、Pythonだと無駄がない再実装できちゃったから怒ってるんだね。 ワンライナー自信あったのにね 逆に読みにくくて無駄ばかりってバレちゃったね
578 :
uY :2012/08/21(火) 20:18:18.61
importしないとcycleすら使えないパイソニスタが調子のってんな
579 :
uY :2012/08/21(火) 20:19:49.67
Enumeratorすら使いこなせない奴って生きてる意味ある?
580 :
デフォルトの名無しさん :2012/08/21(火) 20:52:13.29
____
/∵∴∵∴\
/∵∴∵∴∵∴\
/∵∴∴,(・)(・)∴|
|∵∵/ ○ \|
|∵ / 三 | 三 | / ̄ ̄ ̄ ̄ ̄
|∵ | __|__ | <
>>579 は生きる価値なし
\| \_/ / \_____
\____/
未定義の関数呼び出すと自動でライブラリ読み込む機能もっと流行ればいいのになー
582 :
デフォルトの名無しさん :2012/08/21(火) 21:09:56.52
____ /∵∴∵∴\ /∵∴∵∴∵∴\ /∵∴∴,(・)(・)∴| |∵∵/ ○ \| |∵ / 三 | 三 | / ̄ ̄ ̄ ̄ ̄ |∵ | __|__ | < ワロスワロスww \| \_/ / \_____ \____/
バグというか、無理だろ
>>579 走査中のやつを破壊的変更するuyとか?
>>584 phpで、classのloadだったらやったことあるぞ。ファイル名と、クラス名の関連付けをjavaみたいにして。人がやってるのも見たことあるから、みんなやってそうだと思ってた。
それ、どんなメリットがあるの? どこから持ってきたのか明示せずに関数を呼ぶとかゴミにしか見えないんだが
584 名前:デフォルトの名無しさん[sage] 投稿日:2012/08/21(火) 21:27:58.01
バグというか、無理だろ
585 名前:デフォルトの名無しさん[sage] 投稿日:2012/08/21(火) 21:28:59.55
>>579 走査中のやつを破壊的変更するuyとか?
586 名前:デフォルトの名無しさん[sage] 投稿日:2012/08/21(火) 21:31:58.36
>>584 phpで、classのloadだったらやったことあるぞ。ファイル名と、クラス名の関連付けをjavaみたいにして。人がやってるのも見たことあるから、みんなやってそうだと思ってた。
587 名前:デフォルトの名無しさん[sage] 投稿日:2012/08/21(火) 21:43:49.88
それ、どんなメリットがあるの?
何?
Pythonで一行目に from * import * と書いて全部の関数をロードするんだろw 実際には出来ないけど、これ最悪w
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
>>576 func の中の y の代入が意味不明。
[*1..n].cycle は冗長。
def func(n, aa, bb)
Enumerator.new do |y|
a = aa.cycle
b = bb.cycle
loop{ (n-1).times{ y << b.next }; y << a.next }
end
end
enum = func(5, ["a","b"], [1,2,3])
p enum.take(25)
593 :
uY :2012/08/21(火) 21:54:11.33
595 :
uY :2012/08/21(火) 21:57:15.86
>>592 お前見たいのを無能な働き者っていうんだよ
デバッグ用に残してるyだから勝手に取らないで
それとお前さあ・・・
loop{
このループの中は
(n-1).times{ y << b.next }; y << a.next
}
nextとかtakeやるたびに呼び出される場所なのに
なんでtimesイテレータとか生成してんだよ
実行速度を考えろよ
さっさとコード元に戻せアホ
597 :
uY :2012/08/21(火) 21:59:28.79
速度も考えれば一番良い実装はこう def func n , aa , bb Enumerator.new do | e | a = aa.cycle b = bb.cycle [*[b]*n.-(1),a].cycle { |r| e << r.next } end end お前らには理解できないと思ってあえて少し処理を残したソースをあげただけ
雑魚すぎこのスレ
雑魚雑魚雑魚雑魚
>>512 のrotate!の頃からずいぶん成長したなuy
601 :
uy :2012/08/21(火) 23:21:18.92
いや ろてえとは俺様ライブラリ内部では使ってる 動的に回すリストの変更も行うからサークルのえぬめらぶる化はしない こんなものはこのスレ用コードに過ぎない
>>595 この手のtimesはコンパイル時にインライン化されるから
ループ毎の生成コストはかからんだろ、jk
603 :
uy :2012/08/22(水) 00:00:34.99
へーそうなんだ 覚えとこう
>>593 いや、仕様が把握できてる、自ドメインのクラスだけ。
605 :
デフォルトの名無しさん :2012/08/22(水) 02:45:46.45
windowsが陳腐化した これからはOS作れる言語が流行る JSとか
rubyよりpythonのほうが読み安いし簡単だと思ってるんだけど その意識が逆になった人っている?何が理由でなった?
>>597 そのコードだと、cycleが返すEnumeratorを直接返せばいいのでEnumerator.newは冗長。
更に余分な一時変数省いたら>571になる。
609 :
uy :2012/08/22(水) 04:55:46.58
勉強しなおせ
610 :
uy :2012/08/22(水) 05:05:17.19
>>606 リスト内包表記のほうが優れてるのは認める
つかrubyは標準ではmapがアホみたいに冗長だけど
改良したmap使えば&とる方法がなくはないからね
このスレのコードなんてrubyの本気じゃない
小学生<い、今までのは本気じゃなかったんだもんね〜
612 :
uy :2012/08/22(水) 05:18:38.90
module Enumerable def dmap DelegateMap.new(self) end end class DelegateMap < BasicObject def initialize(enum) @enum = enum end def method_missing(mhd, *args, &blk) @enum.map {|elem| elem.__send__(mhd, *args, &blk) } end end p [*[[1,2,3].cycle]*4,%w[a b].cycle].cycle.take(25).dmap.next
613 :
uy :2012/08/22(水) 05:19:54.44
>>608 標準で無限リストを返したいんだよ
take(20)
としても使えて
.next
.next
.next
.next
....
としても使えるEnumuratorがほしい
>>571 だけだと、
takeやった後にnextしてるから無理なのは分かるだろカス
614 :
uY :2012/08/22(水) 05:20:40.80
日本語で分かりやすく書いたものを そのままコードにした方がいいよ。
615 :
uy :2012/08/22(水) 06:02:48.38
>>592 >>602 0000 trace 1 ( 5)
0002 trace 1
0004 getdynamic n, 2
0007 putobject 1
0009 opt_minus <ic:4>
0011 send :times, 0, block (3 levels) in func, 0, <ic:1>
0017 pop
0018 trace 1
0020 getdynamic y, 1
0023 getdynamic a, 1
0026 send :next, 0, nil, 0, <ic:2>
0032 opt_ltlt <ic:5>
0034 leave
>0011 send :times, 0, block (3 levels) in func, 0, <ic:1>
>0011 send :times, 0, block (3 levels) in func, 0, <ic:1>
>0011 send :times, 0, block (3 levels) in func, 0, <ic:1>
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
はぁ???
インライン展開されてねーじゃん 死ねば? なんでそういう嘘つくの?
>>602
616 :
uy :2012/08/22(水) 06:31:57.87
人ってなんで嘘つくの
rubyでバイトコード表示ってどうやんの?
rubyの本気が見たい
619 :
uy :2012/08/22(水) 11:07:36.22
ruby --dump=i -e 'puts "1+2=#{1+2}"'
620 :
uy :2012/08/22(水) 11:51:08.59
>>602 602 :デフォルトの名無しさん:2012/08/21(火) 23:46:16.40
>>595 この手のtimesはコンパイル時にインライン化されるから
ループ毎の生成コストはかからんだろ、jk
謝る?
621 :
uy :2012/08/22(水) 12:23:57.12
>618 ruby2.0で遅延評価入る、ruby2.0になったら誰も手が出せない require "enumerable/lazy" a = [*[[1,2,3].cycle]*4,%w[a b].cycle].cycle.lazy.map(&:next) p a.take(20).to_a
ループとかのインライン化はYARVの目玉のひとつだったんだけど 深刻なバグが見つかって無効化されたまますでに3年経っているらしい。 腐ってやがる。
ワロタwwww
笹田は口だけ野郎ってか
>>622 > ループとかのインライン化はYARVの目玉のひとつ
ソース出せよ
というかバイトコードインタプリタになっただけでも 性能はかなり上がってるわけで
627 :
uy :2012/08/22(水) 21:59:15.64
思うんだけどn-1とかやるときのnってせいぜい1〜100程度って事が多い気がするんだよね そのくらいのパターンはメタしちゃえばって思う 結局動的言語は総当たりでパターン用意するしかまともにインライン化は無理だと思う 四則演算だけは1〜100の範囲であればメタされてますみたいな機構があれば タイムズにしても定数が来るならインライン化余裕だろ つか±256までインライン化できたら絶対違う メモリ使用量がほんの数百倍になるだけで超高速 はやく無限メモリになったらいい
628 :
デフォルトの名無しさん :2012/08/22(水) 21:59:40.66
今年のクリスマスプレゼントは何でしょうか?
629 :
デフォルトの名無しさん :2012/08/23(木) 00:17:54.90
インライン展開とかされる動的言語ってluaくらいじゃね?
Smalltalkもされるよ。
実行時になってみるとメソッドの実装が差し替えられている可能性もあるし あるいは最適化後にメソッドの差し替えが起きたら 最適化を巻き戻さないとプログラムの意味が変わってしまう 大昔からSmalltalk処理系とかで研究されている分野ではあるけど 実装は相当めんどくさい
Pythonでバタ臭いmixinしてるのが好き
遅延評価のコード書かれても、わかる人何%ぐらいいるの?
よよ、よ、よ読めます
635 :
デフォルトの名無しさん :2012/08/23(木) 02:41:35.92
pythonのpropertyの**関数()、これってなんでこんなことになってるの def foo(): doc = "The foo property." def fget(self): return self._foo def fset(self, value): self._foo = value def fdel(self): del self._foo return locals() foo = property(**foo())
636 :
デフォルトの名無しさん :2012/08/23(木) 02:44:12.61
637 :
デフォルトの名無しさん :2012/08/23(木) 02:47:16.14
あー最後のニ行でproperty消えてるから 最後のニ行は気にしないでくれ
638 :
uY :2012/08/23(木) 08:19:51.97
辞書の展開に決まってんだろ Python アスタリスクでググレカス
639 :
uY :2012/08/23(木) 08:25:28.10
def f;$a=->{yield};end f{a=$a.clone;$a=->{p 1;a.call}} loop{$a.call} それよりこれSEGVでる?
640 :
uy :2012/08/23(木) 18:25:44.59
もういいや 忘れて
uyこと忘れられるわけねーーよぉ!!!!
642 :
うy :2012/08/24(金) 00:25:38.33
名前にuyっていれるのって流行りなの?
643 :
uy :2012/08/24(金) 01:06:57.84
#とか//とかの後に何か書くのと一緒だね
#!/usr/bin/env uy # -*- coding:uy-8 -*-
/ , ::| |ヽ\ \ / / / | ::/| :| `、`、 ヽ / / / | ::/ |::| `、',ヽ ', ', r┐ r┐ヾ> ,' i | :/' | | ::/ i:| ', i ヽ i ',. | | lニ コ ,' | ! :,' i|| ::/ || || `、 | | | | レ! _| |. | | |`i'-,,, | | ::/ | | ', | | | ヽ/(___メ> | | ||.| `二=,,__,,, ,,,__... -!´ト, | | ,、 . | . i | | //:::C, 7::c\ ||ヘ.| | (( | .| | / {::::::::::::} {::::::::}`、 ,' .| i )) | /´'| | ヽ::::::ノ ヾ::ノ .| | (( | { | |:::::::: , .... | | )) | \', '',''''' __ ::::::::: | i (( | .:::', ', / ` ー --、 | | )) / .:::::::', :: ', / } / | (( / ...:::::::::::'、::. ',、( / ,イ|:: : | ` / ..:::::::::::/'`、:::.. ',`'' - ,,____ノ,,ィ::´:::i ',:::|:: | / 7 `-ー-´/ /:::::::::/ `、、 ', /`、\:::::::::::::::,':::::::,' |::||:: | ┌‐' 'ー┐ト、  ̄ ̄/ ./:::::,-{ \ `、、 / \::::::::,'::::::/ .|:i'|: | 7 /_7 / 」__〉 / // \ \ ヽ/ }::::/:::::/ | |:| 〈_/ヽ_/
速度やリテラルなんて、もはやどうでも良い 仕事があって長期的に幸せな生活できる言語は何れだ
648 :
デフォルトの名無しさん :2012/08/28(火) 04:36:59.82
PHPの求人あるよ
649 :
デフォルトの名無しさん :2012/08/28(火) 05:46:57.74
PHPでオブジェクト指向もできるようだけど、実際やってみると、気乗りがしない。 Rubyが楽だ! オブジェクト指向をやらないなら、Perlが簡単だ。
PHPのなんかのライブラリで、list()っていう関数ある? リファレンスは、どこだ? この名前が衝突していて、エラーになったことがある
652 :
デフォルトの名無しさん :2012/08/28(火) 06:49:36.07
オブジェクト指向をやらなくてもrubyのがperlより楽だよ perlは、どうしてもperlじゃなきゃヤダみたいな奴しか今は積極的には使ってる奴いないと思う perlは一世を風靡した実績はあるんだけどな rubyよりもブランド力はあるけど今となってはただの肩書き
>>652 私はPerlをほとんど知らないから聞くけど、CGIはPerlでなくちゃと言う時代ではない。
それでも、Perlの低落する速度が随分とゆっくりなのは、この言語が他の言語に
移行することを困難にする要素を多々持っているからなのだろうか。
Perl,Python,Perl,JavaScript,Ruby 名前が今ひとつだな。 LISP,SmallTalk,Prolog のような風格のある名前にすればもっと流行った。
>>653 rubyとかphpってCGIだと遅くない?
CGIじゃなくても遅いですよ
遅いのはアルゴリズム、ファイルなんて扱ったら恐ろしく重くなる。 データベースでも同じこと。 全部メモリ上でやれよ。
そこらへんは腕次第だろう。 しかし、起動が遅いのはどうにも。
659 :
uy :2012/08/28(火) 15:04:32.24
さっき2chがバグって変なログ出力されたんだけど UnixがどーたらPHPがどーたらっていうエラーログだった 2chはPHPなのかよ
>>659 httpヘッダに書いてあるだろ。素人か。
661 :
uy :2012/08/28(火) 15:44:00.12
お前は普段httpヘッダ見ながら2chやってんのか
663 :
uy :2012/08/28(火) 16:08:30.88
つまりたまにhttpヘッダを見に行く習慣や癖があるってこと? 一応聞いてみようかなー 何のためにそんなことを?
664 :
デフォルトの名無しさん :2012/08/28(火) 16:56:23.73
/⌒ヽ、 ノ⌒⌒⌒⌒⌒ヽ/ヽir /〜⌒〜⌒〜⌒〜⌒〜⌒〜ヽ. |人つ人つイつ の r:::::::::'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::)~~~~ ~~~~~~'-,^^^^"'- r⌒ヽ| ̄`メ、ル_,.イ´ ̄ | (:::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::_ノtュ、゙ ,'ィt或アチ`、~"'- ,,,,,) | ,ィ或tュ、,'ィt或アチ| )::::::( ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ヽ 二ノ ` ‐''"´ ;, ンイ ヽ 二ノ ト` ‐''"´ \ (::::) | トェェェェェェイ, : | ′ トェェェェェェイ,._ 〉 |)::::( く三) (三シ . | ヘヾ'zェェェッ',シ ,:' | ヘヾ'zェェェッ',シ' | |:::::)  ̄`メ、_,ルィ 、_,.イ´ ̄, .l、 ` ー--‐ '" 、, '" ヽ__` ー--‐ '"' _ノ ::::| 、,ィ或tュ、゙:ミ {,'ィt或アチ |::::~,/'"/~~~~~/'"/~ヽ ノ:::::::: ̄ ̄ ̄ ̄ :∧r⌒ヽ|. `ヽ 二ノ ト ` ‐''"´ | `,-' `,-' ::::::ヽ (::::::::::/ V三'|:::/ ヾ| ヾ ,r'、 ヽ | ̄ ̄ ̄ ̄ ̄ ̄ ̄|:::::::ヽ /::::::::::|  ̄`メ、_V ィ、_,.| ,/゙ー、 ,r'ヽ |\ / ⌒\ |::::::| /::::r⌒ヽ| 、,ィ或tュ、ミ {'ヽンイ ,ノ `'" ,丶. |ヽノ ヽ/⌒ヽノ |::::::| 〈:::::::| `ヽ 二ノ ト ` ‐''|. ′ トェェェェェェイ,._ 〉∴ |ュ、゙:ミ {,'ィt或アチ |::::::| 〈::::::::ゝ_イ ,r'、 ヽ | ∴∵ ヘヾ'zェェェッ',シ'∵∴|ノ ト ` ‐''"´ |ヽ⌒r レっ::::::::::ヽ ,/゙ー、 ,r''ヽ | ∵∴∵ ` ー--‐ '"''´∵∴| i ,、 ,..、ヽ | ヽ〜´~ヽ ,ノ `'" ,丶| ∵∴∵∴∵∴∵∴∴ |トェェェェェェイ,._〉 | \ トェェェェェェイ,. | ∵∴∵∴∵∴∵∴∴∵|ヾ'zェェェッ',シ 、ン ヽ ヾ'zェェェッ',シ \ ∵∴∵∴∵∴∵∴/_` ー--‐ '" ___/
665 :
デフォルトの名無しさん :2012/08/28(火) 16:57:30.51
/| / ..::;| /....::::;;;;;;| /\ / ....::::;;;;;;| /| / ..::;;\ / ....::::;;;;;;;;|__ /..::;;;lへ / ...:::;;;;;\ /  ̄ ─ ___ /....::::;;;;;;|;;;;;;\ _/ ....::::;;;;;;\ / /  ̄ ‐-' .....::::;;;;;;;;|;;;;;;;;;;;\ _-― ̄ ̄ ...::::;;;;;;;;;\ 、、_j_j_j_ ,. ....::::;;;;;;;;;;;;;|;;;;;;;;;;;;;;;;\_,-― ̄ ...:::;;;;;;;;;\ 、_>';三●;=}`メ._, ....::::;;;;;;;;;|;;;;;;;;;;;;;;::::.... \:;;;;;;;ヽ く( ゞ'丕シ ヽ_, \;;;;;;;|;;;;;;;;::::.... 、、_j_j_j_ , ....::::;;;;;;;ヽ ´ ニ=;ゞ、______,ム 、、_j_j_j_ , ....::::;;;;;;;;|;;;;;;;::::.... 、_γ'"~ 乙メノ_,...:::;;;;;;;ヽ ´ ゙ ゙ ` ` 、_,>''"~ ̄ `メ._,;;;;;;;;;;;|;;;;;、、_j_j_j_ ,; 、γ {三●)>..::::;;;;;;;;;ヽ く(,r'乙W△. ヽ_, ;;;;;|γ△ ̄ ~ ` メ ,; ム、_____,ゞ'丕ニ` ...:::;;;;;;;;ヽ γ ´ ニ=;●;=}______,ム ;;;;;|●;=} )> ´ ゙ ゙ ` ` ...:::;;;;;;;;ヽ / ´ ゙ ゙ ` `::;;;;;;;;|'丕シ__,_、、=ニ` ..:::::;;;;;;|
>>661 有名サイトのヘッダくらい好奇心で覗いてみようよ
パケットキャプチャしてみようよ
2chのヘッダは2chに書き込むくらいのネラーなら知っていて当然だと思うけどね
俺は他にcookpad twitter facebookのヘッダを見たりしてるぞ
技術者なら興味くらいは持つよな 普段行くサイトを全部見たりは流石にしないが 少なくとも「何故」とは思わない
ターミナルで手軽にデコードされたヘッダ見る方法教えて
/⌒ヽ、 ノ⌒⌒⌒⌒⌒ヽ/ヽir /〜⌒〜⌒〜⌒〜⌒〜⌒〜ヽ. |人つ人つイつ の r:::::::::'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::)~~~~ ~~~~~~'-,^^^^"'- r⌒ヽ| ̄`メ、ル_,.イ´ ̄ | (:::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::_ノtュ、゙ ,'ィt或アチ`、~"'- ,,,,,) | ,ィ或tュ、,'ィt或アチ| )::::::( ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ヽ 二ノ ` ‐''"´ ;, ンイ ヽ 二ノ ト` ‐''"´ \ (::::) | トェェェェェェイ, : | ′ トェェェェェェイ,._ 〉 |)::::( く三) (三シ . | ヘヾ'zェェェッ',シ ,:' | ヘヾ'zェェェッ',シ' | |:::::)  ̄`メ、_,ルィ 、_,.イ´ ̄, .l、 ` ー--‐ '" 、, '" ヽ__` ー--‐ '"' _ノ ::::| 、,ィ或tュ、゙:ミ {,'ィt或アチ |::::~,/'"/~~~~~/'"/~ヽ ノ:::::::: ̄ ̄ ̄ ̄ :∧r⌒ヽ|. `ヽ 二ノ ト ` ‐''"´ | `,-' `,-' ::::::ヽ (::::::::::/ V三'|:::/ ヾ| ヾ ,r'、 ヽ | ̄ ̄ ̄ ̄ ̄ ̄ ̄|:::::::ヽ /::::::::::|  ̄`メ、_V ィ、_,.| ,/゙ー、 ,r'ヽ |\ / ⌒\ |::::::| /::::r⌒ヽ| 、,ィ或tュ、ミ {'ヽンイ ,ノ `'" ,丶. |ヽノ ヽ/⌒ヽノ |::::::| 〈:::::::| `ヽ 二ノ ト ` ‐''|. ′ トェェェェェェイ,._ 〉∴ |ュ、゙:ミ {,'ィt或アチ |::::::| 〈::::::::ゝ_イ ,r'、 ヽ | ∴∵ ヘヾ'zェェェッ',シ'∵∴|ノ ト ` ‐''"´ |ヽ⌒r レっ::::::::::ヽ ,/゙ー、 ,r''ヽ | ∵∴∵ ` ー--‐ '"''´∵∴| i ,、 ,..、ヽ | ヽ〜´~ヽ ,ノ `'" ,丶| ∵∴∵∴∵∴∵∴∴ |トェェェェェェイ,._〉 | \ トェェェェェェイ,. | ∵∴∵∴∵∴∵∴∴∵|ヾ'zェェェッ',シ 、ン ヽ ヾ'zェェェッ',シ \ ∵∴∵∴∵∴∵∴/_` ー--‐ '" ___/
671 :
デフォルトの名無しさん :2012/08/28(火) 18:05:00.19
>>672 でもHEADだとGETと違うヘッダを返すようなとこもあるから、-iのがいい時も。
674 :
uy :2012/08/29(水) 15:43:43.00
def f v = 0 [ ->n{ v = n } , ->{ v } ] end a , b = f 4 p b.call #=> 4 a.call 20 p b.call #=> 20 天才的なゲッターセッター
ソーシャルゲーって、どんな理由からビックリマンシールみたいな古いキャラデザ使っているんだろう これならローグライクなASCII文字にでもした方がマシそうなもんだけど あいつら、もう少しバカを教育するようなアカデミックなサービスでも提供できないのか
そりゃビックリマンの最新の新シリーズと タイアップしてるんだろう。 それがどれか知らないけど。
>>674 継承は論外のゴミだし、セッタゲッタもクロージャで出来るし
本当にOOPはゴミだったな
クロージャもセッタゲッタで出来るし…
目的が理解できなきゃ制約でしかないもんな。
クロージャをベースにしてちょっといじると オブジェクト指向相当のものができるようになるのは有名な話じゃないの Paul Grahamの『ANSI Common Lisp』の最終章あたりで Lispにマクロをかぶせて簡易オブジェクト指向言語を構築する話があったはず
最初からオブジェクト指向言語使えば良いじゃんw
関数オブジェクトは型を考えなければ難しくないが 型を表現しようとするとCのポインタ型と同じ位の難易度がある
RubyはCGIじゃ全く使い物にならないね。 Rubyは環境整えるのが面倒なんだよね。 その上、その環境にも流行り廃りが早いし。 知識の陳腐化が早い。 その点、PHPやPerlは互換性高いから過去の知識を活かせる。 CGIで動かしてもそこそこ早いし。
日本でRubyを牽引したtDiaryはCGIで動いてるとこが山程ありますが
685 :
デフォルトの名無しさん :2012/08/30(木) 02:05:12.06
いや、RubyはCGI用としてはお手軽。 アクセス量少ないならApacheのリビルドや モジュールの導入不要。 .rhtmlもconfの書き換えだけでどうにかなる。 あと互換性に関しては PHP・Perlもバージョンアップで かなり言語仕様いじってるからw
PHPやPerlの互換性は高いね。Rubyが論外に酷いという方が正確な表現かもだが。
Rubyの言語仕様の変化ってシンボルの型と イテレーターの識別子のスコープぐらいだろ。 Perl6のようなドラスティックな大変化はRubyでは起きていないじぇ?
tdiaryといえば高木浩光のブログがtdiaryだよね。 いつも落ちてる。 KENTの掲示板の毛が生えた程度の低機能ソフトなのに。 Rubyだからかな。
はあ?Rubyは国産だからちょっと不便でも積極的に使うべきなんですけど?よって高木浩光は神。
俺は特に国産にこだわりはないからWordPressつかうけど
日本語での情報量が違うからな いくら日本人が英語を勉強したところで 本人のリーディング速度は日本語の方が速い
いくら高速に読んでもそれが使い物にならなかった意味ないだろ!
694 :
uy :2012/08/30(木) 03:25:12.39
ラテン語でも読んでろカス
みんな最初は純粋だった 2ちゃんやってるうちに汚れてしまった 質問しても、揚げ足・コピペ・上から目線 もともと過疎だったのが、ますます過疎化していくんですよねぇ
696 :
デフォルトの名無しさん :2012/08/30(木) 07:13:58.61
気づいているだろうか ちょうどJAVAが注目され始めた時期からこうなったんだ あいつが全部悪い 世界で最も優れた言語の1つでもあるrubyやっていれば救われるのに
javaでは到底マネできないようなrubyのコードおしえて
698 :
デフォルトの名無しさん :2012/08/30(木) 07:31:20.47
PHPはしょっちゅう更新する必要があるからな 公開鯖で使うにはいろいろと手間がかかりすぎる
あのなぁ〜言っとくけどRubyは国産じゃねーからっ。 モルモン産だからっ!
700 :
デフォルトの名無しさん :2012/08/30(木) 07:53:42.09
モンゴル?
鯖用意できるなら、cgiもc/c++で書いた方が保守きかね?w
>>701 cならcgiじゃなくてapacheのmodにした方がよくね?
703 :
デフォルトの名無しさん :2012/08/30(木) 15:48:56.05
____ _________ /∨∨∨∨∨∨ ヽ / ̄ ̄ ̄ ̄\,, / __,,,,,,,,,,,,__ \ > | |イアン|ジャイアンジャイアl /_____ ヽ / /エモンドラエヽ \ > _______ | |゙ャイアンジャイアンジャイl |ビタノビタノビタノ| | / /ドラエモンドラエモ\ ヽ  ̄ |オスネオスネス\| | /ジャイアンジャイアンジャ |ノビタノビタノビタ|___/ |/.モンドラエモンドラエモントヽ | _ |スネオスネオスネVオスi |ンジャイアンジャイアンジャ| |タノビタノビタノビ 6 l |エモンドラエモンドラエモンド| | \スネオスネオスネオスネ丿 |イアンジャイアンジャイアン| . ヽノビタノビタノビタ,-′ |.エモンドラエモンドラエモンド| l \ネオスネオスネオ/ \ャイアンジャイアンジ/ ヽビタノビタノ/ヽ ヽエモンドラエモンドラエモン/ / /オスネオスネオく / ヽ / ヽ \モンドラエモンドラエモ/ /  ̄/ ヽ / ヽ | | | o━━━━━━━━┥ | | | | | | シュッ i||!| | | シュッ i||!|/ | シュッ i||!| | | シュッ i||!| | | シュッ i|!i|!i ノ _____| シュッ i|!i|!i | シュッ i|!i|!i ノ _____|シュッ i|!i|!i ノ _______ | ( / ( o / ( / ( / ヽ───┴─ ′ ヽ─────── ′ ヽ───┴─ ヽ--───┴──
704 :
デフォルトの名無しさん :2012/08/30(木) 15:49:49.26
ヾ;ヽ、 _ _,ィシ' `゙`フJ=、 」|,、-'⌒ヽ_ |i;;;;;i _(`ヽ--゙- 、 r',、-'´ L;;;ヾヽ、 /;;;;;r' rー _,ヾ;!. \ ./L;;;;i ;i ;!i ヾー、゙! ____ ヽ / i;;i _} ノ;ノく;;. {;l; ,j. { *.} `! ヽ .! i;;i,、=_‐''ヽヾ;ヽ \ヽ;==く;:〈 ゙、 | 7/ {.*.} _/ノi;;( ヽ \ ヾ;;、 ゙i, | | L、-゙=シ |;;;:.. ヽ、 \ヾ;、 l | `゙'i;;;:i ヾ' __ _,rミ`ヾ;!じ' | .! ,: ;;, i;;;:i /Vr‐、,.-'゙_,ノ゙\;;;:. ! ゙i;;:;;;;;:;,.,.,..i;;:i,.,.,,;;/ r─‐''''"_,.ィヾー》;:.| ゙、;;;; ;;;;;;;;;゙i;i;;;;;;/ / ,r'i'''T´゙L、-ク:| |;;;;;| ヽ;i ヾ;;;::゙i;゙i;:| ,j /ヾー^"__,.-rj;ツ };;;j \;;;;;;;;;ヾ'ヽ<ヽj´|´゙! _j=' ./;;/ \;;;;;;;;;;;;;;;;;;\`゙''"´_,、-'゙;;;;;/ ゙ヽ、;;;;;;;;;;;;;;;`゙"_,,、-'´/ `゙'''''ー--─'''´
705 :
デフォルトの名無しさん :2012/08/30(木) 15:50:37.91
ヾ;ヽ、 _ _,ィシ' `゙`フJ=、 」|,、-'⌒ヽ_ |i;;;;;i _(`ヽ--゙- 、 r',、-'´ L;;;ヾヽ、 /;;;;;r' rー _,ヾ;!. \ ./L;;;;i ;i ;!i ヾー、゙! ____ ヽ / i;;i _} ノ;ノく;;. {;l; ,j. { *.} `! ヽ .! i;;i,、=_‐''ヽヾ;ヽ \ヽ;==く;:〈 ゙、 | 7/ {.*.} _/ノi;;( ヽ \ ヾ;;、 ゙i, | | L、-゙=シ |;;;:.. ヽ、 \ヾ;、 l | `゙'i;;;:i ヾ' __ _,rミ`ヾ;!じ' | .! ,: ;;, i;;;:i /Vr‐、,.-'゙_,ノ゙\;;;:. ! ゙i;;:;;;;;:;,.,.,..i;;:i,.,.,,;;/ r─‐''''"_,.ィヾー》;:.| ゙、;;;; ;;;;;;;;;゙i;i;;;;;;/ / ,r'i'''T´゙L、-ク:| |;;;;;| ヽ;i ヾ;;;::゙i;゙i;:| ,j /ヾー^"__,.-rj;ツ };;;j \;;;;;;;;;ヾ'ヽ<ヽj´|´゙! _j=' ./;;/ \;;;;;;;;;;;;;;;;;;\`゙''"´_,、-'゙;;;;;/ ゙ヽ、;;;;;;;;;;;;;;;`゙"_,,、-'´/ `゙'''''ー--─'''´
706 :
デフォルトの名無しさん :2012/08/30(木) 15:51:14.51
ヾ;ヽ、 _ _,ィシ' `゙`フJ=、 」|,、-'⌒ヽ_ |i;;;;;i _(`ヽ--゙- 、 r',、-'´ L;;;ヾヽ、 /;;;;;r' rー _,ヾ;!. \ ./L;;;;i ;i ;!i ヾー、゙! ____ ヽ / i;;i _} ノ;ノく;;. {;l; ,j. { *.} `! ヽ .! i;;i,、=_‐''ヽヾ;ヽ \ヽ;==く;:〈 ゙、 | 7/ {.*.} _/ノi;;( ヽ \ ヾ;;、 ゙i, | | L、-゙=シ |;;;:.. ヽ、 \ヾ;、 l | `゙'i;;;:i ヾ' __ _,rミ`ヾ;!じ' | .! ,: ;;, i;;;:i /Vr‐、,.-'゙_,ノ゙\;;;:. ! ゙i;;:;;;;;:;,.,.,..i;;:i,.,.,,;;/ r─‐''''"_,.ィヾー》;:.| ゙、;;;; ;;;;;;;;;゙i;i;;;;;;/ / ,r'i'''T´゙L、-ク:| |;;;;;| ヽ;i ヾ;;;::゙i;゙i;:| ,j /ヾー^"__,.-rj;ツ };;;j \;;;;;;;;;ヾ'ヽ<ヽj´|´゙! _j=' ./;;/ \;;;;;;;;;;;;;;;;;;\`゙''"´_,、-'゙;;;;;/ ゙ヽ、;;;;;;;;;;;;;;;`゙"_,,、-'´/ `゙'''''ー--─'''´
707 :
デフォルトの名無しさん :2012/08/30(木) 15:51:57.76
ヾ;ヽ、 _ _,ィシ' `゙`フJ=、 」|,、-'⌒ヽ_ |i;;;;;i _(`ヽ--゙- 、 r',、-'´ L;;;ヾヽ、 /;;;;;r' rー _,ヾ;!. \ ./L;;;;i ;i ;!i ヾー、゙! ____ ヽ / i;;i _} ノ;ノく;;. {;l; ,j. { *.} `! ヽ .! i;;i,、=_‐''ヽヾ;ヽ \ヽ;==く;:〈 ゙、 | 7/ {.*.} _/ノi;;( ヽ \ ヾ;;、 ゙i, | | L、-゙=シ |;;;:.. ヽ、 \ヾ;、 l | `゙'i;;;:i ヾ' __ _,rミ`ヾ;!じ' | .! ,: ;;, i;;;:i /Vr‐、,.-'゙_,ノ゙\;;;:. ! ゙i;;:;;;;;:;,.,.,..i;;:i,.,.,,;;/ r─‐''''"_,.ィヾー》;:.| ゙、;;;; ;;;;;;;;;゙i;i;;;;;;/ / ,r'i'''T´゙L、-ク:| |;;;;;| ヽ;i ヾ;;;::゙i;゙i;:| ,j /ヾー^"__,.-rj;ツ };;;j \;;;;;;;;;ヾ'ヽ<ヽj´|´゙! _j=' ./;;/ \;;;;;;;;;;;;;;;;;;\`゙''"´_,、-'゙;;;;;/ ゙ヽ、;;;;;;;;;;;;;;;`゙"_,,、-'´/ `゙'''''ー--─'''´
708 :
デフォルトの名無しさん :2012/08/30(木) 15:54:11.46
ヾ;ヽ、 _ _,ィシ' `゙`フJ=、 」|,、-'⌒ヽ_ |i;;;;;i _(`ヽ--゙- 、 r',、-'´ L;;;ヾヽ、 /;;;;;r' rー _,ヾ;!. \ ./L;;;;i ;i ;!i ヾー、゙! ____ ヽ / i;;i _} ノ;ノく;;. {;l; ,j. { *.} `! ヽ .! i;;i,、=_‐''ヽヾ;ヽ \ヽ;==く;:〈 ゙、 | 7/ {.*.} _/ノi;;( ヽ \ ヾ;;、 ゙i, | | L、-゙=シ |;;;:.. ヽ、 \ヾ;、 l | `゙'i;;;:i ヾ' __ _,rミ`ヾ;!じ' | .! ,: ;;, i;;;:i /Vr‐、,.-'゙_,ノ゙\;;;:. ! ゙i;;:;;;;;:;,.,.,..i;;:i,.,.,,;;/ r─‐''''"_,.ィヾー》;:.| ゙、;;;; ;;;;;;;;;゙i;i;;;;;;/ / ,r'i'''T´゙L、-ク:| |;;;;;| ヽ;i ヾ;;;::゙i;゙i;:| ,j /ヾー^"__,.-rj;ツ };;;j \;;;;;;;;;ヾ'ヽ<ヽj´|´゙! _j=' ./;;/ \;;;;;;;;;;;;;;;;;;\`゙''"´_,、-'゙;;;;;/ ゙ヽ、;;;;;;;;;;;;;;;`゙"_,,、-'´/ `゙'''''ー--─'''´
初心者です。 やはりperlは難易度高いでしょうか? 今までBasicしかやったことありません。
>>709 basicとかgosub地獄で難易度高すぎだよ。
perlなんて勉強して楽しい?ww
初心者です。パイソンは初心者には難しいですかね?
713 :
デフォルトの名無しさん :2012/08/30(木) 16:07:24.38
>>712 難しいし必要ないです。
だいたいプログラミング言語大杉なんですよ。
初心者はきちんと叱ってくれるコンパイラのいるJavaとかがいいと思うぞ。
715 :
デフォルトの名無しさん :2012/08/30(木) 16:14:08.12
>>714 javawwwwwwwwwwwwwwwwwwwwww
いつの言語だよwwwwwwwwwwww
お前さぁwwwwwwwwwwwwwwwwww
やっぱりOs勉強すればいいんじゃないか
あのなぁ〜言っとくけどRubyは国産じゃねーからっ。 モルモン産だからっ!
717 :
デフォルトの名無しさん :2012/08/30(木) 16:17:17.35
pythonとwindows7ってどっちが難しい?
日本IBM元社長が盗撮容疑 警視庁が書類送検へ 駅で女性のスカート内にiPod入れ
2012.8.30 13:15
http://sankei.jp.msn.com/affairs/news/120830/crm12083013160012-n1.htm 女性のスカート内を録画機能付き携帯型音楽プレーヤー「iPod」で盗撮したとして、
東京都迷惑防止条例違反容疑で、日本IBMの大歳卓麻元社長(63)が警視庁四谷署の
取り調べを受けていたことが30日、捜査関係者への取材で分かった。同署は書類送検する方針。
捜査関係者によると、大歳元社長は、22日午前8時ごろ、新宿区四谷のJR四ツ谷駅の
エスカレーターで前に立っていた女性のスカート内にiPodを入れて下着などを盗撮した
疑いが持たれている。盗撮を認めているという。
大歳元社長は現在、同社の最高顧問を務めている。
719 :
デフォルトの名無しさん :2012/08/30(木) 16:21:05.84
720 :
デフォルトの名無しさん :2012/08/30(木) 16:23:23.43
大学のプログラミングでperlやってるんですが 3年になったら何言語やるんでしょう? 1年 C java Basic Javascript ruby 2年 C++ perl な感じです。 2学期後期は何ですか?
721 :
デフォルトの名無しさん :2012/08/30(木) 16:24:37.36
perlとか名前だせーwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww 恥ずかしすぎるwwwwwwwwwwww
>>720 大学名聞かなきゃわかんないな。
設計を教えない学校があるのがさっぱりわからん。
>>720 学生なら年度ごとにシラバスもらってるはずだからそれ見ればわかるよ
724 :
デフォルトの名無しさん :2012/08/30(木) 16:43:15.98
725 :
デフォルトの名無しさん :2012/08/30(木) 16:44:40.90
726 :
デフォルトの名無しさん :2012/08/30(木) 16:47:06.93
PHPって名前がとっつきにくい もっと意味のある文字列にすればいいのに ところでWindowsにはパイソンソフトありますか? 教えろカス共
727 :
デフォルトの名無しさん :2012/08/30(木) 16:48:42.03
おっぱおっぱお
728 :
デフォルトの名無しさん :2012/08/30(木) 16:50:18.65
ばっはばっはー
パイソソソフトってなんだよ。
730 :
デフォルトの名無しさん :2012/08/30(木) 17:05:30.08
うんこ
731 :
デフォルトの名無しさん :2012/08/30(木) 17:21:11.18
もっともつまらないプログラミング言語は何?
732 :
デフォルトの名無しさん :2012/08/30(木) 17:28:14.03
PHPって名前紛らわしいな ネーミングセンスなし
733 :
デフォルトの名無しさん :2012/08/30(木) 17:30:54.76
このスレ次はいらないね
734 :
デフォルトの名無しさん :2012/08/30(木) 17:31:24.77
____ _________ /∨∨∨∨∨∨ ヽ / ̄ ̄ ̄ ̄\,, / __,,,,,,,,,,,,__ \ > | |イアン|ジャイアンジャイアl /_____ ヽ / /エモンドラエヽ \ > _______ | |゙ャイアンジャイアンジャイl |ビタノビタノビタノ| | / /ドラエモンドラエモ\ ヽ  ̄ |オスネオスネス\| | /ジャイアンジャイアンジャ |ノビタノビタノビタ|___/ |/.モンドラエモンドラエモントヽ | _ |スネオスネオスネVオスi |ンジャイアンジャイアンジャ| |タノビタノビタノビ 6 l |エモンドラエモンドラエモンド| | \スネオスネオスネオスネ丿 |イアンジャイアンジャイアン| . ヽノビタノビタノビタ,-′ |.エモンドラエモンドラエモンド| l \ネオスネオスネオ/ \ャイアンジャイアンジ/ ヽビタノビタノ/ヽ ヽエモンドラエモンドラエモン/ / /オスネオスネオく / ヽ / ヽ \モンドラエモンドラエモ/ /  ̄/ ヽ / ヽ | | | o━━━━━━━━┥ | | | | | | シュッ i||!| | | シュッ i||!|/ | シュッ i||!| | | シュッ i||!| | | シュッ i|!i|!i ノ _____| シュッ i|!i|!i | シュッ i|!i|!i ノ _____|シュッ i|!i|!i ノ _______ | ( / ( o / ( / ( / ヽ───┴─ ′ ヽ─────── ′ ヽ───┴─ ヽ--───┴──
735 :
デフォルトの名無しさん :2012/08/30(木) 17:40:35.94
うおおおおおおおおおおおおおおおおおおおおぉ
736 :
デフォルトの名無しさん :2012/08/30(木) 21:41:28.99
次スレいらないね
737 :
デフォルトの名無しさん :2012/08/30(木) 22:20:33.95
そうだね
あのなぁ〜言っとくけどRubyは国産じゃねーからっ。 モルモン産だからっ!
739 :
デフォルトの名無しさん :2012/08/30(木) 22:32:41.49
おっぱいの飲み方教えて
しゃぶれよ
741 :
デフォルトの名無しさん :2012/08/31(金) 00:38:34.37
ぶっさーwwwwwww
>>720 専門学校は大学じゃないだろ
それにしても本当に役に立たない講義ばっかだこと
専門学校ってそんなに色々な言語やるのか。即戦力としては大卒より遥かに使えそうだな というか大学生は情報系でもあまりプログラミング出来ない
それに専門卒のが経験年数長くなるしな。 ただ、プログラミングできちゃうと設計の勉強しない奴が多くて困る。プログラミング能力がイマイチで、破綻したりするやつの方がいいのかな。
>>743 大学で学ぶのはロボティクスやニューラルネット、パーサーだとか
基本的には下位レイヤーでしか役立たないよ
てか、専門学校の内容って業務系以外で役に立たないでしょ
大手のメーカー系を落ちた情報システム科は基本的に無能扱いされる運命w
実際は業務を担当する人間が多く必要だろうからなあ
業務系なんて国立の情報科を出る必要が全くないよ てか、業務系でやってることは何れもjavaで十分に見えるんだけど、 専門学校の講師供はカリキュラムを見直せよ
日本には大企業よりも中小企業のほうが多い。 中小企業が全体の99.7%を占めるって知ってる? 何が言いたいかというと、必要とされる仕事ってのは 中小企業でやる仕事がほとんどってことだよ。 大学でた人は0.3%よりもはるかに多いだろ? つまり、大学でた人の殆どは中小企業に就職する。 じゃあ中小企業で何をやるか、 自ずとどんな仕事が多いかわかるだろう? そんな高度で立派な仕事なんてまず必要とされないから。
中小企業でもニッチ市場を狙って制御やデータマイングやってるところあんだろ 基本的に中小企業の経営者は計算機の世界に理解がないし、学歴もダメw ジジイの資産を肥やすなら大卒のベンチャーに就職した方がまだマシだよ
751 :
デフォルトの名無しさん :2012/08/31(金) 02:24:32.47
おまえ等が専門卒じゃないことはわかった 専門は全てにおいて大学に劣る 専門知識に特化するわけじゃなくて大学生とくらべて専門知識しか持ってないだけの話
大学生あるいは専門学校生といった所で その質はピンキリなわけだから、雲をつかむような話にしかならんよ
あれ、語調がuyっぽい人がいるw だいたい新しい言語ってプロジェクトに参加してから働きながら覚えるものじゃないのか? ガベコレ付きの、それも賞味が切れた言語ばかり教えてどうすんのさ あれじゃ、ピラミッド構造の最下層でコーダーするためにあるようなものじゃないか あれならc++とjsのイディオム集にでも時間割いた方がマシだよ カリキュラムが本質的に馬鹿げている。
>>753 いろんな言語やっといて基礎が身についてないと、新しい言語の理解も遅いと思うけどね。
lispを理解したら今まで使ってた言語も、よりわかるようになったよ。
>>754 大学はcとscheme/prolog/ocamlあたりしか教えないよ
それ以外はプログラミングアプローチとして新しいものがないってさ
せめてOOPとデザパタぐらいはカリキュラムを新しくして欲しいところ
756 :
デフォルトの名無しさん :2012/08/31(金) 02:53:44.50
全言語覚えさせりゃ良い
比較プログラム言語論を必修にすればよい
そんなだからデジタル土方なんて言われるんだよw
計算機科学という分野で知るべき、あるいは教えるべき内容は非常に広範で その一部をカバーするために使用される言語としてJavaが使われることもあるというだけ 標準的な手続き型言語+オブジェクト指向プログラミングぐらいまでは対応できる その他、低水準な部分にはCだろうし、計算理論ではSchemeかもしれないし 情報理論とか形式言語論ならプログラミング言語すら使わず数式ばっかりかもしれない アルゴリズム論とかであればスクリプト言語が適当かもしれない 実際Python/Rubyを入門に使ってる大学もあるそうだし
まあ、それが大学だが、 社会に出て必要になる知識は少ない。
omt入れて欲しいな。 プログラミングだけじゃ、何かを作るとこまで行かない。
>>759 自然言語処理やAIで研究室に所属する前の夏あたりでpython/rubyの自習でもするもんだよ
制御はoctave/matlabで論文の数式ガリガリやってたはず
並列処理みたく計算量が多いとこはcしかやってなかったな
javaで実装するのは面倒で、どっちかっていうとc++の方が好まれるじゃないかな
どんどんc++の新しい機能を覚えて、c++が大好きになって、最後には大嫌いになる
smalltalkerやhaskellerの教授が居たら、そこの研究室に行く方が幸せだと思うよ
転職時においしい業界に移れる可能性は高まるから
>>760 そのレスからは底辺臭しかしない
大学は企業でお金を稼ぐための勉強をする所じゃないからな 企業側としても、金にならない研究がしたいならウチに来ないで大学に残れと思ってる 大卒を欲しいとすれば、研究する過程で身につけた問題解決能力だろう 専門学校でもそれをうまく教育出来れば良いが、もともと地頭が悪い学生だから上手くいかないんだろうな 大学行って当たり前みたいな風潮が間違ってる。殆どのしょぼい大卒は下っ端になるだけだから 専門学校に行けば良い
馬鹿だな。学生時代の知人の一部は社会的に大成功するんだよ!仲良くなっておかないと それにIT業界から脱出するなら学歴はあった方が良いからね 専門学校程度のカリキュラムなら大学へ行く方がまだマシだよ 学のない馬鹿な経営者に騙されずに済むからね
765 :
uy :2012/08/31(金) 03:21:35.57
逆に考えると専門にはいれば 論外的に才能ない奴はすぐ挫折していなくなるから、かえってそのほうが早期にIT脱出できて幸せなんじゃね 大学だと才能なくてもやめずに4年間ズルズルとやり続けて産廃になってる可能性もある 才能がないなら早めにリターンしたほうが絶対良い
日本の雇用流動性では脱出出来ない。出来ても大幅グレードダウン。 学歴があった方がいいのは事実だが、いまどき大卒なんて普通すぎて意味なし
>>765 最終学歴で初任給が決まるし世の中の面接官の多くは今でも学歴で人を見るんじゃないかな
それに情報科へ興味もなく入った奴は、さっさと別の業界へ行くからね。
出版とか気球乗りとか工員、外食、パチ屋とか
ああそうだ、上流工程ならパワーポイントだけで済むらしいよ!
>>766 web系なんてコンテンツビジネスばかりだし、
今後は専門的な記事を書くライターが増えるんじゃないか?
物書きねぇ…
>>765 論外までくらいなら進学する前に気付けよ。
てか、プログラマ()を目指さないような学科なら、 教員免許や公務員試験、TOEICの対策ぐらい簡単に出来そうなもんだけどね
772 :
uy :2012/08/31(金) 03:53:29.61
>>770 内情を知らないのか
1年で3分の1は消えるらしいよ
俺のいってたところはもっとだったが
>>772 なるほど。専門だとこういうのが育つのか。
>>772 プログラマになって1年で3分の1が辞めたってことか?いい気味だ。ザマーミロ
俺の知ってる連中はhello worldぐらいしか書けなかったぞw
GUI?ライブラリ?何それオイシイの?HSPスゲーだってさ。お前ら死ねよ
2chラーの公務員率は異常
あのなぁ〜言っとくけどRubyは国産じゃねーからっ。 モルモン産だからっ!
BOOOOOOOOOOOOT!!!!!!
JavaとかC#のお仕事楽しくない!
世の中の多くは大卒だが やつらはよく辞める。
他にもっと楽で稼げる選択を知っているからな 公務員やカリスマ塾講師()でもやった方がマシな人生だ ソフトウェア開発なんてGNUに魂捧げたマヌケだけで十分だよ
Rubyとモルモン教ってどのくらいつながっているの?
楽に稼げるカリスマを肯定したいのか否定したいのか はっきりしろよ
>>763 大学教授は頭いいことは認めるけどあいつら研究本当にやってんの?
大学によると思うんだけど。
狭い大学はどうなってんだ?
しかも50〜60の爺じゃん。プロジェクト的なことできんのか?
CINIIなりIEEEなり覗けば、何やってるか分かるよ
common lispで当時最先端の音声認識のプログラムを書いたような苫米地が、 キナ臭い洗脳と自己啓発紛いのアホな書籍で金を稼ぎ、 小学校時代からプログラミングを初めてredhatからスカウトされる OSSのコミッタでも企業で大腸菌の研究をするのがIT業界だよ 多くのスーパーメディアクリエイターもIT業界には進みやしない 頭の良い奴らはジジイに使われて才能なんて生かせないと気付いている
>>783 学生が半年で済むようなことを何年もかけてやってる教授も居るよ
学生のアイディアを片っ端から壺職人みたく破すだけの教授もね!
研究室の教授が何しているかは就活時にかなり重要だよ.
もっとも大学によっては既に研究室の選びようすらないけどね
そういうときは人生を諦めて一番楽に卒業できる研究室を選ぶと良いよ
意識の高い学生()は入学時から教授の品定めと専攻分野をさっさと決めとけ
viを二分割できるハッカー()やら、cをよく理解してない教授が「PGは高卒の仕事」とか言ったり、 プログラムを書いたことのない教授がコンパイラの講義を教えていたり、 右とか左の学生がGCの名前すら知らなかったりとにかくカオスw そして、連中をありがたく雇用する大企業(なぜか中小企業ほど人を選ぶ) コミュ力だとw
プログラミングに使う時間なんて本当は少しで良いんだよ oreillyやspringerから金になるものだけ選んだ方が方がマシ 確率微分方程式が金になるよ。半年から二年ほど片手間に勉強すれば十分だ どこかのアホ経営者が書いた本なんてのは読むだけ金と時間の無駄
基本的に大学生は動的言語()なんて触っちゃダメだ.javaやjavascriptなんて最悪. 悪いことは言わないから関数型に全力を注いで金融関係のところ目指せ
>>789 僕ちゃんはます、動的型付け言語が何かからお勉強しましょうねー。
>>790 奴隷商乙w
最近の関数型はREPLが付いてるし動的言語なんて学んだらダメだよ
Javaは静的なんだぜ?
インタプリタと勘違いしちゃったのかな。
794 :
デフォルトの名無しさん :2012/09/01(土) 07:38:12.30
rubyの話題が出てくると、関数型orJavaScriptの話題になる率が高い
そいつはただの奴隷だ
31 :デフォルトの名無しさん:2012/09/01(土) 04:11:42.21
関数型で金融系を目指すのが一番だって.それかRかmatlab弄って生産管理あたり
動的言語なんて触っていたら底辺コーダーのまま
アホ経営者に人生を使い潰されて終わちゃうよw
34 :デフォルトの名無しさん:2012/09/01(土) 04:13:59.82
>>31 発想が奴隷だな
かわいそうになってきた
35 :デフォルトの名無しさん:2012/09/01(土) 04:14:43.56
奴隷wwwwww
kwatchのブログで恥晒してたバカ学生思い出した
796 :
デフォルトの名無しさん :2012/09/01(土) 12:10:40.65
ゴミwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww ゴミゴミゴミゴミゴミwwwwwwwwwwww うぇwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
>>795 世の中には、2chだからヤれることあるだろ
それを最近のバカ共はtwitterやfacebookでやらかすんだw
798 :
uy :2012/09/01(土) 19:38:52.71
バカなんじゃね?
ちんこなんてのもいたな
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´∀`)< オマエモナー ( ) \_________ | | | (__)_)
コテ名乗らないだけマシだよw
803 :
デフォルトの名無しさん :2012/09/02(日) 11:26:36.10
ゴミ
関数型とかワンマンプログラマーのオナニー開発でしか使わねぇよ。 関数型を使えるとか言ってる時点で現実を直視できないニートプログラマ。
jane streetみたいな美味しい仕事したい
>>804 底辺土方乙
これなんだよな。関数型が糞で在り続ける理由は。
>>806 javaやPHPがIT土方と言われる所以すら知らないで作業している底辺土方ってイメージw
javaやPHPの仕事が圧倒的に多いからだろ
誰にでも出来る外食チェーンだよw
誰にでも出来るって言語を設計する上で最低条件だろ 誰にでも出来ない言語があるとしたらそれは間違いなく糞言語
あと外食チェーンが誰にでも出来るとか脳みそ腐った奴とは会話が成立しない気がする
君本物の馬鹿でしょw 誰にでもできる仕事だってことだよ 関数が重宝される理由ぐらい調べてみるといいよ これから生きるには土方にも教養ぐらい必要だろうから
まあ関数型脳の奴が腐ってるのは昔から周知の事実だけども
関数型言語が重宝されてる仕事なんてないよ
動的言語とwebアプリしかしらない底辺コーダーって、頭の中がお花畑で幸せそうだな
誰にでも出来る仕事なんて無数にあるけど、それは関数型言語でやってもいいわけだよね なんで関数型言語でやらないの。それが糞言語だからでしょ。真っ先に重宝されてないじゃん。
cでシステムを書く必要があったから、そのままc++,javaと発展しただけだよ 過去の名残りだってことぐらい分かれよw 大手も必要な処理は関数型プログラマを集めて活用してるもんだよ
なんでそのまま発展するわけ?それで問題が全くなかったからだと考えないわけ? 関数型プログラマを集めるってなんだよwポール・グレアムに毒されすぎだろw
関数型の歴史はC並に古いし、別に無視してきたわけじゃないよ ちょっと検証すれば論外だって気づくわけ、まともな脳みそを持ってれば
でたよw common lispが関数型だと思っている馬鹿がw あれは、rubyと同じ動的言語だよ
関数型は根本的に潔癖というか、一部の信者が騒ぎ立てるに十分な異常性を持ってる だから手続き型言語に持ってきて俗化した関数型言語の機能はみんな使うしそれで十分なわけ というか関数型言語とかもはや存在価値ないよ
一部の人は関数型言語を有効につかっていそうだけど、ここにいる人は結局副作用バリバリの手続き型風で書いてそうw 結局設計。
>>822 設計を失敗しないって、屏風の虎を出させるようなもんだろw
そうでなくとも文法と型推論だけでも恩恵あるでしょ
関数型言語クラスタの皆さんは手続き型言語を馬鹿にする暇があるなら その最強言語でキラーアプリを作った方がよろしいかと^^
手続き型しか使えない土人ばかりで世間に普及しないんだよ^^ javaやPHPしか使えない奴らは、そもそも学習障害者しかいないから さっさと障害者手帳でも貰ってIT業界から去れよw
マイノリティがぶうぶう言ってる間にも 普及してる言語は情報もライブラリもアプリもコミュニティも拡大して差は広がるばかり
関数型言語は理解だけじゃなくデバックもしにくい デバックが必要な人が悪いってか?
なんというか世界の狭い人だなあ。
特に重要でもない雑事を片付ける道具が増え続けてるだけだよ 一部の重要な仕事をするのに動的言語やc++は明らかに向いていない そして、動的言語とjavaには延々と馬鹿が募りぶくぶくと同じことを延々と繰り返す これが土方や外食チェーン以外の何者なんだ?
関数型でやるべき一部の重要なことって何?(笑)
知らないよ。使ったことないし
すげー!
多分、金融計算や並列処理、複雑なパーサー書いたりだよ
たぶん・・・
だいたい、javaやPHPしか使ったことないしね
関数型言語信者の知能はヤバいくらい低いな(笑)
OOPはGCなしでもできる 関数型はGCも必要だし型推論も必要だ 型推論がないと動的言語という別のジャンルになってしまう だから関数型は普及しない
何もしらない豚って、生きてるだけで毎日が幸せそうでいいな
>>839 世の中には可逆的な反応と不可逆的な反応があるんだよ
そして、君は知ってしまった.今日から毎日が哀れなソクラテスだよw
関数型言語が糞ってだけの常識的な話じゃん 一人話を逸らそうとしてる意味不明なやつはいるけど
まったく幸せな豚って奴は人の話すら聞かないらしいな
関数型言語は馬鹿にされて然るべきだろ。少しは現実を受け入れろよ ちょっと馬鹿にされると、「こいつは関数型言語の高尚さを分かってないなあ」みたいなウンコみたいな態度を取るだろ 分かってないのはお前だから。関数型言語でないと出来ない仕事なんてないし 情報も少なく、学習コストが高く、コミュニティも小規模で排他的な救いようのない言語をあえて使う必要性がまるでないわけ 「ドストエフスキー読んでます(ドヤ」みたいな趣味自慢のくせに、なぜか社会での有用性を主張し始めるからキチガイになる そのくせなんの具体例も挙げない究極の馬鹿
>>843 豚ってのは関数型コミュニティが作り上げたソフトウェアをググる知能もないらしいなw
うん、PHPとjavaは良い言語だ。毎日が幸せだ。よかったね!
結局、関数型言語でどういうシステムを開発するのか 知らないんだよな? どこかで見聞きした話をつなぎ合わせただけなんだろう
そりゃアプリケーションで言えば手続き型言語の方が圧倒的だから 豚豚と連呼することしか出来ないわな というか、関数型言語全体よりJava一つの方が実績は大きいだろ
>>845 どうせポール・グレアムの受け売りだろwww
うるせー、お前らは豚だ豚豚 俺こそが最先端にいるんだ!
NTTやIIJあたりのサイトから活用事例みてこいよ、豚共.
型付けとパラダイムは直交だろ…… Erlangみたいにオーソドックスな関数型言語でありながら 動的型付けってのは成立する
そんでErlangなて誰も使ってないじゃんw
お前の豚小屋で使われてないないだけだろ.俺の豚小屋でも使われてないけど
あれ、マ板の臭いがするw
そりゃ、まいった
>>850 ErlangとかClojureって
パラダイムと直交するはずの並行処理を、関数型の特徴であるかのように見せているよね
外食って美味しいよね
859 :
uy :2012/09/03(月) 06:26:47.99
なにこの、俺の要約したまとめレスを待っているかのような待機状態のスレ つまり関数型とはOOよりも出来ることを減らして少ない規則の中でプログラムを組むって事 バカには無理 バカじゃなくても無意味
uyには無理
関数型言語使いは、手続き型も関数型も書けて、その上で関数型を選んでる。 ドカタは手続き型しか使えない。選択してるわけじゃない。馬鹿なだけ。
副作用のある部分と無い部分を分離できることを 型レベルで保証するのがHaskellのメリットだけど、 普段から副作用をコード全体にまき散らしてる人には不便に思えるだろう
>>863 OOは手続き型や関数型とレイヤーが違う
関数型でOOできる
なんだ設計じゃなくて文法レベルか。設計にあったものでいいよ。って、設計できない人か。
>>851 使われているということと日本のプロジェクトで採用されているかは少し違う
867 :
デフォルトの名無しさん :2012/09/03(月) 11:19:08.83
関数型は自分から自由度さげてるんだよね
ねえ、関数型言語がなんで流行らないのかの議論を何年続けるつもりなの? 終わってんだよ、関数型言語は。
というか、始まってすらいない。
関数型言語を流行らせたければ、手続き型言語みたいにすることだなw
副作用は便利すぎるから、基本的にあるものとみなさないとプログラミングなんてやってられないのよ。これが常識
「俺の常識」ですねわかります
>>867 アセンブラ以外で自由度を下げてない言語なんてあるの? 規約を設けることで保証をして品質を上げてるわけでしょ。
間違いなく一般論だろ
>>873 ユーザビリティを考えて設計してるか、関数型の幻想に囚われて設計してるかの違いはある
>>875 ユーザビリティって画面設計しかしないタイプか。
関数型言語の特徴というものが、そもそもプログラミングにおけるデメリットリストみたいなものw
>>871 副作用のある部分は単体テストしにくいから別にするだろう。
>>876 ???関数型言語が不便すぎるのは画面設計が失敗してるからなの?
自由度を上げたいやつは、まず特定のパラダイムに定住するのをやめろ
ユーザビリティ => 画面設計 の理由を聞いてるんじゃないの?
>>876 はユーザビリティって画面設計とかUIのこと言ってんの? って訊いてるんだよ。
884 :
デフォルトの名無しさん :2012/09/03(月) 12:24:36.40
言葉の意味も知らないで、ググった結果を 自分なりに要約して書いているだけだから、 虐めないで!
脱税アフロと対談とか胸厚
888 :
デフォルトの名無しさん :2012/09/03(月) 13:05:58.85
これはキモいな 2匹とも死ねとつねづね思ってるぞ俺は
889 :
デフォルトの名無しさん :2012/09/03(月) 13:33:26.47
ゴミ
>茂木 ハッカーのような友達に聞くと、プログラマの開発効率は人によって10倍、あるいは100倍の差が出るとか。それは本当ですか? アハモジャの知人ってだけで、自称スーパーハカー()のワナビ臭がするw 大学教授が言うプログラムが、ほとんどhello wolrd止まりだしな
891 :
デフォルトの名無しさん :2012/09/03(月) 17:49:24.53
は?
刺身にタンポポをのせる仕事なら10倍100倍の差がつくのは考えにくいけど プログラミングで10倍100倍あるいはそれ以上の差がつくのはサルでもわかるだろうに
生産性のことじゃないよ 茂木の友達のこといってんだよw
Super Hello Worldは通常のHello Worldの10倍の威力があるのです。
895 :
デフォルトの名無しさん :2012/09/03(月) 18:25:20.43
スーパーハローワールドは関数型じゃないとかけない
わたしのhello worldは108式まであります
Super Mario World?
898 :
デフォルトの名無しさん :2012/09/03(月) 19:30:27.10
よく見たらスレタイからrubyが外れているw
899 :
デフォルトの名無しさん :2012/09/03(月) 21:04:31.93
rubyの位置にjsがきた ほんとにLLとしてjs使ってる奴がいるのか甚だ疑問だ
900 :
デフォルトの名無しさん :2012/09/03(月) 21:11:15.55
/ , ::| |ヽ\ \ / / / | ::/| :| `、`、 ヽ / / / | ::/ |::| `、',ヽ ', ', r┐ r┐ヾ> ,' i | :/' | | ::/ i:| ', i ヽ i ',. | | lニ コ ,' | ! :,' i|| ::/ || || `、 | | | | レ! _| |. | | |`i'-,,, | | ::/ | | ', | | | ヽ/(___メ> | | ||.| `二=,,__,,, ,,,__... -!´ト, | | ,、 . | . i | | //:::C, 7::c\ ||ヘ.| | (( | .| | / {::::::::::::} {::::::::}`、 ,' .| i )) | /´'| | ヽ::::::ノ ヾ::ノ .| | (( | { | |:::::::: , .... | | )) | \', '',''''' __ ::::::::: | i (( | .:::', ', / ` ー --、 | | )) / .:::::::', :: ', / } / | (( / ...:::::::::::'、::. ',、( / ,イ|:: : | ` / ..:::::::::::/'`、:::.. ',`'' - ,,____ノ,,ィ::´:::i ',:::|:: | / 7 `-ー-´/ /:::::::::/ `、、 ', /`、\:::::::::::::::,':::::::,' |::||:: | ┌‐' 'ー┐ト、  ̄ ̄/ ./:::::,-{ \ `、、 / \::::::::,'::::::/ .|:i'|: | 7 /_7 / 」__〉 / // \ \ ヽ/ }::::/:::::/ | |:| 〈_/ヽ_/
・グローバル変数はどこからでもアクセスできて便利 ・Gotoはどこへでも制御を移せて便利 ・手続き型はどこでも副作用を書けて便利(NEW!!)
902 :
デフォルトの名無しさん :2012/09/03(月) 22:41:25.34
関数型って遅くならない? 動的に関数作り出したり
もしそうだとしたら普通のメソッドよりもstaticメソッドの方が速くならない?
904 :
デフォルトの名無しさん :2012/09/03(月) 23:56:06.98
つまり関数型は遅くならない
単純に処理系に投資されてきたリソース量が違うから 原理的には大差ないバイナリを吐ける部分でも 最適化で負ける可能性はある あとは勝手に遅延評価されてたとか、加算したいだけなのに 多倍長整数も考慮したジェネリックな+になってたとか、 リストの中身がボックス化されてたとか
907 :
デフォルトの名無しさん :2012/09/04(火) 02:09:26.37
908 :
デフォルトの名無しさん :2012/09/04(火) 05:19:55.98
遅いだろ どうやっても動的に処理を入れ替える関数は バイナリにしたってインタプリタに近い
実際のところ本当の意味で「動的に関数を作り出す」のが最適(もしくは必須)な処理ってどういうのがあるの? ほとんどの場合は一度作ったら内部的に使いまわせるような気がするのだけれど
910 :
デフォルトの名無しさん :2012/09/04(火) 05:36:56.80
プログラム起動後に外部からの入力によって処理を選択させたい時
漸化式を頭使わずに書きたいときとか
912 :
uy :2012/09/04(火) 06:10:45.02
n = 2 def f n if n == 2 p 3 else p 4 end end f n # ↓ r = if n == 2 ->{ p 3 } else ->{ p 4 } end r.call
>>910 >>コテ
それって結局処理内容そのものは固定じゃね?
内部的には静的と変わらないと思うのだけれど
(コテのも多分内部的には定数化されてんのじゃないのかね
Rubyの内部仕様は知らんが少なくともそうできる処理だ)
>>911 うーん…解くにしても
その式自体が欲しいなら動的関数というより数式処理の範疇だし
答えが欲しいなら固定でいいような気がすんだよな…
まあ、数式処理の過程で簡易的に使うのは楽かも知れん
ジェネレーターとかで役立つんじゃないの
高階関数 f(g, x) = g(x) は メソッド呼び出し f(x) = x.g() と速さ同じじゃね? C++みたいに仮想関数じゃない場合は別として。
関数を作り出す関数はインスタンスを作り出すコンストラクタと同じ
>>909 実際のところ本当の意味で「動的にインスタンスを作り出す」のが最適(もしくは必須)な処理ってどういうのがあるの?
ほとんどの場合は一度作ったら内部的に使いまわせるような気がするのだけれど
wwwwwwww
関数を作り出す関数っていっても、 ほとんどは既存の関数を新規のスコープ(バインディング?コンテキスト?)と 結びつけて返すだけじゃね? rubyのevalみたいなので実際に関数そのものを作り出す場合はちょっと別だけど
Javaドカタはラムダを使った事が無いので ラムダとevalの区別がつかないww
なくても何とかなるけど あったほうが良いってだけ 使えない奴は死ね
Javaにもラムダあるっつーの
というか、ラムダは最高!Javaは糞!みたいな話しか出来ないのかよ Javaとかこのスレに何の関係もない勝ち組言語だってことを受け入れろ
OOPには、関数は寿命がないがオブジェクトは寿命がある、という前提があって、 寿命がないものはクラスに入れて寿命があるものは変数に入れるようになったようだ。 寿命を持つラムダを認めると、クラスという入れ物の価値が下がってしまう。
924 :
uy :2012/09/04(火) 10:17:01.21
全ての関数はオブジェクトとして扱いインスタンス化すべき
>>923 そんな前提あったっけ?
例えばjavaだとnoclassgcを指定しないとクラスもGC対象だけど
>>925 クラス自体を対象にするのではなくClass型のstatic変数を作って対象にすればいい
C++ならそうなるわな
927 :
uy :2012/09/04(火) 11:50:14.23
継承がカスって認識がひろまって ミックスイン主流になれば 次にクラスではミックスインの性能生かしきれないことに気づいて そしてようやくラムダ主流になると思う 10年後くらい
継承でやるべきことを ミックスインでやるなよw 別のものだからな。
929 :
uy :2012/09/04(火) 22:53:48.60
なんで初心者って ああもういいや
930 :
uy :2012/09/04(火) 22:55:26.12
スタティック変数と同じように 「間違ったもの」としてこれから消滅していく概念が継承 異論は認めない
継承と同じように 「間違ったもの」としてこれから消滅していく概念がミックスイン uyはトレイトをまだ知らない
932 :
デフォルトの名無しさん :2012/09/04(火) 23:05:28.08
それ2度目だな イラスト界隈を見ていると、 プログラミングの世界にあるオブジェクト指向(笑)よりも程度の低い 幼稚な一般常識が広まっている 上手い下手とかじゃない、無意味な誰得概念のオンパレード アナログだからみな気づかない この世界は幼稚すぎる、そう感じてしまう俺は生きる時代を間違えてる 世界はまだ成長できるよ 俺はこの時代に生まれ、このスペックを持った事は不幸かもしれない 世界の幼稚さに毎日呆れるばかりだ
933 :
uy :2012/09/04(火) 23:30:47.07
いつのまにか絵の分野でも世界一位を獲得してた 周り下手すぎる ふと見返せば周りの絵のどれと比べでも俺様のほうがうまくなってたわ ほんと難易度の低いゲームだな ちょっとシフトしただけでもう1位か あっけなさすぎる
言語仕様で消えたものなんて無いからw
共通項は客とトレンドに合わせなければ仕事と需要がないってだけだよ
936 :
uy :2012/09/05(水) 06:02:43.68
積極的に使われなくなったもの goto DEFINEマクロ スタティック変数 ユーザー定義のグローバル変数 素でポインタを触る行為 クラス 継承 JAVA
自社開発できない底辺はそうだね
継承でできること ・ポリモーフィズム:ダックタイピングできるなら不要 ・実装の再利用:機能追加のために継承関係などというツリー構造を入れるのは コードを密結合させる悪手 結論:LLに継承は不要
ooわかってないのに無理に継承使うなよ。
940 :
デフォルトの名無しさん :2012/09/05(水) 08:26:58.48
最近の言語マクロないから自作した
941 :
デフォルトの名無しさん :2012/09/05(水) 08:28:20.53
継承つかわないと必要メモリ量ふえるよ
メモリ管理指向が許されるのはC++までだよね
メモリ使用量的には継承もミックスインもそんなかわらんだろ
Java屋さんに聞きたいんですが詳細設計書くの面倒じゃないですか?
945 :
デフォルトの名無しさん :2012/09/05(水) 12:18:24.55
コードスタックのメモリ使用量なんて問題になるわけもない
継承が使えないと無駄に工数が増えるし ライブラリとして用意されているクラスを 使いづらくなる
>>936 インスタンスっていうのは今でも使うのかい?
948 :
uy :2012/09/05(水) 15:29:07.55
なんのインスタンスだよ 全てのオブジェクトのインスタンスのことであれば 俺様最高設計の中では、動的にインスタンスを一切生成しない構想もあったが まだやってない
949 :
デフォルトの名無しさん :2012/09/05(水) 15:39:45.27
インスタンスの無いコーヒーなんて
>>948 クラス・継承が積極的に使われなくなったとすると、インスタンスは
どうですか、という質問は至極当たり前のものだろ。
実際には使われているらしいことはすぐ分かるが。
951 :
950 :2012/09/05(水) 16:21:47.23
積極的には使われなくなった だね
952 :
uy :2012/09/05(水) 18:26:42.85
そんな内容のないレスかいてて暇なの?うらやましいわ
継承が無くてもtraitsかmixinがあれば十分だろ 継承使ってるとか言ってる馬鹿はどうせ コード上でバージョン管理やってるだけだろ
954 :
デフォルトの名無しさん :2012/09/05(水) 20:50:24.78
そうでっか
956 :
デフォルトの名無しさん :2012/09/05(水) 21:45:48.43
コード上でバージョン管理やってる例のアイツはこのスレになんていて欲しくない
関数名の最後にExをつけるアレってバージョン管理?
単に名前考えるのが面倒なだけ
>>957 ドカタ長くやってると読解力も衰えるのか?
>>958 cmp,fn,gc,buf的なサフィックスでしょ
トレイトをミックスインみたいな古代文明の遺物と同列にすなーッ と、隣のスモールトーカーが申しております。 ちなみにスカラのトレイトは名前だけで正体はただのミックスインなんだそうです。
>>944 内部向けにはクラス図からコード生成するし、客向けにはjavadocで済ます。複雑なとこは別途なんきUMLで補足する。
Javaが一番楽だと思うけど。他の言語でもっと楽な方法あるの?
>>962 RubyのmixinとSmalltalkのtraitsとScalaのtraitsとPerlのrolesの違いをくわしく
mixin: 制限付き多重継承 trait: メソッド衝突検知機能付きコピペ
966 :
デフォルトの名無しさん :2012/09/06(木) 08:05:40.04
衝突した時の動作って決まってないの? 同じ名前なのに言語によって仕様違うとか困るんだけど
Traitsはフラット化がミソなわけだから、コンパイル時に衝突検知してそのまま 普通にコンパイルが通らないというのが正しい仕様だろう。
968 :
uy :2012/09/06(木) 09:03:19.49
module A ; def ff ; p 1 end end module B ; def ffff ; p 1 end end class Module def uy inc self.included_modules.+([ self ]).map do | m | b = inc.instance_methods.&(m.instance_methods) return p("juuhuku_is_#{inc}_#{m}_#{b}") if b.empty?.! end self.class_eval { include inc } end end class C def ff ; end uy A uy B end module D def ffff ; end uy A uy B end module B ; def ff ; p 1 end ; end class E uy A uy B end 重複チェックってたったこれだけだろ 何でMatzはこの程度も作れないの?初心者か
>>968 フラット化っていうくらいだからインクルード順に依存する実装じゃだめだろう。
あとモジュール変数の衝突とかどうするの? ステートレス・トレイトはもう古いよ?
972 :
uy :2012/09/06(木) 18:44:04.67
どこをどう読めば順序に依存してんの モジュール変数って用語はrubyにない@@つきのクラス変数ってことなら参照可だろrubyは 重複チェックは余裕で実装可
974 :
uy :2012/09/06(木) 21:23:03.41
最初にself.includedで書こうとしたら無理だったから そこで勘違いしたような気しかしない
メソッドが後から追加されたときはどうするの?
976 :
uy :2012/09/06(木) 22:23:43.46
そういうのは全部情報辿れるから つかインクルードした側の一覧がないか だったらメソッドuy内でなんかの変数にでも追加して情報もたせりゃいいだけ rubyソースコード内だけでトレイト実装するための条件はクリアされてる
情報もってどうするの? モジュールにメソッドを追加する手段なんて山程あるのに、 それに全部対処できるの?
978 :
uy :2012/09/06(木) 22:45:07.39
さっきから質問頭悪すぎ 最重要コードはあげたんだからあとは自分で考えれば
例えば動的にmethod_missingのアルゴリズムを変化させて、 モジュールが応じるメソッドを任意のタイミングで変化させてる場合なんてどうする?
にげたw
システムに近い部分に手を入れる場合、それをどうやって実装するかより、 それがどんな影響を及ぼすかを考えるのが最重要なんですけどね
982 :
uy :2012/09/06(木) 23:09:51.40
無条件でオーバーライドするのは元々のruby仕様 んでチェックしてエラーだす方法は提示したよね これでわからないならもうあほだ
983 :
uy :2012/09/06(木) 23:14:53.01
>>981 トレイトがないみたいな流れだからとりあえずの実装をしただけ
俺様的にエラーだしてプログラム停止ってrubyっぽくないと思うからトレイト入るとしても
他言語のトレイトにはならないだろと思う
>>982 馬鹿には全部説明しないと理解できないのかな
おまえが提示した方法じゃrubyのメソッド重複チェックはできないと言ってるんだよ
985 :
uy :2012/09/06(木) 23:21:26.45
そっか ruby学んでください
トレイトってダイヤモンド継承したとき トレイトAとトレイトBで同じメソッドがあった時どうなるの? ダイヤモンド継承で同じメソッドがあるときでもエラーにならずに コンテキストに応じてトレイトAとトレイトBを見分けて、 適切なメソッドを仕組みを備えているのはVBだけなのかな?
ダイヤモンド継承w
>>979 意味的にはmethod_missingは任意のメソッドと衝突してるから
method_missing実装してたら即エラーにすべきじゃない?
変なコードを書いた時の動作は、未定義でいいだろ?
書いたらどうなるか定義するより、 何も書かなければ何も影響しないことを保証するのが先
ひとつ確実な事はSmalltalkはゴミすぎて traitsがあってもRubyの1/10も普及しないということだ
992 :
デフォルトの名無しさん :2012/09/07(金) 01:50:17.22
>>991 Smalltalkがゴミなのは異論ないけど
('70年代の「メッセージだけで言語とかつくれんじゃね?」的一発ネタを引っ張りすぎだろ…)、
そのゴミのゆうに百倍以上の人間がすでに関わっていながら、
そのゴミをアイデアや文化の源泉として未だ凌駕できないばかりか、
そのゴミから出てきたTraitsすらまともに実装できないRubyのゴミ以下の硬直っぷりを
なんとかしないといかんと思うわけだよ。
Rubyからもっと新しい開発手法や言語機能を創出しろよ。ゴミに笑われるぞ。
Smalltalkの現実的な後継で実用化に成功したのはObjective-C
996 :
デフォルトの名無しさん :2012/09/07(金) 10:02:44.14
よく使われて言語と言語設計や機能的に成功してるは完全に別
997 :
uy :2012/09/07(金) 10:14:10.47
1から10まで全部作らないと理解しないとか流石に。 メソッドだろうとクラス変数だろうとuyメソッドと同じようにかけよバカ rubyで重複チェックは作れた そんなにトレイト欲しいなら処理系にトレイト実装されなくても重複チェック機構は作れる 自分でかけない奴が勝手に発狂してゴミ扱い 動的言語でよそにある概念引っ張ってこれないとか早々ないから
>>995 Objective-Cみたいな中途半端の出来損ないがSmalltalkの後継とか笑える。
そもそも「実用化」ってなによ? Smalltalkエンプラで使われて久しいんだけど。
いまだに Smalltalk=アラン・ケイの暫定ダイナブック環境 とか勘違いしているとか?
おはようw悔しくて夢にまで出てきたのかな?w
1000 :
デフォルトの名無しさん :2012/09/07(金) 10:24:31.32
rubyでトレイトは実装可 バカには無理
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。