タグ

functionalとOOPに関するnsyeeのブックマーク (13)

  • http://kwatch.houkagoteatime.net/blog/2015/09/05/please-be-fair/

  • 関数型プログラミングとオブジェクト指向の抜き差し可能な関係について整理して考える - モナドとわたしとコモナド

    Googleで適当に検索すると とズラリと出てくる。 オブジェクト指向 v.s. 関数型プログラミング 関数型とオブジェクト指向という一見相反するプログラミングパラダイムの併用について理解した プログラマが知るべき97のこと/関数型プログラミングを学ぶことの重要性 新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 関数型プログラミングとオブジェクト指向の抜き差しならない関係について整理して考える とそれなりに参考になりそうな情報はあるものの、無駄に複雑化されたオブジェクト指向をストローマンにするような記事ばかり(それだけ今までのオブジェクト指向にみんなうんざりさせられているのだろう)で、そろそろきちんと自分自身「関数型プログラミングとオブジェクト指向の切り離され方」についてはっきりさせておきたい、と考え、概念整理した結論を書きます。 まず端的な結論 結論を

    関数型プログラミングとオブジェクト指向の抜き差し可能な関係について整理して考える - モナドとわたしとコモナド
  • 純粋関数型のコンセプトを「関数型言語ではー」とか広げて言わんといて! - camlspotter’s blog

    そもそも「関数型言語」という言葉自体、どうなんやいうのもあるんですけど http://www.slideshare.net/ksknac/120901fp-key とある純粋関数型言語の特徴でもって「関数型言語ではー」とか言われると、非純粋関数型言語のユーザーとしては(いやお仕事では純粋関数型言語使ってますけどね)もにょっとしてしまうんですよ 関数型言語は遅延評価だから、すばらしい/クソだ (いやいや純粋関数型言語でも先行評価の言語あるからー、あんたのは違うかもしれんけどよー 関数型言語は副作用が状態がないので、すばらしい/クソだ (いやいやまず純粋関数型の人たちでまず副作用が何指してるか決めてから来てよー 関数型言語はインデントで意味が、型クラスが、、、すばらしい/クソだ Haskell の話なら Haskell ではーとか、やっぱり GHC だね!とか書いてよ!「アジアではー、ニンジャ

    純粋関数型のコンセプトを「関数型言語ではー」とか広げて言わんといて! - camlspotter’s blog
    nsyee
    nsyee 2014/05/28
    OOP vs FPな議論は大体いつもRuby vs Haskellで話されてる気がする。どっちもそれほど典型的な言語では無いと思うんだけどな。
  • 宇宙API Part1 - 標高+1m

    僕は今頭がhyperactiveになってるからとっておきの考えを書く。これは僕が暇なときにいつも考えてることで、これからも何回か書くことになると思う。 宇宙というソフトウェアのコードを、なるべく簡潔に記述するとしたらどんな風になるのか考えてみる。この宇宙にはオッカムの剃刀という便利なカミソリがあって、同じ結果を説明するのに、簡潔な解法と複雑な解法があったら、複雑な方は無視してもいいことになっている。この宇宙が当はPerlで書かれたなら、それは明らかにLispで書かれたんだ!*1 先に断っておくと、この記事ではあなたが信じている言語やパラダイムがある状況で優位だ不利だという話が頻繁に出てくる。僕はHaskellもLispもSmalltalkも大好きだからある程度中立的な立場を取れると思う。でも一番好きなのはLispだし、C++Javaは嫌いだからやはりそれなりにバイアスはかかる。もしあな

    宇宙API Part1 - 標高+1m
  • 言語の実装は関数型言語で、は本当か - camlspotter’s blog

    表題の様なことがちょっと気になったので、型無λ計算の big step semantics (戦略は正格評価)を実装しました。まあ要するにしょぼいインタプリタですね。 FP でλ計算を実装する まず、普通に関数型言語(OCaml)で実装してみました。 λ式の型は t (term) λ式には整数定数と加減をプリミティブとして追加 λ式を評価すると value になる(計算止まらない場合はさようなら) value には引数を待っているプリミティブがある open List (** primitives *) type prim = Add | Sub (** terms *) type t = | Int of int | Var of string | App of t * t | Lambda of string * t | Prim of prim (** semantic values

    言語の実装は関数型言語で、は本当か - camlspotter’s blog
  • 静的型と OO というものははじめから… - camlspotter’s blog

    OO の方面から、「静的型とか別に役に立つとは思えない、静的型の人は頭おかしい」 とか関数型の方面から、「静的型が役に立たないなんてはずない OO の人は頭おかしい」 とか良く聞こえてくるんですが、ダックタイピング心理学 とかいう真に頭おかしい意見を無視できるとすると(無視できない量あるんですが)、まあ私にはどっちもわからんでもない、という話です。 型をゴミ箱に捨てておいてから、後でゴミ箱を漁るなら、型なんかいらない オブジェクトの静的型システムを大雑把にいうとまず upcast と downcast があります。 upcast はオブジェクトの静的型をそれが属するクラスからそのスーパークラスにを変えちまうこと、downcast はその逆、オブジェクトの静的型をそれが属するクラスから子クラスに変えちまうことです。サブクラスの物はスーパークラスとしても通用するはずですから upcast は失

    静的型と OO というものははじめから… - camlspotter’s blog
  • Subtyping, Subclassing, and Trouble with OOP

    Subtyping, Subclassing, and Trouble with OOP An extensive discussion of subtyping, insidious problems with subclassing, and practical rules to avoid them. Does OOP really separate interface from implementation? The manifestation of a problem: an example of how an implementation inheritance prevents separation of interface and implementation Subtyping vs. Subclassing Explanation why the problem abo

  • 存在しない記事 - 標高+1m

    ここにあった記事は消しました。 詳しくは以下: ympbyc.hatenablog.com

    存在しない記事 - 標高+1m
  • 私が愛するオブジェクト指向とそれを使わない理由 - takuto_hの日記

    この記事では、私がオブジェクト指向のどこを愛しどこを素晴らしいと感じていて、そのうえでなぜオブジェクト指向を使うことを避けているのかを書き留めておきます。関数型言語使いの方で、「オブジェクト指向の何がいいのかわからない」「オブジェクト指向難しすぎ・複雑すぎ」とおっしゃる方にぜひ読んでいただきたいと思っています。また、「オブジェクト指向言語完璧に理解したわ」と思っている方にも読んでいただきたく思います。 なお、ここでのオブジェクト指向の定義は、「各言語でオブジェクト指向と呼ばれているものすべて」とします。JavaScalaJavaScriptやSmalltalkやRubyやCommon LispやOCamlがオブジェクト指向と呼んでいるものすべての総称です。もっとまともな定義が知りたい方は以下の記事がおすすめです。 オブジェクト指向の概念の発明者は誰ですか?(改訂版) - Smallta

    私が愛するオブジェクト指向とそれを使わない理由 - takuto_hの日記
  • バカ向け言語 Scala - だらだらしてたいなぁ

    なぜScalaがバカ向けなのか。 ぼくの経験を元に、バカ向け言語と非バカ向け言語を比較しながら見て行きましょう 非バカ向け言語 C プログラマーとして最初に携わったのがC言語です。 それは以下のようなものでした。 何十ものファイルにまたがるグローバル変数 緻密な制御が必要であるにも関わらず、無秩序に取得/開放が行われているメモリー管理 このような複雑な構造を、ぼくのようなポケコン並の処理能力しか持たないバカに把握可能でしょうか。もちろん不可能です そこで、次のようなコーディングを心がけました。 グローバル変数を使わず、関数に引数を定義して渡す メモリーの取得/解放を同一ファイル内に限定する これで、メモリーや変数参照の影響範囲を限定し、ぼくのようなバカでも理解できるようになります。 ですが、わざわざそんな事をやらなくても全てを理解できるエリート様達は、 「なぜ引数で渡すんだ。グローバル変数

    バカ向け言語 Scala - だらだらしてたいなぁ
  • Scalaに関して知っておくべきたった一つの重要な事 - kmizuの日記

    タイトルは釣りです。先日、大昔に見た懐かしい記事が翻訳されていました。この記事自体ははっきり言って、ScalaはOCamlではないということを言葉を変えて延々と言ってるだけなので、どーでもいいです。3年も前の英語記事がTwitter上で今更注目された事に驚きです。 さて、題に入りましょう。元記事の言っている事はおいておいて、Scalaの核言語は(若干風変わりな)クラスベースのオブジェクトシステムであるという事は、頭の片隅においておくと良いと思います。Scalaの関数型プログラミングサポートの多くは、関数型言語に見られる機能をオブジェクト指向的に再解釈して取り込んだものであり、中心にあるのはあくまでオブジェクトです。 (追記) 核言語(core language)という言葉に馴染みが無い方も居ると思うので、説明を追加します。核言語という考え方は、プログラミング言語を、まさにその核である核言

    Scalaに関して知っておくべきたった一つの重要な事 - kmizuの日記
  • Island Life - 言語の比較

    About 南の島のプログラマ。 たまに役者。 Practical Schemeの主。 WiLiKi:Shiro 最近のエントリ 無限cxr高校受験Defense振り返ってみると2019年は色々学んで楽...覚えるより忘れる方が難しい(こともある)眼鏡のつると3DプリンタIris Klein Acting ClassSAG-AFTRA conservatory: Voice Acting創作活動って自分を晒け出さねばならないと...ループを使わずに1から100までMore... 最近のコメント shiro on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/14)1357 on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/01)ベアトリーチェ on ハイポハイポハイポのシューリンガン (2022/04/02)ベアトリーチ

    Island Life - 言語の比較
  • 関数型言語でのデザイン手法

    Takashi Miyamoto @tmiya_ オブジェクト指向はOOPの他にOOA,OODなど上流工程向けの方法論があるのだが、関数型言語についてもFPの他にFA,FDがあるのだろうか?誰か適切な論文/教科書とか知りませんか? 2010-05-30 09:26:38 Ikegami Daisuke @ikegami__ 探してみます。でも強い型付けか、弱い型付けかで、まるっきり異なるでしょう RT @tmiya_: オブジェクト指向はOOPの他にOOA,OODなど上流工程向けの方法論があるのだが、関数型言語についてもFPの他にFA,FDがあるのだろうか?誰か適切な論文/教科書とか知りませんか? 2010-05-30 09:30:40 Ikegami Daisuke @ikegami__ @tmiya_ 個人的な感想ですが、強い型付けのプログラミング言語で開発を行う場合、実装の前に、全体

    関数型言語でのデザイン手法
  • 1