オブジェクト指向システムの設計 173 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2017/08/08(火) 17:52:14.38ID:4Kd2O+xB
前スレ
オブジェクト指向システムの設計 172
http://mevius.2ch.net/test/read.cgi/tech/1467992113

類似スレ
手続き型システムの設計 1
http://mevius.2ch.net/test/read.cgi/tech/1500282714
2017/08/08(火) 18:08:45.58ID:ZsjYzbGD
前スレ >>996
> 関数型はそれが出来るというより
> 意図的に排除する仕組みが言語仕様で用意されているといったほうがいいな
ほう

では、「発送済みなら注文キャンセルできない」コードを示してみて
3
垢版 |
2017/08/08(火) 19:29:01.58ID:y4ztJzgK
一体何がおかしかったのかわからん。
2017/08/08(火) 21:34:38.17ID:OPNa8W2g
>>1
クソスレをさも当然のように張るなゴミ屑
PHPでも使って死んでろゴミ屑
死ねゴミ屑
2017/08/08(火) 21:44:02.11ID:jXIjDDES
>>2
違う話に移る前に

> 関数型はそれが出来るというより
> 意図的に排除する仕組みが言語仕様で用意されているといったほうがいいな

ということには納得したの?
2017/08/08(火) 22:54:20.01ID:m8GLf68F
別のスレからだけど丁度よいタイミングだったから転載するわ

413 名前:デフォルトの名無しさん[sage] 投稿日:2017/07/23(日) 00:54:24.08 ID:4pTb5xvQ [2/2]
           ┌─マシン語
           │
言語のレベル─┼─低級言語
           │            ┌─コンパイラ型
           └─高級言語─┤ 
                         └─インタプリタ型
        ┌─手続き型
        │
        │         ┌─宣言型
        │         │
文法──┤         ├─関数型
        │         │
        └ 非手続き型─┼─論理型
                   │
                   ├─グラフィック型
                   │
                   └─問い合わせ
                           
パラダイム──オブジェクト指向
                           
ttp://webrylabo.blogspot.jp/2009/11/blog-post_28.html
2009年11月28日土曜日
2017/08/08(火) 23:06:11.89ID:QlAWaCDH
構造化手法がないぜ!
2017/08/08(火) 23:12:19.94ID:m8GLf68F
それは俺も思った
手続き型のカテゴリにでも入れとけばよいんじゃないですかね

オブジェクト指向はレシーバーにメッセージをディスパッチするってだけの事だから
特にどこに属するってものでも無いのが良くわかるな
2017/08/09(水) 10:30:25.52ID:44tTrGN4
>>5
> 違う話に移る前に
違う話って何?
もともとの話なんだけど

> ということには納得したの?
納得するかどうかは、コード見てからだね
2017/08/09(水) 10:42:09.50ID:44tTrGN4
話がずれないように軽くまとめとくと、注文のキャンセル問題には三つの着眼点がある

1. キャンセルすることを禁止されているため呼べない(権限による制限など)
2. キャンセルは許可されているが、すでにキャンセル不可の状態になっている
 (キャンセル可否チェックの時点で、既に発送済みだった場合)
3. キャンセルは許可されていてキャンセル可能状態だが、実行してみたらキャンセルできなかった
 (トランザクションの一貫性の問題)
2017/08/09(水) 13:20:32.85ID:sH0CwjHm
キャサリンの本当の状態はいくつあるん?
2017/08/09(水) 13:24:49.74ID:sH0CwjHm
権限なし
権限あり
  アクティブ
  非アクティブ
    問い合わせ中
    済み
    うんこ中

リザルト
  うんこ
  非うんこ
2017/08/09(水) 21:30:53.29ID:6lirvFze
>>9
じゃあこの話に戻ろうかね

