「関数型プログラミング」を含む日記 RSS

はてなキーワード: 関数型プログラミングとは

2024-03-21

もうね・・・

コーンフレークじゃなくて、Haskellだとして、全体のネタを書き直してくださいっていう指示した結果

ツッコミ「どうもーどうも ミルクボーイですー」

ボケツッコミ「お願いしますー ありがとうございますー」

ツッコミ「あー ありがとうございますー ねっ 今Githubスターいただきましたけどもね」

ボケツッコミありがとうございますー」

ツッコミ「こんなん なんぼあっても良いですからね」

ボケ「一番良いですからね」

ツッコミ「ねー 有り難いですよ ほんとにね」

ボケ「入れておきましょう」

ツッコミ「ゆーとりますけどもね」

ボケ「いきなりですけどね うちのオカンがね 好きなプログラミング言語があるらしいんやけど」

ツッコミ「あっ そーなんや

ボケ「その名前ちょっと忘れたらしくてね」

ツッコミプログラミング言語名前忘れてもうて どうなってんねそれ」

ボケ「でまあ色々聞くんやけどな 全然からへんねんな」

ツッコミ「分からへんの? いや ほな俺がね おかんの好きなプログラミング言語 ちょっと一緒に考えてあげるから どんな特徴ゆうてたかってのを教えてみてよ」

ボケ「あのー関数型言語で、型システムが強力で、遅延評価するやつやって言うねんな」

ツッコミ「おー Haskellやないかい その特徴はもう完全にHaskellやがな」

ボケHaskellなぁ」

ツッコミ「すぐ分かったやん こんなんもー」

ボケ「でもこれちょっとからへんのやな」

ツッコミ「何が分からへんのよー」

ボケ「いや俺もHaskellと思うてんけどな」

ツッコミ「いやそうやろ?」

ボケオカンが言うには 将来の夢はそれで書かれたOSを使うことやって言うねんな」

ツッコミ「あー ほなHaskellと違うかぁ Haskell製のOSなんてまだ無いもんね」

ボケ「そやねん」

ツッコミHaskellOSを作るのには向いてへんからなぁ」

ボケ「そやねんな」

ツッコミ「な? Haskell側もOS開発に任命されたら荷が重いよあれ」

ボケ「そやねんそやねん」

ツッコミHaskellってそういうもんやから ほなHaskellちゃうがなこれ」

ボケ「そやねん」

ツッコミ「あれほなもう一度詳しく教えてくれる?」

ボケ「なんであんなにモナドが難しいのか分からんらしいねん」

ツッコミHaskellやないかい モナドは確かに難しいねHaskellの でも俺はね あれはHaskellの良いところやと思うねん 俺の目は騙されへんよ 俺騙したら大したもんや」

ボケ「まあねー」

ツッコミ「ほんであれよー いざ使ってみたらね モナドのおかげでコードスッキリするねん 俺は何でもお見通しやねんから Haskellモナドなんて」

ボケ「分からへんねんでも」

ツッコミ「何が分からへんのこれで」

ボケ「俺もHaskellと思うてんけどな」

ツッコミ「そうやろ」

ボケオカンが言うには プロダクションで使うにはまだ早いって言うねんな」

ツッコミ「ほなHaskellちゃうやないかい プロダクションHaskell使ったら 上司がひっくり返すもんね Haskellはねー まだ研究段階やから実務では使いにくいねん」

ボケ「そやねんそやねん」

ツッコミ「な? Haskell使ってみたらだんだん罠が見えてくるから 最後ちょっとだけ避けてまうねんあれ」

ボケ「そやねんそやねん」

ツッコミ「そういうカラクリからあれ」

ボケ「そやねんな」

ツッコミHaskellちゃうがな ほな もうちょっとなんか言ってなかった?」

ボケ学生の頃 なんでみんな憧れるんか分からんかったらしいねん」

ツッコミHaskellやないかい 学生の頃はHaskellOCamlLispに憧れるんやから あとSmalltalkも憧れたな Haskellそんなもんよ」

