- 1 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 10:56:12.10 ID:U+dh/xlD.net]
- 前スレ
【JavaScript】スクリプト バトルロワイヤル51【php,py,pl,rb】(c)2ch.net peace.2ch.net/test/read.cgi/tech/1438094104/
- 2 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 13:15:48.72 ID:/h7yi4VP.net]
- https://www.google.co.jp/trends/explore#q=Java%2C%20%2Fm%2F0jgqg%2C%20c%23%2C%20%2Fm%2F0505cl%2C%20%2Fm%2F060kv&cmpt=q&tz=Etc%2FGMT-9
Yahooからステマ認定され広告を解約されたマイナビは低級言語を推してくる "プログラミング言語別"の求人年俸額の順位、1位は「Python」で平均382万円 ttp://news.mynavi.jp/news/2014/10/30/277/ ITも特亜に工作されているということだよ ジャップは低級言語でいつまでももがいていろということだよ
- 3 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 22:51:45.25 ID:bqsObMsV.net]
- 低級言語ってのはマシン語やアセンブラのことだろ
Pythonなんておもいっきり高級言語じゃねえか
- 4 名前:デフォルトの名無しさん [2015/09/30(水) 23:36:21.27 ID:QOvaNotd.net]
- 日本でitはバカしないないというのがわかるスレ
- 5 名前:デフォルトの名無しさん [2015/10/02(金) 12:02:07.87 ID:AKckLqEC.net]
- Ron?@CodeMonkeyZ
We are starting public development of 2ch's new javascript frontend. Please follow here if you are interested: https://github.com/Cipherwraith/2ch/ …
- 6 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 12:14:34.38 ID:4+L35LN5.net]
- "手続き型のダンジョン生成アルゴリズム"
postd.cc/procedural-dungeon-generation-algorithm/
- 7 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 20:50:05.15 ID:a6l66mp2.net]
- railsの何が凄いのか全然分からない
- 8 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 21:00:28.32 ID:ELEmlsjj.net]
- コロンブスの卵的なすごさはもちろんあるだろうけど、これだけ「Rails系」と言われる
フレームワークが各言語で出ている現状でもまだトップを走っているのがすごい
- 9 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 23:34:57.01 ID:0yJdvn1+.net]
- >>6
これ使われてる言語なに? Lua?
- 10 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 03:39:03.65 ID:9WMmqKq2.net]
- >>9
みたい i.imgur.com/KdUax4z.jpg
- 11 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 20:55:43.82 ID:wylVu18O.net]
- railsが評価されてんじゃなくてrubyが評価されてるだけだろ
PHPとrubyみて文法の良さでPHPが勝ってると思う奴なんていない 速度に関しては遅いってデマが嘘だと気づかれ始めてる感じはあるか
- 12 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 21:12:01.67 ID:wZWPBuKi.net]
- そのRubyが3.0で静的型の機能を取り入れたいって言ってるんだから
静的型の有用性が明らかになってきたね
- 13 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 21:23:38.22 ID:7qoXcIfa.net]
- Rubyが互換性捨てて静的型になったりしたら、
RailsはRuby2をRailsScriptとしてフォークしそうだな そしてRubyもRailsも共倒れのパターンだ
- 14 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 21:52:28.29 ID:B7+308rF.net]
- その時はRailsはRuby3.0を追っかけるさ
- 15 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 22:05:16.74 ID:t3GFdbA2.net]
- 互換性を捨てるわけじゃないだろ
現行の何でもアリ型は何でもアリ型というひとつの型で残すんだよ 整数型や文字列型と同様に型のひとつになるってだけだ
- 16 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 22:14:42.66 ID:rHFZYJSj.net]
- そしてRailsのM,V,Cはいずれも何でもあり型にしかなり得ないわけだけど、
そういう歪な状態を意識高い(笑)rubyist連中が受け入れられるかどうか
- 17 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 22:28:42.96 ID:wZWPBuKi.net]
- それは俺も思ってる
静的型の機能が有るなら、 型は出切る限り書くべき、その方が綺麗、って空気になると思う 静的型言語ではキャストはなるべく避けた方が綺麗ってのは常識だしね 静的型を導入するということはそういうことかと 機能が有るのに活用しないのもおかしな話だからな しかーし、Rubyの静的型がまともに機能するのが前提だが ジェネリックとかが無くて実質的に静的型がまともに使えない代物のなら Rubyの静的型は偽者って言われるだろうし、混乱しそう そのへんどうするんだろうね しかもmatzはあまり静的型に乗り気ではないと想像してる 今までずっと動的型の優位性を説いてきたような人だからね とはいっても周りがどんどん導入してきているからね 静的型はスクリプト界のトレンドだから
- 18 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 22:38:37.78 ID:rHFZYJSj.net]
- 静的型のメタプログラミングはScalaがやろうとして大失敗してるな
Rubyもああならないことを祈る
- 19 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 23:00:14.12 ID:37NZking.net]
- Ruby3はTIOBEの順位を維持する燃料程度の役割しかなく、
たぶんまつもとによる実装は無理。 かつてのRite同様にベーパーウェアに終わるだろうね。
- 20 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 23:21:49.91 ID:WT9ul4l1.net]
- まず、優れたソフトウェアがPythonで書かれてる事が多い、自然言語処理系や人工知能系、Deep Learningなど。
Common Lispの様なマクロを持った昔から使われている言語も重要だろう。 JavaScriptは今やMac自身Automatorなども動かせるし、フロントエンドバックエンドなども動かせる様になったのでそれを学ぶ意味ではとても便利な言語。 そしてオープンソース化が期待されていて、ハードウェアとソフトウェアの高い次元で上手く設計されるだろうSwift 2 妥協点ととっつきやすさ、今後のコンピューターの進展を見据えて設計されているだろうSwift 2に期待かな。 Swift 2と全く同じ事すれば言語としては流行るかもねw もっとも後追いだし先に地雷踏めばSwift 2はかわして設計するだろうし、 良い設計をすればSwift 2にパクられておしまい。 新しい言語なんて作る必要も無いし、Rubyとか誰も本気出してないプログラム言語と心中する人の気がしれないね。 Python, JavaScript, Common Lisp, それとSwift 2やっとけばいいと思う。暇なときにC/C++という感じかな、時間の上手い使い方として。 それ以外の時間は英語やマーケティング、トレンドやデザイン、数学や物理やってた方がより良いソフトウェア使えたり面白い製品作れる可能性ある。 あれもこれもプログラミング言語使えてLAMP使えてスゲーしてるのってガラパゴス日本だけwwww
- 21 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 23:36:31.24 ID:B7+308rF.net]
- メタプログラミングRuby 第2版
https://www.amazon.co.jp/dp/4873117437/ref=cm_sw_r_awd_sfsgwbW99QRFE
- 22 名前:デフォルトの名無しさん [2015/10/10(土) 23:43:40.71 ID:rHFZYJSj.net]
- 静的型にする気があるなら「バッドノウハウRuby」に改名しろよ
- 23 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 00:53:57.26 ID:8f2DNTjb.net]
- >>20
> まず、優れたソフトウェアがPythonで書かれてる事が多い、自然言語処理系や人工知能系、Deep Learningなど。 優れたソフトウェアの定義が狭すぎだねw OSはC/C++だったりするし、PHPのwikipediaとか TwitterやFacebookなんかもある。 君がそこにあげているのを見ると、優れたソフトウェアというより 優れているかどいうかは別として、科学技術の基礎研究用(+成果のライブラリ) という気がするね
- 24 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 04:03:23.39 ID:06RK7D7v.net]
- その人偶に見かけるけど Common Lisp が入ってるんだよなあ
- 25 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 04:53:23.53 ID:pSDbZ28N.net]
- 個人的に一番感じる「優れたソフトウェア」とは言語エンジンそのものだけどなぁ
- 26 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 07:41:21.27 ID:U3MJCY0J.net]
- OOP(といってもクラスベースよりメッセージングベースとして)、
GUI(マルチウインドウ、ポップアップメニューなどのノウハウ蓄積)、 からめてMVC(リエンスカウの古典から、MVP、MMVC、その先のDCIまで)、 さらにデザパタ(GoFはいうに及ばず、アレグザンダーいうところの無名の質まで)や アジャイル(xUnitから、TDD、XP)などの開発手法が生み出された経緯、 メタプログラミングや遅延結合(metatoys.org/oxymoron/oxymoron.html )、 VM高速化技術(古典ではJITからJava HotSpot、近年ではSqueak CogやSpur)、 OODBに繋がるオブジェクト永続化技術(イメージベース、GemStone)とか いろいろ遊べて学べるSmalltalkも、PGならコモンセンスとして備えておきたい。 zerobase.hateblo.jp/entry/2013/02/24/015610 Smalltalkをちょっとかじってみたい人のためのチュートリアルまとめ qiita.com/sumim/items/6bed17961bd57daf88a3 さすがにこれでスタートアップ、資金1億調達まで目指すのは苦行だけど^^; https://twitter.com/takano32/status/649384263515660288
- 27 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 10:09:35.92 ID:jdhTMeIt.net]
- 高野さん、Smalltalkの会社に転職したんだ。
チャレンジャーだな…
- 28 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 10:18:19.81 ID:gadIIZk0.net]
- >>25
言語処理系は情報処理の理論がそのまま実用になる数少ない分野だからね やってることが非常に単純な割にはソフトウェア開発の重要な部分を占めるので、 技術バカの大好きな視野狭窄なクォリティ追求が許されてしまうし
- 29 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 13:32:15.53 ID:AIIBuHzT.net]
- >>23
広告クリックさせたりする事が優れたソフトウェアやサービスとは思えないからTwitterとかFacebookとかクソだね。 SVの人達もそういう考えだし。
- 30 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 15:57:18.77 ID:XJEeMP8F.net]
- >>29
やっぱり考え方が狭すぎだねw
- 31 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 19:15:14.88 ID:5ati5bYz.net]
- Rubyに関係なく、素朴な意見として、
なぜ静的型を動的言語で? 最初から静的言語を使えばいいだろ おわり
- 32 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 19:41:24.67 ID:6jGim2k9.net]
- Pythonの型付けもそうだけど、一番はドキュメントとして型表記を利用したいんだよ。
別に一部で型を明記したところでそうでない部分との関係で対して最適化や補助は効かないけど ドキュメントとしては価値がある。
- 33 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 20:25:48.63 ID:XJEeMP8F.net]
- 例えば、current_timeという名前の変数があったとして、
そこに何型が入っているかはわからんのだよね。 処理を読めが型は推測できるが、推測して判明するまで 時間がかかるのは、可読性が低いということを意味する。 名前からは何型かわからないが、処理は特定の型 専用のコードになっている。 変数自体は動的であっても、処理自体は動的ではない。 処理が動的じゃないのであれば、型も静的でいい。
- 34 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 20:58:32.42 ID:6jGim2k9.net]
- まあRuby的には超賢いIDEができて推論した型を表示してくれるというのが理想なんだろうけどな
- 35 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 21:18:59.86 ID:VUX4VOf2.net]
- 無理無理
だって、メソッドの引数の型は、呼び出し元で変数を渡してもらって始めて決定する 未だかつてどこからも呼び出されていないメソッドの引数の型は解析も無理
- 36 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 21:48:52.37 ID:gadIIZk0.net]
- それ以前にメソッドの有無すら実行してみるまで分からない
メタプログラミングを捨てずに静的チェックやるなら、 チェック時に全てのクラスの中身を一度実行してみて、 その結果できたクラスオブジェクトを解析するしかないんじゃないかな 解析する時と実行する時でクラスのコンテキストが変わるというのは、 クラスを書く人にとってはバグの温床になりそうだが
- 37 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 03:41:12.46 ID:53GvI8rG.net]
- Perlみたいにコンパイルフェーズってのを作ってればよかったのにね。
だいたいのメタプログラミングってのは、実行時にやりたいんじゃなくて 実行前にやれば十分なんだよ。 例えばある標準クラスがあったとして、そこにメソッドを つけ加えたいなと思った時、実行時につけ加えるじゃなくて 実行前に付け加えれば十分でしょ?
- 38 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 04:56:12.47 ID:L9nzf7kh.net]
- >>35
別に完璧である必要はないじゃん ある程度上品な書き方(MethodMissingとか動的なメソッド追加とか使わない)において ある程度の情報が提供されればそれで十分だと思うけど
- 39 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 09:31:45.11 ID:+zms5d6G.net]
- Swiftが美しすぎる
- 40 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 09:38:22.19 ID:QcfJYyiX.net]
- Pythonには型推論して型を表示してくれる
超賢いIDE(jediとか)があるんだから、Rubyでもヨユーヨユー
- 41 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 10:24:06.79 ID:kiUfesSB.net]
- C++を使いこなす余裕があればRubyもSwiftもいらねーんだよ
おまえらの仕事は余裕のない弱者を助けることだけだ
- 42 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 11:46:17.79 ID:7BEPgWVx.net]
- C++のOOPは偽物
RubyのOOPは本物 動的なメソッド追加は本物の証 この解釈が撤回されたときC++は復活する
- 43 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 11:47:38.50 ID:lzwRwYon.net]
- >>32
従来変数名でやってたことだね それだけのことで静的型を入れようとかいう話になるの?
- 44 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 11:51:33.35 ID:DSHcQooM.net]
- C++の静的型は本物
Rubyの静的型は偽者 って言われる日がくるかもね
- 45 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 11:52:06.13 ID:GPJRvwrY.net]
- OOPに本物とか偽物とか言ってる情弱がまだいるとは…
Rails土方、恐るべしだな
- 46 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 12:06:39.18 ID:DSHcQooM.net]
- そうそう、本物のOOPならマルチメソッドぐらい無いとね
第一引数だけを特別扱いしてレシーバとして前に出して記述するRubyのOOは偽者だよね 真のOOPならこうかけなきゃ ( obj1, obj2 ).method もしくは method( obj1, obj2 ) ←これで多態出来なきゃね 動的型言語の癖にこんな事もできないRubyは偽者だよ
- 47 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 15:19:12.41 ID:83Q2zR6P.net]
- Railsを日本で広めようとしてる奴らは大体腹黒いやつなきがする。
あくまでも個人的な意見ね。
- 48 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 16:39:34.85 ID:NwCMAomS.net]
- >>46
例えばJavaScriptでも 自動振り分けのラッパー噛ませた関数を出力するヘルパー作っておいて 共通プロトタイプと組み合わせて使えば、 もしくは適切な方に適切に振り分けるプロキシを共通プロトタイプにしておけば スマートに実現できると思うけど、 Rubyでも出来るんじゃないの?
- 49 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 17:20:55.95 ID:jcvepef5.net]
- let o = {
anch:[this.tag.dt, this.infobg, is_anch(e)] } で (o.anch[2])? o.anch:""; ができるんだな
- 50 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 17:21:47.20 ID:53GvI8rG.net]
- >>48
工夫すればなんでも出来るんだよ。 例えばC言語でオブジェクト指向ができるように。 だけどそういうのは本物ではない。
- 51 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 18:52:10.29 ID:7BEPgWVx.net]
- >>50
「C言語はオブジェクト指向言語」と宣言したら嘘で偽物だが 宣言しなければ嘘でも偽物でもない 宣言することがそんなに良いことなら自分ですればいいのに 他人に広めようとしてる時点で怪しいんだよ
- 52 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 19:02:59.91 ID:DSHcQooM.net]
- つまりRuby3.0が静的型を正式に取り入れた、と宣言したのに
実物がいい加減な代物で「嘘」「偽者」だったって未来へ向けてのフリですね
- 53 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 20:49:27.38 ID:ZTa/or21.net]
- Matzの戯れ言を本気にする人間っているんだな…
Rubyのことをちょっとでも知ってるなら、ただの燃料だということはすぐ分かりそうなものなのだが…
- 54 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 21:06:58.48 ID:GPJRvwrY.net]
- >>46
少なくともケイのメッセージングOOP(が本物と言うつもりはさらさらない。為念)の考え方では (obj1, obj2).msg なら (obj1, obj2) というタプルに対するmsgというメッセージ送信になるのでは? そもそもこのパラダイムでは、msgというメッセージ送信によってセレクタmsgと同名のメソッドmsgが コールされるとは限らないという仕組みにより遅延結合をユーザーに意識させるところがミソなので、 metatoys.org/oxymoron/oxymoron.html マルチメソッドを持つか(メソッドのオーバーロードが可能か)否かはいうに及ばず、 メソッドが静的型を持つかといった話とは別のような。 ケイ曰わく、 「型には反対しないが、複雑さに悩まされない型システムを見たことはない。動的型付けはまだマシだ。」 d.hatena.ne.jp/katzchang/20080807/p2
- 55 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 21:58:43.99 ID:DSHcQooM.net]
- 別に俺はマルチメソッドに静的型が必要だとは主張していないが
- 56 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 22:01:06.33 ID:lzwRwYon.net]
- Matzが静的型を導入したかったのか?
- 57 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 22:20:18.93 ID:DSHcQooM.net]
- 多分本音は導入したくなさそう
静的型に対してかなりモニョってる印象 しかーし、最近のスクリプト言語はこぞって静的型を取り入れているし 流行に敏感ってことにしたいRubyとしては取り入れざるを得ないんだわ 一体今更どういう風に取り入れるかは見ものではある 静的型を導入すると当然昔からの風習にならって 「なるべく型は書くべき」、って派閥が出来るだろう しかしそれはRubyの世界観にアンマッチになるっつーかさ しかも、もし、ジェネリックすらないような中途半端な静的型しか導入できなかったとしたら まともに使い物にならないものを押し付けられる 使い物にならなければ使わなければいいわけだが、 しかし型は書いたほうが良いという古くからの風習もあり、 一体どうしたものかと途方に迷う事になる
- 58 名前:デフォルトの名無しさん [2015/10/13(火) 02:05:16.01 ID:3QE/NkoP.net]
- >>42
C++のoopはバートランド・メイヤーの流れをくむものじゃないかな。時期的にC++のが早かったとしても。 メイヤーのeiffelはあれはあれで良いものだぞ
- 59 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 02:17:53.92 ID:O9bZKJjD.net]
- >>57
途方に迷うのではなく暮れるのさ
- 60 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 06:34:58.02 ID:3LDxUoaZ.net]
- ブレてるねー
1年前にmatzが自分で動的言語信奉者だと言ってたのを聞いたことあるけど これじゃ更に人気を落としてくんだろうね
- 61 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 06:48:50.37 ID:cMOwnvUD.net]
- >>54
そうか、マルチメソッドはそのタプルクラスのメソッドと考えることができるのか だったら配列クラスのメソッドミッシングメソッドを賢くしてやれば実現できそうだな
- 62 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 09:20:37.48 ID:Rl12UR24.net]
- >>61
そうですね。あとはC#の拡張メソッド(実体は静的メソッド)みたいに構文糖をまぶせば 通常のメソッド呼び出し(メッセージングOOPのパラダイムならレシーバーへのメッセージ送信)の 書き方にできるはずです。 ただ、ぱっと見レシーバーに見えるオブジェクトが、実質はタプル・配列等の要素となってしまっているため、 その(あるいはそれらの)内部情報に対する当該メソッド記述中でのアクセスについては制限が加わります。 C#の拡張メソッドと同じですね。 CLOS等の総称関数のように割り切るか、従来のメソッドと同レベルの使い勝手や メソッドのありかた(特定のクラスに内包される)にこだわるならさらなる細工が必要になるでしょう。 (Dylanがこの問題をどう解決しているかは調べてません。ごめんなさい) あと参考まで、メッセージングOOPのパラダイムでは古典的にはダブルディスパッチというベストプラクティスパターンが すでにあるので、構文までいじくり回してマルチメソッドやメソッドオーバーロードを実現する価値が本当にあるか よく吟味する必要はあるのかとも思います。
- 63 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 09:44:43.93 ID:IPzu3dLL.net]
- 何を言ってるんだ?
タプルに対する拡張メソッドにしたところでマルチメソッドでもなんでもないだろ >>46
- 64 名前:63 mailto:sage [2015/10/13(火) 09:45:46.79 ID:IPzu3dLL.net]
- すまん途中で書き込んだ
>>46が言ってるのは複数の引数の型によるディスパッチであり >>54
- 65 名前:63 mailto:sage [2015/10/13(火) 09:47:48.53 ID:IPzu3dLL.net]
- 何度も申し訳ない
>>54は議論をすり替えているだけ
- 66 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 11:00:06.67 ID:E12GE1WX.net]
- まあ落ち着こうよ。
>>46については「本物のOOP」が指すのがケイの動的・遅延結合をモットーとするメッセージングのOOPなのか、 ストラウストラップ・メイヤー・リスコフらの抽象データ型をクラスで実現するOOPなのかをはっきりさせないと。 もっとも、前者なら>>54にあるとおりメッセージ(に含まれるセレクタ)と同名メソッドのコールを保証する義理はないし、 後者ならレシーバとかいう表現がでてくる時点で何を言っているのか意味不明になるから、どっちにしてもあれだけど。 Rubyを擁護する気はないけど、Ruby開発陣の技術力不足をすべて動的・遅延結合におっかぶせる論調はよくない。
- 67 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 11:19:38.71 ID:aIVsWkps.net]
- よく分からんけど
それが出来ることによって何がどう役立つの?
- 68 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 11:23:22.41 ID:BR4NEKph.net]
- 極稀にあるパターンをわかりやすく記述できる。
- 69 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 11:37:53.98 ID:eox7qbM1.net]
- マルチメソッドが必要な理由がはっきりするまでは放っておけばいい
第一引数を特別扱いしたら偽者、というのはマルチメソッドとは関係ない 第一引数に頼らないクロージャを使って書き直すだけでOK
- 70 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 11:58:16.93 ID:LdSr9S5L.net]
- マルチメソッド自体の必要性は静的言語のオーバーロードや動的言語の醜悪な型チェックの大さを見れば明白
- 71 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 12:10:35.89 ID:WPI+iK8W.net]
- 単純な対象性に対する疑問でもある
引数は0個から無限大まで幾つあってもよいはず その中で第一引数だけ特別扱いして しかも前に出して記述するのは対象性の観点から見てどうなのか 引数は全て等しい扱いを受けるべきでは ここをクリアしないことにはOOPは学問になれない 単なる経験則で終わってしまう
- 72 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 12:34:02.06 ID:BR4NEKph.net]
- >>71
可読性というものはそういうことなんだよ。 コンピュータから見れば、どちらでも同じだが、 人間が見てどう感じるかが、重要。
- 73 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 12:35:50.72 ID:aIVsWkps.net]
- >>68
確かに定義においては認めるけど、使用の際には、そんなごく稀な記法を特別に使わせるのは分かりやすくないと思う
- 74 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 14:24:13.32 ID:WPI+iK8W.net]
- >>72
人間からみても何とも言えないような場合はどうするんだ?
- 75 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 14:31:26.07 ID:i1awIWf/.net]
- >>74
何と何の話?
- 76 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 14:39:04.87 ID:WPI+iK8W.net]
- 何でもいいけど、例えば基本的なところで
1+2なんてどう? Rubyは1に+2ってメッセージが飛んでくるってノリらしけど 数学的ではないしように思うし 人間的にもplus(1, 2)ってイメージなんだが
- 77 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 15:32:13.81 ID:WPI+iK8W.net]
- だいたいなんだけど、Rubyの1+2で
「1」に「2」を足しこむ機能が備わっているって解釈はどうなんだろう 「1」に「整数の1」以上の意味は要らなくない? 単なる整数の「1」や「2」をどう使うかは、演算子の「+」が決める事では? 「1」が「+2」を処理するというよりは、「+」が「1」「2」を処理するのでは? そっちのが数学的だと思うんだが
- 78 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 15:41:38.20 ID:i1awIWf/.net]
- >>76
何を考えているのかさっぱりわからんが、 人生を思い返してみればわかる。1+2という数式は 小学校でならって体に染み付いている。 これが人間が読んだ時の可読性ということ。 可読性というのは、過去の経験から決まるものなんだよ。 例えば、1を○、2を△、+を□に置き換えて、 ○□△と書いたとしても同じ意味になるんだけど、 読みにくいでしょ? そんな風に習ってないから。
- 79 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 15:42:38.37 ID:WPI+iK8W.net]
- もしくはマルチメソッド風に、
「1」と「2」が両方力を合わせて「+」を処理するってノリならまだ分かるんだけど 「1」が「+2」を処理するってのは腑に落ちないものが有るね 1+2で、「1」と「2」に格差がありすぎる それに「+」の演算の定義は「1」が決めずに「+」自身が決めれば良いような
- 80 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 15:44:45.88 ID:WPI+iK8W.net]
- >>78
言葉が足りなかったね 表記は1+2で問題ないが、その解釈の問題 Rubyは1が+2というメッセージを処理するって解釈する 1に演算がぶら下がっている状態 単に1と2を足すという、ただそれだけの事に それ以上の拡大解釈が必要なのかという事
- 81 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 15:49:04.01 ID:WPI+iK8W.net]
- >人生を思い返してみればわかる。1+2という数式は
>小学校でならって体に染み付いている。 全くその通りなんだよね、体に染み付いている 1+2は単に1と2を「+」という処理をするって考える 1と2は単なる数で、+は両者間の演算を定義している ところがRubyは1が+2というメッセージを処理する、と考えることになっている これは小学校からずっと習ってきた事と違うし不自然だね 小学校で1+2を1が+2を処理する、とは習わないだろう
- 82 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 15:59:08.67 ID:WPI+iK8W.net]
- とにかく1+2をシングルディスパッチで、1が+2というメッセージを処理する、と考えると、
「1」と「2」の格差が物凄いことになってしまう 「1」は足し算の処理をする主体そのもので、足し算の意味すら定義している 「2」は単なるデータ ここは一つ、マルチメソッド風に、「1」「2」が共同で「+」を処理する、と考えるか もしくは単に、「+」が「1」「2」を処理する、と考えたほうが、素直なのでは
- 83 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 16:38:33.72 ID:lCXr92CT.net]
- メッセージングのOOPというパラダイム(考え方)にいったん乗っかった以上、
obj.selector(args) を obj への selector(args) というメッセージの送信だという 解釈は曲げてはダメでしょう。たとえ小学校でそのように習わなかったとしても。
- 84 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 16:49:10.34 ID:lCXr92CT.net]
- 3+4 という演算式を 3 に +4 というメッセージを送ると解釈するのが違和感あるというのはむしろ逆で、
アラン・ケイは、オブジェクトにメッセージを送るという操作ですべてを表現する世界線で 3+4 という演算も説明できるようにするには、3 に +4 というメッセージを送ると解釈すればよい というアイデアに思い至ったわけです。 gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html By this time most of Smalltalk's schemes had been sorted out into …あたりから
- 85 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 17:08:12.66 ID:QDO/4Imo.net]
- 足す物と足される物の区別があるんだから格差があって当然じゃない?
たまたま3+4という表記に限ってはたまたま交換定義も成り立つしそう見えるかもしれないけど
- 86 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 17:32:14.96 ID:eox7qbM1.net]
- 格差が悪いならpublicとprivateの格差を無くせ
情報が漏れるgetterと 情報が丸見えのHashTableを使え multimethodTable[obj1.getType()][obj2.getType()](obj1, obj2)
- 87 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 17:37:36.35 ID:tExxK6rC.net]
- 格さんが駄目なら助さんで…
- 88 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 12:51:47.73 ID:Zx/eGv5t.net]
- >>62
Dylan のマルチメソッドを調べてみましたが CLOS 同様に単なる総称関数で特別な工夫はないようです。 そこで、>>46 に質問なのですが、本物のOOPにはマルチメソッドが必要だよ派、 あるいは、第一引数だけ特別扱いはNG派としては、マルチメソッドを記述する際に どの引数(オブジェクト)の内部情報にアクセスできるようにしたらよいと考えていますか? あるいは総称関数のように内部情報のアクセスに関しても特別扱いはしないという立場でしょうか?
- 89 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 13:07:10.70 ID:oRHV6ndY.net]
- >>88
つまり、そういうこと つきつめればOOは面倒な事が沢山起こる 統一理論のようなものは無い 全ては経験則
- 90 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 17:15:12.58 ID:D87FbFvB.net]
- >>89
C言語が嫌いじゃないなら、C言語を統一理論にすれば全て丸く収まる C言語が面倒ならどこが面倒か理論的に解明してからOOやらないと砂上の楼閣になる
- 91 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 20:06:32.48 ID:EqVBJrGR.net]
- >>90
?
- 92 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 21:17:42.32 ID:dBNBVrr+.net]
- みんなそんなに暇じゃないよ
- 93 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 21:25:49.86 ID:oRHV6ndY.net]
- まぁ真のOOPにマルチメソッドが必要かどうかはおいておいて
第一引数だけ特別扱いするのは対称性の観点から気持ち悪いのはおいておいて ともかく当面は RubyにC#並みの静的型のシステムが組み込まれるかどうかだな 当たり前だけど、中途半端な静的型は、有るだけ邪魔で使い物にならない ジェネリックも何もなくてC言語程度の静的型の機能しか導入されなかったら 今の時代に使い物にならないし、 当時そういう柔軟性の無いC言語の静的型システムが不便に感じたから、こその Rubyだったわけだから、今更C言語程度の静的型ではダメなのは当たり前、何にもならない やはり今更静的型を導入するなら動的型言語に負けず劣らずな柔軟性をもった? C#レベルのを導入しない事には、使い物にならないだろう それに、中途半端な静的型を実装したら、他の最新の静的型言語と比べられて、 静的型に関して優劣を付けられ、Rubyが不利な立場になってしまうかもしれない もし、動的型言語で柔軟性が売りのはずのRubyが、静的型の機能や柔軟性で あの堅物のC++にも劣っていたとしたら、良い笑いものになってしまう なので、最低限ジェネリックと型推論と、できれば共変性と反変性ぐらいは必要かと
- 94 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 21:27:31.95 ID:RZLA+pyr.net]
- 第一引数だけ特別扱いするのは対称性の観点から気持ち悪くても
英語の文法の観点から見れば、極自然なことです。
- 95 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 21:29:58.48 ID:RRpWZ3GK.net]
- 日本語でプログラミングしたい派からしても、第二引数以降を前に持ってきて欲しい
- 96 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 21:35:31.38 ID:fHrqAp5M.net]
- プログラミングにわざわざ日本語を持ち込むバカ居るんだな。
プログラムは以下に車輪の再発明を避けて生産性を上げるか、人に再利用しやすいコードを書くか、バグを減らせるか。 こういったことが核になる事なのに、その核をダメにする要素をわざわざ自分の怠慢と劣等遺伝子で持ち込む理由がわからない。 そんな事する位ならプログラミングしない方が世のためになるんじゃ無いかな。
- 97 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 21:40:23.30 ID:aRVLWehY.net]
- プログラミングはプログラミングセンスの欠片もない連中を統率して
なるべくマシなクソを作り上げるゲームだよ
- 98 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 21:42:31.55 ID:oRHV6ndY.net]
- >>94
英語の文法は必ずオブジェクトを一つとると決まっているわけではないと思いますが、どうでしょうかね 第3文型は SVO では、確かにオブジェクトは一つですのでシングルディスパッチですね プログラミングでは、Cもオブジェクトと考えても良さそうなので、 第2文型の SVC もシングルディスパッチでしょうかね 第1文型の SV はただの関数、静的メソッドですかね しかし、 第4文型の SVOO はオブジェクトを二つとりますし、これはマルチメソッドが良いんでしょうかね 第5文型の SVOC はOを主体としたシングルディスパッチと捉えるか Cもオブジェクトと考えてマルチメソッドと捕らえるかは、人によるんですかね どちらにしても英語の語順は、動詞→目的語、の並びなので func( arg );のスタイルは英語の語感に合ってるんですよね obj.method()は寧ろ日本語的な並びですね、〜を〜する っていう
- 99 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 22:33:52.89 ID:aRVLWehY.net]
- 逆だろ
主語と動詞を明確に意識するのはいかにも英語的な感覚だ 引数で述語を修飾しているだけのfunc(arg)の方がむしろ日本語的
- 100 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 22:47:46.19 ID:JkkT4x6h.net]
- >>98
アラン・ケイの「『ソフトウェア工学』は矛盾語法か?」metatoys.org/oxymoron/oxymoron.html にある、「新しいアイデアを学ぶとはどういう事か?」あたりと食い違ったことを改めてここで主張する理由は? いちおう彼は、OOPの「obj msg」という記法を発案し、英語を母国語とする人なのだけれども…
|

|