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/
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」という記法を発案し、英語を母国語とする人なのだけれども…
101 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 22:48:09.97 ID:D87FbFvB.net] 自己責任論の時代に他人を統率するゲームって
102 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 23:12:04.10 ID:oRHV6ndY.net] >>99 それはないわ func(arg)はどう見ても命令文じゃないですか 命令を並べて書いておけばバッチ処理してくれるっていう 手続き型の基本じゃ無いですかね この場合命令する相手はコンピュータなので主語は分かりきっているから 書く必要ないんです ちなみにobj.method()のobjは主語じゃなくて、どちらかと言うと目的語じゃないですかね SVOのOってObjectのOでしょ、一応 オブジェクト指向って名前だし、主語指向って言いませんし
103 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 00:12:43.73 ID:MzOq+ouz.net] >>98 ひゃーこれ分かりやすい。 なるほどオブジェクト指向の文法ってそうだわと膝を打ったので、思わず外野からコメント
104 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 06:45:48.10 ID:T2FVuNbU.net] 上から目線のプログラマが多いね ユーザのために便利な道具を作る立場なんだけど、勘違いしてるダメな奴
105 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 07:20:39.98 ID:7x3qta5X.net] ×ユーザのために便利な道具を作る ○ユーザーの業務を人質に取って搾取する 便利な道具を作りたかったら特定のユーザーからは距離をとることだ
106 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 07:22:51.89 ID:lgLg0FTk.net] >>103 こういうのが毛の壁の関数型本とかを「わかりやすい!」とか絶賛するんだろうな…
107 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 07:41:39.67 ID:7x3qta5X.net] >>100 でもはっきり書かれているように、 一般的にオブジェクト指向のレシーバはsubjectだね 奴等の脳味噌には主語と動詞が絶対的な存在として君臨している 主語のないジャパニーズの思考回路で理解しようとしてはいけない
108 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 07:54:59.40 ID:DZU/K3fq.net] >>102 俺もオブジェクトは主語に喩える方がスッキリすると思う どうせ比喩の世界だから「オブジェクト」指向の字面に拘る必要はない そう言えば、むかしエージェント指向なんてのもあったね
109 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 08:12:38.93 ID:UBpGI0vG.net] ネイティブの奴等は常に主語と動詞がセットでないと気が狂うらしいし受動的な表現を嫌うからな レシーバは普通に主語だよ
110 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 09:14:21.36 ID:gCkyElll.net] Smalltalkのセレクタ見てたら主語はともかく動詞ってのはどうかと思うけどな 動詞のようなものもあるけど他の多く(?)は何と言うんだろなこういうの 例: www.gnu.org/software/smalltalk/manual-base/gst-base.html#Array add: value ←動詞 atAll: keyCollection ←atって何だっけ? copyFrom: start to: stop ↑こういう複数のやつだとどう考える?fromとtoは無視して動詞と言い張る? value ↑こういうのはメソッドじゃないから動詞じゃなくていいとする? それとも都合よく(get value)みたいなのの省略だと考える?
111 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 09:50:58.72 ID:BaxKs2Tu.net] >>110 >>98 を全否定しているわけではないのだから、まあ、落ち着こうよ。 Object は Object でも、OOPのOは文法要素の目的語であるところのOとは別だというだけ。 とりあえずまず、発案者のアラン・ケイの言う>>100 の参照先をベースに話を進めないか? もしどうしても Smalltalkをベースにしたいなら、やはり彼の書いた The Early History of Smalltalk gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html の 「By this time most of Smalltalk’s schemes had been sorted out …」のあたりからがいいだろう。 Smalltalk はちょっとかじったことがあるから、彼の文章でわかりにくいところがあったら訊いてください。
112 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 10:10:59.25 ID:YhiK7HuV.net] Smalltalk系の「オブジェクト」とは「ソースではない」という意味だ ソースをemacsで書いてコンパイルする言語とは違う emacsがなくても動的にメソッドを追加したりできる
113 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 10:17:49.04 ID:BaxKs2Tu.net] >>98 派がリンク先にアクセスしたら死ぬ病気の人だといけないので、>>100 の参照先をコピペしておくよ。 ▼新しいアイデアを学ぶとはどういう事か? このような柔軟な機能はどれだけ複雑である必要があるだろうか? 文法上は決して複雑で無くてもよい。 なじみ深い英語の語順である主語、動詞、目的語(よく前置詞や、たまに暗黙の主語を伴う)があれば 全く十分だ。オブジェクト指向の言い方で言うと、主語はメッセージのレシーバであり、文の残りはメッセージだ (ここでは「動詞」を強調※して書く)。これで次のような読みやすい形式になる。(※強調は _ でくくった) 3 ‘this is some text’ pen _up_ 3 _+_ 4 3 _*_ ( 4 _+_ 5 ) car _forward by_ 5 {1 2 3 4 5 6 7} _collect_ [ n | n _odd_ ] _Repeat_ (1 _to_ 100 _by_ 2) _do_ [ ******* ] そして大切なのは、この単純な決まりに従って必要なだけ新しく読みやすい記法を作る事が出来る事だ。 これは、ユーザが文法と意味の関係を一つだけ念頭に置いておけば良い事を意味する。 レシーバ メッセージ -- レシーバが意味を把握している事を意味する。 という事で、オブジェクトはただネットワーク上のピア・ピア・サーバのように考えられ、使われると考える。 (これは偶然ではなく、六十年代後期におけるARPAnet から Internet にかけての開発にさかのぼる アイデアを起源とする)。 従って、動的なオブジェクト指向プログラミングを行うという事は通信しあうオブジェクトでシステムを設計し 構築する事になる。もしもわたしたちのオブジェクトシステムの内部がそれ自体オブジェクトから出来ている とすれば、必要な構造上の知識は全て知っている事になる。
114 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 10:35:30.54 ID:a474rjS3.net] 確かに、本当に通信し合うオブジェクトを扱うErlangは大規模なサービスで使われてるね 昔はマイナーだったけど、やっぱり本物は残るんだね 一方ニセモノのオブジェクト指向のSmalltalkは死んだね
115 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 10:56:29.02 ID:YhiK7HuV.net] Smalltalkはコネがない 大抵の言語はC言語のコネがある ErlangはPrologやSQLのコネがある?
116 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 11:19:27.13 ID:BaxKs2Tu.net] >>115 現在よく使われ名前が知られた言語等との“コネ”ということなら、Smalltalkにはないはずですよ。 なにせ作られたのが、ここでコネ元として挙げられているC言語と同時期の1972年頃ですから。 強いて挙げればSIMULA67、LISP、Logoですが、これらが今よく知られ使われているかというと 難しいところです。
117 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 11:31:04.82 ID:BaxKs2Tu.net] >>114 ちょっとググればわかりますが、Smalltalkはまだ死んではいないようですよ。 Squeakやそこから派生したPharoなどのコミュニティは比較的活発ですし、 ゼロックス謹製のSmalltalk-80の直系であるCincom社のSmalltalkでVisualWorksという 商用の処理系もあるようです。ファンお手製のGUIを持たない変わり種のGNU Smalltalkや altJSとしてのAmber Smalltalkもあるようです。 もっともアラン・ケイはもうすでにSmalltalkへの興味を失っていて、Rubyの生みの親のMatzにも そんなことを漏らしていたようで、Smalltalk(er)を目の上のこぶみたいに煙たがるMatzが大喜びする 一幕もあったようです。www.rubyist.net/~matz/20060608.html ちなみにアラン・ケイはGUI付きのOSを2万行程度で記述できる次の言語の実験に取りかかっているようです。 「Smalltalk 勉強会@名古屋 STEPS プロジェクトご紹介」 d.hatena.ne.jp/propella/20091219/p1 「STEPS プロジェクトご紹介その2」 d.hatena.ne.jp/propella/20111022/p1
118 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 11:50:07.59 ID:N9hEQVX6.net] > GUI付きのOSを2万行程度で記述できる次の言語の OSを作る人は極僅かなんだから、別の研究すればいいのに。 にしても、OSは行数2万行です。ただし言語にドライバが含まれています。 とかそういう落ちだったりしてw
119 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 12:03:22.06 ID:BaxKs2Tu.net] >>118 > OSを作る人は極僅かなんだから、別の研究すればいいのに。 OSを含め、自分たちが利用するソフトウエアの仕組みを知り、自由に改変・拡張でき、 できれば最初から作り上げることすらできる世界が彼の理想であり、主張するコンピューターリタラシーな わけですから、そこはDynabook、その暫定OSとしてのSmalltalkのときからぶれていませんね。 > ただし言語にドライバが含まれています。とかそういう落ちだったりしてw リンク先を読んでもらえばわかりますが(他人のリンク先読むと死ぬ病気の人?^^;)、 ミソはPEGベースのパーザーでDSLを手軽に作れるようにして、階層的にコードの抽象度を上げるところらしいです。
120 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 12:31:43.88 ID:BaxKs2Tu.net] >>112 > Smalltalk系の「オブジェクト」とは「ソースではない」という意味 気になったのでちょっと調べてみましたが、Smalltalk のオブジェクトは、SIMULA67の言語機能としての オブジェクトから来ていて、そのSIMULA67のオブジェクトは、ホーアのレコード・オブジェクト archive.computerhistory.org/resources/text/knuth_don_x4100/PDF_index/k-9-pdf/k-9-u2293-Record-Handling-Hoare.pdf [PDF注意] 1. Basic Concepts 1.1 Objects and Records. A fundamental feature of our understanding of the world is that we organise our experience as a number of distinct objects (tables and chairs, blank loans and algebraic expressions, plynominals and persons, transistors and triangles, etc); and our thought, language, and actions abased on the dsignation, description, and manipulation of these objects, either indivisually or in relationship with other objects. のオブジェクトから来ているので、C言語とかのオブジェクトの意味合いよりは、文字通り「物」としての オブジェクトに近いみたいですね。
121 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 12:46:45.96 ID:N9hEQVX6.net] >>119 > ミソはPEGベースのパーザーでDSLを手軽に作れるようにして、階層的にコードの抽象度を上げるところらしいです。 いえ、そんなのはどうでもよくて、ドライバを誰が作るのかって話ですね。 ドライバの行数はOSに含まれています。 あと言語が多くのライブラリを提供するのであれば、 そりゃOSの行数は減るでしょう。
122 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 12:53:29.51 ID:YhiK7HuV.net] >>120 we organise our experience as objects and language オブジェクト != 言語 という前提があるよね
123 名前:110 mailto:sage [2015/10/15(木) 13:23:04.01 ID:E/Ij5YUU.net] >>111 > >>98 を全否定しているわけではないのだから、まあ、落ち着こうよ。 > Object は Object でも、OOPのOは文法要素の目的語であるところのOとは別だというだけ。 なんか人違いしてない?>>98 を否定もなにも 俺はむしろ目的語のOのほうがなじみが無いんだが かつてぼんやりobj.methodを主語+動詞みたいに考えてた けど今はobj.methodはやっぱ単にobj+methodだなって思うだけ あえて言うならobjが主語ってのはまだわかるが…ってのが>>110
124 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 17:17:29.28 ID:BaxKs2Tu.net] >>123 それは失礼いたしました。 唐突に Smalltalk のコードをひっぱり出してきて疑問符を連発されていたので てっきり >>98 派がファビョってきたのかと勘違いしました。ごめんなさい。
125 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 17:25:35.28 ID:BaxKs2Tu.net] ちなみに念のため、アラン・ケイはメッセージ式 rcvr msg の msg が動詞でなければならないとは ひとことも言っていないと思いますよ(>>113 )。SVO の S を rvcr、VO 以降を msg に当てはめると すっきり書けて読みやすい、というような趣旨のことはいっていますが… ですから、メッセージが atAll: keyCollection でも copyFrom: start to: stop でも value でも、必ずしも動詞のみでなくても、さらに動詞が含まれなくてもかまわないと思います。
126 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 17:35:42.93 ID:BaxKs2Tu.net] >>125 メソッド名をどのようにしたらよいかという観点からは、ケント・ベックがいろいろと試行錯誤しているので 興味のある向きは彼の著作を読んでみると面白いかと思います。 「ケント・ベックのSmalltalkベストプラクティス・パターン―シンプル・デザインへの宝石集」 www.amazon.co.jp/dp/4894717549 同書原書のドラフト 「Smalltalk Best Practice Patterns Volume 1: Coding」 stephane.ducasse.free.fr/FreeBooks/BestSmalltalkPractices/Draft-Smalltalk%20Best%20Practice%20Patterns%20Kent%20Beck.pdf [PDF注意] 同書をJava向けに書き直したもの 「実装パターン」 www.amazon.co.jp/dp/4894712873
127 名前:110 mailto:sage [2015/10/15(木) 18:47:55.64 ID:USDIK8mq.net] >>125 > ですから、メッセージが atAll: keyCollection でも copyFrom: start to: stop でも > value でも、必ずしも動詞のみでなくても、さらに動詞が含まれなくてもかまわないと思います。 うん。メッセージ、という表現だけで十分だと思う 英文法をモデルにするより巧妙な抽象化だと思う そこにどんな品詞が来たって平気だし 実際すでに来ちゃってるんじゃないのかな obj.methodのmethod部分にすらも
128 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 19:45:08.84 ID:whFEoHyO.net] アランケイの妄言なんかどうでも良いだろう 普通メソッド名は動詞にすることが多いんだから、動詞的な何かでよいだろう 実際に実行するわけだからイメージと合う ところで実際に実行するのはコンピュータなのでオブジェクトを主語に見立てる必要性はまるで無い 「オブジェクトが実行する」と考え直すことで、何か問題が解決されるわけでもないし、 静的メソッドやC/C++に見られるような何にも属さない普通の関数は、 オブジェクトが無いのに、一体誰が実行していると考えればよいのか? という新たな問題を生み出すだけなので 単純に、実行するのはコンピュータでオブジェクトが実行する内容を知っている とでも考えておけばよいだろう 実際のコンピュータの動作に則した考え方なので、破綻が無い
129 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 19:57:15.22 ID:whFEoHyO.net] オブジェクト指向はオブジェクトが自身の振る舞いを知っている、という考え方をする 実際に振る舞いを実行するのはコンピュータとかCPUとかスレッドとかの外的なもので問題なく 単にオブジェクトは自分の振る舞いを知っていさえすればよい
130 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 19:58:24.13 ID:J9V5fg8t.net] uyが昔書いたrubyのOSはコア部分2000行です 2万? バカには無理
131 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 20:45:22.36 ID:J9V5fg8t.net] PHP7が従来のPHPの2倍速になってるらしいけど 他のLLが速度そのままなら今って速度的にはPHPが一番速いんじゃ? 執拗にrubyを回避してPHPばかり高速化させてる池沼エンジニアたちの正体って何なの?
132 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 20:56:47.79 ID:6DA7kr5U.net] >>130 uyってまだいたのか
133 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 21:12:30.81 ID:J9V5fg8t.net] まだいたよ 自分がプログラミングの勉強しているときに 散々お前らが間違った知識を2chに垂れ流していたせいで プログラマクラスタの勝ち組ではなく 世界全体クラスタの勝ち組になりつつある uyにはプログラミングをファッションとして行う程度の余裕があるのです
134 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 21:15:13.49 ID:28aQIEIe.net] >遠隔操作で縦列駐車も、三菱電機が自動運転システム 三菱電機が電機メーカーならではの自動運転を実現しました >自動運転技術に電機メーカーも参入、「未来の車」課題は? https://youtu.be/KJp_gCLCJHU 三菱とかトヨタとかGoogleとか自動運転テクノロジーに使われるプログラミング言語ってやっぱり組み込みだからC言語とかなのかな? まあこういうのってソフトよりハード技術の方がより重要なんだろうけど
135 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 21:16:55.47 ID:YhiK7HuV.net] >>129 オブジェクトは自身の振る舞いを知っている 関数も自身の振る舞いを知っている オブジェクト指向は「関数は低レベル」という考え方をする 高レベル関数とか発明したらキャラが被るから関数はあくまで低レベル
136 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 21:19:09.27 ID:whFEoHyO.net] それがなにか?
137 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 21:30:07.99 ID:N9hEQVX6.net] > オブジェクトは自身の振る舞いを知っている 果たしてそうだろうか? 例えば、紙があったとする。 紙は自分の振る舞いを知っているのだろうか? 水に濡らすと→柔らかくなる 火をつけると→燃える 針で挿すと→穴が空く 折り曲げると→紙飛行機になる 違う折り方をすると→兜になる これらはオブジェクト自身が知っていることなのだろうか?
138 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 21:40:36.50 ID:7x3qta5X.net] >>137 少なくともオブジェクト自身の性質に由来する現象だろう 意識の有無は無生物主語だらけの英語ワールドでは問題にならない
139 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 21:57:23.96 ID:YhiK7HuV.net] >>137 振る舞いへのポインタを保持とか、低レベルな言葉を使ったら死ぬ病気なので
140 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 22:01:06.60 ID:whFEoHyO.net] いやむしろ>>137 は有る程度正しい考えなのでは? コンピュータやプログラミングの基本は数値計算だけど、 足し算を考えた時、例えば1+2で、1や2自身は足し算についてのルールを知っている必要が有るのだろうか +という演算子が足し算の性質を知っていて、1や2に適用した結果、足し算の法がうまれ、 自身と他の整数の間に関係性が生まれ、整数の性質が浮かび上がるのではないだろうか ある物の性質というのはいつも相対的で、その物そのものだけで勝手に決定されるものではなく、 他の物との相互作用の結果として、周りから与えられるものではないだろうか 例えばuyが自分自身の性質を決定するために 「世界全体クラスタの勝ち組になりつつある」と明言したとして(>>133 )、それに何の意味が有るだろうか uyの社会的立ち位置は、uyが決める事ではなく、他の人との相互作用の結果として 周りから、社会から、与えられるものではないだろうか しかし、オブジェクト指向では >オブジェクトは自身の振る舞いを知っている と考えるのが前提なので、今回はあえて言及しなかった マルチメソッドではもうちょっと違った見方も出来ると思うが殆ど採用されてないね
141 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 22:05:02.72 ID:N9hEQVX6.net] >>138 確かに分子、原子レベルで見たら、 オブジェクト自身の性質だろう。 だが、オブジェクト自身の性質にもとづき 物理法則に従って、変化は起きる。 この物理法則というのは、オブジェクト自身が持っているものだろうか? 例えば、質量はオブジェクトの性質だろうが、 そこには速さを加えた時の運動エネルギー、 つまり「物体の運動エネルギーは、物体の質量と速さの二乗に比例する」 という法則はオブジェクトが持つべきものだろうか?
142 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 22:14:14.69 ID:whFEoHyO.net] マルチメソッドがあれば、>>141 みたいな人も納得させられるオブジェクトの理論体系が出来上がるんだが これはこれでカプセル化や組み合わせ爆発や実行速度なんかで問題が有るんだよね だから殆どの言語がシングルディスパッチというのもあるし 日本人は農耕民族で土地とか利権に拘る縦割り行政主義だから、そのほうが分かりやすいってのもある >物体の運動エネルギーは、物体の質量と速さの二乗に比例する これはつまり物理法則とかの法のようなものが働いて 相対的にオブジェクトの性質を決定付けているという考え方 法のようなものは手続き型言語では関数なので マルチメソッドで method( obj1, obj2 ) として、obj1とobj2の間の関係を決定する事ができれば、 他者との関係に基づいて性質が決定するっていうノリが実現できるので >>141 のような人も納得なわけだ こういうのを機能主義という 機能=function=関数 だからね
143 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 22:17:44.71 ID:whFEoHyO.net] しかしそういった言葉遊びはともかく、 当面はRuby3.0にどういった形でどの程度のデキの静的型が導入されるかだな どう考えてもうまくいきそうに無いが、matzがやるといっている以上はやるのだろう
144 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 22:28:40.59 ID:gTKnbHZq.net] > matzがやるといっている以上はやるのだろう え…Matzがやると言ったことで放棄されたor放置されているものはかなりあるぞ… 「オープンソースで前に進むためには燃料が必要」と言ってるぐらいなんだから、 ただの燃料ぐらいに思っておかないと
145 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 23:06:58.05 ID:J9V5fg8t.net] 型を入れるコンセプトが 速度を上げる事なのか コードセキュリティの為なのかだよ 後者だったらいらね
146 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 23:33:19.63 ID:mn0BrUjG.net] 速度は結局エンジンに書けた労力しだいとmatzは言ってる。 動的型でもV8は速いし、そのV8の資産と経験を十分に活かせるはずのDartは 結局当初の目的の2倍高速を実現できずに敗れた。 そして何よりも、機械が出来ることは全部機械にやらせて人間は楽をすべきという Rubyのポリシー上、多少早くなるからという理由で型を入れるということは絶対にしない。
147 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 23:49:48.72 ID:XerH+8kv.net] >>145 速度を上げるためという名目でやるが 実際に一番有効活用できるのは可読性の向上だろう。 コメントで型を書くよりも、コードで型を書いたほうが 同期が取れるし正確になる。
148 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 23:54:07.96 ID:whFEoHyO.net] 機械ができることは全部機械にやらせて人間は楽すべき、なレベルで 型チェックをコンパイラに任せつつ、柔軟性を確保するには、 ジェネリックなどの機能が無いと上手く機能しないわけだが、用意できるのか心配だね C#も割りと早いバージョンで実装してたし 結局Javaもジェネリックを導入したし 静的型には必要な代物なのだろう C言語レベルの柔軟性の無い静的型に不満があってRubyを動的型にしたわけだから 今更C言語レベルの柔軟性の無い静的型を導入したら最早意味が分からないことになるしな
149 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 00:05:31.68 ID:N+EJJaaq.net] 静的型の観点から言えば、型はなるべく書くべきってことになるし Rubyに静的型が導入されたら、やっぱり折角導入して、そういう機能があるわけだから 可読性や安全のためにも型はなるべく書くべきって事になると思うんだけど そういう要求に答えつつ、今までのRubyの世界観も維持するためには 相当柔軟性の高い凝った静的型システムが必要だと思うんだけど どういうものを出してくるか楽しみでは有る 少なくともジェネリックは欲しいところではある
150 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 00:15:13.00 ID:VBzgHbv/.net] いまごろになって静的型を入れるんだから、 C#等から古くさいジェネリクスをパクるより Haskell等から型クラスをパクってほしい
151 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 00:28:18.89 ID:+z0qI3+p.net] 速度を上げたいだけならprivateメンバのみ静的型という手があるが
152 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 07:20:28.43 ID:EA3T5rKJ.net] 自己満足の議論だね
153 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 07:24:30.36 ID:yoBqthc9.net] Smalltalkに静的型チェックを導入したStrongtalkは速かったが、あれの速さは 後にJava HotSpotやJSのV8で使われた爆速のVM技術を彼らが持ってたからで 静的型チェックの有無とは無関係だった。 今のRuby開発陣に、機能を削らずにRubyをこれ以上速くするのは無理じゃないかな。 まして、型推論なんて機能を追加した日にゃ、再び爆遅処理系に後戻りするのは必至。
154 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 07:26:41.14 ID:pM+jfY6O.net] Rubyの問題はクラスの実装方法にあるので、 静的解析の可能な仕様に変更するならそれはもはやRubyと全く互換性のない別言語 従って「Rubyに静的型を導入」という前提は無意味である はい終了
155 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 09:21:29.48 ID:Wb9pxNM+.net] 静的型付と静的解析は関連はしているが必要・十分の関係ではないでしょ。
156 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 13:17:02.59 ID:3DK9u+XT.net] おっRuby談義熱くなってきたね やっぱこうでなくっちゃね、なんせ唯一無二の世界で通用してる国産言語なのだからさ
157 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 13:30:03.77 ID:l04muiBk.net] 果たして通用しているんだろうか?
158 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 16:04:11.56 ID:4XmsRPEG.net] 作業効率化において現状これに勝てる言語はまだない 何の言語で開発するにしても必ずrubyは連れ歩く まさかこのスレでmakefile使ってる奴なんていないよな?
159 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 16:16:40.86 ID:l04muiBk.net] makefileも使ってる(正確にはあるだけど)よ? このスレが対象にしてる言語だけじゃ仕事にならないカテゴリなんでね
160 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 21:33:20.74 ID:+G3m5iUJ.net] githubのatom有能杉内? 今日terapadを窓から投げ捨ててきたよ
161 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 21:44:24.38 ID:pM+jfY6O.net] さすがにそれはatomが特に有能というよりまともなプログラミング用エディタを使ったことがないだけでは
162 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 21:57:07.09 ID:ZoTRSHay.net] まともなプログラミング用エディタというのは デフォルトでプログラミング用に最適化された エディタであって欲しい。
163 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 22:22:34.47 ID:C0FkHDSz.net] 普通に考えたらEmacsかViの二択だよなぁ
164 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 22:35:29.05 ID:ZoTRSHay.net] EmacsもViもキーバインドが特殊すぎて。
165 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 22:37:30.93 ID:C0FkHDSz.net] >>164 それだけテキスト編集に特化してるんだよ つまり慣れれば最強ってこと
166 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 22:44:20.85 ID:f/Epc6uW.net] >>161 atomが良いとか好きとか普通にいえばいいのに、有能とか違う意味の言葉を使ってしまう そういう現象もあるらしい
167 名前:デフォルトの名無しさん mailto:sage [2015/10/17(土) 00:02:19.39 ID:mzjdQH44.net] >>165 それは違う。 viは開発者が当時使っていたキーボードにカーソルキーがなくて 代わりにjkhlに割り当てられていただけ emacsは単なるアルファベットの頭文字 配置に意味があるわけじゃない。
168 名前:デフォルトの名無しさん mailto:sage [2015/10/17(土) 01:00:49.82 ID:OT5GhlDm.net] 今の配置を変えればもっと良くなるか悪くなる 悪くなったら元に戻せばいいだけなので必然的にメリットしかない これは偶然ではない
169 名前:デフォルトの名無しさん mailto:sage [2015/10/17(土) 01:19:12.33 ID:kV08E+NU.net] vi好きです。他のエディタを使う事が出来ないカラダになってしまいました
170 名前:デフォルトの名無しさん mailto:sage [2015/10/17(土) 01:43:03.31 ID:97BJbcDl.net] sublimetext一択でそ
171 名前:デフォルトの名無しさん mailto:sage [2015/10/17(土) 01:44:43.56 ID:FN3G7dO/.net] vimと普通のwinメモ帳系のエディタだな emacsはメモ帳系が使えなくなって仕事に支障をきたすのでやめた
172 名前:デフォルトの名無しさん mailto:sage [2015/10/17(土) 10:08:12.92 ID:OT5GhlDm.net] 問題があるとすれば、デフォルトより良い設定を自分だけの秘密にするのは何故か その設定が良いという証拠が見えないから 証拠を見せるには初期設定から全てやり直して見せるしかない つまり、証拠はないけど良いってこと
173 名前:デフォルトの名無しさん mailto:sage [2015/10/17(土) 10:54:12.76 ID:6bVjpFvg.net] 今度はエディタの話か ひとそれぞれって答えが妥当なものばかり
174 名前:デフォルトの名無しさん mailto:sage [2015/10/17(土) 11:25:24.16 ID:KBdUYWvy.net] 熟練者にとっては人それぞれでいいんだよ。 自由にカスタマイズすればいい。 初心者の取っ掛かり、一番初めのスタートラインだけは 高い位置(つまりカスタマイズ無しでも使いやすい)で 共通化してくれ。
175 名前:デフォルトの名無しさん mailto:sage [2015/10/17(土) 11:27:44.54 ID:u6HpNLYA.net] >>174 EmacsもViもこれだけ普及してしまった以上、もういまさら無理だよ