ボケ「分からへんねんだから

ツッコミ「なんで分からへんのこれで」

ボケ「俺もHaskellと思うてんけどな」

ツッコミ「そうやろ」

ボケオカンが言うには 関数型プログラミング教科書に必ず載ってるっていうねん」

ツッコミ「ほなHaskellやないかい 教科書サンプルコードHaskellコードが出てこんわけないやん」

ボケせやねん

ツッコミHaskellはね 関数型プログラミング王道中の王道やねん」

ボケせやねんせやねん

ツッコミ「あれみんな関数型の慣用句書いとんねんあれ」

ボケせやねんせやねん

ツッコミHaskell絶対 ほな ほなもうちょっとなんかゆうてなかったか?」

ボケWebアプリ作るのに適してるらしいで」

ツッコミHaskellやないかい Yesodとかあるやろ な? RubyとかPythonの次はHaskellが来るって言われてるねん 俺はそう思うよマジで Haskell絶対

ボケ「分からへんねんでも」

ツッコミ「なんで分からへんのこれで」

ボケ「俺もHaskellと思うてんけどな」

ツッコミ「そうやて」

ボケオカンが言うには ジャンルでいうたら数学やっていうねん」

ツッコミ「ほなHaskellやないかい ジャンル数学言うたらHaskellしかあらへんやん な? Haskell数学理論ベースになってるんやで ラムダ計算とか圏論とかな」

ボケ「そやねんそやねん」

ツッコミ「ほなHaskellに決まりやないかい ほなもうちょっとなんかゆうてなかった?」

ボケコードを書いてる時に 変数感謝してまうらしいねん」

ツッコミHaskellやないかい Haskell変数が不変やから 変数感謝するのは当然やねん ね? 状態変更せんと安心して使えるからな」

ボケ「そやねんそやねん」

ツッコミJavaとかの変数は裏切るからアカンねん Haskell変数は一生そばにおってくれるから最高やで」

ボケ「でも分かれへんねん」

ツッコミ「分からへんことない おかんの好きなプログラミング言語Haskell もぉ」

ボケ「でもオカンが言うには Haskellではないって言うねん」

ツッコミ「ほなHaskellちゃうやないかい オカンHaskellではないと言うんやから Haskellちゃうがな」

ボケ「そやねん」

ツッコミ「先ゆえよ 俺がラムダ計算説明してる時どう思っててんお前」

ボケ申し訳ないよだから

ツッコミ「ホンマに分からへんがなこれ どうなってんねんもう」

ボケ「んでオトンが言うにはな」

ツッコミ「オトン?」

ボケBASICちゃうか?って言うねん」

ツッコミ「いや絶対ちゃうやろ BASICなんて時代遅れもええとこやん もうええわー」

ボケツッコミありがとうございましたー」

2022-10-17

anond:20221015204847

趣味としてのそれら活動否定するわけではないが、中途半端Webサービスとかゲーム作ったり競プロやるくらいなら、興味ある分野の本の通読の方がよっっっっぽどためになるし、筋肉のように自分の身に付くよ。

個人によって実装力には差があるから一概には言えないものの、つよつよプログラマは「0.6人月から大したもの作れないかも」とは言わないのではないか判断した。つよつよなら、自分のやりたい作業に対して最低限必要時間くらい分かる。

興味ある分野がないなら、強い静的型付けの関数型プログラミング入門とかどう。浅井健一著「プログラミングの基礎」でも読んだら。演習をやればゲームも作れるし。新刊の「コンピュータを操る」は情報科学的な考え方(プログラミング的思考と言われがちなもの)を押さえつつブロックプログラミングを紹介してるから自分勉強だけでなく子供教育のためにもなるよ。

2022-05-21

anond:20220521082738