> 関数型はそれが出来るというより
> 意図的に排除する仕組みが言語仕様で用意されているといったほうがいいな
2017/08/09(水) 21:31:43.00ID:6lirvFze
関数型に言語仕様で用意されている
"意図的に排除する仕組み"とはなに?
2017/08/09(水) 22:02:15.81ID:hEgnFYnk
そんなの自分で勉強しろよ
何でも教えてもらえると思うな
2017/08/09(水) 22:06:00.81ID:hEgnFYnk
手続き型言語は副作用があるのが前提で
その場合、結果が処理順に影響するけど
関数型言語は意図的にそれを排除する仕組みがある
それだけ
2017/08/09(水) 22:18:24.91ID:6lirvFze
>>16の説明に納得してから
次の話題に入りましょう
2017/08/09(水) 22:27:55.99ID:eM0BjlR2
意図的に副作用を排除するって大雑把すぎるな
そんなん言ったらどの言語でも同じ
2017/08/10(木) 11:40:37.46ID:3830aR0n
>>16
その仕組みを説明しなよ
2017/08/10(木) 11:46:48.00ID:91EfFD+U
手抜き型言語ってか
2017/08/10(木) 11:49:51.99ID:sRASy4ht
片っ端からImmutableにしとけば副作用なんて簡単に排除できるわな
2017/08/10(木) 12:28:26.86ID:3830aR0n
DBに保存とか表示するとか出力も副作用だろ
2017/08/10(木) 12:36:34.29ID:sRASy4ht
それは期待する振る舞いだから副作用とは言わん
24
垢版 |
2017/08/10(木) 12:42:06.85ID:JPFASHG9
>>23
その意味の「副作用」って薬とかのそれじゃないの?
2017/08/10(木) 12:46:42.98ID:sRASy4ht
>>24
状況次第
2017/08/10(木) 12:53:02.81ID:dTV8MPgF
なんでも状況次第になるね
2017/08/10(木) 12:53:54.30ID:3830aR0n
副作用の定義からかよ
ロジックや計算という作用と、出力等の副作用を分けましょうね
って指針じゃないの
2017/08/10(木) 12:59:33.35ID:sRASy4ht
この業界ってなんでも状況次第だろう
状況無視して単語と意味を1:1で紐付けるのは素人の考え方
29
垢版 |
2017/08/10(木) 13:03:48.96ID:JPFASHG9
副作用の無い、と聞くと、永続化しないもので、リエントラント可能で、入力と出力が常に一定、とイメージしてしまうな。
そういう意味ではDB保存するデータを作る部分が副作用無い関数で、実際に保存する部分がデータを作る部分に対する副作用と言うか作用そのものなのか。
2017/08/10(木) 13:19:54.10ID:Jc4Vqs2x
物理的に見ればどんな処理だろうと副作用を避けることはできない
なので、どこまでを副作用とみなすか? という定義の話になる
そしてそれはコンテキストに依存した問題だ
2017/08/10(木) 13:36:05.56ID:HGihyxQL
とりあえずJava、C++、C#などのOOPは手続き型のOOPだから
それで問題ない
2017/08/10(木) 13:40:11.21ID:Jc4Vqs2x
それはマルチパラダイムでしょ
2017/08/10(木) 15:09:36.27ID:HGihyxQL
じゃ、手続き型のマルチパラダイム言語だね
34デフォルトの名無しさん
垢版 |
2017/08/10(木) 15:14:43.44ID:TjDaZrJ6
プログラミングにおける副作用(ふくさよう)とは
ある機能がコンピュータの(論理的な)状態を変化させ
それ以降で得られる結果に影響を与えることをいう
代表的な例は変数への値の代入である
35
垢版 |
2017/08/10(木) 15:26:35.32ID:JPFASHG9
>>30
微妙に賛同しかねるな。
クエリ言語系は、純粋なものと純粋ではないものを別けて考えてると思う。
オブジェクト指向でもなんでも。
SQLのSelectとか、XQueryでの検索とか、色々。
couchdbなんかは、純粋でないものがホントに更新系みたいな書き方できるし、純粋でない操作をされたらその段で他の純粋な操作の結果を先に作りに行くから、問い合わせ滅茶苦茶早いし。
避ける事は出来ないが、コンテキスト依存ならしっかり決めた方が幸せでは?
2017/08/10(木) 21:20:10.00ID:x7OPh5BN
現在の日時を取得するDate.now()は
副作用がある関数でしょうか?
37デフォルトの名無しさん
垢版 |
2017/08/10(木) 21:37:57.25ID:TjDaZrJ6
>>36
ないでしょ
関数を呼び出すことによって時間が変化してるわけじゃないんだから
2017/08/10(木) 21:44:10.82ID:x7OPh5BN
ではランダムな値を返してくれる関数は
副作用があるのでしょうか?
39デフォルトの名無しさん
垢版 |
2017/08/10(木) 21:45:09.99ID:TjDaZrJ6
Date.now()を使った関数は参照透過性を満たさないだろうけど
副作用がないならば参照透過性を満たす は偽ってことですな
40デフォルトの名無しさん
垢版 |
2017/08/10(木) 21:45:55.45ID:TjDaZrJ6
>>38
疑似乱数であれば内部に状態を保持してるはずよ
なので副作用はある
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況