トップページ⇒tech
1002コメント371KB

【JavaScript】スクリプト バトルロワイヤル52【php,py,pl,rb】 [転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2015/09/30(水) 10:56:12.10ID:U+dh/xlD
前スレ

【JavaScript】スクリプト バトルロワイヤル51【php,py,pl,rb】(c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1438094104/
0002デフォルトの名無しさん2015/09/30(水) 13:15:48.72ID:/h7yi4VP
https://www.google.co.jp/trends/explore#q=Java%2C%20%2Fm%2F0jgqg%2C%20c%23%2C%20%2Fm%2F0505cl%2C%20%2Fm%2F060kv&;amp;cmpt=q&tz=Etc%2FGMT-9

Yahooからステマ認定され広告を解約されたマイナビは低級言語を推してくる

"プログラミング言語別"の求人年俸額の順位、1位は「Python」で平均382万円
ttp://news.mynavi.jp/news/2014/10/30/277/

ITも特亜に工作されているということだよ

ジャップは低級言語でいつまでももがいていろということだよ
0003デフォルトの名無しさん2015/09/30(水) 22:51:45.25ID:bqsObMsV
低級言語ってのはマシン語やアセンブラのことだろ
Pythonなんておもいっきり高級言語じゃねえか
0004デフォルトの名無しさん2015/09/30(水) 23:36:21.27ID:QOvaNotd
日本でitはバカしないないというのがわかるスレ
0005デフォルトの名無しさん2015/10/02(金) 12:02:07.87ID:AKckLqEC
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/ …
0006デフォルトの名無しさん2015/10/09(金) 12:14:34.38ID:4+L35LN5
"手続き型のダンジョン生成アルゴリズム"
http://postd.cc/procedural-dungeon-generation-algorithm/
0007デフォルトの名無しさん2015/10/09(金) 20:50:05.15ID:a6l66mp2
railsの何が凄いのか全然分からない
0008デフォルトの名無しさん2015/10/09(金) 21:00:28.32ID:ELEmlsjj
コロンブスの卵的なすごさはもちろんあるだろうけど、これだけ「Rails系」と言われる
フレームワークが各言語で出ている現状でもまだトップを走っているのがすごい
0009デフォルトの名無しさん2015/10/09(金) 23:34:57.01ID:0yJdvn1+
>>6
これ使われてる言語なに?
Lua?
0010デフォルトの名無しさん2015/10/10(土) 03:39:03.65ID:9WMmqKq2
>>9
みたい
http://i.imgur.com/KdUax4z.jpg
0011デフォルトの名無しさん2015/10/10(土) 20:55:43.82ID:wylVu18O
railsが評価されてんじゃなくてrubyが評価されてるだけだろ
PHPとrubyみて文法の良さでPHPが勝ってると思う奴なんていない
速度に関しては遅いってデマが嘘だと気づかれ始めてる感じはあるか
0012デフォルトの名無しさん2015/10/10(土) 21:12:01.67ID:wZWPBuKi
そのRubyが3.0で静的型の機能を取り入れたいって言ってるんだから
静的型の有用性が明らかになってきたね
0013デフォルトの名無しさん2015/10/10(土) 21:23:38.22ID:7qoXcIfa
Rubyが互換性捨てて静的型になったりしたら、
RailsはRuby2をRailsScriptとしてフォークしそうだな
そしてRubyもRailsも共倒れのパターンだ
0014デフォルトの名無しさん2015/10/10(土) 21:52:28.29ID:B7+308rF
その時はRailsはRuby3.0を追っかけるさ
0015デフォルトの名無しさん2015/10/10(土) 22:05:16.74ID:t3GFdbA2
互換性を捨てるわけじゃないだろ
現行の何でもアリ型は何でもアリ型というひとつの型で残すんだよ
整数型や文字列型と同様に型のひとつになるってだけだ
0016デフォルトの名無しさん2015/10/10(土) 22:14:42.66ID:rHFZYJSj
そしてRailsのM,V,Cはいずれも何でもあり型にしかなり得ないわけだけど、
そういう歪な状態を意識高い(笑)rubyist連中が受け入れられるかどうか
0017デフォルトの名無しさん2015/10/10(土) 22:28:42.96ID:wZWPBuKi
それは俺も思ってる
静的型の機能が有るなら、
型は出切る限り書くべき、その方が綺麗、って空気になると思う
静的型言語ではキャストはなるべく避けた方が綺麗ってのは常識だしね
静的型を導入するということはそういうことかと
機能が有るのに活用しないのもおかしな話だからな
しかーし、Rubyの静的型がまともに機能するのが前提だが
ジェネリックとかが無くて実質的に静的型がまともに使えない代物のなら
Rubyの静的型は偽者って言われるだろうし、混乱しそう
そのへんどうするんだろうね
しかもmatzはあまり静的型に乗り気ではないと想像してる
今までずっと動的型の優位性を説いてきたような人だからね
とはいっても周りがどんどん導入してきているからね
静的型はスクリプト界のトレンドだから
0018デフォルトの名無しさん2015/10/10(土) 22:38:37.78ID:rHFZYJSj
静的型のメタプログラミングはScalaがやろうとして大失敗してるな
Rubyもああならないことを祈る
0019デフォルトの名無しさん2015/10/10(土) 23:00:14.12ID:37NZking
Ruby3はTIOBEの順位を維持する燃料程度の役割しかなく、
たぶんまつもとによる実装は無理。
かつてのRite同様にベーパーウェアに終わるだろうね。
0020デフォルトの名無しさん2015/10/10(土) 23:21:49.91ID:WT9ul4l1
まず、優れたソフトウェアが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
0021デフォルトの名無しさん2015/10/10(土) 23:36:31.24ID:B7+308rF
メタプログラミングRuby 第2版
https://www.amazon.co.jp/dp/4873117437/ref=cm_sw_r_awd_sfsgwbW99QRFE
0022デフォルトの名無しさん2015/10/10(土) 23:43:40.71ID:rHFZYJSj
静的型にする気があるなら「バッドノウハウRuby」に改名しろよ
0023デフォルトの名無しさん2015/10/11(日) 00:53:57.26ID:8f2DNTjb
>>20
> まず、優れたソフトウェアがPythonで書かれてる事が多い、自然言語処理系や人工知能系、Deep Learningなど。
優れたソフトウェアの定義が狭すぎだねw

OSはC/C++だったりするし、PHPのwikipediaとか
TwitterやFacebookなんかもある。

君がそこにあげているのを見ると、優れたソフトウェアというより
優れているかどいうかは別として、科学技術の基礎研究用(+成果のライブラリ)
という気がするね
0024デフォルトの名無しさん2015/10/11(日) 04:03:23.39ID:06RK7D7v
その人偶に見かけるけど Common Lisp が入ってるんだよなあ
0025デフォルトの名無しさん2015/10/11(日) 04:53:23.53ID:pSDbZ28N
個人的に一番感じる「優れたソフトウェア」とは言語エンジンそのものだけどなぁ
0026デフォルトの名無しさん2015/10/11(日) 07:41:21.27ID:U3MJCY0J
OOP(といってもクラスベースよりメッセージングベースとして)、
GUI(マルチウインドウ、ポップアップメニューなどのノウハウ蓄積)、
からめてMVC(リエンスカウの古典から、MVP、MMVC、その先のDCIまで)、
さらにデザパタ(GoFはいうに及ばず、アレグザンダーいうところの無名の質まで)や
アジャイル(xUnitから、TDD、XP)などの開発手法が生み出された経緯、
メタプログラミングや遅延結合(http://metatoys.org/oxymoron/oxymoron.html )、
VM高速化技術(古典ではJITからJava HotSpot、近年ではSqueak CogやSpur)、
OODBに繋がるオブジェクト永続化技術(イメージベース、GemStone)とか
いろいろ遊べて学べるSmalltalkも、PGならコモンセンスとして備えておきたい。
http://zerobase.hateblo.jp/entry/2013/02/24/015610

Smalltalkをちょっとかじってみたい人のためのチュートリアルまとめ
http://qiita.com/sumim/items/6bed17961bd57daf88a3

さすがにこれでスタートアップ、資金1億調達まで目指すのは苦行だけど^^;
https://twitter.com/takano32/status/649384263515660288
0027デフォルトの名無しさん2015/10/11(日) 10:09:35.92ID:jdhTMeIt
高野さん、Smalltalkの会社に転職したんだ。
チャレンジャーだな…
0028デフォルトの名無しさん2015/10/11(日) 10:18:19.81ID:gadIIZk0
>>25
言語処理系は情報処理の理論がそのまま実用になる数少ない分野だからね
やってることが非常に単純な割にはソフトウェア開発の重要な部分を占めるので、
技術バカの大好きな視野狭窄なクォリティ追求が許されてしまうし
0029デフォルトの名無しさん2015/10/11(日) 13:32:15.53ID:AIIBuHzT
>>23
広告クリックさせたりする事が優れたソフトウェアやサービスとは思えないからTwitterとかFacebookとかクソだね。
SVの人達もそういう考えだし。
0030デフォルトの名無しさん2015/10/11(日) 15:57:18.77ID:XJEeMP8F
>>29
やっぱり考え方が狭すぎだねw
0031デフォルトの名無しさん2015/10/11(日) 19:15:14.88ID:5ati5bYz
Rubyに関係なく、素朴な意見として、

なぜ静的型を動的言語で?
最初から静的言語を使えばいいだろ

おわり
0032デフォルトの名無しさん2015/10/11(日) 19:41:24.67ID:6jGim2k9
Pythonの型付けもそうだけど、一番はドキュメントとして型表記を利用したいんだよ。
別に一部で型を明記したところでそうでない部分との関係で対して最適化や補助は効かないけど
ドキュメントとしては価値がある。
0033デフォルトの名無しさん2015/10/11(日) 20:25:48.63ID:XJEeMP8F
例えば、current_timeという名前の変数があったとして、
そこに何型が入っているかはわからんのだよね。

処理を読めが型は推測できるが、推測して判明するまで
時間がかかるのは、可読性が低いということを意味する。

名前からは何型かわからないが、処理は特定の型
専用のコードになっている。
変数自体は動的であっても、処理自体は動的ではない。
処理が動的じゃないのであれば、型も静的でいい。
0034デフォルトの名無しさん2015/10/11(日) 20:58:32.42ID:6jGim2k9
まあRuby的には超賢いIDEができて推論した型を表示してくれるというのが理想なんだろうけどな
0035デフォルトの名無しさん2015/10/11(日) 21:18:59.86ID:VUX4VOf2
無理無理
だって、メソッドの引数の型は、呼び出し元で変数を渡してもらって始めて決定する
未だかつてどこからも呼び出されていないメソッドの引数の型は解析も無理
0036デフォルトの名無しさん2015/10/11(日) 21:48:52.37ID:gadIIZk0
それ以前にメソッドの有無すら実行してみるまで分からない
メタプログラミングを捨てずに静的チェックやるなら、
チェック時に全てのクラスの中身を一度実行してみて、
その結果できたクラスオブジェクトを解析するしかないんじゃないかな
解析する時と実行する時でクラスのコンテキストが変わるというのは、
クラスを書く人にとってはバグの温床になりそうだが
0037デフォルトの名無しさん2015/10/12(月) 03:41:12.46ID:53GvI8rG
Perlみたいにコンパイルフェーズってのを作ってればよかったのにね。

だいたいのメタプログラミングってのは、実行時にやりたいんじゃなくて
実行前にやれば十分なんだよ。

例えばある標準クラスがあったとして、そこにメソッドを
つけ加えたいなと思った時、実行時につけ加えるじゃなくて
実行前に付け加えれば十分でしょ?
0038デフォルトの名無しさん2015/10/12(月) 04:56:12.47ID:L9nzf7kh
>>35
別に完璧である必要はないじゃん
ある程度上品な書き方(MethodMissingとか動的なメソッド追加とか使わない)において
ある程度の情報が提供されればそれで十分だと思うけど
0039デフォルトの名無しさん2015/10/12(月) 09:31:45.11ID:+zms5d6G
Swiftが美しすぎる
0040デフォルトの名無しさん2015/10/12(月) 09:38:22.19ID:QcfJYyiX
Pythonには型推論して型を表示してくれる
超賢いIDE(jediとか)があるんだから、Rubyでもヨユーヨユー
0041デフォルトの名無しさん2015/10/12(月) 10:24:06.79ID:kiUfesSB
C++を使いこなす余裕があればRubyもSwiftもいらねーんだよ
おまえらの仕事は余裕のない弱者を助けることだけだ
0042デフォルトの名無しさん2015/10/12(月) 11:46:17.79ID:7BEPgWVx
C++のOOPは偽物
RubyのOOPは本物
動的なメソッド追加は本物の証
この解釈が撤回されたときC++は復活する
0043デフォルトの名無しさん2015/10/12(月) 11:47:38.50ID:lzwRwYon
>>32
従来変数名でやってたことだね
それだけのことで静的型を入れようとかいう話になるの?
0044デフォルトの名無しさん2015/10/12(月) 11:51:33.35ID:DSHcQooM
C++の静的型は本物
Rubyの静的型は偽者
って言われる日がくるかもね
0045デフォルトの名無しさん2015/10/12(月) 11:52:06.13ID:GPJRvwrY
OOPに本物とか偽物とか言ってる情弱がまだいるとは…
Rails土方、恐るべしだな
0046デフォルトの名無しさん2015/10/12(月) 12:06:39.18ID:DSHcQooM
そうそう、本物のOOPならマルチメソッドぐらい無いとね
第一引数だけを特別扱いしてレシーバとして前に出して記述するRubyのOOは偽者だよね
真のOOPならこうかけなきゃ
( obj1, obj2 ).method
もしくは
method( obj1, obj2 ) ←これで多態出来なきゃね
動的型言語の癖にこんな事もできないRubyは偽者だよ
0047デフォルトの名無しさん2015/10/12(月) 15:19:12.41ID:83Q2zR6P
Railsを日本で広めようとしてる奴らは大体腹黒いやつなきがする。

あくまでも個人的な意見ね。
0048デフォルトの名無しさん2015/10/12(月) 16:39:34.85ID:NwCMAomS
>>46
例えばJavaScriptでも
自動振り分けのラッパー噛ませた関数を出力するヘルパー作っておいて
共通プロトタイプと組み合わせて使えば、
もしくは適切な方に適切に振り分けるプロキシを共通プロトタイプにしておけば
スマートに実現できると思うけど、
Rubyでも出来るんじゃないの?
0049デフォルトの名無しさん2015/10/12(月) 17:20:55.95ID:jcvepef5
let o = {
anch:[this.tag.dt, this.infobg, is_anch(e)]
}
で
(o.anch[2])? o.anch:"";
ができるんだな
0050デフォルトの名無しさん2015/10/12(月) 17:21:47.20ID:53GvI8rG
>>48
工夫すればなんでも出来るんだよ。
例えばC言語でオブジェクト指向ができるように。

だけどそういうのは本物ではない。
0051デフォルトの名無しさん2015/10/12(月) 18:52:10.29ID:7BEPgWVx
>>50
「C言語はオブジェクト指向言語」と宣言したら嘘で偽物だが
宣言しなければ嘘でも偽物でもない

宣言することがそんなに良いことなら自分ですればいいのに
他人に広めようとしてる時点で怪しいんだよ
0052デフォルトの名無しさん2015/10/12(月) 19:02:59.91ID:DSHcQooM
つまりRuby3.0が静的型を正式に取り入れた、と宣言したのに
実物がいい加減な代物で「嘘」「偽者」だったって未来へ向けてのフリですね
0053デフォルトの名無しさん2015/10/12(月) 20:49:27.38ID:ZTa/or21
Matzの戯れ言を本気にする人間っているんだな…
Rubyのことをちょっとでも知ってるなら、ただの燃料だということはすぐ分かりそうなものなのだが…
0054デフォルトの名無しさん2015/10/12(月) 21:06:58.48ID:GPJRvwrY
>>46
少なくともケイのメッセージングOOP(が本物と言うつもりはさらさらない。為念)の考え方では
(obj1, obj2).msg なら (obj1, obj2) というタプルに対するmsgというメッセージ送信になるのでは?

そもそもこのパラダイムでは、msgというメッセージ送信によってセレクタmsgと同名のメソッドmsgが
コールされるとは限らないという仕組みにより遅延結合をユーザーに意識させるところがミソなので、
http://metatoys.org/oxymoron/oxymoron.html

マルチメソッドを持つか(メソッドのオーバーロードが可能か)否かはいうに及ばず、
メソッドが静的型を持つかといった話とは別のような。

ケイ曰わく、
「型には反対しないが、複雑さに悩まされない型システムを見たことはない。動的型付けはまだマシだ。」
http://d.hatena.ne.jp/katzchang/20080807/p2
0055デフォルトの名無しさん2015/10/12(月) 21:58:43.99ID:DSHcQooM
別に俺はマルチメソッドに静的型が必要だとは主張していないが
0056デフォルトの名無しさん2015/10/12(月) 22:01:06.33ID:lzwRwYon
Matzが静的型を導入したかったのか?
0057デフォルトの名無しさん2015/10/12(月) 22:20:18.93ID:DSHcQooM
多分本音は導入したくなさそう
静的型に対してかなりモニョってる印象
しかーし、最近のスクリプト言語はこぞって静的型を取り入れているし
流行に敏感ってことにしたいRubyとしては取り入れざるを得ないんだわ

一体今更どういう風に取り入れるかは見ものではある
静的型を導入すると当然昔からの風習にならって
「なるべく型は書くべき」、って派閥が出来るだろう
しかしそれはRubyの世界観にアンマッチになるっつーかさ
しかも、もし、ジェネリックすらないような中途半端な静的型しか導入できなかったとしたら
まともに使い物にならないものを押し付けられる
使い物にならなければ使わなければいいわけだが、
しかし型は書いたほうが良いという古くからの風習もあり、
一体どうしたものかと途方に迷う事になる
0058デフォルトの名無しさん2015/10/13(火) 02:05:16.01ID:3QE/NkoP
>>42
C++のoopはバートランド・メイヤーの流れをくむものじゃないかな。時期的にC++のが早かったとしても。
メイヤーのeiffelはあれはあれで良いものだぞ
0059デフォルトの名無しさん2015/10/13(火) 02:17:53.92ID:O9bZKJjD
>>57
途方に迷うのではなく暮れるのさ
0060デフォルトの名無しさん2015/10/13(火) 06:34:58.02ID:3LDxUoaZ
ブレてるねー
1年前にmatzが自分で動的言語信奉者だと言ってたのを聞いたことあるけど

これじゃ更に人気を落としてくんだろうね
0061デフォルトの名無しさん2015/10/13(火) 06:48:50.37ID:cMOwnvUD
>>54
そうか、マルチメソッドはそのタプルクラスのメソッドと考えることができるのか
だったら配列クラスのメソッドミッシングメソッドを賢くしてやれば実現できそうだな
0062デフォルトの名無しさん2015/10/13(火) 09:20:37.48ID:Rl12UR24
>>61
そうですね。あとはC#の拡張メソッド(実体は静的メソッド)みたいに構文糖をまぶせば
通常のメソッド呼び出し(メッセージングOOPのパラダイムならレシーバーへのメッセージ送信)の
書き方にできるはずです。

ただ、ぱっと見レシーバーに見えるオブジェクトが、実質はタプル・配列等の要素となってしまっているため、
その(あるいはそれらの)内部情報に対する当該メソッド記述中でのアクセスについては制限が加わります。
C#の拡張メソッドと同じですね。

CLOS等の総称関数のように割り切るか、従来のメソッドと同レベルの使い勝手や
メソッドのありかた(特定のクラスに内包される)にこだわるならさらなる細工が必要になるでしょう。
(Dylanがこの問題をどう解決しているかは調べてません。ごめんなさい)

あと参考まで、メッセージングOOPのパラダイムでは古典的にはダブルディスパッチというベストプラクティスパターンが
すでにあるので、構文までいじくり回してマルチメソッドやメソッドオーバーロードを実現する価値が本当にあるか
よく吟味する必要はあるのかとも思います。
0063デフォルトの名無しさん2015/10/13(火) 09:44:43.93ID:IPzu3dLL
何を言ってるんだ?
タプルに対する拡張メソッドにしたところでマルチメソッドでもなんでもないだろ
>>46
0064632015/10/13(火) 09:45:46.79ID:IPzu3dLL
すまん途中で書き込んだ
>>46が言ってるのは複数の引数の型によるディスパッチであり
>>54
0065632015/10/13(火) 09:47:48.53ID:IPzu3dLL
何度も申し訳ない
>>54は議論をすり替えているだけ
0066デフォルトの名無しさん2015/10/13(火) 11:00:06.67ID:E12GE1WX
まあ落ち着こうよ。

>>46については「本物のOOP」が指すのがケイの動的・遅延結合をモットーとするメッセージングのOOPなのか、
ストラウストラップ・メイヤー・リスコフらの抽象データ型をクラスで実現するOOPなのかをはっきりさせないと。

もっとも、前者なら>>54にあるとおりメッセージ(に含まれるセレクタ)と同名メソッドのコールを保証する義理はないし、
後者ならレシーバとかいう表現がでてくる時点で何を言っているのか意味不明になるから、どっちにしてもあれだけど。

Rubyを擁護する気はないけど、Ruby開発陣の技術力不足をすべて動的・遅延結合におっかぶせる論調はよくない。
0067デフォルトの名無しさん2015/10/13(火) 11:19:38.71ID:aIVsWkps
よく分からんけど
それが出来ることによって何がどう役立つの?
0068デフォルトの名無しさん2015/10/13(火) 11:23:22.41ID:BR4NEKph
極稀にあるパターンをわかりやすく記述できる。
0069デフォルトの名無しさん2015/10/13(火) 11:37:53.98ID:eox7qbM1
マルチメソッドが必要な理由がはっきりするまでは放っておけばいい
第一引数を特別扱いしたら偽者、というのはマルチメソッドとは関係ない
第一引数に頼らないクロージャを使って書き直すだけでOK
0070デフォルトの名無しさん2015/10/13(火) 11:58:16.93ID:LdSr9S5L
マルチメソッド自体の必要性は静的言語のオーバーロードや動的言語の醜悪な型チェックの大さを見れば明白
0071デフォルトの名無しさん2015/10/13(火) 12:10:35.89ID:WPI+iK8W
単純な対象性に対する疑問でもある
引数は0個から無限大まで幾つあってもよいはず
その中で第一引数だけ特別扱いして
しかも前に出して記述するのは対象性の観点から見てどうなのか
引数は全て等しい扱いを受けるべきでは
ここをクリアしないことにはOOPは学問になれない
単なる経験則で終わってしまう
0072デフォルトの名無しさん2015/10/13(火) 12:34:02.06ID:BR4NEKph
>>71
可読性というものはそういうことなんだよ。

コンピュータから見れば、どちらでも同じだが、
人間が見てどう感じるかが、重要。
0073デフォルトの名無しさん2015/10/13(火) 12:35:50.72ID:aIVsWkps
>>68
確かに定義においては認めるけど、使用の際には、そんなごく稀な記法を特別に使わせるのは分かりやすくないと思う
0074デフォルトの名無しさん2015/10/13(火) 14:24:13.32ID:WPI+iK8W
>>72
人間からみても何とも言えないような場合はどうするんだ?
0075デフォルトの名無しさん2015/10/13(火) 14:31:26.07ID:i1awIWf/
>>74
何と何の話?
0076デフォルトの名無しさん2015/10/13(火) 14:39:04.87ID:WPI+iK8W
何でもいいけど、例えば基本的なところで
1+2なんてどう?
Rubyは1に+2ってメッセージが飛んでくるってノリらしけど
数学的ではないしように思うし
人間的にもplus(1, 2)ってイメージなんだが
0077デフォルトの名無しさん2015/10/13(火) 15:32:13.81ID:WPI+iK8W
だいたいなんだけど、Rubyの1+2で
「1」に「2」を足しこむ機能が備わっているって解釈はどうなんだろう
「1」に「整数の1」以上の意味は要らなくない?
単なる整数の「1」や「2」をどう使うかは、演算子の「+」が決める事では?
「1」が「+2」を処理するというよりは、「+」が「1」「2」を処理するのでは?
そっちのが数学的だと思うんだが
0078デフォルトの名無しさん2015/10/13(火) 15:41:38.20ID:i1awIWf/
>>76
何を考えているのかさっぱりわからんが、

人生を思い返してみればわかる。1+2という数式は
小学校でならって体に染み付いている。

これが人間が読んだ時の可読性ということ。
可読性というのは、過去の経験から決まるものなんだよ。

例えば、1を○、2を△、+を□に置き換えて、
○□△と書いたとしても同じ意味になるんだけど、
読みにくいでしょ? そんな風に習ってないから。
0079デフォルトの名無しさん2015/10/13(火) 15:42:38.37ID:WPI+iK8W
もしくはマルチメソッド風に、
「1」と「2」が両方力を合わせて「+」を処理するってノリならまだ分かるんだけど
「1」が「+2」を処理するってのは腑に落ちないものが有るね
1+2で、「1」と「2」に格差がありすぎる
それに「+」の演算の定義は「1」が決めずに「+」自身が決めれば良いような
0080デフォルトの名無しさん2015/10/13(火) 15:44:45.88ID:WPI+iK8W
>>78
言葉が足りなかったね
表記は1+2で問題ないが、その解釈の問題
Rubyは1が+2というメッセージを処理するって解釈する
1に演算がぶら下がっている状態
単に1と2を足すという、ただそれだけの事に
それ以上の拡大解釈が必要なのかという事
0081デフォルトの名無しさん2015/10/13(火) 15:49:04.01ID:WPI+iK8W
>人生を思い返してみればわかる。1+2という数式は
>小学校でならって体に染み付いている。

全くその通りなんだよね、体に染み付いている
1+2は単に1と2を「+」という処理をするって考える
1と2は単なる数で、+は両者間の演算を定義している
ところがRubyは1が+2というメッセージを処理する、と考えることになっている
これは小学校からずっと習ってきた事と違うし不自然だね
小学校で1+2を1が+2を処理する、とは習わないだろう
0082デフォルトの名無しさん2015/10/13(火) 15:59:08.67ID:WPI+iK8W
とにかく1+2をシングルディスパッチで、1が+2というメッセージを処理する、と考えると、
「1」と「2」の格差が物凄いことになってしまう
「1」は足し算の処理をする主体そのもので、足し算の意味すら定義している
「2」は単なるデータ
ここは一つ、マルチメソッド風に、「1」「2」が共同で「+」を処理する、と考えるか
もしくは単に、「+」が「1」「2」を処理する、と考えたほうが、素直なのでは
0083デフォルトの名無しさん2015/10/13(火) 16:38:33.72ID:lCXr92CT
メッセージングのOOPというパラダイム(考え方)にいったん乗っかった以上、
obj.selector(args) を obj への selector(args) というメッセージの送信だという
解釈は曲げてはダメでしょう。たとえ小学校でそのように習わなかったとしても。
0084デフォルトの名無しさん2015/10/13(火) 16:49:10.34ID:lCXr92CT
3+4 という演算式を 3 に +4 というメッセージを送ると解釈するのが違和感あるというのはむしろ逆で、
アラン・ケイは、オブジェクトにメッセージを送るという操作ですべてを表現する世界線で
3+4 という演算も説明できるようにするには、3 に +4 というメッセージを送ると解釈すればよい
というアイデアに思い至ったわけです。

http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html
By this time most of Smalltalk's schemes had been sorted out into …あたりから
0085デフォルトの名無しさん2015/10/13(火) 17:08:12.66ID:QDO/4Imo
足す物と足される物の区別があるんだから格差があって当然じゃない?
たまたま3+4という表記に限ってはたまたま交換定義も成り立つしそう見えるかもしれないけど
0086デフォルトの名無しさん2015/10/13(火) 17:32:14.96ID:eox7qbM1
格差が悪いならpublicとprivateの格差を無くせ
情報が漏れるgetterと
情報が丸見えのHashTableを使え
multimethodTable[obj1.getType()][obj2.getType()](obj1, obj2)
0087デフォルトの名無しさん2015/10/13(火) 17:37:36.35ID:tExxK6rC
格さんが駄目なら助さんで…
0088デフォルトの名無しさん2015/10/14(水) 12:51:47.73ID:Zx/eGv5t
>>62
Dylan のマルチメソッドを調べてみましたが CLOS 同様に単なる総称関数で特別な工夫はないようです。

そこで、>>46 に質問なのですが、本物のOOPにはマルチメソッドが必要だよ派、
あるいは、第一引数だけ特別扱いはNG派としては、マルチメソッドを記述する際に
どの引数(オブジェクト)の内部情報にアクセスできるようにしたらよいと考えていますか?
あるいは総称関数のように内部情報のアクセスに関しても特別扱いはしないという立場でしょうか?
0089デフォルトの名無しさん2015/10/14(水) 13:07:10.70ID:oRHV6ndY
>>88
つまり、そういうこと
つきつめればOOは面倒な事が沢山起こる
統一理論のようなものは無い
全ては経験則
0090デフォルトの名無しさん2015/10/14(水) 17:15:12.58ID:D87FbFvB
>>89
C言語が嫌いじゃないなら、C言語を統一理論にすれば全て丸く収まる
C言語が面倒ならどこが面倒か理論的に解明してからOOやらないと砂上の楼閣になる
0091デフォルトの名無しさん2015/10/14(水) 20:06:32.48ID:EqVBJrGR
>>90
?
0092デフォルトの名無しさん2015/10/14(水) 21:17:42.32ID:dBNBVrr+
みんなそんなに暇じゃないよ
0093デフォルトの名無しさん2015/10/14(水) 21:25:49.86ID:oRHV6ndY
まぁ真のOOPにマルチメソッドが必要かどうかはおいておいて
第一引数だけ特別扱いするのは対称性の観点から気持ち悪いのはおいておいて
ともかく当面は
RubyにC#並みの静的型のシステムが組み込まれるかどうかだな
当たり前だけど、中途半端な静的型は、有るだけ邪魔で使い物にならない
ジェネリックも何もなくてC言語程度の静的型の機能しか導入されなかったら
今の時代に使い物にならないし、
当時そういう柔軟性の無いC言語の静的型システムが不便に感じたから、こその
Rubyだったわけだから、今更C言語程度の静的型ではダメなのは当たり前、何にもならない
やはり今更静的型を導入するなら動的型言語に負けず劣らずな柔軟性をもった?
C#レベルのを導入しない事には、使い物にならないだろう
それに、中途半端な静的型を実装したら、他の最新の静的型言語と比べられて、
静的型に関して優劣を付けられ、Rubyが不利な立場になってしまうかもしれない
もし、動的型言語で柔軟性が売りのはずのRubyが、静的型の機能や柔軟性で
あの堅物のC++にも劣っていたとしたら、良い笑いものになってしまう
なので、最低限ジェネリックと型推論と、できれば共変性と反変性ぐらいは必要かと
0094デフォルトの名無しさん2015/10/14(水) 21:27:31.95ID:RZLA+pyr
第一引数だけ特別扱いするのは対称性の観点から気持ち悪くても
英語の文法の観点から見れば、極自然なことです。
0095デフォルトの名無しさん2015/10/14(水) 21:29:58.48ID:RRpWZ3GK
日本語でプログラミングしたい派からしても、第二引数以降を前に持ってきて欲しい
0096デフォルトの名無しさん2015/10/14(水) 21:35:31.38ID:fHrqAp5M
プログラミングにわざわざ日本語を持ち込むバカ居るんだな。

プログラムは以下に車輪の再発明を避けて生産性を上げるか、人に再利用しやすいコードを書くか、バグを減らせるか。

こういったことが核になる事なのに、その核をダメにする要素をわざわざ自分の怠慢と劣等遺伝子で持ち込む理由がわからない。

そんな事する位ならプログラミングしない方が世のためになるんじゃ無いかな。
0097デフォルトの名無しさん2015/10/14(水) 21:40:23.30ID:aRVLWehY
プログラミングはプログラミングセンスの欠片もない連中を統率して
なるべくマシなクソを作り上げるゲームだよ
0098デフォルトの名無しさん2015/10/14(水) 21:42:31.55ID:oRHV6ndY
>>94
英語の文法は必ずオブジェクトを一つとると決まっているわけではないと思いますが、どうでしょうかね

第3文型は SVO では、確かにオブジェクトは一つですのでシングルディスパッチですね
プログラミングでは、Cもオブジェクトと考えても良さそうなので、
第2文型の SVC もシングルディスパッチでしょうかね
第1文型の SV はただの関数、静的メソッドですかね
しかし、
第4文型の SVOO はオブジェクトを二つとりますし、これはマルチメソッドが良いんでしょうかね
第5文型の SVOC はOを主体としたシングルディスパッチと捉えるか
Cもオブジェクトと考えてマルチメソッドと捕らえるかは、人によるんですかね

どちらにしても英語の語順は、動詞→目的語、の並びなので
func( arg );のスタイルは英語の語感に合ってるんですよね
obj.method()は寧ろ日本語的な並びですね、〜を〜する っていう
0099デフォルトの名無しさん2015/10/14(水) 22:33:52.89ID:aRVLWehY
逆だろ
主語と動詞を明確に意識するのはいかにも英語的な感覚だ
引数で述語を修飾しているだけのfunc(arg)の方がむしろ日本語的
0100デフォルトの名無しさん2015/10/14(水) 22:47:46.19ID:JkkT4x6h
>>98
アラン・ケイの「『ソフトウェア工学』は矛盾語法か?」http://metatoys.org/oxymoron/oxymoron.html
にある、「新しいアイデアを学ぶとはどういう事か?」あたりと食い違ったことを改めてここで主張する理由は?
いちおう彼は、OOPの「obj msg」という記法を発案し、英語を母国語とする人なのだけれども…
0101デフォルトの名無しさん2015/10/14(水) 22:48:09.97ID:D87FbFvB
自己責任論の時代に他人を統率するゲームって
■ このスレッドは過去ログ倉庫に格納されています