トップページ > プログラム > 2014年07月22日 > vNYu1ctv

書き込み順位&時間帯一覧

8 位/190 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000000011125



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
オブジェクト指向なんて今すぐやめてください
ネットワークプログラミング相談室 Port29
【Python】スクリプト バトルロワイヤル45【pl,rb,php,js】
Swift part2

書き込みレス一覧

オブジェクト指向なんて今すぐやめてください
516 :デフォルトの名無しさん[sage]:2014/07/22(火) 20:10:54.95 ID:vNYu1ctv
>>515
・着眼点としては良いけど、ちょっと足りないかな
・まず、疑似コードの意味をコメントとして付け加えてみる
   i=CInt(S)  # 関数 CInt へ文字列値 S を適用(apply)する
   i=S.ToInt  # 文字列オブジェクト S へメッセージ ToInt を送る
・この1番目のスタイルは一般に「手続き型」(または「関数型」)と呼ばれ、
 計算モデルとしては「命令型計算モデル」(または「適用型計算モデル」)に分類される
・命令型と適用型とは、副作用を伴うか/伴わないかという違いで区別される
・同様に2番目のスタイルは「オブジェクト指向」と呼ばれ、
 計算モデルとしては「アクタ(actor)計算モデル」に分類される

・1番目のスタイルはオブジェクト指向でも模倣できる
   i=CInt.Value(S) # 関数オブジェクト CInt へメッセージ Value(S) を送る
・ここでアクタ計算モデルでは、命令型に相当する副作用を伴うアクタを「不純アクタ」と呼び、
 関数型に相当する副作用を伴わないアクタを「純粋アクタ」と呼ぶ
・まとめると、「アクタ計算モデル(オブジェクト指向)とは、命令型計算モデル(手続き型)と
 適用型計算モデル(関数型)とを統合した計算モデルである」と言うこと
・結果として適切な言語設計をすれば、たとえば Swift/JavaScript/Ruby のような
 手続き型/関数型も可能なオブジェクト指向言語が存在しうることになる
ネットワークプログラミング相談室 Port29
903 :デフォルトの名無しさん[sage]:2014/07/22(火) 21:10:24.05 ID:vNYu1ctv
>>901
>>902でおおむね正しいけどあえて補足すると、TCPはコネクション指向プロトコルだから
「TCPコネクション上での通信に限って」データ損失の無い事が保証されている
だから、ローミングであろうが「TCPコネクションさえ維持できていれば」
TCPレベルでのデータの欠落は起きえない(もし起きたらそれはTCPスタック実装のバグ)

しかしそれでもユーザから見ればデータが欠落しているとしか思えない現象が起きる事はある
これはアプリケーション設計の失敗であることが多い(もちろんTCPスタックのバグかもしれない....)
有線ネットワークとは異なり、無線ネットワーク上での通信は電波状況の変化によって
「頻繁にTCPコネクションが切断される」から、モバイル対応アプリ開発においては
この無線ネットワーク固有の状況に対応できるよう設計しなければならない

たとえば有線ネットワーク上で巨大なファイルを転送したい時には FTP が使われることが多いけど、
数分から数十分にわたるファイル転送処理中に一度でも電波状況が悪くなれば失敗するから、
無線ネットワーク上では役に立たないケースが多い
これの対処方法は定番から特殊なプロトコルまでいくつかあるけど、こういった検討課題に
気付かず設計された通信システムだと、データの欠落を原因とする障害は頻繁に起こりうる
【Python】スクリプト バトルロワイヤル45【pl,rb,php,js】
59 :デフォルトの名無しさん[sage]:2014/07/22(火) 22:24:57.55 ID:vNYu1ctv
>>19,21 だけど数日たってもレスが無いってことは、
Dropbox の iOS/Andriod 版クライアントが Python で
書かれているというソースは無いってことでいいのかね?

よく考えてみれば、>>19 の日本講演は2013年とつい最近の事で、
もし本当に iOS/Andriod 版クライアントが Python で書かれていれば、
その場で大々的かつ自慢げに紹介しているはずだと思う
それが無かったってことは、少なくとも講演のあった2013年9月の時点では
Python は使われていないと判断したほうが、よさげな気がする

まあ >>1 にもあるように、Python は手続き型プログラミングを学ぶ
初心者には最適かつ人気のある教育向け専用言語なんだから、
現実的な商用プラットフォームである iOS/Android を無視できるって
ことなんだろうなあ....

実際、iOSアプリの Pythonista が扱えるグラフィック機能は
キャンバス上でのお絵描き程度が限度で、GUIを備えた本格アプリには使えない
でも iOS 上で Python のお勉強をするには最高なアプリなんだよね
Swift part2
963 :デフォルトの名無しさん[sage]:2014/07/22(火) 23:14:53.12 ID:vNYu1ctv
>>960
> 関数型のスタイルっていうのは全部再帰で書くことだろ

それは間違いじゃないけれど、正しくもない

ちょうど関数型言語アンチスレに、同じ様な初心者からの
質問が過去にあったから、それを紹介しとく

> 413 :デフォルトの名無しさん:2013/06/20(木) 19:42:10.61
> 関数型言語ってループは末尾再帰で書くんですよね?

・【アンチ】関数型言語は使えない【玩具】 2
  http://peace.2ch.net/test/read.cgi/tech/1330429547/413-418

Swift と同じく関数型言語ではない Ruby のケースも例に含まれているから、
「Swift における関数型プログラミング」にも参考になると思う
Swift part2
966 :デフォルトの名無しさん[sage]:2014/07/22(火) 23:39:39.31 ID:vNYu1ctv
>>964
たしかに >>960 の「単連結リストと末尾再帰で表現する」のは、
関数型言語の背景にある抽象的な理論(ラムダ計算モデル)にとって本質だよね

ところで、ここは「関数型言語ではない Swift」のスレなわけだけど、
その本質とやらを見失うと「Swift における関数型プログラミング」にとって、
どんな具体的な悪影響があるんだろう?

とりあえず >>907 の末尾で紹介したネット記事から、以下の一節を引用しとくね

 それでは、このガイドでは「理論的な関数型の純粋性を信奉する
 風変わりなスタイルを布教するつもりがない」ことを明らかにしていこう。
 逆に、私の試みのポイントは、 コードの品質を向上させたいときは
 いつでも関数型プログラミングを使用すべきであるけれど、
 それ以外のときには(関数型プログラミングは)まさに誤った解決手段である、
 というものである。

もしも関数型言語のウンチクを語りたいだけなら、スレ違いだから
関数型言語スレへ移動して、そこで大いに議論すればいいと思う


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。