関数型プログラミング理解よりも、オブジェクト指向習得よりも、目的を達成する最小のコードをエレガントに書くといういわゆる画力が何よりも先に求められる時代に入ったのではないだろうか。

  ← そんなもん昔からずっとそうだろ。構造プログラミングオブジェクト指向プログラミングもあれもこれも、正にその目的のために必要に駆られて産み出されてきたものじゃんかよ。

そのへんわかってないとダイクストラ大先生ヴィルト大先生に叱られるど。

2022-03-30

anond:20220330153643

今はもう関数型プログラミングが主流ですからね。

関数型で書けない人はおよびではない。

2022-03-06

anond:20220306143946

サーバーレスビジネスロジックが分離されててスケーラブルだし

場所によらずデプロイできるからグローバルなサービスにあってるよね

リソースリッチ現代ステートレスアーキテクチャ

メンテナンス性に諸々優れてるというのは関数型プログラミングパラダイム(またはUnix哲学)で

我々エンジニア学習したことだしね。伸びると思うよサーバーレス

ただエコシステムや周辺の状況が発展途上だしサービスロジックによってはモノリシックな方が

あってるものもあるからケースバイケースでしょ

2022-01-23

関数型言語という宗教世界は不変と直観する信者たち。

プログラミング世界に、関数型言語というのがあります

(私は入門書(象の絵のやつ)を読んだことがあるだけで、使ったことはまだありません。)

で、関数型言語の良さをアピールするひとからは、いい意味でのの宗教性というか敬虔さを

私は感じるんですよね。

現実世界は不変だから 関数型プログラミング銀の弾丸であるという主張

本題。「関数型プログラミングが『銀の弾丸である という非常識常識 2022」 と題された長い文章をみつけました。

ここ。https://kentutorialbook.github.io/functionalprogramming2022

まるで熱心な信者による経典なので、ほとんどちゃんと読んでないし読む気も起きませんが、

流し読みをしていて、目に入った 次の一節 がとても私の心に刺さりました。

ーー我々が暮らしている「現実世界」はミュータブル(mutable)なのです。

撤回させていただいて、

現実世界数学物理学的な俯瞰では、immutableです。

