【Perl,PHP】LLバトルロワイヤル14【Ruby,Python】
さすがにもういらないよね
ならなぜたてた
Rubyの勝利
Rubyは趣味でひっそりやってる分にはよかったんだけどね なまじRailsなんかで広まっちゃったもんだから
趣味っつーか、ツールとしてなら良かった Ruby開発ってのは微妙ではある
このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。 京都大学霊長類研究所
Rubyは1.9でゴミになった。M17Nがひどすぎ。
解説を見てる限りじゃけっこう美しく感じるんだけど、どのへんがひどいの?
pythonは初心者向けとか言われるけど、バカにあのソースいじらせたら、 どんなに上手に設定されたエディタ使ったところで、 インデント解除するのにいちいち全部の行でバックスペースぽちぽちするんだろうなぁ、 と思ってみたところ、だったら閉じ括弧でもendでもなんでも書かせて、 その代わりインデントは全部エディタ任せの方がいいんじゃないかと思ったり思わなかったり。
ちゃんと設定したエディタなら<BS>一発とかでインデント一段浅くできるような気が それにend<CR>も<BS> * 4もタイプ数的には同じという罠
>>7 アンチCSIでUCS原理主義なんだろおまえがwwwwwwww
>>11 別にCSIでもいいが、今の仕様が糞なのは確かだろ。
M17Nとか仕様を解説した文書はあるが、実際の使い方の文書がない。
1.9でいくつかトラブル起きたが、force_encoding以外の解決方法がないんだよ。
force_encodingはわざと使いにくくしてるし。
実際には使えません
15 :
デフォルトの名無しさん :2010/11/23(火) 10:07:29
force_encodingが必要な場面て外部との境界くらいじゃ?
一応貼っておこう
最強のLL=軽量プログラム言語は、どれよ?
エントリーは、Perl、PHP、Python、Ruby、JavaScript・・・
さあ、死ぬまで語りやがれ!!!
■LLとは?
軽量プログラミング言語(Lightweight Language,LL)とは、取り回しに優れ、
コードの作成や修正が容易と見なされるプログラミング言語のことを指す。
ここでいう「軽さ」はプログラマの負担の軽重を指し、
実行速度に優れているという意味ではない。
現在の水準では
・インタプリタ
・動的型
・正規表現
・クロージャ
などを利用できるものがLLと呼ばれることが多い。(Wikipediaより)
過去スレは容量オーバーのため
>>17 に分離
※前スレ
【Perl,PHP】LLバトルロワイヤル13【Ruby,Python】
http://hibari.2ch.net/test/read.cgi/tech/1287944631/ ■過去スレ
【Perl,PHP】LLバトルロワイヤル12【Ruby,Python】
http://hibari.2ch.net/test/read.cgi/tech/1284382120/ 【Perl,PHP】LLバトルロワイヤル11【Ruby,Python】
http://hibari.2ch.net/test/read.cgi/tech/1276128624/ 【Perl,PHP】LLバトルロワイヤル10【Ruby,Python
http://pc12.2ch.net/test/read.cgi/tech/1270996206/ 【Perl,PHP】LLバトルロワイヤル9【Ruby,Python】
http://pc12.2ch.net/test/read.cgi/tech/1267553581/ 【Perl,PHP】LLバトルロワイヤル8【Ruby,Python】
http://pc12.2ch.net/test/read.cgi/tech/1259287439/ 【Perl,PHP】LLバトルロワイヤル7【Ruby,Python】
http://pc12.2ch.net/test/read.cgi/tech/1248487404/ 【Perl,PHP】LLバトルロワイヤル6【Ruby,Python】
http://pc12.2ch.net/test/read.cgi/tech/1244166510/ 【Perl,PHP】LLバトルロワイヤル5【Ruby,Python】
http://pc12.2ch.net/test/read.cgi/tech/1238720336/ 【Perl,PHP】LLバトルロワイヤル4【Ruby,Python】
http://pc12.2ch.net/test/read.cgi/tech/1234635513/ 【Perl,PHP】LLバトルロワイヤル3【Ruby,Python】
http://pc11.2ch.net/test/read.cgi/tech/1215319832/ 【Perl,PHP】LLバトルロワイヤル2【Ruby,Python】
http://pc11.2ch.net/test/read.cgi/tech/1209289408/ 【Perl,PHP】LLバトルロワイヤル【Ruby,Python】
http://pc11.2ch.net/test/read.cgi/tech/1188997302/
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘
マルチうざい
>>13 その記事がゴミ。車乗りたい人に鉄の作り方だけ教えるようなもの。
Rubyなんてネタ枯れだから
>>19 も暇なんだろ。
23 :
デフォルトの名無しさん :2010/11/23(火) 13:17:30
Rubyの夢も潰えた…ヵ…(死)
3年後くらいには、 ああ、そういえば日本人が開発してた言語もあったねえ(遠い目 なんてことになってるんだろうね
Rubyが空気のような存在になるってのは、 それはそれで良い事なのではないかといふ気がする
26 :
デフォルトの名無しさん :2010/11/23(火) 14:26:41
... やがてRubyは空気になり、そして千の風になったのです。【完】
妄想に必死だなw
rubyのマーシャルってなんであんな感じなの? 普通にメソッドみたいにできないの?
152 名前:デフォルトの名無しさん [sage]: 2010/11/27(土) 01:48:44
次は tail.py の実装だな
156 名前:デフォルトの名無しさん [sage]: 2010/11/27(土) 12:02:32
ttp://codepad.org/nyzf67zT 書いてみたけど、結構面倒くせえなw
158 名前:デフォルトの名無しさん [sage]: 2010/11/27(土) 12:23:53
Ruby使う方が楽ですねぇ
らしいんだけど、rubyだとどう書くの?
33 :
デフォルトの名無しさん :2010/11/27(土) 14:31:30
こういうのは手続き的に書くなら言語が何でも泥臭くなる気がする。
>>32 Ruby のスレだと何かと言い訳ばかりしてコードが出てこない傾向にあるな
Pythonスレに常駐して、全ての話題でRubyの方がいいってコード見せずに言い続けてるキ○ガイだろ。 ほっとけよ。わざわざこのスレに転載する方もアホ。
>>34 Rubyの本スレは雑談スレだからな。あそこはあんまりコードを出さない。
初心者スレ辺りだと結構コードが出て来るけど、
別スレで既に出ている問題を初心者質問として貼るのは流石にスルーされるだろうな。
>>35 別に、それ書いた奴がまともかまともでないかはどうでもいい。
問題は、Rubyの方が楽か、そうでないかだ。
38 :
デフォルトの名無しさん :2010/11/28(日) 01:42:16
ちゃんとかけばRubyだろうと大して楽にはならん。
39 :
デフォルトの名無しさん :2010/11/28(日) 01:57:35
RubyがPythonに敗北した理由は、ライブラリのサポートが弱いから? 構文的には優れているのに残念だよね。
優れてるという人が多い割に、書く人が少ないのはなぜ?
客観的に優れているかは知らんが、 PerlやPythonがある中で一定の地歩を固めたのは本当に驚くべきこと (っていうか、一番驚いてるのは当のmatzのようだ……w) 比較的黎明期の段階で、初期設計がうまくいっていた事と、 Dave Thomasとか幾人かの優れたプログラマに 支持されたのが大きいのかもしれない
>>40 あんまり書く人が少ない印象はないなあ。
普段見てるスレの傾向のせいなのかな?
シェアはともかく、マイナーではないな。 仕事でスクリプト言語が必要になったときにPerlでもPythonでもなく Ruby選んでも拒否されない程度にはメジャー。 Perlは無視してもいいし、PythonはGoogle App Engine使う時くらい。 現状1.9がダメなので今後が不安だが…
1.9がどうダメだよ?
>>43 ビッグ・マイナーとリトル・メジャー果たしてどっちがよかったんだろうか…
日本人だとRuby知っててもPython知らないひとが結構いる
他の板に立つプログラミングスレでRubyなんて一度たりとも見たことない
いまごろ47は感動に打ち震えていることだろう
そういうスレじゃねーよ。「プログラミングスレ」だよ。アホか
RubyはWeb用言語だったのか・・・
言語を限定しないプログラミングスレだよ
言語を限定しないって…この板はプログラミングについて語る板だから 色んな言語の話もできるけど、他の板でプログラミングって言ったら 具体的な目的があってやるものだろ? なら言語は用件に合わせてすぐに決まらなきゃマズいと思うが、言語を限定せずに話が進められるのか? いったいどんなスレを想定してるんだ?
逃げワード「 人それぞれ 主観 用途に応じて どの言語がいいか一概には言えない」
きみみたいにお茶を濁すかすはくたばれ 逃げワード「 人それぞれ 主観 用途に応じて どの言語がいいか一概には言えない」
>>57 いや、拡げようにもどんなスレがあるのか分からないんだ
例えばν即でも定期的にプログラミングスレ立つよ
そこは今までどんな言語が出て来たの?
C/C++,Java,Lisp,Pythonは定番かな。少なくともrubyなんて一度も見たことない。誰が使ってるんだおる
例えばこのLLバトルロワイヤルスレでも、コード晒すのってだいたいRuby以外じゃん GroovyだかScalaだか、その辺で晒す人すらいたのに
文脈に応じて、手が届く範囲でコードは書こうと思っているが たまたまそういう話題にならなかっただけじゃないの
結局バトルロワイヤルで弾かれたのがrubyっていうことですね
弾かれたってよりも、そもそも書く人がいない。 よく自信満々でコード晒して欠点指摘されてるPythonが弾かれてんじゃね? つーわけで、 Perl→老害 Ruby→非実在青少年 Python→民主党員 PHP→ネトヒキ Groovy/Scala→中二病 Lisp→格好付けすぎ
最後の一行がやりたかっただけだろまったくもう
Rubyの場合、ユーザ層が分離しちゃってるからな 1つはRubyistヲチや言語比較がメインの層(Ruby本スレ派) ここに来るのはこの層になるんだが、この層はあまりRubyコードを書かない 細かい仕様については詳しいが、それ以上の実践に関しては話さないからな むしろ知ってるのは処理系ソースのためのC言語だったり、比較用の他言語の仕様 もう1つは実践するのがメインの層(初心者スレ派) 初心者スレで質問に答えたり、宿題スレで丸投げされたのをコードに起こす層 実際にコードに起こすのは上手いし、色んなノウハウも知ってたりする でも他言語との比較とかには興味がないからここには来ない
Rubyist はもう疲れちゃったんだよ こんなスレでわざわざコードを晒すほどの元気はない
楽天技術フェローって何やってるの?送料無料にしてくれると有り難いんだけど。。
LLの中で一番テストコードを書く文化が定着してるのはRuby テストのないコードはレガシーコードです
PythonもかなりTDDが定着していると思うんだけど、どうなんだろうね? 標準ライブラリのカバレッジ率とかどっかで比べられないかな。
>PythonもかなりTDDが定着していると思うんだけど、どうなんだろうね? DocTest便利だけど禁止の環境もあるんだよなぁ
>>67 なんで処理系ソースが分かるくらいの人が、たかがLLで何か書いたりすらできないの?
専門で書いてる人にはかなわないかもしれないけど、仕様知り尽くしててCソース読めるくらいの実力がありゃ、
コード書けない要素がある気がしない。
>>75 doctest よりは unittest, nose なんかが使われていることが多い。
doctest はドキュメント内のサンプルコードが正しいことをチェックする(サンプルコードの
更新もれを不正で常に up to date にする)ためにはとても便利だけど、
unittest を doctest で真面目にやろうとしたらコードよりも doctest の方が長くなってしまう。
以前Ruby本スレにライブラリか何かのパッチを貼った人がいたんだけど そうすると2chの規約上そのパッチの権利は2chに移る だからそういったコードを2chに書いたりはしない ってことが言いたいんじゃないか ここでお遊びコードを貼る貼らないの話と どれくらい関係しているのかは知らないが
というか貼る文化が無いんだよRuby本スレ
>>80 そういうことが心配な人は、2chにコード貼るとき「※このコードはGPLで許諾します」と書いておけばいんじゃね?
2chに直接貼るのがダメならcodepadとかgistとか経由するとどうなるん?
問題なし 貼らない言い訳に逝ってるだけだろう
>>84 codepad、gist は知らないが、github は他人がフォークしたりを許さないとコー
ドを up しちゃ駄目な規約になってたはず。
>>80 2chの場合、貼った時点で書き込みの知的財産権全てが
運営に移る(とされてる)から、そういうレベルじゃなかったりする
http://info.2ch.net/kiyaku.html 投稿者は自分の書き込みの内容を利用できるけど
「運営から」書き込み利用の権利を許諾してもらってる立場
ライセンスを指定したところで効力がない
それに規約にはこんな文面もあるから
> また、投稿者は掲示板運営者が指定する第三者に対して、一切の権利(第三者に対して再許諾する権利を含みます)を許諾しないことを承諾します。
そもそもGPLコンパチにはなりようがなかったりもする
個人的にはこの書き込み規約自体、法的に有効なのか怪しいとは思うけど
>>88 どこの法律が適用されるのかなと思ったら、投稿者と運営の間では日本国の法
律が暗黙の前提となってるのか。
運営会社・サーバが日本にないけど、これでいいのかな?
これで投稿者が外国人だったら日本関係なさそう。
>>90 それでもベルヌ条約というのがあるんだよ。
スレチだし面倒くさい話になるからやめようぜ 匿名での法律談義ほどろくでもないものはない
93 :
Perl忍者 ◆M5ZWRnXOj6 :2010/12/02(木) 09:16:01
3キモ言語はキョロ充おおいよ Perlは違うけど
94 :
デフォルトの名無しさん :2010/12/02(木) 17:43:41
Pythonのadvent calendar異様にショボくね?
規約上、2chにコードを投稿するのは「ライセンス」上よくないのだけが確かなこと で、規約の該当条項が法的に有効かどうかは各々の国で適当に裁判でもして決めてくれ
akiyanが軽くRubyを見下しててなんかイラっときた
akiyanが何使ってるのか調べてみたらPHPとかPerlで吹いた
誰……?
そこはあれか やはりLispとアセンブラとかだと別に吹かないわけか
100 :
デフォルトの名無しさん :2010/12/03(金) 01:38:48
PHP使いにバカにされることほど屈辱的なものはないなw
>>99 なんつーか、その辺はスクリプト言語を見下してもまあ、そんなもんだよなって感じるね
>>67 両方見てるよ
珍しい方なのかもしれんが
本スレも結局アンチスレみたいな話題ばかりだし過疎ってるし。過疎は2chごとか。
しかし、本スレも定期的に
>>80-88 の流れになるがな
>>103 下は初めて見たが、結構無理して罵倒をこしらえてるなw
RubyがPythonより上なのは確か
RubyがPythonよりウヘェなのは確か
サーセン
C#はこのスレでは扱ってないからそう言われても
IronRubyとかあるんじゃなかったか、よく知らんけど
>>109 そーいうスレでもないとは思うんだ > C#はこのスレでは扱ってない
PythonのSQLAlchemyが神過ぎる Rubyとかは知らんけどPHPじゃこういうORMは実装すらできないだろwww
pythonはsqliteしか知らんかった
dirでDBの中を回せるくらいのイノベーションをだな・・・
何がすごいのか詳しく
>>116 主要なRDBMSに対応してるならともかく、MSSQLだけならただのド変態だな
WindowsならSQLサーバが普通だろ
WindowsにSQLサーバ入れてる人自体少数だと思うが…そういう意味じゃないんだよね? SQLサーバを入れるなら、MS-SQLサーバって意味で書いてるんだよね? どっちにしても、MS-SQLサーバが普通ってことにはならんと思うが 仕事でWindows鯖を立てるなら、とかならまあ分かるんだけど
もちろんSQLServer(のORマッパ)すげえといいたいわけじゃなく
>>114 の「dirでDBの中を回せるくらいのイノベーション」だけに掛かってて、
イノベーションかもしれんがこれは誰が得するんだろう?といいたかっただけ
まさか、SQLServerに突っかかられるとはおもわなんだ
「変態」が琴線に触れたんだろうな
Windowsの開発者なら、普通、クライアントPCにもSQLサーバインストールしてる。
プロプラで他にどこも採用しない技術をCoooooooooool!とか言ってるのは変態だろ。
excelだろ
>>117 プロバイダを実装すればいんじゃね?
べつにMS縛りではないし。
126 :
116 :2010/12/15(水) 10:52:05
いや「変態」と言われたらむしろ喜ぶんだが、 MSSQLの方じゃなくて、ドライブにマッピングしているところを「変態」と言って欲しくてだな(^ω^#)ビキビキ
LLスレで何言ってるんだよ
/devや/procみたいなのにいろんなものマップするという考え方自体は Unixで伝統的で、PowerShellのPSDriveはそのパクリだと思う cygwinだと昔から/proc/registryとか使えてたしね MSSQLマップするって発想は、まあLINQとかやっちゃう.NETならではですな、と思うが 冷静に考えて「欲しい」かといえばそうでもない ぶっちゃけDBはGUIから触ったほうが便利だし、バッチ的にやりたければ もともと昔ながらのosqlで出来る というか、OS開発してるMSがやってることなのに、PowerShellという一アプリに 閉じてる時点で貧乏性で、ショボいと思う なんでファイルシステムレベルで拡張してくれないんだか MSはFUSEみたいなの作れよなー
ファイルシステムの革新的革命はやろうとして頓挫したじゃないか
WinFXか
WPFでこのように”1行”で書いたコードで
簡単なブラウザが出来てしまいますが
このスレタイの言語ならどうやって書くの?
<WebBrowser Source="
http://... "/>
>>131 それは単にIEに用意された機能だろ
IE側がサポートしないと無理
>>132 何を言ってるんだか俺にはいまいちよくわからんが…
IEは昔からIWebBrowser2だかいうCOMインタフェースを公開してて
それを使ってIEエンジンのタブブラウザみたいな代物が作られてきた
つまりActiveXのコントロールをホスティングできる言語であれば
IEの機能を簡単に利用できるし、.NETからもそういう形で利用しているんだろう
それ以上にIEに一体何をのぞむんだ?
WebKitバインディングとかLLにもあるのかな? でも言語自体の話じゃないからここで扱うようなことじゃないか
ってことはここにある言語はどれもブラウザ作れないってことですね
そうですね。 好きにすればバカw
で、1行でできますか?
140 :
デフォルトの名無しさん :2010/12/15(水) 19:22:23
はいはいできないできない
特定のアプリが一行で書けたとして、で?って感じだな。
>>138 サンクス調べてみる
surfみたいなのLLで作れたら面白いだろうなと
LLでGUIってのがそもそも向かないだろ
そう思うんならそうなんだろうお前の(略
こいつrubyスレにも来てたわ 頭おかしいんじゃないの
LLって言うか、UNIX系OSのGUIがショボイって話だろ
3Dメディアにいつ対応するの?w
150 :
デフォルトの名無しさん :2010/12/15(水) 20:25:44
攻め方を変えてきたw
RubyはGUI向けじゃないのは確か
>>131 [(v.load(),v.show()) for v in [QWebView()]]
>>144 それ単にtkで良くね
Tcl無くてもtkだけで使えるんだし
>>153 他の言語からTkを利用することはできるけど
TkはTclとCで書かれてるから、Tclは必須だったと思うけど
155 :
Perl忍者 ◆M5ZWRnXOj6 :2010/12/16(木) 00:43:00
わるいごはいねえが
必ずしもTclで記述する必要はないが、Tclの実行環境自体は必要、という理解だった
157 :
デフォルトの名無しさん :2010/12/16(木) 01:15:20
pTkあたりはTkInter経由なんだっけ? 昔触ったきりなので忘れたは。
TclとTkみたいに、その言語の為のGUIライブラリってのがないんだよな どこかのを間借りしてきて使えますよってだけで、この言語だからもっとも使いやすい的な要素に乏しい
VBには勝てない
161 :
デフォルトの名無しさん :2010/12/16(木) 02:52:31
ウイルスバスターはLLじゃありませんよ?
162 :
デフォルトの名無しさん :2010/12/16(木) 16:56:11
>>131 せっかくの煽りなんだし、LLの識者で面白い返しはできないかな
7行スレみたいな感じで1行でできればWPF厨に煽りになるコード
>>131 はxamlでいいのか?実際に動かしてみたいんだがどうすりゃいいんだ
アホか その程度でいいなら、VB6やDelphiのころからコード無しで作れるが
>>163 まずVSをインストールします。
でもGUIならWPFが進んでると思うな。
コード無しは語弊だ。コードを書かずにだな。 その程度の代物。
>>165 いや、GUIの手軽さはわかってる。Windows触っていたときあるし。
だからGUIじゃない.Netではやりにくい方向で攻めればいいんじゃね。
LLなら1行でwebサーバーとかできそうだけど。
テンプレに沿ったほうがいいな。こんな感じで。
◯◯でこのように”1行”で書いたコードで
簡単な◯◯◯◯が出来てしまいますが
このスレタイの言語ならどうやって書くの?
xxxxxxxxxxxxxx
>>167 そういうことなら
require 'sinatra'; get '/:cmd' do eval(params[:cmd]).to_s << "\n" end
$ ruby 1line_webserver_calculator.rb &
$ curl
http://localhost:4567/2**1024 1797693134862315907729305190789024733617976978942306572734300811577326758055009631
3270847732240753602112011387987139335765878976881441662249284743063947412437776789
3424865485276302219601246094119453082952085005768838150682342462881473913110540827
237163350510684586298239947245938479716304835356329624224137216
>>167 テンプレ忘れてた
Rubyでこのように”1行”で書いたコードで
簡単な計算機付きwebサーバーが出来てしまいますが
このスレタイの言語ならどうやって書くの?
くだらなさすぎワロタw
>>169 Sinatra標準ライブラリじゃねーじゃんクソが
require 'webrick';s=WEBrick::HTTPServer.new(:Port=>4567);s.mount_proc('/'){|req,res|res.body=eval(req.path.gsub(/^\//,'')).to_s<<"\n"};trap("INT"){s.shutdown};s.start
$ ruby 1line_webserver_calculator.rb &
$ curl
http://localhost:4567/2**1024 1797693134862315907729305190789024733617976978942306572734300811577326758055009631
3270847732240753602112011387987139335765878976881441662249284743063947412437776789
3424865485276302219601246094119453082952085005768838150682342462881473913110540827
237163350510684586298239947245938479716304835356329624224137216
Rubyでこのように”1行”で書いたコードで
簡単な計算機付きwebサーバーが出来てしまいますが
このスレタイの言語ならどうやって書くの?
172 :
Perl忍者 ◆M5ZWRnXOj6 :2010/12/17(金) 09:46:04
ごみみたいなことやっててたのしい?
そりゃGUIならMS系の方がいいに決まってるじゃん。
MSがというか、設計段階から企業が煮詰めたもののほうが一般的にはマシだな コミュニティ主導のは発散してて使いにくい
Python標準ライブラリなら、 python -m SimpleHTTPServer
177 :
デフォルトの名無しさん :2010/12/17(金) 15:01:33
ruby -run -e httpd 最近の un.rb は変態だな…
なんかライブラリも含めると外部アプリ呼び出すのと大差なくておもんないね
>>178 ライブラリってそういうもんだろ
珍しくもないワンライナの議論だ
>>131 は
コマンドプロンプトから1行でIE呼べます
と同レベル
それは違うな。 LLというかUNIX系ならGTKとかWebKitとかのライブラリを組み合わせないといけない。 WPFが高機能なGUIアプリを簡単に作れるのはその通りで、その点で同等の物があるかって言ったらないでしょう。
pythonは文字コードが面倒><
馬鹿には無理
Windowsで #coding: utf-8 raise Exception(u'化けますよ') こういうUTF-8エンコーディングで書かれたスクリプトを実行すると、 Traceback (most recent call last): File "foo.py", line 3, in <module> raise Exception(u'蛹悶¢縺セ縺吶h') Exception: 化けますよ こうなるのがPython
>>184 やっぱPythonはだめだRubyじゃないと
Python2ではファイル名と例外がUnicodeじゃないんだっけか そのままバイト列として処理するから、 表示できるかどうかは標準エラー出力がそのバイト列を解釈できるかどうかだけに依存する
おいおい!!awkを忘れるんじゃねーよ!! 何だかんだいってもawkが最強!!
>>181 ライブラリ使えばできるなら、それでいいじゃん。
WPFなら <ListView ItemsSource"{Binding DataSets}"/> たったこれだけでデータオブジェクトをListViewに カラムもつけて表示してくれるのですが このスレの言語だとできますか?
190 :
デフォルトの名無しさん :2010/12/18(土) 21:57:53
はいはいできないできない
言語をがんばってもWPFに勝てない罠
IronPythonで出来るよ
XAMLじゃなくC#で書いたらどうなるん?
>>189 WPFでbz2ファイルの解凍もできる?
そんな古臭いもの今時使うわけないだろバカ
>>195 じゃあWPFってなにするの?
GUI作るだけ?
LLスレにXAMLか
奴隷の鎖自慢か
俺の鎖は金メッキだぜ
うむ、金メッキなら純金の鎖より実用性は上だな。 しかし、メッキは剥げるぞ。
結局、UIに毛がはえた程度か。 しかもmonoじゃ動かないからwindows専用なのか。 だったら、Qtのdesignerが吐き出すXMLを手動で作るのとあんま変わらん気がする
LLスレかと思ったら別スレでした
では、WPFのBindingと同じ位パワフルなものを 簡潔に書ける言語でもあるんですか?
ないなら自分で作れカス
待てこれはIron***に話を進めたがるRubyPython連合の陰謀だ
QTを使って開発する場合 GUIに依存したコードを書くため、GUIを変更すると コードビハインドの変更も余儀なくされます しかし、WPFはGUIとコードが完全に分離しているので GUIをいくら変更しようがコードを修正する必要はありません このようなBinding機能がある言語はこのスレにありますか?
IronRubyとIronPythonはWPF呼べるから RubyとPythonはめんどくさいこの話から一抜けしますね
これは単純な値のデータだけじゃなくて イベントに対してもBindingできます 例えばボタンをクリックしたら、ヘローワールドというダイアログを 出すようにしておきます WPFなら、ボタンクリックじゃなくて、ListViewのアイテムをクリックや Windowの空き部分をクリックに変更しても、コード側では何も修正しなくても ちゃんとダイアログがでます WPFだからできることです QTを使ってこんなことができますか?
/WPF/
PHPはどうでもいいけどなんでIronPerlってないの?
213 :
デフォルトの名無しさん :2010/12/19(日) 15:01:38
>>210 WindowsじゃなくてMacに変更してもちゃんとダイアログがでますか?
いまどきMacやLinuxで動かないGUIフレームワークを わざわざ持ち出してくるバカもいないだろう
>>214 じゃあ、コードで示してくださいな
GUIに依存しないコードをねw
>>215 Macなんてパソコン音痴が買って公開しちゃったパターンでしょw
218 :
デフォルトの名無しさん :2010/12/19(日) 16:19:57
情弱にもほどがある
Macでエロゲできますか? VMは無しで
221 :
デフォルトの名無しさん :2010/12/19(日) 16:26:08
同じ人だよねぇ
XNAゲームやWndowsLiveのゲームができますかー?www Mac買う奴なんて情弱だけだろw
惨めすぎる
Windowsユーザだが、そんなんやったこともないな Macは昔漢字Talkだったころに使った事がある 当時はBSDカーネルじゃなかったから爆弾でまくりの不安定OSで リソースフォークというWindowsでいうNT副次ストリームっぽい物が多用されていて パスの書式が変態的で 改行コードはCRだった気がするが もうほとんど覚えていない
変なやつが出てから荒れ放題だな。 LLの話に戻せよドザ。
ドザとかいっちゃう奴って五十歩百歩の厨房だよね
コードの変更しやすさとかって、考え過ぎると却って想定外のケースに弱くなるよね
コードを変更しやすいなんて一言も言っていないがw
winよりMacの方が良い理由教えてよwせんぱーいwww
エロゲ豚をふるい落とせる
"UIと比較して毛が生えた程度"は当たり前なので反論できません windows専用もその通りです XAMLはデザイナに生成させることができます。少なくともデザイナはQTよりは強力です。
もうおまいらC#やF#の話もってこいよ LINQのこれLLではどう書くんですかとかのほうがよっぽど有意義だ
233 :
デフォルトの名無しさん :2010/12/19(日) 18:05:53
F#の話は、VF#expressが出てからな。
注目の言語って何かある? 特にScalaやClojureより新しい世代でさ
ぶーー
>>233 コンパイラもう出てるじゃん。fscだっけ
238 :
デフォルトの名無しさん :2010/12/19(日) 19:06:11
>>236 だから、それはVF#expressではないだろ。
Mac、System7の頃から使ってて、今でもたまに気分転換でMacのノート使うけど、PerlとかRubyでプログラミングするにしてもWindowsでcoLinuxとかVMware使った方が便利だと思う。 運用するのはLinuxやFreeBSDなんだから、そっちの方が問題が少ない。 WindowsのPuTTYとかWinSCPとかTortoiseSVNとか、この辺に匹敵するソフトがMacにはない。ことえりも使いづらいし。 テキストエディタもどれもしっくり来なくて、結局TextEdit使ってる。 Macはメニューバー中心の操作体系がもう時代遅れだと思う。
240 :
デフォルトの名無しさん :2010/12/19(日) 20:06:34
scpやsvnはコマンドラインで事足りてるんでとくに反論はしないけど、 PuttyってTerminal.appじゃだめなんか?
Terminalは256色対応できないのと、日本語表示に問題があるのが。パッチを入れても、全角記号とかで表示が狂う。 iTermも2になってマシになったけど、screenとかで画面分割したりすると、異常にスクロールが遅くなるし。 SVNとかも、クライアントPCで使ってる場合、GUIの方が使いやすいし。
>>208 よくわからん。
例えばtextArea1に文字列を出力してたとして。
textArea1を消したら、どこに出力されるの?
>>210 designerでシグナルとスロットの接続してるなら、できるんじゃねーの?
>>231 UIに毛が生えた程度なら、それを言語と比較するってどうなの?
HTML+javascriptとperl比較するくらいに頭おかしい気がするんだけど。
ライブラリ自慢なんてこのスレでいくらでもやってることでしょ
できれば言語そのものの話に戻ってほしいけどね ライブラリの話は範囲が広がり過ぎて話も広く浅くなるか 一方は理解していてももう一方にはちんぷんかんぷんだったりする
前にもGUIライブラリの話があったけどそのときは この言語ならGUIの定義を内部DSLでこう書けるぜ、どうよ!って感じの話しだったけどね 根本的には言語のシンタックスとか言語自体のパワーとかそっちの方向の話だったと思うよ
>>242 textArea1にプッシュするコードは明示的に記述はしないってことでしょ
モデルがあって、モデルの属性とtextArea1をXAMLでbindする
textArea1を消したら、単にその属性が表示されないだけ
MVCなら当たり前の話だから、WPF使ったことが無い俺でもそれぐらいはわかる
無能な奴はそう考えるのか・・・滑稽だな
>>239 > Macはメニューバー中心の操作体系がもう時代遅れだと思う。
それじゃあ今時の操作体系ってどんなやつ?
無能な奴はそう考えるのか・・・滑稽だな
グラフィックデザイナーがMacを愛用していたのは過去の話 今では誰も使っていません
>>247 なんだ。ようは、ただのモデルとビューで、
モデルはコードで実装したらビューはXMLで書けるってだけ?
それって、Qtでできるのとは違うの?
>>250 Vista以降のExplorerとかOffice2007以降とかIE8とかChromeみたいなウィンドウメニュー(メニューバー)を極力排除して、ツールバーやリボンを中心としたインターフェイス。
それ以前にMacの場合、コンテクストメニューのサポートが弱いのが致命的だけど。
Macユーザーはデザインで選びましたってバカが多い そしてエロゲもゲームもフリーソフトのほとんどができないと後で知って泣きを見る
検索したらリボンって10年前にロータスで採用されてたんだな
260 :
Perl忍者 ◆M5ZWRnXOj6 :2010/12/20(月) 09:02:51
3キモ言語の発生場所はMacOSX 付属のターミナルからはじめちゃうやつ(笑) だいたい初音ミクのカスガキや大人がPerlをいじりだして 自己紹介欄らんに初音ミク、Perl、Ruby、Python、PHPってかいてる OSの見た目を改造とかくだらねえことやってるごみみたいなやつばっかりw くそまかのコミュはきもちわるいwごみみたいなアップル製品わめいたりほざきあってる ゲームもカスゲーしかないwまともなのは海外ゲーw マック使う意味なしw
261 :
Perl忍者 ◆M5ZWRnXOj6 :2010/12/20(月) 09:09:30
おめえみたいなグズは一生マック(笑) iphoneアプリやipadアプリ開発するわけでもないのにマック(笑) わらさせんじゃねえよグズ りなっくす>>>>マック(苦笑) MacOSX ライオン(失笑)
現状C#とRubyくらいなら使えるのですが 今からPerlやるのってためになると思いますか?
なにをやるかによる。でもきみが20代なら勉強のために知っとくのは悪いことではない。
>>263 ありがとうございます。丁度時間もあるのでやってみようと思います。
年齢なんて関係あるのか? 40代はPerl覚えちゃいけないとでも?
40代なら、今まで生きてきた時間から、人生の残りがどれぐらいで どの程度の時間が使えるか、人に聞くまでも無く判断がついてるだろう
だから言っているんだよ 何で20代なのさ
VB(Script)はこのスレで語ってもいい?
VBか…文字列処理は正規表現なんかも使えるようになったようだが リスト処理(VBだから…配列処理?)は現状どんなもんかな ForEachは結構早い段階から導入してたようだが 「配列Aの各要素を2乗した新しい配列Bを作成」って1行で書けるのか? とりあえずスレタイの言語は現状、できるようだけど
スレタイの言語は配列の各要素が複数の文字コードが混在してても1行で書けますか? コントロール配列でそれぞれにイベントを追加するのを一行でできますか? 3DSMAXなどで作成した3Dオブジェクト配列を1行で画面に表示できますか? ピクセルシェーダー配列の各要素でPictureBoxの画像にエフェクトを順にかけることが1行でできますか? WPFなら余裕ですけどねw
B = A.Select(a => a * a).ToArray();
不思議、完全、馬鹿、嵐、氏、根。
>>270 VBScriptほとんど知らないけど
動的配列が欲しければReDimでreallocしろという世界みたいなので
リスト処理とか超面倒くさそうだなー
と思って今頑張って書いてみたけど、こんな感じになるみたい
むしろJavaScript風に割り切って全部ディクショナリにしてしまうのが
楽かも?
Function foldLeft(ByVal f, ByVal init, ByVal xs)
foldLeft = init
For Each x in xs
foldLeft = f(foldLeft, x)
Next
End Function
Function map(ByVal f, ByVal xs)
ReDim ys(UBound(xs))
For i = 0 To UBound(xs)
ys(i) = f(xs(i))
Next
map = ys
End Function
Function square(ByVal x)
square = x * x
End Function
For Each x In map(GetRef("square"), Array(1, 2, 3, 4, 5))
WScript.Echo x
Next
>>264 時間あるなら、LispかC++でも覚えた方がためになると思うけどなぁ。
Ruby知っててPerl新たにやるメリットってほとんどない。
>275 年配の人と話を合わせられるようになる。
>>271 Webサーバを1行で動かせる?
配列に対して、任意の関数をキーに使ったソートが1行で書ける?
Yコンビネータが1行で作れる?
これが1行で書けるんです!とだけ主張するほど痛々しいことはない。
用意されてたら1行で書けるけど、すべてを用意することなんてできない。
実用的なプログラムを、より簡潔な処理で書ける言語がよいのだから、
実用的なプログラムを晒してはじめて評価が得られる。
<またまたご冗談を、WPFで実用的なプログラムなんて、ねぇ? ,、ァ ,、 '";ィ' ________ /::::::/l:l ─- 、::::;;;;;;;;;`゙゙''‐ 、 __,,,,......,,,,_/:::::::::/: !| . : : : : : : `゙'ヽ、:::゙ヾ´::::::::::::::::::::::`゙゙゙'''‐'、. l| 、、 . : : : : : : : : r'":::::::::::::::::::::::::,r':ぃ::::ヽ::::::::ヽ! ,、- 、 .ヽ:゙ヽ; : : : : : :ノ:::::::::::::::::::::;;、-、、゙::: rー-:'、 / }¬、 . \::゙、: : : :./::::::::::::::;、-''":::::::::: ,...,:::,::., :::':、 _,,/,, ,、.,/ } ヽ:ヽ、 /::::::::::::::::::::::::: _ `゙''‐''" __,,',,,,___ /~ ヾ::::ツ,、-/ `ヽ、:::::::::;;;、、--‐‐'''''',,iニ- _| 、-l、,},,  ̄""'''¬-, ' ''‐-、 .,ノ'゙,i';;;;ツ _,,,、-‐l'''"´:::::::' ,、-'" ,.X,_,,、-v'"''゙''yr-ヽ / ゙゙'ヽ、, ,.' j゙,,, ´ 7 ,、-''" .l:::::::::::;、-''" ,.-' ゙、""ヾ'r-;;:l 冫、 ヽ、 / __,,.ノ:::::ヽ. / l;、-'゙: ,/ ゞ=‐'"~゙゙') ./. \ / '''"/::::;:::;r-''‐ヽ ,、‐゙ ヽ:::::..,.r'゙ ,,. ,r/ ./ ヽ. ,' '、ノ''" ノ ,、‐'゙ ン;"::::::. "´ '゙ ´ / ゙、 ,' / ' //::::::::: {. V / / ./::::::::::::: ', / / . / /:::::::::::::::::. ',. / ,.、 /
HQ9+を気が済むまで拡張すればよい
EvernoteもWPFやめちゃったし・・・ねぇ。
おいWPFちゃんをいじめるスレになってるぞ
H ello world in a message box A nalog clock D igital clock T ic tac toe
283 :
Perl忍者 ◆M5ZWRnXOj6 :2010/12/21(火) 09:04:08
@WIKI アット ウィキの管理人はいじめの犯罪者だった(アットフリークス)
ソース
http://www.mudaijp.com/wp/1957.html 竹田隼也
いじめられていた被害者が2ちゃんねるのコテ環境様という人で、竹田隼也は2ちゃんねるの一部の板を運営してたみたいです(ボランティアだと思いますが)
逮捕された竹田隼也は、アットフリークスの取締役です。
現在の取り締まり役は、大野真和になってますね。
竹田隼也は、アットフリークを立ち上げたメンバーであることは確定しています。(まだ運営にも関わっています)
その当時の記事→アーカイブ
アット ウィキの運営情報(whoisより)
有限会社アットフリークス
640-8227
和歌山県和歌山市西汀丁26番地県経済センター6F
当時はアットフリークスが運営するBBSにもこのいじめのことが書かれてたみたいですが、現在はすっかり削除されています(隠蔽)。
公の場で問題になってから事実を公表する運営も信用できませんよね。
絶対に知ってるはずなのに、このようなコメントを残しています。
一番仕事で需要があるLLって何よ? PHP?
JavaScriptでしょ
PHPなんてなんの役に立つんだよw
何の役に立つも何も、あの言語Web以外じゃ役に立たないのは明白だろw
PHPで3Dゲーム作りたいんですが XNAみたいに簡単に作れますか?
ここでPHPを叩くのは名古屋グランパススレで千葉ロッテを叩くぐらい奇妙なことです
PHPで陰金が治りました
291 :
デフォルトの名無しさん :2010/12/21(火) 21:19:10
偉い人へ: Pythonで、クラス内に 同じメソッド名の staticmethod と classmethod があります。 で、staticmethodから classmethodを呼び出す時に同じメソッド名だからなのか、 classmethodを見つけてくれないのだけれども、メソッド名を変えないで呼び出す 方法はありますか?
デリゲート
>>291 同じ名前で2つのメソッドがあることはありえません。
あとで定義したほうが、先に定義した方を上書きしています。
そもそもなぜ同名の static method と class method が必要なのでしょうか?
>>291 Pythonを捨ててRubyに切り替えましょう
>>294 Rubyならクラスにクラスメソッドとスタティックメソッドを同名で定義できるの?
え?pythonやrubyってnamespace問題なんてあるんだ?wしょぼw
Pythonって、クラス内に同じメソッド名使ってコンパイルエラーにならないの?
ならないね
ならないオブジェクト指向言語が普通だと思ってた
Java脳はJava使ってればいいんだよ
301 :
Perl忍者 ◆M5ZWRnXOj6 :2010/12/22(水) 09:15:20
@WIKI アット ウィキの管理人はいじめの犯罪者だった(アットフリークス)
ソース
http://www.mudaijp.com/wp/1957.html 竹田隼也
いじめられていた被害者が2ちゃんねるのコテ環境様という人で、竹田隼也は2ちゃんねるの一部の板を運営してたみたいです(ボランティアだと思いますが)
逮捕された竹田隼也は、アットフリークスの取締役です。
現在の取り締まり役は、大野真和になってますね。
竹田隼也は、アットフリークを立ち上げたメンバーであることは確定しています。(まだ運営にも関わっています)
その当時の記事→アーカイブ
アット ウィキの運営情報(whoisより)
有限会社アットフリークス
640-8227
和歌山県和歌山市西汀丁26番地県経済センター6F
当時はアットフリークスが運営するBBSにもこのいじめのことが書かれてたみたいですが、現在はすっかり削除されています(隠蔽)。
公の場で問題になってから事実を公表する運営も信用できませんよね。
絶対に知ってるはずなのに、このようなコメントを残しています。
302 :
Perl忍者(竹田隼也) ◆M5ZWRnXOj6 :2010/12/22(水) 10:39:52
いじめ^^;
303 :
291 @Java脳 :2010/12/22(水) 11:44:06
>>293 ども。
コントーラにビジネスロジックを入れたくないので、モデルの static method
で実装し、目的としては同じ処理をするメソッドが class methodにもあるので
出来れば同じメソッド名にしたかった・・という流れ。
javaでは出来るのでね。
じゃ、汚いけど、_ とか入れるか。
291からずっと意味不明なんだけど class methodとinstance methodを勘違いしてない? 普通はstatic methodとclass methodは同じ物だろ
>>304 Pythonではその両者は違うよ
classmethodはクラスオブジェクトを引数にとるが、staticmethodは取らない
Javaのclass methodと同じなのはstaticmethodのほうだな
Pythonではただの関数が使えるのだから、staticmethodの存在意義が
俺には疑問だけど
>>291 が勘違いしているのかしていないのかは、わからないw
Pyhton に限らず普通は static method と class method は同じ物ではないな
307 :
291 @Java脳 :2010/12/22(水) 12:47:40
>>304 >>305 ごめんなさい、勘違いしていた。
static methodと instance method だった。
>>305 >Pythonではただの関数が使えるのだから、staticmethodの存在意義が俺には疑問だけど
出来れば詳しく教えてください。
308 :
305 :2010/12/22(水) 12:48:33
> classmethodはクラスオブジェクトを引数にとるが この書き方だとちょっと紛らわしいか… ふつうのinstanceメソッドは def foo(self, x) とか定義して、selfにはインスタンスオブジェクトが渡される (他の言語のthis相当) クラスメソッドでは @classmethod def foo(cls, x) とか定義して、clsにはクラスオブジェクトが渡される (Pythonでは全てがオブジェクトだからクラスもオブジェクトで、 メタクラスのインスタンス) foo()が親クラスに定義されていて、派生クラス側でfoo()を呼んだ場合に 渡ってくるclsは、継承クラスのオブジェクトになる
309 :
304 :2010/12/22(水) 12:50:58
>>305 ありがとう。やっぱりそうなんだ
誰も指摘しないしそんな気はしてたけどJavaでは出来ると言われてすごく混乱したw
310 :
305 :2010/12/22(水) 12:52:18
>>307 いや別に難しい話じゃないよ
Pythonにおけるstaticmethodは、機能的には単にclassの中に書いてみただけの
ただの関数でしかないでしょう
Pythonでは関数をクラスの中に書かなければならない言語ではないし
クラスがprivateみたいなアクセスコントロール機構を持っているわけでもないし
モジュール機構があるから、名前空間としてのクラスも別に重要ではない
ならただの関数でよくね?というだけの話
311 :
291 @Java脳 :2010/12/22(水) 12:58:40
>>310 >名前空間としてのクラスも別に重要ではないならただの関数でよくね?というだけの話
ありがとうです。確かに。まだJava脳から抜けない・・
>>303 の設計はJavaでも明らかにおかしいけどな
クラスの名前空間の中にただの関数を入れると、インスタンス経由で instance.method() と呼びだすと、 勝手にインスタンスメソッドだと解釈して第一引数にインスタンスが渡されてしまう。 なので、インスタンス経由で呼び出したときにも第一引数いりませんよーって宣言するために staticmethodがある。 で、結論としては、外から隠す方の名前の先頭に _ を付ける。 他の方法もあるけど、全部汚いか非効率。
>>291 はstaticmethod云々以前に
単にPythonではメソッドのオーバーロードができない、ってだけの話なんだけど
分かっているのかな?
引数型を明示しない動的型言語なんだから
静的型と同様のオーバーロードは原理的にできるわけがない
個数だけのディスパッチみたいな部分的なサポートなら可能に思えるけど
まあシンプルに「出来ない」ものとしたんだろう
デフォルト引数があるから必要ないんじゃないの
ふつーに型検査してディスパッチできるだろ
>>316 int add(int x, int y)
double add(double x, double y)
があるときに、C++コンパイラは
add(1.0, 2.0)
という呼び出しをdouble add(double x, double y)
にパターンマッチする
で、Pythonはどうするの?
中の処理が同じなら区別する必要がないし、違うなら中で場合分けすればいいんじゃないの
言語がディスパッチしてくれなきゃでしょ、という話なのに「場合分けすればいい」とか
「言語がディスパッチしてくれなきゃ」というのは正しいの?
多重定義の話をしてるのに
手動型チェックと手動条件分岐で多重定義やパターンマッチの代わりになるとか
言ってる奴はバカじゃないの?
それとも
>>316 はもっと高級な話をしてるのか?
どうするの?って聞かれたから答えのにバカだって。バカはどっちだよ
>>322 いや君は「できる」といったけど、それは「できてない」んだよ
「できてない」から、手動でやってるんでしょ
>>314 > 静的型と同様のオーバーロードは原理的にできるわけがない
>>316 > ふつーに型検査してディスパッチできるだろ
>>316 が isinstance()のようなものを使った汚い手動分岐のことなら、
誰もそれを「静的型と同様のオーバーロード」とは見做さないし、
「出来てる」とは言わないの
わかったか?
>>> class Foo(object): ... def hoge(self): return 'HOGE' >>> def fuga(self): return 'FUGA' >>> Foo.fuga = fuga >>> def hage(self): return 'HAGE' >>> f = Foo() >>> f.hage = hage >>> def hige(self): return 'HIGE' >>> Foo.hige = hige >>> g = Foo() >>> g.hoge() 'HOGE' >>> g.fuga() 'FUGA' >>> g.hage() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'Foo' object has no attribute 'hage' >>> g.hige() 'HIGE' >>> f.hige() 'HIGE' >>> f.hage() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: hage() takes exactly 1 argument (0 given) >>> f.fuga() 'FUGA' >>> f.hoge() 'HOGE' >>> f.hage(None) 'HAGE'
pythonにはCのようなgotoもポインタもないよ。頭の悪い人には理解できないかもしれないけど
なんつうか、誰もPythonをdisってるんじゃないのに被害妄想か?
相変わらずだな……
動的型言語として、引数型指定とかさせる仕様じゃないから
引数型に応じた自動的なディスパッチ機構(パターンマッチ/オーバーロード)は
Pythonには無いですよ
ってだけの話だったのに
なんで「手でディスパッチすればできる」とか意味不明な反論になってるのwww
>>328 も妙に上から目線だしwww
俺はディスパッチ出来るなんて言ってませんー C++ではこうやるんだけど、pythonではどうやるの?って馬鹿な奴が消えてくれればそれでいいんだけど
LLでメソッドの多重定義できるのなんてあったっけ
LLの定義によるんじゃないの groovyはできる(ただし、型がルーズなので信じると裏切られることも多い)
pythonは引数の省略と名前付き引数の機構が強力だから そもそも多重定義が必要になる場面がほとんど無いんだよ
>>334 そうそう。実際、JavaのコードをPythonに書き直したりすると分かる
jQueryのソースちょっと見たときタイプチェックの嵐で動的言語って大変だなって思った
>>334 そんなことは無いと思うけど…
今ダウンロードしたgoogleclとかいうgoogle APIのクライアントライブラリ
を試しに見てみると、base.pyの中で引数に対してisinstanceを呼んでいる箇所が
8箇所ぐらいある
勿論どうしても必要と言うものでもないけどね
>>333 ああそれはいいな、でもdraftなのか
>>337 isinstance が必要かどうかの話はしていないぞ
>>338 引数に対するisinstance()を頻繁に行う必要があるってのは、
>>334 への反例に
なるかと思ったんだけど
Javaで
void foo(Object arg) {
if (arg istanceof Integer) ..
else if ....
}
こんな馬鹿げたコードは書かないでしょ
多重定義があるから
多重定義が必要と言いたいのか、必要ないと言いたいのははっきりしろ低能
>>340 >そもそも多重定義が必要になる場面がほとんど無いんだよ
というのが疑問だからつっこんだだけ
isinstance()を使ってるのは、多重定義があれば多重定義を使う場面だから、
「そもそも必要でない」というのはあたらないかと
あれば使う。だから根本的に必要だってこと?
根本的に必要とまではいえないでしょ あれば便利という程度に過ぎない
Pythonってイマイチだな。
まあ多重定義が可能だとしてもやらない、という方法も理解するよ 名前バインディングが文字通り・見たままで済むからシンプルになる C++のname manglingはキモい
>>339 pythonの場合は
def foo(intobject=None, strobject=None, listobject=None, hashobject=None):
って書けるから引数の省略と組み合わせると多重定義は要らないって話
(引数の型が正しいかどうかっていうのとは別の話)
>>346 意図は理解するけど、使い勝手としてはデグレードはしてるな
foo(intobject="foo")
のように書けるし、
キーワードを覚えてタイプする必要がある
LLバトルロワイヤル…C++馬鹿…Java馬鹿…
len(笑)
静的脳はなにやってもダメ
pythonよくわからんけどそういうのって def foo(obj): if isinstance(obj, int): foo_int(obj) elif isinstance(obj, str): foo_str(obj) ... みたいなコードが def foo(intobject=None, strobject=None, listobject=None, hashobject=None): if intobject != None: foo_int(intobject) elif strobject != None: foo_str(strobject) ... みたいになるだけ? まったくうれしくない、デフォルト引数の使い方間違ってね?
x+y みたいなのはオーバーロードできるのに、 sin(x) みたいなのはオーバーロード出来ないのはバランス 悪くてやだなー、と思ったことはある。
こういうの見てるとC#ってよくできてるなーと思うよw
>>353 お前の脳みそも同じくらい良く出来てればよかったのにな
>>352 クラスの中の演算子オーバーロードなら、左オペランドの型は確定するからなー
逆に言うとglobalなoperator定義みたいなのはやっぱりできないし
今日からfunction compositionは>>演算子で!とか思い立っても
f >> g
とはかけずに
Compose(f) >> g
とかそんなコードを書くしかない
>>357 「デグレードしてる」ってのは、
静的型言語でのパターンマッチやオーバーロード、あるいは
>>351 の上の版のような手動ディスパッチに比べて
使い勝手が劣り、error proneで、「これがあるから要らない」とまで主張するには
どうかと思うぐらいいいところが何も無いってことね
今知った。JavaではStringクラスはfinalなのでサブクラスを定義できないそうだ。 なにこのクソ言語。
>>358 うん、だからこういうことでいいのかと思ったけど
便利に見えて関数定義何度もするのと大して手間変わらんのだよなー
>>360 おー
これってPythonダックタイプな(概念的)インタフェースを上手く扱えるのかな?
Pythonってfilelikeとかiterableみたいな、
特定の型を継承しない型のクラスみたいなのが結構あって、それを判別したいことは
多分多いのだと思うのだけれど
>>362 ABCとかあるし、やろうと思えばできるけど、実用的じゃないだろうな。
例えば、 filelike は iterable でもあるけど、どっちにする?
そんな面倒なこと考えるくらいなら、 foo_from_file, foo_from_iter って別の名前の関数作るほうが良いと思うよ。
>例えば、 filelike は iterable でもあるけど、どっちにする? filelikeとiterableのディスパッチのように、単に 曖昧で決定できないというエラーを出すのが普通かと (コンパイラが賢いことをする言語では、そういうことが普通によくある) > そんな面倒なこと考えるくらいなら、 foo_from_file, foo_from_iter って > 別の名前の関数作るほうが良いと思うよ。 んーC++のオーバーロードとかHaskellのパターンマッチなんて要らないよね みなアセンブラで書こうぜって話?
365 :
364 :2010/12/23(木) 00:04:56
× filelikeとiterableのディスパッチのように、単に〜 ○ filelikeとiterableのディスパッチのように、「それが困難な場合には」単に〜 ちょっと抜けてた
>>364 C++みたいに優先順位付けを頑張らないなら、ABCでの対応もできるな。
> んーC++のオーバーロードとかHaskellのパターンマッチなんて要らないよね
> みなアセンブラで書こうぜって話?
そんな極論は言ってない。静的言語ではオーバーロードを美味しく使わせてもらってるし、
静的に型付けできるのにオーバーロードできないAS3は嫌い。
あくまでも、Pythonみたいな動的型付け言語ではの話。
> C++みたいに優先順位付けを頑張らないなら、ABCでの対応もできるな。 優先順位付けはある程度は可能だし 今でも↑のやつでやってるんじゃないの? basestringとstrのディスパッチャーにstrを渡したらstrを 適合させるんでしょ filelikeとiterableではfilelikeのほうが狭いから、filelikeを渡せば 普通はfilelikeに適合させるんじゃないの
オーバーロード出来ないとパラメーター名に適切な名前付けらんなくてイヤンなことがあるよね たとえば draw_rect(1,2,3,4) draw_rect((1,2),(3,4)) draw_rect((1,2,3,4)) みたいに呼び出せる関数を書きたかったらシグネチャは def draw_rect(a,b=None,c=None,d=None): みたいな感じになるだろうけど オーバーロードできるなら def draw_rect(x,y,w,h): def draw_rect(pt1, pt2): def draw_rect(rect): みたいにちゃんとした名前付けてあげられる、可読性も向上する
>>368 んだなー
一方
draw_rect_points()
とか
draw_rect_rect()
とかだと、dynamic languageなのに静的型言語よりstaticなのが気持ち悪いし
操作の名前に型の名前が入り込んでしまうのが名前として良くない
PythonでOOPなんてやるのが間違っているだろw C++かせいぜいJavaにしておけよwww
なるほど、確かにselfとか書くのうざいしな そうはいってもあんまりfunctionalな言語でもないのだが
その代わりにPythonは引数の渡し方が柔軟だけどね。 draw_rect(a,b,c,d) だけあったら、 draw_rect(*(1,2)+(3,4)) とか draw_rect(*(1,2,3,4)) とかできる。
利用する側が型を意識して呼び出さないといけないんじゃ、代わりになってないと思う
オーバーロードは確かにLL使ってて1番気になる点
>>375 そこらへん柔軟にできるのなら、別に
draw_rect(int,int,int,int)と
draw_rect(list)を両方用意する必要ってない気がする。
draw_rect(int,int,int,int) だと draw_rect(x1,y1,x2,y2) draw_rect(x,y,w,h) どっちなのかわからないんだよな
>>368 そうかなー
def draw_rect(a,b=None,c=None,d=None):
if d is not None:
x, y, w, h = a, b, c, d
_draw_rect4(x, y, w, h)
elif b is not None:
pt1, pt2 = a, b
_draw_rect2(pt1, pt2)
else:
rect = a
_draw_rect1(rect)
そんなに悪くないと思うけど、だめかな。
>>379 全然だめだし無駄だと思う
この例で矩形を描くために_draw_rect4(), _draw_rect2(), _draw_rect1のような
関数を別々に実装するかといえばそんなわけはなくて、実際に仕事をする
コア実装のインタフェースはどれか一つだろう
なので、Pythonなら
>>374 の書いているようなタプルのパッキング、アンパッキング
を使ってさっさと引数をタプルならタプル、4変数なら4変数に加工して
それから処理したほうがいい
型シグニチャもそれだと何の役にも立たずドキュメント性も無いから
俺ならいっそ*argsにしてしまって、len(args)でディスパッチさせるかな
381 :
380 :2010/12/23(木) 10:53:49
つまり、↓のようなコードね 勿論その下の型シグニチャ+オーバーロードっぽい擬似コードのほうが ずっと明快で好ましいと思うけど def draw_rect(*args): if len(*args) == 4: x0, y0, x1, y1 = args elif len(*args) == 2: (x0, y0), (x1, y1) = args[0], args[1] elif len(*args) == 1: x0, y0, x1, y1 = args[0] : ----------------------------------------------------------- def draw_rect(rc: Rect): draw_rect(rc.x0, rc.y0, rc.x1, rc.y1) def draw_rect(pt0: Point, pt1: Point): draw_rect(pt0.x, pt0.y, pt1.x, pt1.y) def draw_rect(x0: int, y0: int, x1: int, y1: int): :
>>379 C++ライブラリのラッパ作るとか、そうしたい理由があるならそれでいい。
そうじゃないなら、ダメ。
>>381 draw_rectだけしかそういう関数ないんだったらそれでいいけど、
同じ引数でdraw_roundrectもあるなら、その方法がいいとは思えない。
Rect側で
def to_list(self):
return [self.x0, self.y0, self.x1, self.y1]
ってすればいいんじゃね?
384 :
380 :2010/12/23(木) 11:07:38
> if len(*args) == 4: よく見たらこのへん全部 * が余計だった 後、w, hとかの場合もあったのか
過疎
387 :
Perl忍者(竹田隼也) ◆M5ZWRnXOj6 :2010/12/23(木) 12:58:04
^^
Pythonは大変だねーダサいコーディングしないといけないから やっぱりC#最強だね
工作員も大変だな。Pythonだけを槍玉に上げるってことは、そういうことなんだろうな
390 :
386 :2010/12/23(木) 16:01:29
最強はScalaです
C#は文末のセミコロンがどうしようもなくダサいな 昭和世代の言語って感じ
perlとRubyが消えて、PHPとPythonが残ったな
PHPもPythonも消えて JavaScriptだけ残る
JavaScriptはあんますきじゃない、CoffeeScriptに期待
今の時代コロンだな
なるほどviか
だるまさんがころんだ
mをつけろよでこすけやろう
おまいらすっころんでろ
PythonやめてC#にしたらモテモテになりました
シャワーを浴びてコロンを叩く
C#厨がついにこのスレにも暴れ出したか。C++、Javaはちゃんとこの板から全滅させてきたか?
VB>C#>IronPython>Ruby>次どこいけばいい?
コミュニケーションにいけ
>>388 Pythonだと、
draw_rect(int x0, int y0, int x1, int y1){ return draw_rect(Rect(x0, y0, x1, y1)); }
draw_rect(Point p0, Point p1){ return draw_rect(Rect(p0.x, p0.y, p1.x, p1.y)); }
なんてダサいコード書かなくていいの。
C#じゃどーすんのかしらないけどさ。
PowerShellでやってみたが、なんだか恐ろしいバッドノウハウの塊になった気がしないでもない function Draw-Rect { [CmdletBinding(DefaultParameterSetName="xywh")] param( [Parameter(ParameterSetName="rect", Position=0)] [ValidateCount(4,4)] [int[]] $rect, [Parameter(ParameterSetName="point", Position=0)] [ValidateScript({$_.Count -eq 2 -and $_[0] -is [int] -and $_[1] -is [int] })] [object[][]] $pt, [Parameter(ParameterSetName="xywh",Position=0)] [int]$x, [Parameter(ParameterSetName="xywh",Position=1)] [int]$y, [Parameter(ParameterSetName="xywh",Position=2)] [int]$w, [Parameter(ParameterSetName="xywh",Position=3)] [int]$h ) switch ($PsCmdlet.ParameterSetName) { "rect" { 1 } # Draw-Rect 1,2,3,4 "point" { 2 } # Draw-Rect (1,2),(3,4) "xywh" { 4 } # Draw-Rect 1 2 3 4 default { "ダーッ!" } } }
だれか、Pythonやったことない俺に
>>383 を解説してくれ
>>407 draw_rectがRect型でもlist型でも整数4つでも、どの引数でも使えるように多重定義するくらいなら、
Rect型をlist型に変換する方法を提供するとか、そうした方が幸せになれる、という意味。
おれならどっちかっていうとRectにそういうコンストラクタを提供するな まあ発想としては似たようなもんだが Rectの入り口が広ければ、draw_rectはRect版だけでいい
それもありだね。ていうか、実装上そんな感じになってるだろうなぁ。 けどそしたらdraw_rect(Point, Point)が... draw_rect(Rect(*p0.pos(), *p1.pos())) かなぁ。
411 :
デフォルトの名無しさん :2010/12/25(土) 13:56:15
C#は良く出来てると思う。
>>411 それを譫言のように繰り返すのやめてくれw
413 :
407 :2010/12/25(土) 14:23:49
>>408-409 で納得したと思ったら
>>410 でまた混乱
関数側じゃなくて引数に使うRect型のコンストラクタを多重定義するなら
draw_rectはRect受け取るやつだけでいいんじゃないの?
>>413 多重定義するなら、それでいいけど。
したくなければどうしよう。
多重定義の何を忌避してるかによるんじゃなかろか
なんかもう、「多重定義なくてもキーワード引数で万歳」なんてなかった、的な話になっとるな
いつの間にそんな心理戦になっていたのか・・・
じゃあ言いたいことがあるならハッキリ言えばいいんじゃないか 多重定義が出来ない言語が糞だってな。頭が悪すぎて相手してられないよ
じゃ遠慮なく Pythonはゴミ
どのLLが良いんですかね
Python
好きなの使え
PHPはくず
Pの付く言語以外ならどれでもいいよ
落ち目のRubyだけは選ばないようにしないとな
Rubyを使いこなしてはじめてOO使いと言える
○○となんとかは使いようってことですね、わかりますん。
わかりますん。 て新しい日本語だね。 ○○使いになるとこういう言葉を話せるようになるんですね。
431 :
Perl忍者 ◆M5ZWRnXOj6 :2010/12/26(日) 10:24:06
OO使いやなんかわめいてるやついるけど 実際ごみくず
>>416 キーワード引数でどうにかしようとしてた人もいるけど、俺はあんま好きじゃないってだけ。
range([start,] stop [,step]) 程度なら、*argsの大きさ数えて場合分けで実装してもいいと思うけど。
>>419 できないから別の方法使うんじゃなくて、多重定義って本当に必要な場面なんてほとんどない。
どうしても必要ならPythonなら
>>360 の方法でできるし、
言語の機能を追加するような魔改造はPythonよりRubyの方が得意な印象なので、きっとRubyでもできるのだろう。
>多重定義って本当に必要な場面なんてほとんどない。 ここが議論の分かれるところだったのでは? キーワード引数があれば要らない、とかいう意見は突っ込まれまくっていたし 多重定義があれば要らないisinstanceが結構多用されている例があがっていた
シングルディスパッチでうまい設計をして解決するのがいい方法なのか、 isinstanceで振り分けるのがいい方法なのか、 多重ディスパッチがいい方法なのか、 結論はないんじゃない?
言語特有の、あれば使うという程度の機能でしかないだろ
多重定義信者はJavaプログラマだよ、間違いなく。
えっ、pythonにはインクリメント演算子がなくて、+=1を使ってるだって?プークスクス これと同レベル
isinstanceで振り分けるのと多重ディスパッチの2択だったら多重ディスパッチのがいいべ >多重定義って本当に必要な場面なんてほとんどない。 ってのはシングルディスパッチでうまい設計が出来る場合がほとんどだよと言いたいのだろう 本当に出来るのかは知らんけど
オーバーロードっつーたって、引数の数で分けるなら別に対して困らないから
(デフォルト引数や、多重代入を1行書くだけで事足りるからね)
問題になるのは型で分ける場合の話だけだよな
っつーても、変数に型がない言語で引数の型で縛るってのも
変な話になるんだよなあ
どっちかっつーと、ダックタイピング的に
「渡されたオブジェクトに必要なメソッドが揃っているなら、型とか考えない」
って解決法が一番だと思うぞ
逆に言えば、渡すオブジェクト側に必要なもの揃えてやればいいだけ
>>433 過去にはあったらしいって話はどっかで聞いたような気もするが
実用例は全く聞かない辺り、必要ないんだろうなやっぱ
静的片付けだから柔軟なプログラミングが出来ないせいで、 Pythonから見たら無駄な、多重定義せざるを得ないという状況の方が圧倒的に多いように思えるけど
> 変数に型がない言語で引数の型で縛る 静的型ではないだけで レシーバの型に応じたディスパッチ(いわゆるポリモーフィズム)はあるのだから ぜんぜん「変な話」ではないと思う ただし現実問題として引数型に対する多重ディスパッチは無い というのが多くのLLの現状 C++族のオーバーロードによる多重ディスパッチは多重だが静的な (コンパイル時の)ディスパッチなので 動的言語に適したもの、となると、実行時型による動的な 多重ディスパッチになるんだろう
>>440 多重ディスパッチとか言っても分かってない
Javaしか出てこないお子様しかいないから
静的型付けだから柔軟なプログラミングが出来ないせいで、 Pythonから見たら無駄な、多重定義をせざるを得ないという状況の方が圧倒的に多いように思えるけど、違う?
多重ディスパッチが許容されないから Pythonではたとえば callable x callable -> callable のような演算子がつくれないんですよ
許容されるせいで生まれる弊害を全く考慮しない馬鹿ども
>>443 Perl6ならそういうこともできるのかな?
>>447 具体的にたとえばCLOSでどういう弊害が指摘されているというのかな?
言えなければおまえも馬鹿だ。
Perl6は多重定義出来るね。まあ、Perl6は仮引数に型を指定出来るけど。 ただ、型がない言語でも、仮引数の個数でだけでも多重定義出来る方が、スマートに書ける場合が多々あるように思う。 foo()の中のifで切り分けて_foo1()とか_foo2()に飛ばすって、如何にも泥臭い。
ぐは、被った
>>449 なんのデメリットもないCLOSが普及しない理由はなんだい?
>>435 少しくらいならisinstance使えばいいし、大量に使わないといけなくて可読性が低下するなら、
それは多重継承が必要な場面だから
>>360 の方法で多重継承すればいい。
けれど、本当に多重定義が必要な場面ってそんなにないよ。
例えばdraw_rectに関しては、Rect型しか取らないことにできる。
似た引数の関数を作るときのことを考えると、そうした方が手間は少ない。
キーワード引数使うっていうのは、例に出てたような
def f(intobj=None, strobj=None, ...)はアホの極みだが、
list.sort(reverse=False, key=None)みたいなのは無駄な多重継承を避ける役に立つ。
>>440 場合によるんじゃね?
それに、どうしても多重定義が必要なら、する方法はあるんだから。
>>446 必要か?
x(callable, callable) -> callableでいいんじゃね?
>>455 多重継承と多重定義がごちゃごちゃになってる
全部多重「定義」のつもり?
> x(callable, callable) -> callableでいいんじゃね?
1+2+3+4は
+(1, +(2, +(3, 4)))
よりずっと読みやすく書きやすい
だからPythonでもクラスの中に演算子を定義できるようにしているが
クラス+ポリモーフィズムのシングルディスパッチなので有効性が限定的だという話
えっ、pythonにはインクリメント演算子がなくて、+=1を使ってるだって?プークスクス これと同レベル
多重定義と多重ディスパッチがごっちゃになってない?
いわゆる多重定義と多重ディスパッチ(マルチメソッド)の違いって それが静的か動的かって点だけだろう 上の議論では多重定義は静的な多重ディスパッチとして、同じ枠組みで 語られているように思う つまり実行時に解決される(ポリモーフィックに動作する)かどうかは、 問題にされていない 多重継承の話は一度も出ていないし、関係無いんじゃないの
結局のところ多重定義の必要性云々本質的でなくて 引数をif文で一つずつ回すしかないような状況はうまくないよねってところが問題であって それがうまく解決できるならやり方はなんでもいいように思うけど
ifはダメで、いくつも定義するのはおkって理屈がよく分からん
>>461 やりたいことをクリアに表現できているかどうかだ
多重定義は意図が明確で宣言的
ifは、それを「手続きによって」「ベタに」表現している
上で出ている引数長で分岐、といった例は、引数にドキュメント性が全くないので
コメントを使用方法をダラダラ書かざるを得ない
そこまで違いがあるかあ?主観の話に聞こえるんだけど
主観といえば主観かも知れないが、ポリモーフィズムによるシングルディスパッチが なくなって、それも全部isinstanceでやれと言われたら嫌だと思うんじゃないか?
よしじゃあ多重定義とif文の間取って行こう、を地で行ったのが
>>406 結局どこかで冗長なコード書く羽目になる
>>456 多重継承って、
class A{void foo(){}};
class B{void foo(){}};
class C : public A, B{};
のこと?
なんでそれが出てきたのか知らないけど、その話してるとは気づかんかった。
> +(1, +(2, +(3, 4)))
reduce(operator.add, [1,2,3,4])
関数2つから関数を作り出す関数がこんなに連結されてる時点で、既に読みやすくない。
演算子の有効性なんて、PythonもC++も過度には求めてないよ。
優先度も定義できないし、できるのは+とか*とかの使いまわしくらい。
>>462 どうせ関数にはdocstring付けるのが推奨だ。
range([start,] stop[, step]) -> list of integers
なんて、十分明確だと思うし、
多重定義っぽく
range(stop) -> list of integers
range(start, stop[, stop]) -> list of integers
って書いても問題ないと思うよ。
スクリプト言語は進化したけど、人間の方は「はなししって何ですか」のころからちっとも進歩していないんだな。
471 :
Perl忍者 ◆M5ZWRnXOj6 :2010/12/26(日) 17:08:33
人間関係ないから^^;
>>472 昔は一部の「わかっている」人だけが参加していたけど、今はそれ以外の人も参加しているからでは?
昔より一般化してきたという意味では進歩しているかと。OOに対する考え方も多様化していると見ることもできるし。
Pythonユーザについて一般化するとそういう見方もあるかもしれないけど、 2chについて言えば、やはり過疎ってきてるし 賢そうな、あるいは面白いレスやスレの比率は減ってS/Nが低下してると思う まあスレ違いだな
正直、range()ってPythonの例としては微妙なんだよなあ。
範囲なのに、個数の表現まで内包しちゃってて
そのせいでPythonの関数定義のシステムからも外れちゃってる。
>>433 Rubyは名前を大量に定義する文化だから、要らないんだよ。
同じ意味の別名のメソッドがあっても気にしないし
機能別に別々にメソッドがあることも珍しくない。
基本は同じなんだけど微妙に違うメソッドとかも普通にあるし。
>>475 そのおかげで、「こういう書き方ができるかな?」と思って書くとすんなり動いてくれたりするから使いやすい。
自分が「こう書きたい」と思うように書けるのはプログラミングを楽しくしてくれる。
俺がPython大嫌いなのは段付けを強制するからなんだよね。俺もCで書くとき、関数の中は段付けするけど
関数の終わりは段付けをなくして閉じた書き方をしたいと思っても文法エラーになる。
こんな言語仕様を考えた奴はアホだと思ったね。柔軟性がかけらもないから書いてても楽しくないしストレスが溜まる。
476訂正 > 関数の終わりは段付けをなくして閉じた書き方をしたいと思っても、Pythonでは文法エラーになる。
どのLL使ってんの?あえて外してCを挙げたんだろうけど
>>476 Pythonの設計思想は書きやすさより読みやすさだから
>>477 閉じの行が嫌いな人も居るからなあ、そればかりは好みの問題でしょ
LISPなんかは閉じ括弧を明示するけど、閉じ括弧は最後の行の末尾に纏めちゃうから見た目はPythonみたいになるし))))))
まとめとしては、いくら言語の設計思想として読みやすさに重きを置いていても
>>346 のようなコードを書こうとする者を止めることはできなかった、ということですね
オーバーロードがあれば346があういうコードをかくのをとめられたはず、かわいそうに…
引数ありのコンストラクタを定義するとき別に空のコンストラクタを書かなきゃいけないのはクールじゃないよね
まあオーバーロードってなにしろ地球人を飼育してるわけだから 346とかメじゃないですよ 世界樹の迷宮2のラスボスの場合はバーローとか言われてるけどね!
「可読性は善」 Guidoが築き、信者が広めたPythonコードとは、一体何だったのか。 今、その実態が多重ディスパッチ―――。 なんていうドキュメンタリ仕立ての本をだな?
>>476 君頭悪そうに見えるからもうレス書かない方がいいよ
int hoge(void){ if (〜){ if (〜){ if (〜){ } } } } //閉じ括弧ばっかうざい int hoge(void){ if (〜){ if (〜){ if (〜){ }}} //きもい } def hoge(): if 〜: if 〜: if 〜: 〜 //イイ!
馬鹿と煙は高い所が好きってことですね、わかります。
インデントは強制でもいいけど、閉じ括弧は書かせて欲しいよねえ。
代わりにpass書けばおk
インデントベースは良くも悪くも冗長さが省かれる
>>489 そうそう。ぱっと見て視覚的にわかりやすいコードは内容が理解しやすいから書きやすいし保守もしやすい。
>>487 みたいに尻切れトンボがいいなんていう腐ったセンスしか持ってないと混乱しやすくなる。
コードが長くなったり、修正しまくってインデントがちょっとずれたら動作を間違って解釈してしまう。
閉じカッコがインデントと対応させて書ければブロックの単位を確認するのが一目でわかるし、
尻切れトンボが途中にあっても発見しやすい。
慣れてない人はそう思うのだろうね
494 :
デフォルトの名無しさん :2010/12/27(月) 04:02:32
インデントに文句言う香具師はPython使ったことが無い法則
センスが腐ってるかどうかはともかくたとえば if cond: do_something() i += 1 なのか if cond: do_something() i += 1 なのかコピペしてるとわからなくなることは確かにある でも俺は end や fi を毎回書くぐらいなら稀にコピペミスするほうを選ぶ
多分Lisp系も使った事ないんだろうなあ
int hoge(void){ if (〜){ if (〜){ if (〜){ }}}} //イイ!
499 :
Perl忍者 ◆M5ZWRnXOj6 :2010/12/27(月) 12:17:32
お前ら低レベルすぎるから まだぜんぜん追いつかれないわ
Pythonもifとかでブレースつかわんだけだろう データ構造や関数呼び出しがネストすれば Pythonでも普通に)))))))とかあるぞ 最初からifもブレース使うようにしときゃ 後で別構文のif式を導入することもなかったのに
ソースが構造化されていないとエディタとの連携とかがやりにくい Lispならeval-last-expressionとか何でもないけど Pythonは上から順番に見ることしか許さない構文 何かに似てると思わないか? Shift-JISやEUC-JPなどのレガシー文字エンコーディングだよ 文字の区切りが判別し難いから先頭から舐めていくことを要求される UTF-8はそれよりはずっとよく出来ている
>>481 バカにつける薬はないのだから、仕方ない。
>>500 > 最初からifもブレース使うようにしときゃ
> 後で別構文のif式を導入することもなかったのに
関係ない。文を式として扱えないだけ。
>>501 構造化はされてる。
Lispでも
(+ 1
2 (+
3
4))
を3行目から読むとむちゃくちゃになる。
むしろ、先頭バイトで可変長バイト数文字列のバイト数が判るのがインデントブロックに似てて、 開く括弧と閉じ括弧を対応付けないといけないのがエスケープによるコードページ切り替えを必要とする エンコーディングに似てないか?
>>502 これを個人の能力の責任に押し付けて終わるのは容易い
だが「だったら俺が馬鹿でもキーワード引数の使い方を間違えないドキュメント作ったらぁ」と行動を起こすのが先を行く者なのだ
私には分かる、"彼"はそういう男だ・・・
RubyもPythonもSilverLightには適わない
silverlightが最強なのは台湾でだけ
SilverLightがインストールされているのは全PCの約7割 GUIも手軽に作成することが出来る 一方RubyもPythonもインストールされているのは1割以下w スクリプト書いてもインストールしてないと使えませーんwwww
Silverlight 使いが SilverLight とは書かないだろうし
汎用スクリプト言語の Ruby と Python を比較したりはしないだろうし
ましてや敵うを適うなどと間違えたりは
結論
>>507 は Adobe か Apple のまわしもの
回し者?意味不明w 誰が書いてようが関係ないだろ 事実なんだからさww 反論できないからって、工作員だとか言うしかないんだよねww
そういうセリフは反論できてからにしてくださいよww 負け惜しみにしか聴こえませんからねww Silverlightより優れている点でもあるんですかー?ww 一行でボタン作れますか? webに強いRubyもPythonもweb電卓GUIすら簡単に作れないじゃないですかww Silverlightならweb用の電卓をそのままデスクトップアプリとして 利用できますよーーww
Silverlightは真のマルチプラットフォームはHTML5発言で死にました
死んでるのはRubyPythonでしょw 誰がこんなのインストールしてるの?ww
そういや、アイロンなんとかって、まだ生きてるの?
Silverlight一応PCに入ってるけど入ってないと見れなくて困るコンテンツって今のところまだやー、ごめんなー
>>495 >なのかコピペしてるとわからなくなることは確かにある
>でも俺は end や fi を毎回書くぐらいなら稀にコピペミスするほうを選ぶ
オレは逆。
今までPythonのインデント強制方式は便利だと思ってたけど、
コピペ時にミスるだけでなく、エディタでのインデント自動修正が
できないから、endや}を毎回書くほうを好むようになった。
あとPythonはコード生成系に弱い。eRubyみたいなのがさくっと実装できない。
一行でWebBrowser作れますか?
何気にMacにとってSilverlightは神アプリだぞ あれのお陰でそれまでIE専用サイトだったとこがいくつか観れるようになった
522 :
Perl忍者 ◆M5ZWRnXOj6 :2010/12/28(火) 08:52:07
動画バカは死ねよ カスなんだよお前は Mac使ってる時点でゲロクズゴミ^^; ゲロクズゴミ521ちゃんは死んでね^^;
>>509 py2exe
>>513 サーバアプリケーションとクライアントアプリケーションの区別くらいつけてから書け
最近の Silverlight はローカルでスタンドアロン動作するアプリ開発にも使えたような
>>525 Silverlightがクライアントサイドっていってるんだろ
DMMのサンプルアダルト動画がSilverlightだから仕方なく入れてる
528 :
デフォルトの名無しさん :2010/12/28(火) 14:20:04
え?
あれってFlashみたいなもんじゃないのか?
532 :
Perl忍者 ◆M5ZWRnXOj6 :2010/12/28(火) 19:30:19
バカマカほどSilverlightなどに必死^^; DRM動画が見れないかわいそうなごみくずども マックとかわらわせないでくれるかね? 早く死んじまえよゴミクズ野郎がw
↑お前とセックスしたい
534 :
Perl忍者 ◆M5ZWRnXOj6 :2010/12/28(火) 21:13:31
DRM Macとか検索必死にしてるゴミクズばかりだろうねwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwww おれはxxサイトの欠陥しってるからwwwwwwww 知りたかったら教えてやるよwwwwwwwwwwwww
DRM重視の所はSilverLightが多いでしょ。GyaoとかYahooニュースとか。
あと、Flashと違って、Mac版のSilverlightも高性能で良くできてるんだよな。 Mac版のFlashはWindows版と比べて性能が相当落ちるんで、Appleが怒るのも分からないではない。
結論 SLとWPFのコンビニ勝てる言語は無い 他は全部糞
セブンイレブン最強他は糞
で、silverlightはクライアント側で動くの?サーバ側で動くの?
ハ,,ハ _ ( ゚ω゚ ) ◎ー) / \ | | (⌒) (⌒二 ) ブッ!ブバァァ!!ビチビチィィ!! ~~~ /⌒ヽ( ̄、 ヽ プシャァァ!!ブチャブチャァァ!!! / Lヽ \ノ ゲリゲリー!!ブリュッブリュブリュゥゥ!!! ゙ー―――(__)
SilverlightやFlashやWPFやウンコの話はどうでもいいから、LLの話をしないか?
ってか,SilverlightやFlashやWPFは,ここで比較するような言語なのか? 延々と終わらないLL論争で,一通り触ってみて文法を覚えるだけ覚えて, 思い返すば,どれもほとんど記憶に残っていないし, どれにでも地雷があった気がしたので,その都度,リファレンスを見ながら, boostの使い方でも覚えた方が便利だろうなとか思っている
言語というのは覚えるためにやるんじゃなくて、「こういうソフトを作る必要がある」という状況になってから やったほうがはるかに簡単に身に付く。作りながら、覚えながら作るという感じ。
ハ,,ハ _ ( ゚ω゚ ) ◎ー) / \ | | (⌒) (⌒二 ) ブッ!ブバァァ!!ビチビチィィ!! ~~~ /⌒ヽ( ̄、 ヽ プシャァァ!!ブチャブチャァァ!!! / Lヽ \ノ ゲリゲリー!!ブリュッブリュブリュゥゥ!!! ゙ー―――(__)
LLのGUIツールキットがイマイチで、じゃあ手軽に作れるGUIアプリの開発言語は何だろう?って、それがFlashだったりSilverlightだったりって流れだろ。
いや待て待て、Flashは言語ではないし(言語としてはActionScript) Silverlightだって言語じゃない(言語としてはJSやVBやC#などになる)
手軽にGUIアプリを作れるLLがあってもいいが、手軽にGUIアプリを作れるから といって、それをLLと呼ぶのは間違いじゃね?
Tcl/Tkの頃から、進化どころか退化してる部分だからなぁ
じゃあ誰か進化させてくれ
そこでSilverlight
ブランドや標準化で解決する問題ではない。
2010年6月調査 ○OSシェア Windows XP : 52.02% Windows Vista : 27.64% Windows 7 : 10.73% MacOS : 4.72% Windows 2000 : 0.97% iPhone : 0.97% Windows ME : 0.40% Windows 98 : 0.21% Android : 0.15% Linux : 0.11% Windows Server 2003 : 0.09% 不明 : 0.69% その他 : 1.30% Rubyなんて使ってるバカってなんなの? WPF+SL+JSで十分だろw
553 :
Perl忍者 ◆M5ZWRnXOj6 :2010/12/31(金) 23:36:44
あっそっすか
Rubyはバカには使いこなせないw
使いこなす必要が無い
そして脳ミソが退化
脳内じゃね?
Silverlightはおわコン。 MSNですらFlashのオンパレード、誰かyahoo動画ニュース見る為にSilverlight入れた?
多分ウェブでUAを元にしたシェアだろうな。だいたいどこの調査でもそんなもんだからな。 けど、企業だと、ネットにつながってないPCとか、プロキシ経由のPCもあるだろうから、実際はもっとWindowsが多いだろうな。
>>560 Gyao観るためにSilverlight入れたMac使いは結構いるんじゃね
564 :
Perl忍者 ◆M5ZWRnXOj6 :2011/01/03(月) 14:58:01
クソマカはさっさとしねってこと Mac使いは死ね クソマカはゴミしかいねえな ペンギンやマイトガイとか瑪瑙とか狂ってるゴミばかっかりだな
Ruby終わりの始まり
P言語の時代だからな。R言語と言うと別にあるし、Rubyより有用だし
568 :
Perl忍者 ◆M5ZWRnXOj6 :2011/01/04(火) 20:57:29
# コメントを書く # もうぜんぶrubyでいいじゃん (スコア:1) ksiroi (24990) : 2011年01月04日 16時41分 (#1883309) 日記 日本が誇る某大企業がC言語を社内共通語にしたんだしさ。 全員rubyで会話すれば万事解決すんじゃないの? // redmine動かしてみてrubyは無理っつかなんか嫌だと感じた // やれといわれりゃやるけどあれで開発とか無理。まだPHPのほうがいいや(:>^
569 :
Perl忍者 ◆M5ZWRnXOj6 :2011/01/04(火) 20:58:46
スレってつぶすことできますか? 課金すればできますか?教えてください><
□に入る漢字を答えよ 思うに、Lucasさんがもう辞めたと宣言した理由は6が大きそうです。ボランティア でやっているのに、口さがなく文句を言うヤツが多くてウンザリした、というのが一 番大きいのではないでしょうか。これについては、まつもとさんも、
太さ
572 :
Perl忍者 ◆M5ZWRnXOj6 :2011/01/04(火) 21:31:03
こいつが中国人だったらぼろくそたたかれてるなかわいそう
573 :
Perl忍者 ◆M5ZWRnXOj6 :2011/01/04(火) 21:40:21
6、Rubyコミュニティの何人かはクソのような振る舞いをやめろwww 6、Rubyコミュニティの何人かはクソのような振る舞いをやめろwww 6、Rubyコミュニティの何人かはクソのような振る舞いをやめろwww 6、Rubyコミュニティの何人かはクソのような振る舞いをやめろwww 6、Rubyコミュニティの何人かはクソのような振る舞いをやめろwww 6、Rubyコミュニティの何人かはクソのような振る舞いをやめろwww 6、Rubyコミュニティの何人かはクソのような振る舞いをやめろwww
Rubyのパッケージって、OS標準のパッケージには不要なんじゃない? PerlとかPythonはシステムツールで必須な場合多いだろうけど、Rubyなくてもかまわんでしょう。 Gemsに任せて、使いたい人だけ勝手に使えば良いんじゃないかな。
>>560 台湾のSilverlightのサイト見るためにSilverlightいれたわ
「クソのような振る舞いをやめろ」 俺、たとえばたまにmhattaが他所のコミュニティの内情も知らずに口はさんできたりとか、 Debianな人間にこそそれ言いたいとか思うことあるけどな。
皆さん調子に乗ってすみませんでした。
偽乙
Perl最強だぜ!
C++にはかなうまい
がはは
シュッシュシュ パネーッス!!ハイハイ!!
gfx様マンセーーーーーーー!!!!!!!!!!!!!!!!!!!! gfx様は庶民派なのでかっこいいです gfx様
キモ
誰だい?gtx様を 「キモ」 といった子はぁ〜!!ほらほらほらほら!! 出てこないとぶっ潰しますよぉ
俺だけど文句ある?
Silverlight
pythonはguidoが突然の事故で死んでも大丈夫だみたいな話があったけど rubyはmatzが死んだら共倒れぽいな
ある意味、そこからが始まりのような気もするw 一番の仕様いじりたがり君が居なくなるからな
Dave Thomasが 「matzが急にいなくなってもまあ大丈夫なんじゃね?」 的なコメントを残していたような といっても言語仕様のストッパーがいなくなるから、中長期的には……
Python には明文化された大量の PEP や Zen of Python がある けど Ruby にはそれがない 言語の生みの親に何かあった場合のダメージは Ruby のほうが大きいだろう とはいえそこまで両言語が残ってるかも怪しい
>>590 逆だと思う、matzがいじりたがりで、周りがストッパー
>>592 最近は自重気味だから問題ない
それよりも、言語設計の最終的な決定者ということで
有象無象の要求を弾き続ける作業が大事
数多の要求を跳ね除けた上で特定の気に入った仕様を推すから我侭支配者のように映るだけで 本当は仕様決定者としての仕事はわりとしてる 仮にまつもとゆきひろが居なくなった場合、 次のバージョンのRubyはエキサイティングになり、 その次のバージョンのRubyはカスになり、 その翌年にはRubyが3つに分裂するだろう
Matzが世を去ったらRubyはforkだらけになるだろうな
マネージメントほうめんがよろしくないんじゃないかと リリースマネージャっぽい人の悲鳴をみるに 権限をあやふやにしたまま仕事まかせてるような
yuguiさんの悲鳴か
今もRuby1.8とRuby1.9とtrunkにforkしとるだろうが プラットフォームによっては1.6や1.9.0もforkしたままだしなんとかしろやと IronRubyは死んだ。JRubyはもはや虫の息。Ruby Enterprise Editionは役目を終えようとしている。 macrubyは空気、Rubiniusってなんだっけ? むしろ収束してきたのでは
えー JRuby も虫の息なの? 趣味で iText 使おうと Jython を調べてたらどうも虫の息っぽいから JRuby でも始めようかと思ってたのに(PragProg から JRuby の新刊出るし) おとなしく Java か Scala にしとくか にしても Ruby 本スレかと
1.9.0はタグだけでブランチは存在しないが
jrubyは全然活発だろ
ディス鳥が勝手に作ったブランチまで、本家の責任にされるのかよ やってらんねーなw
IronPythonも微妙じゃね
Ironはどっちも微妙、JはPythonが微妙、MacはPythonにはそもそもない Rubyの圧勝じゃないか
Jythonは一時期微妙だったけど今は普通に開発されてるよ。 Iron系も問題ない
警告 これらのモジュールは撤廃され 3.0 では無くなります。 あるけど、終わコンってこと?
Jythonっていま2.5.2rc2とかなんだ JythonにしろIronPythonにしろ、3系をベースにしたほうが文字列のセマンティクスが 近くてよさそうに思えるけどな CPythonほど2.xの過去のコードベースとの互換性とか重要じゃないだろうし… そうでもないのかね?
RubyはJRubyもMacRubyもちゃんと最新の1.9系をベースに開発されてるな Ruby圧勝だな
誰と戦ってんですか?
612 :
デフォルトの名無しさん :2011/01/08(土) 21:58:11
きっとぱーるぬんじゃと。
610 :デフォルトの名無しさん:2011/01/08(土) 21:03:03 RubyはJRubyもMacRubyもちゃんと最新の1.9系をベースに開発されてるな Ruby圧勝だな 誰と戦ってるかいえよこら
Perl忍者をスルーしないのはこのスレぐらいだ いいスレを見つけたな
パール忍者はNGNameに突っ込んでたはずなのにまた出てきた。トリップ変えたのか?
>>615 うちもそうなった。全角半角の違いとかじゃない?
フォントに IPAMonaPGotihic Book 使ってるけど違いがわかりにくいのが難点
誰もいないのー?><???????????? ひどすぎw 私5時まで勉強机いくから笑 おわってるwwwwwwwwwwwwwwww たすけてw さいあく そういえば最初夕方だったねwいたのw 平日昼にいたときもあったよね?ここのスレw にゃ〜;o; しにたいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい いいいいいいいいいいいいいいい 12時w お風呂はいって課題やって5時まで寝るね^^
います おいくつですか?
おしえたくない もう嫌い><
パンティ何色ですか?
死ね色><
OSが1つしかないなら、窓ではvba,*nixならpythonに絞るんだけれど、 今はブラウザの時代だろうから、javascriptが全盛期. 異論は受け付けない.とか思うが、全く触ったことがない. javascriptって端末からのバッチ処理できたっけ? P言語や関数型はweb上のチュートリアルが充実してるのに、 javascriptの入門って、便所紙みたいなのしか出てこない
なんでブラウザの時代だとjavascriptになるんだよアホか
ブラウザ上で動くものを作るのに、perlやpythonで似たようなことできるの? 出来ても処理系を入れたり、フレームワーク入れたり なにかと手間が掛かりそうなんだけど
626 :
Perl忍者 ◆M5ZWRnXOj6 :2011/01/11(火) 23:38:36
バカの一つ覚えみたいにクラウドとかブラウザとかわめいてるごみですかあなたは?
0から説明しないといけないのだろうか 何も知らないで異論は受け付けないって何だよ
628 :
Perl忍者 ◆M5ZWRnXOj6 :2011/01/11(火) 23:40:03
コテくらいつけろやゴミクズ
629 :
Perl忍者 ◆M5ZWRnXOj6 :2011/01/11(火) 23:41:23
今の時代とか(大笑 時代語ってるやつがごみすぎてわらえる 予測できんの?ってかんじ
んなの煽って教えてもらう戦法に決まってるだろ
一つしかないTCPを複数の高級言語で情報隠蔽する時代 教えるよりも隠す時代
GNOME 3.0からデフォで入るはずの ローカルアプリのgnome-shellですらjavascriptで書かれてるお ブラウザ上もローカルも、LLはjavascriptの一人勝ちだお(^ω^) perlなんて、宗教みたいなguileでも弄ってる方がマシなレベル
linuxにどんだけpythonが使われてると思ってんだよ javascriptとか仕方なく嫌々ながら使われる言語の代表格じゃん。LLとして論外
一歩間違えたらTclが使われてたんだろうな HTTPだかHTMLの仕様書読んでいて思ったことがある
pythonが負の遺産になるかはたまたshかtcshかbashになるか
pythonなんて、未来では「ほげ」言語に置き換わってるよ 負の遺産が怖いなら、Cで書くよろし
JavaScriptは組み込みオブジェクトが処理系によって違いすぎる。 ブラウザ用言語としては昔より標準化されてきてるが、 デスクトップウィジェットやらの、非ブラウザ用途は悲惨。
JavaSriptってなんでECMAScript4準拠が立ち消えになったんだろう。 バッドノウハウの固まりみたいな現状で、デスクトップアプリ並の大規模開発強いるのは。
>>639 誰も強いてないのに、JavaScripterが適材適所を無視してどこでもJS使いたがるだけだろ。
サーバーサイドはどうなの?最近よく話題にのぼるnode.jsとか
JSは標準化が進まないのが難点だな、言語としては意外なほどよく出来てるが
すれ違い
スレ違いか?充分LLの範疇に入る言語だと思うが
JSってローカルなリソースにアクセスできるんだっけ?
JS標準規格としてそれをやるライブラリは存在しないが 例えばWSH上のJScriptはFileSystemObjectでローカルファイルへのアクセス出来るぞ
それって悪用されると危ないよね
MSって馬鹿なの?
CommonJSでできるんじゃね
ブラウザの組込みじゃなくて、ローカルで動く処理系ならどれだってそういう機能あるだろ。
>>647 WSHのスクリプトをうっかり動かすおバカさんは、exeファイルをうっかり動かすおバカさんだから、問題ない。
ダブルクリックしないと実行されないと思い込んでたら いつのまにかシングルクリックでも実行されるのがデフォルトになってて 意図しないで起動されてびっくりしたことがあるのだが もうずいぶん前の話だったりする
MSって馬鹿だよね
Flashとかでもそうだけど型があいまいすぎる言語は嫌いだ そういう意味ではJavaScriptも嫌い あんなんでよく開発とかやってられるな・・・・ 怖くて絶対使いたくねぇよ
そのへん、LLはどれも似たようなもんじゃないかね。 LL以外で言うと、ANSI Cあたりはギリギリセーフぐらいか?
C++でいうと、templateのダックタイピングはギリギリアウト
>>650 そりゃそうだよ
ただ
>>645 はJSにはブラウザ実装しか存在しないと思い込んでそうだったし
node.jsには誰も触れれない低脳っぷり
JSをありがたがってるのは低能だけだろ
amachangとかな
661 :
ひみつの検疫さん :2025/01/15(水) 13:05:42 ID:MarkedRes
汚染を除去しました。
ウイルスコード
個人的にはコルーチン・継続ベースでない非同期プログラミングは鬱陶しいので あまりしたくないなあ libevent+コルーチンベースの Pythonのgeventでechoサーバもどきを書いてみたよ (ただしcat -nのように、行番号を各行に付加して返す) 非同期でありながら、同期と見た目は全く同じように書けるのがわかると思う node.jsだとどういうコードになる? def cat_n(src, sink): for n, line in enumerate(src): sink.write('%06d %s' % (n + 1, line)) def service(sock, address): with closing(sock.makefile()) as src: with closing(sock.makefile('w', bufsize=0)) as sink: cat_n(src, sink) StreamServer(('127.0.0.1', 12345), service).serve_forever()
ActionScriptは型指定出来る。
>>662 >>661 が投稿されてからセキュリティソフトが反応して
なんかのファイルを隔離しましたって出た
その後うちの専ブラがログが見つからないと言ってエラー吐いて死ぬようになった
666 :
662 :2011/01/14(金) 15:45:34
こっちはMSEが反応して除去しただけで特に問題はないけど
>>655 それでもPerl6なら・・・Perl6ならきっとなんとかしてくれる・・・
PHP6もね
>>654 型が重要といえば、HaskellとかOCamlか
書捨て用途のLLで、アプリケーション書くとかナンセンスだよな
逆に使い捨てのスクリプトで型書けとか言われても面倒だけど
型にvarを入れたC#は素晴らしいと思う
よく使われるコードはよくテストされるから型は不要 型が必要なのは、極めて稀なケースしか出番がないコード
>>654 は動的型を嫌がっているのか型付けが弱いのを嫌がっているのか分かりにくい
静的型で型付けが強いのがほしいんなら関数型とかしかないな
(ただしJVM系はだめ)
Javaも.NETも参照型に全部無節操にnullをつっこめるし
Cなんかvoid*だのunionだの何でもありで、それらを使った場合の型安全性は
動的型で型付けの強い言語にも劣る
そんなもん関数型のは過剰とも取れる。
>>672 俺は別に静的型信者じゃないけど
信者からすれば過剰じゃないんだろう
Javaや.NETの参照型は本質的に全部nullableだから、本来常にnullチェックによる
条件分岐が要る
関数f()の戻り値がnullではないことが分かっているならf()の戻り値の
nullチェックを省いてもいいけど、それを型システムの上で示す方法が無いし
Maybeモナドのようにそうした汚い仕事をうまく抽象化する仕掛けも無い
>>658 CommonJSなら触れられてるじゃないか
Javaにはポインタは無いのに NullPointerExceptionが多発するのはなぜでしょう?
ポインタがないというか
クライアントで使うGUIアプリで型指定出来ないというのは、実行速度だとかメモリ使用量だとかで厳しいと思う。
上流で書く仕様書は実行出来ないだろ 実行出来ないというのは、速度とかメモリとかで論外だと思う でも最初にそういうのを作っておくことには意味がある
意味が分からん。
gobaku
LLでアプリを作るやつと それを参考に高速化するやつで分業すればいい 高速化に成功したら LLを参考にしたおかげで成功したことにする
682 :
デフォルトの名無しさん :2011/01/15(土) 19:55:33
まあ、高速化(笑)なんて底辺派遣プログラマーにやらせりゃいい話だからな。 クリエイティブな活動はLLを使ったほうが効率いい。
LLよかもboostつかった方がお手軽だと信じている
どっかに言語ユーザー毎にOSとライブラリ、使用するツール、 作成したプログラムの相関を表したグラフが載ったサイトとかないかな
JSのウェブアプリをネイティブ並みに高速にチューニング出来るなら、Googleからスカウトが来るでしょうね。
Googleに入ったらGoogle以上のものは作れないから。 結果的に失敗して野垂れ死にしたら、そこまでの人だったとして諦めるしかない
>>685 ネイティブ並みじゃなくてネイティブで書き直していいよ
それでもJSが本家でネイティブは分家という扱いは変わらないけど
JSをネイティブで書き直してどうすんだ ブラウザで動かなきゃ意味ないだろうに…… google native clientのことか?
専用ブラウザ
>>688 JavaのJITみたいなやり方にすればブラウザで動くじょ
>>663 マタPython信者ノPython自慢ガハジマタヨ
ダレカ対戦シテアゲテ!
そのまま使うには厳しいんじゃない?だから、GWTみたいなのがあるんだろう。
C++が厳しいという意味ではJavaが正解 Java以外に何かあるとするなら、そもそもOOPが間違いだという前提でないと無理
誰かGUIライブラリバトルロワイヤルスレでも立ててくれよ gtkとQt,wxwidgetなんかのうちで、どれを使い込もうか踏ん切りつかないんだ
>>695 その3つを挙げているなら、多少なりとも自分で調べたんだろ?
その結果を書いてみたら、議論のきっかけになるかもよ。
よろしくね
>>698 冗談でなしにHDDがぶっ壊れて、Xfaceの偉大さに気付いた。
人間の真価はいざというときにこそ問われるものだとすれば、
CDからブートしたときに入ってる率が高いLL、
perlとpythonをこそが全てに違いない
ブラウザはCLRでもJVMでLLVMでもなんでもいいからそんな感じの実行環境のせて それ向けのバイトコード吐く言語ならどの言語でも開発可能みたいな方向にはならんのかな ブラウザ戦争でJavaScriptがまたこんだけ高速化したよみたいなニュース読むたびになんだかなぁって気持ちになる
JavaScriptは名前にJavaがついてるのはなぜ?
1995 ? ブレンダン・アイクがプログラミング言語設計においてかつて犯されたあらゆる誤りを取り上げ、 さらにいくつかの誤りを新たに考案し、LiveScriptを作る。後にこの言語はJavaの人気にあやかるため JavaScriptと改名された。さらにこの言語は皮膚病の人気にあやかるためECMAScriptと改名された。
ブラウザ上でJavaScriptにトランスレートして実行するぜってのはいくつかあるよな。 BiwaSchemeとか。CoffeeScriptって言語も一応そういう実行方法が用意されてた。 実行効率はどうか知らんが。
705 :
デフォルトの名無しさん :2011/01/21(金) 19:32:09
よろしく
iPadみたいなタブレットPCって、ダイナブックの構想のまんまなのに タブレットPCでSmalltalkが大々的に復活したりしないのかな
“あらゆる年齢の「子供たち」のためのパーソナルコンピュータ” ― アラン・ケイ (1972)
http://swikis.ddo.jp/abee/74 これを読むと、もはや暫定レベルかつ不完全ながらもダイナブックのためのすべては揃っている
(というよりGUIやメッセージングのOOなど、もはや我々は「発明」された未来のうちにいて久しい)
わけだから、あとはジョブズのように金儲けのために手っ取り早く暫定ダイナブック(≒Smalltalk)の
表層をまねて切り売りしているような人たちに都合の良いミスリードに惑わされないことも含め、
もう使う側の意識の問題だけなのではないでしょうかね。
通報しました
>>707 >これを読むと、もはや暫定レベルかつ不完全ながらもダイナブックのためのすべては揃っている
>(というよりGUIやメッセージングのOOなど、もはや我々は「発明」された未来のうちにいて久しい)
>わけだから、あとはジョブズのように金儲けのために手っ取り早く暫定ダイナブック(≒Smalltalk)の
>表層をまねて切り売りしているような人たちに都合の良いミスリードに惑わされないことも含め、
>もう使う側の意識の問題だけなのではないでしょうかね。
一文が長杉
マジレス寒杉
>>706 ,707
一言で言って、「このスレでSmalltalkの話題はスレ違いだ」
Smalltalkとは単なる言語処理系ではなく、エディタ/ブラウザ/インスペクタ/デバッガ等を含む
統合化開発環境だ。Light-weight Languageではない。
Smalltalkの話題であればこの板のSmalltalkスレへ、iPadであれば新Mac板へ逝け!!
711 :
710 :2011/01/22(土) 12:22:13
>>706 ,707はスレ違いではあるが、誤った情報が含まれているので、そこだけ指摘する。
>>706 >iPadみたいなタブレットPCって、ダイナブックの構想のまんまなのに
・iPadはタブレットPCではないし、Personel Computerではない。Mobile Deviceの一つだ。
・iPadはA.KayのDynabook構想とは無関係だ。XEROX PARC(Palo Alto Research Center)の研究成果と
「あえて」結びつけるのであれば、M.weiserらのUbiquitous Computingプロジェクトが近い。
このプロジェクトではTab/Pad/Boardと呼ばれる三種類のデバイスが構想されており、
現在のApple製品系列であればiPhoneがTabに、iPadがPadに、BoardがAppleTVに対応する。
>>707 >あとはジョブズのように金儲けのために手っ取り早く暫定ダイナブック(≒Smalltalk)の
>表層をまねて切り売りしているような人たちに都合の良いミスリードに惑わされないことも含め
Jobs(Apple)を引き合いに出すのなら、ナゼ世界一の大富豪であるGates(Microsoft)を挙げないのか?
GatesはJobsを遥かに超える金儲けによってMS大帝国を築きあげた。
あえて言おう、「Dynabook/SmalltalkとJobs/Appleを無理矢理結びつけようとする
>>706 のカキコは、読者をミスリードを誘う愚かな行為(FUD)そのものである」と。
もし反論があれば、
>>710 で書いたスレにカキコ汁。待っているぜよ。
708 :デフォルトの名無しさん:2011/01/22(土) 01:50:20 通報しました 通報オタク乙
Appleの時価総額がとっくにMS超えてるとか知らないだな。
会社の売上とLLは何の関係もないだろ
>>710 gstみたいな処理系はLLみたいなものだろ
かといって、GNU SmalltalkはSmalltalkと呼ぶにはかなりの変わり種だし。痛し痒しだ。
iPadはダイナブックじゃないよね。
Objective-Cの[ ]の中はほぼSmalltalkじゃん
LLって英語圏でも通じる?
英語圏だと、XLだよ。
ピザwww
luaはゲーム組込み用途のスクリプトだと思ってたんだけど、 wiresharkやnmapにも組み込まれてたんだ リストと連想記憶と正規表現と匿名関数があれば事足りるのに増えすぎ
>>682 逆じゃないの?底辺がLL使ってるイメージだけど。
>>724 何を言っているんだ
底辺は Java / VB / PHP だろ
受託開発系 勝ち組が使う言語 UML(設計だけするが実装はやらない上流SE 実装は下請けに丸投げ) 負け組が使う言語 Java(今日もデスマ♪過労欝自殺♪サービス残業♪) 自社サービス系 どの言語を使っても勝ち組
とりあえずうんこしてきた きもちいい
729 :
デフォルトの名無しさん :2011/01/31(月) 14:16:01
ハ,,ハ _ ( ゚ω゚ ) ◎ー) / \ | | (⌒) (⌒二 ) ブッ!ブバァァ!!ビチビチィィ!! うんこRuby ~~~ /⌒ヽ( ̄、 ヽ プシャァァ!!ブチャブチャァァ!!! うんこPerl / Lヽ \ノ ゲリゲリー!!ブリュッブリュブリュゥゥ!!! ゙ー―――(__)
730 :
デフォルトの名無しさん :2011/01/31(月) 14:38:04
>>720 通じない。LLは日本で技術本を書いている作家や出版社が、目立つコピーが欲しくて広めた単語。つまり日本語。
>>732 チュートリアルとか入門書を全て無視して、ソースコードを読めと書いてある点に違和感を感じる。
そうか? なぜこの世にたくさんのプログラミング言語があるのかを知らない人が書いた記事だと思った 組込制御だとかCGだとか数値計算だとかの別の世界を知らないアプリケーション屋さんの意見だな 今の世の中はアプリ屋さんだらけだから、アプリ屋さんがアプリ屋さん向けに書いた記事としてはこの程度のものかな? そうですね。日本でもCG業界やゲーム業界では、RubyとPythonだと、ほぼPython一色といっていいほどPythonの方が多く使われていますね。 それは俺も思った 自分の業務(ネットワーク/OSまわり)に近い視点で言えば、 ライブラリ開発やカーネル開発(依存するものを最小限にすることが求められる)とか、 複数OSをまたいでのシステム管理(移植性が重要)とか、 そこらへんの観点がないように感じたなぁ。 大規模系の開発者からはまた別の観点で言いたいことがあるんじゃなかろうか
>CでできることはC++でもすべてできるので、個人的にはC++を使わずにCを使うというシーンがあまり思い浮かばない。 そこの筆者なにもわかってないな
>>732 > 有名な高級(?)言語の中では最速の実行速度を誇る。
Fortranは?
> 軽い言語だと勝手に裏側でやってくれるようなメモリの確保とかファイルポインタの操作なんかも、Cでは自分で意識して書かないといけない。
C言語でファイル入出力を扱ったことが無いのが良く分かる。
> あと移植性が低い。たとえばLinuxで動いているコードをWindowsで動かそうと思ったら、いろいろ書き換えないといけないところが出てくる。#ifdef Windowsみたいな。
ANSI Cの範囲なら、移植性は高い。
GUIを扱うならAPIやライブラリに全く互換性が無いので、プリプロセッサで分岐できるレベルではない。
makeは必須ツールなのだから、リンカーの互換性も指摘すべき。
>GUIを扱うならAPIやライブラリに全く互換性が無いので Qt4いいよ
>>735 >>CでできることはC++でもすべてできるので、個人的にはC++を使わずにCを使うというシーンがあまり思い浮かばない。
> そこの筆者なにもわかってないな
それは私も思った。
だれかきた
ざっと読んで気になったのは以下の2点。 ・Cの参考書として「はじめてのC」を推薦している事で、Cの理解度の低さが分かる。(洒落にならん) そのくせC++では「Effective C」を挙げているから、C++大好きな人なのだと思う。 ・Objective-CのC++/Java等との決定的な差異として、(SmalltalkやRubyと同様に) 動的なOOPを前提に設計された言語であるという事が欠けているのは、致命的なミス。 冒頭で仕事じゃ使っていないと書いているのだから、生半可な知識を披露すべきではない。 他は、概ね妥当なコメントじゃないかと。(賛同できない事柄も多いが誤りではないのでOKとする)
>>736 > C言語でファイル入出力を扱ったことが無いのが良く分かる。
システムプログラミングの経験がないだろw
ファイル入出力もOSレベルだとアセンブラで組んだルーチンを
コールするようなことをやる
当然、アセンブラの方を知らないでプログラムは組めない
ポインタどころかメモリ空間を意識して、直接書き込むような
スキルが必要になる(多分、カーネルの中身を知らないと
分からないと思う)
C++でも出来なくはないが、同じようなことをやるとCで
書いた方が早いというような話になる
>>741 ベンチマークをとった事があるんだが、OSのAPIを叩いてファイルアクセスをしても、ファイルストリーム関数を使ってもほとんど速度は変わらん。
ファイル・オープン時に、シーケンシャル・リードとか、ランダム・アクセスとか色々とオプションをつけられるのだが、ディスク・キャッシュに情報が渡るはずなのに、ほとんど効果が無い。
それでもわざわざAPIを叩いているの?
Cを学ぶやつって大抵初心者だしやさしいCくらいでいいんじゃね? 別の言語やってればポインタ以外は流し読みで理解出来る
このスレLoveLetter-Cに感染してるみたいなんだけど。
それはたいへんだ(棒
最近つくづく思うけど、Perlってもうダメだね。日本じゃまだマシだけど、海外じゃ完全に空気。
組込み開発やアプリケーション、数値計算を別にして、 問題を解いたり、アルゴリズムを記述するのに向く言語って何れだ? lisp系か?なんて思いながら、anarchy golfのlanguage rankingを見たら、 golf scriptについでrubyが入ってて驚き。perlは3位。pythonに至っては6位。 ほとんどpythonでかくのかと思ってたんだけど、意外なとこで使われてんのね これで飯が食えるわけでないだろうけど。
ってか、anarchy golfってrubyコミュニティの人が運営してんのな
Pythonて明らかにgolfには向かないだろ
>>751 > 問題を解いたり、アルゴリズムを記述するのに向く言語って何れだ?
> lisp系か?なんて思いながら、anarchy golfのlanguage rankingを見たら、
C
C言語はアルゴリズム以外の部分に思考を遮られ過ぎだろ
hashや連結リスト程度なら、即興で実装できるんでね? 競技プログラミングでインドや中国の参加者だと、 わりとCを使っている上位入賞者なんてみた気がするぞ MSの性能が戦力の優劣には関係しないってシャアが言ってたし、 言語の機能なんて問題を解く上での優劣には関係しないんだよ。とか妄想してみる。 classなんて飾りです。アプリケーション連中にはそれがわからんのです
何C対LLみたいなことになってんのwww 適材適所ってのがあんだろ
>>758 んなところから実装しなきゃならんのはどう考えても開発の邪魔だろ。
最初からある程度は実装されてた方が楽だし
そういう既存のやつは色んなノウハウが既にあったり
バカ正直な実装に比べて最適化が行なわれてたりして効率的だったりする。
Cはアルゴルズムの最後の継承者
C「兄より優れた弟などいない」 C++「….」
>>758 みたいなこと言ってpythonやrubyなら簡単にできることを
Cでシコシコと作られた日にゃ、おれが上司だったら切れちゃうよ
>>758 たとえ即興で実装できたとしても、毎回実装すんのはだるいだろ。
しかも、人によって実装が微妙に違ったりするから、分かり辛い。
デフォで欲しいよ。飾りじゃない。
>>751 再帰がからむアルゴリズムだとHaskell最強だよ。まあ、当然かな?
汎用性に欠けてる時点で論外だろ
>>768 Haskellって汎用性に欠けるって言われるけど、本当にそうなのかな?
今勉強してるけど、ライブラリさえあれば(笑)C++と同レベルな気がする。
と書いておきながら、俺はHaskellあんま好きじゃないんだけど。
オブジェクトはいるよ。オブジェクトは。
普及するまでは使い物にならない 使い物にならないから普及しない
771 :
769 :2011/02/04(金) 00:48:44
>>770 それは本当だけど、それ言ったら終わりでしょ。LLなんてJavaなんかに
比べたらはるかにマイナーなんだし。
>>770 そこで、railsのようなキラーアプリをだな
>>766 漏れの鯖環境では
4 年ほど前から Perl 刈り実施中
もう殲滅カウントダウンまできた
>>773 そうか・・・やっぱりPerlはもうダメか。Perl6のOO具合を見て、まだいけるのかと思ってた。
むしろ、そのPerl6が一番の問題なんじゃねえの 新バージョンへの移行どころか、新しい言語に移行するような状態になっちまうだろあれ
>>750 >最近つくづく思うけど、Perlってもうダメだね。日本じゃまだマシだけど、海外じゃ完全に空気。
日本って、なんであんなにPerlが強いん?
そんで、なんであんなにPythonが弱いん?
すべて日本語のせいです。
perlは使わないけれど、消えて欲しくない言語だな 極めたら端末からワンライナー書くのには便利そうだし 不精さの美学みたいなものがある で、pythonはインスタンス変数に全てselfをつけないとダメなのか? 長い数式とか書くのが面倒くさそう その点で、rubyは@だけ書けば良さそうで楽そう。アクセッサまで付いてる
rubyは書き捨てに向いてるからな まさしくperlの後継者足りうる言語
実際書いてみたらselfって言うほど面倒くさくないんだよなぁ。 ていうか、どうしても嫌ならwithステートメントでselfの中身展開できる気がする。
>>780 >ていうか、どうしても嫌ならwithステートメントでselfの中身展開できる気がする。
は?jsと勘違いしてる?
782 :
780 :2011/02/05(土) 02:48:32
Pythonのselfは予約語ではないので インスタンス変数にアンダーバーを前置するどこぞの慣習にあわせて class Foo(object): def foo(_, x, y): _.hoge = x とかしたらselfだせーよとか文句言われなくなるかもしれない ただ今度は関数型の人から怒られる可能性が
だめだ。contextmanager内のスコープとyieldでのスコープは別だ… スタックフレームとか使えばできるのかな? でももうねる
>>783 よくわかんないけど、それ分かった上でどーこー言ってる人たちだと思ってた。
そうしたところで、2文字も打つのめんどくさいとか言われるんで、ローカルスコープ変えるかのようにできないとダメなんだと思う
rubyみたく@を使ってくれたら、何も迷わずにpythonつかうのにな numpyとかで科学技術っぽい計算してる人たちは、 この辺の面倒さにどう対処してんだろう。(普通に、matlabつかうか)
あなたは、迷わずruby使えば良いと思うよ
pythonの方が使われている場所が多いじゃん ざっと思い付いただけでも、Mercurial,trac,gimp,blender,geditの拡張 rubyはendが階段状に並ぶのが気持ち悪い そのうちに、こういう無意味な注文を受け付けてくれる ツールでも生まれてくれればいいのにな GUIフロントエンドで、{}かbegin〜endにするか、indentにするか 無名関数、無名クラスの有無、静的片付けか動的片付けか、GCの有無 オペレータはオーバロードさせるか?アクセッサを用意するか M$ならCLR上で動く、こういうツールを作ってくれそうにもないな
勝手に@pyとかいう言語を作ればいいじゃん。そこまで難しい事かな
俺の場合selfがめんどいかどうかは別にどうでもいいんだけど、 オブジェクト指向言語を語るくせに、インスタンスのスコープを持っていないことに 腹が立つ。 シンプルさのためにそうなってるのかと思ったが、どうもそうでもない。 obj.method(arg)がClass.method(obj, arg)になるという点ではシンプルだが、 これを実現するための仕組みはとてもシンプルとは思えない。
C→C++みたいな経緯で作られてるから
オブジェクト指向の言語で見かけはともかく、実現する仕組みが「シンプル」 なんてものが存在すると思い込んだ原因が知りたい。
794 :
791 :2011/02/05(土) 08:06:45
>>793 ん?俺?
インスタンススコープがないってことはスコープの種類が少ないということだから、
シンプルってことになるじゃん。
でも、スコープの種類少なくても、selfをインスタンススコープのように扱わせる
仕掛けはシンプルじゃなかったよという話。
一応シンプルな例を挙げておくと、PerlとLuaかな。これらもPythonと同じで
第一引数がselfになるんだけれども、これを特殊解釈させるために、
ドットと違う演算子を用意してる。
795 :
791 :2011/02/05(土) 08:09:25
>>793 あーちょっとずれてるか。
インスタンススコープがないのは腹立たしいが、
シンプルさのためなら許してやる。だけど、シンプルなわけでも
ないのでPython許さんということ。
別にお前に許されるために設計してるわけじゃないだろうしなあ
797 :
791 :2011/02/05(土) 08:18:59
>>796 まあね。
とにかく「selfめんどい」以外にもPythonのオブジェクト指向には
ダメなところが存在するということなんだよ。
PerlとLuaがそんなに素晴らしいなら。
luaはセキュリティ周りのツールに組み込まれてるぞ。ゲームだとWoWとか スクリプト言語がここまで増えて、あれやるために、 あの言語みたいに頭切り替えるぐらいなら、 いっそのことguileが流行ってくれれば良かったのにと思う
wowやってんのかおめえ? 俺もやってたぞレベル46
>>794 「仕掛け」ってなんだ?
結局、書き方が気に入らなかったってことかよ
>>786 ただそれだけのことが面倒で、それさえなければ迷わず使うとか思ってるんだったら、君にはPythonあってない。
Pythonは、数タイプ節約するために特別な仕組みを提供してくれる言語じゃない。
使い始めたらどうせ他の面倒なことが目立って嫌になるんだろう。
>>791 それって、オブジェクト指向で本質的な部分なの?
それよりも、本当の意味でのカプセル化はできていないとか、他にも文句言うところはある。
あと、実現するための仕組みがシンプルなLLなんて、俺はしらない。
>>786 はPython信者を怒らせてしまった。どうしてくれる。
> それって、オブジェクト指向で本質的な部分なの?
だれもオブジェクト指向の本質が何かなんて話題にしてないのに、こんな噛み付き方をするのはさすがPython信者。
> あと、実現するための仕組みがシンプルなLLなんて、俺はしらない。
だれもおまえが知ってるかどうかなんて気にしてないのに、こんなこと牡蠣散らすとはさすがPython信者。
PerlのOOは仕組み的には結構シンプルじゃね? 基本は元々ある連想配列の仕組みを流用して OO的な部分はbless1つで実現してるワケだから。
Pythonはレキシカルスコープを提供してるんだから、classを 単純にレキシカルスコープと見なせないのかな?というのがやや疑問 レキシカルに上の環境にある変数はPythonで暗黙に参照できるわけでしょ 更新はできないけど レキシカルスコープの言語なんだから classはメソッドの上のスコープ、classのフィールドはメソッドの上の スコープにある自由変数と見なせてもいい気がする
一言で言うとPythonのスコープキモいですといういつもの話題になりそうだな
>>802 横レス失礼するよ。
オブジェクト指向の本質が何かとかカプセル化がうんぬんかとかを議論する気は無いけど、
OOP元祖であるSmalltalk、およびRubyと比較した観点でのPythonの欠点を挙げてみる。
・ブロック(クロージャ)が実装されていない。
・条件分岐が式ではなく文として実装されている。
Rubyだとブロックが使えるし、if .. then .. else(およびcase .. when ..)は式だから、
Smalltalkで書かれたコードをスイスイと書き換えて再利用できる。
Pythonというのは、(C++やJavaと同様に)手続き型言語へ「後からOOPを継ぎ足し」た
設計のように見える。それは、selfというキーワードを「多用」するスタイルについても同じ。
プログラマにOOPスタイルのコーディングであることをわざと意識させようとする
(教育的な?)設計思想であると言えるのかもしれない。それに対してSmalltaikやRubyは
デフォがOOPだから、selfというキーワードは「必要な時」にしか使わない。
これらは「最初からOOPである」ことを前提に設計されたSmalltalkやRubyと
「後からOOPを継ぎ足し」たPythonとの大きな差異ではないかと思う。
>>807 後者は以前は微妙に面倒くさい欠点だったな。
今は3項演算子に相当するものがあるから随分とやりやすくなったが。
前者はブロックの代わりに関数ローカルな関数が作れるので何とかなるかな、と思う。
>>803 > オブジェクト指向言語を語るくせに
って書いてるのに、オブジェクト指向のほんのどうでもいい部分を取り上げたとでもいいたいの?
> だれもおまえが知ってるかどうかなんて気にしてない
そんなもんない、と書きたかったのだが、全言語知ってるわけじゃないからそう書いたのだよ。
ところで、あるのかい?
クロージャの第一引数につねにenvとかいうのを渡す必要があって 自由変数をenv.fooのように参照しろとか言われたら嫌だろう それと同じ話だと思うぞ まあPythonの場合は自由変数を更新するには 最近のバージョンでnonlocalと宣言する必要があるし 局所変数のスコープが関数全体に広がるから、むしろそう書いたほうが良かったかも しれないがなw Explicit is better than implicit だそうだし
>>807 式と文の違いは、オブジェクト指向とは関係ない。
クロージャなら関数が持ってる。
selfがキーワードじゃないってのはおいとくとして。
『「後からOOPを継ぎ足し」た設計のように見える』と書いている文章がいつの間にやら『「後からOOPを継ぎ足し」た』に変わってる。
「ゲーム脳の恐怖」で使われてる論法そっくりだ。
ま、実際のところ、Pythonは手続き型言語寄りのマルチパラダイム言語だと思うが。
>>810 じゃあ、envはどこの名前空間にあるのさ?
meta_env.envってすればいいの?
meta_meta_env.meta_env.envってすればいいの?
813 :
812 :2011/02/05(土) 12:51:22
あ、ごめ。引数でとるのか。 関数型プログラム言語として使うなら、そうするのもありじゃないかと思うよ。
>>812 すまん、ただのたとえ話にそういう突っ込み方をされるとは思わなかったw
言いたいことはわかるだろ、Pythonのレキシカルスコープは大抵の言語の経験者に
とっては少なくとも異色なんだよ
class Let(object): pass dist = lambda x, y: (lambda let, pairs, f: [[let.__setattr__(x, v) for x, v in pairs], f(let)][1])(Let(), [('x_sq', x*x), ('y_sq', y*y)], lambda let: math.sqrt(let.x_sq+let.y_sq)) print dist(3, 4) # ==> 5.0 うん、全然ありだな。
class Env(object): pass let = lambda pairs, f:let2(Env(), pairs, f) let2 = lambda env, pairs, f: [[env.__setattr__(x, v) for x, v in pairs], f(env)][1] ってすれば、代入のかわりにlet使ってenvを得て、 ローカル変数使わなくてもenv使えば処理できるのな。
>>814 逆に、異色な部分がない言語ってやる価値あんの?
高速とか、そういうメリットあるならともかく、実行速度の遅い言語の場合で。
Rubyだって(少なくとも、出た当初は)ブロック付きメソッドなんて異色だったし、
Smalltalkのオブジェクト指向だって(少なくとも、出た当初は)異色だったよ。
高級言語のFortranなんて、アセンブラやってた人からしたら本当に異色だっただろうな。
けど、異色だという理由だけで否定するのって、バカのすることだよね。
だから、selfを引数に取ることが具体的にどうダメなのかを、
「他の言語と違うから」以外の意見を持ったバカじゃない人から聞きたいのだけど、
具体的にダメな点ってのが、タイプするのが面倒くさい、くらいしか出てこないんだ。
>タイプするのが面倒くさい これは案外でかい気がする。 ブロック付き構文は(Ruby使いに言わせれば)便利な記法だそうだし アセンブラよりFortranなどの高級言語のほうが読み書きは容易だろう。 Pythonのselfと書かざるをえない文法には、とにかく何か意図か理由があるんだろうけど どういうメリットがある?
820 :
807 :2011/02/05(土) 13:52:12
>>811 >式と文の違いは、オブジェクト指向とは関係ない。
>クロージャなら関数が持ってる。
>>807 の指摘がOOPとは関係ないのであれば、大いに関係のある
「関数型言語との比較」という観点で見たPythonの欠点に書き換えましょう。
・ラムダ式(無名関数)の中で局所宣言(let式)ができない
・条件分岐が式ではなく文として実装されている
前者については、Smalltalk/Rubyには両者ともラムダ式はありませんが、代わりに
ブロック(クロージャ)があるので、局所宣言を含む無名関数を自然に記述できます。
Pythonで初心者にも分かり易い「局所宣言を含む無名関数」は書けますか?
後者については、明確なPython欠点でしょう。
確かにPython 2.5から三項演算子は追加されましたが、その構文
<true expr> if <cond expr> else <false expr>
はPython固有の記法で、手続き型言語を含めた言語の中でも「異質な存在」です。
これなら、まだ Lisp風の
(cond <cond expr> <true expr> <false expr>)
ような前置記法、あるいは、Smalltalk(やForth)風の
<cond expr> ifTrue: <true expr> ifFalse: <false expr>
のような後置記法のほうがマシ(自然)に見えます。
「ラムダ式の実装が不完全」で、しかもプログラミングで多用される
「条件分岐が式ではない」Pythonは、関数型言語としても中途半端な言語に見えます。
これもまた手続き型言語へ「関数型を後から継ぎ足し」た言語設計ではないかと思います。
しかしだな、馬鹿の為に考え出された「馬鹿サポート機能」について熱く語られても困る。 結局、局所的、という機能は人間が馬鹿で全部覚えておいて完全に制御はできないと いうところをサポートする為のものだ。 局所的、という特性自体はOOPとは無関係だ、というか無関係に近い。
822 :
807 :2011/02/05(土) 15:07:19
>>821 そうですね、少し表現が上品すぎて
このバトルスレにはふさわしくなかったかもしれません。
デハご要望に応じて、このスレ向きの口調で
>>807 ,820を書き換えましょう。
Rubyと比較すると、Pythonなんてオブジェクト指向としても
関数型言語としても中途半端で不完全な代物。
まあ、手続き型言語としては優秀だと認めてやるから、
このスレだとPython vs. Perlでバトルするのがお似合いだな。
それをRuby厨は上から生暖かく見物するとしよう。
こんなんでどうでせうか?できれば
>>807 ,820への
感情論を抜きにした(技術者としての)論理的な反論をキボンします。
よろしい、頭脳明晰で言行一致の君ならできるだろうが、 「上から生暖かく見物する」 と、断言した以上、二度と書き込まないことを祈る。 脳が腐っていて、物事の判断が出来ない馬鹿以上の 大馬鹿であることを証明したいなら、今後もどんどん 書き込みたまえ。
>>820 真っ先に末尾再帰の最適化を上げない時点で、関数型言語知らずに言ってるんだなぁと思える。
継ぎ足した知識でしか使う脳がない人には、継ぎ足した仕様で十分なんじゃないの?
>>822 >>820 は
・letはsyntax sugerであるから、lambdaがあれば不要
・異質であることのみを理由にして、それを欠点というのは根拠が足りない
>>807 は
>>811 にあるとおり。
これらより、
> Rubyと比較すると、Pythonなんてオブジェクト指向としても
> 関数型言語としても中途半端で不完全な代物。
はどちらも、根拠が足りない。
その後の文章は、タダの感情論なので、自分で「感情論抜きにした論理的な」とか言いながら
自分は感情論使うってバカなんじゃねーの?と感情論で返しておく。
関数型言語として完全なものにしてもらっても困るんだけど どのことするからユーザーが増えないんだよ
×どのこと ◎そんなこと
828 :
807 :2011/02/05(土) 16:33:48
>>823 馬鹿以上の大馬鹿なので、カキコさせてもらいます。
>>824 Rubyには末尾再帰最適化が実装されていないので、スタックオーバーフローし易く、
その為に時としてループで手続き的なプログラミングが必要になる点は認めます。
ただし、Rubyはそもそも関数型言語ではありませんし、このスレで議論したいのは
(Ruby vs. 関数型言語ではなく、)関数型としての観点におけるPythonとRubyとの比較です。
末尾再帰最適化については、どちらも実装されていないので、引き分けではないでしょうか?
それとも、もしもPythonには末尾再帰最適化が実装されてる、というのなら話は別で、
それはRubyの欠点/Pythonの利点として認めます。いかがでしょうか?
>>825 >・letはsyntax sugerであるから、lambdaがあれば不要
>・異質であることのみを理由にして、それを欠点というのは根拠が足りない
関数型言語の特殊な機能/頻繁に使用されない機能等であれば、そんな隅っこを取り上げて、
それが実装されていないからうんぬんといった指摘は、根拠が足りないと言えるでしょう。
けれども関数型言語において、局所宣言(let式)の存在は、極めて常識的/日常的/基本的です。
Lisp/Scheme/ML/Haskellなど、あるいはそれらのサブセットですら実装されています。
それがRubyであれば、それらが言語のプリミティブとして実装されていますから、
Rubyであれば自然な関数型言語風プログラミングが可能です。
Pythonのように、ややこしく見づらいコーディングを強いられることはありません。
Pyhhonによる関数型プログラミングのコードが、初心者にも見やすいとお考えですか?
同様に,(
>>820 でも書きましたが)条件分岐は、プログラミング一般で多用される基礎です。
以上の事から、
>>820 の指摘が根拠の足りないという指摘は、否定します。
>>828 > それがRubyであれば、それらが言語のプリミティブとして実装されていますから、
> Rubyであれば自然な関数型言語風プログラミングが可能です。
ついこないだまでブロック内変数もブロックがブロックを引数にとることもできなかった
欠陥言語がどのツラ下げてそれを言うかと。
830 :
794 :2011/02/05(土) 19:15:22
>>801 >>809 obj.method(arg)をClass.method(obj, arg)に変換するための仕組みのこと。JK
>>802 うん。本質的な部分だよ。例えば、構造化言語でローカル変数なかったら気持ち悪いでしょ?
そんな感覚。
本当の意味のカプセル化なんてLLには要らない。柔軟性が下がるだけ。
突っ込むところではない。
ちなみに、Pythonのアンダースコアで可視性を表すシステムはRubyよりよく出来てる。
Rubyはprotectedまでしか表せないけど、Pythonは真の意味に近いprivateが
扱えるからな。
何を持ってシンプルかっていうのは人によるだろうけど、Pythonの仕組みは比較的
シンプルではない方だと思うよ。ってか俺PerlとLua挙げたじゃん。
これじゃあ駄目なの?いじわるな子ね。
>>807 俺はRubyのが好きだけど、関数型言語としてはPythonの方がよくない?
流石にファーストクラスで関数が使えるのはでかいよ。
例えば、RubyのStringScannerとPythonのre.Scannerとか?Python
の方は関数型っぽく使うはずだったよ。
↑アンカー間違い
802=809だと思うから、
>>809 は第2段落より
832 :
794 :2011/02/05(土) 19:48:59
そろそろROMろうかなと思ったが、意外とPythonのselfについて知らない人 がいるようなので俺が説明しよう! Pythonicオブジェクトシステムについて まず、このことをおさえておく。 def hoge(): pass と書くと「変数」hogeに関数オブジェクトが代入される。 で、次にこれをおさえる。 class Hoge: x = 100 def huga(self): pass こう書くとHoge.xに100、Hoge.hugaに引数ひとつの関数オブジェクトが 代入される。 そしてhoge = Hoge()とインスタンス化すると、hogeからもHogeの属性が見える ようになる。つまりhoge.xとhoge.hugaが使える。 hoge.xとすると100が返ってくる。一方でhoge.hugaとすると 関数オブジェクトが帰ってくると見せかけて、なんとメソッドオブジェクトが返ってくる。 メソッドオブジェクトとは何かというと、selfを保持している関数オブジェクトの ことである。メソッドオブジェクトにカッコをつけて呼び出すと、 引数をひとつずらして、第一引数に保持しているselfを渡してくれる。 これがselfを書かせる理由。 これにより、hoge.huga()はHoge.huga(hoge)と同等になって Pythonicだねということらしい。 メリットはまあ普通の関数でメソッドっぽいものを実現できるということかな。
ずっと昔からこの糞長文を毎回のように書き込みまくってるのは同一人物か?
覚えたてのバカが熱弁するって832のことを言うんですね キモキモ 少しは833を見習ってくださいよカス
る厨は空気読めねーのが揃っているのな教祖からしてそうだが 先達の丸パクり100%で成り立ってるくせにちょっとした瑕疵を 鬼の首を取ったみたいに嬉々としてけなすとか仁義にもとるわ RubyはRubyは言うならせめて独自の工夫を引き合いに出せ んなもんがあればだけどな
>>828 関数型言語として使えるか使えないかじゃなくて、引き分けとか、そういう話だったの?
Rubyじゃ自然な関数型言語風プログラミングはできない。末尾再帰最適化ができないから。Pythonも同様。
サッカー選手か野球選手どっちがバスケうまいか、みたいなどうしようもない話はする価値ないよ。
> 同様に
なにが同様なんだww
# で、RubyじゃProcかlambdaかどっちが関数なの?ww
パクリのセンスすらない糞言語の信者やってて楽しいか?
処理系の話もこのスレに含まれるの?
839 :
832 :2011/02/05(土) 22:25:02
>>834 えー、だってこれぐらい知ってくれてないとPython批判しても
何がダメなのかわかってもらえないじゃん。
>>835 何いってるのかわかんね。とりあえずけなしてるわけでもないし、
仁義にもとってるわけでもない。
キモキモ
>>802 数タイプ節約したいだけじゃなくて、主に可読性の問題
例えばだけど、
self.x**3 + self.x**2 + 0.5*self.x**2 + self.x*self.y + self.x*self.y**2
@x**3 + @x**2 + 0.5*@x**2 + @x*@y + @x*@y**2
こう並べてみて、どっちが見やすい?
こういう数式が大量に並べると、とにかく目が疲れるんだ
JavaにもオペレータのオーバーロードやC#のプロパティを含めて欲しい
x = self.x xをいじくる大量の数式 self.x = x ですべてが片付くとは言わないが
代入するのにコストかからないのか?
>>841 下も十分見にくい
x^3 + x^2 + 0.5 * x^2 + x * y + x * y^2
ぐらいがいいな
アホか
それって、変数のスコープが分からない @は変数のスコープを思い出させてくれる
@とか$を多用する言語が良いならそっちを使えば良いだろ
>>846 レキシカルに上にあるんだからダイナミックスコープと違って
スコープなんて自明だし、別に困らないけどなあ……
関数型の自由変数でも、C++族のメンバ変数/フィールドでも
そんなに@が並んでたら、目が痛いよ
遅いし、マイナーでライブラリ書いてくれる人が少ないじゃん 信者ないから、便利なもの使いたいんだよ
>>848 c++だと、メンバ変数にはx_や、m_xぐらいは書くだろ?
@の一文字ぐらいは増えても諦めるだろ
c++のポインタで目が痛くならなければ、
リファレンスだって生まれなかったんじゃないのか(設計と進化は、まだ読んでないが)
お前が諦めろよ
>>850 いや諦めるんなら諦めるでいいけど、「諦める」ってことは、別段優れても何にも
いないってことだよなw
D&Eは大分前に読んでもう手元にないが、リファレンスの導入の経緯はそういう
あれじゃなくて、operator overloadingのための要請という点が大きかった気がする
ただしD&Eにそれが書いてあったかどうかは覚えていない
次の俺俺言語設計者がruby,pythonの慣習に従って、 selfやendの階段みたいなことしたら嫌じゃん AIっぽい記号処理も数値計算も行いやすい軽量言語とかを ここで、次なる救世主を待っているんだ ひょっとしたら知らないだけで既にあるのかもしれないし。@pyとか。parrotとか
お前が作れよ
まちぼうけ〜まちぼうけ〜あるひさっさとコーティング〜
いや、俺がつくる。いやいや、俺が。 ダチョウ倶楽部みたいに、どうぞどうぞの世界だろ 自分で実装するぐらいなら、おとなしく、c++を使うわ 言語実装する関係の卒業研究やってる学生さんが実装してくれることを超期待
んなもん、最低限実用になるまでに10年はかかるぞ Matzがどれくらいかけたのか、正確な所は知らんけど
MatzじゃなくてクソMatzだろカス
実用にならない実装と論文なら1年ぐらいあれば書けるだろ 記号処理と数式処理を主とした目にやさしいオブジェクト指向型グルー言語とかをテーマで
天然って怖いわ
>>843 参照するコストもあるから、何度も参照され、かつ、代入のコストがそこまで大きくないオブジェクトだったら、
>>842 のようにした方がトータルのコストも少なくなる。
>>841 どっちも見にくい。
(lambda x, y: x**3 + x**2 + 0.5*x**2 + x*y + x*y**2)(self.x, self.y)
の方がまだマシで、
>>842 がよりよい。
>>848 変数の参照だけならそれでいいと思うけど、
変数に別の値を代入したり、新しい変数作ったりを考えると、
思った以上に事態は面倒だよ。
>>861 いや、更新でも特に困らない
(というかC++でもJavaでもC#でもLispでも何でもいいが、上位のスコープにある
レキシカル変数を普通に更新できる)
「上位のスコープに新たに変数を作る」という機能があるかどうかだろうなあ
>>862 C#, Lisp(Lispの代入って、標準的な仕組みとしてあるの?)はよく知らないんだけど。
C++, Javaに関しては、
・変数には宣言を伴う
・上位スコープと同じ名前のローカル変数が宣言されたら、ローカル変数が優先される
って性質があるから、更新でも特に困らない。
そういう性質のないPythonが苦し紛れにnonlocalキーワードを追加したのを忘れちゃいかんよ。
>>863 だから、それはあくまで「Pythonの」仕様の問題でしょ
「原理的に」困る困らないという話とは別
・let, my, val, varみたいにbindingを明示する手段がない
・ローカルにないxに対して、x = 1のような文は、上位のスコープにxがあるかどうかは
無視して*常に*ローカルにbindingを作成する
という仕様だから、「Pythonでは」そうなっているというだけ
あーそれとCommonLispの破壊的代入はsetf CommonLispはマルチパラダイム言語であって関数型言語じゃないからふつうに使われる Schemeにも破壊的代入のset!はある
>>861 > (lambda x, y: x**3 + x**2 + 0.5*x**2 + x*y + x*y**2)(self.x, self.y)
> の方がまだマシで、
>>842 がよりよい。
有難うございます。救世主様。今日から私は、迷わずにpythonの信者になります
あなたをおいて、どこにいきましょう。
> 参照するコストもあるから、何度も参照され、かつ、代入のコストがそこまで大きくないオブジェクトだったら、
>
>>842 のようにした方がトータルのコストも少なくなる。
ところで、メシア様。キャッシュにはメモリ上の位置が記憶されてるものじゃないのでしょうか?
参照コストなんて、self.x(または、@x)の時点でメモリ位置がキャッシュにストアされて、
以降はキャッシュにヒットするものだと思っておりました
そして、ローカル変数のx(これは実体ですよね)を代入などしたら、
それだけでもコスト掛かって、xとself.xのアドレスがキャッシュに
たまるので、他のオブジェクトの変数や命令キャッシュにもlambdaの
位置が配置されて腹の中がパンパンになるのだと思っておりました
うぜえ
こいつら俺よりかは詳しくないけど 詳しいからさ 企業人だろ?かえれカス
言語マニアは言語しかしらない アルゴリズムとか知らない 数学とかできない 社会に有用なものを提供できない クズ
おらっ、アルゴリズマー様のお通りだ!!道を空けろ!!
>>869 物理屋の書いたCのコードとか、読めたもんじゃなかった。
そもそもライブラリの存在すらよく理解してない。
ソースコード見ると、何十年もの間、何の研究をしてきたのかすらも疑問に思った。
そして、アカデミックな立場にある人々の書く論文の大半は、
とりわけ社会に有用なものを提供しているわけでもない(…4流の大学だからか)
そして、社会に有用なものを常に提供し続けるのは、
それは、Tシャツにジーパンを履いた人たちでなくて、大企業でスーツを着ている人たちだよ
そんな直ぐに金になるような研究はカス私立の十八番だろ
>>805 関数でそれが出来ているのは、ローカル変数が関数をコンパイルするときに
決定されるから。
それに対して、クラス属性やインスタンス属性は実行時に決定されないので、
Pythonの self. や Ruby の @ みたいに、名前をインスタンスの名前空間から
探す事を明示する必要がある。
C++ や Java など、クラスの名前空間が静的に決定される言語では
この限りではない。
>>843 代入コスト<<<属性ルックアップのコスト
代入したほうが圧倒的に速い。
金にならない研究など金と時間の無駄です。 基礎研究は別ですが。
>>864 原理的に、仕様の選択の問題だろーが。
self.*やら@やらlet, my, val, varみたいな方法でスコープを明示することなくその問題を解決できるのかい?
それとも、PythonやらRubyにvarを導入してself.やら@をなくせと言いたかったの?
# いちゃもんつけるために頭ひねってどうすんのよ。
>>865 それはLispじゃなくCommonLispの話。
多くの方言で破壊的代入はあるが、スコープやら含めて細部まで動作が統一されてるとは思えないから、
標準的な仕組みとしてあるのか、と書いた。
>>866 > 思っておりました
で? ていうか、実装依存なんじゃねーの?
言語オタうぜええ 言語オタはうぜえんだよばかが モナド、がーべじコレクション、メモリとかわめいてんだろ? なんか通ぶって そういうのなあ、簡単に実装できねえだろ? おまえらさあそれで、新しい言語使ってクソゲロRuby以上にユーザー数いるの? アプリとちがってなあ ごみすぎんだよつまらねえし たのしい?無理してんの? 研究してる俺SUGEEEEEEEEEEEEEEEEEEEE!!! とかおもってんだろ?まじしねよ そんななあアルゴリズマーとかわめいてるけどさああ、なんか全然新しい発見してないだろ? あるものに、ちょこっと手を加えてるとかひらめいてるだけで 言語オタはうぜえんだよ 俺は凄いとおもわないけどな 通ぶってカスノゴミどもがらりーウォールとかみたいな開発部分を真似してやっているのがゆるせねえ まじ死ねカス言語オタ
あ〜はやくしなねえかなこいつら 死ねよカス
>>877 何をわけのわからんことを……
「標準的な」と言ってるから、それこそ標準規格であるCommonLispを
挙げたんじゃないか
有象無象が勝手に作れるLispの実装のことなんぞ知らんよ、そこに「標準的」という
言葉を使う意味があるのか?
ちなみに現在多分一番有名なLispの変種であるEmacs Lispにも勿論破壊的代入はあるよ
Emacs Lispはダイナミックスコープだが
>>876 勿論解決できる、当たり前だろ?
上位のスコープの名前を優先する仕様であれば、nonlocalやglobalは要らなくなる
この場合は同じ名前のローカル変数が作れないという弊害があるが
別の名前をつければいいだけだ
その上で、Perlのようにオプショナルにbindingを明示する手段を提供すれば、
同じ名前のローカル変数を作りたいときには、myとかvarとか書いて明示すれば
作れるようにできる
通常は明示は要らない
さらにPerlのstrictモードのようなものをつければ、常時bindingの明示を強制して
typoにまつわる馬鹿馬鹿しいバグをコンパイル時に検出することが可能になる
>その上で、Perlのようにオプショナルにbindingを明示する手段を提供すれば、 おっとここでの「Perl」はちょっとたとえが不適切だった PerlにしろJavaScriptにしろ、bindingを明示しないとグローバルになってしまう からな そうだな、groovyあたりが適当か
>>873 Pythonのような言語でも全ての属性が動的である必要はない気がする
Pythonで言うと動的な属性は__dict__に格納され、静的でいいばあいは__slots__
を使うのだと思ったけど、原理的に後者の場合は明示が要らないはず
要は、コンパイル時にクラスの属性として確定しているものは
普通に自由変数扱いにできて(つまり修飾不要)
ダイナミックな属性はそれこそ自由変数selfだのdynamicだの経由でアクセス
するという設計も一応可能では
それと、現在の仕様であってもselfを自由変数にすることは可能で
その違いは第一引数として明示する必要がない、という点に出てくる
(もちろんPythonで第一引数selfを明示させる「意図」は耳タコが出来るほど
聞いたから理解はしているつもりだが)
>>880 マイナーな標準規格と言わざるをえないな。
そして、破壊的代入がないなんて話は誰もしていない。スコープの話をしている。
>>881 > 上位のスコープの名前を優先する仕様であれば、nonlocalやglobalは要らなくなる
それは、スコープを制限することでスコープは自ずと明示されるという、仕様の選択。
明らかに不便になるのだから、それで解決できたとは言えないよ。
> その上で、Perlのようにオプショナルにbindingを明示する手段を提供すれば、
そういう方法を使わずに解決できる方法をきいてんの。
全く新しい考え方を持ち出さない限りは、原理的に、仕様の選択なんだよ。
君の書いたことは、つまり、こういうことだ。
ifの後にインデントもendもなしにブロックを明示できるのか、という話に対し、
ifの後を1つの式に限るのならどちらも必要ない。その上で、オプショナルに{}でブロックを明示すればよい、
と返している。
それを君が、実に明解で非の付け所のない話で、それで全て解決すると思ったのなら、
君の主張は正しかったと思い込んでくれて構わない。
お前ら面白いな。 結局[Python|Ruby][でも|なら]こう[す|な]れば、そうできる。 ちゅう話に収束して[Python|Ruby]に物凄い不満を表明しているだけに終始している。 お前ら、もう全然別の物を作ったらいんじゃね?
>>884 なんか話がどんどんそれてるな
俺はPythonをどうしたらいいとか、そういう話をしてるんじゃないぞ?
元の話は、「一般論として」上位のスコープにある変数を更新するのに何か
問題があるかという話をしていて、俺はそれ自体は別に何も問題はないと言ったんだ
そこに問題を抱えているのはPythonという言語特有の問題にすぎないだろ
俺はそこには関心がない
>明らかに不便になるのだから、それで解決できたとは言えないよ。
だからさー、Pythonの話をしてないのに、Pythonの言語仕様の範囲内で「解決」
しなきゃいかんのよ
Pythonなんぞどうだっていい
それと、悪いけど、Python3.xが出るまではレキシカル変数の更新をする手段が
そもそも無く、
今でもglobal「文」やnonlocal「文」を明示的に必要とすることに比べれば
レキシカル変数と同じ名前のローカル変数を使えないとしても、別に「不便」でも
何でもないな
Pythonユーザは単に別の名前をつけるという穏当な手段よりはるかに汚い
ハックに甘んじてきたんだろう
だからPython信者を刺激するなって。 宗教は争いの種にしかならん。
>>884 CommonLispをマイナーな標準規格って……
無知ってこえーな
>>887 このスレってPython信者を弄るスレかと思ってた
>>886 そりゃ、下位にスコープを持ち得ない言語であるなら、上位スコープにある変数を更新するのに何ら問題はない。
下位にスコープを持ち得たとしても、それが上位スコープと衝突することがないのなら、問題ない。
そこまでは、何ら異議はない。
もし君にとってそれで十分だったのなら、これまでかけあったゲロは、かけあう必要のなかったものだ。
ただ、名前が衝突しうるなら、衝突を避ける手段を取る必要がある、という話をしていて、
それはPythonに限らず、どの言語でも、その言語の範囲内で解決しないといけない問題だ。
Pythonにこだわってるのはむしろ君だ。
> 今でもglobal「文」やnonlocal「文」を明示的に必要とすることに比べれば
> レキシカル変数と同じ名前のローカル変数を使えないとしても、別に「不便」でも
> 何でもないな
それなら「同じ名前の変数は使えない」と思い込んでいれば、お望み通りの結果に。
>>888 ひとつの方言としてはメジャーだが、標準規格と偉そうに言うにはマイナーだろ。
SchemeとEmacs LispもCommonLispの規格に準拠したら、メジャーだと認めてもいいが。
>>890 名前の衝突なんて話は当たり前で、それは参照でも起こることだろう
更新において何か特別な問題があるとかいってる奴がいるから(
>>861 )
俺は
>>862 で別にそんなことはないと言っただけだぞ
衝突回避のための仕様の選択という話なら、Pythonは衝突を回避するための手段を
提供するどころか、上位のレキシカル変数にアクセスするための手段すら
提供していなかったわけだが……
>>891 ANSIの標準規格を捕まえてマイナーな標準規格とか言うのなら
この世の言語の大半は話にならん
俺もウンザリだからこう言い換えよう 上位スコープの変数の更新を問題なく行えるような言語の設計は普通に可能である ただし特定の言語(Pythonなど)がそう設計されているとは限らない それでいいか
>>892 そうだね。Pythonでは参照時は問題が起こらない仕様になっているので、当初は参照での話をしていなかった。
君が話を一般的にしたときに、俺は、言語によっては参照でも問題が生じうることを思い出すべきだった。それを思い出せなかったのは俺の手落ちだ。
実際は、更新時に限らず、参照時であっても、仕様の選択の問題だ。
もちろん、更新時に仕様の選択により問題が生じうることに間違いはないが。
> 衝突回避のための仕様の選択という話なら、Pythonは衝突を回避するための手段を
> 提供するどころか、上位のレキシカル変数にアクセスするための手段すら
うん。そうだよ。
多くの場合は、引数と値返しで対応できるけど、導入されたね。
>>894 そういう設計は当然、可能だよ。そのために、何らかの、名前を区別する構文を用意するなど、何らかの仕様の選択を行う必要があるだけで。
Pythonだって、新たな構文を導入したら可能だろうね。
信者じゃない。エキスパートだ。
エキスパート△
>>883 __slot__ の中身も実行時に参照されるデータで、コンパイル時に決定できないよ。
Pythonでコンパイル時に名前の参照先を決定できるのは関数の内側だけ。
ローカル変数が my とかふざけた名前付けてるからPerlが嫌いだ。最初に見たときは冗談としか思えなかった。
Perlはコミュニティ全体にそういうおふざけが好きな空気があるな。
VisualBasicさんをdisるのはやめろ
この人たちは、自分が誰と戦っていると考えてんだろうな
自分自身です 多重人格者の場合は自分の分身と永遠に戦い続けます
myとかourとか分かりやすくていいと思うが。
cakePHP使ってるとRails方面の方々がご丁寧にもかけつけてあーだこーだ説教してくる PHPは駄目だとかcakeはセキュリティホールが云々だの もう少し建設的な話できないのかな
所詮ruby厨だからな このスレ見てりゃわかるけどさ
なんだ突然
エキスパートじゃない。自称エキスパートの信者だ。
あらやだ
マイマイまいんちゃんdisってんのか
Rubyがselfを書かない方法を採用したのは、カプセル化を言語仕様として強制するため。 そのために obj.hoge という表記は常にメソッドの呼び出しである、と定め 属性へのアクセスと明確に区別されるようになってる。 ただ弊害として、属性値には直接アクセスできない → 属性値としてメソッドオブジェクトを入れればそれはメソッド、なんて仕様だとそのメソッドもアクセス不能 → 全てがオブジェクトな中で、メソッドだけは特別扱い …ということになってるが。
>ただ弊害として、属性値には直接アクセスできない アクセッサあるし、別にいいじゃん ゲッターもセッターもいらんでしょ
>>904 最初、myと聞いたときには、なんかイヤな
感じだった。
その後、ourと聞いたときは、あー、
そういう命名なのね、としか思わなかった。
Rubyって関数とメソッドは区別されるんか。
Ruby初心者スレで関数とかいうと面倒くさい人たちに説教喰らうことは確か
Pythonはそこらへんいい意味で曖昧
>>916 Rubyはメソッドだけじゃなく、関数もあるから、メソッドを関数と呼ぶようなことをしなければ無問題。
まとめると、Rubyはカス、こうですか?わかりますん。
カスじゃない人は何使ってるんでしょうね
GTKはカス
922 :
カスRubyler :2011/02/08(火) 15:01:40
カス
Ruby=火遁 ヒトカゲ Perl=水遁 ゼニガメ Python=木遁 フシギダネ
>>915 関数はメソッドの一種、ということになってる。
>>917 曖昧じゃないよ。関数だよ。
ただの関数だからこそ、selfが必要。
>>918 よくわからんけど、lambdaとProc.newとブロックとメソッドと関数があるの?他にもある?
Rubyはブロックがそのままオブジェクトとして使えるようになると、より便利になrんだろうか
>>926 究極的にはメソッドとオブジェクトだけ。
関数はメソッドの一種で、lambdaやprocやブロックが返すのは手続きをラップしたオブジェクト。
>>926 表記上だけかもしれないけどこういうこと
>>> def A():
... pass
...
>>> def B(self):
... pass
...
>>> class C:
... @classmethod
... def D(cls):
... pass
... def E(self):
... pass
>>> setattr(C, "A", A)
>>> setattr(C, "B", B)
>>> A
<function A at 0xb76a32cc>
>>> B
<function B at 0xb77991b4>
>>> C.A
<unbound method C.A>
>>> C.B
<unbound method C.B>
>>> C.D
<bound method classobj.D of <class __main__.C at 0xb77a0cec>>
>>> C.E
<unbound method C.E>
930 :
929 :2011/02/09(水) 03:26:44
肝心の箇所忘れてた >>> c = C() >>> c <__main__.C instance at 0xb77a29cc> >>> c.A <bound method C.A of <__main__.C instance at 0xb77a29cc>> >>> c.A() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: A() takes no arguments (1 given) >>> c.B <bound method C.B of <__main__.C instance at 0xb77a29cc>> >>> c.B()
>>929 表記上だけっぽいね。
In [1]: class Klass:
...: def f(self):
...: pass
...:
In [2]: def _g(self):
...: pass
...:
In [3]: Klass.g = _g
In [4]: _g
Out[4]: <function _g at 0x8df3f44>
In [5]: Klass.g
Out[5]: <unbound method Klass._g>
In [6]: Klass.f
Out[6]: <unbound method Klass.f>
In [7]: _g
Out[7]: <function _g at 0x8df3f44>
おいみんな Perldocなおってるぞ
Rubyのは
「メソッド定義で関数のように振舞うメソッドを定義することができる」
「そのように定義された、どこでもレシーバなしで呼べるメソッドを関数的メソッドと呼ぶ」
「さらにそれを関数と略して呼ぶ人も中にはいる」
という程度
オブジェクトに属するメソッドしか作れないので、本当の意味での function を作成することはできない
関数的メソッドが特定のオブジェクトかモジュールに所属していることを隠すことは本来できないので
わざわざ関数と別途呼ぶことは初心者の理解を妨げるただの欺瞞だという考え方がないわけでもない
>>915 や
>>926 みたいに「じゃあ関数とメソッドの関係ってなんじゃらほ」ということになる
「Arrayクラスのjon関数」とか表現してしまう人も出る始末
>>933 Rubyのモジュール関数は、どう解釈すればいいの?
「Rubyのモジュール関数」も「初心者の理解を妨げるただの欺瞞」の一つなのかな?
たとえばStandard MLのような関数型言語にもモジュールという概念はあって、
ある関数は特定のモジュールに所属していると考えることができる。そうであるならば、
「Rubyのモジュール関数」は「関数である」と解釈してもいいと思うんだけど....。
この話、継承がからむとややこしくなるから、クラスの概念は除外するよ。
Rubyのモジュールは、便利だから他の言語仕様から取り込んだだけだと思う。 全てがオブジェクトでなければならないと決めているわけじゃないだろうし。 できるだけそうなるように作ったけど、便利なものは取り込んで行くという方針なのでは?
>>934 モジュール関数というものもない(一応)
・ foo というメソッドがレシーバつきで呼べない private の設定になっている
・ foo という名前のメソッドがそのモジュールの特異メソッドとしても定義されている
・ つまり、普段は M.foo で使え、面倒なときは include M して foo でも使える
という状態を、他の言語を利用してきた人向けにモジュール関数と呼ぶことがあるというだけ
Ruby の attr_accessor で作ったメソッドを指して「Rubyにもアクセサがあります」と言ったらたぶんみんな怒るだろ
動作としては「いわゆるアクセサ」じゃないから
Ruby の文脈で外見が無理矢理それっぽく動作するものを探してそう呼んでるだけのグロテスクな存在
全て、ただのメソッド
Rubyはクラスやモジュールの存在や相互の関係が学んですぐ見えるようになるからな それをわざわざ別の概念で隠してしまうのが、心情的に不快なのだろう 「これはputs関数です」 「いやKernelクラスのputsメソッドを呼んでるだけだよね? ふつうにputsメソッドでよくね??」 irb> Kernel.__send__(:puts, "a") a
殴りたくなるな
メソッドは関数ではない というところの認識からして違う メソッドと関数を同一視する言語の人から見ればそれは奇妙だろう
940 :
934 :2011/02/09(水) 15:22:41
>>936 >・ つまり、普段は M.foo で使え、面倒なときは include M して foo でも使える
Standard MLには(Rubyのincludeに相当する)open宣言というのがあるから、
普段は「関数」を M.foo で使え、面倒なときは open M して foo でも使える。
もちろん open宣言は対話環境(インタプリタ)でも利用できる。ということは、
「Standard MLの関数」とは、Standard MLの文脈で外見が無理矢理それっぽく
動作するものを探してそう呼んでるだけの「グロテスクな存在」なのかな?
>>939 メソッドである時点で関数とは呼べないのだ、という認識がずれてるな
Rubyのメソッドは関数のようなかっちりしたものではない
もっとふにゃっとした、オブジェクトがないと立っていられない類の概念
Rubyには基本、オブジェクトしかないからな 関数型のパラダイム持ち込まれても困る N88-BASICにクラス持ち込まれても困るだろ
ルーチンのことを「関数」と呼ぶ、というのは「関数型のパラダイム」じゃないぞ。
サブルーチンって値を返さないやつ?
値を返さないのはプロシージャ(手続き)じゃね?
数値シミュレーションにオブジェクト指向を生かすには、どんな設計にしたらいいんだ
楽しいの?
>>946 アプリケーションの機能に言語設計上の特性が影響するとは思えないんだが…
ステートパターン使うなりで、保守しやすくなったりせんの?
>>949 プログラム保守上の難易度とアプリケーションの機能にどんな関係が…
>アプリケーションの機能に言語設計上の特性が影響するとは思えないんだが… >プログラム保守上の難易度とアプリケーションの機能にどんな関係が… ごめん。煽りでなしに、バカだから何いってるのかわからない。 やりたいのは産業用ロボットのシミュレーションで、モータのパラメータや、 重心位置、アーム座標やモータの位置、先端速度・加速度なんかの似たパラメータを 含むものをオブジェクトとして、まとめてしまいたい。 で、オブジェクトとしてまとめても、アームの形状や軸数、 物と衝突したときなんかは、更新するときの式が微妙に変わってくる 後はブロック線図を、どうプログラムに落とすのかが気になったので どんな感じに設計してプログラム書いてるんだろーって思って1行レス
>>951 更新するときの式で、その微妙に変わってくる部分を
アームオブジェクトや衝突対象のオブジェクトに訊ねるor任せる、じゃね?
>>951 アプローチはいくつかあるが、あなたがちょっとオブジェクト指向について勘違いして
いる節があるので難しいかもしれない。
1) 産業用ロボット全体のシミュレーションをオブジェクト指向言語ででっちあげる。
※言語が変わるだけで、全般的なプログラム設計自体はさほど変化ない。
2) オブジェクト指向言語によって、有意な規模で分割した産業用ロボットの各パーツ
毎にシミュレートさせた総体として、結果産業用ロボット全体のシミュレーションを
行う。※すごくやっかい、オブジェクト指向と産業用ロボットそのものに対する詳細
な理解が必要。
1)がオブジェクト指向から最も遠い使い方、2)がその正反対。
>>952 そんな感じに作ってはいたんですが、オブジェクトによっては不要なパラメータ出てきたので、
他の方々はアームオブジェクトを派生させるのかなとか、
数式部分だけオブジェクトにしてたりするのかなとか、
>>953 やってみたかったのは2の方です。モジュール毎にテストして、最後に組み合わせたかったので。
OOPについて理解してない状態で、パラメータやオブジェクトを後から追加していったら、
楽に実験できるかと思ってたんですが、かえって泥沼にハマった記憶があります。
後からコードを継ぎ足していくような書き方には向いてないんですかね?
それとも、入門者で設計が不味かったでしょうか?
>>954 > 後からコードを継ぎ足していくような書き方には向いてないんですかね?
オブジェクトの振る舞いは大抵そうやって継ぎ足していくというか、派生オブジェクトは
まさにそうやって作られる。
> それとも、入門者で設計が不味かったでしょうか?
というより、直す時になるべく少ししか弄らないようにしてない?
部分的に弄ってなんとかしようとしてオブジェクト的には台無しとかよくあるよ。
オブジェクト化の副産物として、各属性や手続き(メソッド)は割と独立しているから
ばらしてオブジェクトその物を作り変えてしまうことも(俺は)よくやるよ。
python使いでスタープログラマーなんているの?
まつもとゆきひろさん(おやくそく
星はまわりが暗いからこそ輝ける
なんかウィルスの警告が出てうざいな
サンフランシスコでは誰もPerlのことを話題にしないんだとさ。Perl使ってるのは日本ぐらい?
ttp://mtl.recruit.co.jp/blog/2010/11/qconsf_1.html > 最後に余談ですが、QconSFの話の中でPerlは誰も話題にしてませんでした。
> MTLではPerl多いのですが…。JavaやRubyが多いコミュニティのようですね。
> Pythonもたまに出てくる。PHPはFacebookで使ってますが「なぜPHP使ってるの?」
> なんて質問が出る始末…。地域によって流行があるものですね。
おれさあ perl使われてないとか気にしたことないよ おまえさあ 使われてないとか きにしてんの? 俺はPerlが凄いとおもってんだよ お前きにしてんだろ? 今流行の言語は〜〜だ Perl?時代遅れ みたいな あのさあ お前はばかだろ?愛着とかないの? 思い入れとかないんだろうなあ、かっこつけて生産重視とかでしか見てないんだろ? そんな、プログラミングには感情的なこと入らないみたいな だろ? お前がプログラマならその流行に便乗してもしかたないけどさああ お前みたいなカスはすぐ物とか捨ててソウだな 大事にしなさそう 物を大事にしないやつは帰れカス もう1回教育受けなおしなさい^^;
少なくともpearlは失敗作だし いまさら新規案件でも使う気にならない リプレースの機会があればガンガン乗り換えてる 未練とか愛着とか全く感じないね
PerlはLinuxディストリに標準で入ってるから、なんか使わないといけないような気にさせられる。 でも、もう消していいんだね。
そもそも案件とかリプレースとか言っちゃってる人間に「失敗作」だのと宣われる謂れは無いと思うぞPerl あれは元々単なるテキスト処理言語であって、それ以上でもそれ以下でもない 一時期Web言語として名を馳せたのは、テキスト処理とWebプログラミングが非常に相性が良かったからで そもそも目的外の使い方をしておいて失敗作だの未練だの愛着だのワケわかんね
>>963 じゃないけど
pearlはweb用途以外でも糞だろ
もしかすて: Perl
もちろん気付いていたが放置した 今は全く反省していない
糞な所が無い言語というのも中々無い物だがな。 最初から完成された言語なんて無い訳だから、どんな言語も多少は しがらみを持っている。それが歴史の古い言語なら尚更。
606 デフォルトの名無しさん [sage] 2011/02/11(金) 06:01:05 ID: Be: DirectShow のスレッドと迷ったけど、 CE 特有の癖があるかも + ほんとうに DirectShow なのかわからないので とりあえずこっちに。 PlatformBuilder6 バッテリー警告とかで、 システム全体のサウンドを停止して 自分の警告音だけをならす方法ってありますか? 警告音を鳴らし始めるときに、すべてのサウンドを停止して、 警告音が鳴ってる間になろうとする、ほかのサウンドをブロックしたいのです。 DirectSound だと排他っていうみたいなのですが、 DirectSound はもうないようなので。
しがらみなんてないぜみたいな海外きどりがうぜえんだよかす 消えろよはやく グローバルオタうぜえ
それは負け惜しみにしか聞こえません
Perlerの悔しまぎれがひどすぎるwwww
pearlは糞だろ
必死なPerl評論家って何かに似てると思ったら、Javaに叩かれてたころのコボラーにそっくりだ。
反論するときの必死さがそっくり。
>>970 >糞な所が無い言語というのも中々無い物だがな。
その通り。糞のない言語なんてない。あるのはどのくらい糞が多いか少ないかだけ。
もちろんPerlは糞が多い。
おれさあ COBOL使われてないとか気にしたことないよ おまえさあ 使われてないとか きにしてんの? 俺はCOBOLが凄いとおもってんだよ お前きにしてんだろ? 今流行の言語は〜〜だ COBOLl?時代遅れ みたいな あのさあ お前はばかだろ?愛着とかないの? 思い入れとかないんだろうなあ、かっこつけて生産重視とかでしか見てないんだろ? そんな、プログラミングには感情的なこと入らないみたいな だろ? お前がプログラマならその流行に便乗してもしかたないけどさああ お前みたいなカスはすぐ物とか捨ててソウだな 大事にしなさそう 物を大事にしないやつは帰れカス もう1回教育受けなおしなさい^^;
最早、Perl評論家=Perl忍者と同レベルの奴しか居ないクソスレと成りました。
>>978 >Javaに叩かれてたころのコボラーにそっくりだ。
『コボルなら!俺でもコボルなら見下せる!』みたいな輩がいたって事かな
自分は一度も見た事無いけど、そういう世界に住んでる人もいるのかな
このご時世にperl6のカブキっぷりはすげーと思う
Ruby はいつの間にか GPL から BSDL に変わったんだね これは素晴らしい
Perlが今でも人気あるのは日本とロシアぐらいだね。 世界的に見て、ウェブ系だとPHPが圧倒的に普及してる。PythonはUNIX系OSのシステムツールって分野も含めて、そこそこ。 RubyはRailsと同義語みたいな扱いで、ウェブ系に限ればやっぱりそこそこ。 俺はPerl6は凄く良いと思うけど、いつまで経ってもリリースされないんじゃどうしようもない。 今さらarrayリファレンスをforで回せるようにするとか、いつまでもPerl5にこだわっても意味ないと思うんだよな。
>>984 Pythonってもはやそこそこじゃないんじゃない?
一応今月のTIOBEでPHP抜かしちゃったし。
日本だとまだまだマイナーだけどな。
Facebookの人がPHP使ってる理由について、本当はC++がいいけど、C++の優秀なプログラマーをたくさん集めるのは難しい、だから、HipHop for PHPを作った、って言ってたな。
いや、案件数というか、数はPHPが多いよ。 ただし、Web2.0系って言うの?その手の自社コンテンツ持ったスタートアップ企業だと、確かにPHPよりPythonかRubyの方が多いと思うけど。 その辺は日本も海外も同じだな。日本でPHPが強いのは中小の受託系制作会社だから。
COBOLって十進数の計算をそのままできるから、 銀行の給与計算では今でも重宝されてんじゃねーの? 講義で教授が言ってたお!!趣味グラマやweb系には、 カラツバ法なんて永遠に巡り会うことなさそうだけど 計算機科学って、どこで使うの?
中小のほうがかっこいいよ WEB系は中小のほうがかっこいい
15位のNXT-Gってぜんぜん知らねー 16位のAdaとか意味不明の躍進 今更何かあったのか
俺はc++の人気の下がり方と 下層ながらにも徐々に確実に勢力を伸ばしているc#が気になった 個人的には、ミゲル・デ・イカザ萌えなので、 MicrosoftやGNU、Oracle,Googleの思惑を越えて,一番に流行ってほしいが
goは何よりも絵に書いた餅だし、 少しも金に結びつきそうにないから、 使う人は好事家に限られるでしょ アプリケーションへの組込み用途に特化したluaの方が、 まだまだ今後も需要が伸びそう これ見る限りじゃ、LLはpythonの一人勝ちっぽいな
>>994 PHPを見落としてるぞ。
しかし、Pythonが何処で使われてるのか、さっぱり分からんな。
UNIX系OSのツールでもPerl程度ぐらいにしか使われてないし。
GAE人気だとしたら、Javaは右肩下がりなのが分からん。
ク
ソ
>>995 TIOBEのリストは現実世界で実用に使われてる/使われてないとはあまり関係はないよ
単に話題になってるかどうかだから
そうじゃなかったらFortranあたりを差し置いてGoが出てくるなんてありえんだろ
スレ立てるな!!!!!!!! 1000!!!!!!!!!!!!!!!!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。