前スレ
オブジェクト指向って自然な文法だな 2
http://echo.2ch.net/test/read.cgi/tech/1490506257/
オブジェクト指向って自然な文法だな 3 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
2017/04/02(日) 16:30:38.65ID:n7h/bBRg
2017/04/02(日) 16:45:28.24ID:n7h/bBRg
C 言語によるオブジェクト記述法 COOL ver.2
http://www.sage-p.com/process/cool.htm
http://www.sage-p.com/process/cool.htm
2017/04/02(日) 17:00:47.26ID:n7h/bBRg
モダンC言語プログラミング
http://ascii.asciimw.jp/books/books/detail/978-4-04-891309-6.shtml
統合開発環境、デザインパターン、エクストリーム・プログラミング、
テスト駆動開発、リファクタリング、継続的インテグレーションの活用
第3章 C言語とオブジェクト指向
3.1 概要
3.2 Cのモジュール化とオブジェクト指向
3.3 まとめ
第4章 C言語とデザインパターン
4.1 ステートパターン(State)
4.2 テンプレートメソッドパターン(Template)
4.3 オブザーバパターン(Observer)
4.4 チェインオブレスポンシビリティパターン(Chain of responsibility)
4.5 ビジターパターン(Visitor)
4.6 まとめ
第5章 C言語とリファクタリング
5.1 概要
5.2 テスト駆動開発
5.3 TDD入門編
5.4 リファクタリング
5.5 TDD実践編
5.6 まとめ
第6章 継続的インテグレーションとデプロイ
6.1 概要
6.2 継続的インテグレーションの前提
6.3 CIサーバの導入
6.4 CI入門編
6.5 メモリ破壊のバグと戦う
6.6 CI実践編
6.7 まとめ
http://ascii.asciimw.jp/books/books/detail/978-4-04-891309-6.shtml
統合開発環境、デザインパターン、エクストリーム・プログラミング、
テスト駆動開発、リファクタリング、継続的インテグレーションの活用
第3章 C言語とオブジェクト指向
3.1 概要
3.2 Cのモジュール化とオブジェクト指向
3.3 まとめ
第4章 C言語とデザインパターン
4.1 ステートパターン(State)
4.2 テンプレートメソッドパターン(Template)
4.3 オブザーバパターン(Observer)
4.4 チェインオブレスポンシビリティパターン(Chain of responsibility)
4.5 ビジターパターン(Visitor)
4.6 まとめ
第5章 C言語とリファクタリング
5.1 概要
5.2 テスト駆動開発
5.3 TDD入門編
5.4 リファクタリング
5.5 TDD実践編
5.6 まとめ
第6章 継続的インテグレーションとデプロイ
6.1 概要
6.2 継続的インテグレーションの前提
6.3 CIサーバの導入
6.4 CI入門編
6.5 メモリ破壊のバグと戦う
6.6 CI実践編
6.7 まとめ
2017/04/02(日) 17:02:31.63ID:n7h/bBRg
https://teratail.com/questions/37674
以前、Linuxのカーネルを読んだ時、オブジェクト指向的なプログラムされているなと思ったことが有ります。
データと関数ポインタをセットにしているイメージですね。(仮想関数的なテクニックだったように思います。)
以前、Linuxのカーネルを読んだ時、オブジェクト指向的なプログラムされているなと思ったことが有ります。
データと関数ポインタをセットにしているイメージですね。(仮想関数的なテクニックだったように思います。)
2017/04/02(日) 17:06:49.50ID:n7h/bBRg
Linuxシステムプログラミング - 60 ページ - Google ブック検索結果
https://books.google.co.jp/books?isbn=4873113628
> Linux のすべてのフアイルシステムの基本となる共通フアイルモデル
> 〈 c 。 mm 。 n 血 em 。 de ー)を導入し、抽象化を図っています。共通ファイルモデルでは、
> 関数ポインタやオブジェクト指向的な考え方†を採用したフレームワークを提供し、フアイル
https://books.google.co.jp/books?isbn=4873113628
> Linux のすべてのフアイルシステムの基本となる共通フアイルモデル
> 〈 c 。 mm 。 n 血 em 。 de ー)を導入し、抽象化を図っています。共通ファイルモデルでは、
> 関数ポインタやオブジェクト指向的な考え方†を採用したフレームワークを提供し、フアイル
2017/04/02(日) 17:52:12.44ID:KLExlLIQ
●ドア設計問題 (出典は初代スレ)
http://echo.2ch.net/test/read.cgi/tech/1488928012/422-423
http://echo.2ch.net/test/read.cgi/tech/1488928012/577-578
1 下記機能をオプションとして持つドアを設計せよ
(a)ドアストッパー
(b)ドアクローザー
(c)ドアの向こう側を目視できるガラス
(d)内部から外部の一方通行のみ目視できるのぞき穴
2. 1.で行ったクラス設計を破壊せずに下記性質を追加せよ
(e)異なる耐火性
(f)異なる開閉重量
(g)鍵がついており、サムターンか電子錠である
(h)異なる遮音性
(i)開き方は右開き左開き、内開き外開きスライドのいずれもありえる
(j)ドアノブはついていることもついてないこともある
3. 2.で行ったクラス設計を破壊せずに下記性質を追加せよ
(k)犬猫はドアノブを回転させることはできない
(l)犬猫はプッシュで動くドアなら、ある一定の重量以下で押すことができる
(m)数匹の犬猫が同時にドアを押すと合計重量で押すことができる
http://echo.2ch.net/test/read.cgi/tech/1488928012/422-423
http://echo.2ch.net/test/read.cgi/tech/1488928012/577-578
1 下記機能をオプションとして持つドアを設計せよ
(a)ドアストッパー
(b)ドアクローザー
(c)ドアの向こう側を目視できるガラス
(d)内部から外部の一方通行のみ目視できるのぞき穴
2. 1.で行ったクラス設計を破壊せずに下記性質を追加せよ
(e)異なる耐火性
(f)異なる開閉重量
(g)鍵がついており、サムターンか電子錠である
(h)異なる遮音性
(i)開き方は右開き左開き、内開き外開きスライドのいずれもありえる
(j)ドアノブはついていることもついてないこともある
3. 2.で行ったクラス設計を破壊せずに下記性質を追加せよ
(k)犬猫はドアノブを回転させることはできない
(l)犬猫はプッシュで動くドアなら、ある一定の重量以下で押すことができる
(m)数匹の犬猫が同時にドアを押すと合計重量で押すことができる
2017/04/02(日) 18:47:42.03ID:w0zTGR96
おつかれさまでした
2017/04/02(日) 20:12:49.88ID:0XahTNwQ
2017/04/02(日) 20:48:03.21ID:TvISwdcG
>>6
ドアをどういうソフトウェアの中でどう使うのかを説明しろよ
それなしに”設計せよ”とか意味不明だぞ
そこに書いてるのはドアの属性だけだから単なるデータ
クラスとかオブジェクト指向とか全く関係ない
ドアをどういうソフトウェアの中でどう使うのかを説明しろよ
それなしに”設計せよ”とか意味不明だぞ
そこに書いてるのはドアの属性だけだから単なるデータ
クラスとかオブジェクト指向とか全く関係ない
2017/04/02(日) 21:12:28.24ID:DzpU0i7z
ドアクラスの設計に上位クラスの意思が必要なら、それはモジュール分解できてないってことじゃね
2017/04/02(日) 21:21:56.68ID:l1VJjSJU
2017/04/02(日) 21:30:37.45ID:TvISwdcG
2017/04/02(日) 21:38:49.75ID:DzpU0i7z
ドアストッパーは回転角に制限を与える
ドアクローザーは、半開状態時にゆるやかに閉状態へと変化する機構
犬猫が突進すればドアタイプと重量によっては開き、場合によっては開かない
ドアクローザーは、半開状態時にゆるやかに閉状態へと変化する機構
犬猫が突進すればドアタイプと重量によっては開き、場合によっては開かない
2017/04/02(日) 22:03:35.89ID:TvISwdcG
建築家がCADで使うためのドアのモデル
ドアメーカーが生産管理のために使うためのドアのモデル
住宅メーカーが受注管理のために使うドアのモデル
ドア開け系のスマホゲームで使うためのドアのモデル
これらが同じになるわけがないんだから
どういう目的でどういう風にソフトウェア上で使われるのか
それがわからないものを設計しようとするのは時間の無駄
ドアメーカーが生産管理のために使うためのドアのモデル
住宅メーカーが受注管理のために使うドアのモデル
ドア開け系のスマホゲームで使うためのドアのモデル
これらが同じになるわけがないんだから
どういう目的でどういう風にソフトウェア上で使われるのか
それがわからないものを設計しようとするのは時間の無駄
2017/04/03(月) 01:16:59.01ID:LFQkDYJE
>>14
よくよく考えてみるととても難しいが完全不可能ではないしょ、具体的にこんなドアと呼んでないからこそ
どんな状況とパターンでもドアをドアと呼ぶに相応しい共通項を見つけるゲームや
投げる物ではないし食べる物でもないしまぁある程度までは
よくよく考えてみるととても難しいが完全不可能ではないしょ、具体的にこんなドアと呼んでないからこそ
どんな状況とパターンでもドアをドアと呼ぶに相応しい共通項を見つけるゲームや
投げる物ではないし食べる物でもないしまぁある程度までは
2017/04/03(月) 11:28:24.86ID:MWcUZH/3
なんでメソッド名って三単現じゃないことが多いの?
2017/04/03(月) 12:06:00.26ID:4MLmk5yA
開発者に嫌われているプログラミング言語 25
http://news.mynavi.jp/news/2017/03/30/133/
http://n.mynv.jp/news/2017/03/30/133/images/001l.jpg
Visual Basic 6
VBA
CoffeeScript
VB.NET
Matlab
Objective-C
Assembly
Perl
Lua
Hack
Groovy
Common Lisp
Dart
Erland
PHP
C
Ruby
R
Java
Julia
C++
SQL
Haskell
F#
JavaScript
http://news.mynavi.jp/news/2017/03/30/133/
http://n.mynv.jp/news/2017/03/30/133/images/001l.jpg
Visual Basic 6
VBA
CoffeeScript
VB.NET
Matlab
Objective-C
Assembly
Perl
Lua
Hack
Groovy
Common Lisp
Dart
Erland
PHP
C
Ruby
R
Java
Julia
C++
SQL
Haskell
F#
JavaScript
2017/04/03(月) 12:20:09.66ID:28dsjWMc
>>17
他のせんたくしが
他のせんたくしが
2017/04/03(月) 12:21:52.64ID:28dsjWMc
20デフォルトの名無しさん
2017/04/03(月) 13:17:31.81ID:DYsJriQe >>1
糞みたいなテンプル貼るのやめろ
糞みたいなテンプル貼るのやめろ
2017/04/03(月) 19:08:53.61ID:gZTdU5yD
>>17
名前さえ上がらないCobol
名前さえ上がらないCobol
2017/04/03(月) 19:16:57.14ID:Upl31vzs
まだやってんの?
23デフォルトの名無しさん
2017/04/03(月) 20:08:09.88ID:VDwG6zpG >>22
最後にレスした奴が勝者だからな
最後にレスした奴が勝者だからな
2017/04/03(月) 20:17:49.73ID:Upl31vzs
勝ち負けってあったの?
2017/04/03(月) 20:20:18.71ID:7vHtJU9B
俺2chの議論で負けたことない
変なこと言い出したり話がそれたりで、俺がレスしなくなるか
俺が相手をやりこめて、相手がレスしなくなるかだ
変なこと言い出したり話がそれたりで、俺がレスしなくなるか
俺が相手をやりこめて、相手がレスしなくなるかだ
2017/04/03(月) 20:23:36.71ID:Upl31vzs
勝負してないじゃん
27デフォルトの名無しさん
2017/04/03(月) 20:54:50.17ID:OUsiIH4G 土俵の下からヤジ飛ばしているだけで勝負している気になってるいつものあいつかw
2017/04/03(月) 20:57:17.28ID:LFQkDYJE
ウィナーオブジェクト作ろうぜ。とりあえずメソッドはコールだけ
2017/04/03(月) 21:47:10.19ID:7vHtJU9B
2017/04/03(月) 21:49:08.96ID:XYXk6jFX
2017/04/03(月) 21:57:16.66ID:XYXk6jFX
>>29
どういうシステムでどういう使われ方をするドアを想定した結果なのかを示せば
少しはマシだったろうけどそれをやったやつ前スレで1人でもいたか?
コンテキスト無しで現実をモデリングしようとしても設計力は高まるどころか低下するだけ
オブジェクト指向かどうかとか関係ない
無駄
どういうシステムでどういう使われ方をするドアを想定した結果なのかを示せば
少しはマシだったろうけどそれをやったやつ前スレで1人でもいたか?
コンテキスト無しで現実をモデリングしようとしても設計力は高まるどころか低下するだけ
オブジェクト指向かどうかとか関係ない
無駄
2017/04/03(月) 21:57:20.04ID:LFQkDYJE
>>30
つまりオブジェクト指向は哲学と言うことだな。納得出来る
つまりオブジェクト指向は哲学と言うことだな。納得出来る
2017/04/03(月) 22:05:05.77ID:Vb9tETQW
抽象化()
2017/04/03(月) 22:05:09.73ID:MrxLrKt6
2017/04/03(月) 22:18:18.28ID:MrxLrKt6
なるほど、そうか。
オブジェクト指向を「現実世界を構成しているクラスを見つけ出す作業」と
捉えるからややこしいことになるんだ。
手続き型でも関数型言語でも、現実世界を表現する関数を見つけ出す作業
なんて考えるやつはいない。
見つけ出す作業ではなくて、作り出す作業なんだ。
現実世界ではなくターゲットとする要件を実現する
クラスや関数を自分たちで作り出す作業。
だから最初に要件が決まらないとクラスも関数も作れない
あたり前のことだが、混ぜっ返すやつは
「そのクラス・関数では世界のすべてを表現できない」と言ってるわけだな。
オブジェクト指向を「現実世界を構成しているクラスを見つけ出す作業」と
捉えるからややこしいことになるんだ。
手続き型でも関数型言語でも、現実世界を表現する関数を見つけ出す作業
なんて考えるやつはいない。
見つけ出す作業ではなくて、作り出す作業なんだ。
現実世界ではなくターゲットとする要件を実現する
クラスや関数を自分たちで作り出す作業。
だから最初に要件が決まらないとクラスも関数も作れない
あたり前のことだが、混ぜっ返すやつは
「そのクラス・関数では世界のすべてを表現できない」と言ってるわけだな。
36デフォルトの名無しさん
2017/04/03(月) 22:25:42.68ID:VDwG6zpG プログラミングが目的になっちゃうと
そういう思考になるのかしらん?
そういう思考になるのかしらん?
2017/04/03(月) 22:25:47.59ID:XYXk6jFX
どんな状況でもドアをドアと呼ぶに相応しい共通項を見つけるってのは
ドアという言葉を定義づけるのと同じこと
言葉を定義づけるには「ドアと窓は何が違うのか?」とか
「ふすまや障子はドアなのか?」みたいに隣接する概念と比較する以外有効な方法はない
で「ドアと窓は何が違うか?」みたいな問いを考えるゲームがしたけりゃ
どっか他でやりなよ
ここは板違い
ドアという言葉を定義づけるのと同じこと
言葉を定義づけるには「ドアと窓は何が違うのか?」とか
「ふすまや障子はドアなのか?」みたいに隣接する概念と比較する以外有効な方法はない
で「ドアと窓は何が違うか?」みたいな問いを考えるゲームがしたけりゃ
どっか他でやりなよ
ここは板違い
2017/04/03(月) 22:42:21.43ID:MrxLrKt6
そう。我々がやってるのは、要件でドアと定義されたものを
クラスに落とし込む作業なのだ。
決しての中にあるドアがどういうクラスかを
解析する仕事ではないのだ。
クラスに落とし込む作業なのだ。
決しての中にあるドアがどういうクラスかを
解析する仕事ではないのだ。
2017/04/03(月) 22:42:49.69ID:MrxLrKt6
決して世の中にあるドアがどういうクラスかを
解析する仕事ではないのだ。
解析する仕事ではないのだ。
2017/04/03(月) 23:09:18.39ID:7vHtJU9B
>>31
同じドアを扱っているにもかかわらず
最初は小売りか設計かと思わせておいて
いきなり「猫に押される」っていうコンテキストも抽象度も異なるものが割り込んでくるのが
問題の肝
多少視点をゆさぶられても大丈夫なのを設計しろってことだろ
そこで状況がわかんないとか言ってたら降参してるようなもんじゃん
同じドアを扱っているにもかかわらず
最初は小売りか設計かと思わせておいて
いきなり「猫に押される」っていうコンテキストも抽象度も異なるものが割り込んでくるのが
問題の肝
多少視点をゆさぶられても大丈夫なのを設計しろってことだろ
そこで状況がわかんないとか言ってたら降参してるようなもんじゃん
2017/04/03(月) 23:57:11.85ID:7vHtJU9B
なんかわからんけど急にしにたくなった
2017/04/04(火) 00:16:51.37ID:L1aPO2JG
俺も俺も
2017/04/04(火) 00:32:31.54ID:Y80clcxw
いいぞ。遠慮なく死ね
2017/04/04(火) 00:33:57.09ID:Tk79CS9z
現実世界をモデリングできているか、とかいう謎の評価基準
迷宮を進むゲームでドアとして表現されたドアがあったとして、そのモデリングの良し悪しを
・家の内装をVR体験させるソフトでも使えるか
・大型家電通販でドア付きの部屋に搬入できるかをチェックするプログラムでも使えるか
・エアコンの空調のシミュレーションでも使えるか
で判断したことがあるのかな。そうだったら何も言えない。
迷宮を進むゲームでドアとして表現されたドアがあったとして、そのモデリングの良し悪しを
・家の内装をVR体験させるソフトでも使えるか
・大型家電通販でドア付きの部屋に搬入できるかをチェックするプログラムでも使えるか
・エアコンの空調のシミュレーションでも使えるか
で判断したことがあるのかな。そうだったら何も言えない。
2017/04/04(火) 01:01:13.36ID:AiGPoot5
オブジェクト指向にむりやり難癖つけてるけど結局
「具体性を持たせることで取り回しが楽になった」に対して
「これには対応できるのか!」「こういう例外はどうだ!」って難癖てるだけだから
「で、おまえの棲んでるとこの方は取り回しどうなの?」って
隠れ家に光浴びせると黙って棲んでる泥に潜っていくというね…
「具体性を持たせることで取り回しが楽になった」に対して
「これには対応できるのか!」「こういう例外はどうだ!」って難癖てるだけだから
「で、おまえの棲んでるとこの方は取り回しどうなの?」って
隠れ家に光浴びせると黙って棲んでる泥に潜っていくというね…
2017/04/04(火) 01:32:16.54ID:QcgfrUUh
>>40
問題の肝でもなんでもないわw
そういうふうに設計が変わった時に
安全な方法で設計を変更するのが
リファクタリングだよ。
どっかのバカ共は、汚いコードを修正するものだと
勘違いしているようだがね。
オブジェクト指向に限らず、変更はあるのだから
その変化についていく技術が重要
問題の肝でもなんでもないわw
そういうふうに設計が変わった時に
安全な方法で設計を変更するのが
リファクタリングだよ。
どっかのバカ共は、汚いコードを修正するものだと
勘違いしているようだがね。
オブジェクト指向に限らず、変更はあるのだから
その変化についていく技術が重要
2017/04/04(火) 01:37:41.67ID:TSsDdMVB
2017/04/04(火) 05:34:43.80ID:ld6GL0Sw
キャットドア問題解決したのか?
49デフォルトの名無しさん
2017/04/04(火) 07:33:17.45ID:gTa0RwdG 素材まで網羅した完璧なドアの設計を最初からしなくて良いのがオブジェクト指向の強みなんじゃね
難癖野郎の要望にも応えられる
難癖野郎の要望にも応えられる
50デフォルトの名無しさん
2017/04/04(火) 07:34:20.63ID:gTa0RwdG >>17
C#最高なだけじゃねえか
C#最高なだけじゃねえか
2017/04/04(火) 15:08:10.80ID:AeH3x9f/
今後も使い続けたいと思うかどうかの割合が低いもの
↓
嫌われている
さすがマイナビ
堂々とすり替えw
↓
嫌われている
さすがマイナビ
堂々とすり替えw
52デフォルトの名無しさん
2017/04/04(火) 18:42:21.83ID:PnaBNYoq データベース操作クラスって
アンチパターンらしいですけど
世間ではどうやって操作をまとめてるんですか?
アンチパターンらしいですけど
世間ではどうやって操作をまとめてるんですか?
2017/04/04(火) 18:44:12.01ID:pyoNKlrC
>>52
まず、アンチパターンだと言ってる人に聞いてみてください。
まず、アンチパターンだと言ってる人に聞いてみてください。
54デフォルトの名無しさん
2017/04/04(火) 19:01:23.29ID:12S8JRG0 オブジェクト指向って、
プログラミングを自動化=部品化してくれるものというイメージしかない。
プログラマはプラモデルを組み立てているような感覚。
プログラミングを自動化=部品化してくれるものというイメージしかない。
プログラマはプラモデルを組み立てているような感覚。
2017/04/04(火) 19:22:07.15ID:6xG2515u
>>52
レコードセットとかフィールドとかトランザクションを抽象化することの話?
レコードセットとかフィールドとかトランザクションを抽象化することの話?
2017/04/04(火) 19:48:05.98ID:XraiJtPm
DAOみたいなのがクソなだけで、アクセスを抽象化したクラスは必要。
2017/04/04(火) 19:54:26.70ID:bhbbdSm0
5852
2017/04/04(火) 20:11:51.69ID:PnaBNYoq 操作がクラス名としておかしいと、
何かの読み物で読みました
名詞じゃないクラスは
オブジェクト指向が出来ていないと
疑えと
じゃあデータベースなら良いのかなと
思いましたが、屁理屈かなとも思い
何かの読み物で読みました
名詞じゃないクラスは
オブジェクト指向が出来ていないと
疑えと
じゃあデータベースなら良いのかなと
思いましたが、屁理屈かなとも思い
2017/04/04(火) 20:18:23.65ID:y0lCbigz
それってUpdateHogeクラスみたいなのがあるってことなの?
Commandパターンとかなら理解できるが
データベース操作用にそういうクラスは普通作らないわな
Commandパターンとかなら理解できるが
データベース操作用にそういうクラスは普通作らないわな
60デフォルトの名無しさん
2017/04/04(火) 20:57:28.90ID:pJiiTfw5 >>56
その抽象化がDAOやろ?
その抽象化がDAOやろ?
2017/04/04(火) 21:01:19.65ID:eKQOUvI0
DAOクラスの設計までごちゃごちゃ言い出すのがオブジェクト指向
お前らの話聞いてたらデータベースにつなぐのに何年かかんだよ
お前らの話聞いてたらデータベースにつなぐのに何年かかんだよ
2017/04/04(火) 21:08:11.49ID:QcgfrUUh
2017/04/04(火) 21:08:42.56ID:8WGG2cnP
extensionがすべて解決してくれる…!
64デフォルトの名無しさん
2017/04/04(火) 21:09:58.53ID:pJiiTfw5 でもDAOが糞面倒なのは同意だが
2017/04/04(火) 21:26:31.39ID:y0lCbigz
>>60
リポジトリ
リポジトリ
2017/04/04(火) 21:38:41.73ID:bhbbdSm0
db操作クラスっていかんのか
名前の通りdbから変数やデータ取り出して入れる専用クラスって意味でいいんだよな?
オブジェクトで使い易いんじゃないのか??
名前の通りdbから変数やデータ取り出して入れる専用クラスって意味でいいんだよな?
オブジェクトで使い易いんじゃないのか??
2017/04/04(火) 21:57:16.59ID:ld6GL0Sw
db操作クラスにキャットドアつけよーぜ!
2017/04/04(火) 23:04:38.14ID:eKQOUvI0
2017/04/05(水) 00:16:02.14ID:Zf7glq/Z
2017/04/05(水) 00:38:08.73ID:yRUZ/Ldq
オブジェクト指向ってこういうやつやろ!?が酷すぎて
田舎の中学生が「ぼくのかんがえたアメリカ人」の作り話を大人にしてるみたいになっとるな。
田舎の中学生が「ぼくのかんがえたアメリカ人」の作り話を大人にしてるみたいになっとるな。
2017/04/05(水) 00:38:34.63ID:hA0nFIPv
>>60
ちゃう。抽象化を間違っちゃったのが、DAO
ちゃう。抽象化を間違っちゃったのが、DAO
2017/04/05(水) 00:56:26.96ID:T1xSqOuQ
クラス名が名詞じゃないDB操作クラスってマジどういうの?
73デフォルトの名無しさん
2017/04/05(水) 08:19:13.48ID:RcS41rYJ >>71
どう間違ってるの?
どう間違ってるの?
2017/04/05(水) 09:38:42.71ID:Zf7glq/Z
俺がDAOの存在理由が理解できないから、間違い
2017/04/05(水) 10:59:33.50ID:1lx41BrP
>>74
【が】が多い
【が】が多い
2017/04/05(水) 15:50:39.12ID:UwNB2dkT
77デフォルトの名無しさん
2017/04/05(水) 21:47:59.72ID:ABzSOhTe オブジェクト指向は命名が重要だけど、DTOにはなんて名前付けてますか?
自分はHogeDTOとか付けてるけど
我流なんで自信が無いです
自分はHogeDTOとか付けてるけど
我流なんで自信が無いです
2017/04/05(水) 22:31:27.34ID:T1xSqOuQ
個人的にはHogeDaoとかHogeDtoみたいなのがたくさんあるとやる気なくす
HogeQueryとかHogeCommandとかHogeJsonみたいなもう少し意味のある名前がいい
HogeQueryとかHogeCommandとかHogeJsonみたいなもう少し意味のある名前がいい
2017/04/05(水) 22:56:14.24ID:YCJsuu6b
80デフォルトの名無しさん
2017/04/05(水) 23:31:52.52ID:ABzSOhTe ほぼストアドでシステム開発してる人が
最近の連中は技術が無くてストアド書けないと嘆いていたのですが
ストアドでオブジェクト指向は出来るんですか?
C#+EFでほとんどSQLを書いたことが無いので
データベース事情に明るくないもので
最近の連中は技術が無くてストアド書けないと嘆いていたのですが
ストアドでオブジェクト指向は出来るんですか?
C#+EFでほとんどSQLを書いたことが無いので
データベース事情に明るくないもので
2017/04/06(木) 00:05:36.90ID:F4y9oj5j
SQL serverならSQL clrが使えるはず
2017/04/06(木) 01:57:21.96ID:FGV9lFi+
なぜにストアドでオブジェクト指向!?
2017/04/06(木) 04:16:30.36ID:2G8EDGPv
2017/04/06(木) 04:54:01.44ID:2G8EDGPv
1クラスについて、最低1in/1out(interface)を作るよう指示されたことあったな
全てのクラスについて
ヘキサゴナルなんだと、それが……
全てのクラスについて
ヘキサゴナルなんだと、それが……
2017/04/06(木) 05:56:27.93ID:8G48c3ze
なんでもストアドでやるのはバッドノウハウだが使うべき所では使わないとくっそ遅いシステムが出来上がるぞ
某大手ITが作ったくっそ高いシステムみたいに
オブジェクト指向も拗らせ過ぎるとこうなるって典型例
某大手ITが作ったくっそ高いシステムみたいに
オブジェクト指向も拗らせ過ぎるとこうなるって典型例
86デフォルトの名無しさん
2017/04/06(木) 09:05:31.52ID:sp2ENUYJ >>76
最終的な正解が書いてあるサイトはどこですか
最終的な正解が書いてあるサイトはどこですか
2017/04/06(木) 09:40:42.68ID:rNIgAdOn
>>85
その話のどこにオブジェクト指向が関係するのか?
その話のどこにオブジェクト指向が関係するのか?
2017/04/06(木) 10:32:51.49ID:bi7gIbpv
第 (N+1) 次オブジェクト指向問答
https://togetter.com/li/1097950
https://togetter.com/li/1097950
89デフォルトの名無しさん
2017/04/06(木) 12:29:44.71ID:GOr1AWzR2017/04/06(木) 12:47:05.55ID:fGciOGwI
>>86
I'll tell you nothing.
The answer is where it's present will not be indicate even by Google.
That must find out by an effort and a deliberation of yourself own.
I'll tell you nothing.
The answer is where it's present will not be indicate even by Google.
That must find out by an effort and a deliberation of yourself own.
2017/04/06(木) 12:49:59.24ID:fGciOGwI
be
92デフォルトの名無しさん
2017/04/06(木) 13:35:28.83ID:fKQHZKUE >>90
Oh, dont say that!Dont say that.Im a stupid man.You should be kind to me!
Oh, dont say that!Dont say that.Im a stupid man.You should be kind to me!
2017/04/06(木) 13:41:15.62ID:fGciOGwI
>>92
ね ぼ け る な!
ね ぼ け る な!
94デフォルトの名無しさん
2017/04/06(木) 18:06:11.40ID:7ga4e71i オブ農って何ですか?
2017/04/06(木) 18:24:59.98ID:FGV9lFi+
>>92
気持ちの伝わるいい返しだな
気持ちの伝わるいい返しだな
2017/04/06(木) 18:36:07.83ID:FGV9lFi+
>>89
ストアドは基本SQLだからDB設計出来る程度のリレーショナルモデルの知識あれば十分
技術うんぬん言うほと難しい話じゃない DBが違えば中身はいろいろと違ってくるけどね
ストアドで条件分岐やループやカーソルを多用してる場合
本当にDBレイヤーでやるべき仕事なのか考えたほうがいいと思う
ビジネスロジックのあるべき場所や柔軟性と最適化のバランス次第
ストアドは基本SQLだからDB設計出来る程度のリレーショナルモデルの知識あれば十分
技術うんぬん言うほと難しい話じゃない DBが違えば中身はいろいろと違ってくるけどね
ストアドで条件分岐やループやカーソルを多用してる場合
本当にDBレイヤーでやるべき仕事なのか考えたほうがいいと思う
ビジネスロジックのあるべき場所や柔軟性と最適化のバランス次第
2017/04/06(木) 22:21:27.75ID:OOQlb81T
制御文減らすための文法じゃないの?
2017/04/06(木) 23:19:03.66ID:fGciOGwI
>>95
伝わるか! ボケナス!
伝わるか! ボケナス!
99デフォルトの名無しさん
2017/04/07(金) 07:14:09.24ID:mWTY/96m データベースのモデリングした後
オブジェクト指向のために
クラス設計すると、エンティティの
抽出とか同じ事をしている気に
なってくるんですが
モデリングは実はクラス設計だけで
OKとかありますか?
オブジェクト指向のために
クラス設計すると、エンティティの
抽出とか同じ事をしている気に
なってくるんですが
モデリングは実はクラス設計だけで
OKとかありますか?
100デフォルトの名無しさん
2017/04/07(金) 09:46:16.48ID:xCtKbZyH101デフォルトの名無しさん
2017/04/07(金) 10:24:46.37ID:IERj5jiz ORマッピングすればDaoなんていらんね
102デフォルトの名無しさん
2017/04/07(金) 11:00:36.56ID:Bku+sAks >>97
意識して減らそうとしないと無理かな
ストアドは、テーブルや索引、マテリアらいずビューとかの整理に使う物かな
要は、あるタイミングでデータベースを単一の主体が加工する場合に使うと便利
複数クライアントが平行して操作するときに共通化を求めてやるもんじゃない。
それは、ビューなりストアドトリガーや制約で共通化するべきもの。
条件分岐があるなら、BLに溶け込ませろってのはそういう意味かと
意識して減らそうとしないと無理かな
ストアドは、テーブルや索引、マテリアらいずビューとかの整理に使う物かな
要は、あるタイミングでデータベースを単一の主体が加工する場合に使うと便利
複数クライアントが平行して操作するときに共通化を求めてやるもんじゃない。
それは、ビューなりストアドトリガーや制約で共通化するべきもの。
条件分岐があるなら、BLに溶け込ませろってのはそういう意味かと
103デフォルトの名無しさん
2017/04/07(金) 11:05:00.66ID:Bku+sAks ストアドプロシージャは、共有メモリや通信を目的に設計されていない。
なんかの結果を通信用に設けたテーブルに書いて、そのテーブルを別の主体が参照して連動させるとかオーバヘッドが多く、排他が冗長になり、パフォーマンスがでない。
なんかの結果を通信用に設けたテーブルに書いて、そのテーブルを別の主体が参照して連動させるとかオーバヘッドが多く、排他が冗長になり、パフォーマンスがでない。
104デフォルトの名無しさん
2017/04/07(金) 12:51:44.94ID:l4Q0lLSH105デフォルトの名無しさん
2017/04/07(金) 14:06:58.01ID:IIlb/TvM >>102,103
基本的に何言ってるかよくわからない。
例えば集約関数実装することを考えれば、元となるデータの通信を行わなくて良い分、
ストアドの方が速い可能性が高い。
また、複雑なデータ処理や文字列操作が多くてストアド自身のコードの実行が遅い場合もあるが、
ストアドに別言語を使えるRDBMSもある。
さらに言えば、ストアドがimmutableであるなどの宣言ができるRDBMSがあり、その場合は
実行結果をキャッシュしてくれたりする(同じ引数の場合はコードを実行しない)。
ビジネスロジックをRDBMS内部におくべきかどうかというのは、また別の話。
基本的に何言ってるかよくわからない。
例えば集約関数実装することを考えれば、元となるデータの通信を行わなくて良い分、
ストアドの方が速い可能性が高い。
また、複雑なデータ処理や文字列操作が多くてストアド自身のコードの実行が遅い場合もあるが、
ストアドに別言語を使えるRDBMSもある。
さらに言えば、ストアドがimmutableであるなどの宣言ができるRDBMSがあり、その場合は
実行結果をキャッシュしてくれたりする(同じ引数の場合はコードを実行しない)。
ビジネスロジックをRDBMS内部におくべきかどうかというのは、また別の話。
106デフォルトの名無しさん
2017/04/07(金) 18:38:30.82ID:Er4jaX4h 最初はデータ中心アプローチでいいよ
カージナリティーとかに抜けが発生するからね
それからモデル層の設計すればいい
カージナリティーとかに抜けが発生するからね
それからモデル層の設計すればいい
107デフォルトの名無しさん
2017/04/07(金) 19:36:14.64ID:vUIUfIKH108デフォルトの名無しさん
2017/04/08(土) 12:10:05.09ID:gBZ8NF+o >>105
集約関数、つまりある複雑な条件、複数のテーブルを結合せずに参照し、なんらかの判定を行う。
これは一般的なバッチ処理と言われるもので、データベースインスタンスに閉じて実行すればよい。
何らかのパラメータが伴い、レコードのサブセットのみを対象にする場合、ストアドにしても処理遂行を基準に、倉実行してもパフォーマンスは劇的には変わらない。
データベースは、純粋に取り扱うレコード数に比してパフォーマンスが確定する。
あと、結合できるなら、ストアドはいらない。
ビューなりマテリアルズどビューのがまし
集約関数、つまりある複雑な条件、複数のテーブルを結合せずに参照し、なんらかの判定を行う。
これは一般的なバッチ処理と言われるもので、データベースインスタンスに閉じて実行すればよい。
何らかのパラメータが伴い、レコードのサブセットのみを対象にする場合、ストアドにしても処理遂行を基準に、倉実行してもパフォーマンスは劇的には変わらない。
データベースは、純粋に取り扱うレコード数に比してパフォーマンスが確定する。
あと、結合できるなら、ストアドはいらない。
ビューなりマテリアルズどビューのがまし
109デフォルトの名無しさん
2017/04/08(土) 12:16:30.94ID:AqrMKRmZ ここ、何のスレだっけ?
110デフォルトの名無しさん
2017/04/08(土) 13:06:18.31ID:MgZOgx+n マルチスレッドわろw
111デフォルトの名無しさん
2017/04/08(土) 13:31:56.58ID:D50K8DvF よくわからないことを喚き散らすやつの隔離スレだよ
112デフォルトの名無しさん
2017/04/08(土) 13:51:19.98ID:MmqHTY99 まともにキャットドアもデータベース接続もできないゴミが、僕が使ってる言語のライブラリをだしにしてホルホルするスレだよ
113デフォルトの名無しさん
2017/04/08(土) 14:06:38.04ID:FmwPLc4P お疲れ様でした!
114デフォルトの名無しさん
2017/04/08(土) 17:16:52.66ID:6tEdYN6j >>112
やはりキャットドア問題を解決することなく次にはいけんな
やはりキャットドア問題を解決することなく次にはいけんな
115デフォルトの名無しさん
2017/04/08(土) 18:27:20.39ID:ZmPKT6lF116デフォルトの名無しさん
2017/04/08(土) 19:54:52.03ID:FmwPLc4P >>114
あんただけだよいつまでもキャットドア問題とか言ってんの
あんただけだよいつまでもキャットドア問題とか言ってんの
117デフォルトの名無しさん
2017/04/09(日) 01:56:39.35ID:+d/g4xuk 要件の一つに「Oraにロックインされるの勘弁」があるとマッパー必須
……いやなのは「もうOracleにカネ献上するのは嫌なんや!」って奴
既存のストアド見て置き換えなきゃいかんでしょ
最高にクソだったのは1関数5000行if12段のストアド
あれはサジ投げてとりあえずおっつけの改修だけやることにした
……いやなのは「もうOracleにカネ献上するのは嫌なんや!」って奴
既存のストアド見て置き換えなきゃいかんでしょ
最高にクソだったのは1関数5000行if12段のストアド
あれはサジ投げてとりあえずおっつけの改修だけやることにした
118デフォルトの名無しさん
2017/04/09(日) 02:27:20.83ID:S92Irkmv >>117
設計書なかったんだ、ははワロス
設計書なかったんだ、ははワロス
119デフォルトの名無しさん
2017/04/09(日) 02:34:17.14ID:+d/g4xuk >>118
設計書がどうこうとかじゃなくて、「おにぎりスタッバー」程度余裕で超えるド畜生
丸尾末広とか風船クラブ級の理解不能レベル
だから俺のところに来たんだろうが、さすがに当座のおっつけ以上の対応はムリだったな
設計書がどうこうとかじゃなくて、「おにぎりスタッバー」程度余裕で超えるド畜生
丸尾末広とか風船クラブ級の理解不能レベル
だから俺のところに来たんだろうが、さすがに当座のおっつけ以上の対応はムリだったな
120デフォルトの名無しさん
2017/04/09(日) 02:39:11.61ID:+d/g4xuk むしろ1関数5000行if12段の脅威を感覚でわからんとかヤバいな
最低でも2048くらい分岐が発生する
平均的な人間は7くらいしかわからん(Code Completeを参照のこと)
最低でも2048くらい分岐が発生する
平均的な人間は7くらいしかわからん(Code Completeを参照のこと)
121デフォルトの名無しさん
2017/04/09(日) 02:50:02.23ID:+d/g4xuk 一応言っておくが、俺はWAISテストで引っかかってるんで3か4しかわかんねぇようだ
まぁそのくらいあればシノギはできるようだがね
WAISでググるこたぁなかろうし、ググったらヘイトするんだろうけどな
まぁそのくらいあればシノギはできるようだがね
WAISでググるこたぁなかろうし、ググったらヘイトするんだろうけどな
122デフォルトの名無しさん
2017/04/09(日) 08:12:06.51ID:MBRFLDgA if12段が*最低*でも2048*くらい*分岐って計算の方がヤバい
123デフォルトの名無しさん
2017/04/09(日) 08:18:43.92ID:BIX5wjPO 分岐を志向するか統合を志向するかで無能か有能か分かれそう
124デフォルトの名無しさん
2017/04/09(日) 08:49:12.98ID:Zg/bzUyC と言いますと?
125デフォルトの名無しさん
2017/04/09(日) 09:36:40.13ID:Ch2od0MN 無理なクラスタリングはハンマー釘病になる
その場その場に応じた最適解を選べばいいだけ
その場その場に応じた最適解を選べばいいだけ
126デフォルトの名無しさん
2017/04/09(日) 11:52:37.41ID:cTj84sSr 釘宮病ってなんだ?
127デフォルトの名無しさん
2017/04/09(日) 23:56:30.49ID:dNHxTouX 12段ifに於ける1つの分岐
if(a){ if(b){ if(c){ if(d){ if(e){ if(f){ if(g){ if(h){ if(i){ if(j){ if(k){ if(l){
....x;
} else {
....y;
}}}}}}}}}}}}
if(a){ if(b){ if(c){ if(d){ if(e){ if(f){ if(g){ if(h){ if(i){ if(j){ if(k){ if(l){
....x;
} else {
....y;
}}}}}}}}}}}}
128デフォルトの名無しさん
2017/04/10(月) 00:17:53.55ID:f5bfXI8/ 改良版
if(a && b && c && d && e && f && g && h && i && j && k && l) {
....x;
} else {
....y;
}
ここから言いたいことがわかるかね?
if(a && b && c && d && e && f && g && h && i && j && k && l) {
....x;
} else {
....y;
}
ここから言いたいことがわかるかね?
129デフォルトの名無しさん
2017/04/10(月) 02:17:00.84ID:ogTJ3oaz >>128
先に言えハゲ
先に言えハゲ
130デフォルトの名無しさん
2017/04/10(月) 02:17:56.14ID:f5bfXI8/ はげてねーよはげ
131デフォルトの名無しさん
2017/04/10(月) 07:53:31.28ID:1VtPDmxC >>130
ハゲろ
ハゲろ
132デフォルトの名無しさん
2017/04/10(月) 08:53:35.90ID:SOLotzzn ガキかよ...
133デフォルトの名無しさん
2017/04/10(月) 12:33:19.05ID:dyJkQ9HN >>132
うるせー、ハゲ
うるせー、ハゲ
134デフォルトの名無しさん
2017/04/10(月) 13:12:58.61ID:Bu07ZLW6135デフォルトの名無しさん
2017/04/11(火) 04:41:06.97ID:mchlWSiU136デフォルトの名無しさん
2017/04/11(火) 07:15:24.21ID:8/HzfseJ 物理クラス設計にDTOって書きますか?
一応クラスだしなぁと
悩んでます
流石に論理じゃ不要と思いますが
一応クラスだしなぁと
悩んでます
流石に論理じゃ不要と思いますが
137デフォルトの名無しさん
2017/04/13(木) 07:07:56.79ID:FYxnOP1R 社員クラスと所属クラスがあって
年月を問い合わせたら
その年月時点での所属を返すように
したいのですが、どちらのクラスに問い合わせるのが正しいと思いますか
年月を問い合わせたら
その年月時点での所属を返すように
したいのですが、どちらのクラスに問い合わせるのが正しいと思いますか
138デフォルトの名無しさん
2017/04/13(木) 07:18:59.41ID:m/ZfxtWH おいらなら、社員クラスに所属クラスを埋め込むが。
と言うか、所属はクラスである必要すら感じない。
構造体でよく無いか?
と言うか、所属はクラスである必要すら感じない。
構造体でよく無いか?
139デフォルトの名無しさん
2017/04/13(木) 08:37:21.93ID:UeuCulgt sql
140デフォルトの名無しさん
2017/04/13(木) 09:29:06.54ID:i0SFiNXj >>137
とりあえず社員クラスと所属クラスと年月の関係を書くように
とりあえず社員クラスと所属クラスと年月の関係を書くように
141デフォルトの名無しさん
2017/04/13(木) 11:36:09.37ID:Wjez3hz+ 所属クラスって名前でいいのか?
部署クラスとかが普通だと思うな
部署クラスとかが普通だと思うな
142デフォルトの名無しさん
2017/04/13(木) 20:19:04.83ID:U0NTTHzz 所属クラスは確かにおかしいですね
部の下にグループがあるので部署という名前は避けたのですが
部署クラスがグループ教えてくれるのはなんら問題ないことに気付いたので部署クラスに改名しました
社員クラスのフィールドには
·社員番号
·氏名
部署クラスのフィールドには
·部署
·部署配下のグループ
としているのですが
所属部署を知りたい時に、社員に今の所属を聞くべきか、部署に社員の所属を教えて貰うのか、どちらが好ましいのかなとお聞きしたくて書きました
部の下にグループがあるので部署という名前は避けたのですが
部署クラスがグループ教えてくれるのはなんら問題ないことに気付いたので部署クラスに改名しました
社員クラスのフィールドには
·社員番号
·氏名
部署クラスのフィールドには
·部署
·部署配下のグループ
としているのですが
所属部署を知りたい時に、社員に今の所属を聞くべきか、部署に社員の所属を教えて貰うのか、どちらが好ましいのかなとお聞きしたくて書きました
143デフォルトの名無しさん
2017/04/13(木) 21:34:32.88ID:kfgJyhKZ >>142
社員がわかっているときは、社員に聞けばいいし、
部署がわかっている場合は、部署に聞けばいい。
どちららでもOKだし、ちゃんと作るならば
どちらからでもできるようにする
これは分かってない人意外と多いんじゃないかと思うけど、
データベース(RDBMSを使わないにしろ)っていうのは、
単体のテーブルの集まりではなくて、全体で一つのデータベースなんだよ
クラスに置き換えていうならば、クラス一つ一つが単独で存在しているのではなくて
クラスとクラス、そしてその関係を定義して、複数のクラスで一つのデータベースを表現する
(ただし設定テーブルのような、他の完全に独立しているテーブルのような例外はある)
だから社員クラスのフィールドには、所属部署というフィールドを持っているだろうし
部署クラスには、所属社員を取得するメソッドが存在している
社員がわかっているときは、社員に聞けばいいし、
部署がわかっている場合は、部署に聞けばいい。
どちららでもOKだし、ちゃんと作るならば
どちらからでもできるようにする
これは分かってない人意外と多いんじゃないかと思うけど、
データベース(RDBMSを使わないにしろ)っていうのは、
単体のテーブルの集まりではなくて、全体で一つのデータベースなんだよ
クラスに置き換えていうならば、クラス一つ一つが単独で存在しているのではなくて
クラスとクラス、そしてその関係を定義して、複数のクラスで一つのデータベースを表現する
(ただし設定テーブルのような、他の完全に独立しているテーブルのような例外はある)
だから社員クラスのフィールドには、所属部署というフィールドを持っているだろうし
部署クラスには、所属社員を取得するメソッドが存在している
144デフォルトの名無しさん
2017/04/13(木) 22:59:09.23ID:Wjez3hz+ キリッ
145デフォルトの名無しさん
2017/04/14(金) 01:10:42.96ID:DK6sdjwT >>137
どっちでもええ、ダメだったら直すまでだ
JavaのAPIというか一回書いたら半永久的に治せないインターフェースを書いてるわけでもないだろ
あるいは大企業の連中が使ってるイミフなフレームワークか
そんなん言っても満足されないならこのくらい
・社員が子会社に転籍とかフツーにあり得るなら「社員」に持たす、全グループ間で同一のアプリ使ってる前提だが
部署だと会社跨いだら引けなくなる設計になってる可能性もあるんでな
・一社だけなら部署でも社員でもノリで決めていい(多分直せるはずだ)
どっちでもええ、ダメだったら直すまでだ
JavaのAPIというか一回書いたら半永久的に治せないインターフェースを書いてるわけでもないだろ
あるいは大企業の連中が使ってるイミフなフレームワークか
そんなん言っても満足されないならこのくらい
・社員が子会社に転籍とかフツーにあり得るなら「社員」に持たす、全グループ間で同一のアプリ使ってる前提だが
部署だと会社跨いだら引けなくなる設計になってる可能性もあるんでな
・一社だけなら部署でも社員でもノリで決めていい(多分直せるはずだ)
146145
2017/04/14(金) 01:15:51.93ID:DK6sdjwT とりあえず目的が「特定の社員の所属状況を引く(あるいは特定社員の在籍履歴を引きたくなって機能追加)」なら
社員に持たすだろうかな
個人のトラッキングが目的なら個人を扱うクラスが責任取るべき
部署に持たすってなら「今日の部署の人員配置状況がわかること」が目的ってことになるんで
社員に持たすだろうかな
個人のトラッキングが目的なら個人を扱うクラスが責任取るべき
部署に持たすってなら「今日の部署の人員配置状況がわかること」が目的ってことになるんで
147デフォルトの名無しさん
2017/04/14(金) 01:21:47.69ID:5G8BkNCQ >>145
Java関係ないやん
Java関係ないやん
148デフォルトの名無しさん
2017/04/14(金) 01:36:29.65ID:DK6sdjwT149148
2017/04/14(金) 01:36:57.02ID:DK6sdjwT varがあればダックタイピングもできるだろうしな
150デフォルトの名無しさん
2017/04/14(金) 03:32:44.79ID:DK6sdjwT もう寝るか
Java8のlambdaなんとかならんもんかねぇ
スレッドのラッパーってのは期待してなかった(高階関数と、関数テーブル用途が使えん)
ドロイド君のイベントに差し込むのには使えようが
Java8のlambdaなんとかならんもんかねぇ
スレッドのラッパーってのは期待してなかった(高階関数と、関数テーブル用途が使えん)
ドロイド君のイベントに差し込むのには使えようが
151デフォルトの名無しさん
2017/04/14(金) 07:12:34.16ID:n5pL5Dn8 意外とどちらでも良いんですね
モデリング的に部署に聞くのはあり得ないとか言われると思ったのですが
ただ、社員にも部署にも問い合わせ可能なのが好ましいというのは驚きでした 冗長と言われそうで考えになかったもので 参考になります
モデリング的に部署に聞くのはあり得ないとか言われると思ったのですが
ただ、社員にも部署にも問い合わせ可能なのが好ましいというのは驚きでした 冗長と言われそうで考えになかったもので 参考になります
152デフォルトの名無しさん
2017/04/14(金) 07:31:08.07ID:dq/wP8H9 「現実世界」なんて忘れて
153デフォルトの名無しさん
2017/04/14(金) 09:07:05.40ID:aK3T4zVf >>150
はい?
はい?
154デフォルトの名無しさん
2017/04/14(金) 21:02:07.32ID:KZAGQEdK クラス構造に凝っても意味ないじゃん
155デフォルトの名無しさん
2017/04/14(金) 23:49:30.63ID:Sw6Rs9Qs そろそろjavaは遺物扱いで良いんじゃないかって思ってる
156デフォルトの名無しさん
2017/04/14(金) 23:57:33.02ID:2Ku103cF Cobolですら現役なのに
JavaをオワコンにしようとしてるやつはJavaの何が気に入らんのだ
JavaをオワコンにしようとしてるやつはJavaの何が気に入らんのだ
157デフォルトの名無しさん
2017/04/15(土) 00:00:58.14ID:PX53Hw9S うまく作れないことを言語のせいにしたいだけだと思ってる
158デフォルトの名無しさん
2017/04/15(土) 00:03:32.65ID:0ry10bQQ その通りやで
159デフォルトの名無しさん
2017/04/15(土) 00:06:46.85ID:0ry10bQQ ところでそろそろjavaにも型推論追加された?
160デフォルトの名無しさん
2017/04/15(土) 00:14:08.96ID:b29XQl7t されねーしいらねーし
161デフォルトの名無しさん
2017/04/15(土) 00:24:58.93ID:PX53Hw9S javaスレでどうぞ
162デフォルトの名無しさん
2017/04/15(土) 00:28:17.04ID:0ry10bQQ じゃあ何の話するの?
163デフォルトの名無しさん
2017/04/15(土) 00:32:30.38ID:PX53Hw9S 何もなけりゃ何も話さなくていいんだよ
164デフォルトの名無しさん
2017/04/15(土) 00:37:51.34ID:uwyLFIA1 好き嫌いだよ好き嫌い
それでいいよ
それでいいよ
165デフォルトの名無しさん
2017/04/15(土) 09:43:01.13ID:01wvAL9A166デフォルトの名無しさん
2017/04/16(日) 02:05:28.12ID:IBph2Vsu >>156
Javaはもともと組み込み言語だったんで、真剣にやると
他言語ではできることがJavaではできないってことがよくある
手数かけりゃそりゃいくらでもできるが、要求が出たら今日リリースできて当然の
職場だと厳しいよ
Javaはもともと組み込み言語だったんで、真剣にやると
他言語ではできることがJavaではできないってことがよくある
手数かけりゃそりゃいくらでもできるが、要求が出たら今日リリースできて当然の
職場だと厳しいよ
167166
2017/04/16(日) 02:23:40.59ID:IBph2Vsu Struts1 + Hibernate固定とか、Spring + Hibernate固定の現場で、
お客さんからハナシ聞いて1〜2週間後に納品、みたいなのが許されるならJavaでも構わないと思う
まあアレだ「エラーが絶対に出ないこと」ならJavaのほうが有利なのは認めるんで
エラーが多少出てもいいから最速で「だいたい」動くものが必要だって働き方だとJavaキツい
お客さんからハナシ聞いて1〜2週間後に納品、みたいなのが許されるならJavaでも構わないと思う
まあアレだ「エラーが絶対に出ないこと」ならJavaのほうが有利なのは認めるんで
エラーが多少出てもいいから最速で「だいたい」動くものが必要だって働き方だとJavaキツい
168デフォルトの名無しさん
2017/04/16(日) 02:41:47.00ID:cCOM2/u0 >.166
組み込み言語だったことが理由で
他の言語で出来てJavaで出来ないことって何?
組み込み言語だったことが理由で
他の言語で出来てJavaで出来ないことって何?
169デフォルトの名無しさん
2017/04/16(日) 02:42:52.99ID:cCOM2/u0170デフォルトの名無しさん
2017/04/16(日) 05:04:51.94ID:IBph2Vsu171デフォルトの名無しさん
2017/04/16(日) 09:40:21.87ID:0mT+BZRD オブジェクト指向と言ったらjavaがメジャーだしjavaが出来れば良いと思う
C++メインでオブジェクト指向できるという人は構造化プログラマが多い気がするから業務システムでの採用は避けたい
C#は隠れVB野郎が擬態してる可能性が高いから根本的に避けたい
Rubyは俺が知らないw
C++メインでオブジェクト指向できるという人は構造化プログラマが多い気がするから業務システムでの採用は避けたい
C#は隠れVB野郎が擬態してる可能性が高いから根本的に避けたい
Rubyは俺が知らないw
172デフォルトの名無しさん
2017/04/16(日) 09:44:29.62ID:0mT+BZRD VB.NETでオブジェクト指向してる人間って2割居ないんじゃ無いかと思う
構造化プログラムしてるのが5割で、残りは非構造化プログラムってイメージ
構造化プログラムしてるのが5割で、残りは非構造化プログラムってイメージ
173デフォルトの名無しさん
2017/04/16(日) 10:02:40.78ID:3arFtvKs cobolerやVBerがjavaやったらやっぱり同じだよ
174デフォルトの名無しさん
2017/04/16(日) 10:24:00.81ID:pKwaze4n >>171
C#erがVB程度しか使いこなせて無いかどうかは、Linq使いこなせるかどうかで大体判別可能。
C#erがVB程度しか使いこなせて無いかどうかは、Linq使いこなせるかどうかで大体判別可能。
175デフォルトの名無しさん
2017/04/16(日) 10:44:52.25ID:deLvCvQZ JavaとかRubyは純粋指向の人が多いような気がする
176デフォルトの名無しさん
2017/04/16(日) 13:37:47.43ID:P5/zt8YK 純粋でメリットがあるのって、開発環境的なツールだけだよな。
人間にとっては、そのツールの恩恵を受けられる事に多大なメリットがあるけど、言語自体に直接的なメリットを感じないわ。
人間にとっては、そのツールの恩恵を受けられる事に多大なメリットがあるけど、言語自体に直接的なメリットを感じないわ。
177デフォルトの名無しさん
2017/04/17(月) 09:26:03.38ID:ZPW6EaCZ >>171
レッテルでdisってるだけという
レッテルでdisってるだけという
178デフォルトの名無しさん
2017/04/17(月) 09:29:54.87ID:ZPW6EaCZ てかC#の売りは、あのXMLでフォームを作れる点じゃないのかね。
泥のアプリに感覚が近い。
フレームワークなんだろうが、あれなしでC#を使うとは思えず、凝ったことはAPIやCOMを自分で使わないといけないような。
だから、業務系システムでC#はわかる。
泥のアプリに感覚が近い。
フレームワークなんだろうが、あれなしでC#を使うとは思えず、凝ったことはAPIやCOMを自分で使わないといけないような。
だから、業務系システムでC#はわかる。
179デフォルトの名無しさん
2017/04/17(月) 09:46:57.33ID:NmJeD+FV キャットドア問題は解決したの?
180デフォルトの名無しさん
2017/04/17(月) 09:53:49.97ID:avieXFWj >>178
はい?
はい?
181デフォルトの名無しさん
2017/04/17(月) 21:36:17.70ID:kf1yWIvT コーヒーを飲むって動作は誰にさせると上手くいきますか?
コーヒーを飲む人?
コーヒーが飲ませる機能を持っている?
コーヒーを飲む人でないメイドさんか誰かが飲ませてくれる?
コーヒーを飲む人?
コーヒーが飲ませる機能を持っている?
コーヒーを飲む人でないメイドさんか誰かが飲ませてくれる?
182デフォルトの名無しさん
2017/04/17(月) 21:47:08.34ID:viGpNXOw 2つの物体の相互作用をどちらかを主語にしないと記述できない時点で
今主流のオブジェクト志向はクソ
今主流のオブジェクト志向はクソ
183デフォルトの名無しさん
2017/04/17(月) 21:49:52.39ID:avieXFWj 石原さとみのおっぱいに垂らした温いコーヒーをナメるのがベスト
184デフォルトの名無しさん
2017/04/17(月) 21:56:46.03ID:LB/3uUQe185デフォルトの名無しさん
2017/04/17(月) 22:04:31.38ID:D9tI2U/v >>183
それを設計するとナメるという行為と石原さとみのおっぱいのたゆみ、それによるコーヒーの流れ、流れに応じた舌の移動、さらに石原さとみの悶えという不確定要素など複数のオブジェクト間のフィードバックループを形成しないといけない
現実をプログラムにするというのは非常に難しいものだ
それを設計するとナメるという行為と石原さとみのおっぱいのたゆみ、それによるコーヒーの流れ、流れに応じた舌の移動、さらに石原さとみの悶えという不確定要素など複数のオブジェクト間のフィードバックループを形成しないといけない
現実をプログラムにするというのは非常に難しいものだ
186デフォルトの名無しさん
2017/04/17(月) 22:16:18.42ID:VvYNlkfx オブジェクトはメソッド実行するときはたいてい目的語
でもたまに、処理を移譲するよなときは主語になる
一定してないから混乱の原因
自信ついたあたりで現実のモデリングをしようとすると面食らう
でもたまに、処理を移譲するよなときは主語になる
一定してないから混乱の原因
自信ついたあたりで現実のモデリングをしようとすると面食らう
187デフォルトの名無しさん
2017/04/17(月) 22:26:26.94ID:n/MHuOf5 だいぶ前にこの類いのスレ立ててる奴が
「コーヒー」クラスが「ドリンク」メソッドで「プログラマー」に代入されてるジョークTシャツ持ってきて
「だからオブジェクト指向は〜」ってやってたのの本人による再放送でしょ。
キャットドア誰も相手してくれなくなったから。
「コーヒー」クラスが「ドリンク」メソッドで「プログラマー」に代入されてるジョークTシャツ持ってきて
「だからオブジェクト指向は〜」ってやってたのの本人による再放送でしょ。
キャットドア誰も相手してくれなくなったから。
188デフォルトの名無しさん
2017/04/17(月) 23:55:38.00ID:a8QARk7l メソッドは状態が変化する物に帰属させないとオブジェクト志向の意味ないよね
189デフォルトの名無しさん
2017/04/18(火) 00:38:27.27ID:ibb6Zkrz >>188
そんなことはないよ。
そんなことはないよ。
190デフォルトの名無しさん
2017/04/18(火) 07:13:33.23ID:YLExNRL3 去年.NET3.5の新規開発で
VB9.0を選択しちゃうウチの職場は
未だにオブジェクト指向を導入していません
そろそろオブジェクト指向開発を調査した方がいいでしょうか
VB9.0を選択しちゃうウチの職場は
未だにオブジェクト指向を導入していません
そろそろオブジェクト指向開発を調査した方がいいでしょうか
191デフォルトの名無しさん
2017/04/18(火) 09:09:55.12ID:+QApwmMZ その程度の仕事しかしてないということなので不要です
192デフォルトの名無しさん
2017/04/18(火) 09:59:29.58ID:QQU8yDeJ キャットドア問題も解決できないオブジェクト指向は不要
193デフォルトの名無しさん
2017/04/18(火) 12:33:10.21ID:7gPK71Iv NGワード:キャットドア
これでスッキリ
これでスッキリ
194デフォルトの名無しさん
2017/04/18(火) 13:42:04.65ID:dT36T5gx キャットドア厨はオブジェクト指向以外で問題解決してみてから言えよ
これやらないからカスなんだよ
これやらないからカスなんだよ
195デフォルトの名無しさん
2017/04/18(火) 17:45:27.51ID:QQU8yDeJ >>194
オブジェクト指向以外に解決策を求めてる時点で草wwwwww
オブジェクト指向以外に解決策を求めてる時点で草wwwwww
196デフォルトの名無しさん
2017/04/18(火) 17:58:40.72ID:ymBV4AxE cat.open(door), cat.open_door()
person.drink(cofee)
person.drink(cofee)
197デフォルトの名無しさん
2017/04/18(火) 20:10:28.20ID:PoabM2Bb 何通りか解決してただろ
なんでリセットされてるんだよ
なんでリセットされてるんだよ
198デフォルトの名無しさん
2017/04/18(火) 20:35:48.45ID:MNbxM32c >>197
悪魔の証明と化してる
悪魔の証明と化してる
199デフォルトの名無しさん
2017/04/18(火) 21:39:51.91ID:2/KqF/My200デフォルトの名無しさん
2017/04/18(火) 21:40:24.96ID:2/KqF/My オブジェクト指向のおかげです
201デフォルトの名無しさん
2017/04/18(火) 21:41:20.30ID:2/KqF/My オブジェクト指向完全に理解した、超簡単だった
202デフォルトの名無しさん
2017/04/18(火) 22:37:17.80ID:PoabM2Bb 人間だけ中身からっぽでわろw
203デフォルトの名無しさん
2017/04/19(水) 00:25:57.42ID:iVTtZEtx 恣意的な
204デフォルトの名無しさん
2017/04/19(水) 10:30:31.20ID:kYerY5of >>189
カプセル化しないの?
カプセル化しないの?
205デフォルトの名無しさん
2017/04/19(水) 11:36:32.83ID:ZFpUIjRr >>199
n種類の操作主体がいて、m種類の操作対象があるとき、DoorOpener的なクラスをm個作り、それぞれにnこのメソッドを作るのか?
操作主体が一つ増えると、既存のm個のクラスにそれぞれ一つのメソッドを追加する必要がある
また、操作対象が一つ増えると、あらたにn個のメソッドを作成する必要がある
n種類の操作主体がいて、m種類の操作対象があるとき、DoorOpener的なクラスをm個作り、それぞれにnこのメソッドを作るのか?
操作主体が一つ増えると、既存のm個のクラスにそれぞれ一つのメソッドを追加する必要がある
また、操作対象が一つ増えると、あらたにn個のメソッドを作成する必要がある
206デフォルトの名無しさん
2017/04/19(水) 12:10:38.64ID:rIlDsUIc >>205
ドアを障子に変えてくれって要求があるかもしれないし、もしものことを考えて複雑に作るより今の要求を満たす必要最小限にしておけば作り直しやすいのじゃないかな
ドアを障子に変えてくれって要求があるかもしれないし、もしものことを考えて複雑に作るより今の要求を満たす必要最小限にしておけば作り直しやすいのじゃないかな
207デフォルトの名無しさん
2017/04/19(水) 12:15:05.34ID:rIlDsUIc208デフォルトの名無しさん
2017/04/19(水) 12:20:37.70ID:rIlDsUIc 継承もカプセル化もオブジェクト指向には必要ない
クラスを作る、つまり型を定義する事こそがオブジェクト指向
クラスを作る、つまり型を定義する事こそがオブジェクト指向
209デフォルトの名無しさん
2017/04/19(水) 12:29:42.19ID:xWugx3VW 複数性が重要事項
210デフォルトの名無しさん
2017/04/19(水) 12:32:00.02ID:rIlDsUIc 文字コードを相互に変換するときいったんウニコードに変換するように、対象や主体をそれぞれ抽象化オブジェクトに変換すればよいのかもね
対象と主体の操作は抽象化オブジェクトに対して行うようにしておけば、対象や主体が増えたとしても抽象化オブジェクトへの変換だけ実装すればよい
対象と主体の操作は抽象化オブジェクトに対して行うようにしておけば、対象や主体が増えたとしても抽象化オブジェクトへの変換だけ実装すればよい
211デフォルトの名無しさん
2017/04/19(水) 12:55:20.19ID:rIlDsUIc 抽象化オブジェクトに変換を行うトランスフォーマクラスと抽象化オブジェクトに対する操作を行うプロセッサクラスがある
具象オブジェクトが追加されたときはトランスフォーマとプロセッサを変える必要がある
見通しはいいかもわからんね、抽象化オブジェクトの関係は一箇所に集約されるから
具象オブジェクトが追加されたときはトランスフォーマとプロセッサを変える必要がある
見通しはいいかもわからんね、抽象化オブジェクトの関係は一箇所に集約されるから
212デフォルトの名無しさん
2017/04/19(水) 12:55:21.77ID:cvkGewar pコードみたいだな
213デフォルトの名無しさん
2017/04/19(水) 12:56:19.07ID:rIlDsUIc やっぱオブジェクト指向最高だな
214デフォルトの名無しさん
2017/04/19(水) 13:42:18.93ID:Rk+PkBJv >>207
木偶の坊が何か実装するときに何も考えさせないためにカプセル化するんだと思ってたわ
木偶の坊が何か実装するときに何も考えさせないためにカプセル化するんだと思ってたわ
215デフォルトの名無しさん
2017/04/19(水) 13:49:21.08ID:ZFpUIjRr >>206
> ドアを障子に変えてくれって要求があるかもしれないし、もしものことを考えて複雑に作るより今の要求を満たす必要最小限にしておけば作り直しやすいのじゃないかな
まあ、あのコードが最小限だとして、その範囲ですらOCPに違反してるんじゃないですかねって指摘なんだが。
> ドアを障子に変えてくれって要求があるかもしれないし、もしものことを考えて複雑に作るより今の要求を満たす必要最小限にしておけば作り直しやすいのじゃないかな
まあ、あのコードが最小限だとして、その範囲ですらOCPに違反してるんじゃないですかねって指摘なんだが。
216デフォルトの名無しさん
2017/04/19(水) 19:01:16.59ID:rIlDsUIc >>215
ocpは耄碌したメイヤおじさんの考えだろ
オブジェクト指向がブラッシュアップされる前の
無駄の塊だった頃の話だ
最新のオブジェクト指向では継承もカプセル化も
害悪でしかないことがわかってる
ocpは耄碌したメイヤおじさんの考えだろ
オブジェクト指向がブラッシュアップされる前の
無駄の塊だった頃の話だ
最新のオブジェクト指向では継承もカプセル化も
害悪でしかないことがわかってる
217デフォルトの名無しさん
2017/04/19(水) 19:03:57.03ID:rIlDsUIc >>214
オブジェクト指向が浸透するまでは有益だったかもしれないが、今や誰もがオブジェクト指向を熟知し使いこなす時代、カプセル化はロジックを不鮮明にするノイズでしかない
オブジェクト指向が浸透するまでは有益だったかもしれないが、今や誰もがオブジェクト指向を熟知し使いこなす時代、カプセル化はロジックを不鮮明にするノイズでしかない
218デフォルトの名無しさん
2017/04/19(水) 19:06:43.59ID:rIlDsUIc メイヤおじさんは実装の継承を推奨する老害だからな
バージョン管理ソフト使えよと
バージョン管理ソフト使えよと
219デフォルトの名無しさん
2017/04/19(水) 19:09:12.02ID:rIlDsUIc プレインクラスこそオブジェクト指向の本質
220デフォルトの名無しさん
2017/04/19(水) 19:29:36.25ID:/l6NHl5b >>217
不鮮明となるのであればそれは用件が曖昧であるためカプセル化できてないと俺は考える
エンジンの仕組みを知らなくてもアクセルを踏めば車は動くようにわざわざ考える必要もない事は隠蔽しちゃおうぜ!ってのがカプセル化だと思ってる
まぁ解釈はそれぞれだから合わせてもらわなくていいけどね
不鮮明となるのであればそれは用件が曖昧であるためカプセル化できてないと俺は考える
エンジンの仕組みを知らなくてもアクセルを踏めば車は動くようにわざわざ考える必要もない事は隠蔽しちゃおうぜ!ってのがカプセル化だと思ってる
まぁ解釈はそれぞれだから合わせてもらわなくていいけどね
221デフォルトの名無しさん
2017/04/19(水) 19:35:54.11ID:XuQTPPrh フスマと回転扉で同じキャットドアで済むわけないじゃん
これを違うものとして組めないコードは問題
結局、キャットドアなんだよ
これを違うものとして組めないコードは問題
結局、キャットドアなんだよ
222デフォルトの名無しさん
2017/04/19(水) 19:37:09.40ID:rIlDsUIc >>220
それもそうだな
それもそうだな
223デフォルトの名無しさん
2017/04/19(水) 19:39:26.07ID:rIlDsUIc224デフォルトの名無しさん
2017/04/19(水) 19:45:45.55ID:d/SqmCf2 >カプセル化はロジックを不鮮明にするノイズでしかない
寝言にもほどがある
中が丸見えで依存しまくってたら
何かするたびに処理の全体追わなきゃいけなくなるだろうが
寝言にもほどがある
中が丸見えで依存しまくってたら
何かするたびに処理の全体追わなきゃいけなくなるだろうが
225デフォルトの名無しさん
2017/04/19(水) 19:52:16.42ID:XuQTPPrh >>223
フスマと回転扉で同じキャットドアが使えると思ってらっしゃる?
フスマと回転扉で同じキャットドアが使えると思ってらっしゃる?
226デフォルトの名無しさん
2017/04/19(水) 19:56:33.37ID:qJxXjZRc227デフォルトの名無しさん
2017/04/19(水) 20:00:55.07ID:qOdNs+TP >>225
はい
はい
228デフォルトの名無しさん
2017/04/19(水) 20:01:49.80ID:qOdNs+TP >>224
依存しないように実装すれば良いが
依存しないように実装すれば良いが
229デフォルトの名無しさん
2017/04/19(水) 20:02:59.08ID:qOdNs+TP230デフォルトの名無しさん
2017/04/19(水) 20:05:24.07ID:d/SqmCf2 >>228
間違ってしちゃうかもしれないし、どっかで誰かがしちゃってるかもしれんだろ
間違ってしちゃうかもしれないし、どっかで誰かがしちゃってるかもしれんだろ
231デフォルトの名無しさん
2017/04/19(水) 20:07:46.83ID:d/SqmCf2 あまりにもオブジェクト指向が当たり前になりすぎて、それがもたらしてくれるものを忘れてるだけだ
Cに++なんてついてなかった時代
配列を関数に渡すとき一緒に配列の長さを引数で渡してた
地獄のような時代があったんだぞ…
Cに++なんてついてなかった時代
配列を関数に渡すとき一緒に配列の長さを引数で渡してた
地獄のような時代があったんだぞ…
232デフォルトの名無しさん
2017/04/19(水) 20:11:22.44ID:/l6NHl5b233デフォルトの名無しさん
2017/04/19(水) 20:23:32.33ID:XuQTPPrh >>227
ちょっと絵に描いてみなよ
ちょっと絵に描いてみなよ
234デフォルトの名無しさん
2017/04/19(水) 20:26:00.72ID:3xQf6WAc 『"このパーツの動作は保障されている"がないとプログラムは工業製品にならない』
ってのが始まりだしね。
ある意味「企業向けオーダーメードプログラムを手作業で人月かけてやるのが
職業プログラマって仕事なんだよっ!!」って請負業者がプログラマ名乗って
コンシュマーに売る工業製品としてのアプリケーションプログラム販売が傍流みたいになってる日本じゃ
「動きゃいい」が蔓延するのもしかたがないこと
ってのが始まりだしね。
ある意味「企業向けオーダーメードプログラムを手作業で人月かけてやるのが
職業プログラマって仕事なんだよっ!!」って請負業者がプログラマ名乗って
コンシュマーに売る工業製品としてのアプリケーションプログラム販売が傍流みたいになってる日本じゃ
「動きゃいい」が蔓延するのもしかたがないこと
235デフォルトの名無しさん
2017/04/19(水) 20:33:37.46ID:lCKuRFX1236デフォルトの名無しさん
2017/04/19(水) 20:34:11.59ID:lCKuRFX1 端末変えたからID変わってるから
237デフォルトの名無しさん
2017/04/19(水) 20:35:16.70ID:lCKuRFX1238デフォルトの名無しさん
2017/04/19(水) 20:36:51.30ID:lCKuRFX1 >>231
構造体に配列の長さと配列をセットで持たせればいいのに
構造体に配列の長さと配列をセットで持たせればいいのに
239デフォルトの名無しさん
2017/04/19(水) 20:37:47.92ID:/l6NHl5b >>237
それは設計不足
それは設計不足
240デフォルトの名無しさん
2017/04/19(水) 20:41:15.47ID:lCKuRFX1241デフォルトの名無しさん
2017/04/19(水) 20:41:33.40ID:oz+MR2rn まぁまぁ ロジックの中が見えてバグがどこで発生しているかもすぐに分かる純粋関数が最強ってことで
242デフォルトの名無しさん
2017/04/19(水) 20:42:40.87ID:lCKuRFX1 カプセル・スリー・セカンド
243デフォルトの名無しさん
2017/04/19(水) 20:44:01.82ID:/l6NHl5b244デフォルトの名無しさん
2017/04/19(水) 20:46:48.18ID:lCKuRFX1 >>243
速度向上ならわかるけど
速度向上ならわかるけど
245デフォルトの名無しさん
2017/04/19(水) 20:49:45.97ID:lCKuRFX1246デフォルトの名無しさん
2017/04/19(水) 20:58:24.07ID:oz+MR2rn247デフォルトの名無しさん
2017/04/19(水) 21:02:34.85ID:lCKuRFX1248デフォルトの名無しさん
2017/04/19(水) 21:08:35.02ID:d/SqmCf2 ちょっとは人の話きけりょ
249デフォルトの名無しさん
2017/04/19(水) 21:10:34.01ID:oz+MR2rn カプセル化してないオブジェクト指向のメンバーなんて
読みにくいグローバル変数みたいなもんじゃない?
読みにくいグローバル変数みたいなもんじゃない?
250デフォルトの名無しさん
2017/04/19(水) 21:18:19.43ID:lCKuRFX1 >>248
聞く、どうぞお話どうぞ
聞く、どうぞお話どうぞ
251デフォルトの名無しさん
2017/04/19(水) 21:20:38.66ID:lCKuRFX1 >>249
グローバル変数とは全然違う
フィールドはオブジェクトに属しています
オブジェクトがなければありません
オブジェクトを作って初めて使うことができます
オブジェクトのライフサイクルと運命をともにするからこそ
オブジェクト指向なんです
finalをつけるのがデフォ
グローバル変数とは全然違う
フィールドはオブジェクトに属しています
オブジェクトがなければありません
オブジェクトを作って初めて使うことができます
オブジェクトのライフサイクルと運命をともにするからこそ
オブジェクト指向なんです
finalをつけるのがデフォ
252デフォルトの名無しさん
2017/04/19(水) 21:41:01.53ID:/l6NHl5b253デフォルトの名無しさん
2017/04/19(水) 21:56:25.91ID:lCKuRFX1 >>252
俺が俺の思いでやるのは当たり前のことだと思うんだよ
雨が降ったら傘をさせばいいと言ってるようなもの
当たり前じゃん?いう意味なくない?
プールで泳ぐときは服を脱げばいいみたいな
出かけるときは靴を履けばいいみたいな
価値観の違いにこだわってるのはそっちのほうなんじゃないかなって思いました
俺が俺の思いでやるのは当たり前のことだと思うんだよ
雨が降ったら傘をさせばいいと言ってるようなもの
当たり前じゃん?いう意味なくない?
プールで泳ぐときは服を脱げばいいみたいな
出かけるときは靴を履けばいいみたいな
価値観の違いにこだわってるのはそっちのほうなんじゃないかなって思いました
254デフォルトの名無しさん
2017/04/19(水) 21:59:29.16ID:lCKuRFX1 カプセル化しないオブジェクト指向がモダンで優れた設計っていうのは
>>252と俺の共通認識としてあるわけだから、その上で思いを語っていただけたら
>>252と俺の共通認識としてあるわけだから、その上で思いを語っていただけたら
255デフォルトの名無しさん
2017/04/19(水) 22:03:04.69ID:/l6NHl5b >>254
俺はカプセル化推奨だぞ
俺はカプセル化推奨だぞ
256デフォルトの名無しさん
2017/04/19(水) 22:06:05.25ID:lCKuRFX1257デフォルトの名無しさん
2017/04/19(水) 22:07:41.10ID:lCKuRFX1 隠すメリットより公開するメリットの方が莫大だと思わない?
258デフォルトの名無しさん
2017/04/19(水) 22:18:28.62ID:lCKuRFX1 公開するメリット隠すデメリットを考えよう
259デフォルトの名無しさん
2017/04/19(水) 22:22:01.02ID:/l6NHl5b 思わないなぁ
カプセル化って無駄を省いてわかりやすいものにして再利用しやすいよう作ることと思ってるからね
そもそもカプセル化はフィールドだけじゃない
インターフェースを用いて処理を委譲させるように設計してしまえばデータだけじゃなく処理を丸ごと隠蔽できるしオブジェクト間の依存関係も稀薄にできる
カプセル化って無駄を省いてわかりやすいものにして再利用しやすいよう作ることと思ってるからね
そもそもカプセル化はフィールドだけじゃない
インターフェースを用いて処理を委譲させるように設計してしまえばデータだけじゃなく処理を丸ごと隠蔽できるしオブジェクト間の依存関係も稀薄にできる
260デフォルトの名無しさん
2017/04/19(水) 22:26:31.08ID:lCKuRFX1 >>259
なるほどね、それはあるね
なるほどね、それはあるね
261デフォルトの名無しさん
2017/04/19(水) 22:27:13.48ID:lCKuRFX1 カプセル化完全に理解した
262デフォルトの名無しさん
2017/04/19(水) 22:34:52.50ID:/l6NHl5b おめでとう
まぁ俺はまだまだ勉強中だからうらやましいよ
まぁ俺はまだまだ勉強中だからうらやましいよ
263デフォルトの名無しさん
2017/04/19(水) 23:01:17.77ID:KzpInSVx >>256
通りすがりだが、年齢フィールドとか一定の幅に制限したい時に勝手に300歳とか設定されたら困るだろう。
だからprivateにしてメソッドやプロパティで0-120なりの範囲に制限するようにするんじゃないの?
通りすがりだが、年齢フィールドとか一定の幅に制限したい時に勝手に300歳とか設定されたら困るだろう。
だからprivateにしてメソッドやプロパティで0-120なりの範囲に制限するようにするんじゃないの?
264デフォルトの名無しさん
2017/04/19(水) 23:08:00.65ID:qOdNs+TP265デフォルトの名無しさん
2017/04/19(水) 23:10:42.57ID:2dTlCsss >>208
代数的データ型で型を定義できるHaskellはオブジェクト志向言語だった……?
代数的データ型で型を定義できるHaskellはオブジェクト志向言語だった……?
266デフォルトの名無しさん
2017/04/19(水) 23:12:01.85ID:qOdNs+TP >>265
代数的データ型とはなんぞや?
代数的データ型とはなんぞや?
267デフォルトの名無しさん
2017/04/19(水) 23:13:00.35ID:HSKBgTxb 「300歳なんてあるわけないからカチカチに型で数字の範囲を絞ればいいんだよ」
「300歳なんて異常な数字を送らないように送り手が責任を持つべきだ」
「300歳が送られてきても"数字がおかしい"って返事するようにすれば良くね」
どれがいいと思うかで、その人のそもそものスタンスとセンスがわかるな。
「300歳なんて異常な数字を送らないように送り手が責任を持つべきだ」
「300歳が送られてきても"数字がおかしい"って返事するようにすれば良くね」
どれがいいと思うかで、その人のそもそものスタンスとセンスがわかるな。
268デフォルトの名無しさん
2017/04/19(水) 23:16:21.53ID:qOdNs+TP >>267
俺ならチェックせずに文字列のフィールドにそのままセットしちゃうね、純粋オブジェクト指向
俺ならチェックせずに文字列のフィールドにそのままセットしちゃうね、純粋オブジェクト指向
269デフォルトの名無しさん
2017/04/19(水) 23:19:37.80ID:qOdNs+TP type c = a or b
みたいな?
みたいな?
270デフォルトの名無しさん
2017/04/19(水) 23:20:37.20ID:qOdNs+TP これもオブジェクト指向と言ってもいいでしょう!
271デフォルトの名無しさん
2017/04/19(水) 23:21:42.97ID:HSKBgTxb ちなみに最後のがいちばんオブジェクト指向っぽくて
大きな仕様変更に強いゆるさがあると思うけど
カチカチが好きなタイプのプログラマーは"ゆるさ"の部分が
許せないのだろうな。
大きな仕様変更に強いゆるさがあると思うけど
カチカチが好きなタイプのプログラマーは"ゆるさ"の部分が
許せないのだろうな。
272デフォルトの名無しさん
2017/04/19(水) 23:23:56.87ID:KzpInSVx >>264
え、でもそうでもなきゃ、データの外部でデータチェックとかは関数型言語や構造化プログラミング的な発想だけど。
副作用あるのに、その発想は危険過ぎない?
他の誰かがその外部のチェック用クラスを使ってくれる保証は無いよ?
え、でもそうでもなきゃ、データの外部でデータチェックとかは関数型言語や構造化プログラミング的な発想だけど。
副作用あるのに、その発想は危険過ぎない?
他の誰かがその外部のチェック用クラスを使ってくれる保証は無いよ?
273デフォルトの名無しさん
2017/04/19(水) 23:30:11.23ID:qOdNs+TP >>272
必要なら必要になったとき必要な人が自分で作れば良いじゃん、自由と自己責任の精神だよ、ルールで縛られたガチガチのオブジェクトじゃままならぬ事もあるでしょう!
必要なら必要になったとき必要な人が自分で作れば良いじゃん、自由と自己責任の精神だよ、ルールで縛られたガチガチのオブジェクトじゃままならぬ事もあるでしょう!
274デフォルトの名無しさん
2017/04/19(水) 23:33:14.31ID:KzpInSVx >>267
オブジェクトが各々責任を持つとするなら、それぞれのクラスでデータチェック(ダブルチェック)が正解なんだろうね。
じゃないと、その二つのクラスは二つで一つになる。
依存関係が出来てしまう。
違うクラスでも、年齢に関するデータなら受け取れるようにした方がいいんじゃ無いかな。
実際には依存関係呑み込んでどっちかしかチェックしないってのが多そうだが。
オブジェクトが各々責任を持つとするなら、それぞれのクラスでデータチェック(ダブルチェック)が正解なんだろうね。
じゃないと、その二つのクラスは二つで一つになる。
依存関係が出来てしまう。
違うクラスでも、年齢に関するデータなら受け取れるようにした方がいいんじゃ無いかな。
実際には依存関係呑み込んでどっちかしかチェックしないってのが多そうだが。
275デフォルトの名無しさん
2017/04/19(水) 23:34:21.76ID:HSKBgTxb "誰がその数値に責任を持ってるか"っしょ。
それを明確にできてればそこを修正すればいいけれど
「私は知らない」「私は受け付けない」「私の責任ではない」って
例外の責任が見えないと責任者探しから始めなくちゃいけなくて
後から来たプログラマが死ぬ。
それを明確にできてればそこを修正すればいいけれど
「私は知らない」「私は受け付けない」「私の責任ではない」って
例外の責任が見えないと責任者探しから始めなくちゃいけなくて
後から来たプログラマが死ぬ。
276デフォルトの名無しさん
2017/04/19(水) 23:37:47.94ID:KzpInSVx 。。。オブジェクト指向は事なかれ文化の日本と相性悪いんじゃ無いかと思えてくる文言ダネ^^;
277デフォルトの名無しさん
2017/04/19(水) 23:39:15.89ID:qOdNs+TP テストすれば良いじゃん
278デフォルトの名無しさん
2017/04/19(水) 23:41:15.55ID:qOdNs+TP ちゃんとオブジェクトが連携できてるかなって
そうだよ僕たちには結合テストがあるじゃないか
そうだよ僕たちには結合テストがあるじゃないか
279デフォルトの名無しさん
2017/04/19(水) 23:46:37.27ID:qOdNs+TP 値を変換するコンバータクラスと値をチェックするバリデータクラスがあれば良いじゃないか
責務の分離だよ
責務の分離だよ
280デフォルトの名無しさん
2017/04/19(水) 23:48:34.03ID:qOdNs+TP データ保持するクラスがチェックまでやるのは複雑すぎるよ、素直じゃない
281デフォルトの名無しさん
2017/04/19(水) 23:51:12.30ID:qOdNs+TP オブジェクトも大事だがコラボレーションも大事
282デフォルトの名無しさん
2017/04/19(水) 23:52:23.70ID:zPBwEPLo 連投せずにまずは落ち着くのが大事
283デフォルトの名無しさん
2017/04/19(水) 23:57:15.78ID:/l6NHl5b 目的の動きを満たせばだいたい正解なんだから熱くなるなよ
自分の意見を押し通したいのはわからんでもないがな
自分の意見を押し通したいのはわからんでもないがな
284デフォルトの名無しさん
2017/04/20(木) 00:29:25.65ID:jJkbXdni 208 デフォルトの名無しさん[sage] 2017/04/19(水) 12:20:37.70 ID:rIlDsUIc
継承もカプセル化もオブジェクト指向には必要ない
クラスを作る、つまり型を定義する事こそがオブジェクト指向
265 デフォルトの名無しさん[sage] 2017/04/19(水) 23:10:42.57 ID:2dTlCsss
>>208
代数的データ型で型を定義できるHaskellはオブジェクト志向言語だった……?
266 デフォルトの名無しさん[sage] 2017/04/19(水) 23:12:01.85 ID:qOdNs+TP
>>265
代数的データ型とはなんぞや?
269 デフォルトの名無しさん[sage] 2017/04/19(水) 23:19:37.80 ID:qOdNs+TP
type c = a or b
みたいな?
270 デフォルトの名無しさん[sage] 2017/04/19(水) 23:20:37.20 ID:qOdNs+TP
これもオブジェクト指向と言ってもいいでしょう!
こんなん草生える
継承もカプセル化もオブジェクト指向には必要ない
クラスを作る、つまり型を定義する事こそがオブジェクト指向
265 デフォルトの名無しさん[sage] 2017/04/19(水) 23:10:42.57 ID:2dTlCsss
>>208
代数的データ型で型を定義できるHaskellはオブジェクト志向言語だった……?
266 デフォルトの名無しさん[sage] 2017/04/19(水) 23:12:01.85 ID:qOdNs+TP
>>265
代数的データ型とはなんぞや?
269 デフォルトの名無しさん[sage] 2017/04/19(水) 23:19:37.80 ID:qOdNs+TP
type c = a or b
みたいな?
270 デフォルトの名無しさん[sage] 2017/04/19(水) 23:20:37.20 ID:qOdNs+TP
これもオブジェクト指向と言ってもいいでしょう!
こんなん草生える
285デフォルトの名無しさん
2017/04/20(木) 07:19:48.83ID:JH3XDWGN チェックも色々とデータが必要なとき多いしな
286デフォルトの名無しさん
2017/04/20(木) 11:36:45.75ID:vlFc/PD3 >>216
> ocpは耄碌したメイヤおじさんの考えだろ
> オブジェクト指向がブラッシュアップされる前の
> 無駄の塊だった頃の話だ
そうでもないけどね。
https://ja.wikipedia.org/wiki/%E9%96%8B%E6%94%BE/%E9%96%89%E9%8E%96%E5%8E%9F%E5%89%87
今でも、OOPの五大原則のひとつとしてあげられるのが普通。
> 最新のオブジェクト指向では継承もカプセル化も
> 害悪でしかないことがわかってる
そうなんだ、それは知らなかったよ。
> ocpは耄碌したメイヤおじさんの考えだろ
> オブジェクト指向がブラッシュアップされる前の
> 無駄の塊だった頃の話だ
そうでもないけどね。
https://ja.wikipedia.org/wiki/%E9%96%8B%E6%94%BE/%E9%96%89%E9%8E%96%E5%8E%9F%E5%89%87
今でも、OOPの五大原則のひとつとしてあげられるのが普通。
> 最新のオブジェクト指向では継承もカプセル化も
> 害悪でしかないことがわかってる
そうなんだ、それは知らなかったよ。
287デフォルトの名無しさん
2017/04/20(木) 14:18:44.61ID:Wfe8Hvf2 継承は特定の親に縛られすぎるのであまりよくないね。ってなってるが
カプセル化はむしろ危険な直接アクセスを防ぐ意味で常識になってる気が。
カプセル化はむしろ危険な直接アクセスを防ぐ意味で常識になってる気が。
288デフォルトの名無しさん
2017/04/20(木) 20:00:36.90ID:OWrdGWgc やっぱりインターフェースこそオブジェクト指向だよな
289デフォルトの名無しさん
2017/04/20(木) 20:17:41.83ID:JH3XDWGN290デフォルトの名無しさん
2017/04/20(木) 20:22:03.18ID:jeWo4Dft それもうわざわざクラス使わずに構造体使っちゃいなよ
291デフォルトの名無しさん
2017/04/20(木) 20:29:03.08ID:nHxDShTL 悪い依存関係はそのコードの利用者にコピベプログラムを強いる
これ経験則な
これ経験則な
292デフォルトの名無しさん
2017/04/20(木) 20:37:59.47ID:x1mUV01b 汎用性ならインターフェースと抽象クラスじゃねーの?
293デフォルトの名無しさん
2017/04/20(木) 21:21:03.65ID:1ly+xIep >>286
> 最新のオブジェクト指向では継承もカプセル化も
> 害悪でしかないことがわかってる
まーたくだらない嘘をつく
すぐにバレるのわかってるだろw
害悪でしかないならば、lintなどのツールで使うなって警告が出るはずだ。
そういったlintツールがない(継承やカプセル化を使った時にエラーにする方法がない)
もとから、害悪でしかないっていうのは完全に間違いだ。
反論があるならどうぞ
> 最新のオブジェクト指向では継承もカプセル化も
> 害悪でしかないことがわかってる
まーたくだらない嘘をつく
すぐにバレるのわかってるだろw
害悪でしかないならば、lintなどのツールで使うなって警告が出るはずだ。
そういったlintツールがない(継承やカプセル化を使った時にエラーにする方法がない)
もとから、害悪でしかないっていうのは完全に間違いだ。
反論があるならどうぞ
294デフォルトの名無しさん
2017/04/20(木) 21:40:16.04ID:NBs+Bll8295デフォルトの名無しさん
2017/04/20(木) 21:44:56.84ID:1ly+xIep 結局、privateっていうのは、
この変数は外部から直接触ることを想定していません。
決められた値以外を入れた時の保証はしませんし、
将来の変更で互換性がない形に変更する必要がありますので
参照しないでください
とコメントで書くわかりに、コンピュータでも理解できる
言語で書くってだけの話なんだよね。
この変数は外部から直接触ることを想定していません。
決められた値以外を入れた時の保証はしませんし、
将来の変更で互換性がない形に変更する必要がありますので
参照しないでください
とコメントで書くわかりに、コンピュータでも理解できる
言語で書くってだけの話なんだよね。
296デフォルトの名無しさん
2017/04/20(木) 21:46:00.98ID:1ly+xIep あ、もちろんprivateを使ったほうが良いって話だよ。
コメントで長々書いても読まないし、
ソースを見ないかもしれない。
そういう時にコンピュータでも理解できる言語で書いていれば
コンパイル時にしっかりチェックしてくれる。間違いがない。
コメントで長々書いても読まないし、
ソースを見ないかもしれない。
そういう時にコンピュータでも理解できる言語で書いていれば
コンパイル時にしっかりチェックしてくれる。間違いがない。
297デフォルトの名無しさん
2017/04/20(木) 21:47:30.56ID:JH3XDWGN >>294
クラスなんて使わなければいいのでは?
クラスなんて使わなければいいのでは?
298デフォルトの名無しさん
2017/04/20(木) 21:53:58.83ID:Rk6y34sG >>293
帰納的な推理は往々にして間違うものなんだよ
帰納的な推理は往々にして間違うものなんだよ
299デフォルトの名無しさん
2017/04/20(木) 21:55:36.70ID:1ly+xIep >298
ちょっと邪魔しないで、
反論が出てくるかどうか待っている所だからw
ちょっと邪魔しないで、
反論が出てくるかどうか待っている所だからw
300デフォルトの名無しさん
2017/04/20(木) 21:56:45.24ID:Rk6y34sG マンコが本当にあるなら俺のチンコが純粋であることの説明がつかないみたいな
301デフォルトの名無しさん
2017/04/20(木) 21:57:23.53ID:x1mUV01b302デフォルトの名無しさん
2017/04/20(木) 21:58:02.87ID:Rk6y34sG 純粋チンコ型論理
303デフォルトの名無しさん
2017/04/20(木) 22:03:33.81ID:Rk6y34sG304デフォルトの名無しさん
2017/04/20(木) 22:07:49.44ID:OWrdGWgc カプセル化は正しい方向性だというのは賛成だが
lintで警告が出ないからという権威主義的な根拠はどうなのか
lintで警告が出ないからという権威主義的な根拠はどうなのか
305デフォルトの名無しさん
2017/04/20(木) 22:10:46.32ID:Rk6y34sG >>290
構造体を使うとしてその構造体に連関する関数をどうやって整理する?
構造体ごとにファイルを分けるのは面倒だし、認知行動学的に考えて厳しくない?
整理することこそプログラミング、そのコストが低い言語が良い言語だと思うんだよね
構造体を使うとしてその構造体に連関する関数をどうやって整理する?
構造体ごとにファイルを分けるのは面倒だし、認知行動学的に考えて厳しくない?
整理することこそプログラミング、そのコストが低い言語が良い言語だと思うんだよね
306デフォルトの名無しさん
2017/04/20(木) 22:12:10.00ID:NBs+Bll8 >>297
せやな。
必要性がないと判断したんなら使わなければいいんじゃないか?
間違ってないと思うで。
ただまあ、構造体が必要になる所では、ほぼ間違いなくクラス化した方が使い方の見通しが良くなるで。
せやな。
必要性がないと判断したんなら使わなければいいんじゃないか?
間違ってないと思うで。
ただまあ、構造体が必要になる所では、ほぼ間違いなくクラス化した方が使い方の見通しが良くなるで。
307デフォルトの名無しさん
2017/04/20(木) 22:12:52.70ID:x1mUV01b 自分で考えるってことをしないんだろ
他人の定めたルールが正当である
それが目に見える形とならねば虚構である
むなしいね
他人の定めたルールが正当である
それが目に見える形とならねば虚構である
むなしいね
308デフォルトの名無しさん
2017/04/20(木) 22:13:09.41ID:1ly+xIep >>301
それで何か問題あるの?
それで何か問題あるの?
309デフォルトの名無しさん
2017/04/20(木) 22:14:14.53ID:1ly+xIep 俺様が決めたルール(=害悪でしかない)が正当であると思ってるんだろうねw
だから俺様以外が決めたルールであるかどうかを確認している。
さて反論は?
だから俺様以外が決めたルールであるかどうかを確認している。
さて反論は?
310デフォルトの名無しさん
2017/04/20(木) 22:15:28.83ID:Rk6y34sG 俺は今ガリレオさんの気持ちだ
311デフォルトの名無しさん
2017/04/20(木) 22:17:39.49ID:x1mUV01b >>308
おまえが満足するならそれでかまわないよ
別に誰かに認められるために学んでるわけじゃないし
もっとも残念ながら俺はカプセル化については推奨派なので反論とかするまでもなくどーだっていい
ただおまえの発想はかわいそうだと思うだけ
おまえが満足するならそれでかまわないよ
別に誰かに認められるために学んでるわけじゃないし
もっとも残念ながら俺はカプセル化については推奨派なので反論とかするまでもなくどーだっていい
ただおまえの発想はかわいそうだと思うだけ
312デフォルトの名無しさん
2017/04/20(木) 22:18:02.65ID:Rk6y34sG 死に際にそれでも地球は回っていると言ってのけたガリレオさんも気持ちだ
313デフォルトの名無しさん
2017/04/20(木) 22:22:56.58ID:1ly+xIep >>311
そういうことは最初から言わないか?
なんで俺に「反論がでない=正当性が証明されたなどと言うつもりかい?」と聞いた?
最初から「反論が言えなくても、正当かもしれないだろ!」と言えばいいじゃないか?
それがお前が本当に言いたいことだろ?
それならそれで俺は最初からこう答えるよ。
だから、お前が言っていることを正当だと他人に認めてもらうために、
お前は反論(信頼性があるソース)を出せって。
はい、で、信頼性があるソースは?
そういうことは最初から言わないか?
なんで俺に「反論がでない=正当性が証明されたなどと言うつもりかい?」と聞いた?
最初から「反論が言えなくても、正当かもしれないだろ!」と言えばいいじゃないか?
それがお前が本当に言いたいことだろ?
それならそれで俺は最初からこう答えるよ。
だから、お前が言っていることを正当だと他人に認めてもらうために、
お前は反論(信頼性があるソース)を出せって。
はい、で、信頼性があるソースは?
314デフォルトの名無しさん
2017/04/20(木) 22:24:14.04ID:Rk6y34sG それでもカプセル化は必要ない
lintはろくでも無いクラス設計がまかり通っていたときの負の遺産だ、javabeansやcomが盛んに作られた時代の名残だ、隠蔽して守られるより公開して守られるクラス設計を目指すべき
lintはろくでも無いクラス設計がまかり通っていたときの負の遺産だ、javabeansやcomが盛んに作られた時代の名残だ、隠蔽して守られるより公開して守られるクラス設計を目指すべき
315デフォルトの名無しさん
2017/04/20(木) 22:25:02.69ID:Rk6y34sG >>313
ソースは俺
ソースは俺
316デフォルトの名無しさん
2017/04/20(木) 22:25:24.28ID:1ly+xIep 補足しておくと「継承やカプセル化が害悪でしかない」という仮説が
正しいという信頼性がある(俺様が決めたルールではないとう)ソースを出せ。
という話ね
正しいという信頼性がある(俺様が決めたルールではないとう)ソースを出せ。
という話ね
317デフォルトの名無しさん
2017/04/20(木) 22:26:09.67ID:Rk6y34sG ソースは現代のガリレオです
よろしくお願いします
よろしくお願いします
318デフォルトの名無しさん
2017/04/20(木) 22:27:09.43ID:x1mUV01b319デフォルトの名無しさん
2017/04/20(木) 22:29:33.08ID:1ly+xIep320デフォルトの名無しさん
2017/04/20(木) 22:30:20.01ID:jeWo4Dft >>305
俺の経験上はだけど、それオブジェクト志向じゃない方がむしろやりやすいで
俺の経験上はだけど、それオブジェクト志向じゃない方がむしろやりやすいで
321デフォルトの名無しさん
2017/04/20(木) 22:30:37.36ID:nIwh3CMn ソースは?の問いに対して
有無以外のレスを繰り返す相手を
それ以上いじめてはいけない
有無以外のレスを繰り返す相手を
それ以上いじめてはいけない
322デフォルトの名無しさん
2017/04/20(木) 22:31:02.97ID:Rk6y34sG 昔は暗号化のロジックも隠すことで安全性を担保しようとしていたけど、駄目だったんだよ、現代ではロジックを公開できる暗号化こそが真に安全性を備えていることがわかっている
それと全く同じことでいくらプライベートにしようがリフレクション使いまくる現代のプログラミングでは役に立たない、パブリックにしても問題ないように作るのが真のオブジェクト指向
それと全く同じことでいくらプライベートにしようがリフレクション使いまくる現代のプログラミングでは役に立たない、パブリックにしても問題ないように作るのが真のオブジェクト指向
323デフォルトの名無しさん
2017/04/20(木) 22:32:10.96ID:Rk6y34sG324デフォルトの名無しさん
2017/04/20(木) 22:32:34.93ID:x1mUV01b325デフォルトの名無しさん
2017/04/20(木) 22:33:31.06ID:Rk6y34sG >>320
どうやるん? クラス作らないとできなくない?
どうやるん? クラス作らないとできなくない?
326デフォルトの名無しさん
2017/04/20(木) 22:33:55.62ID:1ly+xIep327デフォルトの名無しさん
2017/04/20(木) 22:35:08.71ID:Rk6y34sG >>324
カプセル化が必要ないことを説明しろよ
カプセル化が必要ないことを説明しろよ
328デフォルトの名無しさん
2017/04/20(木) 22:37:17.66ID:x1mUV01b329デフォルトの名無しさん
2017/04/20(木) 22:37:44.90ID:Rk6y34sG >>326
秘密鍵はパスワードとかそういう類の物だからそもそもプログラム内に持たないんだよ
秘密鍵はパスワードとかそういう類の物だからそもそもプログラム内に持たないんだよ
330デフォルトの名無しさん
2017/04/20(木) 22:39:55.49ID:1ly+xIep >>329
プライベート変数は、ファイルに保存しろって言いたいわけ?
プライベート変数は、ファイルに保存しろって言いたいわけ?
331デフォルトの名無しさん
2017/04/20(木) 22:41:15.19ID:Rk6y34sG >>330
秘密鍵はプログラムに書くものじゃないと言いたいのさ
秘密鍵はプログラムに書くものじゃないと言いたいのさ
332デフォルトの名無しさん
2017/04/20(木) 22:43:19.76ID:1ly+xIep333デフォルトの名無しさん
2017/04/20(木) 22:43:43.47ID:Rk6y34sG >>328
派閥でどうこう言うんじゃなくていち個人として良心から発言していただきたい、カプセル化が必要ないんだという思いと向き合うべきだと言ってるんだよ
派閥でどうこう言うんじゃなくていち個人として良心から発言していただきたい、カプセル化が必要ないんだという思いと向き合うべきだと言ってるんだよ
334デフォルトの名無しさん
2017/04/20(木) 22:44:37.36ID:T8G8upSf こいつ相当のバカだな
335デフォルトの名無しさん
2017/04/20(木) 22:44:47.88ID:Rk6y34sG >>332
違う違う秘密鍵はプログラムに書くものじゃないと言ってるんだよ
違う違う秘密鍵はプログラムに書くものじゃないと言ってるんだよ
336デフォルトの名無しさん
2017/04/20(木) 22:45:25.28ID:Rk6y34sG リピートアフターミー
秘密鍵はプログラムに書くものじゃない
秘密鍵はプログラムに書くものじゃない
337デフォルトの名無しさん
2017/04/20(木) 22:45:53.95ID:Rk6y34sG カプセル化はオブジェクト指向じゃない
338デフォルトの名無しさん
2017/04/20(木) 22:45:55.45ID:1ly+xIep >>335
じゃあ他のクラスから秘密にしたいデータは?
じゃあ他のクラスから秘密にしたいデータは?
339デフォルトの名無しさん
2017/04/20(木) 22:47:11.97ID:Rk6y34sG >>338
公開しなさい
公開しなさい
340デフォルトの名無しさん
2017/04/20(木) 22:47:42.98ID:1ly+xIep >>322
> 昔は暗号化のロジックも隠すことで安全性を担保しようとしていたけど、駄目だったんだよ、現代ではロジックを公開できる暗号化こそが真に安全性を備えていることがわかっている
違う違う。それは「暗号化ロジック」は公開しろって話なんだよ。
リピートアフタミー「暗号化ロジック」は公開しろ。
それ以外の話は公開しろって意味じゃない。
> 昔は暗号化のロジックも隠すことで安全性を担保しようとしていたけど、駄目だったんだよ、現代ではロジックを公開できる暗号化こそが真に安全性を備えていることがわかっている
違う違う。それは「暗号化ロジック」は公開しろって話なんだよ。
リピートアフタミー「暗号化ロジック」は公開しろ。
それ以外の話は公開しろって意味じゃない。
341デフォルトの名無しさん
2017/04/20(木) 22:48:28.32ID:1ly+xIep342デフォルトの名無しさん
2017/04/20(木) 22:49:40.47ID:Rk6y34sG >>340
暗号化ロジックは式という形式のデータです
暗号化ロジックは式という形式のデータです
343デフォルトの名無しさん
2017/04/20(木) 22:49:49.13ID:NBs+Bll8 password.txtに書いてgithubにコミットやろjk
344デフォルトの名無しさん
2017/04/20(木) 22:51:10.30ID:1ly+xIep345デフォルトの名無しさん
2017/04/20(木) 22:53:29.90ID:1ly+xIep 式という形式のデータ、
そこにはいろんなロジックがある。
その沢山の種類のロジックの中で
暗号化ロジックだけは公開しろ
そこにはいろんなロジックがある。
その沢山の種類のロジックの中で
暗号化ロジックだけは公開しろ
346デフォルトの名無しさん
2017/04/20(木) 22:54:17.23ID:x1mUV01b >>333
べき論はよくわからんが、そこまで言うなら個人として伝える
カプセル化は絶対必要である
なんならオブジェクト指向のキモだとも考える
目的に特化させ再利用できるようにデザインすること
きちんとネーミングすること
多様性を持たせるならばインターフェースを用いて処理を実装し移譲すればよい
以上
べき論はよくわからんが、そこまで言うなら個人として伝える
カプセル化は絶対必要である
なんならオブジェクト指向のキモだとも考える
目的に特化させ再利用できるようにデザインすること
きちんとネーミングすること
多様性を持たせるならばインターフェースを用いて処理を実装し移譲すればよい
以上
347デフォルトの名無しさん
2017/04/20(木) 22:55:25.78ID:zhxiAG0o ID:rIlDsUIc = ID:Rk6y34sG だよね?
昨日はシラフで今日は酔っ払っているのかな?
昨日はシラフで今日は酔っ払っているのかな?
348デフォルトの名無しさん
2017/04/20(木) 22:56:30.20ID:Rk6y34sG349デフォルトの名無しさん
2017/04/20(木) 23:07:28.95ID:nIwh3CMn OOPに必要かどうかしらんけど
カプセル化は単に便利だよね
スコープ的な意味で
カプセル化は単に便利だよね
スコープ的な意味で
350デフォルトの名無しさん
2017/04/20(木) 23:23:01.66ID:16AwdhdC 横からカプセル化の話題を眺めていたが、素晴らしいカプセル化のアイデアが湧いてきた!
351デフォルトの名無しさん
2017/04/20(木) 23:29:07.88ID:jeWo4Dft352デフォルトの名無しさん
2017/04/20(木) 23:49:33.09ID:hTP3eC2C インターフェースこそオブジェクト指向だという意見に全面的に同意。
継承自体はクラス目線でモジュール化を進めた結果で得られる構造なだけであって、
インターフェースのように型を意識させることはない。
結果的にはインターフェース+基底クラスパターンが最強だと思うわ
継承自体はクラス目線でモジュール化を進めた結果で得られる構造なだけであって、
インターフェースのように型を意識させることはない。
結果的にはインターフェース+基底クラスパターンが最強だと思うわ
353デフォルトの名無しさん
2017/04/20(木) 23:59:45.86ID:zhxiAG0o アルゴリズムを試行錯誤している時はグローバルな構造体の方が楽。
デバッグや保守の時はカプセル化されたオブジェクトの方が楽。
これはmutableとimmutableにも同じことが言える。
カプセル化しないmutableオブジェクトの方が考えやすいなら
プロトタイプ開発ではそうすればよい。
設計が決まったらできるだけカプセル化したimmutableオブジェクトに変えよう。
デバッグや保守の時はカプセル化されたオブジェクトの方が楽。
これはmutableとimmutableにも同じことが言える。
カプセル化しないmutableオブジェクトの方が考えやすいなら
プロトタイプ開発ではそうすればよい。
設計が決まったらできるだけカプセル化したimmutableオブジェクトに変えよう。
354デフォルトの名無しさん
2017/04/21(金) 00:06:49.24ID:T1EM2She >>351
関数の名前に構造体の名前を入れるん? 面倒じゃない?
関数の名前に構造体の名前を入れるん? 面倒じゃない?
355デフォルトの名無しさん
2017/04/21(金) 00:08:09.71ID:T1EM2She356デフォルトの名無しさん
2017/04/21(金) 00:11:37.99ID:YTf7CJ3G >>355
不変だからこそカプセル化するんだよ
不変だからこそカプセル化するんだよ
357デフォルトの名無しさん
2017/04/21(金) 00:14:32.72ID:TFy/T03e 不変というのはコンパイル時に決まるってわけじゃないからな。
初期状態から変わらないってだけで、
初期状態というものは存在する。
当然それを隠したい場合も存在する。
初期状態から変わらないってだけで、
初期状態というものは存在する。
当然それを隠したい場合も存在する。
358デフォルトの名無しさん
2017/04/21(金) 00:26:21.96ID:Ck7s6rRh >>354
そうか? 俺は元々Lisperだし、全く面倒とは思わん
でももし面倒と思うんなら、特にC++とかならオーバーロードがあるんだから構造体名入れなくてもなんとかなるでしょ
この先UFCSも導入される予定みたいだし
そうか? 俺は元々Lisperだし、全く面倒とは思わん
でももし面倒と思うんなら、特にC++とかならオーバーロードがあるんだから構造体名入れなくてもなんとかなるでしょ
この先UFCSも導入される予定みたいだし
359デフォルトの名無しさん
2017/04/21(金) 00:27:55.81ID:1EW2mi9U びっくりするくらい低レベルな会話しててわろた
ホリデープログラマーが語りだすとこうなる
ホリデープログラマーが語りだすとこうなる
360デフォルトの名無しさん
2017/04/21(金) 00:48:08.26ID:T1EM2She >>356
どうして不変だからカプセル化するんだよ?
どうして不変だからカプセル化するんだよ?
361デフォルトの名無しさん
2017/04/21(金) 00:48:50.43ID:T1EM2She362デフォルトの名無しさん
2017/04/21(金) 00:49:23.31ID:T1EM2She >>358
LisperにとってJavaのクラスはどう?
LisperにとってJavaのクラスはどう?
363デフォルトの名無しさん
2017/04/21(金) 01:04:07.46ID:YTf7CJ3G 自分で考えてみな
364デフォルトの名無しさん
2017/04/21(金) 01:18:33.36ID:Ck7s6rRh365デフォルトの名無しさん
2017/04/21(金) 01:19:22.96ID:T1EM2She >>363
説明できないのな、じゃあいいわ
説明できないのな、じゃあいいわ
366デフォルトの名無しさん
2017/04/21(金) 01:20:01.11ID:T1EM2She367デフォルトの名無しさん
2017/04/21(金) 01:34:09.78ID:YTf7CJ3G368デフォルトの名無しさん
2017/04/21(金) 01:43:34.54ID:T1EM2She とどのつまりカプセル化は理解できないものなんだな?
369デフォルトの名無しさん
2017/04/21(金) 02:00:31.00ID:Ck7s6rRh >>366
もしかして低産階級労働者だった? これは申し訳ないことを書いた。失礼
もしかして低産階級労働者だった? これは申し訳ないことを書いた。失礼
370デフォルトの名無しさん
2017/04/21(金) 02:04:34.66ID:T1EM2She >>369
ホントだよ!失礼極まりないよ!
ホントだよ!失礼極まりないよ!
371デフォルトの名無しさん
2017/04/21(金) 02:05:08.14ID:T1EM2She 低産階級労働者は傷ついているのです
372デフォルトの名無しさん
2017/04/21(金) 02:05:31.65ID:T1EM2She 私は被害者です
373デフォルトの名無しさん
2017/04/21(金) 02:06:19.45ID:T1EM2She どうしてLispにはクラスがないんだろうか
みんなで考えてみよう
みんなで考えてみよう
374デフォルトの名無しさん
2017/04/21(金) 02:12:55.16ID:TFy/T03e375デフォルトの名無しさん
2017/04/21(金) 02:18:17.50ID:T1EM2She >>374
でもクラスは便利ですよ
でもクラスは便利ですよ
376デフォルトの名無しさん
2017/04/21(金) 02:18:56.37ID:T1EM2She クラスがない、つまりカプセル化もできない?
377デフォルトの名無しさん
2017/04/21(金) 04:34:49.48ID:H6APCPmE 手続き型言語でも定数はグローバル変数でも問題無いんだし、関数型言語の変数はほぼ定数みたいなもんだし。
カプセル化の恩恵そのものがあんまり無い希ガス。
カプセル化の恩恵そのものがあんまり無い希ガス。
378デフォルトの名無しさん
2017/04/21(金) 05:07:53.93ID:rPWpf+kQ そもそも仕様書に書くべき問題をソースなんかに記述しようとするからこうなる
なんだよカプセル化って
ガキの使いでソースに手を入れようとしてるキチガイでもサポートしたいの?
ほらほらボクチンここprivateだから他のクラスから触れないからね!
チンカス過ぎる
なんだよカプセル化って
ガキの使いでソースに手を入れようとしてるキチガイでもサポートしたいの?
ほらほらボクチンここprivateだから他のクラスから触れないからね!
チンカス過ぎる
379デフォルトの名無しさん
2017/04/21(金) 05:56:50.07ID:67Y5mbs0 カプセル化はそもそも代入禁止じゃなくて隠蔽なんだが理解して書いてるのか?
SRP原則に則るならカプセル化のほうがいいに決まってる
SRP原則に則るならカプセル化のほうがいいに決まってる
380デフォルトの名無しさん
2017/04/21(金) 06:07:38.30ID:H6APCPmE なぜ隠蔽するかって言うと、不用意な変数の書き換えをさせない為。
関数型言語の場合は必ず変数の書き換え(と言うか再生産だが)を行うには関数を経由する。
変数を隠蔽したい場合は、パッケージで変数や関数単位で公開非公開を指定する。
関数型言語の場合は必ず変数の書き換え(と言うか再生産だが)を行うには関数を経由する。
変数を隠蔽したい場合は、パッケージで変数や関数単位で公開非公開を指定する。
381デフォルトの名無しさん
2017/04/21(金) 06:09:25.78ID:rPWpf+kQ >>379
誰から何を隠蔽するためのものなのか明確になってないんだよ
誰から何を隠蔽するためのものなのか明確になってないんだよ
382デフォルトの名無しさん
2017/04/21(金) 06:13:30.88ID:rPWpf+kQ 例えばライブラリ提供者と使用者
使用者はライブラリ側のソースを一切触ることがなく
提供者は使用者側からの問い合わせや変更依頼を断れない
ここまで立場が明確なときに隠蔽は意味を持つが
すべての人間がどのソースもすべて変更する可能性がある環境で隠蔽は意味を成さない
と俺は思う
使用者はライブラリ側のソースを一切触ることがなく
提供者は使用者側からの問い合わせや変更依頼を断れない
ここまで立場が明確なときに隠蔽は意味を持つが
すべての人間がどのソースもすべて変更する可能性がある環境で隠蔽は意味を成さない
と俺は思う
383デフォルトの名無しさん
2017/04/21(金) 06:25:22.14ID:uAFMuOM4384デフォルトの名無しさん
2017/04/21(金) 06:33:08.40ID:67Y5mbs0385デフォルトの名無しさん
2017/04/21(金) 06:36:29.75ID:rPWpf+kQ >>384
だからそんなものはアプリケーションの仕様の前には意味を成さないんだよ
だからそんなものはアプリケーションの仕様の前には意味を成さないんだよ
386デフォルトの名無しさん
2017/04/21(金) 07:13:56.06ID:zhvS/nL7 車とタイヤをオブジェクト指向で表現する場合、車クラスにタイヤ属性を持つのが良いでしょうか
それぞれクラスを持ってる方が良いでしょうか
それぞれクラスを持ってる方が良いでしょうか
387デフォルトの名無しさん
2017/04/21(金) 07:21:08.83ID:7DnA3IDC >>383
マルチスレッドでも言われるが、参照だけなら基本問題無い。
上でも書かれている通り、隠蔽したければカプセル化じゃ無くても方法はある。
カプセル化と言うか、クラスと言う型に関数(メソッド)や変数(フィールド)を押し込めるのと、関数プログラミング的な考えはメリット/デメリットがそれぞれある。
クラスは依存関係が出来やすいが、GUIなどの多くの状態を保持するのに向く。
一方の関数プログラミングはデータと関数が分かれるので依存関係を少なく出来るが、状態を関数の引数として引き回すのでGUIに向かない。
関数型言語ではa = 1はそのプログラムではずっと1で、2が欲しければinc a とか、succ aとか関数の結果として2を受け取る。
マルチスレッドでも言われるが、参照だけなら基本問題無い。
上でも書かれている通り、隠蔽したければカプセル化じゃ無くても方法はある。
カプセル化と言うか、クラスと言う型に関数(メソッド)や変数(フィールド)を押し込めるのと、関数プログラミング的な考えはメリット/デメリットがそれぞれある。
クラスは依存関係が出来やすいが、GUIなどの多くの状態を保持するのに向く。
一方の関数プログラミングはデータと関数が分かれるので依存関係を少なく出来るが、状態を関数の引数として引き回すのでGUIに向かない。
関数型言語ではa = 1はそのプログラムではずっと1で、2が欲しければinc a とか、succ aとか関数の結果として2を受け取る。
388デフォルトの名無しさん
2017/04/21(金) 07:23:34.62ID:fRfyQmKB >>385
納品したら終わりってアプリを組むときにはカプセル化なんて確かに無用だけど
そもそもカプセル化とかその先のデータ抽象(抽象データ型)とかは、アプリが動いたり大規模化したあと
それをメンテしつつ運用(ちょっとしたバグ修正だけでなく、拡張や機能改変を含め)し続けるときに
それをやりやすくする技術だからなぁ…
納品したら終わりってアプリを組むときにはカプセル化なんて確かに無用だけど
そもそもカプセル化とかその先のデータ抽象(抽象データ型)とかは、アプリが動いたり大規模化したあと
それをメンテしつつ運用(ちょっとしたバグ修正だけでなく、拡張や機能改変を含め)し続けるときに
それをやりやすくする技術だからなぁ…
389デフォルトの名無しさん
2017/04/21(金) 07:24:52.21ID:YTf7CJ3G390デフォルトの名無しさん
2017/04/21(金) 07:30:28.22ID:rPWpf+kQ391デフォルトの名無しさん
2017/04/21(金) 07:38:01.69ID:rPWpf+kQ >>389
お前のソースって読み手が完全な傍観者である場合は意味があるけど
ハイじゃあソースに手を入れなきゃねってなったときには超絶読みにくいんだろ
privateにした変数がクラス内グローバル変数みたいな動作してる典型だよね
お前のソースって読み手が完全な傍観者である場合は意味があるけど
ハイじゃあソースに手を入れなきゃねってなったときには超絶読みにくいんだろ
privateにした変数がクラス内グローバル変数みたいな動作してる典型だよね
392デフォルトの名無しさん
2017/04/21(金) 07:40:08.56ID:uAFMuOM4393デフォルトの名無しさん
2017/04/21(金) 07:43:06.82ID:rPWpf+kQ394デフォルトの名無しさん
2017/04/21(金) 07:48:52.81ID:uAFMuOM4 「実装依存しようとしている人間から実装を隠蔽する」
これ以上どう簡単に言えるのか?
これ以上どう簡単に言えるのか?
395デフォルトの名無しさん
2017/04/21(金) 07:59:35.17ID:YTf7CJ3G >>391
ハイじゃあソースに手を入れなきゃねってなったときには超絶読みにくいだろ
publicにした変数がクラス外にも波及するグローバル変数みたいな動作してる典型だよね
どこまで影響すると思ってるんだ
調査、設計、対応、試験にかかる工数がとんでもない数値になる
ハイじゃあソースに手を入れなきゃねってなったときには超絶読みにくいだろ
publicにした変数がクラス外にも波及するグローバル変数みたいな動作してる典型だよね
どこまで影響すると思ってるんだ
調査、設計、対応、試験にかかる工数がとんでもない数値になる
396デフォルトの名無しさん
2017/04/21(金) 08:21:01.29ID:rPWpf+kQ397デフォルトの名無しさん
2017/04/21(金) 08:30:29.31ID:YTf7CJ3G398デフォルトの名無しさん
2017/04/21(金) 08:30:52.58ID:rPWpf+kQ ていうか読み込んだデータに基づいて処理するも
ソースに記述した定数で処理するも仕様書次第じゃないの?
実装依存が何を指して実装依存って言ってるのかわからない
ソースに記述した定数で処理するも仕様書次第じゃないの?
実装依存が何を指して実装依存って言ってるのかわからない
399デフォルトの名無しさん
2017/04/21(金) 08:31:42.41ID:rPWpf+kQ400デフォルトの名無しさん
2017/04/21(金) 08:39:43.24ID:YTf7CJ3G401デフォルトの名無しさん
2017/04/21(金) 08:46:39.65ID:TFy/T03e 知らなくてもなくても作れるのだから不要。
極論すればアセンブルでも作れる。
極論すればアセンブルでも作れる。
402デフォルトの名無しさん
2017/04/21(金) 08:54:22.04ID:rPWpf+kQ403デフォルトの名無しさん
2017/04/21(金) 08:54:46.12ID:uAFMuOM4 実装がpublicだと他人がその実装に依存して良くないことがありそうだ。参照だけでもマズい。
だからprivateにして実装を隠蔽する。
これのどこに分かりにくい点があるというのか?
設計書とか仕様書とか関係なかろう
だからprivateにして実装を隠蔽する。
これのどこに分かりにくい点があるというのか?
設計書とか仕様書とか関係なかろう
404デフォルトの名無しさん
2017/04/21(金) 09:00:18.64ID:YTf7CJ3G405デフォルトの名無しさん
2017/04/21(金) 09:05:15.16ID:rPWpf+kQ406デフォルトの名無しさん
2017/04/21(金) 09:10:26.57ID:n31cY2TM あぼーん
407デフォルトの名無しさん
2017/04/21(金) 09:27:52.36ID:Ck7s6rRh 個人製作の観点からはカプセル化はいらんな
テンプレートか抽象タイプと多重ディスパッチあれば継承もいらんしミックスインもいらん
テンプレートか抽象タイプと多重ディスパッチあれば継承もいらんしミックスインもいらん
408デフォルトの名無しさん
2017/04/21(金) 09:38:24.71ID:9S9WRWBb >>405
実装する人が複数いる時、自分が作ったクラスのメンバ変数やメンバ関数を利用して
その人の担当クラスを実装する他人が自分のクラスの利用者だろう。
自分が作ったクラスも他人が作ったクラスも変更するのは作った人だけだ。
実装を一人で行える規模ではカプセル化の必要を感じないという話なら分かる。
でも前提なしでカプセル化は不要と主張したら大規模ソフトウェアも含まれる。
もしかして大規模ソフトウェアで必要かどうか全然考えてなかったの?
実装する人が複数いる時、自分が作ったクラスのメンバ変数やメンバ関数を利用して
その人の担当クラスを実装する他人が自分のクラスの利用者だろう。
自分が作ったクラスも他人が作ったクラスも変更するのは作った人だけだ。
実装を一人で行える規模ではカプセル化の必要を感じないという話なら分かる。
でも前提なしでカプセル化は不要と主張したら大規模ソフトウェアも含まれる。
もしかして大規模ソフトウェアで必要かどうか全然考えてなかったの?
409デフォルトの名無しさん
2017/04/21(金) 09:46:56.85ID:cmecYv9F だからホリデープログラマーと話しても無駄やて
410デフォルトの名無しさん
2017/04/21(金) 09:59:20.07ID:WJo/zINx むしろここで仕事の話をする方がおかしいけどな
411デフォルトの名無しさん
2017/04/21(金) 10:01:25.18ID:WJo/zINx >>408
担当のチェンジは無しなの?
担当のチェンジは無しなの?
412デフォルトの名無しさん
2017/04/21(金) 10:22:27.45ID:YTf7CJ3G >>405
話が止まるからまずは全量を語ってくれ
話が止まるからまずは全量を語ってくれ
413デフォルトの名無しさん
2017/04/21(金) 10:43:25.71ID:+U39WrXp カプセル化されていると、メンバ変数とアクセサは分離され、外部のクラス利用者(ユーザコード)はもっぱらアクセサを呼ぶことになる。
仮にメンバ変数の実装の詳細を変更することになっても、アクセサを変更しない限り、ユーザコードは変更する必要はない。
間接層の導入による変更の局所化やね。
メリットと煩わしさの比較は人により異なりうるが、少なくとも必要なケースは少なからずあると思うが。
仮にメンバ変数の実装の詳細を変更することになっても、アクセサを変更しない限り、ユーザコードは変更する必要はない。
間接層の導入による変更の局所化やね。
メリットと煩わしさの比較は人により異なりうるが、少なくとも必要なケースは少なからずあると思うが。
414デフォルトの名無しさん
2017/04/21(金) 10:54:13.27ID:uAFMuOM4 せっかくカプセル化してもアクセッサなんか作ったら不自由になる。
変数を廃止したり形式の変更をしたりしにくくなる。
変数を廃止したり形式の変更をしたりしにくくなる。
415デフォルトの名無しさん
2017/04/21(金) 11:10:28.55ID:rPWpf+kQ >>408
じゃあ利用者ってのはクラス使用者(そのクラスには絶対に手を加えない)のことでいいの?
じゃあ利用者ってのはクラス使用者(そのクラスには絶対に手を加えない)のことでいいの?
416デフォルトの名無しさん
2017/04/21(金) 12:01:38.24ID:YTf7CJ3G417デフォルトの名無しさん
2017/04/21(金) 12:12:59.55ID:T1EM2She 【全量】全体の重量。全体の容積。
418デフォルトの名無しさん
2017/04/21(金) 12:20:09.36ID:YTf7CJ3G >>417
ありがとう
ありがとう
419デフォルトの名無しさん
2017/04/21(金) 12:41:44.49ID:rPWpf+kQ420デフォルトの名無しさん
2017/04/21(金) 12:49:54.80ID:YTf7CJ3G >>419
うだうだ言ってねーで早く語れ
うだうだ言ってねーで早く語れ
421デフォルトの名無しさん
2017/04/21(金) 12:52:42.74ID:3x8HXz+G 相手にしない方がいいよ時間と労力の無駄
ID:YTf7CJ3Gが楽しんでやっているならとめないけど
ID:YTf7CJ3Gが楽しんでやっているならとめないけど
422あ
2017/04/21(金) 13:05:41.49ID:KFYgHFHL 何十年前の話なのかわからなくなるな
423デフォルトの名無しさん
2017/04/21(金) 13:27:43.71ID:T1EM2She >>422
いつ何度でも話していいことだと思うが
会話ってそういうものだと思う
人の色恋沙汰なんて4000年前に語りつくされているが
今なお人の心をとらえて離さないだろ
オブジェクト指向にとってカプセル化とは
それくらいの魅力があるものだってこと
会話っていうのは昔々誰々がすでにいったことだから
言っちゃいけない、話しちゃいけないなんてもんじゃない
会話に入りたいって素直に言うべき、カプセル化やめるべきって
ちゃんというべき
いつ何度でも話していいことだと思うが
会話ってそういうものだと思う
人の色恋沙汰なんて4000年前に語りつくされているが
今なお人の心をとらえて離さないだろ
オブジェクト指向にとってカプセル化とは
それくらいの魅力があるものだってこと
会話っていうのは昔々誰々がすでにいったことだから
言っちゃいけない、話しちゃいけないなんてもんじゃない
会話に入りたいって素直に言うべき、カプセル化やめるべきって
ちゃんというべき
424デフォルトの名無しさん
2017/04/21(金) 13:46:02.03ID:YTf7CJ3G425デフォルトの名無しさん
2017/04/21(金) 13:51:29.39ID:cmecYv9F426デフォルトの名無しさん
2017/04/21(金) 14:26:24.80ID:uAFMuOM4427デフォルトの名無しさん
2017/04/21(金) 14:50:09.12ID:T1EM2She428デフォルトの名無しさん
2017/04/21(金) 14:51:20.94ID:T1EM2She この業界趣味でやってる人の方が技術力高かったりするからね
サンデープログラマを馬鹿にしちゃいけない
サンデープログラマを馬鹿にしちゃいけない
429デフォルトの名無しさん
2017/04/21(金) 15:30:29.00ID:YTf7CJ3G430デフォルトの名無しさん
2017/04/21(金) 15:33:45.46ID:I/U40a25 データのカプセル化なんてプログラム上どこまで触って(参照/代入)いいかの線引きを決まりごとからシステム的に制限したかの違いなだけでしょ
c言語のFILE構造体の中身を参照する事はないでしょ。stdio.hに定義されていても
それは暗黙的な決まりごとだからだし、それをアクセス修飾子で明示したのがカプセル化って言葉なだけで昔からの決まりごととしては変わらない
c言語のFILE構造体の中身を参照する事はないでしょ。stdio.hに定義されていても
それは暗黙的な決まりごとだからだし、それをアクセス修飾子で明示したのがカプセル化って言葉なだけで昔からの決まりごととしては変わらない
431デフォルトの名無しさん
2017/04/21(金) 15:42:27.29ID:T1EM2She >>429
どうして必要だと思ってるのか全量を言えよ、じゃないと理解できない
どうして必要だと思ってるのか全量を言えよ、じゃないと理解できない
432デフォルトの名無しさん
2017/04/21(金) 15:46:08.76ID:T1EM2She >>430
その決まりが要らないものだったんじゃないかっていうのが
カプセル化害悪論の骨子なんだよ
暗黙的なものは暗黙的なままでよかったんじゃないか?
なぜ明示する必要があったのか、それによってプログラムが
複雑になることを受け入れるのか、プログラムがブラックボックス化することに
歯止めをかけてクリーンなオブジェクト指向を取り戻そうというのが
カプセル化害悪論のモチベーション
その決まりが要らないものだったんじゃないかっていうのが
カプセル化害悪論の骨子なんだよ
暗黙的なものは暗黙的なままでよかったんじゃないか?
なぜ明示する必要があったのか、それによってプログラムが
複雑になることを受け入れるのか、プログラムがブラックボックス化することに
歯止めをかけてクリーンなオブジェクト指向を取り戻そうというのが
カプセル化害悪論のモチベーション
433デフォルトの名無しさん
2017/04/21(金) 15:49:33.07ID:YTf7CJ3G434デフォルトの名無しさん
2017/04/21(金) 15:51:44.08ID:T1EM2She >>433
聞き返したのは俺だ、ちゃんと全量を示せ、逃げるな
聞き返したのは俺だ、ちゃんと全量を示せ、逃げるな
435デフォルトの名無しさん
2017/04/21(金) 15:55:05.36ID:YTf7CJ3G 質問に対する答えが質問になる程度の考えしか持たぬならもういいわ
436デフォルトの名無しさん
2017/04/21(金) 15:55:47.07ID:T1EM2She >>435
捨て台詞まで吐いて逃げるのな?
捨て台詞まで吐いて逃げるのな?
437デフォルトの名無しさん
2017/04/21(金) 15:56:28.58ID:T1EM2She もういいわて、お前は漫才師か!
438デフォルトの名無しさん
2017/04/21(金) 15:57:50.64ID:YTf7CJ3G そだね
439デフォルトの名無しさん
2017/04/21(金) 15:59:01.00ID:T1EM2She はい逃げた、結局カプセル化を支持するやつって中身のないその場限りの
見栄を張って問い詰められたら逃げるだけの俄かなんだよな
見栄を張って問い詰められたら逃げるだけの俄かなんだよな
440デフォルトの名無しさん
2017/04/21(金) 16:01:17.62ID:YTf7CJ3G そだね
441デフォルトの名無しさん
2017/04/21(金) 16:01:35.09ID:I/U40a25 >>432
カプセル化害悪論ってのは一理あるし正しいと思うけどね
性善説と性悪説みたいなところだから正解はでないと思うし
ただ、このスレのカプセル化反対の意見はそんなレベルの話じゃない、そもそも議題のカプセル化の認識ズレの話なんじゃないのかな
カプセル化害悪論ってのは一理あるし正しいと思うけどね
性善説と性悪説みたいなところだから正解はでないと思うし
ただ、このスレのカプセル化反対の意見はそんなレベルの話じゃない、そもそも議題のカプセル化の認識ズレの話なんじゃないのかな
442デフォルトの名無しさん
2017/04/21(金) 16:08:41.18ID:rPWpf+kQ443デフォルトの名無しさん
2017/04/21(金) 16:14:29.43ID:9S9WRWBb444デフォルトの名無しさん
2017/04/21(金) 16:20:27.91ID:rPWpf+kQ >>443
んでメリットの説明ってあったっけ?
んでメリットの説明ってあったっけ?
445デフォルトの名無しさん
2017/04/21(金) 16:20:44.14ID:YTf7CJ3G446デフォルトの名無しさん
2017/04/21(金) 16:22:11.78ID:jkmg2197 カプセル化害悪派 <------- 結合度ビーーーーム
死亡
死亡
447デフォルトの名無しさん
2017/04/21(金) 16:35:15.00ID:9S9WRWBb448デフォルトの名無しさん
2017/04/21(金) 16:41:52.97ID:uAFMuOM4 どうでもいいけどメリデメって略すの嫌い
449デフォルトの名無しさん
2017/04/21(金) 16:43:18.10ID:jkmg2197 カプセル化害悪論って、どっかで聞きかじった継承害悪論とごっちゃになってるんじゃないのか?
450あ
2017/04/21(金) 16:49:15.74ID:KFYgHFHL >>423
どちらでも無いと思うよ。少なくともどちらかへの「べき」ではない。
隠したいものは隠せばいいし、機械へのポカヨケを埋め込むのも今もうすでに実行不可なメモリみたいなどこのハーバードアーキテクチャだよみたいなの再発明してんじゃん。
どちらでも無いと思うよ。少なくともどちらかへの「べき」ではない。
隠したいものは隠せばいいし、機械へのポカヨケを埋め込むのも今もうすでに実行不可なメモリみたいなどこのハーバードアーキテクチャだよみたいなの再発明してんじゃん。
451デフォルトの名無しさん
2017/04/21(金) 17:12:45.41ID:9S9WRWBb452デフォルトの名無しさん
2017/04/21(金) 17:31:41.72ID:jkmg2197 >>199みたいな、ここまでがっちり結合したコードを良しとする人が、数万行程度コードを書いたらどんなことになるのか見てみたいわ
453デフォルトの名無しさん
2017/04/21(金) 18:00:15.36ID:T1EM2She >>452
おめーのコード出してもらおうか
俺はそれを複雑すぎるとさんざんにこき下ろすから
他人のコードにいちゃもんつけて自分のコードは出しませんなんて
そんなのありえないだろ、ベッドで女のパンツ脱がして
自分はスリーピースをぴっちり着込んでるようなもの
どちらが変態化は言うまでもないよね?
おめーのコード出してもらおうか
俺はそれを複雑すぎるとさんざんにこき下ろすから
他人のコードにいちゃもんつけて自分のコードは出しませんなんて
そんなのありえないだろ、ベッドで女のパンツ脱がして
自分はスリーピースをぴっちり着込んでるようなもの
どちらが変態化は言うまでもないよね?
454デフォルトの名無しさん
2017/04/21(金) 18:03:14.83ID:T1EM2She >>451
やはりな、継承はオブジェクト指向に必要ないよな
POJOはたしかに話題にはなったが、まだJavaBeansの呪縛から
脱しきれてない過剰カプセル化によって逆に脆くなった
設計ばかりが出回った
いままでは聞いたことがなかっただろうが
もうお前は聞いたんだからこれからはカプセル化害悪論を
聞いたことがあるというべきだし、すぐれた設計だと
後世に伝えていくべき
やはりな、継承はオブジェクト指向に必要ないよな
POJOはたしかに話題にはなったが、まだJavaBeansの呪縛から
脱しきれてない過剰カプセル化によって逆に脆くなった
設計ばかりが出回った
いままでは聞いたことがなかっただろうが
もうお前は聞いたんだからこれからはカプセル化害悪論を
聞いたことがあるというべきだし、すぐれた設計だと
後世に伝えていくべき
455デフォルトの名無しさん
2017/04/21(金) 18:04:56.46ID:YTf7CJ3G >>453
おまえはおまえのコード以外を認めないんだから黙ってろ
おまえはおまえのコード以外を認めないんだから黙ってろ
456デフォルトの名無しさん
2017/04/21(金) 18:05:19.93ID:T1EM2She >>455
……
……
457デフォルトの名無しさん
2017/04/21(金) 18:07:31.03ID:jkmg2197 >>453
別に俺が出すまでもなく、世の中にはそこそこSOLIDを目指したなかなかのコードが死ぬほど公開されてるんだが
> 俺はそれを複雑すぎるとさんざんにこき下ろすから
それらが読めないとしたら、それは複雑すぎる場合もあるだろうが、大抵は君のスキル不足だろうね
試しにgitfubから有名どころの1万行以上のプロダクトを選択してこきおろしてみたら?
別に俺が出すまでもなく、世の中にはそこそこSOLIDを目指したなかなかのコードが死ぬほど公開されてるんだが
> 俺はそれを複雑すぎるとさんざんにこき下ろすから
それらが読めないとしたら、それは複雑すぎる場合もあるだろうが、大抵は君のスキル不足だろうね
試しにgitfubから有名どころの1万行以上のプロダクトを選択してこきおろしてみたら?
458デフォルトの名無しさん
2017/04/21(金) 18:11:31.05ID:YTf7CJ3G >>454
>いままでは聞いたことがなかっただろうが
もうお前は聞いたんだからこれからはカプセル化害悪論を
>聞いたことがあるというべきだし、すぐれた設計だと
>後世に伝えていくべき
一切論じられてないよ
悪いんだけどどこらで論じてたのか教えてくれる?
>いままでは聞いたことがなかっただろうが
もうお前は聞いたんだからこれからはカプセル化害悪論を
>聞いたことがあるというべきだし、すぐれた設計だと
>後世に伝えていくべき
一切論じられてないよ
悪いんだけどどこらで論じてたのか教えてくれる?
459デフォルトの名無しさん
2017/04/21(金) 18:11:49.39ID:T1EM2She460デフォルトの名無しさん
2017/04/21(金) 18:12:34.04ID:jkmg2197462デフォルトの名無しさん
2017/04/21(金) 18:14:43.96ID:T1EM2She >>460
お前は俺のコードにいちゃもんつけたから
俺はお前のコードにいちゃもんつける
それてフィフティフィフティだ
さあ出してもらおうか、お前の全力を見せろ
他人のふんどしで相撲取ろうとするな卑怯者
お前は俺のコードにいちゃもんつけたから
俺はお前のコードにいちゃもんつける
それてフィフティフィフティだ
さあ出してもらおうか、お前の全力を見せろ
他人のふんどしで相撲取ろうとするな卑怯者
463デフォルトの名無しさん
2017/04/21(金) 18:15:18.80ID:T1EM2She とうぜんキャットドア問題を解決するコードだ
464デフォルトの名無しさん
2017/04/21(金) 18:16:17.62ID:T1EM2She 結局キャットドア問題を解決できたの俺だけじゃん
カプセル化を導入してたらできてなかったと思う
俺は歴史の生き証人
カプセル化を導入してたらできてなかったと思う
俺は歴史の生き証人
465デフォルトの名無しさん
2017/04/21(金) 18:17:40.73ID:jkmg2197 >>462,463
俺には難しすぎて読めませんって白状しろよ
俺には難しすぎて読めませんって白状しろよ
466デフォルトの名無しさん
2017/04/21(金) 18:17:51.34ID:T1EM2She キャットドア問題をオブジェクト指向で解決してください
権威や数の力は不要だ、オブジェクト指向をわかっているなら
自力で解決できるはずだ
権威や数の力は不要だ、オブジェクト指向をわかっているなら
自力で解決できるはずだ
467デフォルトの名無しさん
2017/04/21(金) 18:18:26.45ID:YTf7CJ3G468デフォルトの名無しさん
2017/04/21(金) 18:18:45.77ID:jkmg2197469デフォルトの名無しさん
2017/04/21(金) 18:19:13.64ID:T1EM2She >>465
で、キャットドア問題を解決するオブジェクト指向のお前が書いたコードは?
俺は書いたよ、お前にいちゃもんつけられたけど
だから、俺はお前が書いたコードをボコボコに貶してやる所存だけど
お前はその覚悟もできてるし受けて立つ実力もあるんだよな
じゃあコードを書いてもらおうか
で、キャットドア問題を解決するオブジェクト指向のお前が書いたコードは?
俺は書いたよ、お前にいちゃもんつけられたけど
だから、俺はお前が書いたコードをボコボコに貶してやる所存だけど
お前はその覚悟もできてるし受けて立つ実力もあるんだよな
じゃあコードを書いてもらおうか
471デフォルトの名無しさん
2017/04/21(金) 18:21:06.06ID:T1EM2She 仕様にいちゃもんつけて逃げたりしてw
472デフォルトの名無しさん
2017/04/21(金) 18:21:25.26ID:jkmg2197473デフォルトの名無しさん
2017/04/21(金) 18:21:43.58ID:T1EM2She この手の手合いは他人を否定するけど自分では何も作れない木偶の坊と相場が決まってるからな
474デフォルトの名無しさん
2017/04/21(金) 18:22:17.82ID:T1EM2She さて、どんなコード書くんだろうな、楽しみだわ
475デフォルトの名無しさん
2017/04/21(金) 18:23:03.71ID:T1EM2She476デフォルトの名無しさん
2017/04/21(金) 18:23:31.45ID:jkmg2197477デフォルトの名無しさん
2017/04/21(金) 18:24:37.49ID:T1EM2She 他人を否定すればするほど自分のハードルがあがるけど大丈夫なのかな
結局自分のコード書けないパターンをちゃくちゃくと歩んでるようだけど大丈夫なのかな
逃げ出しそうだぞ、大丈夫なのかな
結局自分のコード書けないパターンをちゃくちゃくと歩んでるようだけど大丈夫なのかな
逃げ出しそうだぞ、大丈夫なのかな
478デフォルトの名無しさん
2017/04/21(金) 18:26:54.78ID:YTf7CJ3G >>477
カプセル化害悪論の根拠を示してくれるかな?
カプセル化害悪論の根拠を示してくれるかな?
479デフォルトの名無しさん
2017/04/21(金) 18:27:35.87ID:T1EM2She >>478
……
……
480デフォルトの名無しさん
2017/04/21(金) 18:28:40.65ID:YTf7CJ3G481デフォルトの名無しさん
2017/04/21(金) 18:29:00.98ID:T1EM2She ……
482デフォルトの名無しさん
2017/04/21(金) 18:29:47.23ID:T1EM2She 黙ってろって言われたから黙らざるを得ないのに
それで了解とか自己完結しすぎだと思う、病んでるよ彼は病んでるよ
それで了解とか自己完結しすぎだと思う、病んでるよ彼は病んでるよ
483デフォルトの名無しさん
2017/04/21(金) 18:30:19.40ID:YTf7CJ3G >>482
じゃあ黙り続けろよ
じゃあ黙り続けろよ
484デフォルトの名無しさん
2017/04/21(金) 18:30:38.43ID:T1EM2She >>483
……
……
485デフォルトの名無しさん
2017/04/21(金) 18:30:56.12ID:T1EM2She 俺のことは寡黙な人と呼んでくれ
486デフォルトの名無しさん
2017/04/21(金) 18:31:20.37ID:YTf7CJ3G >>485
黙ってねーじゃねーか
黙ってねーじゃねーか
487デフォルトの名無しさん
2017/04/21(金) 18:32:01.93ID:T1EM2She >>486
クソレスすんなハゲ
クソレスすんなハゲ
488デフォルトの名無しさん
2017/04/21(金) 18:33:35.27ID:YTf7CJ3G489デフォルトの名無しさん
2017/04/21(金) 18:36:02.42ID:T1EM2She ハゲもプログラム書けんの?
書けるんだったらオブジェクト指向でキャットドア問題に調整してほしい
書けるんだったらオブジェクト指向でキャットドア問題に調整してほしい
490あ
2017/04/21(金) 18:39:02.82ID:KFYgHFHL あのドアってこういう話の発端から出てきた問題だったんだな。
オブジェクト指向で、ってそういう事か、なるほど。
ナンセンスだな。
何を以ってドアと成立するか定義できてるようで出来てない。
定義1を死守したければ、俺なら定義1は定義0の子クラスにして、定義2は定義1を継承せずに定義0から作るわ。
定義0は最終的にObjectに収斂する。
クラス設計を破壊せずに性質を追加ってのが矛盾してる。
ワイン樽と泥水の問題。
オブジェクト指向で、ってそういう事か、なるほど。
ナンセンスだな。
何を以ってドアと成立するか定義できてるようで出来てない。
定義1を死守したければ、俺なら定義1は定義0の子クラスにして、定義2は定義1を継承せずに定義0から作るわ。
定義0は最終的にObjectに収斂する。
クラス設計を破壊せずに性質を追加ってのが矛盾してる。
ワイン樽と泥水の問題。
491デフォルトの名無しさん
2017/04/21(金) 18:42:27.87ID:T1EM2She ↑こうやって仕様に文句を付けて
コードから逃げる人間は飽きるほど見てきた
オブジェクト指向のコードをかける人間はいないのか
コードから逃げる人間は飽きるほど見てきた
オブジェクト指向のコードをかける人間はいないのか
493デフォルトの名無しさん
2017/04/21(金) 18:46:48.77ID:T1EM2She >>492
それどこよ? どれよ? どこなのよ? どこーーー!!
それどこよ? どれよ? どこなのよ? どこーーー!!
494デフォルトの名無しさん
2017/04/21(金) 18:47:06.08ID:T1EM2She 取り乱してしまいまして
495あ
2017/04/21(金) 18:48:45.01ID:KFYgHFHL もちろん、オブジェクト指向が役に立ちづらい、リアルな機械はそもそもコンポーネント指向で作るとも書いたし、コード自体適当なのも確かだが。
860 あ sage 2017/04/14(金) 08:00:23.71 ID:6kAIEFCu
ゴルーチンでドアとノブとストッパーとオートクローザーと個々に置いて、Channelで疎通させたらgoっぽい現実解になった。
ドアノブがあるとは限らんし、ドアノブとは別に鍵があるかもしれんし、とか思うと埋め込みではうまくいかんな。
この辺は機械と同じでコンポーネントにしとかないと後でわけわからん便利ボタン作られたときに面倒くさいと構えてしまったわ。
ラダーのほうがわかりやすいのかけるかも。
しかしideoneすげえな。
866 あ sage 2017/04/14(金) 10:26:30.48 ID:6kAIEFCu
>>862
http://ideone.com/yvttId
860 あ sage 2017/04/14(金) 08:00:23.71 ID:6kAIEFCu
ゴルーチンでドアとノブとストッパーとオートクローザーと個々に置いて、Channelで疎通させたらgoっぽい現実解になった。
ドアノブがあるとは限らんし、ドアノブとは別に鍵があるかもしれんし、とか思うと埋め込みではうまくいかんな。
この辺は機械と同じでコンポーネントにしとかないと後でわけわからん便利ボタン作られたときに面倒くさいと構えてしまったわ。
ラダーのほうがわかりやすいのかけるかも。
しかしideoneすげえな。
866 あ sage 2017/04/14(金) 10:26:30.48 ID:6kAIEFCu
>>862
http://ideone.com/yvttId
496あ
2017/04/21(金) 18:53:00.35ID:KFYgHFHL 何でわざわざ関数作ったのに放棄してクロージャ変数にしてるか見たら、カプセル化がオブジェクト指向の専売でもなけりゃ普遍的に便利なものか気づくだろ。
497デフォルトの名無しさん
2017/04/21(金) 18:59:03.34ID:T1EM2She498あ
2017/04/21(金) 19:05:27.23ID:dftFol4E >>497
クロージャはカプセル化で、カプセル化害悪論には大反対だ。
カプセル化されてるから、ドアは責任を持ってイベントに対して好きなことを好きなだけできるし、他人はそれに関与せずにイベントの投げ合いで済む。
鍵のないドアだってあるんだから。
クロージャはカプセル化で、カプセル化害悪論には大反対だ。
カプセル化されてるから、ドアは責任を持ってイベントに対して好きなことを好きなだけできるし、他人はそれに関与せずにイベントの投げ合いで済む。
鍵のないドアだってあるんだから。
499あ
2017/04/21(金) 19:06:54.30ID:dftFol4E 見せたくないものを隠すんだけじゃない。
見て不快なものが目に入らないようにするためにも使えるんだよ。
NHKの入らないテレビみたいなもんだ。
見て不快なものが目に入らないようにするためにも使えるんだよ。
NHKの入らないテレビみたいなもんだ。
500デフォルトの名無しさん
2017/04/21(金) 19:27:31.37ID:rPWpf+kQ >>499
具体的に誰に対してやってるの?
具体的に誰に対してやってるの?
501デフォルトの名無しさん
2017/04/21(金) 19:29:06.55ID:T1EM2She >>498
カプセル化害悪論に反対しているとのことだけれども
もしクロージャがカプセル化ではないと仮定したら
カプセル化害悪論に反対する理由もなくなると思うんだよ
クロージャってどちらかというとローカル変数じゃない?
クロージャオブジェクトを使うところって関数内に限られると思うんだよ
そう考えるなら結局クロージャってローカル変数ってことになるわけじゃん?
だからクロージャを使ってもカプセル化害悪論には反しないんだよ
カプセル化害悪論に反対しているとのことだけれども
もしクロージャがカプセル化ではないと仮定したら
カプセル化害悪論に反対する理由もなくなると思うんだよ
クロージャってどちらかというとローカル変数じゃない?
クロージャオブジェクトを使うところって関数内に限られると思うんだよ
そう考えるなら結局クロージャってローカル変数ってことになるわけじゃん?
だからクロージャを使ってもカプセル化害悪論には反しないんだよ
502あ
2017/04/21(金) 20:03:29.23ID:qsriX73g503デフォルトの名無しさん
2017/04/21(金) 20:07:05.07ID:rPWpf+kQ504あ
2017/04/21(金) 20:17:17.21ID:qsriX73g >>503
うん。書いてるから何?
書いてるから触ってはいけないとわかるはずだ、なら、無意味かつ実務知らなすぎだな。
書いてて触ってはいけないならば、触れることができてはいけないんだよ。本来は。
AppleのMacOSのUIのデザイン規約くらいの時代から書いてた話。
感電するよって書いてたら覆いをしなくたって良いなんて機械はありえないのと同じ。
うん。書いてるから何?
書いてるから触ってはいけないとわかるはずだ、なら、無意味かつ実務知らなすぎだな。
書いてて触ってはいけないならば、触れることができてはいけないんだよ。本来は。
AppleのMacOSのUIのデザイン規約くらいの時代から書いてた話。
感電するよって書いてたら覆いをしなくたって良いなんて機械はありえないのと同じ。
505デフォルトの名無しさん
2017/04/21(金) 20:22:47.97ID:YTf7CJ3G 包丁は料理にのみ使われるものだから傷害事件で扱われる刃物は包丁以外であるって理屈
506デフォルトの名無しさん
2017/04/21(金) 20:32:03.02ID:rPWpf+kQ507デフォルトの名無しさん
2017/04/21(金) 20:45:20.00ID:YTf7CJ3G 車のブレーキだけを踏んでたら全然進まないのでプレーキを踏んでもちゃんと進むように修理する工場だな
508デフォルトの名無しさん
2017/04/21(金) 20:51:25.16ID:uAFMuOM4 カプセル化の意義を誤解するものはfriendの意義も誤解する
509あ
2017/04/21(金) 21:04:20.97ID:qsriX73g >>506
本来なら設計書を記述するどころか設計変更申請出して承認を経て設計書と設計変更書を出して、実装を変更して設計変更書から起こされた上がってきたテスト仕様書でテストして完了するけど、何もやりにくくないでしょ。
カプセル化は役に立つよ。担保となる元の設計書で使ってる部品の設計書を出来る限り見ずに済むし、
なんなら部品ごと新しく変えてもIFさえあってれば良い証左になるんだから。
>>507
プレーキとやらの定義が、踏めば進むというものであるならそう治すべく修理なり改修なりするわな。
このパンチメタルで穴が空いてる部品は共有部品で、AT車ならフットレスト、MT車ならクラッチペダルにつける部品の首がよく腐るから設計変更するなら、
押してクラッチが切れるかもしれない部品であり、押しても何も起こらない部品を同時に設計変更してる事になるが。
お前らのドアってこのパンチメタルの板くらいフワフワした定義。
本来なら設計書を記述するどころか設計変更申請出して承認を経て設計書と設計変更書を出して、実装を変更して設計変更書から起こされた上がってきたテスト仕様書でテストして完了するけど、何もやりにくくないでしょ。
カプセル化は役に立つよ。担保となる元の設計書で使ってる部品の設計書を出来る限り見ずに済むし、
なんなら部品ごと新しく変えてもIFさえあってれば良い証左になるんだから。
>>507
プレーキとやらの定義が、踏めば進むというものであるならそう治すべく修理なり改修なりするわな。
このパンチメタルで穴が空いてる部品は共有部品で、AT車ならフットレスト、MT車ならクラッチペダルにつける部品の首がよく腐るから設計変更するなら、
押してクラッチが切れるかもしれない部品であり、押しても何も起こらない部品を同時に設計変更してる事になるが。
お前らのドアってこのパンチメタルの板くらいフワフワした定義。
510デフォルトの名無しさん
2017/04/21(金) 21:09:39.74ID:rPWpf+kQ >>509
設計書書いてるんだよね?
だったら今回の開発でそのメソッドを呼び出す奴は決まってる
今後増える予定を想定することの記述も設計書にはないでしょ?
この状態でprivateとpublicになんの意味があるの?
設計書書いてるんだよね?
だったら今回の開発でそのメソッドを呼び出す奴は決まってる
今後増える予定を想定することの記述も設計書にはないでしょ?
この状態でprivateとpublicになんの意味があるの?
511デフォルトの名無しさん
2017/04/21(金) 21:11:56.33ID:YTf7CJ3G512あ
2017/04/21(金) 21:16:51.77ID:qsriX73g >>510
呼び出すやつは決まってる、今後呼び出し方が変わる予定も無い。
ならばそいつはそれがインターフェイスで良いと思うけど、インターフェイスが無いわけではない。そいつがそのものであるだけで。
その上で、疎通にはこれを使おうね、これは使ってくれるなよ、と言う設計は無為味だし、むしろそうならばモジュラーにせずにそれごと機械に埋めてしまえとなる。
そうでは無くて、壊れたらこれだけ変えられるようにしとこう、とか、これだけを改良できるようにしよう、とか、
不具合が出たときに特定しやくすしとこうとなると、ある意味不自由を強制する形で決まった形で疎通させるのは当然でしょ。
お前のパソコンがノートパソコンならタッチパッドは前者、USBマウスは後者だよ。
呼び出すやつは決まってる、今後呼び出し方が変わる予定も無い。
ならばそいつはそれがインターフェイスで良いと思うけど、インターフェイスが無いわけではない。そいつがそのものであるだけで。
その上で、疎通にはこれを使おうね、これは使ってくれるなよ、と言う設計は無為味だし、むしろそうならばモジュラーにせずにそれごと機械に埋めてしまえとなる。
そうでは無くて、壊れたらこれだけ変えられるようにしとこう、とか、これだけを改良できるようにしよう、とか、
不具合が出たときに特定しやくすしとこうとなると、ある意味不自由を強制する形で決まった形で疎通させるのは当然でしょ。
お前のパソコンがノートパソコンならタッチパッドは前者、USBマウスは後者だよ。
513デフォルトの名無しさん
2017/04/21(金) 21:25:56.38ID:rPWpf+kQ514デフォルトの名無しさん
2017/04/21(金) 21:29:21.44ID:JwbSy4qm ここまでの流れで面白いのは>>414の視点だけ
カプセル化がどうの
その是非がどうのとはさんざん繰り返されがちだが
アクセッサ自体が意外と臭いよねって観点まで到達できる人は少ない
また、そこから先の議論についてもあまり見かけない
カプセル化がどうの
その是非がどうのとはさんざん繰り返されがちだが
アクセッサ自体が意外と臭いよねって観点まで到達できる人は少ない
また、そこから先の議論についてもあまり見かけない
515デフォルトの名無しさん
2017/04/21(金) 21:31:37.27ID:cmecYv9F >>514
そもそもアクセサなんてものはモダン言語では自動生成なので論外
そもそもアクセサなんてものはモダン言語では自動生成なので論外
516デフォルトの名無しさん
2017/04/21(金) 21:33:08.50ID:YTf7CJ3G >>513
いつもよくわかってないな
いつもよくわかってないな
517デフォルトの名無しさん
2017/04/21(金) 21:34:14.81ID:JwbSy4qm その自動生成ってのを嬉しがる精神性が問題
アクセッサなんか書きにくいほうが健全
きみにはまだ伝わらないと思うし
これ以上言葉費やす予定もない
アクセッサなんか書きにくいほうが健全
きみにはまだ伝わらないと思うし
これ以上言葉費やす予定もない
518あ
2017/04/21(金) 21:35:03.27ID:AJ6tejAv519デフォルトの名無しさん
2017/04/21(金) 21:40:55.19ID:rPWpf+kQ520あ
2017/04/21(金) 21:44:00.25ID:AJ6tejAv >>519
修正した仕様書の妥当性はどう計測して、修正したソースの妥当性はどう計測するの?
インアウトが確実に2つずつなら、ステートマシンでも組み合わせ数は知れてるだろうが、
インアウトの数が担保できなければそんなもの検証しようがない。
修正した仕様書の妥当性はどう計測して、修正したソースの妥当性はどう計測するの?
インアウトが確実に2つずつなら、ステートマシンでも組み合わせ数は知れてるだろうが、
インアウトの数が担保できなければそんなもの検証しようがない。
521あ
2017/04/21(金) 21:46:20.92ID:AJ6tejAv 逆に言うわ。publicなものの組み合わせを検証する必要が本当に正しいと証明するためにはある。それはnCmで増える。
だから、組み合わせを減らしたい。
だから、組み合わせを減らしたい。
522デフォルトの名無しさん
2017/04/21(金) 21:47:22.88ID:cmecYv9F >>517
いーやわかってないのはおまえ
アクセサの必要性が低いなんてことは歴史的背景ふまえググれば中学生でもわかること
ではなぜ事実上、必須になっているか
そこまで考えてはじめて俺と同じ土俵に立てる
出直せ
いーやわかってないのはおまえ
アクセサの必要性が低いなんてことは歴史的背景ふまえググれば中学生でもわかること
ではなぜ事実上、必須になっているか
そこまで考えてはじめて俺と同じ土俵に立てる
出直せ
523あ
2017/04/21(金) 21:51:18.83ID:AJ6tejAv >>522
アクセサは自動生成されるべきじゃないし、される言語も少なくないか?アクセサ作ったらメンバが生えるのはあるだろうけと。
アクセサは自動生成されるべきじゃないし、される言語も少なくないか?アクセサ作ったらメンバが生えるのはあるだろうけと。
524デフォルトの名無しさん
2017/04/21(金) 21:51:19.37ID:TFy/T03e publicフィールド = 何の制限もかけられないアクセッサだよ
つまりいずれにしろアクセッサ相当のものを使っているわけで、
問題はアクセッサがいるかどうか?ではなく、
制限をかける必要があるかどうか?
で考えたほうが良い。
つまりいずれにしろアクセッサ相当のものを使っているわけで、
問題はアクセッサがいるかどうか?ではなく、
制限をかける必要があるかどうか?
で考えたほうが良い。
526デフォルトの名無しさん
2017/04/21(金) 21:58:52.01ID:cmecYv9F527デフォルトの名無しさん
2017/04/21(金) 21:59:11.05ID:rPWpf+kQ528あ
2017/04/21(金) 22:07:30.53ID:AJ6tejAv529デフォルトの名無しさん
2017/04/21(金) 22:11:46.98ID:TFy/T03e 設計書が正しければ、正しいプログラムができるはずだ!
530デフォルトの名無しさん
2017/04/21(金) 22:15:10.16ID:TFy/T03e 設計書が正しいことをきちんとテストする必要がある。
つまり、設計書のテスト仕様書が必要だ。
そしてそのテスト仕様書通りに設計書が
正しいかをテストする人間も必要になる。
そこで重用なのは、テストの手法である。
設計書が正しいことをどうやってテストするか?
つまり設計書を書いた人間への聞き取り作業である。
設計書に書き漏れがないか?設計書に書かれた言葉に矛盾がないか?
テスト仕様書に従って設計書を見ながら設計者を問い詰める。
これが設計書に対する優れたテスト方法である
つまり、設計書のテスト仕様書が必要だ。
そしてそのテスト仕様書通りに設計書が
正しいかをテストする人間も必要になる。
そこで重用なのは、テストの手法である。
設計書が正しいことをどうやってテストするか?
つまり設計書を書いた人間への聞き取り作業である。
設計書に書き漏れがないか?設計書に書かれた言葉に矛盾がないか?
テスト仕様書に従って設計書を見ながら設計者を問い詰める。
これが設計書に対する優れたテスト方法である
531あ
2017/04/21(金) 22:21:07.33ID:AJ6tejAv 揶揄してるようだが、設計書をテストする設計書にあたるものが、設計変更申請書だよ。
それはヒアリングやら検証実験やら、承認者の首やら、人の手で担保するもの
大規模開発した事ないのかな。
それはヒアリングやら検証実験やら、承認者の首やら、人の手で担保するもの
大規模開発した事ないのかな。
532デフォルトの名無しさん
2017/04/21(金) 22:22:18.55ID:cmecYv9F >>528
アクセス制限をするのはアクセス修飾の役割だしアクセサがあろうと無かろうとそれは必要
だからモダン言語にはプロパティというものがある
プロパティに出来てpublic変数に出来ないことを考えればおのずとプロパティでいいよねという結論にたどり着くと思うがね
アクセス制限をするのはアクセス修飾の役割だしアクセサがあろうと無かろうとそれは必要
だからモダン言語にはプロパティというものがある
プロパティに出来てpublic変数に出来ないことを考えればおのずとプロパティでいいよねという結論にたどり着くと思うがね
533デフォルトの名無しさん
2017/04/21(金) 22:23:36.50ID:rPWpf+kQ うーん
ぶっちゃけそれとカプセル化との関連が不明
もはや何を主張したいのか滅茶苦茶な気がするんだけど
ぶっちゃけそれとカプセル化との関連が不明
もはや何を主張したいのか滅茶苦茶な気がするんだけど
534デフォルトの名無しさん
2017/04/21(金) 22:24:22.02ID:TFy/T03e > 設計書をテストする設計書にあたるものが
意味わからん。
設計書をテストするものは、設計書のテスト仕様書だ。
つまりその設計には、○○の場合の処理は抜けていないか?
○○の場合に不整合は起きないか?
などというものが書かれいいるもので無ければ、
設計書のテスト仕様書とはよべない。
意味わからん。
設計書をテストするものは、設計書のテスト仕様書だ。
つまりその設計には、○○の場合の処理は抜けていないか?
○○の場合に不整合は起きないか?
などというものが書かれいいるもので無ければ、
設計書のテスト仕様書とはよべない。
535デフォルトの名無しさん
2017/04/21(金) 22:25:20.57ID:rPWpf+kQ >>520の発言内容はカプセル化と関係ないよね?
536デフォルトの名無しさん
2017/04/21(金) 22:26:41.05ID:TFy/T03e >>532
> アクセス制限をするのはアクセス修飾の役割だしアクセサがあろうと無かろうとそれは必要
アクセッサはアクセス制限ではなく、アクセスした後に入れようとした値が
正常値かどうかを判断するもの。
型だけでは表現できない特殊なルールを記述する所
アクセス修飾子は単にアクセスできるかどうかしか記述できない。
> アクセス制限をするのはアクセス修飾の役割だしアクセサがあろうと無かろうとそれは必要
アクセッサはアクセス制限ではなく、アクセスした後に入れようとした値が
正常値かどうかを判断するもの。
型だけでは表現できない特殊なルールを記述する所
アクセス修飾子は単にアクセスできるかどうかしか記述できない。
537デフォルトの名無しさん
2017/04/21(金) 22:32:34.16ID:cmecYv9F538あ
2017/04/21(金) 22:32:51.15ID:AJ6tejAv >>532
プロパティはメンバ関数だよ。
C#ならIL見ればわかるけど、確かアンスコついた変数出来てる。
プロパティ自体もフツーに関数。
何で見えない変数が必要なのか、ってのは、副作用があるプロパティを書くことが出来る限り不必要にならない。
Queueみたいなもののgetのアクセサが、デキューして返すみたいなコードだと、デキューせずに先頭を見る方法が無くなる。
>>534
段取りがおかしい。「設計書のテストの仕様書」が成立するためには、「設計書の設計書」が必要。
なぜならば、テスト仕様書は実装からではなく、設計書から作られなけれいけないから。
「xxの処理は漏れていないか」は「xxの処理が必要だと定義されている」から書ける。
そのための要件は、すり合わせと設計変更申請のレビューと相手方、担当者の連名の捺印で担保する。
>>535
あるよ。
組み合わせが妥当な手段ではこれ以上ないと言う事が、数が少なくなればなるほど簡単になる。
プロパティはメンバ関数だよ。
C#ならIL見ればわかるけど、確かアンスコついた変数出来てる。
プロパティ自体もフツーに関数。
何で見えない変数が必要なのか、ってのは、副作用があるプロパティを書くことが出来る限り不必要にならない。
Queueみたいなもののgetのアクセサが、デキューして返すみたいなコードだと、デキューせずに先頭を見る方法が無くなる。
>>534
段取りがおかしい。「設計書のテストの仕様書」が成立するためには、「設計書の設計書」が必要。
なぜならば、テスト仕様書は実装からではなく、設計書から作られなけれいけないから。
「xxの処理は漏れていないか」は「xxの処理が必要だと定義されている」から書ける。
そのための要件は、すり合わせと設計変更申請のレビューと相手方、担当者の連名の捺印で担保する。
>>535
あるよ。
組み合わせが妥当な手段ではこれ以上ないと言う事が、数が少なくなればなるほど簡単になる。
539デフォルトの名無しさん
2017/04/21(金) 22:34:09.19ID:TFy/T03e540あ
2017/04/21(金) 22:34:35.69ID:AJ6tejAv >>537
getter,setterとプロパティってシンタックスシュガー以上の違いある?Kotlinとか、getterとsetterを暗黙のプロパティに変換してくれるが。
getter,setterとプロパティってシンタックスシュガー以上の違いある?Kotlinとか、getterとsetterを暗黙のプロパティに変換してくれるが。
542あ
2017/04/21(金) 22:37:04.70ID:AJ6tejAv 実装してからのテスト作成って何の意味があるのか意味がわからん。
543デフォルトの名無しさん
2017/04/21(金) 22:42:23.85ID:TFy/T03e544デフォルトの名無しさん
2017/04/21(金) 22:43:24.15ID:rPWpf+kQ カプセル化は不要でおk?
545デフォルトの名無しさん
2017/04/21(金) 22:44:14.67ID:YTf7CJ3G >>544
カプセル化は必要でおk
カプセル化は必要でおk
546デフォルトの名無しさん
2017/04/21(金) 22:45:28.27ID:cmecYv9F547デフォルトの名無しさん
2017/04/21(金) 22:49:35.08ID:rPWpf+kQ548デフォルトの名無しさん
2017/04/21(金) 22:51:43.93ID:YTf7CJ3G549デフォルトの名無しさん
2017/04/21(金) 22:52:25.01ID:1EW2mi9U おまえら相変わらず低レベルな会話してんなww
550デフォルトの名無しさん
2017/04/21(金) 22:54:33.29ID:JwbSy4qm アクセッサの記述性は、下に行くほど上品とする
すでに酒飲んでこれ書いてるから、異論の必要は無い
public string Name {get; set;} // C#
public string Name {private get; set;} // 多少制限
public string Name {get; private set;} // 多少制限
attr_accessor :name # Ruby
attr_reader :name # 多少制限
attr_reader :name # 多少制限
public int getName() {return name;} // Java
public please forgive me int getName() {return name;} // 仮想OOPL-A
puloccinaucinihilipilification int getName() {return name;} // 仮想OOPL-B
// ↑インテリセンス的なものも当然禁止、emacsのabbrevもなぜか効かない設定
すでに酒飲んでこれ書いてるから、異論の必要は無い
public string Name {get; set;} // C#
public string Name {private get; set;} // 多少制限
public string Name {get; private set;} // 多少制限
attr_accessor :name # Ruby
attr_reader :name # 多少制限
attr_reader :name # 多少制限
public int getName() {return name;} // Java
public please forgive me int getName() {return name;} // 仮想OOPL-A
puloccinaucinihilipilification int getName() {return name;} // 仮想OOPL-B
// ↑インテリセンス的なものも当然禁止、emacsのabbrevもなぜか効かない設定
551デフォルトの名無しさん
2017/04/21(金) 22:56:49.22ID:YTf7CJ3G552デフォルトの名無しさん
2017/04/21(金) 22:57:14.58ID:cQz9sGMN 至高の言語はswiftだよ
swiftが全ての正解
swiftが全ての正解
553デフォルトの名無しさん
2017/04/21(金) 23:05:20.32ID:IMFbV+tE >>552
#ifdefのくせになまいきな
#ifdefのくせになまいきな
554デフォルトの名無しさん
2017/04/21(金) 23:07:41.24ID:rPWpf+kQ >>548
じゃあ、設計書をかく前提の開発でカプセル化が必要な理由を説明してよ
じゃあ、設計書をかく前提の開発でカプセル化が必要な理由を説明してよ
555デフォルトの名無しさん
2017/04/21(金) 23:15:04.82ID:IMFbV+tE 実際に不正な操作がされていないということを保証できるから
設計書ベースだと、オブジェクト使うときは
規約をしっかり読んで、それに抵触しないよう用心してコーディングし、
変なことが起こった時
設計書の記述みて、コード上でオブジェクトの使用箇所全部洗って、
操作の規約が守られてるかどうか逐一人間がチェックして、
それではじめてprivateの一言と同じ成果となるのだ
やってられんしそもそも間違えるし
設計書ベースだと、オブジェクト使うときは
規約をしっかり読んで、それに抵触しないよう用心してコーディングし、
変なことが起こった時
設計書の記述みて、コード上でオブジェクトの使用箇所全部洗って、
操作の規約が守られてるかどうか逐一人間がチェックして、
それではじめてprivateの一言と同じ成果となるのだ
やってられんしそもそも間違えるし
556デフォルトの名無しさん
2017/04/21(金) 23:16:10.52ID:YTf7CJ3G 利用者はちゃんと設計書を確認しながら使うとは限らないって何度も言えば、、、
557デフォルトの名無しさん
2017/04/21(金) 23:16:16.72ID:fRfyQmKB >>378
たとえば、インスタンス変数aに依存&結構コストのかかる計算で決まる値bがあったとき
bをインスタンス変数bにキャッシュしておくほうが得だよね?
publicにしたaの変更をどうやってフックするの?
たとえば、インスタンス変数aに依存&結構コストのかかる計算で決まる値bがあったとき
bをインスタンス変数bにキャッシュしておくほうが得だよね?
publicにしたaの変更をどうやってフックするの?
558デフォルトの名無しさん
2017/04/21(金) 23:22:50.81ID:rPWpf+kQ559デフォルトの名無しさん
2017/04/21(金) 23:24:54.21ID:1EW2mi9U560デフォルトの名無しさん
2017/04/21(金) 23:26:01.68ID:JwbSy4qm バカじゃない人間なら
機械語とバイナリエディタでOS作れてもおかしくない
機械語とバイナリエディタでOS作れてもおかしくない
561デフォルトの名無しさん
2017/04/21(金) 23:27:08.71ID:IMFbV+tE ただの煽りかげんなり
ほんとに信じて言ってるのかと思ってた
ほんとに信じて言ってるのかと思ってた
562デフォルトの名無しさん
2017/04/21(金) 23:28:45.45ID:YTf7CJ3G563デフォルトの名無しさん
2017/04/21(金) 23:34:32.77ID:V+qA1SkC564デフォルトの名無しさん
2017/04/21(金) 23:38:07.22ID:rPWpf+kQ565デフォルトの名無しさん
2017/04/21(金) 23:48:31.04ID:go/6WchZ >>557
ずれたコメントさせてもらうが、俺ならそのbを計算した都度出力して、自らはキャッシュしない方策を考えるな。
ずれたコメントさせてもらうが、俺ならそのbを計算した都度出力して、自らはキャッシュしない方策を考えるな。
566デフォルトの名無しさん
2017/04/21(金) 23:52:18.75ID:YTf7CJ3G >>564
よく考えて発言してね
まぁ自分がバカと認識してるだけマシだけど
dllで提供されたものが他のものに依存してて単体で動かないとか、動くけど他のdllで得るはずの値を利用すること前提だとしたらその前提を知らない奴はうまく使えない
内部の処理を隠蔽し独立した動きを提供すればいいだけなんだよ
よく考えて発言してね
まぁ自分がバカと認識してるだけマシだけど
dllで提供されたものが他のものに依存してて単体で動かないとか、動くけど他のdllで得るはずの値を利用すること前提だとしたらその前提を知らない奴はうまく使えない
内部の処理を隠蔽し独立した動きを提供すればいいだけなんだよ
567デフォルトの名無しさん
2017/04/21(金) 23:53:01.61ID:V+qA1SkC ん?
カプセル化でprivateしてないと勝手にフィールド書き込んでしまう恐れがある。
コード無いからprivateにする意味ある。
そんな例。
あ、publicなフィールドを紙やWebに書かなければいいと言うのはなしね。
ツールが抽出するんで。
手書きじゃ無いんで。
カプセル化でprivateしてないと勝手にフィールド書き込んでしまう恐れがある。
コード無いからprivateにする意味ある。
そんな例。
あ、publicなフィールドを紙やWebに書かなければいいと言うのはなしね。
ツールが抽出するんで。
手書きじゃ無いんで。
568デフォルトの名無しさん
2017/04/21(金) 23:54:06.38ID:Ck7s6rRh エンジニアガイジさあ…… 住処が荒廃したからってここに雑魚狩りに来るのやめなよ
569デフォルトの名無しさん
2017/04/22(土) 00:12:26.79ID:EzjUI0a0 日を跨いだら突然おとなしくなったなぁ
570デフォルトの名無しさん
2017/04/22(土) 00:28:58.48ID:OS/5Qg75571デフォルトの名無しさん
2017/04/22(土) 01:06:43.76ID:+5rvIbLJ >>570
呼ばない
呼ばない
572デフォルトの名無しさん
2017/04/22(土) 02:31:18.17ID:IBUJYaHp >>569
なんかわからんけど、このバカも睡眠という概念がなさそうだな。
なんかわからんけど、このバカも睡眠という概念がなさそうだな。
573デフォルトの名無しさん
2017/04/22(土) 09:50:00.49ID:69jc9pki >>565
ずれるにしてもほどがある
ずれるにしてもほどがある
575デフォルトの名無しさん
2017/04/27(木) 12:52:25.26ID:FdhNErTM 部品として使う場合、知識が要求されるのが、ちと時代おくれかなー
576デフォルトの名無しさん
2017/05/02(火) 18:17:11.49ID:VYotzEOG カプセル化、継承、オブジェクト指向設計論に熱が入るやつは
そろそろ自分が動的言語童貞だと熱弁していることに早く気がついたほうがいい
そろそろ自分が動的言語童貞だと熱弁していることに早く気がついたほうがいい
577デフォルトの名無しさん
2017/05/02(火) 18:21:39.30ID:Bg5rWx47 >>576
動的言語が得意な人は、オブジェクト指向にとって大事なことは何だと思うの?
動的言語が得意な人は、オブジェクト指向にとって大事なことは何だと思うの?
578デフォルトの名無しさん
2017/05/02(火) 19:36:25.52ID:S4n1GgbR Objective-Cって動的言語だったのか
579デフォルトの名無しさん
2017/05/02(火) 19:36:57.13ID:S4n1GgbR てっきりオブジェクト指向言語かと思ってた...ん?
580デフォルトの名無しさん
2017/05/06(土) 04:26:04.66ID:gDC1nU6T それにしても(Javaの)クラスのインスタンス化の勉強がすごく楽しい。
581デフォルトの名無しさん
2017/05/06(土) 09:08:09.40ID:QDs+whcb はい
582デフォルトの名無しさん
2017/05/06(土) 09:48:33.69ID:ZTeBEUxt 局所的すぎてわろ
583デフォルトの名無しさん
2017/05/18(木) 13:53:51.24ID:V9vRGfQu マジでクラスの分け方教えてくれどう分ければいいんだよ
分けたとしてもどのクラスにどうデータ持たせて
クラス間の受け渡しとかどうすんだよ全部ゲットセットでpublicにしてええんか
分けたとしてもどのクラスにどうデータ持たせて
クラス間の受け渡しとかどうすんだよ全部ゲットセットでpublicにしてええんか
584デフォルトの名無しさん
2017/05/18(木) 15:26:21.38ID:F9Zp5ygI585デフォルトの名無しさん
2017/05/18(木) 18:10:53.86ID:zzewDZCb 小人さんだと思え。「おまえはこれをやる小人さんだ!」って決めろ。
586デフォルトの名無しさん
2017/05/18(木) 18:14:11.48ID:pcJKb7uP587デフォルトの名無しさん
2017/05/18(木) 19:11:55.79ID:me+sOo3Z >>583
クラス分けで悩むならグローバル変数なくしてやりすぎなくらいメソッドを細分化してみたらいいよ
クラス分けで悩むならグローバル変数なくしてやりすぎなくらいメソッドを細分化してみたらいいよ
588デフォルトの名無しさん
2017/05/18(木) 19:53:26.01ID:F9Zp5ygI >>587
なるほど
なるほど
589デフォルトの名無しさん
2017/05/18(木) 23:04:55.06ID:yt/el+BP >>583
世の中の仕組みと一緒だ。
社長が部下に指示を出す。
部下は結果を返す。
社長は、別の会社と連携してサービスを広げていく。
全ては機能を有していて、機能同士が連携してより大きな機能を作っていくだけだ。
世の中の仕組みと一緒だ。
社長が部下に指示を出す。
部下は結果を返す。
社長は、別の会社と連携してサービスを広げていく。
全ては機能を有していて、機能同士が連携してより大きな機能を作っていくだけだ。
590デフォルトの名無しさん
2017/05/19(金) 02:05:14.71ID:879cm/wV >>583
日本語的な表現でクラス分けをやるとしたら
「いくつも仕事をしていないこと」というのが目安だろうか
例: 「入力値のバリデーションやる」「設定ファイル読んでパラメータ保持」
怪しい例: 「ユーザー設定をDBから読んでパラメータに基づきUIをイジくって表示する」
数値的な目安が欲しいなら、パブリックメソッドが7以上あったら
そのクラスは複数の仕事を抱えている可能性があるんで、分割を検討する
まあ共通で使うクラスが太ってしまうことはよくあるけど
7ってのは平均的な人間がチラ見でパっと暗記できる事柄のリミット値
日本語的な表現でクラス分けをやるとしたら
「いくつも仕事をしていないこと」というのが目安だろうか
例: 「入力値のバリデーションやる」「設定ファイル読んでパラメータ保持」
怪しい例: 「ユーザー設定をDBから読んでパラメータに基づきUIをイジくって表示する」
数値的な目安が欲しいなら、パブリックメソッドが7以上あったら
そのクラスは複数の仕事を抱えている可能性があるんで、分割を検討する
まあ共通で使うクラスが太ってしまうことはよくあるけど
7ってのは平均的な人間がチラ見でパっと暗記できる事柄のリミット値
591デフォルトの名無しさん
2017/05/19(金) 19:43:17.99ID:7xgwPeWo592デフォルトの名無しさん
2017/05/19(金) 20:11:31.04ID:LqS/uk9i オブジェクト指向って「学び」がないんだよな
文法が全て同じになって処理のパターンみたいなのが
すべて「名前」で隠蔽されて見えてこない。
処理の委託元のコード追ってもたらい回しにされてる感じで
「実際の処理」がどこにあるのか埋もれてしまってる状態になる。
文法が全て同じになって処理のパターンみたいなのが
すべて「名前」で隠蔽されて見えてこない。
処理の委託元のコード追ってもたらい回しにされてる感じで
「実際の処理」がどこにあるのか埋もれてしまってる状態になる。
593デフォルトの名無しさん
2017/05/19(金) 21:11:32.92ID:A6bTtmgj どうやって隠すか
ライブラリ作成側になると学びは多いよ
ライブラリ作成側になると学びは多いよ
594デフォルトの名無しさん
2017/05/19(金) 22:24:14.23ID:2Tw6P143 >>592
スタックトレースを見るんだ
スタックトレースを見るんだ
595デフォルトの名無しさん
2017/05/20(土) 06:03:34.30ID:5T5O2UEX 大きなシステムとか組んだ事ないんだろ
596デフォルトの名無しさん
2017/05/20(土) 18:54:10.07ID:urI3JAo7 まあ実際の処理を隠蔽するのがまさに1つの目的だし
たらい回しというか参照辿って芋づるで引っ張れる設計じゃないし、むしろそこがオブジェクト指向のキモだからな
たらい回しというか参照辿って芋づるで引っ張れる設計じゃないし、むしろそこがオブジェクト指向のキモだからな
597デフォルトの名無しさん
2017/05/20(土) 19:17:55.25ID:mYqGvY+G 実際の処理が見れないと困るケースがもしあれば
設計が既に破綻してるって話だわな
設計が既に破綻してるって話だわな
598デフォルトの名無しさん
2017/05/20(土) 20:09:39.79ID:1WQ4/ic9 役員が下っ端社員の細かい作業手順を知る必要ないからな。
ちゃんと結果報告が上がってくれば作業手順は他の人間に影響を与えてなければ関係無い。
ちゃんと結果報告が上がってくれば作業手順は他の人間に影響を与えてなければ関係無い。
599デフォルトの名無しさん
2017/05/20(土) 20:38:10.12ID:POVmnKPN オブジェクト指向は総活躍社会
600デフォルトの名無しさん
2017/05/21(日) 01:27:28.98ID:Fqssqcja >>597
図面的な意味で設計どうこうじゃなくて「なんかバグ出てるのはわかるんだけど
誰が調べても原因がわからん」系の状況じゃね?
継承四連打キメてて3段目で特定のタイミングのみ変数上書きワロスみたいな……
図面的な意味で設計どうこうじゃなくて「なんかバグ出てるのはわかるんだけど
誰が調べても原因がわからん」系の状況じゃね?
継承四連打キメてて3段目で特定のタイミングのみ変数上書きワロスみたいな……
601デフォルトの名無しさん
2017/05/21(日) 04:39:36.10ID:bMGEt1tu >>597
無茶いうな
無茶いうな
602デフォルトの名無しさん
2017/05/21(日) 10:57:27.44ID:8IHB32RP603デフォルトの名無しさん
2017/05/21(日) 12:54:25.54ID:W3P4J6B5 世の中のソースコードの90%の多段継承は既に破綻してる、もしくは今後するけどな
つまり仕組みが糞
つまり仕組みが糞
604デフォルトの名無しさん
2017/05/21(日) 17:51:03.66ID:/ema5D/U >>600
結局、オブジェクト指向ってただ作るだけなら得意なんだけど
正しく作っているか確認することは苦手なんだよね
そりゃあ設計はあるだろうし、設計通りに作られていれば問題ない。
でも設計通りに作られているのかの検証は、より困難になっている。
結局、オブジェクト指向ってただ作るだけなら得意なんだけど
正しく作っているか確認することは苦手なんだよね
そりゃあ設計はあるだろうし、設計通りに作られていれば問題ない。
でも設計通りに作られているのかの検証は、より困難になっている。
605デフォルトの名無しさん
2017/05/22(月) 12:24:20.53ID:D5FtIlcH なんか"経理部に領収書出して「清算お願いします」ってシステム"に
延々「経理部が不正やってないとも限らないよね!検証できないよね!」って
無根拠にただ喚いてる奴がいるみたいになってて相手のしようがないんだが、おまえ。
延々「経理部が不正やってないとも限らないよね!検証できないよね!」って
無根拠にただ喚いてる奴がいるみたいになってて相手のしようがないんだが、おまえ。
606デフォルトの名無しさん
2017/05/22(月) 12:36:09.78ID:396ysVMZ >>605
アホ
アホ
607デフォルトの名無しさん
2017/05/22(月) 19:27:44.11ID:VfSiR++X >>586
カプセル化が一番重要と思ってたんですが違うんですか?
カプセル化が一番重要と思ってたんですが違うんですか?
608デフォルトの名無しさん
2017/05/22(月) 19:30:22.25ID:+aWzImQa ソース付のライブラリ使えば?
609デフォルトの名無しさん
2017/05/22(月) 20:40:23.17ID:OXuVg63m610デフォルトの名無しさん
2017/05/22(月) 22:48:06.26ID:rXkCxzW6 やっぱりどっちもいらない
611デフォルトの名無しさん
2017/05/24(水) 19:52:46.15ID:E7SQQ2ii >>607
ゲッタセッタが生えてるプライベートフィールドはパブリックと変わらないってことだろう
要するにそれはカプセル化とは言わない
それやるぐらいならむしろパブリックの方がゲッタセッタの裏で余計なことしてない保証になる
ゲッタセッタが生えてるプライベートフィールドはパブリックと変わらないってことだろう
要するにそれはカプセル化とは言わない
それやるぐらいならむしろパブリックの方がゲッタセッタの裏で余計なことしてない保証になる
612デフォルトの名無しさん
2017/05/24(水) 20:02:53.29ID:MizSfTrk >>607
俺も重要だと思ってるけどその話題は荒れるので出さないようにしてる
俺も重要だと思ってるけどその話題は荒れるので出さないようにしてる
613デフォルトの名無しさん
2017/05/24(水) 20:51:58.45ID:0TwgkzQZ カプセル化の話だとデータの隠蔽のことばかりになってしまうのは残念じゃのう
614デフォルトの名無しさん
2017/05/24(水) 22:22:46.76ID:mgEFkV8x メソッドオーバーライドやインターフェース実装(具体例はJavaのinterface)も一応カプセル化の範疇だろうが
どっちかってと「継承」とか「クラス図」とか「デザパタ」の文脈で話す場合が多いかも
どっちかってと「継承」とか「クラス図」とか「デザパタ」の文脈で話す場合が多いかも
615デフォルトの名無しさん
2017/05/24(水) 23:27:44.78ID:krzOkTvb >>614←こいつわかってなさそう
616デフォルトの名無しさん
2017/05/25(木) 00:11:42.62ID:W6ilo8po 詳細を隠し、結合度を弱め、変更に強くする、だっけか?
ただ、まあ面倒い
C#の新しいプロパティ構文がJavaでも使えればいいのにな
ただ、まあ面倒い
C#の新しいプロパティ構文がJavaでも使えればいいのにな
617デフォルトの名無しさん
2017/05/25(木) 07:20:20.62ID:06hv3Ht1 哲学やると頭腐る
618デフォルトの名無しさん
2017/05/25(木) 07:29:05.76ID:iVz5yu8w 最初から?
619デフォルトの名無しさん
2017/05/25(木) 14:20:37.34ID:R5hiuhFH620デフォルトの名無しさん
2017/05/25(木) 21:00:55.82ID:a5WTl5cb >>619
ゲッタセッタで公開されたプライベートフィールドと、書式化された文字列を返すプロパティって全然別物じゃんアホなの
ゲッタセッタで公開されたプライベートフィールドと、書式化された文字列を返すプロパティって全然別物じゃんアホなの
621デフォルトの名無しさん
2017/05/25(木) 22:16:33.15ID:06hv3Ht1 >>611
SetterGetterの殻に閉じこもってプログラミングする安心感は異常
そんな保障してなんの役に立つ
どのみちオブジェクトを関数の引数にしたら、どこで何されるかわかったもんじゃない
publicにしたら処理をフックすることもできない
へんな値が設定されたときに例外をだすこともできないし
Audio.volumeでボリューム設定なんてこともできないだろう
SetterGetterの殻に閉じこもってプログラミングする安心感は異常
そんな保障してなんの役に立つ
どのみちオブジェクトを関数の引数にしたら、どこで何されるかわかったもんじゃない
publicにしたら処理をフックすることもできない
へんな値が設定されたときに例外をだすこともできないし
Audio.volumeでボリューム設定なんてこともできないだろう
622デフォルトの名無しさん
2017/05/26(金) 12:49:01.87ID:nbqvOpds セッタゲッタ作って役に立ったこともあるだろうが、無駄にコードが増えただけのこともあるだろう
無条件にやるのはただのバカ。フックいれることが予想される場合にするのはいい
無条件にやるのはただのバカ。フックいれることが予想される場合にするのはいい
623デフォルトの名無しさん
2017/05/26(金) 14:05:46.16ID:tID9m1OJ >>622
Yes
Yes
624デフォルトの名無しさん
2017/05/26(金) 15:13:04.21ID:FvwfjnU+ そのクラスのユーザが自分だけじゃない場合は、とりあえず全部privateにして、getter/setter作っといた方がいいね
625デフォルトの名無しさん
2017/05/26(金) 16:21:29.95ID:Heb9aC5z getter,setterを通じて変数に触れるのであればそれはもはやprivateとは言えないと思ってる
626デフォルトの名無しさん
2017/05/26(金) 16:22:11.52ID:Heb9aC5z getterはまだ良いけどsetterは要らないなぁ
627デフォルトの名無しさん
2017/05/26(金) 16:37:50.24ID:FvwfjnU+ >>625
> getter,setterを通じて変数に触れるのであればそれはもはやprivateとは言えないと思ってる
言いたいことはわからなくもないが、クライアントコードとそのクラスの接点がsetter/getterであると
保証されていれば、内部構造の変更は自由になるというのが異なる。
> getter,setterを通じて変数に触れるのであればそれはもはやprivateとは言えないと思ってる
言いたいことはわからなくもないが、クライアントコードとそのクラスの接点がsetter/getterであると
保証されていれば、内部構造の変更は自由になるというのが異なる。
628デフォルトの名無しさん
2017/05/26(金) 18:31:35.52ID:Heb9aC5z 確かにね
言ってることはよくわかる
だとしてもsetterは用途が限られるように感じてる
それならインスタンス生成時に必要な情報を全部ぶち込んじゃえばいいんじゃね?と最近考えてる
言ってることはよくわかる
だとしてもsetterは用途が限られるように感じてる
それならインスタンス生成時に必要な情報を全部ぶち込んじゃえばいいんじゃね?と最近考えてる
629デフォルトの名無しさん
2017/05/26(金) 19:19:04.64ID:grHVRT/B class1
{
public int setInt;
public string setStr;
}
class2
{
public int setInt { set; get; }
public string setStr { set; get; }
}
この2つの違い教えて
外のクラスから参照・変更するだけなら同じ扱い?
{
public int setInt;
public string setStr;
}
class2
{
public int setInt { set; get; }
public string setStr { set; get; }
}
この2つの違い教えて
外のクラスから参照・変更するだけなら同じ扱い?
630デフォルトの名無しさん
2017/05/27(土) 10:49:30.96ID:ieplBCy2 >>626
後でconfigの類を入れるとか、setLoggerだとかで
必要になる場面がたまにあるかも
なおPythonでそれやろうとしてプロパティデコレータ使おうとしたら「setだけのデコレータはない」というので
またPythonの俺様仕様か……って閉口した
後でconfigの類を入れるとか、setLoggerだとかで
必要になる場面がたまにあるかも
なおPythonでそれやろうとしてプロパティデコレータ使おうとしたら「setだけのデコレータはない」というので
またPythonの俺様仕様か……って閉口した
631デフォルトの名無しさん
2017/05/27(土) 10:59:35.13ID:u9alIOxt setterだけってことは
obj.x = 1 #=> これは出来る
obj.x #=> 例外
になって欲しいってことか?イラネ
obj.x = 1 #=> これは出来る
obj.x #=> 例外
になって欲しいってことか?イラネ
632デフォルトの名無しさん
2017/05/27(土) 11:03:59.72ID:HaHIN1I5 メンバを個別にセットゲットする需要ってそんなにないだろう?
633デフォルトの名無しさん
2017/05/27(土) 11:16:48.16ID:ieplBCy2 >>631
obj.config = user_config
みたいなのだ
setconfig(user_config)でもよろしかろうが、readwriteとreadは機能としてあるけどwriteはない
なんて片手落ちはあんまり想像してなかった
「正しいやり方はwriteイラね」とかマニュアルに書けってよ
obj.config = user_config
みたいなのだ
setconfig(user_config)でもよろしかろうが、readwriteとreadは機能としてあるけどwriteはない
なんて片手落ちはあんまり想像してなかった
「正しいやり方はwriteイラね」とかマニュアルに書けってよ
634デフォルトの名無しさん
2017/05/27(土) 11:58:55.24ID:0+MwcC+M getter,setterはメソッドなのでクラス中で処理してクラスとして必要な形で出し入れできる
直接さわることとは別物だよ
直接さわることとは別物だよ
635デフォルトの名無しさん
2017/05/27(土) 12:19:45.90ID:HaHIN1I5636デフォルトの名無しさん
2017/05/27(土) 12:38:09.02ID:ieplBCy2 理想: getter/setterはメソッドとすべき
setterで引数のチェック、getterでoutはコレであってるかのチェックはもれなくやるべし
現実: やらなくてもだいたい例外が飛ぶか動かないかするからわかる
setterで引数のチェック、getterでoutはコレであってるかのチェックはもれなくやるべし
現実: やらなくてもだいたい例外が飛ぶか動かないかするからわかる
637デフォルトの名無しさん
2017/05/27(土) 12:45:31.51ID:5/vhXFvj ないとバカが騒ぐから作っておけばいい
こんなつまらん事でわざわざバカにエサを与える必要はない
こんなつまらん事でわざわざバカにエサを与える必要はない
638デフォルトの名無しさん
2017/05/27(土) 17:30:05.68ID:N4GV+Pp+ ゲッタセッタにフックさせる「かもしれない」をどう受け取るかによるから不毛と言えば不毛
柔軟に拡張できると受け取れば良しとなるし、不要な可能性を残すと受け取れば悪しとなる
個人的には単純にゲッタセッタで命名しといてくれるとインテリセンスでプロパティ探す時楽だからあった方がいい
ただゲッタセッタで命名しときながら裏で全然関係なかったり重い処理してる糞コード書く奴が一定数いるのも現実
柔軟に拡張できると受け取れば良しとなるし、不要な可能性を残すと受け取れば悪しとなる
個人的には単純にゲッタセッタで命名しといてくれるとインテリセンスでプロパティ探す時楽だからあった方がいい
ただゲッタセッタで命名しときながら裏で全然関係なかったり重い処理してる糞コード書く奴が一定数いるのも現実
639デフォルトの名無しさん
2017/05/27(土) 17:46:00.50ID:3Q4GI2w6 クラス設計が下手くそなオブジェクト指向初心者なんだけど、ためになる読み物とかないですかね?
cはある程度書ける
cはある程度書ける
640デフォルトの名無しさん
2017/05/27(土) 19:33:03.59ID:g5q+CjXh 構造化プログラミングって何?
641デフォルトの名無しさん
2017/05/27(土) 19:54:27.21ID:SDTaiU/Z642デフォルトの名無しさん
2017/05/27(土) 20:24:02.87ID:4M5qtD6v >>640
ダイクストラ知らないとかゆとりかよ
ダイクストラ知らないとかゆとりかよ
643デフォルトの名無しさん
2017/05/27(土) 20:57:24.04ID:H74RUeqi 老害的罵倒例
644デフォルトの名無しさん
2017/05/27(土) 21:35:03.31ID:583uXQeo645デフォルトの名無しさん
2017/05/29(月) 03:13:17.41ID:vyxh58aI >>642
自分の言葉で説明して欲しいです。
自分の言葉で説明して欲しいです。
646デフォルトの名無しさん
2017/05/29(月) 08:38:09.71ID:U7XwlEVB >>645
Wikipediaとか読んで自分でそれをできるようになったがいんじゃない?
Wikipediaとか読んで自分でそれをできるようになったがいんじゃない?
647デフォルトの名無しさん
2017/05/29(月) 08:44:08.38ID:U7XwlEVB 構造化プログラミングとは
関数、if、whileを使ってプログラムを書くこと
誤解を恐れず言うならswitch、forは邪道です
関数、if、whileを使ってプログラムを書くこと
誤解を恐れず言うならswitch、forは邪道です
648デフォルトの名無しさん
2017/05/29(月) 11:07:58.25ID:TgEUVyWp はい次
649デフォルトの名無しさん
2017/05/29(月) 12:09:15.00ID:BkgkdtpP >>648
次はお前の番だよ
次はお前の番だよ
650デフォルトの名無しさん
2017/05/29(月) 12:10:47.18ID:BkgkdtpP おらあああ!!さっさと説明してみろや!
651デフォルトの名無しさん
2017/05/29(月) 12:11:45.18ID:vyxh58aI >>647
wiki読んだけど、それぐらいの意図しか汲み取れなかった。
オブジェクト指向では、ポリモーフィズムとか使えるけど、それも結局はクラスでifしてるだけであって、たいして変わらないじゃんと思った。
wiki読んだけど、それぐらいの意図しか汲み取れなかった。
オブジェクト指向では、ポリモーフィズムとか使えるけど、それも結局はクラスでifしてるだけであって、たいして変わらないじゃんと思った。
652デフォルトの名無しさん
2017/05/29(月) 12:18:49.21ID:CxTrZaFu ポリモーフィズムとifが同等って初めて知った
653デフォルトの名無しさん
2017/05/29(月) 12:24:48.88ID:KD+R0FhF 分かるだろ普通w
654デフォルトの名無しさん
2017/05/29(月) 12:34:49.38ID:CxTrZaFu 何を基準に普通と言ってるかは知らないけど同じ扱いをしても振る舞いが異なる事だと思ってたからなぁ
ここを見てるとどれだけ自分の頭が固いかよくわかっておもしろい
ここを見てるとどれだけ自分の頭が固いかよくわかっておもしろい
655デフォルトの名無しさん
2017/05/29(月) 19:29:07.89ID:w9I7HLjv 一回、アセンブラからやらせて
自分で自分が書いたスパゲッティをメンテするところからやらせねぇと
なんで生まれてどんなメリットを目指したかわかんねぇんじゃねぇの
ゆとりには
自分で自分が書いたスパゲッティをメンテするところからやらせねぇと
なんで生まれてどんなメリットを目指したかわかんねぇんじゃねぇの
ゆとりには
656デフォルトの名無しさん
2017/05/29(月) 19:42:05.10ID:CxTrZaFu 知らなくても組めるように発展してんだから意図なんか後から知ればいいんだよ
657デフォルトの名無しさん
2017/05/29(月) 20:16:08.98ID:KNNrZWoY いつまで経ってもオブジェクト指向の意図が理解できない変な人が湧き続けるスレで言うことか。
658デフォルトの名無しさん
2017/05/29(月) 22:18:26.47ID:A34reMmc オブジェクト指向の意図ってなんだよw
こんなものまで擬人化しないと気がすまんのかお前らw
キモいにも程があるwww
こんなものまで擬人化しないと気がすまんのかお前らw
キモいにも程があるwww
659デフォルトの名無しさん
2017/05/29(月) 22:22:54.39ID:nT+AAD4u オッ
660デフォルトの名無しさん
2017/05/29(月) 22:25:41.12ID:w9I7HLjv ここまで国語力ない奴はじめてみた。
661デフォルトの名無しさん
2017/05/30(火) 02:01:38.87ID:KOCwrIWS662デフォルトの名無しさん
2017/05/30(火) 02:16:15.25ID:734VgA5Q >>651
呼び出す側が適宜、相手のインスタンスに「こういう動作して」って派生クラスぶっこむ場合が多いな
まぁ派生元 - 派生先でifしてるって捉え方もできようが
if - elseが下に7コ8コ並んで見難いのよりはマシだろう
呼び出す側が適宜、相手のインスタンスに「こういう動作して」って派生クラスぶっこむ場合が多いな
まぁ派生元 - 派生先でifしてるって捉え方もできようが
if - elseが下に7コ8コ並んで見難いのよりはマシだろう
663デフォルトの名無しさん
2017/05/30(火) 19:10:33.85ID:cuCpV+Ml >>658
Objectの言葉の意味の通りじゃん
Objectの言葉の意味の通りじゃん
664デフォルトの名無しさん
2017/05/31(水) 17:32:41.97ID:lwNSc7pn オブジェクト指向開発の理解度を測るために民間団体の主催するJAVA検定を受けようと思うのですが、そもそもここの問題はオブジェクト指向となっているでしょうか
http://www.sikaku.gr.jp/js/jv/img/sample/1/jv1.pdf
過去に構造化プログラムとかクソ味噌言われていたので、オブジェクト指向に造詣の深い皆さんに評価して頂きたいです
http://www.sikaku.gr.jp/js/jv/img/sample/1/jv1.pdf
過去に構造化プログラムとかクソ味噌言われていたので、オブジェクト指向に造詣の深い皆さんに評価して頂きたいです
665デフォルトの名無しさん
2017/05/31(水) 18:37:16.96ID:vzRkDbrn >>664
やめとけ
やめとけ
666デフォルトの名無しさん
2017/05/31(水) 18:46:16.77ID:lqV8qj25 理解度測るならフリーで仕事すればいい
稼いだ金額が理解度
稼いだ金額が理解度
667デフォルトの名無しさん
2017/06/01(木) 03:12:10.50ID:TLZ7U8Co >>664
実務でやるなら、4番のシーケンス図よろしく「N」なんて打ち込ませねぇ
そもそもあんなクソみたいな手数を踏ませるはイカれてるっていうか、ユーザーは怠惰なんス
一手で済ます
たぶんログイン画面でセッション(あるいは何らかの認証情報)を持たすのが前提だあな
っていうか「Fuckyou」とか「let me die」って打ち込んだ時どうすんだね
この図だと未定義だから何してもいいよね、俺だったら「Fuckyou」ってタイプされたら水龍敬ランド出すし
「let me die」ってタイプされたらガルパンのまほお姉さまのエロ同人誌でも表示してやるわさ
……冗談やで?
というくらいなんかアレかも
実務でやるなら、4番のシーケンス図よろしく「N」なんて打ち込ませねぇ
そもそもあんなクソみたいな手数を踏ませるはイカれてるっていうか、ユーザーは怠惰なんス
一手で済ます
たぶんログイン画面でセッション(あるいは何らかの認証情報)を持たすのが前提だあな
っていうか「Fuckyou」とか「let me die」って打ち込んだ時どうすんだね
この図だと未定義だから何してもいいよね、俺だったら「Fuckyou」ってタイプされたら水龍敬ランド出すし
「let me die」ってタイプされたらガルパンのまほお姉さまのエロ同人誌でも表示してやるわさ
……冗談やで?
というくらいなんかアレかも
668デフォルトの名無しさん
2017/06/01(木) 03:35:10.17ID:TLZ7U8Co そしてまさかのNはユーザーの氏名でした、か(今アレって思って見直したら) orz ごめん手抜きした
まあいいや、見直すとして……ああうんお呼びでないか
シーケンス図を(マジメに)見る限り
・初めに二回ポップアップ出す(or二発画面遷移をせよってこと、メソッドが二発あるので)
・ユーザーがNっていれたら、初めに出たのとの同じポップアップを2発やる(displayFirstMess/displayPromptMessをもう一度ぶっぱしてるから)
・imputMessageでユーザーが入力をいれたら
まずユーザー一覧を表示するのか、「検索方法を指定してください」と出すのかして(displayFirstMessはどうもでっかく二分岐してるのかもしれん、あるいはまた「検索方法を指定してください。」と出すのか)
そのあとでallDisplayでドカっと下に長い表示を出すのか
この辺要確認、たぶん書き手はそんなの想像してないと思う
たぶんGoogle検索のようなのを想定してるはずなので
・ユーザーは表示された従業員名とID突き合わせて入力欄にID打ち込んでEってタイプする
ここも確認が必要、クリックじゃねぇの?
ああうんこれメインフレーム時代のやり方やで
まあいいや、見直すとして……ああうんお呼びでないか
シーケンス図を(マジメに)見る限り
・初めに二回ポップアップ出す(or二発画面遷移をせよってこと、メソッドが二発あるので)
・ユーザーがNっていれたら、初めに出たのとの同じポップアップを2発やる(displayFirstMess/displayPromptMessをもう一度ぶっぱしてるから)
・imputMessageでユーザーが入力をいれたら
まずユーザー一覧を表示するのか、「検索方法を指定してください」と出すのかして(displayFirstMessはどうもでっかく二分岐してるのかもしれん、あるいはまた「検索方法を指定してください。」と出すのか)
そのあとでallDisplayでドカっと下に長い表示を出すのか
この辺要確認、たぶん書き手はそんなの想像してないと思う
たぶんGoogle検索のようなのを想定してるはずなので
・ユーザーは表示された従業員名とID突き合わせて入力欄にID打ち込んでEってタイプする
ここも確認が必要、クリックじゃねぇの?
ああうんこれメインフレーム時代のやり方やで
669デフォルトの名無しさん
2017/06/01(木) 03:36:55.80ID:TLZ7U8Co あーうん、let me dieって言われたらまほ姉がおっさんにピーされる機能は実装が必要だな
俺以外望んでないけど未定義だからいいよね(実務じゃしないよ、冗談だから)
俺以外望んでないけど未定義だからいいよね(実務じゃしないよ、冗談だから)
670デフォルトの名無しさん
2017/06/02(金) 01:49:27.48ID:w5TyDgot 今Haskellとの比較にPython/Rubyに追加で究極的なオブジェクト指向言語であるsmalltalkでコマンド作るべくgnu-smalltalk勉強中なんだが、条件分岐やループまでオブジェクトへのメッセージなんで、
squeak/PharoみたいなGUIなsmalltalkじゃない事でシステムブラウザ(動的クラスリファレンス?)無しじゃ相当厳しい。
Ubuntu Linuxでsudo apt install gnu-smalltalkしただけじゃgst-browser起動しなかったから、
tar玉落としてコンパイル段階から環境構築してやっと動いた。
んで思ったんだが、やっぱオブジェクト指向ってクラス覚えないと何も出来ないんじゃね?
中途半端なオブジェクト指向言語って構造化プログラミングの文法に助けられてて、
その辺誤魔化せてるだけのような気がして来た。
squeak/PharoみたいなGUIなsmalltalkじゃない事でシステムブラウザ(動的クラスリファレンス?)無しじゃ相当厳しい。
Ubuntu Linuxでsudo apt install gnu-smalltalkしただけじゃgst-browser起動しなかったから、
tar玉落としてコンパイル段階から環境構築してやっと動いた。
んで思ったんだが、やっぱオブジェクト指向ってクラス覚えないと何も出来ないんじゃね?
中途半端なオブジェクト指向言語って構造化プログラミングの文法に助けられてて、
その辺誤魔化せてるだけのような気がして来た。
671デフォルトの名無しさん
2017/06/02(金) 07:47:26.08ID:vc1fSB5M >>670
システムブラウザまで使うならなぜGNU Smalltalkみたいな変わり種Smalltalkにこだわるのかわからんけど(何かPharoやSqueakじゃ駄目な事情が?)
クラス(というか組み込みのオブジェクト)の使い方を覚えないと何も出来ないというのはかなり正しい
ただそんなこともあってSmalltalk環境は相当早い段階から組み込みの(クラスを含む)オブジェクトに対する問い合わせ
つまりイントロスペクション機能やそれをサポートする(人間の短期記憶に負担をかけないようにする)
マルチウインドウシステムが発達したわけ
だから、繰り返すけどそれらの機構を大胆に削ったのウリのGNU Smalltalkで
「Smalltalk(やそれが体現するOO)が何か」を論ずるのはちょっと違うかもと老婆心ながら
システムブラウザまで使うならなぜGNU Smalltalkみたいな変わり種Smalltalkにこだわるのかわからんけど(何かPharoやSqueakじゃ駄目な事情が?)
クラス(というか組み込みのオブジェクト)の使い方を覚えないと何も出来ないというのはかなり正しい
ただそんなこともあってSmalltalk環境は相当早い段階から組み込みの(クラスを含む)オブジェクトに対する問い合わせ
つまりイントロスペクション機能やそれをサポートする(人間の短期記憶に負担をかけないようにする)
マルチウインドウシステムが発達したわけ
だから、繰り返すけどそれらの機構を大胆に削ったのウリのGNU Smalltalkで
「Smalltalk(やそれが体現するOO)が何か」を論ずるのはちょっと違うかもと老婆心ながら
672デフォルトの名無しさん
2017/06/02(金) 07:58:55.45ID:StUXAGh/ Smalltalkがウンコなだけだよ
アランケイにも捨てられたゴミ
アランケイにも捨てられたゴミ
673デフォルトの名無しさん
2017/06/02(金) 08:32:54.40ID:uW9UgDbU674デフォルトの名無しさん
2017/06/02(金) 09:09:40.41ID:SS0iDM0a675デフォルトの名無しさん
2017/06/02(金) 09:10:16.04ID:DxIdV4KE SmalltalkはIDEがなきゃCよりも書きにくく、
IDEを使うためにはヘンテコなOSモドキの使用を強制され、
それを我慢して使っても他の言語より書きやすいわけでもなく
マイナー言語なのでライブラリも少ない
まさにゴミ
IDEを使うためにはヘンテコなOSモドキの使用を強制され、
それを我慢して使っても他の言語より書きやすいわけでもなく
マイナー言語なのでライブラリも少ない
まさにゴミ
676デフォルトの名無しさん
2017/06/02(金) 09:36:01.61ID:uW9UgDbU >>675
まあそう言わんと
ただヘンテコなゴミだと簡単に切り捨てるより、いろいろ調べて学びを得た方が面白いですよ
同時期に登場したStar、Cedar、Interlisp-D等、同様のOSモドキはいくつか生み出されましたが、
結局生き残って今も使われ続けているのはSmalltalkだけです
たまたま選ばれたということ(ジョブズやゲイツがそのルック&フィールを模倣して広めてくれたということも含め)
もあるかもしれませんが、ホストOSに寄生する“異物”という宿命を背負いながらも変化を続け
趣味はあってもスタートアップで言語として選択される程度に有用であることは
ケイらの遅延結合性の徹底というコンセプトの有効性を示すよい例かとも
Smalltalkの底を流れる設計思想 - ダン・インガルス
http://web.archive.org/web/20041016084842/http://marimpod.homeip.net/chomswiki/24#
「ソフトウェア工学」は矛盾語法か? - アラン・ケイ
http://metatoys.org/oxymoron/oxymoron.html
まあそう言わんと
ただヘンテコなゴミだと簡単に切り捨てるより、いろいろ調べて学びを得た方が面白いですよ
同時期に登場したStar、Cedar、Interlisp-D等、同様のOSモドキはいくつか生み出されましたが、
結局生き残って今も使われ続けているのはSmalltalkだけです
たまたま選ばれたということ(ジョブズやゲイツがそのルック&フィールを模倣して広めてくれたということも含め)
もあるかもしれませんが、ホストOSに寄生する“異物”という宿命を背負いながらも変化を続け
趣味はあってもスタートアップで言語として選択される程度に有用であることは
ケイらの遅延結合性の徹底というコンセプトの有効性を示すよい例かとも
Smalltalkの底を流れる設計思想 - ダン・インガルス
http://web.archive.org/web/20041016084842/http://marimpod.homeip.net/chomswiki/24#
「ソフトウェア工学」は矛盾語法か? - アラン・ケイ
http://metatoys.org/oxymoron/oxymoron.html
677デフォルトの名無しさん
2017/06/02(金) 10:52:54.67ID:PwRFjZu6 >>673
いあ、昔squeakやってたし、当時はクラスブラウザと自由自在Squeakあれば十分なくらい独学しやすい言語だと思ってた。
当時はJavaのクラスリファレンス(とら本)も分厚いのを上下巻2冊で売ってたし、クラスたくさん覚えて行くのが当たり前と思ってたからね。
HaskellもLispも、関数覚えておけば便利だけど、覚えてない知らない場合も自分で自作しやすい。
そう言う意味じゃCとかの構造化プログラミングも関数やクラスを基本にするんじゃなくて、Goto使わなくて済む構文によってスパゲティコードを無くすっていう自作し易さを目指す進化だったんよね。
いあ、昔squeakやってたし、当時はクラスブラウザと自由自在Squeakあれば十分なくらい独学しやすい言語だと思ってた。
当時はJavaのクラスリファレンス(とら本)も分厚いのを上下巻2冊で売ってたし、クラスたくさん覚えて行くのが当たり前と思ってたからね。
HaskellもLispも、関数覚えておけば便利だけど、覚えてない知らない場合も自分で自作しやすい。
そう言う意味じゃCとかの構造化プログラミングも関数やクラスを基本にするんじゃなくて、Goto使わなくて済む構文によってスパゲティコードを無くすっていう自作し易さを目指す進化だったんよね。
678デフォルトの名無しさん
2017/06/02(金) 11:34:30.40ID:PwRFjZu6 何というか、オブジェクト指向って出来合いの機能をたくさん用意する事で自作する機会を減らす方向の進化で、自作のし易さを加速させる、根源的な生産性を上げる進化じゃ無い気がして来たのよな。
679デフォルトの名無しさん
2017/06/02(金) 11:53:23.75ID:ybQLwqcw >>677
Squeakは経験済みでしたかそれは失礼いたしました
ただSqueak等でちょっと調べてみれば分かりますが、他の言語やそのIDEのやり方とは違いSmalltalk環境のGUIツールは基本
クラスを含むオブジェクトの持つイントロスペクション機能にちょっとしたGUIのガワをかぶせただけシンプルなしくみで動いています
それはつまりGNU Smalltalkでも、Squeak等が“GUIのガワ”が中でやっていることを式で書いてやればそれなりのことは事足りるということです
たとえば Integer >> #factorial というメソッドのソースが読みたければそれに methodSourceString というメッセージを送る
(Integer >> #factorial) methodSourceString
といった調子で、そしてこれがSmalltalkのシステムブラウザがやっていることのほぼ全てです
じゃあ、factorial や Integer はともかく、>> だの methodSourceString だのはどうやって分かるかというと
もちろん GNU Smalltalk のリファレンスをググるのも手ではありますが
#>> implementors で実装クラスを一覧したり、
#>> implementors anyOne methodSourceString で定義を見たりするのがSmalltalkでのやり方になります
覚えておくよりはその都度オブジェクトたちに尋ねるという彼らとの対話の妙をぜひお試しあれかし
Squeakは経験済みでしたかそれは失礼いたしました
ただSqueak等でちょっと調べてみれば分かりますが、他の言語やそのIDEのやり方とは違いSmalltalk環境のGUIツールは基本
クラスを含むオブジェクトの持つイントロスペクション機能にちょっとしたGUIのガワをかぶせただけシンプルなしくみで動いています
それはつまりGNU Smalltalkでも、Squeak等が“GUIのガワ”が中でやっていることを式で書いてやればそれなりのことは事足りるということです
たとえば Integer >> #factorial というメソッドのソースが読みたければそれに methodSourceString というメッセージを送る
(Integer >> #factorial) methodSourceString
といった調子で、そしてこれがSmalltalkのシステムブラウザがやっていることのほぼ全てです
じゃあ、factorial や Integer はともかく、>> だの methodSourceString だのはどうやって分かるかというと
もちろん GNU Smalltalk のリファレンスをググるのも手ではありますが
#>> implementors で実装クラスを一覧したり、
#>> implementors anyOne methodSourceString で定義を見たりするのがSmalltalkでのやり方になります
覚えておくよりはその都度オブジェクトたちに尋ねるという彼らとの対話の妙をぜひお試しあれかし
680デフォルトの名無しさん
2017/06/02(金) 12:43:16.45ID:ybQLwqcw >>678
> オブジェクト指向って出来合いの機能をたくさん用意する事で自作する機会を減らす方向の進化
出来合いの(組み込みの)機能といっても、元は自作なんですよ(少なくともSmalltalkにおいては)
それらを簡単に実装できるという精神はHaskell、ひいてはFPに通じるところはあると思いますよ
それにHaskellにしてもパターンマッチや型クラスを含む型システムなどの便利な組み込みの機能の助けなしに、あるいは
リストなどのモナドの拡充なしに自作のしやすさの加速ができるわけでもないような気がしますが…違いますかね
> オブジェクト指向って出来合いの機能をたくさん用意する事で自作する機会を減らす方向の進化
出来合いの(組み込みの)機能といっても、元は自作なんですよ(少なくともSmalltalkにおいては)
それらを簡単に実装できるという精神はHaskell、ひいてはFPに通じるところはあると思いますよ
それにHaskellにしてもパターンマッチや型クラスを含む型システムなどの便利な組み込みの機能の助けなしに、あるいは
リストなどのモナドの拡充なしに自作のしやすさの加速ができるわけでもないような気がしますが…違いますかね
681デフォルトの名無しさん
2017/06/02(金) 12:44:30.15ID:AZK4Ab0s >>677
オブジェクト指向は、複雑さ、巨大さとどう戦うかというのが進化の方向
HaskellやLispでデカくて複雑なプログラム書いてみたら、オブジェクト指向にも有用な部分があることを理解できるんじゃない?
ちょっとしたコードの書きやすさだけで言語の良し悪しは決まらないよ
オブジェクト指向は、複雑さ、巨大さとどう戦うかというのが進化の方向
HaskellやLispでデカくて複雑なプログラム書いてみたら、オブジェクト指向にも有用な部分があることを理解できるんじゃない?
ちょっとしたコードの書きやすさだけで言語の良し悪しは決まらないよ
682デフォルトの名無しさん
2017/06/02(金) 13:19:41.98ID:E2RwPTWY Objective-Cにも動的にクラスに「おまえなにできるの?」って聞くメッセージあるし
基本的にあの辺りはインターネットみたいな動作しっぱなしの世界で
クラスってノードを動作中に抜き差しするみたいな感覚を指向してるからなぁ。
基本的にあの辺りはインターネットみたいな動作しっぱなしの世界で
クラスってノードを動作中に抜き差しするみたいな感覚を指向してるからなぁ。
683デフォルトの名無しさん
2017/06/02(金) 13:25:35.15ID:4h5vYSNt インタフェース以外の継承はすべて糞
684デフォルトの名無しさん
2017/06/02(金) 13:27:17.37ID:PwRFjZu6 >>679
その都度オブジェクトたちに尋ねるのが、まさにsmalltalkがオブジェクト指向の最たるものの所以で、当時も今もそこについては変わらないんですけどね。
さすがにgnu-smalltalkでは一覧性に難ありな所が^^;
逆です。
その便利な機能のみで、入出力とかはともかく、自分がこう動いて欲しいと望む機能を実現できる。
そこに関してsmalltalkとFPに通じる所があるのも同意します。
ただあれはsmalltalkであってsmalltalkじゃ無いというか。。。
smalltalkって制御構造もメッセージで実現してるけど、Haskellと同じで構造化プログラミングを模倣してるだけで、やや普通のオブジェクト指向言語より構造化プログラミングから逸脱してる気もしますし、確かに生産性は高いんですけど。
ただ、既存の関数やメソッドを一切使わず新しい機能を実現する手間は、その基本的な便利機能の充実度から、Haskellのが生産性は高いかと。
探すより作った方が早い場面もありますし。
(いあ、smalltalkは探すスピード上げる方向の進化と考えれば、作った方が早いって場面も少ないんでしょうが)
その都度オブジェクトたちに尋ねるのが、まさにsmalltalkがオブジェクト指向の最たるものの所以で、当時も今もそこについては変わらないんですけどね。
さすがにgnu-smalltalkでは一覧性に難ありな所が^^;
逆です。
その便利な機能のみで、入出力とかはともかく、自分がこう動いて欲しいと望む機能を実現できる。
そこに関してsmalltalkとFPに通じる所があるのも同意します。
ただあれはsmalltalkであってsmalltalkじゃ無いというか。。。
smalltalkって制御構造もメッセージで実現してるけど、Haskellと同じで構造化プログラミングを模倣してるだけで、やや普通のオブジェクト指向言語より構造化プログラミングから逸脱してる気もしますし、確かに生産性は高いんですけど。
ただ、既存の関数やメソッドを一切使わず新しい機能を実現する手間は、その基本的な便利機能の充実度から、Haskellのが生産性は高いかと。
探すより作った方が早い場面もありますし。
(いあ、smalltalkは探すスピード上げる方向の進化と考えれば、作った方が早いって場面も少ないんでしょうが)
685デフォルトの名無しさん
2017/06/02(金) 13:33:45.72ID:PwRFjZu6 >>681
昔はGUI部分も同じ言語で書いてたからオブジェクト指向が有用だったですが、今はGUI部分はHTMLなりXAMLで書くことも増えて来ましたし、複雑な部分はDSLに任せて分担作業が、複雑巨大なプログラムに対する解の様に思います。
昔はGUI部分も同じ言語で書いてたからオブジェクト指向が有用だったですが、今はGUI部分はHTMLなりXAMLで書くことも増えて来ましたし、複雑な部分はDSLに任せて分担作業が、複雑巨大なプログラムに対する解の様に思います。
686デフォルトの名無しさん
2017/06/02(金) 13:46:34.00ID:Uh1XLH/T 遅延結合って、実行時に型を調べて処理を分岐してるだけでしょ?
687デフォルトの名無しさん
2017/06/02(金) 13:57:11.97ID:ybQLwqcw >>684
> さすがにgnu-smalltalkでは一覧性に難ありな所が^^;
> ただあれはsmalltalkであってsmalltalkじゃ無いというか。。。
具体的にはどういったところがでしょうか? 後学のため教えていたければ幸いです
> smalltalkは探すスピード上げる方向の進化と考えれば、作った方が早いって場面も少ないんでしょうが
SmalltalkがOSモドキと忌み嫌われつつもイメージベースで居続けるのはこの利便性を捨てないためです
ユーザー定義のものも組み込みのものも区別せずにオブジェクトストアに保持し、OODBのように探せます
> さすがにgnu-smalltalkでは一覧性に難ありな所が^^;
> ただあれはsmalltalkであってsmalltalkじゃ無いというか。。。
具体的にはどういったところがでしょうか? 後学のため教えていたければ幸いです
> smalltalkは探すスピード上げる方向の進化と考えれば、作った方が早いって場面も少ないんでしょうが
SmalltalkがOSモドキと忌み嫌われつつもイメージベースで居続けるのはこの利便性を捨てないためです
ユーザー定義のものも組み込みのものも区別せずにオブジェクトストアに保持し、OODBのように探せます
688デフォルトの名無しさん
2017/06/02(金) 14:05:56.39ID:ybQLwqcw >>686
実行時についてはそうなのですが、それを設計や運用時にも徹底する(それをサポートできるシステムであること)がミソです
決定をできるだけ先送りにして固定化しない、ぎりぎり直前でも(場合によっては事後でも)差し替え可能に保ちます
基本的な考え方はこちらに書かれていますのでよかったら読んでみてください
「ソフトウェア工学」は矛盾語法か? - アラン・ケイ
http://metatoys.org/oxymoron/oxymoron.html
アラン・ケイもよく言っていますが、これができるのはおそらくLISPとSmalltalkくらいかと
実行時についてはそうなのですが、それを設計や運用時にも徹底する(それをサポートできるシステムであること)がミソです
決定をできるだけ先送りにして固定化しない、ぎりぎり直前でも(場合によっては事後でも)差し替え可能に保ちます
基本的な考え方はこちらに書かれていますのでよかったら読んでみてください
「ソフトウェア工学」は矛盾語法か? - アラン・ケイ
http://metatoys.org/oxymoron/oxymoron.html
アラン・ケイもよく言っていますが、これができるのはおそらくLISPとSmalltalkくらいかと
689デフォルトの名無しさん
2017/06/02(金) 15:12:57.10ID:PwRFjZu6 >>687
あれ。
Squeakの時に低レベルのもの書く時って、それ用のsmalltalk無かったでしたっけ?
名前忘れたけど。。。
gnu-smalltalkみたいなのが主流にならないと、結局OSモドキに引き篭もって外とやり取りなんですよね。。。
例えば鯖のログを必要な箇所だけ見れる様に加工したいって時でシェルやLLが使われますが、smalltalkはその代替えにならない。
その為だけにOSモドキを立ち上げる手間が壁になる。
まあ、それはHaskellも微妙な立場なんですが、シェル知らなくても、各種LL(HaskellはLLじゃ無いけど関数知らなくてもって意味でHaskell自身の関数も含む)の関数やクラス知らなくても、Haskellなら、自分の発想でこういう加工したいってすぐに自作出来ます。
ただ、コンパイルが遅いので、LLとどっちが便利かが微妙になるだけで。。。
smalltalkはOSモドキと一体の生産性ですが、現実問題、言語は問題解決の手段であって、手段を使用する事自体に手間が掛かってしまっては元も子もないと考えます。
。。。Haskellもその点で微妙ですけどね。
(runghcでLLとして実行しても型検査はするから起動がLLより遅い)
Haskellのパターンマッチや遅延評価やモナドは作り手の知識が少なくても「作りやすい」仕組みだと感じます。
一方のsmalltalkは知識が少なくても「探しやすい」仕組み。
そう感じました。
LLはどっちも80点だけど、総合点で上回る的な。
でも規模が大きくなると型付言語が欲しくなる。。。
あれ。
Squeakの時に低レベルのもの書く時って、それ用のsmalltalk無かったでしたっけ?
名前忘れたけど。。。
gnu-smalltalkみたいなのが主流にならないと、結局OSモドキに引き篭もって外とやり取りなんですよね。。。
例えば鯖のログを必要な箇所だけ見れる様に加工したいって時でシェルやLLが使われますが、smalltalkはその代替えにならない。
その為だけにOSモドキを立ち上げる手間が壁になる。
まあ、それはHaskellも微妙な立場なんですが、シェル知らなくても、各種LL(HaskellはLLじゃ無いけど関数知らなくてもって意味でHaskell自身の関数も含む)の関数やクラス知らなくても、Haskellなら、自分の発想でこういう加工したいってすぐに自作出来ます。
ただ、コンパイルが遅いので、LLとどっちが便利かが微妙になるだけで。。。
smalltalkはOSモドキと一体の生産性ですが、現実問題、言語は問題解決の手段であって、手段を使用する事自体に手間が掛かってしまっては元も子もないと考えます。
。。。Haskellもその点で微妙ですけどね。
(runghcでLLとして実行しても型検査はするから起動がLLより遅い)
Haskellのパターンマッチや遅延評価やモナドは作り手の知識が少なくても「作りやすい」仕組みだと感じます。
一方のsmalltalkは知識が少なくても「探しやすい」仕組み。
そう感じました。
LLはどっちも80点だけど、総合点で上回る的な。
でも規模が大きくなると型付言語が欲しくなる。。。
690デフォルトの名無しさん
2017/06/02(金) 17:01:43.90ID:ybQLwqcw >>689
> シェル知らなくても、各種LL(HaskellはLLじゃ無いけど関数知らなくてもって意味でHaskell自身の関数も含む)の関数やクラス知らなくても、
> Haskellなら、自分の発想でこういう加工したいってすぐに自作出来ます。
つまりHaskellでは組み込みの関数をいっさい知らなくとも(使わなくても)ログの整形作業が自作できるのですか?
それは驚きですね(反語的に)
> シェル知らなくても、各種LL(HaskellはLLじゃ無いけど関数知らなくてもって意味でHaskell自身の関数も含む)の関数やクラス知らなくても、
> Haskellなら、自分の発想でこういう加工したいってすぐに自作出来ます。
つまりHaskellでは組み込みの関数をいっさい知らなくとも(使わなくても)ログの整形作業が自作できるのですか?
それは驚きですね(反語的に)
691デフォルトの名無しさん
2017/06/02(金) 17:24:22.28ID:PwRFjZu6 出来ますね。
結局ライブラリ使った方が早いんですが、学習しながら作ると言う意味では即戦力です。
だからなんだと言われればそれまでですが、GUIとかのライブラリがポトペタで作れたりしないので開発環境としてはまだまだですが、言語としての学習コストは低いと思ってます。
結局ライブラリ使った方が早いんですが、学習しながら作ると言う意味では即戦力です。
だからなんだと言われればそれまでですが、GUIとかのライブラリがポトペタで作れたりしないので開発環境としてはまだまだですが、言語としての学習コストは低いと思ってます。
692デフォルトの名無しさん
2017/06/02(金) 17:35:52.70ID:ybQLwqcw693デフォルトの名無しさん
2017/06/02(金) 17:38:49.65ID:PwRFjZu6 あ、さすがに入出力関数は使いますよ?
でも、その中間の整形処理は一切組み込み関数知らなくても作れますし、その行為自体もそんなに手間じゃ無いです。
Cとかでもある意味整形処理は全部自作出来るわけですが、手間が全然違います。
smalltalkもそう言う意味では少ない知識で自前で作れると思いますが、ロジック部分に関してだけは、Haskellのがより少ない知識で済んでると思います。
GUIまで含めるとライブラリの塊と言うかライブラリそのものなsmalltalkのが生産性は高いんですが。。。
それこそsmalltalkそのものがOSとして普及しないとあんまり意味がないと言うか。。。
でも、その中間の整形処理は一切組み込み関数知らなくても作れますし、その行為自体もそんなに手間じゃ無いです。
Cとかでもある意味整形処理は全部自作出来るわけですが、手間が全然違います。
smalltalkもそう言う意味では少ない知識で自前で作れると思いますが、ロジック部分に関してだけは、Haskellのがより少ない知識で済んでると思います。
GUIまで含めるとライブラリの塊と言うかライブラリそのものなsmalltalkのが生産性は高いんですが。。。
それこそsmalltalkそのものがOSとして普及しないとあんまり意味がないと言うか。。。
694デフォルトの名無しさん
2017/06/02(金) 17:44:01.62ID:PwRFjZu6 >>692
もう出勤1時間前なので流石に今日は作れませんが、何かコードを提示して、組み込み関数を自作して行きましょうか。
上でも書いたですが、制御構造と最低限の入出力関数があれば作れはします。
手間の問題というだけです。
もう出勤1時間前なので流石に今日は作れませんが、何かコードを提示して、組み込み関数を自作して行きましょうか。
上でも書いたですが、制御構造と最低限の入出力関数があれば作れはします。
手間の問題というだけです。
695デフォルトの名無しさん
2017/06/02(金) 18:57:35.54ID:ybQLwqcw >>694
> 今日は作れませんが、何かコードを提示して、組み込み関数を自作して行きましょうか。
おもしろそうですねぜひお願いします
> それこそsmalltalkそのものがOSとして普及しないとあんまり意味がないと言うか。。。
Dockerとかありますし、ホストOS内でOSモドキを動かすことにマシンパワーや心理的障壁は下がってきていると思いますので
「意味がない」と言うことはないと思いますよ
> 今日は作れませんが、何かコードを提示して、組み込み関数を自作して行きましょうか。
おもしろそうですねぜひお願いします
> それこそsmalltalkそのものがOSとして普及しないとあんまり意味がないと言うか。。。
Dockerとかありますし、ホストOS内でOSモドキを動かすことにマシンパワーや心理的障壁は下がってきていると思いますので
「意味がない」と言うことはないと思いますよ
696デフォルトの名無しさん
2017/06/03(土) 02:39:21.79ID:uXpVhTjv 中規模以上の範囲におけるDRY原則を
実現するための手段が
オブジェクト指向じゃないの?
そういう意味ではオブジェクト指向が
なくてもプログラミング出来る。
しかし重複部分を無くすには
オブジェクト指向しかないでしょ?
実現するための手段が
オブジェクト指向じゃないの?
そういう意味ではオブジェクト指向が
なくてもプログラミング出来る。
しかし重複部分を無くすには
オブジェクト指向しかないでしょ?
697デフォルトの名無しさん
2017/06/03(土) 15:57:20.13ID:59j26kfv >>695
たしかに、昔に比べれば仮想化が当たり前になりましたしそうかも知れませんね。
急ごしらえですが、昼間寝てしまったので3時から急ごしらえで作りました。
使い勝手悪いので、行番号振ったりと改良の余地ありです。
import System.Environment
import Data.List
filterOfLine word = unlines.(filter (isInfixOf word)).lines
main = getArgs >>= \(file:word:_) -> readFile file >>= putStrLn.filterOfLine word
IOな関数は全部mainの方にあるので、自作するのはfilterOfLineのunlines,filter,isInfixOf,linesの4つということになりますね。
たしかに、昔に比べれば仮想化が当たり前になりましたしそうかも知れませんね。
急ごしらえですが、昼間寝てしまったので3時から急ごしらえで作りました。
使い勝手悪いので、行番号振ったりと改良の余地ありです。
import System.Environment
import Data.List
filterOfLine word = unlines.(filter (isInfixOf word)).lines
main = getArgs >>= \(file:word:_) -> readFile file >>= putStrLn.filterOfLine word
IOな関数は全部mainの方にあるので、自作するのはfilterOfLineのunlines,filter,isInfixOf,linesの4つということになりますね。
698デフォルトの名無しさん
2017/06/03(土) 16:19:39.76ID:59j26kfv まずunlines
unlines [] = []
unlines (xs:xss) = xs ++ "\n" ++ unlines xss
ちなみに、++も自作出来ます。
(全ての中沖演算子はカッコで囲めば2引数の関数になります)
(++) xs [] = xs
(++) [] ys = ys
(++) (x:xs) ys = x:(++) xs ys
unlines [] = []
unlines (xs:xss) = xs ++ "\n" ++ unlines xss
ちなみに、++も自作出来ます。
(全ての中沖演算子はカッコで囲めば2引数の関数になります)
(++) xs [] = xs
(++) [] ys = ys
(++) (x:xs) ys = x:(++) xs ys
699デフォルトの名無しさん
2017/06/03(土) 16:42:14.38ID:59j26kfv 次にfilter
filter _ [] = []
filter f (x:xs) | f x == True = x:filter f xs
filter f (x:xs) | f x == False = filter f xs
filter _ [] = []
filter f (x:xs) | f x == True = x:filter f xs
filter f (x:xs) | f x == False = filter f xs
700デフォルトの名無しさん
2017/06/03(土) 17:03:05.77ID:59j26kfv isInfixOf
isInfixOf _ [] = False
isInfixOf xs ys | take (length xs) ys == xs = True
isInfixOf xs (y:ys) = isInfixOf xs ys
もちろんtake,lengthも自作可能。
take _ [] = []
take 0 _ = []
take n (x:xs) = x:take (n - 1) xs
length [] = 0
length (_:xs) = 1 + length xs
lengthはリストー>値なので末尾再起にしないとスタック消費するので、
末尾再起な補助関数使って作ったほうが良いですが。
length xs = length' 0 xs
......................where
.........................length' n [] = n
.........................length' n (_:ns) = length' (n + 1) ns
isInfixOf _ [] = False
isInfixOf xs ys | take (length xs) ys == xs = True
isInfixOf xs (y:ys) = isInfixOf xs ys
もちろんtake,lengthも自作可能。
take _ [] = []
take 0 _ = []
take n (x:xs) = x:take (n - 1) xs
length [] = 0
length (_:xs) = 1 + length xs
lengthはリストー>値なので末尾再起にしないとスタック消費するので、
末尾再起な補助関数使って作ったほうが良いですが。
length xs = length' 0 xs
......................where
.........................length' n [] = n
.........................length' n (_:ns) = length' (n + 1) ns
701デフォルトの名無しさん
2017/06/03(土) 19:06:03.31ID:59j26kfv 最後にlines
変なところでハマってました・・・。
lines ns = lines' [] ns
...................where
......................lines' [] [] = []
......................lines' ys [] = ys:lines' [] []
......................lines' ys ('\n':xs) = ys:lines' [] xs
......................lines' ys (x:xs) = lines' (ys ++ [x]) xs
変なところでハマってました・・・。
lines ns = lines' [] ns
...................where
......................lines' [] [] = []
......................lines' ys [] = ys:lines' [] []
......................lines' ys ('\n':xs) = ys:lines' [] xs
......................lines' ys (x:xs) = lines' (ys ++ [x]) xs
702デフォルトの名無しさん
2017/06/03(土) 19:54:54.78ID:rGTJ2+S3 そういうのはブログでやっていただいて・・・
703デフォルトの名無しさん
2017/06/03(土) 21:44:39.04ID:3br47TQ3 たぶん2chしか書くところないんだよ
かわいそうに
かわいそうに
704デフォルトの名無しさん
2017/06/03(土) 21:46:14.14ID:ZuJ0I9j5 もともと糞スレだし
705デフォルトの名無しさん
2017/06/04(日) 11:29:48.53ID:1QhdW1ES てす
706デフォルトの名無しさん
2017/06/04(日) 14:24:55.57ID:vTKCXAGF >>697
ありがとございます
リストとパターンマッチのコンビは強力ですね
お礼がてら GNU Smalltalk でも書いてみました
普通に手続き的に書くとこんな感じです(インデントの全角スペースは適宜置き換えてください)
#!/path/to/gst -f
argv := Smalltalk arguments.
file := argv first.
word := argv second.
stream := FileStream open: file mode: FileStream read.
[stream atEnd] whileFalse: [
| line |
line := stream nextLine.
(line indexOfSubCollection: word) > 0 ifTrue: [line displayNl]].
stream close
少しだけ関数型的なものを意識するとこんな感じになりますか
#!/path/to/gst -f
argv := Smalltalk arguments.
file := argv first.
word := argv second.
lines := file asFile contents lines.
filtered := lines select: [:str | (str indexOfSubCollection: word) > 0].
joined := String join: filtered separatedBy: Character nl asString.
joined displayNl
ありがとございます
リストとパターンマッチのコンビは強力ですね
お礼がてら GNU Smalltalk でも書いてみました
普通に手続き的に書くとこんな感じです(インデントの全角スペースは適宜置き換えてください)
#!/path/to/gst -f
argv := Smalltalk arguments.
file := argv first.
word := argv second.
stream := FileStream open: file mode: FileStream read.
[stream atEnd] whileFalse: [
| line |
line := stream nextLine.
(line indexOfSubCollection: word) > 0 ifTrue: [line displayNl]].
stream close
少しだけ関数型的なものを意識するとこんな感じになりますか
#!/path/to/gst -f
argv := Smalltalk arguments.
file := argv first.
word := argv second.
lines := file asFile contents lines.
filtered := lines select: [:str | (str indexOfSubCollection: word) > 0].
joined := String join: filtered separatedBy: Character nl asString.
joined displayNl
707デフォルトの名無しさん
2017/06/10(土) 02:56:29.64ID:THjn34iS >>706
結局メソッド頼りですね。。。
いあ、全てがオブジェクト故のメソッド依存ですね。
Cとかなら、むしろ長くはなりますがロジック部分の関数は自作出来ますもんね。
Haskellの例はよく車輪の再発明と馬鹿にされますが、車輪の再発明しやすいと言うことは、少ない知識で基本的な関数から応用的な関数まで作れると言うことだと思います。
>>697を複数ファイルで串刺し検索と行番号表示に対応させてみました。
(myfunc.hs + searchword.hs)
使用例:
>searchword numbering myfunc.hs number.hs
行番号表示機能のみのコードを以前作ってて、それを改良した形です。
(myfunc.hs + number.hs)
ファイルにmyfunc.hs + OOとなってる通り、共通だったり今後も関数として使いそうなものはライブラリとして括り出してみました。
結局メソッド頼りですね。。。
いあ、全てがオブジェクト故のメソッド依存ですね。
Cとかなら、むしろ長くはなりますがロジック部分の関数は自作出来ますもんね。
Haskellの例はよく車輪の再発明と馬鹿にされますが、車輪の再発明しやすいと言うことは、少ない知識で基本的な関数から応用的な関数まで作れると言うことだと思います。
>>697を複数ファイルで串刺し検索と行番号表示に対応させてみました。
(myfunc.hs + searchword.hs)
使用例:
>searchword numbering myfunc.hs number.hs
行番号表示機能のみのコードを以前作ってて、それを改良した形です。
(myfunc.hs + number.hs)
ファイルにmyfunc.hs + OOとなってる通り、共通だったり今後も関数として使いそうなものはライブラリとして括り出してみました。
708デフォルトの名無しさん
2017/06/10(土) 02:58:17.25ID:THjn34iS myfunc.hs
module Myfunc where
import Data.List
import Text.Printf
consNum::(Int,String) -> String
consNum (i,xs) = printf "%4d:%s" i xs
numbering = unlines.(map consNum).(zip [1..]).lines
searchWord w = unlines.(filter (isInfixOf w)).lines
putFileContent (f,cs) = printf "%s\n%s" f cs
number.hs
import System.Environment
import Myfunc
zipFileContent fs = return.(zip fs).map numbering
main = getArgs >>= \files -> mapM readFile files >>=
............zipFileContent files >>= mapM_ putFileContent
module Myfunc where
import Data.List
import Text.Printf
consNum::(Int,String) -> String
consNum (i,xs) = printf "%4d:%s" i xs
numbering = unlines.(map consNum).(zip [1..]).lines
searchWord w = unlines.(filter (isInfixOf w)).lines
putFileContent (f,cs) = printf "%s\n%s" f cs
number.hs
import System.Environment
import Myfunc
zipFileContent fs = return.(zip fs).map numbering
main = getArgs >>= \files -> mapM readFile files >>=
............zipFileContent files >>= mapM_ putFileContent
709デフォルトの名無しさん
2017/06/10(土) 02:58:44.23ID:THjn34iS searchword.hs
import System.Environment
import Myfunc
zipFileContent w fs = return.(zip fs).
...................................map ((searchWord w).numbering)
main = getArgs >>=
............\(word:files) -> mapM readFile files >>=
............zipFileContent word files >>= mapM_ putFileContent
import System.Environment
import Myfunc
zipFileContent w fs = return.(zip fs).
...................................map ((searchWord w).numbering)
main = getArgs >>=
............\(word:files) -> mapM readFile files >>=
............zipFileContent word files >>= mapM_ putFileContent
710デフォルトの名無しさん
2017/06/10(土) 22:48:53.27ID:puKcV3/9 >>707
> Cとかなら、むしろ長くはなりますがロジック部分の関数は自作出来ますもんね。
いや、メソッドでもロジックは記述できますよ→http://ideone.com/xiEftE
逆にできないと考える理屈がちょっとわかりかねます
> 少ない知識で基本的な関数から応用的な関数まで作れると言うこと
言語それ自体の学習には向いていますね
SmalltalkはライブラリはもちろんIDEを含む処理系それ自体もSmalltalkで組まれているので
普段自分が使っている機能がどのように実現されているかを調べる過程で学習ができます
GNU Smalltalkはそこらへんがちょっと弱いのが難点ですね
無用かとは思いましたが、通常の方法で記述したナンバリング+複数ファイル対応版も
#!/usr/bin/gst -f
(argv := Smalltalk arguments) isEmpty ifFalse: [
word := argv first.
files := argv allButFirst.
files do: [:file |
| count |
file displayNl.
stream := FileStream open: file mode: FileStream read.
count := 0.
[stream atEnd] whileFalse: [
| line |
count := count + 1.
line := (count printPaddedWith: Character space to: 4), ':', stream nextLine.
(line indexOfSubCollection: word) > 0 ifTrue: [line displayNl]].
stream close]
]
> Cとかなら、むしろ長くはなりますがロジック部分の関数は自作出来ますもんね。
いや、メソッドでもロジックは記述できますよ→http://ideone.com/xiEftE
逆にできないと考える理屈がちょっとわかりかねます
> 少ない知識で基本的な関数から応用的な関数まで作れると言うこと
言語それ自体の学習には向いていますね
SmalltalkはライブラリはもちろんIDEを含む処理系それ自体もSmalltalkで組まれているので
普段自分が使っている機能がどのように実現されているかを調べる過程で学習ができます
GNU Smalltalkはそこらへんがちょっと弱いのが難点ですね
無用かとは思いましたが、通常の方法で記述したナンバリング+複数ファイル対応版も
#!/usr/bin/gst -f
(argv := Smalltalk arguments) isEmpty ifFalse: [
word := argv first.
files := argv allButFirst.
files do: [:file |
| count |
file displayNl.
stream := FileStream open: file mode: FileStream read.
count := 0.
[stream atEnd] whileFalse: [
| line |
count := count + 1.
line := (count printPaddedWith: Character space to: 4), ':', stream nextLine.
(line indexOfSubCollection: word) > 0 ifTrue: [line displayNl]].
stream close]
]
711デフォルトの名無しさん
2017/06/10(土) 23:22:11.89ID:Lo444BJb >>710
ちゃうちゃう。
関数やメソッド抜きと言うか、知識がない場合でもって意味。
確かにsmalltalkの場合はガンガン調べられるのが強みですが。
うーん。。。調べる能力と作る能力の違いと言うのでしょうかね。。。
実際問題、smalltalk程の検索性は無いものの、haskellの関数もhoogleで大体ソース見れるんですが、今回敢えて見ませんでした。
(実はlinesだけ見たけど、逆に複雑過ぎて訳わかめでした)
実際のソースは効率とか可搬性も考慮されたソースですから、私ごときのソースと同じと言うことはないですが、表面上の動きだけは真似られます。
私の中では分岐さえ言語でサポートしてくれれば、ロジック部の自作はどんな言語でも可能で(チューリング同等)、haskellは分岐でifとかの余計な文字入れなくて済むのが楽だなぁとか、リストが基本だからアルゴリズムと相性良いなぁとかですかね。
配列だとリストが基本のアルゴリズムから、配列だったらどう実現する?って考えますから。
多分、最前線でプログラマしてる人はそう言うのを自然としてるんでしょうけど、私みたいなヘッポコは一旦haskellでワンクッション置くと普通の言語でもコード書ける様になりますね。
(少なくとも私は)
ちゃうちゃう。
関数やメソッド抜きと言うか、知識がない場合でもって意味。
確かにsmalltalkの場合はガンガン調べられるのが強みですが。
うーん。。。調べる能力と作る能力の違いと言うのでしょうかね。。。
実際問題、smalltalk程の検索性は無いものの、haskellの関数もhoogleで大体ソース見れるんですが、今回敢えて見ませんでした。
(実はlinesだけ見たけど、逆に複雑過ぎて訳わかめでした)
実際のソースは効率とか可搬性も考慮されたソースですから、私ごときのソースと同じと言うことはないですが、表面上の動きだけは真似られます。
私の中では分岐さえ言語でサポートしてくれれば、ロジック部の自作はどんな言語でも可能で(チューリング同等)、haskellは分岐でifとかの余計な文字入れなくて済むのが楽だなぁとか、リストが基本だからアルゴリズムと相性良いなぁとかですかね。
配列だとリストが基本のアルゴリズムから、配列だったらどう実現する?って考えますから。
多分、最前線でプログラマしてる人はそう言うのを自然としてるんでしょうけど、私みたいなヘッポコは一旦haskellでワンクッション置くと普通の言語でもコード書ける様になりますね。
(少なくとも私は)
712デフォルトの名無しさん
2017/06/11(日) 10:27:47.17ID:mVtMB5qw >>711
> 分岐さえ言語でサポートしてくれれば、ロジック部の自作はどんな言語でも可能で(チューリング同等)
仰りたいことは分かるのですが、マシン語やラムダ式ましてチューリングマシンで何かを記述するのは
知的愉しみや学術・学習目的でならともかく、通常のプログラミングにおいては苦痛しかもたらしません
生産性を考えるなら、言語の機能や特性は
車輪の再発明のしやすさより、あるレベルまでのレイヤーの適切な抽象化に費やされるべきです
そういう切り口でメッセージングというパラダイムはいろいろなレベルの抽象化されたレイヤーに乗っけて
便利に使えるので私は気に入っています
> 分岐さえ言語でサポートしてくれれば、ロジック部の自作はどんな言語でも可能で(チューリング同等)
仰りたいことは分かるのですが、マシン語やラムダ式ましてチューリングマシンで何かを記述するのは
知的愉しみや学術・学習目的でならともかく、通常のプログラミングにおいては苦痛しかもたらしません
生産性を考えるなら、言語の機能や特性は
車輪の再発明のしやすさより、あるレベルまでのレイヤーの適切な抽象化に費やされるべきです
そういう切り口でメッセージングというパラダイムはいろいろなレベルの抽象化されたレイヤーに乗っけて
便利に使えるので私は気に入っています
713デフォルトの名無しさん
2017/06/11(日) 13:31:27.60ID:APfeVpAp なにこの気持ち悪いスレ
714デフォルトの名無しさん
2017/06/11(日) 14:03:25.44ID:QGjh7z3B Person taro = new Person();
みたいな典型的な文法使ってくれる文には問題ないが、
関数内や引数のカッコ内で new したり、
コンストラクタ内でさらに new したり、
Person(new Car() ) みたいにコンストラクタの引数内でnewしてたり、
オブジェクト名のはずが array['taro'] みたいにクォートで囲まれて
'文字列' として連想配列のキーに指定されたりすると、
俺の中での「オブジェクト」のイメージが色々と崩壊する。
これどう解釈すりゃいいの?ってなる。
みたいな典型的な文法使ってくれる文には問題ないが、
関数内や引数のカッコ内で new したり、
コンストラクタ内でさらに new したり、
Person(new Car() ) みたいにコンストラクタの引数内でnewしてたり、
オブジェクト名のはずが array['taro'] みたいにクォートで囲まれて
'文字列' として連想配列のキーに指定されたりすると、
俺の中での「オブジェクト」のイメージが色々と崩壊する。
これどう解釈すりゃいいの?ってなる。
715デフォルトの名無しさん
2017/06/11(日) 14:03:32.47ID:EE9uqNnE HaskellerとSmalltalkerの最底辺の争い
716デフォルトの名無しさん
2017/06/11(日) 14:36:30.58ID:xLXJwyhz >>714
お前のオブジェクトのイメージがおかしいんじゃね?
お前のオブジェクトのイメージがおかしいんじゃね?
717デフォルトの名無しさん
2017/06/11(日) 16:54:46.48ID:8HTADEw1 オブジェクト指向は「playと言ったら"再生"のことだろう」って
コードのわかりやすさ優先だけど
関数言語は「?って書いたらPRINTのことに決まってるだろ」って
『略語でタイプが減ってサイコー』厨が推進してる臭くて
どうにも胡乱(うろん:確かでなく、怪しいこと。うさんくさいこと)なものを感じる。
コードのわかりやすさ優先だけど
関数言語は「?って書いたらPRINTのことに決まってるだろ」って
『略語でタイプが減ってサイコー』厨が推進してる臭くて
どうにも胡乱(うろん:確かでなく、怪しいこと。うさんくさいこと)なものを感じる。
718デフォルトの名無しさん
2017/06/11(日) 17:41:37.82ID:zRaXS3h8 感想文
719デフォルトの名無しさん
2017/06/11(日) 20:23:12.88ID:dQP1iB/o Haskellは実装が簡単
オブジェクト指向言語はクラスリファレンスがすべて
オブジェクト指向言語はクラスリファレンスがすべて
720デフォルトの名無しさん
2017/06/12(月) 08:23:44.68ID:SBdQG7Q8 >>712
それって結局ライブラリが揃っていて、探しやすければオブジェクト指向とか構造化プログラミングとか関数型とかのパラダイムはどうでも良いって言ってる様なものだなと。
そして、実際その通りなんですが、全てのプログラムのパターンを網羅するライブラリは事実上不可能です。
Delphiのコンポーネントでpascalインタプリタがあってポトペタで一行のコードも書かずにpascal処理系を作れたとしても。
結局どの言語もライブラリの関数なりクラスなりを組み合わせます。
smalltalkは検索しやすい方向へ進化し、Haskellは自作しやすい方向に進化したんじゃ無いかと。
そのsmalltalkコードは出力に依存してますが、私もRubyやPythonでよく書きます。
Haskellの場合は強制的に出力に依存しないコードになるので、number.hsのコードの最後の行を
mapM_ (putFileContent.(\(f, c) -> (f, searchWord word c)))
の様にputFileContentの受け取る値を横取りしてsearchwordコマンドを作っても良いです。
型さえ考慮すればnumbering以降から出力直前まで、好きな段階でsearchWord関数を使えます。
numberingとsearchWordそれぞれlines/unlines使ってるので汎用性高い代わりに無駄な処理も多いと言うなら、汎用性を犠牲にしてsearchWordにnumberingの中身を入れてしまえば良いです。
この様に特異な発想?にも柔軟に答えてくれます。
それって結局ライブラリが揃っていて、探しやすければオブジェクト指向とか構造化プログラミングとか関数型とかのパラダイムはどうでも良いって言ってる様なものだなと。
そして、実際その通りなんですが、全てのプログラムのパターンを網羅するライブラリは事実上不可能です。
Delphiのコンポーネントでpascalインタプリタがあってポトペタで一行のコードも書かずにpascal処理系を作れたとしても。
結局どの言語もライブラリの関数なりクラスなりを組み合わせます。
smalltalkは検索しやすい方向へ進化し、Haskellは自作しやすい方向に進化したんじゃ無いかと。
そのsmalltalkコードは出力に依存してますが、私もRubyやPythonでよく書きます。
Haskellの場合は強制的に出力に依存しないコードになるので、number.hsのコードの最後の行を
mapM_ (putFileContent.(\(f, c) -> (f, searchWord word c)))
の様にputFileContentの受け取る値を横取りしてsearchwordコマンドを作っても良いです。
型さえ考慮すればnumbering以降から出力直前まで、好きな段階でsearchWord関数を使えます。
numberingとsearchWordそれぞれlines/unlines使ってるので汎用性高い代わりに無駄な処理も多いと言うなら、汎用性を犠牲にしてsearchWordにnumberingの中身を入れてしまえば良いです。
この様に特異な発想?にも柔軟に答えてくれます。
721デフォルトの名無しさん
2017/06/12(月) 11:40:59.36ID:P8Snx3xG >>720
> 全てのプログラムのパターンを網羅するライブラリは事実上不可能
ライブラリで、将来起きうるすべてのパターンを網羅しろというのは極論では?
学習目的でないなら車輪の再発明は避けるべきだし
よく使うパターンならライブラリ化(抽象化)されるべきだろうという主張に対し
件のご指摘は本末を転倒しています
> そのsmalltalkコードは出力に依存してます
「出力に依存する」ということの意味がわかりにくいのですが
抽出結果を各行逐次出力しているのが気にくわないのでしょうか?
それならそうでない処理の流れにすれば済む話で実際にも容易に書けます
(>>706 の2番目や >>706 の http://ideone.com/xiEftE 、http://ideone.com/RUJP49 )
当初要求された仕様がどうなっていたか、何を重視するかといった方針の齟齬に過ぎないと思います
逆にたとえばご呈示のHsakellのコードで
メモリに一気には読み込めない巨大なファイルを扱わなければならないとしたら
今の枠組みのまま対応することはできないでしょう?それと同じ話です
> 全てのプログラムのパターンを網羅するライブラリは事実上不可能
ライブラリで、将来起きうるすべてのパターンを網羅しろというのは極論では?
学習目的でないなら車輪の再発明は避けるべきだし
よく使うパターンならライブラリ化(抽象化)されるべきだろうという主張に対し
件のご指摘は本末を転倒しています
> そのsmalltalkコードは出力に依存してます
「出力に依存する」ということの意味がわかりにくいのですが
抽出結果を各行逐次出力しているのが気にくわないのでしょうか?
それならそうでない処理の流れにすれば済む話で実際にも容易に書けます
(>>706 の2番目や >>706 の http://ideone.com/xiEftE 、http://ideone.com/RUJP49 )
当初要求された仕様がどうなっていたか、何を重視するかといった方針の齟齬に過ぎないと思います
逆にたとえばご呈示のHsakellのコードで
メモリに一気には読み込めない巨大なファイルを扱わなければならないとしたら
今の枠組みのまま対応することはできないでしょう?それと同じ話です
722デフォルトの名無しさん
2017/06/12(月) 12:20:40.28ID:OM2jEsCX ?
遅延評価なのでどんなに巨大なファイルを一気に読む様なコードに見えても、実際には表示するぶんずつしか読み込まれませんが。。。
遅延評価なのでどんなに巨大なファイルを一気に読む様なコードに見えても、実際には表示するぶんずつしか読み込まれませんが。。。
723デフォルトの名無しさん
2017/06/12(月) 13:05:25.72ID:6z3DqIFq724デフォルトの名無しさん
2017/06/12(月) 13:43:22.37ID:OM2jEsCX >>721
同じライブラリ化されるべきなら、より簡単にライブラリが作れた方が良いんじゃないか?と考えます。
また、ライブラリやクラスを使う際にはオブジェクト指向も関数型も差はないでしょうが、ライブラリを作る側だとクラスは使う時より楽じゃないと感じます。
同じライブラリ化されるべきなら、より簡単にライブラリが作れた方が良いんじゃないか?と考えます。
また、ライブラリやクラスを使う際にはオブジェクト指向も関数型も差はないでしょうが、ライブラリを作る側だとクラスは使う時より楽じゃないと感じます。
725デフォルトの名無しさん
2017/06/12(月) 13:58:04.43ID:OM2jEsCX >>723
普通の言語のreadLine的なのが遅延読み込みですよね?
Haskellは表示しない値は無いのと同じ、表示して再度使う予定もないなら用済み。
(その証拠に、読み込んで複雑な処理させるけど表示しないコードは、何が書かれていようとそもそも何もしない。無限リストを表示させるとかも良い例)
一見全部読む混んで全部表示するコード書いても、表示に必要な分だけ読み込んで、表示が終わったら破棄されていきます。
普通の言語の遅延読み込みに相当するものも、遅延評価が勝手に似た様な働きをしてくれます。
違うのは、行毎とは限らない事くらいです。
普通の言語のreadLine的なのが遅延読み込みですよね?
Haskellは表示しない値は無いのと同じ、表示して再度使う予定もないなら用済み。
(その証拠に、読み込んで複雑な処理させるけど表示しないコードは、何が書かれていようとそもそも何もしない。無限リストを表示させるとかも良い例)
一見全部読む混んで全部表示するコード書いても、表示に必要な分だけ読み込んで、表示が終わったら破棄されていきます。
普通の言語の遅延読み込みに相当するものも、遅延評価が勝手に似た様な働きをしてくれます。
違うのは、行毎とは限らない事くらいです。
726デフォルトの名無しさん
2017/06/12(月) 14:54:51.94ID:P8Snx3xG >>722
失念していました。であれば別の例を考えないといけないですね^^;
要は「部分読み込み→処理→出力」というスキームで進めなければならないシチュエーションでは
今のコードの枠組みは変えざるを得ないということが言いたかっただけです
ところでHaskellのreadFileというのは賢そいのですね
たとえば一番最後の行から逆順に出力するような場合
getArgs >>= \(file:_) -> readFile file >>= putStrLn . unlines . reverse . lines
でもファイル全体を読み込まずに済ませられる(つまり読み込むポジションのみ覚えていて適宜移動して読み込める)程度に賢いのですか?
失念していました。であれば別の例を考えないといけないですね^^;
要は「部分読み込み→処理→出力」というスキームで進めなければならないシチュエーションでは
今のコードの枠組みは変えざるを得ないということが言いたかっただけです
ところでHaskellのreadFileというのは賢そいのですね
たとえば一番最後の行から逆順に出力するような場合
getArgs >>= \(file:_) -> readFile file >>= putStrLn . unlines . reverse . lines
でもファイル全体を読み込まずに済ませられる(つまり読み込むポジションのみ覚えていて適宜移動して読み込める)程度に賢いのですか?
727デフォルトの名無しさん
2017/06/12(月) 16:50:34.40ID:uTHinYqc >>726
そこは痛い所ですね。。。
賢くないはずです。
Haskell.orgも、その弱点を知ってるので良い加減克服されててもおかしくないですが。。。
少なくとも不思議の国のアリスやこころのテキストをwebからコピペして読ませてますが、reverseしないのと体感速度に差が無いですね。
(一文字ずつreverseさせれば流石に体感速度下がりましたが、行毎は感じませんでした)
今時はメモリもGBが当たり前なので余程じゃないと体感出来ないのかも。。。
まあ、すでに(ターミナル次第ですが)Python/Rubyより遅かったりしますけどね。。。
(全面ByteString使用する様に書き換えれば同程度には高速化するでしょうが)
書き捨てコード同士では負けますが、ライブラリ化したらPython/Rubyの書き捨てコードより短くなります。
そこは痛い所ですね。。。
賢くないはずです。
Haskell.orgも、その弱点を知ってるので良い加減克服されててもおかしくないですが。。。
少なくとも不思議の国のアリスやこころのテキストをwebからコピペして読ませてますが、reverseしないのと体感速度に差が無いですね。
(一文字ずつreverseさせれば流石に体感速度下がりましたが、行毎は感じませんでした)
今時はメモリもGBが当たり前なので余程じゃないと体感出来ないのかも。。。
まあ、すでに(ターミナル次第ですが)Python/Rubyより遅かったりしますけどね。。。
(全面ByteString使用する様に書き換えれば同程度には高速化するでしょうが)
書き捨てコード同士では負けますが、ライブラリ化したらPython/Rubyの書き捨てコードより短くなります。
728デフォルトの名無しさん
2017/06/12(月) 20:22:55.90ID:Y8yY2E9Z Haskellでさ、ファイルを読み込んでアルファベット小文字を大文字に置き換えて
読み込んだファイルに上書きできる?
読み込んだファイルに上書きできる?
729デフォルトの名無しさん
2017/06/13(火) 09:56:27.83ID:OES2L0YQ Haskellに限らず楽勝ですね。
730デフォルトの名無しさん
2017/06/13(火) 10:23:22.38ID:+smkRKLD ウンコHaskellerには出来ないよ
731デフォルトの名無しさん
2017/06/13(火) 20:11:42.46ID:xFYZZfX+ >>730
いやあ、同名のファイルに直で保存しようとするとロックされるの失念してた。
そう言えばtempファイルがどうとかどっかで読んだなぁとかRWH読んでたけど見つけられなくて、
でも一旦別名で書き込めばtempファイルにこだわる必要無いじゃんって事で元のファイル名の頭にoutって付けて一旦保存して、
それを開き、内容をそのまま元のファイルに書き込んだった。
これこそ発想の転換w
いやあ、同名のファイルに直で保存しようとするとロックされるの失念してた。
そう言えばtempファイルがどうとかどっかで読んだなぁとかRWH読んでたけど見つけられなくて、
でも一旦別名で書き込めばtempファイルにこだわる必要無いじゃんって事で元のファイル名の頭にoutって付けて一旦保存して、
それを開き、内容をそのまま元のファイルに書き込んだった。
これこそ発想の転換w
732デフォルトの名無しさん
2017/06/13(火) 20:26:50.47ID:fqt/gc/S そんな簡単なコードも書けない言語で
まともなシステムなんて書けないと思わない?
まともなシステムなんて書けないと思わない?
733デフォルトの名無しさん
2017/06/13(火) 20:31:40.86ID:MoJEidw0 ん?
書けたけど?
正攻法じゃなかったのはおいらの知識不足が問題であって、言語の問題じゃ無いよ?
それに発想の転換と言うか、知恵と工夫で解決するのは、どんな言語使ってても必要な事。
だからっておいらがプログラマに向いてるわけじゃ無いのは理解してるが。
書けたけど?
正攻法じゃなかったのはおいらの知識不足が問題であって、言語の問題じゃ無いよ?
それに発想の転換と言うか、知恵と工夫で解決するのは、どんな言語使ってても必要な事。
だからっておいらがプログラマに向いてるわけじゃ無いのは理解してるが。
734デフォルトの名無しさん
2017/06/13(火) 20:31:48.79ID:6y8LhsYq >>731
ちょっとググればやり方わかるのにそれすら調べもせずに幼稚で姑息な思いつきをしたり顔で「発想の転換」とか草
結局、readFileのブラックボックス化をよしとしてるからそういうことになるじゃないの
自慢の車輪の再発明のしやすさとやらは何処へ?
ちょっとググればやり方わかるのにそれすら調べもせずに幼稚で姑息な思いつきをしたり顔で「発想の転換」とか草
結局、readFileのブラックボックス化をよしとしてるからそういうことになるじゃないの
自慢の車輪の再発明のしやすさとやらは何処へ?
735デフォルトの名無しさん
2017/06/13(火) 21:33:59.97ID:IUJZXol8 少ない知識で作りたいものを作れるってのが利点だと思ってるからね。
車輪の再発明しやすいのも、その一環。
その宣伝のためにも敢えてあまりググらない。
ググって見つからないぐらいで作りたいものを作れなくなる様な言語じゃ困る。
車輪の再発明しやすいのも、その一環。
その宣伝のためにも敢えてあまりググらない。
ググって見つからないぐらいで作りたいものを作れなくなる様な言語じゃ困る。
736デフォルトの名無しさん
2017/06/13(火) 21:38:43.06ID:+kV5cJp9 いやググれよHaskellerが馬鹿だと思われる
737デフォルトの名無しさん
2017/06/13(火) 22:21:04.68ID:6mJhj0/B そゆのは他の優秀なHaskellerに任せる。
おいらは実際頭悪いし。
おいらは実際頭悪いし。
738デフォルトの名無しさん
2017/06/13(火) 22:24:43.82ID:Vxrr5bw6 haskellにはカプセル化の概念がないんだよね
739デフォルトの名無しさん
2017/06/13(火) 22:28:26.94ID:+kV5cJp9 カプセルすべきものがないからな
740デフォルトの名無しさん
2017/06/13(火) 22:30:05.60ID:Vxrr5bw6 カプセル化すべきものとは?
741デフォルトの名無しさん
2017/06/13(火) 22:31:18.19ID:Vxrr5bw6 つまりカプセル化はオブジェクト指向に本質的に必要ないものとなるわけですな
742デフォルトの名無しさん
2017/06/13(火) 22:32:14.23ID:9he6m/gR 本質的には何も必要ないよ?
オブジェクト指向をやりやすくするための
言語仕様を備えてるだけなんだから
オブジェクト指向をやりやすくするための
言語仕様を備えてるだけなんだから
743デフォルトの名無しさん
2017/06/13(火) 22:32:39.86ID:Vxrr5bw6 haskellはオブジェクト指向言語と言っていいでしょう
744デフォルトの名無しさん
2017/06/13(火) 22:34:25.58ID:Vxrr5bw6 >>742
何も? 何もいらないのか? それでほんとにオブジェクト指向? なんか怪しいな
何も? 何もいらないのか? それでほんとにオブジェクト指向? なんか怪しいな
745デフォルトの名無しさん
2017/06/13(火) 22:42:17.98ID:Vxrr5bw6 条件分岐を書かないことで疎結合にする
これがオブジェクト指向の本質
これがオブジェクト指向の本質
746デフォルトの名無しさん
2017/06/14(水) 01:43:10.82ID:CkeSeNJV Haskellはモジュール単位で隠蔽機能がある。
モジュール公開側も公開したいものだけ指定出来るし、importする側も、さらに細かくこの関数だけ読み込むとか、この関数以外を読み込むとか、細かく指定出来る。
モジュール公開側も公開したいものだけ指定出来るし、importする側も、さらに細かくこの関数だけ読み込むとか、この関数以外を読み込むとか、細かく指定出来る。
747デフォルトの名無しさん
2017/06/14(水) 01:47:53.66ID:CkeSeNJV748デフォルトの名無しさん
2017/06/14(水) 07:43:27.89ID:FHXnlM5+ Haskellもモナドで手続きも書けるようにしたけど
モナドで手続き書くとマジ終わってるレベルで読みにくくて冗長
かと言ってHaskellでも性能出そうと思うと手続きを書かざるを得ない
つまりウンコ言語
モナドで手続き書くとマジ終わってるレベルで読みにくくて冗長
かと言ってHaskellでも性能出そうと思うと手続きを書かざるを得ない
つまりウンコ言語
749デフォルトの名無しさん
2017/06/14(水) 07:58:06.20ID:FHXnlM5+750デフォルトの名無しさん
2017/06/14(水) 08:21:45.76ID:9+QvSXTd まだカプセル化不要とか言ってるバカが居るのか
751デフォルトの名無しさん
2017/06/14(水) 08:25:14.80ID:JfvqLMZu >>749
ネットに踊らされてないで自分でやってみなさい
ネットに踊らされてないで自分でやってみなさい
752デフォルトの名無しさん
2017/06/14(水) 08:43:15.00ID:JrGv0x1p >>751
やってみた?
やってみた?
753デフォルトの名無しさん
2017/06/14(水) 08:45:08.83ID:JrGv0x1p >>750
カプセル化が必要だとするならそれは設計が間違っているというのがhaskellの議論で明らかになったわけです
カプセル化が必要だとするならそれは設計が間違っているというのがhaskellの議論で明らかになったわけです
754デフォルトの名無しさん
2017/06/14(水) 09:03:03.20ID:JrGv0x1p755デフォルトの名無しさん
2017/06/14(水) 09:08:24.09ID:JrGv0x1p 純粋関数型と呼ばれるどこぞの言語にもdoがあるでしょう
つまり手続き型は数学的モデルのあるちゃんとした方法なんです
それを駄目だと思うのは慣れすぎてマンネリ化してるからなんです
つまり手続き型は数学的モデルのあるちゃんとした方法なんです
それを駄目だと思うのは慣れすぎてマンネリ化してるからなんです
756デフォルトの名無しさん
2017/06/14(水) 09:10:44.44ID:OTRTw69H 原点に帰ろう
c言語からやり直そう
linuxはc言語で書かれていますが
完全にオブジェクト指向です
c言語からやり直そう
linuxはc言語で書かれていますが
完全にオブジェクト指向です
757デフォルトの名無しさん
2017/06/14(水) 09:42:08.75ID:Zur2LRZk >>753
前どこかのスレにコマンド引数の偶数番目と奇数番目を分けてリストに入れて、後から1、2番目を一つの組み。3、4番目を2つ目の組み。。。
みたいにして表示するコードをHaskellとPythonとRubyで書いたが、皮肉にもグローバル変数があっても良いはずのHaskellだけがグローバル変数作らないで済んで、
PythonとRubyはグローバル変数作らないとダメだった。
Pythonは書き様によってはグローバル変数無くせそうだったし、Rubyのsliceヒントに別の書き方のが全言語でグローバル変数要らなくなったし、シンプルになったけど。
前どこかのスレにコマンド引数の偶数番目と奇数番目を分けてリストに入れて、後から1、2番目を一つの組み。3、4番目を2つ目の組み。。。
みたいにして表示するコードをHaskellとPythonとRubyで書いたが、皮肉にもグローバル変数があっても良いはずのHaskellだけがグローバル変数作らないで済んで、
PythonとRubyはグローバル変数作らないとダメだった。
Pythonは書き様によってはグローバル変数無くせそうだったし、Rubyのsliceヒントに別の書き方のが全言語でグローバル変数要らなくなったし、シンプルになったけど。
758デフォルトの名無しさん
2017/06/14(水) 09:46:27.58ID:Zur2LRZk >>755
doの書き方は手続き型言語でも宣言的と呼ばれる関数(メソッド)呼び出しの羅列の再現。
ループとかの手続き丸出しなのの再現はあくまで再帰。
だが再現はループの代わりにもなるが、あくまで値を返す関数。
メソッドチェーンと同じで返ってくる値の型を意識する。
doの書き方は手続き型言語でも宣言的と呼ばれる関数(メソッド)呼び出しの羅列の再現。
ループとかの手続き丸出しなのの再現はあくまで再帰。
だが再現はループの代わりにもなるが、あくまで値を返す関数。
メソッドチェーンと同じで返ってくる値の型を意識する。
759デフォルトの名無しさん
2017/06/14(水) 09:47:28.86ID:Zur2LRZk x再現はループの
o再帰はループの
o再帰はループの
760デフォルトの名無しさん
2017/06/14(水) 10:38:47.08ID:9+QvSXTd カプセル化不要論者はぜひここのコメント欄で戦っていただきたい
http://qiita.com/tutinoco/items/6952b01e5fc38914ec4e
http://qiita.com/tutinoco/items/6952b01e5fc38914ec4e
761デフォルトの名無しさん
2017/06/14(水) 10:50:09.06ID:DZ9ij0Gz >>757
> PythonとRubyはグローバル変数作らないとダメだった。
これ↓のどこでグローバル変数を作る必要があると?
print(list(zip(*[iter(sys.argv[1:])]*2)))
p ARGV[0...ARGV.size/2*2].each_slice(2).to_a
> PythonとRubyはグローバル変数作らないとダメだった。
これ↓のどこでグローバル変数を作る必要があると?
print(list(zip(*[iter(sys.argv[1:])]*2)))
p ARGV[0...ARGV.size/2*2].each_slice(2).to_a
762デフォルトの名無しさん
2017/06/14(水) 11:07:50.39ID:Zur2LRZk >>761
お、そう書けるのね。
おいらPythonやRubyは(Haskellもそこまでじゃないけど)初心者程度だから。
そもそも重要なのは手続き型言語はグローバル変数がバグの温床になるのに、Python、Rubyじゃいとも簡単に作れちゃうって事ね。
Haskellみたいなグローバル変数がバグの温床になるわけじゃない言語でさえもパッケージ単位でカプセル化考慮されてるのに、初心者程グローバル変数宣言しちゃうし、出来ちゃうのは問題だよ。
お、そう書けるのね。
おいらPythonやRubyは(Haskellもそこまでじゃないけど)初心者程度だから。
そもそも重要なのは手続き型言語はグローバル変数がバグの温床になるのに、Python、Rubyじゃいとも簡単に作れちゃうって事ね。
Haskellみたいなグローバル変数がバグの温床になるわけじゃない言語でさえもパッケージ単位でカプセル化考慮されてるのに、初心者程グローバル変数宣言しちゃうし、出来ちゃうのは問題だよ。
763デフォルトの名無しさん
2017/06/14(水) 11:15:17.26ID:Zur2LRZk >>761
って、よく見たらsliceの方のアルゴリズムだし。。。
上でも、そっちはグローバル変数使わなかったって書いてるだろ。
コマンド引数の配列なりリストなりを
args!!i -- Haskell の場合
args[i] #Ruby、Pythonの場合
このインデックスのiを奇数か偶数か判定して、それぞれのリスト(配列)を作ってzipするアルゴリズムではグローバル変数使った。
おいらの力量のせいだったのかもしれんが、そう言う書き方に自然となったのが問題って話。
って、よく見たらsliceの方のアルゴリズムだし。。。
上でも、そっちはグローバル変数使わなかったって書いてるだろ。
コマンド引数の配列なりリストなりを
args!!i -- Haskell の場合
args[i] #Ruby、Pythonの場合
このインデックスのiを奇数か偶数か判定して、それぞれのリスト(配列)を作ってzipするアルゴリズムではグローバル変数使った。
おいらの力量のせいだったのかもしれんが、そう言う書き方に自然となったのが問題って話。
764デフォルトの名無しさん
2017/06/14(水) 11:51:06.96ID:oCEbA4RA おいら とか言う奴は
オイラー と被せてるの?
オイラー と被せてるの?
765デフォルトの名無しさん
2017/06/14(水) 12:07:52.90ID:l6WSuI/u たしかに20年ぶりくらいに見たな
766デフォルトの名無しさん
2017/06/14(水) 12:32:56.95ID:OTRTw69H 関数の中で処理したらいいじゃん
767デフォルトの名無しさん
2017/06/14(水) 12:49:59.35ID:DZ9ij0Gz >>763
ふつうに書けばシンプルに書けるものをなんでわざわざ複雑にせなあかんのかがわからん
p ARGV[0...ARGV.size/2*2].select.with_index{ |_,i| i.even? }.zip(ARGV.select.with_index{ |_,i| i.odd? })
ふつうに書けばシンプルに書けるものをなんでわざわざ複雑にせなあかんのかがわからん
p ARGV[0...ARGV.size/2*2].select.with_index{ |_,i| i.even? }.zip(ARGV.select.with_index{ |_,i| i.odd? })
768デフォルトの名無しさん
2017/06/14(水) 12:51:07.02ID:pq4tRhVl めっちゃ複雑やんw
769デフォルトの名無しさん
2017/06/14(水) 12:53:55.83ID:u4jybkYs (function(){
処理
})();
JavaScript でも、グローバルスコープにしないため、ファイル全体を無名関数で囲む。
Rubyでも、囲めばよい
結局、囲むという事は、クラスと同じ。
関数・クロージャ・ブロック・ラムダ式など、どういう表現をしようが、
スコープがあるという事は、クラスと同じ
処理
})();
JavaScript でも、グローバルスコープにしないため、ファイル全体を無名関数で囲む。
Rubyでも、囲めばよい
結局、囲むという事は、クラスと同じ。
関数・クロージャ・ブロック・ラムダ式など、どういう表現をしようが、
スコープがあるという事は、クラスと同じ
770デフォルトの名無しさん
2017/06/14(水) 12:55:47.63ID:Zur2LRZk >>764
その発想は無かった。
>>766
実はHaskellも最初リスト内包表記でグローバル変数作ってたんだけどね。
結局判定する関数のevenとoddしか違いが無かったからmakeList関数作って纏めただけなんだが、同じリスト内包表記あるPythonで同じ様にしようとしたらi % 2 == 0とか書かないといけなかったのね。
んで、まあ良いや。0か1かで奇数偶数分けられるから関数作っちゃえって思ったらエラー出た。
定数じゃないとダメっぽくて諦めたけど、リスト内包表記に拘らなければ関数に出来たと思う。
(もしくは将来的にリスト内包表記のif式に外部から変数渡せる様になったら作れる)
処理全体を関数にしちゃうってのは確かにグローバル変数を無くす有効な手段だが、初心者ほどそんな事しない。
その発想は無かった。
>>766
実はHaskellも最初リスト内包表記でグローバル変数作ってたんだけどね。
結局判定する関数のevenとoddしか違いが無かったからmakeList関数作って纏めただけなんだが、同じリスト内包表記あるPythonで同じ様にしようとしたらi % 2 == 0とか書かないといけなかったのね。
んで、まあ良いや。0か1かで奇数偶数分けられるから関数作っちゃえって思ったらエラー出た。
定数じゃないとダメっぽくて諦めたけど、リスト内包表記に拘らなければ関数に出来たと思う。
(もしくは将来的にリスト内包表記のif式に外部から変数渡せる様になったら作れる)
処理全体を関数にしちゃうってのは確かにグローバル変数を無くす有効な手段だが、初心者ほどそんな事しない。
771デフォルトの名無しさん
2017/06/14(水) 12:59:16.57ID:Zur2LRZk >>767
ファイル名とファイルの内容をzipするコード書いた後の実験的なコードだったんで、そう言う発想になった。
後でsliceなコードのが単純だし、グローバル変数使わないって気付いたけど。
ここではどうしても使わざるを得ない場面が出て来たってのを言いたかっただけ。
ファイル名とファイルの内容をzipするコード書いた後の実験的なコードだったんで、そう言う発想になった。
後でsliceなコードのが単純だし、グローバル変数使わないって気付いたけど。
ここではどうしても使わざるを得ない場面が出て来たってのを言いたかっただけ。
772デフォルトの名無しさん
2017/06/14(水) 17:49:45.05ID:OTRTw69H ローカル変数で良くない?
773デフォルトの名無しさん
2017/06/14(水) 17:50:30.90ID:OTRTw69H なんでグローバルにする必要があるんですかね?
774デフォルトの名無しさん
2017/06/14(水) 17:52:34.20ID:OTRTw69H グローバルな人材を育てたいのかな?
775デフォルトの名無しさん
2017/06/14(水) 17:54:12.75ID:OTRTw69H >>767
古き良きパールのようじゃ
古き良きパールのようじゃ
776デフォルトの名無しさん
2017/06/14(水) 21:53:40.74ID:293Y7UBw777デフォルトの名無しさん
2017/06/14(水) 22:01:32.77ID:293Y7UBw そもそも771は長くても10行程度のコードしか書けないクソ初心者だろ?
その規模じゃグローバル変数でも問題ないわ
その規模じゃグローバル変数でも問題ないわ
778デフォルトの名無しさん
2017/06/14(水) 23:10:49.67ID:Mf2Ob2T8 はいシングルトンも禁止
779デフォルトの名無しさん
2017/06/15(木) 01:45:19.51ID:pFraGGes もう継承、ポリモーフィズム、カプセル化も禁止でいいよ
780デフォルトの名無しさん
2017/06/15(木) 01:53:46.41ID:K1DnwnKl 継承、実装、DIの違いをポケモンを例に説明してくれ。
781デフォルトの名無しさん
2017/06/15(木) 07:08:45.79ID:onPRKaJ8 ポケモン進化、トレーニング、?
782デフォルトの名無しさん
2017/06/15(木) 08:21:04.78ID:YgSQzG1P >>776
間違いというか効率悪い方の例をわざわざあげてる意味わかってる?
この例に限らず、グローバル変数がバグの温床になるって分かってるのに、
どうしてもグローバル変数使わないと書けない場面があるから黙認されてるっていうのが、
もうオブジェクト指向はグローバル変数に対して根本的な解決策を持たない不完全なパラダイムだって証左だよ。
間違いというか効率悪い方の例をわざわざあげてる意味わかってる?
この例に限らず、グローバル変数がバグの温床になるって分かってるのに、
どうしてもグローバル変数使わないと書けない場面があるから黙認されてるっていうのが、
もうオブジェクト指向はグローバル変数に対して根本的な解決策を持たない不完全なパラダイムだって証左だよ。
783デフォルトの名無しさん
2017/06/15(木) 09:25:01.12ID:ESWCwDfu784デフォルトの名無しさん
2017/06/16(金) 12:29:20.85ID:HP1Jz4Vg プログラムを勉強して日が浅いのですが、LSPを意識すると継承って何の意味があるんだろうと思ってしまいます
置換可能を実現できるということは、サブクラスはスーパークラスそのものってことになるような気がして
LSPの概念は、どう便利なのでしょうか
置換可能を実現できるということは、サブクラスはスーパークラスそのものってことになるような気がして
LSPの概念は、どう便利なのでしょうか
785デフォルトの名無しさん
2017/06/16(金) 13:56:31.30ID:zL8gur9S グローバル変数が無いと書けない場面なんて無い
グローバルスコープのシングルトンオブジェクトでいい
必要ならね
グローバルスコープのシングルトンオブジェクトでいい
必要ならね
786デフォルトの名無しさん
2017/06/16(金) 14:28:02.28ID:pc3mXeVr787デフォルトの名無しさん
2017/06/16(金) 19:13:51.77ID:HP1Jz4Vg788デフォルトの名無しさん
2017/06/16(金) 20:00:04.73ID:Z2HbLI7g789デフォルトの名無しさん
2017/06/16(金) 20:55:27.26ID:DGAgd9ez interface
790デフォルトの名無しさん
2017/06/17(土) 02:54:17.87ID:1edbV8Vs メソッドディスパッチの問題だろ?
というBlogをみて「ああそれだよそれ、そういうのでいいんだよ」(孤独のグルメ風表現)になった
というBlogをみて「ああそれだよそれ、そういうのでいいんだよ」(孤独のグルメ風表現)になった
791デフォルトの名無しさん
2017/06/17(土) 11:41:41.30ID:m1x703gI 第1目標:修正が他までどんどん波及していって修正地獄にならないようにする
なのに、変な原理原則マンに限ってそこがスッポリ抜けてたりするからな
なのに、変な原理原則マンに限ってそこがスッポリ抜けてたりするからな
792デフォルトの名無しさん
2017/06/17(土) 14:11:25.74ID:qMkdrUOQ 原理原則っつーか原理主義者っつーか
そもそもOOは原理といえるほど理屈がしっかりしてないだろ
複数のオブジェクトにまたがるメソッドをどこに実装しようかっていう初歩のレベルで
すっきりしないというのに
むろんマルチメソッドという考え方もあるけど、ほとんどのOOPには実装されてないしな
だから複数の色んなことを同時に考慮して、うまい具合にしなきゃならないっつーのに
原理原則とかでは無いわ
我々は空間と時間を両方扱っているわけで、片方だけに着目すりゃよいってものでもないわ
そもそもOOは原理といえるほど理屈がしっかりしてないだろ
複数のオブジェクトにまたがるメソッドをどこに実装しようかっていう初歩のレベルで
すっきりしないというのに
むろんマルチメソッドという考え方もあるけど、ほとんどのOOPには実装されてないしな
だから複数の色んなことを同時に考慮して、うまい具合にしなきゃならないっつーのに
原理原則とかでは無いわ
我々は空間と時間を両方扱っているわけで、片方だけに着目すりゃよいってものでもないわ
793デフォルトの名無しさん
2017/06/17(土) 14:15:26.57ID:qMkdrUOQ 第一、OO程度の原理原則に思考回路が縛られるって
潜在的に、そうとうオツムが弱いよな
世の中の理屈とかけ離れすぎているというか、単純化しすぎ
潜在的に、そうとうオツムが弱いよな
世の中の理屈とかけ離れすぎているというか、単純化しすぎ
794デフォルトの名無しさん
2017/06/17(土) 15:24:12.75ID:hpXZLyYV >>792
> 複数のオブジェクトにまたがるメソッドをどこに実装しようかっていう初歩のレベルで
オブジェクト指向は、現実世界で実現しているオブジェクトに
ソフトウェアの設計を合わせようとするものだが、
現実世界のオブジェクトでは、
「複数のオブジェクトにまたがるメソッド」は
どこに実装されているんですか?
複数のオブジェクトにまたがるメソッドというものが
そもそも不自然なメソッドですよね?
> 複数のオブジェクトにまたがるメソッドをどこに実装しようかっていう初歩のレベルで
オブジェクト指向は、現実世界で実現しているオブジェクトに
ソフトウェアの設計を合わせようとするものだが、
現実世界のオブジェクトでは、
「複数のオブジェクトにまたがるメソッド」は
どこに実装されているんですか?
複数のオブジェクトにまたがるメソッドというものが
そもそも不自然なメソッドですよね?
795デフォルトの名無しさん
2017/06/17(土) 16:14:00.96ID:jlRZsUTe796デフォルトの名無しさん
2017/06/17(土) 16:33:38.51ID:ExP73Jcy 物理法則の表現って因果関係的な形ではないよねー
797デフォルトの名無しさん
2017/06/17(土) 17:27:39.37ID:qMkdrUOQ はい皆さん>>794を読んでください
もうこの時点でアホっぽいってわかるでしょ
ありえないぐらいで、釣りじゃないかと疑うぐらい
アホらしいけどまず基本的なことからいうと
コンピュータは日本語で「計算機」ともいうのでそっちの方向から攻めると
足し算は現実世界のどこに実装されているんですか?っていうぐらいアホなイチャモン
物や物体的なことにこだわって、概念的なことであるとか関係性といったものを
認めない姿勢は技術者ではない以前に、人間的ですらない
もうこの時点でアホっぽいってわかるでしょ
ありえないぐらいで、釣りじゃないかと疑うぐらい
アホらしいけどまず基本的なことからいうと
コンピュータは日本語で「計算機」ともいうのでそっちの方向から攻めると
足し算は現実世界のどこに実装されているんですか?っていうぐらいアホなイチャモン
物や物体的なことにこだわって、概念的なことであるとか関係性といったものを
認めない姿勢は技術者ではない以前に、人間的ですらない
798デフォルトの名無しさん
2017/06/17(土) 17:38:01.77ID:hpXZLyYV >>795
物理法則っていうのは、
例えばすべての物体は引力があるとか?
あ、これ複数のオブジェクトにまたがるんじゃなくて
個々のオブジェクトに引力があるのか
例えば、熱を加えると発火するとか?
あ、これもその物体が変化するだけか
複数のオブジェクトにまたがるメソッドってなんですかね?
物理法則っていうのは、
例えばすべての物体は引力があるとか?
あ、これ複数のオブジェクトにまたがるんじゃなくて
個々のオブジェクトに引力があるのか
例えば、熱を加えると発火するとか?
あ、これもその物体が変化するだけか
複数のオブジェクトにまたがるメソッドってなんですかね?
799デフォルトの名無しさん
2017/06/17(土) 17:40:22.96ID:hpXZLyYV >>797
数値を入力してボタンを押すと足し算を行うのは
計算機というオブジェクトが持ってる機能ですよね?
それとも電気信号レベルの話をすれば良いのですか?
そろばんでも足し算ができますが、
もしかしてこの2つを同一のものとみなしてるのですか?
そろばんは電気信号じゃなくて物体の位置で表現するって
だけですからね。
数値を入力してボタンを押すと足し算を行うのは
計算機というオブジェクトが持ってる機能ですよね?
それとも電気信号レベルの話をすれば良いのですか?
そろばんでも足し算ができますが、
もしかしてこの2つを同一のものとみなしてるのですか?
そろばんは電気信号じゃなくて物体の位置で表現するって
だけですからね。
800デフォルトの名無しさん
2017/06/17(土) 18:01:41.38ID:qMkdrUOQ アホか
数学上での足し算という「概念」の話だ
1に2を足すと3になるっていう概念上の関係性の話だ
別に現実世界に実装があるわけじゃないが、1に2を足すと3になるし、有用なんだよ
ついでに言うと、1とか2とかいう数字自体からして現実世界に実装が存在しているわけではない
1とか2はあくまで数学上の概念だ
もう本当にあほだなぁと思う、あきれて言葉も出ない
こうなったらもうエンジニアとして終わりなんだと思うし
人としても鬱病になる末路なんだろうか、知ったこっちゃないが
数学上での足し算という「概念」の話だ
1に2を足すと3になるっていう概念上の関係性の話だ
別に現実世界に実装があるわけじゃないが、1に2を足すと3になるし、有用なんだよ
ついでに言うと、1とか2とかいう数字自体からして現実世界に実装が存在しているわけではない
1とか2はあくまで数学上の概念だ
もう本当にあほだなぁと思う、あきれて言葉も出ない
こうなったらもうエンジニアとして終わりなんだと思うし
人としても鬱病になる末路なんだろうか、知ったこっちゃないが
801デフォルトの名無しさん
2017/06/17(土) 18:08:50.48ID:qMkdrUOQ >数値を入力してボタンを押すと足し算を行うのは
>計算機というオブジェクトが持ってる機能ですよね?
>それとも電気信号レベルの話をすれば良いのですか?
この発言もかなり面白くて、この言葉通りにプログラムをすれば
すべてのメソッドはコンピュータインスタンスに紐づくことになる
computer.add(1,2); computer.func(a,b,c);ってところか?
OOだなんだいったって、実際に処理をするのは「コンピュータ」
に他ならないんだから至極当然な意見だわなwww
たしかに現実世界を模してるわ
いわゆるGODクラス、staticおじさんと同じだ
つまりもう、自分がどういう立場をとっていて何を言っているのかすら
よくわかっていない状態ということだな
病的
>計算機というオブジェクトが持ってる機能ですよね?
>それとも電気信号レベルの話をすれば良いのですか?
この発言もかなり面白くて、この言葉通りにプログラムをすれば
すべてのメソッドはコンピュータインスタンスに紐づくことになる
computer.add(1,2); computer.func(a,b,c);ってところか?
OOだなんだいったって、実際に処理をするのは「コンピュータ」
に他ならないんだから至極当然な意見だわなwww
たしかに現実世界を模してるわ
いわゆるGODクラス、staticおじさんと同じだ
つまりもう、自分がどういう立場をとっていて何を言っているのかすら
よくわかっていない状態ということだな
病的
802デフォルトの名無しさん
2017/06/17(土) 18:17:41.65ID:hpXZLyYV >>800
> 1に2を足すと3になるっていう概念上の関係性の話だ
1という値の数値オブジェクトに
2という数値オブジェクトを引数に
数値オブジェクトの加算メソッドを呼び出すと
3という数値オブジェクトになるって話?
> 1に2を足すと3になるっていう概念上の関係性の話だ
1という値の数値オブジェクトに
2という数値オブジェクトを引数に
数値オブジェクトの加算メソッドを呼び出すと
3という数値オブジェクトになるって話?
803デフォルトの名無しさん
2017/06/17(土) 19:35:16.50ID:+xCSnEDa >>798
引力を物体間の相互作用じゃなくてオブジェクト単体で定義される性質と思ってんの?
引力を物体間の相互作用じゃなくてオブジェクト単体で定義される性質と思ってんの?
804デフォルトの名無しさん
2017/06/17(土) 19:48:30.88ID:hpXZLyYV805デフォルトの名無しさん
2017/06/17(土) 20:34:57.52ID:qMkdrUOQ ほらまたバカなこと言いだしたでしょ、すごいでしょ、この病気
俺がかなり煽った文体で書きこんでるのにもかかわらず
お前の援軍は誰も現れないでしょ、これが現実
頭悪すぎて他人の言っていることも自分の言っていることすら理解できないという
もうどうしようもない残念さで、誰も味方がいない
この手の人は本当にもうどうしようもなくて
かわいそうだからと周りの人が説得を試みても全くの無駄というか
普通の人が当たり前にできる思考が、どうにも理解できないらしく
必ず自分にわかる範囲で自分の領域に持ち込んで考えようとするんだが
その行為自体が間違っているってことが何故か分からないらしい
袋小路でとにかく打つ手なし
俺がかなり煽った文体で書きこんでるのにもかかわらず
お前の援軍は誰も現れないでしょ、これが現実
頭悪すぎて他人の言っていることも自分の言っていることすら理解できないという
もうどうしようもない残念さで、誰も味方がいない
この手の人は本当にもうどうしようもなくて
かわいそうだからと周りの人が説得を試みても全くの無駄というか
普通の人が当たり前にできる思考が、どうにも理解できないらしく
必ず自分にわかる範囲で自分の領域に持ち込んで考えようとするんだが
その行為自体が間違っているってことが何故か分からないらしい
袋小路でとにかく打つ手なし
806デフォルトの名無しさん
2017/06/17(土) 20:38:27.45ID:hpXZLyYV 駄文乙
807デフォルトの名無しさん
2017/06/17(土) 20:44:48.25ID:qMkdrUOQ まず引力に関して言えば、引力という力の存在は認められているが
なぜ引力という力が働くのかということは
本当のところは誰にもわからない
つまりは表面上そう見えるからそういう力があるのだろうという程度のものであり
根本的な原理は未解明なので、誰が引力を実行しているかとか考えるだけバカ
あと本質的に>>803が言いたいのは、オブジェクトが一つしかなければ
引力など定義しても無意味だし、引力の効能は性質となって表れないから
定義もされないっていう意味だろう
まぁ一般的な考え方だな
世の中は極めて相対的だしな
お金の価値ですらそうだしな
なぜ引力という力が働くのかということは
本当のところは誰にもわからない
つまりは表面上そう見えるからそういう力があるのだろうという程度のものであり
根本的な原理は未解明なので、誰が引力を実行しているかとか考えるだけバカ
あと本質的に>>803が言いたいのは、オブジェクトが一つしかなければ
引力など定義しても無意味だし、引力の効能は性質となって表れないから
定義もされないっていう意味だろう
まぁ一般的な考え方だな
世の中は極めて相対的だしな
お金の価値ですらそうだしな
808デフォルトの名無しさん
2017/06/17(土) 20:46:44.94ID:hpXZLyYV > オブジェクトが一つしかなければ
> 引力など定義しても無意味だし、
オブジェクトが一つしかない状態に限っていえば
無意味なんだと言われましても・・・
数字だって一つしかなければ
足し算は無意味ですよ?
> 引力など定義しても無意味だし、
オブジェクトが一つしかない状態に限っていえば
無意味なんだと言われましても・・・
数字だって一つしかなければ
足し算は無意味ですよ?
809デフォルトの名無しさん
2017/06/17(土) 20:48:06.62ID:hpXZLyYV あ、そうか
マルチメソッドはオブジェクトが一つしかなければ無意味だ!
って言いたいんだな。
マルチメソッドはオブジェクトが一つしかなければ無意味だ!
って言いたいんだな。
810デフォルトの名無しさん
2017/06/17(土) 21:15:05.61ID:qMkdrUOQ わかりやすいところでWeb検索の例だと
Googleのページランクの仕組みは非常に現代的だったわな
たくさんあちこちからリンクが張られているページは有用性が高いのだろう
そして有用性の高いページからリンクが張られているページもまた有用性が
高いのだろうっていう
そんで、かつてのYAHOO方式は負けたわけだ
でも別に珍しいことではなくて、論文とかでもたくさん引用されている論文は
価値が高いってことになってるし、まぁ基本といいますか
たくさん友達のいる人は有能なんだろうってのも大体あってるし
取引先の多い企業、特に大企業との取引がある会社は信用が有るってのも
一般的な価値基準だわなぁ
資本主義に関しても、お金のような流動性のあるものに着目するっていうのが
現代的であるし、お金をどんどん回して経済を発展させようってのも
政治家の大好きな謳い文句だわな
大体世の中そういう構図になっているから、反対へ行く人や軽んじる人
もしくは君みたいに理解できない人は北朝鮮になる
ただ何事もバランスは大事なんだけど、そうはいってもどっちに軸足を置いておくか
ってのはあるわな
簡単な方の考え方は誰にでもできるし、意識する必要もないし、学ぶべき部分もないから
あまり重要視されないんだけど、本音と建て前みたいな話にもなってくるわ
ただ、とっちが建前になってどっちが本音になるかは相手とシチュエーションによるという
つまり俺もOOPを、「使う」わけだが、いつも「必要悪」という考えはある
絶えず反対のことを考えながら吟味してOOする
そのぐらいでちょうど良いバランス
ただ、本音と建前の世界なのでコンセンサスが取りにくい
hpXZLyYVみたいなのが入ってくると破たんする
いちいち面倒くさいんでLinusがC++を追い出す気持ちもわかる
OOPをおもちゃにする奴はマジで糞
Googleのページランクの仕組みは非常に現代的だったわな
たくさんあちこちからリンクが張られているページは有用性が高いのだろう
そして有用性の高いページからリンクが張られているページもまた有用性が
高いのだろうっていう
そんで、かつてのYAHOO方式は負けたわけだ
でも別に珍しいことではなくて、論文とかでもたくさん引用されている論文は
価値が高いってことになってるし、まぁ基本といいますか
たくさん友達のいる人は有能なんだろうってのも大体あってるし
取引先の多い企業、特に大企業との取引がある会社は信用が有るってのも
一般的な価値基準だわなぁ
資本主義に関しても、お金のような流動性のあるものに着目するっていうのが
現代的であるし、お金をどんどん回して経済を発展させようってのも
政治家の大好きな謳い文句だわな
大体世の中そういう構図になっているから、反対へ行く人や軽んじる人
もしくは君みたいに理解できない人は北朝鮮になる
ただ何事もバランスは大事なんだけど、そうはいってもどっちに軸足を置いておくか
ってのはあるわな
簡単な方の考え方は誰にでもできるし、意識する必要もないし、学ぶべき部分もないから
あまり重要視されないんだけど、本音と建て前みたいな話にもなってくるわ
ただ、とっちが建前になってどっちが本音になるかは相手とシチュエーションによるという
つまり俺もOOPを、「使う」わけだが、いつも「必要悪」という考えはある
絶えず反対のことを考えながら吟味してOOする
そのぐらいでちょうど良いバランス
ただ、本音と建前の世界なのでコンセンサスが取りにくい
hpXZLyYVみたいなのが入ってくると破たんする
いちいち面倒くさいんでLinusがC++を追い出す気持ちもわかる
OOPをおもちゃにする奴はマジで糞
811デフォルトの名無しさん
2017/06/17(土) 21:26:18.74ID:qMkdrUOQ あと、物理量としての引力、っつーか質量と、相互作用としての引力の働き
では差があるわな
しかも現実世界の引力のメカニズムは解明されていない
どういう理屈で力が働くのかとか、だれにも分からん
>例えばすべての物体は引力があるとか?
>あ、これ複数のオブジェクトにまたがるんじゃなくて
>個々のオブジェクトに引力があるのか
「個々のオブジェクトに引力がある」って何ですか?
すべての人には年齢がある、と同じノリですか?
では差があるわな
しかも現実世界の引力のメカニズムは解明されていない
どういう理屈で力が働くのかとか、だれにも分からん
>例えばすべての物体は引力があるとか?
>あ、これ複数のオブジェクトにまたがるんじゃなくて
>個々のオブジェクトに引力があるのか
「個々のオブジェクトに引力がある」って何ですか?
すべての人には年齢がある、と同じノリですか?
812デフォルトの名無しさん
2017/06/17(土) 21:59:39.35ID:qMkdrUOQ >>343
あぁごめんな
ただあの人のインタビューとか読めばわかるけど
逆張り逆張り言ってる
あの人自身もRubyの筋が良いとかメインストリーム的な思想であるとは
考えてないんだよ
ただ、自分の人生の中で逆張りした場合にうまくいくことが多かったので
逆張りし続けているんだとか
だからRuby3.0でも逆張りの一種として
静的型の機能は導入しない方向を検討しているんだろうな
ただそう何度も逆張りが上手くいくとは思わないし
逆張りはしょせん逆張りだろ?あだ花というかなんというか
そういうこともあって結局Rubyはプチブームで終わった現状があるわけだし
変なことして注目を集めることはあってもそれは一過性だよ、芸人じゃあるまいし
しかも逆張りしたときに自分にとって都合がよいことが多かったってだけで
使い手のことは別に考慮されてないんだよなー
あぁごめんな
ただあの人のインタビューとか読めばわかるけど
逆張り逆張り言ってる
あの人自身もRubyの筋が良いとかメインストリーム的な思想であるとは
考えてないんだよ
ただ、自分の人生の中で逆張りした場合にうまくいくことが多かったので
逆張りし続けているんだとか
だからRuby3.0でも逆張りの一種として
静的型の機能は導入しない方向を検討しているんだろうな
ただそう何度も逆張りが上手くいくとは思わないし
逆張りはしょせん逆張りだろ?あだ花というかなんというか
そういうこともあって結局Rubyはプチブームで終わった現状があるわけだし
変なことして注目を集めることはあってもそれは一過性だよ、芸人じゃあるまいし
しかも逆張りしたときに自分にとって都合がよいことが多かったってだけで
使い手のことは別に考慮されてないんだよなー
813すまそ
2017/06/17(土) 22:00:28.43ID:qMkdrUOQ いわゆるこれは誤爆だな
814デフォルトの名無しさん
2017/06/17(土) 22:12:00.21ID:8ikdtkeK シングルディスパッチ擁護勢ってwikipediaの多重ディスパッチのページのJavaの例を許容してるんだろうか?
815デフォルトの名無しさん
2017/06/17(土) 22:54:41.66ID:ExP73Jcy モノにこれこれの機能がある、なんていうモデリングは現実世界には適用しづらいのではないか
いわんや物理法則をや
いわんや物理法則をや
816デフォルトの名無しさん
2017/06/18(日) 00:10:58.25ID:Sub4PpSI 物理法則は存在させるなら基底クラスかシステムに仕込んで全てのオブジェクトが従うもんでしょう。
個別のふるまいレベルで弄るもんじゃないから、そもそも例えですら出てくるようなもんじゃない。
個別のふるまいレベルで弄るもんじゃないから、そもそも例えですら出てくるようなもんじゃない。
817デフォルトの名無しさん
2017/06/18(日) 00:40:47.93ID:mYyShhNF そうだね
相互作用は全部神クラスに書けばいいね
オブジェクト指向w
相互作用は全部神クラスに書けばいいね
オブジェクト指向w
818デフォルトの名無しさん
2017/06/18(日) 01:22:28.32ID:V3LLSwOE819デフォルトの名無しさん
2017/06/18(日) 01:35:23.79ID:LYWH9ARf オブジェクト志向が現実のものをそのままモデル化するためにあるなんて大嘘誰が言い始めたんだ
820デフォルトの名無しさん
2017/06/18(日) 01:42:11.38ID:dLIsPmeH × オブジェクト志向が現実のものをそのままモデル化するためにある
○ 人間が自然に認識している現実のもの(オブジェクト)を使って
モデル化するから理解しやすいものが出来上がる。
○ 人間が自然に認識している現実のもの(オブジェクト)を使って
モデル化するから理解しやすいものが出来上がる。
821デフォルトの名無しさん
2017/06/18(日) 01:48:39.71ID:LYWH9ARf オブジェクト指向は、現実世界で実現しているオブジェクトにソフトウェアの設計を合わせようとするものなんていう大嘘誰が言い始めたんだ
822デフォルトの名無しさん
2017/06/18(日) 02:09:35.32ID:Sub4PpSI 「せんし」に「たたかえ」送るとプレイヤーは細かいこと指示しなくても自分で戦ってくれる。
これはあくまでモデル上でのすっきりした切り分けの話であって、こういうオブジェクト化に
「戦場で仲間に"たたかえ"ってなんだよw」とか「順番に交互に殴るのかよ」とか言ってもまったく無意味だというのに
キャットドアじじいはなんかそういうことから理解できてない知恵遅れだからね。
これはあくまでモデル上でのすっきりした切り分けの話であって、こういうオブジェクト化に
「戦場で仲間に"たたかえ"ってなんだよw」とか「順番に交互に殴るのかよ」とか言ってもまったく無意味だというのに
キャットドアじじいはなんかそういうことから理解できてない知恵遅れだからね。
823デフォルトの名無しさん
2017/06/18(日) 02:54:24.42ID:dLIsPmeH オブジェクト指向の話をしていると
よく勘違いしてるやつが出てくる。
オブジェクト指向で現実世界を実現しようとするやつだ。
シミュレーションでもやらない限りそんなものは意味がない。
その逆、実現したいものを現実世界をヒントに
オブジェクト指向でモデル化するんだよ。
そうすることで現実世界という共通認識を利用して
実現したいものをわかりやすく表現することができる。
よく勘違いしてるやつが出てくる。
オブジェクト指向で現実世界を実現しようとするやつだ。
シミュレーションでもやらない限りそんなものは意味がない。
その逆、実現したいものを現実世界をヒントに
オブジェクト指向でモデル化するんだよ。
そうすることで現実世界という共通認識を利用して
実現したいものをわかりやすく表現することができる。
824デフォルトの名無しさん
2017/06/18(日) 06:41:42.42ID:qrBB1bp9 雲をつかむような話でわからん
具体例かいてくれ
具体例かいてくれ
825デフォルトの名無しさん
2017/06/18(日) 06:56:57.61ID:pnvlJ80w あくまでモデルであり振る舞いをシミュレートしてるだけ
826デフォルトの名無しさん
2017/06/18(日) 06:57:50.55ID:ECvs/sM3 ドア本体とそれに付属するノブの状態(「開閉」と「回す、離す」)、
ノブに付属するラッチ(固定具)の状態(ノブの回転に応じて引っ込む)
をオブジェクト指向でモデリングしてみてよ
オートクローザーやドアストッパーが設置されることも加味しつつ
ノブに付属するラッチ(固定具)の状態(ノブの回転に応じて引っ込む)
をオブジェクト指向でモデリングしてみてよ
オートクローザーやドアストッパーが設置されることも加味しつつ
827デフォルトの名無しさん
2017/06/18(日) 07:37:54.80ID:ZkAshefq 「たたかえ」送ってないのに勝手に雑な戦いを始めたがる「ばか」たち
828デフォルトの名無しさん
2017/06/18(日) 07:37:54.40ID:pnvlJ80w 勘違いの典型
829デフォルトの名無しさん
2017/06/18(日) 07:53:36.83ID:/PaBW9c2 現実世界とか言い出すといくらでも後出し要件が出てくる。
「でも現実を見てみなよ」って。
モデリング終わりがなくなってしまうわけだ。
そういうバカには5000兆円の見積書でも送りつけてやればいい。
「でも現実を見てみなよ」って。
モデリング終わりがなくなってしまうわけだ。
そういうバカには5000兆円の見積書でも送りつけてやればいい。
830デフォルトの名無しさん
2017/06/18(日) 08:07:11.57ID:pnvlJ80w 物事を分類整理するための手法なのだから管理する要件でない不用な要素は極力排除しないとな
831デフォルトの名無しさん
2017/06/18(日) 09:07:26.63ID:GpgbwXNc 相互作用という物理では当たり前の考え方を
理解できない文系のためのモデリング
それがオブジェクト指向
理解できない文系のためのモデリング
それがオブジェクト指向
832デフォルトの名無しさん
2017/06/18(日) 11:56:10.30ID:dLIsPmeH833デフォルトの名無しさん
2017/06/18(日) 13:56:58.20ID:/PaBW9c2 文系って言い方はあれだけど、物理法則を因果関係的に捉えてるのかもな。
あれがこうしたらこれがこうなる、みたいに。
あれがこうしたらこれがこうなる、みたいに。
834デフォルトの名無しさん
2017/06/18(日) 14:23:38.73ID:ZkAshefq 理系って言い方はあれだけど、物理法則を因果何的に捉えてるの?
835理系
2017/06/18(日) 14:27:11.50ID:GE9zkfwM >>834
因果応報。
因果応報。
836デフォルトの名無しさん
2017/06/18(日) 14:30:00.44ID:dLIsPmeH 人間って何歳の頃から、現実世界を
オブジェクト指向として認識するのだろうか?
同じ人間であっても自分の母親と他人の母親は別だって
理解できるし、人間と動物の区別もついているだろう。
そして、犬はワンワン、猫はニャーニャーって鳴くことを
理解するだろう。
人間の認識とはかくもオブジェクト指向であるものだろうか
オブジェクト指向として認識するのだろうか?
同じ人間であっても自分の母親と他人の母親は別だって
理解できるし、人間と動物の区別もついているだろう。
そして、犬はワンワン、猫はニャーニャーって鳴くことを
理解するだろう。
人間の認識とはかくもオブジェクト指向であるものだろうか
837デフォルトの名無しさん
2017/06/18(日) 15:46:42.41ID:dGQ95y/Y 因果何的?
838デフォルトの名無しさん
2017/06/18(日) 19:18:13.12ID:M+qF4ayC >>832
ゲームのドアなんぞ開く閉じるの状態と、開く条件(鍵とか)ぐらいだろ。
んで、自動ドア制御とかだとセンサーから信号が来た時だけ開いて、数秒したら閉じれば良い。
人が通った時の赤外線センサーか、人が挟まった時の圧力センサーかはプログラムは知る必要無い。
これらに共通のドアクラスなんぞ作って何か共通点があるの?
ゲームのドアなんぞ開く閉じるの状態と、開く条件(鍵とか)ぐらいだろ。
んで、自動ドア制御とかだとセンサーから信号が来た時だけ開いて、数秒したら閉じれば良い。
人が通った時の赤外線センサーか、人が挟まった時の圧力センサーかはプログラムは知る必要無い。
これらに共通のドアクラスなんぞ作って何か共通点があるの?
839デフォルトの名無しさん
2017/06/18(日) 19:24:10.12ID:ZkAshefq >>838
開く閉じるの状態があるのは開口部のほうやけんど?
開く閉じるの状態があるのは開口部のほうやけんど?
840デフォルトの名無しさん
2017/06/18(日) 21:49:56.86ID:dGQ95y/Y 開口部ってなんですか?
841デフォルトの名無しさん
2017/06/18(日) 21:51:50.67ID:dLIsPmeH >>839
それは現実世界のドアの話だろう?
ゲームの世界のドアは、現実世界を参考にできるが
ゲーム特有のドアという仕様を作る。
3Dゲームであれば、ドアには開く閉じるという状態は必要ないだろう
なぜなら物体をすり抜けられないという仕様と
蝶番を支点にドアを動かせるという仕様があればよいからだ
だけど2D RPGみたいなドアであれば、ドアの状態というものがあってもよい
開いているドアであれば、その上を移動することができ、
取っじているドアであれば、その上に移動することはできない。
このようにオブジェクト指向は現実世界の物シミュレートためのものじゃなくて
作りたい仕様を、みんなが持っている現実世界の共通認識を使って
わかりやすくする表現するための技術なんだよ
それにしても現実世界のドアについての人間の認識ってのも面白いよな。
ドアからすれば、物理的にはどういう位置にあるかでしかないのに、
人間は「開いている」「閉まっている」というドアの状態として認識しているわけだ
この認識、利用しない手はない!
それは現実世界のドアの話だろう?
ゲームの世界のドアは、現実世界を参考にできるが
ゲーム特有のドアという仕様を作る。
3Dゲームであれば、ドアには開く閉じるという状態は必要ないだろう
なぜなら物体をすり抜けられないという仕様と
蝶番を支点にドアを動かせるという仕様があればよいからだ
だけど2D RPGみたいなドアであれば、ドアの状態というものがあってもよい
開いているドアであれば、その上を移動することができ、
取っじているドアであれば、その上に移動することはできない。
このようにオブジェクト指向は現実世界の物シミュレートためのものじゃなくて
作りたい仕様を、みんなが持っている現実世界の共通認識を使って
わかりやすくする表現するための技術なんだよ
それにしても現実世界のドアについての人間の認識ってのも面白いよな。
ドアからすれば、物理的にはどういう位置にあるかでしかないのに、
人間は「開いている」「閉まっている」というドアの状態として認識しているわけだ
この認識、利用しない手はない!
842デフォルトの名無しさん
2017/06/18(日) 21:54:52.64ID:ZkAshefq843デフォルトの名無しさん
2017/06/18(日) 21:57:16.87ID:dLIsPmeH844デフォルトの名無しさん
2017/06/18(日) 22:01:44.39ID:dLIsPmeH アスペだと「ドアが開いている」ときいて
ドアが開いているとか意味がわからない
開口部があってそこがドアというもので塞がれているかどうかだ。
だから「開口部がドアで塞がれていない」と言うべきだ
とか思うのだろうか?
アスペには常人の共通認識は通用しない
オブジェクト指向には不向きな人間だなw
ドアが開いているとか意味がわからない
開口部があってそこがドアというもので塞がれているかどうかだ。
だから「開口部がドアで塞がれていない」と言うべきだ
とか思うのだろうか?
アスペには常人の共通認識は通用しない
オブジェクト指向には不向きな人間だなw
845デフォルトの名無しさん
2017/06/18(日) 22:09:09.19ID:ZkAshefq846デフォルトの名無しさん
2017/06/18(日) 22:11:24.68ID:dLIsPmeH847デフォルトの名無しさん
2017/06/18(日) 22:14:21.01ID:ZkAshefq848デフォルトの名無しさん
2017/06/18(日) 22:15:23.98ID:dLIsPmeH 抽象化というのは本質的な所
ドアには開いている・閉じているという
状態があると認識することだよ。
本当は開口部だーとか細かいことに
こだわるのは抽象化とは逆の考え
はい論破♪
ドアには開いている・閉じているという
状態があると認識することだよ。
本当は開口部だーとか細かいことに
こだわるのは抽象化とは逆の考え
はい論破♪
849デフォルトの名無しさん
2017/06/18(日) 22:15:46.63ID:dLIsPmeH >>847
もう一度言えばいいの?
それは現実世界のドアの話だろう?
ゲームの世界のドアは、現実世界を参考にできるが
ゲーム特有のドアという仕様を作る。
3Dゲームであれば、ドアには開く閉じるという状態は必要ないだろう
なぜなら物体をすり抜けられないという仕様と
蝶番を支点にドアを動かせるという仕様があればよいからだ
だけど2D RPGみたいなドアであれば、ドアの状態というものがあってもよい
開いているドアであれば、その上を移動することができ、
取っじているドアであれば、その上に移動することはできない。
このようにオブジェクト指向は現実世界の物シミュレートためのものじゃなくて
作りたい仕様を、みんなが持っている現実世界の共通認識を使って
わかりやすくする表現するための技術なんだよ
それにしても現実世界のドアについての人間の認識ってのも面白いよな。
ドアからすれば、物理的にはどういう位置にあるかでしかないのに、
人間は「開いている」「閉まっている」というドアの状態として認識しているわけだ
この認識、利用しない手はない!
もう一度言えばいいの?
それは現実世界のドアの話だろう?
ゲームの世界のドアは、現実世界を参考にできるが
ゲーム特有のドアという仕様を作る。
3Dゲームであれば、ドアには開く閉じるという状態は必要ないだろう
なぜなら物体をすり抜けられないという仕様と
蝶番を支点にドアを動かせるという仕様があればよいからだ
だけど2D RPGみたいなドアであれば、ドアの状態というものがあってもよい
開いているドアであれば、その上を移動することができ、
取っじているドアであれば、その上に移動することはできない。
このようにオブジェクト指向は現実世界の物シミュレートためのものじゃなくて
作りたい仕様を、みんなが持っている現実世界の共通認識を使って
わかりやすくする表現するための技術なんだよ
それにしても現実世界のドアについての人間の認識ってのも面白いよな。
ドアからすれば、物理的にはどういう位置にあるかでしかないのに、
人間は「開いている」「閉まっている」というドアの状態として認識しているわけだ
この認識、利用しない手はない!
850デフォルトの名無しさん
2017/06/18(日) 22:18:27.67ID:dLIsPmeH ドアが開いている、閉じているという話をする時
開口部なんて細かい枝葉は誰も考えてないって所が重要だね。
まあ密室殺人で警察に聞かれた時に
この部屋の開口部はドアで塞がれていましたなんて
言わないのと同じこと。
開口部なんて細かい枝葉は誰も考えてないって所が重要だね。
まあ密室殺人で警察に聞かれた時に
この部屋の開口部はドアで塞がれていましたなんて
言わないのと同じこと。
851デフォルトの名無しさん
2017/06/18(日) 22:22:00.29ID:ZkAshefq852デフォルトの名無しさん
2017/06/18(日) 22:28:26.80ID:dLIsPmeH >>851
だから、お前、オブジェクト指向を現実世界をシミュレートするために使うなって
それが間違ったオブジェクト指向の解釈なんだよ。
ドアを抽象化して考えろ。細かい枝葉は取り除け
抽象化
https://ja.wikipedia.org/wiki/%E6%8A%BD%E8%B1%A1%E5%8C%96
> 抽象化(ちゅうしょうか、英: Abstraction、独: Abstraktion)とは、
> 思考における手法のひとつで、対象から注目すべき要素を重点的に抜き出して他は無視する方法である。
https://goo.gl/soXPyb
> ▼誤解されがちな、「抽象化」という言葉
> 結構な人々が抽象化を「曖昧にすること」とか思っていて、抽象絵画は「なんか曖昧な絵」みたく思っているので始末に負えない。
> まず「抽象(abstraction)」っていうのは、「物事の共通部分を抽出して把握すること」だ。
> 「対象物の特徴をつかみ、枝葉を切り捨てた本質をとらえる」思考力を抽象化思考力と呼びます。
> コンサルタントが「抽象度をあげろ」というときには、実は「抽象的にしろ」とは言っていません。「概念化して語れ」と言っているのです。
だから、お前、オブジェクト指向を現実世界をシミュレートするために使うなって
それが間違ったオブジェクト指向の解釈なんだよ。
ドアを抽象化して考えろ。細かい枝葉は取り除け
抽象化
https://ja.wikipedia.org/wiki/%E6%8A%BD%E8%B1%A1%E5%8C%96
> 抽象化(ちゅうしょうか、英: Abstraction、独: Abstraktion)とは、
> 思考における手法のひとつで、対象から注目すべき要素を重点的に抜き出して他は無視する方法である。
https://goo.gl/soXPyb
> ▼誤解されがちな、「抽象化」という言葉
> 結構な人々が抽象化を「曖昧にすること」とか思っていて、抽象絵画は「なんか曖昧な絵」みたく思っているので始末に負えない。
> まず「抽象(abstraction)」っていうのは、「物事の共通部分を抽出して把握すること」だ。
> 「対象物の特徴をつかみ、枝葉を切り捨てた本質をとらえる」思考力を抽象化思考力と呼びます。
> コンサルタントが「抽象度をあげろ」というときには、実は「抽象的にしろ」とは言っていません。「概念化して語れ」と言っているのです。
853デフォルトの名無しさん
2017/06/18(日) 22:30:11.78ID:dLIsPmeH 具体的実装(抽象化の逆)とか言ってるからこれも引用しておくべきだったw
> 抽象化とは、一般化(上位の概念に包括)することです。例えば亀→両生類→動物→生物という具合に、上位の分類の言葉に置き換えていくことです。
> 抽象化とは、一般化(上位の概念に包括)することです。例えば亀→両生類→動物→生物という具合に、上位の分類の言葉に置き換えていくことです。
854デフォルトの名無しさん
2017/06/18(日) 22:32:10.52ID:ZkAshefq855デフォルトの名無しさん
2017/06/18(日) 22:33:52.30ID:dLIsPmeH >>854
ドアが残ったってなんだ?
またお前が言い出した言葉を
俺が言ったことにしたいのか?
お前が言い出した言葉に対して、「知ってるってw」って
なに自分で自分にレスしてるんだ?
妄想も大概にしろ
ドアが残ったってなんだ?
またお前が言い出した言葉を
俺が言ったことにしたいのか?
お前が言い出した言葉に対して、「知ってるってw」って
なに自分で自分にレスしてるんだ?
妄想も大概にしろ
856デフォルトの名無しさん
2017/06/18(日) 22:34:51.41ID:dLIsPmeH 「ドアが残った」 = それは細分化や
これも意味がわからん。
こいつバカなのか?
これも意味がわからん。
こいつバカなのか?
857デフォルトの名無しさん
2017/06/18(日) 22:38:08.14ID:LYWH9ARf 双方何が言いたいのかわからん
858デフォルトの名無しさん
2017/06/18(日) 22:38:14.46ID:ZkAshefq >>855
端的に言ってお前支離滅裂だぞ
少なくとも今夜俺は
お前に抽象化のなんたるかを垣間見せてやったのだから
明日からもう少しまじめに勉強しろよ
まあ今夜は恥ずかしくて顔から火がでてるだろうから
多少の発狂は仕方ないけどなw
端的に言ってお前支離滅裂だぞ
少なくとも今夜俺は
お前に抽象化のなんたるかを垣間見せてやったのだから
明日からもう少しまじめに勉強しろよ
まあ今夜は恥ずかしくて顔から火がでてるだろうから
多少の発狂は仕方ないけどなw
859デフォルトの名無しさん
2017/06/18(日) 22:40:28.64ID:dLIsPmeH > お前に抽象化のなんたるかを垣間見せてやったのだから
え? どれ?
具体的実装の話をすること?
それは抽象化の逆だけど?
え? どれ?
具体的実装の話をすること?
それは抽象化の逆だけど?
860デフォルトの名無しさん
2017/06/18(日) 22:42:55.55ID:dLIsPmeH これ、自分のことを話してるのかな?
> 端的に言ってお前支離滅裂だぞ
ID:ZkAshefq が支離滅裂
> 少なくとも今夜俺は
> お前に抽象化のなんたるかを垣間見せてやったのだから
ID:ZkAshefq に俺が見せてやった
> 明日からもう少しまじめに勉強しろよ
ID:ZkAshefq が勉強しろ
> まあ今夜は恥ずかしくて顔から火がでてるだろうから
ID:ZkAshefq が恥ずかしくて顔から火が出てる
> 多少の発狂は仕方ないけどなw
ID:ZkAshefq が発狂している。
本当は自分のことなのに、それをごかます
幼稚なやつがやる手段だなぁ
> 端的に言ってお前支離滅裂だぞ
ID:ZkAshefq が支離滅裂
> 少なくとも今夜俺は
> お前に抽象化のなんたるかを垣間見せてやったのだから
ID:ZkAshefq に俺が見せてやった
> 明日からもう少しまじめに勉強しろよ
ID:ZkAshefq が勉強しろ
> まあ今夜は恥ずかしくて顔から火がでてるだろうから
ID:ZkAshefq が恥ずかしくて顔から火が出てる
> 多少の発狂は仕方ないけどなw
ID:ZkAshefq が発狂している。
本当は自分のことなのに、それをごかます
幼稚なやつがやる手段だなぁ
861デフォルトの名無しさん
2017/06/18(日) 22:44:07.16ID:ZkAshefq コイツは根本的に馬鹿なのか?
はたまた恥ずかしすぎてトボケてるだけなのか?
いまのところ前者が優勢ですけどねw
はたまた恥ずかしすぎてトボケてるだけなのか?
いまのところ前者が優勢ですけどねw
862デフォルトの名無しさん
2017/06/18(日) 22:44:08.65ID:dLIsPmeH >>857
俺が言いたいのはこれ(三度目のコピペ。二度目はID:ZkAshefq にもう一度書けと言われて書いたのに無視されたw)
それは現実世界のドアの話だろう?
ゲームの世界のドアは、現実世界を参考にできるが
ゲーム特有のドアという仕様を作る。
3Dゲームであれば、ドアには開く閉じるという状態は必要ないだろう
なぜなら物体をすり抜けられないという仕様と
蝶番を支点にドアを動かせるという仕様があればよいからだ
だけど2D RPGみたいなドアであれば、ドアの状態というものがあってもよい
開いているドアであれば、その上を移動することができ、
取っじているドアであれば、その上に移動することはできない。
このようにオブジェクト指向は現実世界の物シミュレートためのものじゃなくて
作りたい仕様を、みんなが持っている現実世界の共通認識を使って
わかりやすくする表現するための技術なんだよ
それにしても現実世界のドアについての人間の認識ってのも面白いよな。
ドアからすれば、物理的にはどういう位置にあるかでしかないのに、
人間は「開いている」「閉まっている」というドアの状態として認識しているわけだ
この認識、利用しない手はない!
俺が言いたいのはこれ(三度目のコピペ。二度目はID:ZkAshefq にもう一度書けと言われて書いたのに無視されたw)
それは現実世界のドアの話だろう?
ゲームの世界のドアは、現実世界を参考にできるが
ゲーム特有のドアという仕様を作る。
3Dゲームであれば、ドアには開く閉じるという状態は必要ないだろう
なぜなら物体をすり抜けられないという仕様と
蝶番を支点にドアを動かせるという仕様があればよいからだ
だけど2D RPGみたいなドアであれば、ドアの状態というものがあってもよい
開いているドアであれば、その上を移動することができ、
取っじているドアであれば、その上に移動することはできない。
このようにオブジェクト指向は現実世界の物シミュレートためのものじゃなくて
作りたい仕様を、みんなが持っている現実世界の共通認識を使って
わかりやすくする表現するための技術なんだよ
それにしても現実世界のドアについての人間の認識ってのも面白いよな。
ドアからすれば、物理的にはどういう位置にあるかでしかないのに、
人間は「開いている」「閉まっている」というドアの状態として認識しているわけだ
この認識、利用しない手はない!
863デフォルトの名無しさん
2017/06/18(日) 22:45:29.07ID:dLIsPmeH864デフォルトの名無しさん
2017/06/18(日) 22:50:00.87ID:ZkAshefq もはや完全に意地になってるなw
学習できない奴の特徴まんまw
学習できない奴の特徴まんまw
865デフォルトの名無しさん
2017/06/18(日) 22:52:43.90ID:dLIsPmeH >>864
ごめん。もうお前にレスはしてないんだw
ごめん。もうお前にレスはしてないんだw
866デフォルトの名無しさん
2017/06/18(日) 23:21:09.03ID:dGQ95y/Y 開口部ってなんですか?
ドアとどう関係があるんですか?
ドアとどう関係があるんですか?
867デフォルトの名無しさん
2017/06/18(日) 23:30:56.67ID:LYWH9ARf おまえらがどう対立してるのかがわからん
オブジェクト志向には色々な側面があるんだし、その二つは別に対立せん気がするが
オブジェクト志向には色々な側面があるんだし、その二つは別に対立せん気がするが
868デフォルトの名無しさん
2017/06/18(日) 23:35:28.24ID:dLIsPmeH 対立じゃなくてオブジェクト指向は現実世界のものをシミュレート
するものじゃないってことを言ってるだけだよ。
オブジェクト指向で現実世界のあれができないこれができないっていうのは
的外れだってこと
ま、そもそもオブジェクト指向で「ドア」を実装するにはどうすればいいだ?って
ドアというオブジェクトを持ってきてる時点で、
オブジェクト指向は人間の認識と相性が良いんだってわかるんだけどねw
するものじゃないってことを言ってるだけだよ。
オブジェクト指向で現実世界のあれができないこれができないっていうのは
的外れだってこと
ま、そもそもオブジェクト指向で「ドア」を実装するにはどうすればいいだ?って
ドアというオブジェクトを持ってきてる時点で、
オブジェクト指向は人間の認識と相性が良いんだってわかるんだけどねw
869デフォルトの名無しさん
2017/06/18(日) 23:57:27.96ID:LYWH9ARf870デフォルトの名無しさん
2017/06/19(月) 01:13:21.02ID:9pZo4esm どっちも主張がよーわからんが
ID:ZkAshefqを抽出したらびっくりするほどなんにも言ってなかった。
「ばーかばーかおれの勝ちィ!」しか書いてなくね?
なんでスレ進んでんの?
ID:ZkAshefqを抽出したらびっくりするほどなんにも言ってなかった。
「ばーかばーかおれの勝ちィ!」しか書いてなくね?
なんでスレ進んでんの?
871デフォルトの名無しさん
2017/06/19(月) 01:19:07.10ID:JcFW0m+v https://ja.wikipedia.org/wiki/Simula
Simula 67 ではオブジェクト、 クラス、サブクラス、継承、動的束縛(仮想関数)、
コルーチン、 ディスクリートイベントシミュレーション、ガベージコレクションの機能をもち、
オブジェクト指向プログラミングの基本概念はすべてここで発案されているといえる。
Simula はプログラミングパラダイムとして最初のオブジェクト指向言語であると考えられる。
その名前が示すように Simula はシミュレーションを行うために設計され、
その必要性から今日のオブジェクト指向言語で使われる多くの機能のためのフレームワークを提供した。
なお、Simula 当時「オブジェクト指向」という言葉はまだない。
この用語はアラン・ケイが Simula の概念として70年代ごろに使い出したのが始まりといわれている。
従ってその意味では Simula が世界最初のオブジェクト指向言語であり、
Simula は「オブジェクト指向として再認識が可能な最古の言語」ということができる。
Simula 67 ではオブジェクト、 クラス、サブクラス、継承、動的束縛(仮想関数)、
コルーチン、 ディスクリートイベントシミュレーション、ガベージコレクションの機能をもち、
オブジェクト指向プログラミングの基本概念はすべてここで発案されているといえる。
Simula はプログラミングパラダイムとして最初のオブジェクト指向言語であると考えられる。
その名前が示すように Simula はシミュレーションを行うために設計され、
その必要性から今日のオブジェクト指向言語で使われる多くの機能のためのフレームワークを提供した。
なお、Simula 当時「オブジェクト指向」という言葉はまだない。
この用語はアラン・ケイが Simula の概念として70年代ごろに使い出したのが始まりといわれている。
従ってその意味では Simula が世界最初のオブジェクト指向言語であり、
Simula は「オブジェクト指向として再認識が可能な最古の言語」ということができる。
872デフォルトの名無しさん
2017/06/19(月) 01:25:04.44ID:l1liGy+g873デフォルトの名無しさん
2017/06/19(月) 01:27:16.04ID:l1liGy+g 志村 けんは、日本のコメディアン、お笑いタレント、司会者。ザ・ドリフターズのメンバー。
生年月日: 1950年2月20日 (67歳)
https://ja.wikipedia.org/wiki/Simula
志村(67) ではオブジェクト、 クラス、サブクラス、継承、動的束縛(仮想関数)、
コルーチン、 ディスクリートイベントシミュレーション、ガベージコレクションの機能をもち、
オブジェクト指向プログラミングの基本概念はすべてここで発案されているといえる。
志村 はプログラミングパラダイムとして最初のオブジェクト指向言語であると考えられる。
その名前が示すように 志村 はシミュレーションを行うために設計され、
その必要性から今日のオブジェクト指向言語で使われる多くの機能のためのフレームワークを提供した。
なお、志村 当時「オブジェクト指向」という言葉はまだない。
この用語は 荒井・注 が 志村 の概念として70年代ごろに使い出したのが始まりといわれている。
従ってその意味では 志村 が世界最初のオブジェクト指向言語であり、
志村 は「オブジェクト指向として再認識が可能な最古の言語」ということができる。
生年月日: 1950年2月20日 (67歳)
https://ja.wikipedia.org/wiki/Simula
志村(67) ではオブジェクト、 クラス、サブクラス、継承、動的束縛(仮想関数)、
コルーチン、 ディスクリートイベントシミュレーション、ガベージコレクションの機能をもち、
オブジェクト指向プログラミングの基本概念はすべてここで発案されているといえる。
志村 はプログラミングパラダイムとして最初のオブジェクト指向言語であると考えられる。
その名前が示すように 志村 はシミュレーションを行うために設計され、
その必要性から今日のオブジェクト指向言語で使われる多くの機能のためのフレームワークを提供した。
なお、志村 当時「オブジェクト指向」という言葉はまだない。
この用語は 荒井・注 が 志村 の概念として70年代ごろに使い出したのが始まりといわれている。
従ってその意味では 志村 が世界最初のオブジェクト指向言語であり、
志村 は「オブジェクト指向として再認識が可能な最古の言語」ということができる。
874デフォルトの名無しさん
2017/06/19(月) 01:28:38.27ID:l1liGy+g875デフォルトの名無しさん
2017/06/19(月) 01:44:56.66ID:9pZo4esm >>871
毎回思ってることだけど、アランケイのオブジェクト指向のポイントは
むしろメッセージセンドでオブジェクトに命令を送るという方式の発案なので
(さらにいうと、インスタンスを作るのにクラスそのものに「複製を作れ」と命令して作らせる
言語システム(予約語)から離れてクラスが自律的に動く思想の方)
Simulaはかなり毛色の違うオブジェクト指向だし
言ってしまうとこれがカンチガイされたままオブジェクト指向だと思われた結果
C++というそびえ立つクソの山が産まれて業界を何十年も混乱に陥れた元凶だから
Simula持ってきて「オブジェクト指向とは〜」ってやった瞬間
お話にならないぐらいオブジェクト指向を理解していないバカが来た。
で話が終わるんだけど。
毎回思ってることだけど、アランケイのオブジェクト指向のポイントは
むしろメッセージセンドでオブジェクトに命令を送るという方式の発案なので
(さらにいうと、インスタンスを作るのにクラスそのものに「複製を作れ」と命令して作らせる
言語システム(予約語)から離れてクラスが自律的に動く思想の方)
Simulaはかなり毛色の違うオブジェクト指向だし
言ってしまうとこれがカンチガイされたままオブジェクト指向だと思われた結果
C++というそびえ立つクソの山が産まれて業界を何十年も混乱に陥れた元凶だから
Simula持ってきて「オブジェクト指向とは〜」ってやった瞬間
お話にならないぐらいオブジェクト指向を理解していないバカが来た。
で話が終わるんだけど。
876デフォルトの名無しさん
2017/06/19(月) 01:57:02.13ID:l1liGy+g そういやエージェント指向ってどうなんたんかな?
昔、15年ぐらい前に学生だった時に先生がこれからはエージェント指向だって言ってたんだが
その説明きいて、俺はそれってオブジェクト指向+メタデータじゃね?程度に思ってた。
オブジェクトが自律的に仕事をする。みたいな事を言ってたんだが、
それを実現するにはどんな要望であっても、それを実現するためのモジュールが存在し
その要望を完璧に判断してモジュールを選択できるAIでも搭載してなきゃできないような
ものだったのでエージェント指向でもなんでもないし実現は不可能と思っていたが。
まあエージェント指向とやらにはさっさと見切りをつけたので
俺が間違って理解してるんだと思うけどねw
でも事実としてオブジェクト指向を置き換えるものにはならなかったようだね。
昔、15年ぐらい前に学生だった時に先生がこれからはエージェント指向だって言ってたんだが
その説明きいて、俺はそれってオブジェクト指向+メタデータじゃね?程度に思ってた。
オブジェクトが自律的に仕事をする。みたいな事を言ってたんだが、
それを実現するにはどんな要望であっても、それを実現するためのモジュールが存在し
その要望を完璧に判断してモジュールを選択できるAIでも搭載してなきゃできないような
ものだったのでエージェント指向でもなんでもないし実現は不可能と思っていたが。
まあエージェント指向とやらにはさっさと見切りをつけたので
俺が間違って理解してるんだと思うけどねw
でも事実としてオブジェクト指向を置き換えるものにはならなかったようだね。
877デフォルトの名無しさん
2017/06/19(月) 02:06:51.24ID:l1liGy+g >>875
シミュレーションをするために言語を作ったけど、
本来の用途としてはあまり使われず、(よくよく考えてみれば
シミュレーションなんてそんなにするか?ってことなんだろう)
副産物として生まれてオブジェクト指向の技術の基礎とでも
呼べるようなものが独立しそれが洗練されてオブジェクト指向言語
として生まれ変わったってことなんかね。
UMLも似たようなもんだよね。元々はオブジェクト指向分析や設計の方法を
色んな人が考えていたけど、それぞれを比較検討する時、それぞれで図の書き方が
異なっていたので、分析や設計方法が色々あるのはわかる。だけどせめて図の書き方
ぐらいは統一しようじゃないかって生まれたもの。
でもオブジェクト指向の分析や設計方法はみんな飽きてしまったのか話題にならなくなり
UMLという図の書き方だけが広まったと。
シミュレーションをするために言語を作ったけど、
本来の用途としてはあまり使われず、(よくよく考えてみれば
シミュレーションなんてそんなにするか?ってことなんだろう)
副産物として生まれてオブジェクト指向の技術の基礎とでも
呼べるようなものが独立しそれが洗練されてオブジェクト指向言語
として生まれ変わったってことなんかね。
UMLも似たようなもんだよね。元々はオブジェクト指向分析や設計の方法を
色んな人が考えていたけど、それぞれを比較検討する時、それぞれで図の書き方が
異なっていたので、分析や設計方法が色々あるのはわかる。だけどせめて図の書き方
ぐらいは統一しようじゃないかって生まれたもの。
でもオブジェクト指向の分析や設計方法はみんな飽きてしまったのか話題にならなくなり
UMLという図の書き方だけが広まったと。
878デフォルトの名無しさん
2017/06/19(月) 08:54:27.70ID:1iazHqgp 歴史的な起源に拘らない人と、
「もともとはこうだったのに変質してしまった。クソが!」と思う人がいるのだなあ。
と感じました、まる
「もともとはこうだったのに変質してしまった。クソが!」と思う人がいるのだなあ。
と感じました、まる
879デフォルトの名無しさん
2017/06/19(月) 10:38:29.48ID:MTmJn+ZD 歴史的な起源に拘らないとsmalltalkerなんてやってられないよ
880デフォルトの名無しさん
2017/06/19(月) 11:06:11.95ID:j3p5BJjc ストラウストラップとケイの“オブジェクト指向”は別物なので混同せずちゃんと区別したほうがよい
ストラウストラップの“オブジェクト指向”はSimulaスタイルのクラスを抽象データ型(ADT)とみなして使うアイデア
抽象データ型の提唱者のリスコフ、Simulaの設計者たち(ダールとニガート)はもちろん、メイヤーも同様のアイデア同時期に提示している
抽象データ型というのは簡単にいうと「ユーザー定義型」のことで言語組み込みの具象データ型に対してこう呼ばれる
OOPの古典的三点セット「カプセル化・継承・ポリモーフィズム」に象徴されていて
カプセル化は抽象データ型の要件、継承とポリモーフィズムはクラスを使う際のオマケの機能を表わしている
ただ、早々にクックらにより継承を使ってサブタイプを表現することには問題が生じうることが指摘されていて
また動的型のダックタイピングのような自由度を得るためにインターフェース(プロトコルなど別の呼び名も)が考案され
現在はそれが汎用されている
一方、ケイの“オブジェクト指向”はSimulaのオブジェクトにメッセージの受け手を担当させるアイデア
メッセージングはあくまで方便で狙いはその先の設計・実装・運用等、あらゆる局面での「遅延結合の徹底」
遅延結合というと実装のみに固執してしまう人がいるから「決定の遅延」といった方がよいかも
Smalltalk-72はこのアイデアを元に、クラスはJSのクラスのような関数っぽい性質で実現された
このときはメソッドも関数というよりLISP等のリーダーマクロのようなメッセージとなるトークンストリームを順次処理する手順が記述された
次の世代のSmalltalk-76からはSimulaスタイルのクラスが取り込まれ、メソッドも単なる関数になり
前者のオブジェクト指向もそれなりに意識されるようになったので同じSmalltalkでも
Smalltalk-72は純粋なメッセージングのOOPL、Smalltalk-76以降はADPとメッセージングのキメラと考えた方がよいので
もしケイのメッセージングのOOPの考え方に興味があるならPharoやSqueakのような最新のSmalltalkではなく
エミュレーター等で提供されているSmalltalk-72をやるほうがいい
https://ubiteku.oinker.me/2016/05/09/what-is-oo-all-about/#comment-65
ちなみにアクター理論はこのアイデアを実行時の並行性に応用し定式化を試みたもの
ストラウストラップの“オブジェクト指向”はSimulaスタイルのクラスを抽象データ型(ADT)とみなして使うアイデア
抽象データ型の提唱者のリスコフ、Simulaの設計者たち(ダールとニガート)はもちろん、メイヤーも同様のアイデア同時期に提示している
抽象データ型というのは簡単にいうと「ユーザー定義型」のことで言語組み込みの具象データ型に対してこう呼ばれる
OOPの古典的三点セット「カプセル化・継承・ポリモーフィズム」に象徴されていて
カプセル化は抽象データ型の要件、継承とポリモーフィズムはクラスを使う際のオマケの機能を表わしている
ただ、早々にクックらにより継承を使ってサブタイプを表現することには問題が生じうることが指摘されていて
また動的型のダックタイピングのような自由度を得るためにインターフェース(プロトコルなど別の呼び名も)が考案され
現在はそれが汎用されている
一方、ケイの“オブジェクト指向”はSimulaのオブジェクトにメッセージの受け手を担当させるアイデア
メッセージングはあくまで方便で狙いはその先の設計・実装・運用等、あらゆる局面での「遅延結合の徹底」
遅延結合というと実装のみに固執してしまう人がいるから「決定の遅延」といった方がよいかも
Smalltalk-72はこのアイデアを元に、クラスはJSのクラスのような関数っぽい性質で実現された
このときはメソッドも関数というよりLISP等のリーダーマクロのようなメッセージとなるトークンストリームを順次処理する手順が記述された
次の世代のSmalltalk-76からはSimulaスタイルのクラスが取り込まれ、メソッドも単なる関数になり
前者のオブジェクト指向もそれなりに意識されるようになったので同じSmalltalkでも
Smalltalk-72は純粋なメッセージングのOOPL、Smalltalk-76以降はADPとメッセージングのキメラと考えた方がよいので
もしケイのメッセージングのOOPの考え方に興味があるならPharoやSqueakのような最新のSmalltalkではなく
エミュレーター等で提供されているSmalltalk-72をやるほうがいい
https://ubiteku.oinker.me/2016/05/09/what-is-oo-all-about/#comment-65
ちなみにアクター理論はこのアイデアを実行時の並行性に応用し定式化を試みたもの
881デフォルトの名無しさん
2017/06/19(月) 11:42:12.84ID:1iazHqgp 実用的な言語の話をしている
882デフォルトの名無しさん
2017/06/19(月) 16:38:13.20ID:LZvrLoRE 決定の遅延とは即ち実行時に決定するということ
つまりデータと処理の抽象化を徹底するということだ
つまりデータと処理の抽象化を徹底するということだ
883デフォルトの名無しさん
2017/06/19(月) 16:49:21.59ID:LZvrLoRE データの抽象化を徹底すると型とクラスが無くなる
型によってデータ長も処理の方法も変わるのが煩雑さの根源だ
型によってデータ長も処理の方法も変わるのが煩雑さの根源だ
884デフォルトの名無しさん
2017/06/19(月) 19:55:43.12ID:/Mgza80D もともと、コンピュータが巨大にそしてネットワークで接続されると
離れたユニットに「この処理をお願いします」と頼むことになって
シーケンシャルな処理待ちしていたらコンピュータが止まっちゃうし
周りの環境も実行時に刻々と変化してゆくから
オブジェクトにはある種の他と切り離された自律性がいるよね。なのに
なぜか21世紀のインターネット時代に「いいや!カッチリ制御して
他に影響が出ないように書ければこの『世界が勝手に変化するバグ』は排除できるはずだ!」
という謎のカルトが一部で流行り出してるのがどうにもよくわからないw
離れたユニットに「この処理をお願いします」と頼むことになって
シーケンシャルな処理待ちしていたらコンピュータが止まっちゃうし
周りの環境も実行時に刻々と変化してゆくから
オブジェクトにはある種の他と切り離された自律性がいるよね。なのに
なぜか21世紀のインターネット時代に「いいや!カッチリ制御して
他に影響が出ないように書ければこの『世界が勝手に変化するバグ』は排除できるはずだ!」
という謎のカルトが一部で流行り出してるのがどうにもよくわからないw
885デフォルトの名無しさん
2017/06/19(月) 21:05:37.05ID:KwjLNCYt ガイジ
886デフォルトの名無しさん
2017/06/19(月) 23:09:44.33ID:g4cBDSU6 歴史的にオブジェクト指向の後にテンプレートとかジェネリックとか言われるのが導入されたけど、継承とかより移譲が重宝されてる辺り、ジェネリックだけで十分じゃね?って気がしなくも無い。
887デフォルトの名無しさん
2017/06/19(月) 23:22:30.80ID:l1liGy+g C++以外にテンプレートがある言語ってあるの?
C++のテンプレートは本来ジェネリック程度の機能で良かったのに
ちょっと道を外したら、意外と高度なことができることが分かっちゃって
本来の目的から大きくはずれてコンパイル時コードジェネレータみたいな
もんになっちゃったでしょ?
C++のテンプレートは本来ジェネリック程度の機能で良かったのに
ちょっと道を外したら、意外と高度なことができることが分かっちゃって
本来の目的から大きくはずれてコンパイル時コードジェネレータみたいな
もんになっちゃったでしょ?
888デフォルトの名無しさん
2017/06/19(月) 23:28:36.65ID:+dhODesl そもそも継承なんてものの80%はゴミ
protcolとdelegateこそが至高
protcolとdelegateこそが至高
889デフォルトの名無しさん
2017/06/19(月) 23:30:58.96ID:9w3QFpXl そういのいいんで
890デフォルトの名無しさん
2017/06/19(月) 23:33:07.34ID:xaFoAOZp そういやこの1スレたてたガイジ最近みないね
891デフォルトの名無しさん
2017/06/20(火) 23:04:56.68ID:v+vDltnD Haskellでガンガンよく使う処理を個人ライブラリ化なう。
Myfunc.hs
1:module Myfunc where
2:
3:import Data.List
4:import Text.Printf
5:
6:consnum::(Int,String) -> String
7:consnum (i,xs) = printf "%4d:%s" i xs
8:
9:fline f = unlines.f.lines
10:
11:fnumbering f = fline ((map consnum).(zip [1..]).f)
12:
13:numbering = fnumbering id
14:
15:revnumbering = fnumbering reverse
16:
17:allrevnumbering = fnumbering (reverse.map reverse)
18:
19:searchword w = fline (filter (isInfixOf w))
20:
21:putfc (f,c) = printf "%s\n%s" f c
22:
23:mulfileput fs f = mapM readFile fs >>=
24: return.(zip fs).map f >>=
25: mapM_ putfc
Myfunc.hs
1:module Myfunc where
2:
3:import Data.List
4:import Text.Printf
5:
6:consnum::(Int,String) -> String
7:consnum (i,xs) = printf "%4d:%s" i xs
8:
9:fline f = unlines.f.lines
10:
11:fnumbering f = fline ((map consnum).(zip [1..]).f)
12:
13:numbering = fnumbering id
14:
15:revnumbering = fnumbering reverse
16:
17:allrevnumbering = fnumbering (reverse.map reverse)
18:
19:searchword w = fline (filter (isInfixOf w))
20:
21:putfc (f,c) = printf "%s\n%s" f c
22:
23:mulfileput fs f = mapM readFile fs >>=
24: return.(zip fs).map f >>=
25: mapM_ putfc
892デフォルトの名無しさん
2017/06/20(火) 23:05:26.93ID:v+vDltnD number.hs
1:import System.Environment
2:import Myfunc
3:
4:main = getArgs >>=
5: \fs -> mulfileput fs numbering
6:
revnumber.hs
1:import System.Environment
2:import Myfunc
3:
4:main = getArgs >>=
5: \fs -> mulfileput fs revnumbering
6:
searchword.hs
1:import System.Environment
2:import Myfunc
3:
4:main = getArgs >>=
5: \(w:fs) -> mulfileput fs ((searchword w).numbering)
6:
1:import System.Environment
2:import Myfunc
3:
4:main = getArgs >>=
5: \fs -> mulfileput fs numbering
6:
revnumber.hs
1:import System.Environment
2:import Myfunc
3:
4:main = getArgs >>=
5: \fs -> mulfileput fs revnumbering
6:
searchword.hs
1:import System.Environment
2:import Myfunc
3:
4:main = getArgs >>=
5: \(w:fs) -> mulfileput fs ((searchword w).numbering)
6:
893デフォルトの名無しさん
2017/06/20(火) 23:52:17.95ID:pEbbmUs5 だからそういうのはブログで……
894デフォルトの名無しさん
2017/06/21(水) 00:42:37.70ID:Mt9AmAoV ん。
だってオブジェクト指向言語使ってた時って、ここまで似たようなコード書かなくて良いくらいライブラリ化出来たことなかったんだもん。
だってオブジェクト指向言語使ってた時って、ここまで似たようなコード書かなくて良いくらいライブラリ化出来たことなかったんだもん。
895デフォルトの名無しさん
2017/06/21(水) 00:55:18.54ID:nYB1lvTl readFileの中身が謎だらけで怖くて使えない
896デフォルトの名無しさん
2017/06/21(水) 01:08:07.93ID:Mt9AmAoV PythonやRubyのopenと大差ないと思うが。。。
嫌ならもっと低レベルの関数もあるよ?
嫌ならもっと低レベルの関数もあるよ?
897デフォルトの名無しさん
2017/06/21(水) 07:06:46.09ID:nYB1lvTl 型クラスの仕組みが姑息
LISPのSETFと同じくらいガッカリ感ある
LISPのSETFと同じくらいガッカリ感ある
898デフォルトの名無しさん
2017/06/21(水) 07:08:04.36ID:n4ESO8N1 猫ドアは後出しでドアの要件増やされるけどインターフェイスで振る舞いを追加してけば対応可能じゃないの
オブジェクト指向言語的に考えたら
オブジェクト指向言語的に考えたら
899デフォルトの名無しさん
2017/06/21(水) 08:08:08.40ID:XUERnIj3 >>898
それはインタフェース自体を増やすと言ってるように聞こえるけど?
それはインタフェース自体を増やすと言ってるように聞こえるけど?
900デフォルトの名無しさん
2017/06/21(水) 08:31:13.44ID:ajPkQF0E >>898は新規インターフェイスの追加じゃなくて既存のインターフェイスへ機能追加だろ
901デフォルトの名無しさん
2017/06/21(水) 08:32:01.05ID:S2UygZ3z new ってなんなのか、なぜ必要なのか教えて、
オブジェクト生成元クラスのコンストラクタ関数の結果を得るだけなら、
Foo obj = Foo();
とすれば new なくても書けるのに、なぜ new を書く必要があるの?
オブジェクト生成元クラスのコンストラクタ関数の結果を得るだけなら、
Foo obj = Foo();
とすれば new なくても書けるのに、なぜ new を書く必要があるの?
902デフォルトの名無しさん
2017/06/21(水) 08:55:18.55ID:BZXMZb7j newがあるから僕らはそれがコンストラクタを呼ぶものだと知ることができる
newがなければ何をすれば良いのかわからない
コンパイラの気持ちになって考えろよ
newがなければ何をすれば良いのかわからない
コンパイラの気持ちになって考えろよ
903デフォルトの名無しさん
2017/06/21(水) 09:09:53.08ID:mDRh5T94 newをかかなくていい言語をさがそう
904デフォルトの名無しさん
2017/06/21(水) 09:11:42.85ID:mDRh5T94 C++の例
Base *base_pointer = new Base();
Base base();
Base *base_pointer = new Base();
Base base();
905デフォルトの名無しさん
2017/06/21(水) 09:19:49.52ID:mDRh5T94 pikeという言語は、newをつかわない
bird tweety = bird("Tweety", 0.13);
tweety->eat("corn");
tweety->fly();
tweety->max_altitude = 180.0;
fish b = fish("Bubbles", 1.13);
b->eat("fish food");
b->swim();
animal w = fish("Willy", 4000.0);
w->eat("tourists");
w->swim();
Inheritance | Object-Oriented Programming | Beginner’s Tutorial - Pike Programming Language
https://pike.lysator.liu.se/docs/tut/oop/inheritance.md
bird tweety = bird("Tweety", 0.13);
tweety->eat("corn");
tweety->fly();
tweety->max_altitude = 180.0;
fish b = fish("Bubbles", 1.13);
b->eat("fish food");
b->swim();
animal w = fish("Willy", 4000.0);
w->eat("tourists");
w->swim();
Inheritance | Object-Oriented Programming | Beginner’s Tutorial - Pike Programming Language
https://pike.lysator.liu.se/docs/tut/oop/inheritance.md
906デフォルトの名無しさん
2017/06/21(水) 10:28:20.88ID:bqAd0GFb new要らないな
907デフォルトの名無しさん
2017/06/21(水) 10:47:23.25ID:eLmte6hp コンパイラが進化すればいらなくなるんじゃね
908デフォルトの名無しさん
2017/06/21(水) 11:13:54.44ID:+MSTc8BP >>902
コンストラクタはクラス名と同じって制約があるんだから、コンパイラの気持ちになったらnewなんて別にあってもなくてもいいでしょ
人にわかりやすいようにしてあるだけ
なにがコンパイラの気持ちだアホ
コンストラクタはクラス名と同じって制約があるんだから、コンパイラの気持ちになったらnewなんて別にあってもなくてもいいでしょ
人にわかりやすいようにしてあるだけ
なにがコンパイラの気持ちだアホ
909デフォルトの名無しさん
2017/06/21(水) 11:19:25.58ID:ooAgeRH5 パラメーターがないとややこしいからある場合で考えると
(new Foo)(p1,p2,p3) ととらえるか、new (Foo(p1,p2,p3)) と捉えるかの感覚の違いじゃない?
前者なら宣言的に「新しくFooのインスタンスを作って(初期化パラメーター渡して)るんだな」感が出てnewはあったほうがいいし、
後者なら「新しいFooのインスタンスを作る関数のFoo()を呼んでるのにnewなんて余計やろ?」ってなる
従ってコンストラクタとしてFooを定義する言語や、クラスがそもそも関数的な存在の言語ならnewは蛇足
(new Foo)(p1,p2,p3) ととらえるか、new (Foo(p1,p2,p3)) と捉えるかの感覚の違いじゃない?
前者なら宣言的に「新しくFooのインスタンスを作って(初期化パラメーター渡して)るんだな」感が出てnewはあったほうがいいし、
後者なら「新しいFooのインスタンスを作る関数のFoo()を呼んでるのにnewなんて余計やろ?」ってなる
従ってコンストラクタとしてFooを定義する言語や、クラスがそもそも関数的な存在の言語ならnewは蛇足
910デフォルトの名無しさん
2017/06/21(水) 11:39:01.69ID:XUERnIj3911デフォルトの名無しさん
2017/06/21(水) 11:42:21.94ID:x++JJuQ3 スタックかヒープかってこと?
912デフォルトの名無しさん
2017/06/21(水) 11:46:29.64ID:v7daEmTS >>908
> コンストラクタはクラス名と同じって制約があるんだから、コンパイラの気持ちになったらnewなんて別にあってもなくてもいいでしょ
class Foo { }
function Foo() { }
> コンストラクタはクラス名と同じって制約があるんだから、コンパイラの気持ちになったらnewなんて別にあってもなくてもいいでしょ
class Foo { }
function Foo() { }
913デフォルトの名無しさん
2017/06/21(水) 11:48:18.80ID:v7daEmTS class Foo { }
function Foo() { }
が両立する言語の場合、
a = new Foo(); // Fooクラスのコンストラクタ
b = Foo(); // 関数Fooの呼び出し
を区別する必要があるから、newが必要
function Foo() { }
が両立する言語の場合、
a = new Foo(); // Fooクラスのコンストラクタ
b = Foo(); // 関数Fooの呼び出し
を区別する必要があるから、newが必要
914デフォルトの名無しさん
2017/06/21(水) 12:29:16.70ID:Y4WM7moX >>913
それをnew無しにもできるでしょ。クラスと関数で区別つくんだし
それをnew無しにもできるでしょ。クラスと関数で区別つくんだし
915デフォルトの名無しさん
2017/06/21(水) 12:43:42.22ID:Y9QahJfp >>903
リフレクション
リフレクション
916デフォルトの名無しさん
2017/06/21(水) 12:45:39.84ID:Y9QahJfp Activator.CreateInstance()とかは?
917デフォルトの名無しさん
2017/06/21(水) 12:52:24.42ID:JHIJAiI6 classname.new()
918デフォルトの名無しさん
2017/06/21(水) 12:56:10.63ID:v7daEmTS919デフォルトの名無しさん
2017/06/21(水) 14:21:56.72ID:L1LFWazB new を付けなかったら、インスタンスが作られないから、
this が正しく、インスタンスを指さない
JavaScript だと、prototype 継承が動作しない
this が正しく、インスタンスを指さない
JavaScript だと、prototype 継承が動作しない
920デフォルトの名無しさん
2017/06/21(水) 16:12:32.59ID:CwIOTiNS お、おう
921デフォルトの名無しさん
2017/06/21(水) 22:04:39.36ID:xiNpcjp1 JavaScriptができた当時の仕様だと、
インスタンスを作る方法はnewしかないでしょ?
インスタンスを作る方法はnewしかないでしょ?
922デフォルトの名無しさん
2017/07/01(土) 23:37:05.45ID:Tp0p2tiJ まぁ言ってる意味は分からんでもないんだよな
コンパイラはFooがクラスか関数か、何なのか知ってるから
区別できるよねっていう
ただし意味解析をしなければFooが何なのか分からない
newがあれば構文解析だけで何をしようとしているかわかる
Fooが何かのか解析するまでもなく、字面の並びだけで関数呼び出しなのか
インスタンスの生成なのかの区別がつく
いざコンパイラを作るとなったらこの差はでかい
あとなんつーか、そういうこと言い出したら
(int i = 0; i < 100; ++i ) なんていう並びの書き方はfor文の時にしか使わないんだから
「for」って要らなくね?とか、goto ERR;って書くけど、ERRがラベルであることは
コンパイラは知っているんだから「goto」って要らなくね?とか
コンパイラはFooがクラスか関数か、何なのか知ってるから
区別できるよねっていう
ただし意味解析をしなければFooが何なのか分からない
newがあれば構文解析だけで何をしようとしているかわかる
Fooが何かのか解析するまでもなく、字面の並びだけで関数呼び出しなのか
インスタンスの生成なのかの区別がつく
いざコンパイラを作るとなったらこの差はでかい
あとなんつーか、そういうこと言い出したら
(int i = 0; i < 100; ++i ) なんていう並びの書き方はfor文の時にしか使わないんだから
「for」って要らなくね?とか、goto ERR;って書くけど、ERRがラベルであることは
コンパイラは知っているんだから「goto」って要らなくね?とか
923デフォルトの名無しさん
2017/07/01(土) 23:45:05.96ID:N+ZXroXE Foo()というメソッドが定義されてなければnewなしだとコンパイルエラーになるんじゃないの...
924デフォルトの名無しさん
2017/07/02(日) 00:07:24.31ID:yqVk05l0 コンパイラはソフトウェアにとって重要なものであるので
ちゃんと専門の学問があってセオリーがある
必ずしもセオリー通りにする必要はないが、いちおうセオリーがある
セオリーに従えばコンパイラは
字句解析→構文解析→意味解析、というステップを踏んで
プログラムを解析することになっている
ここで、Fooがクラスであるか関数であるかによって
インスタンス生成か関数呼び出しか、切り替えるという文法にしてしまうと
意味解析をしなければ構文解析ができない、という逆流現象が発生してしまう
また、コンパイラ生成器にBNFか何かを食わして自動で構文解析のコードを生成してもらうと
思っても、意味解析をしなければ構文が判明しない箇所のある文法では都合が悪いじゃろ
ただし、セオリーはセオリーでしかなく、従わないことも多々ある
たとえばC++の字句解析において、これは最長一致であるので
「>>」は右シフトと判断されそうなものであるが
出現場所によっては「>」と「>」の二つに分解される
これは字句解析がその後の工程であるはずの構文解析を先回りして少しだけ
してしまっている状態
ちゃんと専門の学問があってセオリーがある
必ずしもセオリー通りにする必要はないが、いちおうセオリーがある
セオリーに従えばコンパイラは
字句解析→構文解析→意味解析、というステップを踏んで
プログラムを解析することになっている
ここで、Fooがクラスであるか関数であるかによって
インスタンス生成か関数呼び出しか、切り替えるという文法にしてしまうと
意味解析をしなければ構文解析ができない、という逆流現象が発生してしまう
また、コンパイラ生成器にBNFか何かを食わして自動で構文解析のコードを生成してもらうと
思っても、意味解析をしなければ構文が判明しない箇所のある文法では都合が悪いじゃろ
ただし、セオリーはセオリーでしかなく、従わないことも多々ある
たとえばC++の字句解析において、これは最長一致であるので
「>>」は右シフトと判断されそうなものであるが
出現場所によっては「>」と「>」の二つに分解される
これは字句解析がその後の工程であるはずの構文解析を先回りして少しだけ
してしまっている状態
925デフォルトの名無しさん
2017/07/02(日) 00:07:47.85ID:0SO6fajC926デフォルトの名無しさん
2017/07/02(日) 00:11:14.19ID:0SO6fajC なんかニワカが長文書いているようだが、
JavaScriptにclassキーワードが追加されたのは比較的最近。
互換性を保つ上で、classキーワードは関数に変換される。
また
function Klass と書けばクラス
function func と書けば関数
というふうに先頭が大文字か小文字かで区別する
というのはあるがこれは慣習であって言語仕様ではない。
JavaScriptにclassキーワードが追加されたのは比較的最近。
互換性を保つ上で、classキーワードは関数に変換される。
また
function Klass と書けばクラス
function func と書けば関数
というふうに先頭が大文字か小文字かで区別する
というのはあるがこれは慣習であって言語仕様ではない。
927デフォルトの名無しさん
2017/07/02(日) 00:14:28.75ID:yqVk05l0928デフォルトの名無しさん
2017/07/02(日) 01:37:38.04ID:9byBa7OY obj = instantiate(Foo)
929デフォルトの名無しさん
2017/07/03(月) 06:49:00.62ID:rdvbpUW5 オブジェクトが請け負う役割の範囲が未だよく分からん。
例えば、武器を装備するという行為は、
オブジェクト自身に機能を持たせるのか、
actorを第一引数とする処理を別に作るのか。
対象を省略できるからオブジェクトに実装したりするけど、コンテキストの依存性などの問題でゲームマスター的なクラスに処理を任せるべきだなと思ったり。
例えば、武器を装備するという行為は、
オブジェクト自身に機能を持たせるのか、
actorを第一引数とする処理を別に作るのか。
対象を省略できるからオブジェクトに実装したりするけど、コンテキストの依存性などの問題でゲームマスター的なクラスに処理を任せるべきだなと思ったり。
930デフォルトの名無しさん
2017/07/03(月) 07:34:00.67ID:Rzh0OD1D 「武器を装備しろ」と命令したらあとは当該クラスがよしなにやって
こっちには結果教えてくれればいいだけなので
その「役割の範囲」そのものが当該クラス任せです。
クラスが自分でやっても、武器総合管理クラスに聞いてても
上位は感知しないことで切り離してるので。
こっちには結果教えてくれればいいだけなので
その「役割の範囲」そのものが当該クラス任せです。
クラスが自分でやっても、武器総合管理クラスに聞いてても
上位は感知しないことで切り離してるので。
931デフォルトの名無しさん
2017/07/03(月) 07:39:44.51ID:sUmj13cM equip(soldier, weapon)
soldier.equip(weapon)
soldier.equip(weapon)
932デフォルトの名無しさん
2017/07/03(月) 11:04:22.70ID:SlrShd+d 関数型なら武器を装備するのも簡単
933デフォルトの名無しさん
2017/07/03(月) 22:50:46.43ID:R6Sojlsl セックスはどうすればいいんだ?
934デフォルトの名無しさん
2017/07/03(月) 23:00:58.77ID:c364q6zP chinko.equip(manko)
935デフォルトの名無しさん
2017/07/03(月) 23:03:36.07ID:R6Sojlsl 一方的だな
936デフォルトの名無しさん
2017/07/04(火) 23:07:51.12ID:VgVQ93XC friendにして相互っつ〜ワケにはいかんの?
937デフォルトの名無しさん
2017/07/05(水) 21:55:54.95ID:QXr7Yy+H オブジェクト試行の「オブジェクト」っていうネーミングって
誤解を招かないか、
どっちかというと「モノ」じゃなくて仮想的な「生命体」じゃない?
だって動きを持ってるし、誕生して活動して死ぬわけじゃん。
「モノ」なのはコンストラクタやメソッドでやり取りされる「引数」
の方だろ。
「プロパティ」は「生命体の所有物」だと思えばスッキリする。
なのに生命体の方をオブジェクトと言うのはおかしいよ。
クラスはその生命体の「家系」みたいなもんだな。
両親がいる必要がないから単細胞生物の分裂のほうが近いか、
クラスは「遺伝子情報」だな、これでかなりスッキリするじゃないか。
誤解を招かないか、
どっちかというと「モノ」じゃなくて仮想的な「生命体」じゃない?
だって動きを持ってるし、誕生して活動して死ぬわけじゃん。
「モノ」なのはコンストラクタやメソッドでやり取りされる「引数」
の方だろ。
「プロパティ」は「生命体の所有物」だと思えばスッキリする。
なのに生命体の方をオブジェクトと言うのはおかしいよ。
クラスはその生命体の「家系」みたいなもんだな。
両親がいる必要がないから単細胞生物の分裂のほうが近いか、
クラスは「遺伝子情報」だな、これでかなりスッキリするじゃないか。
938デフォルトの名無しさん
2017/07/05(水) 22:12:07.95ID:odMt6Ynp つまり美少女の母親もまた処女懐胎した美少女なわけだな
939デフォルトの名無しさん
2017/07/05(水) 23:48:29.76ID:s7u8/Pz4 まだいたの?
オブジェクトを無理やり現実に当てはめるやつ
オブジェクトを無理やり現実に当てはめるやつ
940デフォルトの名無しさん
2017/07/06(木) 00:07:02.68ID:/frq9FD5 >>939
生温く見守ろうぜ
生温く見守ろうぜ
941デフォルトの名無しさん
2017/07/06(木) 00:22:32.98ID:O802MHgz942デフォルトの名無しさん
2017/07/06(木) 01:33:28.30ID:Gh9vN0mU 擬人化しないと物事を理解できない人っているよな
943デフォルトの名無しさん
2017/07/06(木) 01:40:25.53ID:9sJW4q9K じゃああなた方はバイナリの0と1をCPUの信号レベルで
全部機械的に把握できるんだな?すげえなぁ、さすが
コンピュータの熟練技術者は違うね。
言語化してるんだから抽象的思考は重要に決まってんだろ。
全部機械的に把握できるんだな?すげえなぁ、さすが
コンピュータの熟練技術者は違うね。
言語化してるんだから抽象的思考は重要に決まってんだろ。
944デフォルトの名無しさん
2017/07/06(木) 01:53:51.11ID:Gh9vN0mU なに言ってんだこいつ
945デフォルトの名無しさん
2017/07/06(木) 03:07:14.86ID:x/UayICR 抽象化ってなんだっけ?
どこら辺が抽象化してるの?
どこら辺が抽象化してるの?
946デフォルトの名無しさん
2017/07/06(木) 03:11:06.65ID:pIo4ewrq いずれにしても少女に喩えなくて良い
947デフォルトの名無しさん
2017/07/06(木) 04:00:24.80ID:jOp2RAP8 「1+1ってなに?りんごは?りんごはどうなっちゃうの!?」
948デフォルトの名無しさん
2017/07/06(木) 10:41:08.52ID:sqBoBgpD >>947
リンゴは一緒に買いに行ってほしいの
リンゴは一緒に買いに行ってほしいの
949デフォルトの名無しさん
2017/07/06(木) 10:57:30.69ID:/frq9FD5 りんごちゃんかわいい
950デフォルトの名無しさん
2017/07/06(木) 11:55:37.04ID:ZZVNNqrh 飛躍的な議論が進行しているな
951デフォルトの名無しさん
2017/07/06(木) 12:23:55.42ID:yrqFUwOI 少しずつまともに美少女うんこ問題を議論できる土台が出来てきたようだな
952デフォルトの名無しさん
2017/07/06(木) 12:27:47.00ID:jsnas7L+ 何を面白がるかみたなもんにこそ知性が出ちゃうと思ってる
悲しいね
自覚が無いのか意固地になっちゃってるのか知らんけど
悲しいね
自覚が無いのか意固地になっちゃってるのか知らんけど
953デフォルトの名無しさん
2017/07/06(木) 18:21:22.89ID:j+3WJv+Z モデルは問題解決のために設計するので、
まったく的外れ。
世の中を表現したいわけじゃないし、
世の中に似せる必要も全くない。
まったく的外れ。
世の中を表現したいわけじゃないし、
世の中に似せる必要も全くない。
954デフォルトの名無しさん
2017/07/06(木) 19:22:23.33ID:0T2UvbzF なんか最近「モデル」って言うの馬鹿の間で流行ってるの?w
955デフォルトの名無しさん
2017/07/06(木) 19:24:13.39ID:NwSzXY2t (? なに言ってんだこいつ…)
956デフォルトの名無しさん
2017/07/06(木) 19:40:14.63ID:rLOZYnLv オブジェクト指向ってDBのエンティティを拡張したものだろ
1事実1箇所と考えたら現実に当てはめないとダメだろ
1事実1箇所と考えたら現実に当てはめないとダメだろ
957デフォルトの名無しさん
2017/07/06(木) 20:22:03.68ID:ZZVNNqrh958デフォルトの名無しさん
2017/07/06(木) 20:29:21.13ID:Dxq//V42 >>956
残念ながら見当外れ
残念ながら見当外れ
959デフォルトの名無しさん
2017/07/06(木) 20:45:03.97ID:ecitQSu4 エンティティとオブジェクトは対応するものだよ
960デフォルトの名無しさん
2017/07/06(木) 20:47:16.64ID:ecitQSu4 エンティティからクラスを自動生成するのが今のやり方
対応しないとしたら正規化できてない
対応しないとしたら正規化できてない
961デフォルトの名無しさん
2017/07/06(木) 21:08:11.46ID:ZZVNNqrh リソース系ならまだわかるが
962デフォルトの名無しさん
2017/07/06(木) 23:39:48.30ID:x/UayICR 対応と言われても抽象的で分からんな。
エンティティは実態でオブジェクトはその射影だよ。
何を持って対応とするの?
エンティティとオブジェクトで可逆性は保証されてないけど
エンティティは実態でオブジェクトはその射影だよ。
何を持って対応とするの?
エンティティとオブジェクトで可逆性は保証されてないけど
963デフォルトの名無しさん
2017/07/07(金) 00:03:06.17ID:ZLKHtWHA エンティティだけがオブジェクト指向だと思ってるCRUDマンワロタw
964デフォルトの名無しさん
2017/07/07(金) 00:06:20.53ID:ZLKHtWHA そーゆーさ、入れポン出しポンっていうの?超シンプルなCRUDの経験しかない奴が
オブジェクト指向とはをなんぞやを語るのやめてよマジでww
オブジェクト指向とはをなんぞやを語るのやめてよマジでww
965デフォルトの名無しさん
2017/07/07(金) 05:43:32.56ID:1OiH67XQ >>943
何が言いたいのかわからんが、プログラミングしたい事象を、そのままオブジェクトに丸ごと落とし込むんじゃ無くて一旦分解して考える。
共通点とか過去の資産使えそうなのはそうする。
ここは他でも使えそうとかあったら分けておく。
再利用出来そうな場所と、そうでない場所を分ける。
人と車って系統的に全然違うからオブジェクト指向の動物クラスみたいなのじゃ全然違うだろ?
でも移動出来るってのは同じだ。
食事と燃料補給は違うが、エネルギーが無いと動かないってのも同じ。
そうやって全然関係無さそうなものの共通点を考えると抽象的なクラスが出来てくる。
現実のオブジェクトと違うけど、より本質に近いオブジェクトになる。
何が言いたいのかわからんが、プログラミングしたい事象を、そのままオブジェクトに丸ごと落とし込むんじゃ無くて一旦分解して考える。
共通点とか過去の資産使えそうなのはそうする。
ここは他でも使えそうとかあったら分けておく。
再利用出来そうな場所と、そうでない場所を分ける。
人と車って系統的に全然違うからオブジェクト指向の動物クラスみたいなのじゃ全然違うだろ?
でも移動出来るってのは同じだ。
食事と燃料補給は違うが、エネルギーが無いと動かないってのも同じ。
そうやって全然関係無さそうなものの共通点を考えると抽象的なクラスが出来てくる。
現実のオブジェクトと違うけど、より本質に近いオブジェクトになる。
966デフォルトの名無しさん
2017/07/07(金) 07:21:29.95ID:5Fyb0GDQ >>965
人と車を動くという共通点によって同じ操作をインターフェイスで作るみたいな感じ?
10画面程度の業務システムしか組んだことないから知らんのだけど大規模システムはそんな風にオブジェクト指向で設計するの?
オブジェクト指向入門見て分類学的に設計するものだと思ってた
人と車を動くという共通点によって同じ操作をインターフェイスで作るみたいな感じ?
10画面程度の業務システムしか組んだことないから知らんのだけど大規模システムはそんな風にオブジェクト指向で設計するの?
オブジェクト指向入門見て分類学的に設計するものだと思ってた
967デフォルトの名無しさん
2017/07/07(金) 07:25:14.64ID:5Fyb0GDQ 966だけど、ゲームでオブジェクト指向すると動くという操作は人も車も変わらんか
業務システムじゃエンティティが正義だと思うけど、ゲームや制御じゃ事情や適用方法が違うんだろうね
制御は構造化しかやったことないけど
業務システムじゃエンティティが正義だと思うけど、ゲームや制御じゃ事情や適用方法が違うんだろうね
制御は構造化しかやったことないけど
968デフォルトの名無しさん
2017/07/07(金) 07:33:06.32ID:DRnLdr12 >>937
アラン・ケイのメッセージングのオブジェクト指向がまさにその着想だな
http://worrydream.com/EarlyHistoryOfSmalltalk/
My biology major had focused on both cell metabolism and
larger scale morphogenesis with its notions of simple mechanisms
controlling complex processes
でも残念ながら現在の主流は抽象データ型のオブジェクト指向
クラスやそれに準ずる言語機能をユーザー定義型として扱うストラウストラップらの着想が根底にあり
生命体とのアナロジーはそぐわない
アラン・ケイのメッセージングのオブジェクト指向がまさにその着想だな
http://worrydream.com/EarlyHistoryOfSmalltalk/
My biology major had focused on both cell metabolism and
larger scale morphogenesis with its notions of simple mechanisms
controlling complex processes
でも残念ながら現在の主流は抽象データ型のオブジェクト指向
クラスやそれに準ずる言語機能をユーザー定義型として扱うストラウストラップらの着想が根底にあり
生命体とのアナロジーはそぐわない
969デフォルトの名無しさん
2017/07/07(金) 07:44:57.59ID:JJYyKRQq 大規模かは知らんが、最近は継承はあまり好まれなくなった。
委譲やインターフェースによる多態性のが好まれる。
これはおいらの推論だが、昔はCUIからGUIに移行するときの規模に対応するためにOOPが誕生した。
今度はPCやスマホなどの多様なGUI、webプログラミングでビューとロジックを分ける必要が出てきた。
ここにOOPは対応しきれてない。
そこで関数型言語が注目されたりした訳だが、今のOOPは関数型言語と同じ所を目指してる最中な気がする。
なぜなら、関数型言語にはコード資産が無いけどOOPには有るから。
全く違うプラットフォーム行くのは怖いから。
実際、言語は優秀でもツール類が絶望的に足りない。
委譲やインターフェースによる多態性のが好まれる。
これはおいらの推論だが、昔はCUIからGUIに移行するときの規模に対応するためにOOPが誕生した。
今度はPCやスマホなどの多様なGUI、webプログラミングでビューとロジックを分ける必要が出てきた。
ここにOOPは対応しきれてない。
そこで関数型言語が注目されたりした訳だが、今のOOPは関数型言語と同じ所を目指してる最中な気がする。
なぜなら、関数型言語にはコード資産が無いけどOOPには有るから。
全く違うプラットフォーム行くのは怖いから。
実際、言語は優秀でもツール類が絶望的に足りない。
970デフォルトの名無しさん
2017/07/07(金) 08:16:46.35ID:G2hd19q1 継承を使わないのは、複雑になるから。
多重で継承すると、デバッグが大変。
継承でロジックの一元化を狙うより、
1番トップの1階層目ぐらいの継承で妥協しておいた方が、
ソースを体系化しやすく、プロジェクトの見通しが良くなる。
多重で継承すると、デバッグが大変。
継承でロジックの一元化を狙うより、
1番トップの1階層目ぐらいの継承で妥協しておいた方が、
ソースを体系化しやすく、プロジェクトの見通しが良くなる。
971デフォルトの名無しさん
2017/07/07(金) 08:31:15.22ID:SENaJwbT972デフォルトの名無しさん
2017/07/07(金) 08:42:08.67ID:G2hd19q1973デフォルトの名無しさん
2017/07/07(金) 08:54:11.36ID:3/JgoNbI 継承はあるけど継承の継承は出来ないって例えばどの言語?
974デフォルトの名無しさん
2017/07/07(金) 08:54:25.16ID:8UX+Q+HA オブジェクトが必ずしもDBとだけ対応してるってのは
間違いじゃないかな?
関数オブジェクトとかあるし、
GoFのデザパタとかで出て来るオブジェクトは全然DB関係ない
のばっかりじゃん。
JavaScriptやUIプログラミングもオブジェクト指向化してるけど
UIなんてDBと無関係だぞ。
俺は >>937だけど、JavaScriptやっててオブジェクトは「生命体」
だと思ったんだよ、「xxxer」 ていうオブジェクト作ること多いじゃん、
だから「xxxをする人」ってことでしょ。
DIとかオブジェクトを引数としてやり取りしたり、
メソッド内で他のオブジェクトを new したりすると何やってんだか
はじめはわからなくなったけど、
「ある生命体Aの部下として生命体Bを『配属』させ、所有物のように受け渡したり、
部下として仕事をさせる」と考えると結構上手く説明がつくことに気づいたんだよ。
間違いじゃないかな?
関数オブジェクトとかあるし、
GoFのデザパタとかで出て来るオブジェクトは全然DB関係ない
のばっかりじゃん。
JavaScriptやUIプログラミングもオブジェクト指向化してるけど
UIなんてDBと無関係だぞ。
俺は >>937だけど、JavaScriptやっててオブジェクトは「生命体」
だと思ったんだよ、「xxxer」 ていうオブジェクト作ること多いじゃん、
だから「xxxをする人」ってことでしょ。
DIとかオブジェクトを引数としてやり取りしたり、
メソッド内で他のオブジェクトを new したりすると何やってんだか
はじめはわからなくなったけど、
「ある生命体Aの部下として生命体Bを『配属』させ、所有物のように受け渡したり、
部下として仕事をさせる」と考えると結構上手く説明がつくことに気づいたんだよ。
975デフォルトの名無しさん
2017/07/07(金) 08:59:17.56ID:6QLBDLc9 「おいら」って20年ぶりくらいに見た
976デフォルトの名無しさん
2017/07/07(金) 09:00:08.09ID:U3HkjAD4 クラスあるいはそれに準ずる言語機能を抽象データ型(簡単にはユーザー定義型)として扱う着想において
クラスの継承により部分型を表現するのは危険をはらむということはかなり早い時期に指摘されている
だから言語機能としてのインターフェースが考案され、以降はそれを使って部分型を安全に表現する言語が汎用されている
継承は部分型を表現すること以外に、実装の重複をなくす(簡単にいうとコピペによる分散を防ぐ)役割も担っていたが
初期のインターフェースは実装を持てなかったため、継承のメリットのうち後者は捨てるか、クラスとの併用で気をつけて使うしかなかった
ただ、型クラスやトレイトという考え方や言語機能が考案され、インターフェイスも実装を持てるようになったので
クラス(というか継承)の役割はほぼ終わりつつある
クラスの継承により部分型を表現するのは危険をはらむということはかなり早い時期に指摘されている
だから言語機能としてのインターフェースが考案され、以降はそれを使って部分型を安全に表現する言語が汎用されている
継承は部分型を表現すること以外に、実装の重複をなくす(簡単にいうとコピペによる分散を防ぐ)役割も担っていたが
初期のインターフェースは実装を持てなかったため、継承のメリットのうち後者は捨てるか、クラスとの併用で気をつけて使うしかなかった
ただ、型クラスやトレイトという考え方や言語機能が考案され、インターフェイスも実装を持てるようになったので
クラス(というか継承)の役割はほぼ終わりつつある
977デフォルトの名無しさん
2017/07/07(金) 09:28:29.21ID:G2hd19q1 >>974
初心者への例え話レベルですね。
客、ウェイター、料理人、冷蔵庫(データベース)
客がウェイターに指示をする。
ウェイターが料理人に指示をする。
料理人が冷蔵庫から材料を取り出す。
でも、プログラム上では冷蔵庫から食材を料理人に渡す人がいる。
現実世界では包丁は料理人が使わないと効果を発揮しない。
プログラム上では、包丁だけあれば食材を切り刻むことができる。
店長は、店員を部下を持つ。
だが、店長の所有物ではない。
店員のリポジトリから、店コードでアクセスするものだ。
店長も店から見れば店の所有物なのだから。
だから、データにアクセスする機能は人オブジェクトにはない。
初心者への例え話レベルですね。
客、ウェイター、料理人、冷蔵庫(データベース)
客がウェイターに指示をする。
ウェイターが料理人に指示をする。
料理人が冷蔵庫から材料を取り出す。
でも、プログラム上では冷蔵庫から食材を料理人に渡す人がいる。
現実世界では包丁は料理人が使わないと効果を発揮しない。
プログラム上では、包丁だけあれば食材を切り刻むことができる。
店長は、店員を部下を持つ。
だが、店長の所有物ではない。
店員のリポジトリから、店コードでアクセスするものだ。
店長も店から見れば店の所有物なのだから。
だから、データにアクセスする機能は人オブジェクトにはない。
978デフォルトの名無しさん
2017/07/07(金) 11:35:17.41ID:6eecx6PE 「おいら」さんはいつもの変な子でしょ。
なんか今日はこまめにID変えてるけど。
そうじゃなくて、むかしは大型コンピュータしかなかったから
大きな処理を行うにつれて「ネットワークで繋がった他のコンピュータに処理を委譲する」という
処理形式が現実になってきた。
そうなるともはや処理時間も通信状態も不明な他所のコンピュータで動いてる処理を
シーケンシャルな一意の順番で行ってゆくというのが非現実的になるのが明白で
そういった視点から「こういう処理をせよ」とクラス(独自の処理単位/物理的に別な機械)に命令したら
その単位が他に依存しないで自律的に処理を行う「オブジェクト指向」が提唱された。
(オブジェクトの再利用がどーのというオブジェクト指向とは別物)
そして、現代では「このシーケンシャルに処理が行われるとは限らない」は
薄れるどころかますます重要性を増してる要素なのだけど
なぜか亡霊のように『処理の間に他人が絡まなければ』って
局所的処理があたかもこれからも可能だと"信心"してる
関数型言語とかいうのが地獄の底から這い出してきて
世界の皆が困惑してる。だいたいそんな状況。
なんか今日はこまめにID変えてるけど。
そうじゃなくて、むかしは大型コンピュータしかなかったから
大きな処理を行うにつれて「ネットワークで繋がった他のコンピュータに処理を委譲する」という
処理形式が現実になってきた。
そうなるともはや処理時間も通信状態も不明な他所のコンピュータで動いてる処理を
シーケンシャルな一意の順番で行ってゆくというのが非現実的になるのが明白で
そういった視点から「こういう処理をせよ」とクラス(独自の処理単位/物理的に別な機械)に命令したら
その単位が他に依存しないで自律的に処理を行う「オブジェクト指向」が提唱された。
(オブジェクトの再利用がどーのというオブジェクト指向とは別物)
そして、現代では「このシーケンシャルに処理が行われるとは限らない」は
薄れるどころかますます重要性を増してる要素なのだけど
なぜか亡霊のように『処理の間に他人が絡まなければ』って
局所的処理があたかもこれからも可能だと"信心"してる
関数型言語とかいうのが地獄の底から這い出してきて
世界の皆が困惑してる。だいたいそんな状況。
979デフォルトの名無しさん
2017/07/07(金) 11:57:04.53ID:U3HkjAD4 >>969
> 昔はCUIからGUIに移行するときの規模に対応するためにOOPが誕生した。
それはアラン・ケイのメッセージングのOOPの話で、継承を前提とした現在主流の抽象データ型のOOPとは関係ないよ
念のためメッセージングのOOPというのは所謂「オブジェクトにメッセージを送って」とかいうお題目を唱えながら
設計・実装・実行・運用と幅広い局面における「可能な限りの決定の遅延」を徹底する考え方ね
http://squab.no-ip.com/collab/uploads/61/IsSoftwareEngineeringAnOxymoron.pdf
>>978
> そうなるともはや処理時間も通信状態も不明な他所のコンピュータで動いてる処理を
> シーケンシャルな一意の順番で行ってゆくというのが非現実的になるのが明白で
> そういった視点から「こういう処理をせよ」とクラス(独自の処理単位/物理的に別な機械)に命令したら
> その単位が他に依存しないで自律的に処理を行う「オブジェクト指向」が提唱された。
そんな「オブジェクト指向」の出自は初耳なんだけど誰が提唱したもの?
ちなみに抽象データ型のオブジェクト指向は、C with Classe(後にC++)のスウストラップのこちらの所謂 what-is 論文が有名
http://dl.acm.org/citation.cfm?id=624721
同時期にEiffelのメイヤー、抽象データ型のリスコフ、SIMULAでクラスとオブジェクトを考案したダールとニガードも
同様の着想(SIMULAスタイルのクラスを抽象データ型として扱い、その継承機構で部分型を表現する)を得ている
> 昔はCUIからGUIに移行するときの規模に対応するためにOOPが誕生した。
それはアラン・ケイのメッセージングのOOPの話で、継承を前提とした現在主流の抽象データ型のOOPとは関係ないよ
念のためメッセージングのOOPというのは所謂「オブジェクトにメッセージを送って」とかいうお題目を唱えながら
設計・実装・実行・運用と幅広い局面における「可能な限りの決定の遅延」を徹底する考え方ね
http://squab.no-ip.com/collab/uploads/61/IsSoftwareEngineeringAnOxymoron.pdf
>>978
> そうなるともはや処理時間も通信状態も不明な他所のコンピュータで動いてる処理を
> シーケンシャルな一意の順番で行ってゆくというのが非現実的になるのが明白で
> そういった視点から「こういう処理をせよ」とクラス(独自の処理単位/物理的に別な機械)に命令したら
> その単位が他に依存しないで自律的に処理を行う「オブジェクト指向」が提唱された。
そんな「オブジェクト指向」の出自は初耳なんだけど誰が提唱したもの?
ちなみに抽象データ型のオブジェクト指向は、C with Classe(後にC++)のスウストラップのこちらの所謂 what-is 論文が有名
http://dl.acm.org/citation.cfm?id=624721
同時期にEiffelのメイヤー、抽象データ型のリスコフ、SIMULAでクラスとオブジェクトを考案したダールとニガードも
同様の着想(SIMULAスタイルのクラスを抽象データ型として扱い、その継承機構で部分型を表現する)を得ている
980デフォルトの名無しさん
2017/07/07(金) 12:01:56.23ID:xvg52mfm 困惑してるだけなら関数型言語の機能取り入れたりしないだろ。
その再利用とは別のオブジェクト指向ってどうなったんよ。
MVCとかMVVMじゃ無いよね?そんな昔じゃ無いし。
その再利用とは別のオブジェクト指向ってどうなったんよ。
MVCとかMVVMじゃ無いよね?そんな昔じゃ無いし。
981デフォルトの名無しさん
2017/07/07(金) 12:11:51.38ID:6QLBDLc9 出所とか歴史上の経緯とか大切なことなの?
982デフォルトの名無しさん
2017/07/07(金) 12:12:45.80ID:6QLBDLc9 それと「だれそれが提唱した〜」とか
983デフォルトの名無しさん
2017/07/07(金) 12:13:19.21ID:xvg52mfm >>979
そのsmalltalkやRubyのオブジェクト指向が関数型言語と同じ方向目指してるなって感じてて、でも今の所関数型言語のが相性が良いように思える。
そのsmalltalkやRubyのオブジェクト指向が関数型言語と同じ方向目指してるなって感じてて、でも今の所関数型言語のが相性が良いように思える。
984デフォルトの名無しさん
2017/07/07(金) 12:31:03.55ID:vHHwjjQx985デフォルトの名無しさん
2017/07/07(金) 12:32:20.58ID:U3HkjAD4986デフォルトの名無しさん
2017/07/07(金) 12:33:44.47ID:vHHwjjQx987デフォルトの名無しさん
2017/07/07(金) 12:35:07.48ID:vHHwjjQx インターフェイス、つまり型による契約プログラミングこそがオブジェクト指向の本質
988デフォルトの名無しさん
2017/07/07(金) 12:35:11.95ID:SENaJwbT >>972
あ〜深いヤツは見ててしんどいですね
ロジックの一元化を「このメソッドいろんなところで同じ処理するからまとめたよ!継承したら呼べるよ!」って感じで使ってる所だととても大変
振る舞いを一元化して異なる動作をさせたいメソッドのoverrideで使ってたら苦にはならないよ
手法としては存在するよね?って聞かれたら存在する
でも問題は設計であって継承ではないと考える
あ〜深いヤツは見ててしんどいですね
ロジックの一元化を「このメソッドいろんなところで同じ処理するからまとめたよ!継承したら呼べるよ!」って感じで使ってる所だととても大変
振る舞いを一元化して異なる動作をさせたいメソッドのoverrideで使ってたら苦にはならないよ
手法としては存在するよね?って聞かれたら存在する
でも問題は設計であって継承ではないと考える
989デフォルトの名無しさん
2017/07/07(金) 12:37:16.77ID:SENaJwbT990デフォルトの名無しさん
2017/07/07(金) 13:06:08.89ID:xvg52mfm >>986
ありがとうだけど、継承はともかくカプセル化は必要。
モジュールも広い意味でのカプセル化だからね。
それまで不要とは思わないし、副作用と縁のきれない手続き型言語にカプセル化ある種運命共同体。
ありがとうだけど、継承はともかくカプセル化は必要。
モジュールも広い意味でのカプセル化だからね。
それまで不要とは思わないし、副作用と縁のきれない手続き型言語にカプセル化ある種運命共同体。
991デフォルトの名無しさん
2017/07/07(金) 13:30:17.87ID:XBLDwFYK 結局どこまで行っても、ここで議論されてる事とは
「どう構造化し記述すべきなのか」なんである
「どう構造化し記述すべきなのか」なんである
992デフォルトの名無しさん
2017/07/07(金) 14:05:53.15ID:vHHwjjQx993デフォルトの名無しさん
2017/07/07(金) 14:06:56.46ID:vHHwjjQx オブジェクト指向っていうのは言わば関数型なんだよね
994デフォルトの名無しさん
2017/07/07(金) 14:08:59.90ID:vHHwjjQx 手続きをカプセル化するだけじゃただのモジュール指向手続き型
カプセル化が要らなくなるまで設計を洗練させること
これ即ちオブジェクトの正規化なり
カプセル化が要らなくなるまで設計を洗練させること
これ即ちオブジェクトの正規化なり
995デフォルトの名無しさん
2017/07/07(金) 14:43:00.99ID:G2hd19q1 無駄に正規化したところで、クラスの粒度、階層がバラバラになるからほどほとにしないと無駄だよ
996デフォルトの名無しさん
2017/07/07(金) 15:22:06.11ID:6QLBDLc9 こだわるポイントが不適当だな
997デフォルトの名無しさん
2017/07/07(金) 18:42:32.82ID:eVPhxI3P998デフォルトの名無しさん
2017/07/07(金) 19:12:56.87ID:8UX+Q+HA >>977
ごめん、ちょっと言い方間違えたは、別に部下として配属する
必要はないな。
あと、thisって何かイマイチしっくり来なかったんだけど、
「この」って解釈するからどういう意味なのかわからかったが、
「俺の」と解釈しほうがいいと思った。
つまり任意のパラメータを「俺のもの」として保持しておけば、
外部から「こいつの(xxさんの)」として呼び出せるって訳だ。
ごめん、ちょっと言い方間違えたは、別に部下として配属する
必要はないな。
あと、thisって何かイマイチしっくり来なかったんだけど、
「この」って解釈するからどういう意味なのかわからかったが、
「俺の」と解釈しほうがいいと思った。
つまり任意のパラメータを「俺のもの」として保持しておけば、
外部から「こいつの(xxさんの)」として呼び出せるって訳だ。
999デフォルトの名無しさん
2017/07/07(金) 19:32:27.33ID:6QLBDLc9 なにがなんでも日常とか物理的現実に結びつけなくたってええんやで
1000デフォルトの名無しさん
2017/07/07(金) 19:38:53.61ID:SENaJwbT10011001
Over 1000Thread このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 96日 3時間 8分 15秒
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 96日 3時間 8分 15秒
10021002
Over 1000Thread 2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/
▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/
▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 東大前駅切りつけ男「東大を目指した教育熱心な世間の親たちに、あまりに度が過ぎると子供がぐれて、私のように罪を犯すと示したかった」 [Hitzeschleier★]
- 大阪 刃物持った男に切りつけられ男性搬送 30代の男を逮捕 阿倍野区 [少考さん★]
- 東大前駅切りつけ男「東大を目指した教育熱心な世間の親たちに、あまりに度が過ぎると子供がぐれて私のように罪を犯すと示したかった ★2 [Hitzeschleier★]
- 【野球】「楽天時代に先輩がやっているのを見て始めた」プロ野球 巨人・オコエ瑠偉選手 オンラインカジノ賭博疑いで書類送検 警視庁 [Ailuropoda melanoleuca★]
- オートレースで3億6500万円が的中、申告せず7700万円脱税…無職男(51)が起訴事実認める [おっさん友の会★]
- パキスタンの中国製戦闘機「殲10」がインドの仏製「ラファール」を撃墜 米当局者★2 [夜のけいちゃん★]
- 能登の公務員「え?スポ少の準公金で俺の車をレストアしたらダメなんすか?じゃあ返します」素直だから警察沙汰にならず [389326466]
- 【悲報】米農家「米の高騰が不思議。30キロ9000円で出荷してるのになぜあんなに高くなるのか」 [567462986]
- 暇空茜さん、完璧に自己分析してしまう……これ怖いくらいに自分を客観視してる…… [158478931]
- 【動画】ジャップさん、綺麗に事故る [834922174]
- 【動画】オートマチックでロシアンルーレットに挑戦した男性が死亡 [834922174]
- 自民・西田昌司氏「ひめゆりの塔」発言を謝罪、お詫び、訂正、削除を発表 [256556981]