( https://kentutorialbook.github.io/functionalprogramming2022/#n0.19337518569281165 )

ちなみに、ミュータブルは「可変」、 イミュータブルは「不変」の意味

私の俗な反応 - 数学物理学がどうあれ、世界は可変

まあ私も世俗的なSEをやってるので、まっさきに、↓くらいのことは、思うわけです。

多分、プログラミング世界での、世間一般の反応も似たようなものかと。

ところがですね。

レトリックによって伝えられようとしている信念

ところがですね。これ、意見戦わせても、たぶん議論でどうにもならず、宗教間の対立みたいなものになる気がするんですね。

というのも。上の文章でとりあげられている数学やら物理やらというのは、おそらくレトリックしかなくて。

そのレトリックで、伝えられようとしているものは何かというと、

そもそも世界決定論的にしか記述できないのだから

 ビジネス世界だろうが何だろうが、本来世界は不変なものとして記述されるべき」

というような 信念(信仰であるような気がするのです。

なぜなら、私が隠し持っている信念が、まさにそれに近しいものからです。

私の本音 - 数学とか物理学か抜きにしても、本当は、世界は不変であるという直観離人症世界観。

私は数学物理学全然からない、文系人間ですが。

物理学法則が成り立たとうが、物理学の通じないアナーキー世界であろうが

世界は不変であり、私自身による世界への介入なぞありえない、と直観的に思っています

から 「やればできる」 「世界は変えられる」 「努力は裏切らない」 みたいな言葉は大嫌いなわけです。

この直観を私は自分勝手に、「離人症世界観」と名付けています

この世界観の持ち主は多分少数派で、社会から見れば異端どころか、害悪とみなされるかも。だから、隠し持っている。

関数型言語好きな人も、おそらく私が似た直観と似たものを隠し持っているのでは、と、

私は思うのですね。

関数型言語が受け入れられる社会

もし、離人症世界観に基づくコミュニケーション社会に浸透し、

自分意志感情」すら、あたかファーストクラスオブジェクトとしての関数のように、

客観的に表明されるようなコミュニケーションが、もしこの世の中に広まれ

関数型言語も当たり前のように、普及するのだろうと思います

そうでもならないと、関数型言語流行らないだろうな。というのが私の予想。

ま、宗教ものは、広まるときは、あっと言う間らしいですから

ひょっとしたら20年後くらいには、手続き型言語が滅びているかも。こればっかりは分かりませんけどね。

以上!

2022-01-21

ブコメあほなのか、あほを演じているのか

ブコメに対し、昨年はてなから削除要請が来たので、増田に対して削除要求が来ること自体信憑性あるよ?

 

>争うつもりないなら自分で削除してね、って普通にはてな運営から来るよ。自分の時はブコメだけど、関数型プログラミング話題メールたことある

 

 

 

???(笑)

...ブコメ増田匿名ダイアリー)では『 適 用 さ れ る 規 約 内 容 』が違うんですけど~~~???

トップブコメにご丁寧に規約リンクまで貼ってあるのに、こんな勘違い起こすってさすがにネタだよな??

大丈夫か?ブクマカ~~~~

2021-12-11

関数型プログラミングが『銀の弾丸』」の記事ダメなところ

関数型プログラミングが『銀の弾丸』であるという非常識な常識2022のなにがダメなのかわからない人が多いようなので、個人攻撃をまったくせずにダメ出しする。

まず言っておくが、私はあの記事ほとんど読んでいない。しかし、簡単ダメ出しできる。

あの記事はめちゃくちゃ長いのに末尾再帰に触れていない

あの記事急所は末尾再帰である

記事内を「末尾再帰」で検索してみよう。1か所もヒットしない。「末尾」でも1か所もヒットしない。そう、あの記事はめちゃくちゃ長いのに末尾再帰に触れていないのである。では「再帰」ならどうだろう。11か所ヒットした。しかし、具体的な再帰コードはまったくない。長い記事内にあれだけ多数のコードを書いているにも関わらずである

末尾再帰重要

「末尾再帰って何?」とか「再帰ってそんな重要なの?」と思う読者も多いだろうから、末尾再帰重要さだけ説明しよう。

あの記事は、forやwhileを使わないプログラミング手法を前提に書かれている。記事内を「制御」とかで検索すればわかる。

末尾再帰はforやwhileの代わりになるもので、そういったプログラミング手法には欠かせない。forもwhileも末尾再帰も使わないとなると、ツリー探索などのアルゴリズムを書くことが困難になる。(こういったことが苦手な私に思いつく他の方法は、setIntervalを無理やりforループの代わりにするくらい)

JavaScriptはたいてい末尾再帰サポートしていない

そもそもほとんどのJavaScript実行環境は、末尾再帰サポートしていない。つまりJavaScriptはforやwhileを使わずに込み入ったプログラムをまともに書けるような言語ではない。あの記事に書いてあるようなことをする言語ではないのである。私は別にそれでもいいのでTypeScript使いまくってるけど。classとか好きだし。

あの記事JavaScriptを使っている理由は、JavaScriptが人気だからだろうか?もしそうだとしてもダメである。あの記事は「JavaScriptは、ほどんどの実行環境が末尾再帰サポートしていない、このプログラミング手法に適していない言語である」といったこ自体に触れていない。人気のある言語を使いたいなら、他の末尾再帰サポートしている人気言語を使えばいい。

おまけ。実行速度について

ろくに読まなくても、他にもダメ出しできる。

関数型プログラミングで気になるのは、言語にもよるが実行速度やコンパイルにかかる時間である銀の弾丸と言うからには、C言語を使うような場面でも銀の弾丸でなければならない。(Haskellの実行速度はC並に早くできるそうだが)

記事内を「パフォーマンス」で検索したところ、実行速度に関する箇所がヒットした。

記事の実行速度関連の内容を要約すると「最近AWSAzure・GoolgeCloudPlatformなどを使って並列計算するので、昔ながらの命令型の順次実行は不適切である」となる。私が嘘を言っていると思うなら、記事内を「パフォーマンス」とか「AWS」で検索してヒットした箇所の前後を読んで欲しい。そんなに長くはない。

2021-09-25

オブジェクト指向はすでに粒度時代にあっていない」を読んで

記事

@kis (id:nowokay) さんの以下の記事についてです。

https://nowokay.hatenablog.com/entry/2021/09/25/042831

ブコメにもあるようにちょっと内容が雑というかわかりにくいせいで賛否両論になってしまっていて、もしかしたら近いうちにアンサー記事が出るかもしれませんが、自分自身理解を助けるためにも言わんとしていることを推測しつつ、自分認識もまとめておこうと思い書くことにしました。明らかに誤読してそうな箇所があれば、指摘してください。

前提

まずは前提を書いておかないと論点がぼやけると思うのでいちおう。

自分バックグラウンドは以下:

その他の前提:


本文およびブコメを読んで思ったこ

2000年代に入って関数型プログラミングが脚光を浴び始めたのは、コンピュータ資源が潤沢になりパフォーマンスをそれほど気にしなくってよくなったことが大きな理由ではないか、という認識があります

関数型プログラミング言語の内部実装を読んだことがないので推測ですが、データを不変にするということはその都度メモリ領域を新たに割り当てることになり、そのオーバーヘッドプログラムパフォーマンスに影響を与えるので、パフォーマンス要件がをシビア場合、どうしてもメモリ割り当てや計算効率を考えるとミュータブルにせざるをえないと思います。が、ウェブアプリケーションに限っていえば、データベースアクセスネットワークアクセスレイテンシが大きいので、そうした相対的に細かいオーバーヘッド無視しても(大抵の場合は)問題にならなくなった、というのが「時代」の流れなんだという認識です。

いっぽうで別の観点もあって、REST API や FaaS が一般化して、関数単位で処理を分割し、アプリケーション外部に配置することが当たり前になってきた現状があり、マイクロサービスのようにアプリケーション自体モジュールの一単位として考えると、アプリケーション内部のモジュール同士でも関数ベースでやりとりする形になっても不自然ではないと考えられます

記事にもありますが、RPC派生実装?)として生まれJava の CORBA や MicrosoftDCOM みたいな振る舞い付きのオブジェクトコンポーネント)を共有しようという世界観は廃れ、REST API のような単一の振る舞い(エンドポイント)とそれにひもづく JSON のようなデータ構造のみを受け渡すやり方が一般的になったアプリケーション通信の潮流と、計算資源が潤沢になって再度脚光を浴びた関数型プログラミングが、レイヤーの違いを飛び越えてひとつになろうとしているのではないか、と。

まり、元記事に書かれている「時代に合ってない」というのは、「データ構造と振る舞いが一体となったオブジェクト」のような「なにか」は、そうした背景があるために、どこにも存在する必要がなくなってきているのではないか、と解釈しました。

なので、以下のコメントちょっと論点がずれてると思いました。

はあ?「再利用する方法としてはWeb APIが主流」って、その中身をオブジェクト指向設計することは、全く矛盾しません。 部品化の単位は、慣習や柵などで大きく変わりますオブジェクト指向とはほぼ無関係です。

https://b.hatena.ne.jp/entry/4708813645995359202/comment/suikyojin

なんでサービスとして外とやり取りする話とサービスの内部設計の話をごっちゃにしてんだ。なんか理解度が怪しくない

https://b.hatena.ne.jp/entry/4708813645995359202/comment/ssssschang

しかに、アプリケーション単位アプリケーション内部のモジュール単位とでその表現形式を合わせる必要はないんですが、元記事の言わんとしていることはこの一文に端的に表れていると思います

ソフトウェア記述をまとめるという視点では主にステートレス関数を分類できれば充分で、データと振る舞いをまとめたオブジェクトというのは大きすぎる、システムを分割して管理やすくするという視点ではオブジェクトというのはライフサイクルリソース管理視点が足りず小さすぎる、ということで、オブジェクト指向粒度でのソフトウェア管理は出番がなくなっているのではないか、と思います

個人的にわからなかったのは以下の部分です。

オブジェクト指向でなぜつくるのか」という本がありますが、「え、いまどきオブジェクト指向でつくらなくない?」っていつも思います。内容的には、もうほとんどはオブジェクト指向関係ないソフトウェア工学の紹介になっていますね。

当該書籍は読んだので後半はまぁわかるんですが、前半は「え、いまでもオブジェクト指向でつくるのが主流じゃないの?」って思ってしまますオブジェクト指向定義が「データ構造と振る舞いが一体となったオブジェクトの集まりとしてソフトウェア組織化すること」なのであれば)。

おわりに

Joe Armstrong が "Why OO Sucks" を書いたのが2000年とのことなのですが、そろそろこうした議論収束に向かってほしいと個人的には思います(とっくに収束していると感じている方もいらっしゃるでしょうけど)。

https://gist.github.com/posaunehm/4087971

2020-12-01

anond:20201130214610

プログラミングで主にやる事は下記の2つ。

①IFでAかBを選択させてどっちかの設定を実行

②Whileで決められた回数分繰り返す

関数型プログラミングではそのような構造存在しない。

CPUの基本はand, or, not」の方から近づいた方がまだ近いと思う。

2020-10-14

anond:20201013213028

から言えるのは、とりあえず現代社会とか公民勉強してナショナリズム論かじっとこうぜということです

圏論とか関数型プログラミング構文解析よりもそっちのほうが大事なんじゃないかな?

2020-09-21

anond:20200921040234

わかるわかるwww

とりあえず、Visual Studio などのIDEでできることは、Emacsは使わない。

普通の「テキストエディタ」の用途だけで使えばいいと思えば気も楽になるよ。

自分Windows用のEmacsしか使ってない。

たまに Mac, Linux を使うとき共通インタフェースで複雑なカスタマイズ可能エディタがあることがすごく助かってる。

なにしろ1984年まれで、マウスが普及する前に生まれエディタだ。

右手マウスキーボードで往復することを前提とした左手のC-c, C-v などのコピーペーストショートカット概念がない。

これが辛い。すごく他のアプリとかけ離れてて辛い。ここだけは脳にスイッチを作るしかない。英語日本語おぼえるようなものだな。

あと考えてみたら、今やEmacsで使う時間の 99%は org-mode だなー。あははは。

org-mode で、Python とか Julia とかをデータ統合したりすると、Jypiter なみに柔軟なノートブックが作れる。

あとは、前のコメントにもあったが、 Lisp系とか、マイナー関数型プログラミング言語 (Agda2とかね) はEmacsしか選択しないなー。

まーでも無理に使う必要はないよ。あくまでも道具なんで、必要な時期に必要な部分だけ覚えればいいので。

2020-06-29

anond:20200627124708

関数型プログラミングにある程度なれているstaticおじさんだけど

オブジェクト指向なんて今どき使う意味ないし。バインディングとビューモデルとかださくて、ほかはまあ、普通使っていればわかるだろうというかなんというか。

2019-10-14

関数型プログラミング

いろいろなチュートリアルを見てるんだけど、言語のもの解説100%使われていて、問題解決についてほとんど書かれていないのが普及を阻害する原因だと思う

2019-08-22

anond:20190822094152

関数型プログラミング支援がない、昔のJavaとかPHPとかCで関数型やろうとしてネスト深くするやつとか、それを見て「関数型は糞だな」って思うやつとか、まあ、あるあるやね

2019-03-02

オブジェクト指向.vs.関数型プログラミング

みたいな論争をしたがる人がいるけどPGの98%はどちらも理解できないから、めちゃくちゃ無駄だよな。

2019-02-28

Staticおじさんは正しい

関数型プログラミングなんてstaticおじさんじゃん

ログイン ユーザー登録
ようこそ ゲスト さん