・Dockerじゃないsystemd-nspawn+machinectlが非常に良い・99%のプログラマがIQ145のJKに「ダサい」と言われてしまう理由とは?【その1】「計算機科学のほんとうの基礎」を理解していない。IQ145の女子高生の先輩から受けた特訓5日間』を大変多くの方々にお買い求めいただき、感謝します。本書の全目次を公開し、質問を受け付けます。複数新規プロジェクト・ビジネスの立ち上げでかまっている暇と気持ちがなかったので、1ヶ月以上前の記事になりますかね。『関数型プログラミングに目覚めた!』のレビュー(Day-1)で、エアリプライみたいなことが行われているようです。「批判のための批判記事」です。「レビュー」などと称していますが、対象となる書籍の良い部分は一切書いておらず、とにかく徹頭徹尾、揚げ足取り、歪曲捏造しているので、「批判のための批判記事」であることが露骨にあらわれてしまっていますが、本人はそのことに露ほども自覚がないのでしょう。英二郎@esumiiさんとか、らくだの卯之助@camloebaさんに聞きたいのだけど、そもそも貴方たちはOCamlでデスクトップアプリ書けるんですか?への「回答」の精査と、この『関数型プログラミングに目覚めた!』のレビュー(Day-1)シリーズによる本書への批判のための批判を精査していきます。関数型プログラミングと私の著書の正確性についてきちんと議論(論争)します。投げかけましたが、この「批判のための批判記事」である、『関数型プログラミングに目覚めた!』のレビュー(Day-1)の記事シリーズとコメント欄で書きたいこと書き捨てているということでよろしいのでしょうかね?じゃあ、基本、その辺、こちらで丁寧になぞっていきます。各論に入る前に、まずこれまでの復習を兼ねてプログラミングの世界的潮流の俯瞰です。そもそも、この一連の一部実名そして上記のような主に匿名書捨てを駆使した妙な連中ですが、私がオブジェクト指向と関数型プログラミングが対立するパラダイムであると書き始めた頃から騒ぎ立て始めました。拙書にも書いていますし、これまでこのブログ記事でも何度もしつこいほど説明していますが、オブジェクト指向と関数型プログラミングが対立するパラダイムである、というのは事実であり、正しい見解です。ここは一番重要なところで看過するわけにはいきません。02:36:54関数型言語とオブジェクト指向の研究は両者とも同じ数学的基盤に支えられて行われています。片方で主に知られている研究者がもう片方の学会で発表するのはごく普通の事です。こちらは「λマン」がオブジェクト指向の国際学会に登壇している様子です。英二郎@esumiiによる「関数型言語」に関するFAQ形式の一般的説明#オブジェクト指向と関数型は対立していますか?オブジェクト指向も関数型言語も、基礎理論はほとんど同じ分野の人たちが研究しています(紹介記事)。オブジェクトと第一級関数やデータ抽象の考え方(第2章・第3章)など、強い類似も少なくありません。TechTalksにおける同内容の講演動画)でも議論されているので参照してみてください。いう主張は、「オブジェクト指向」は「理論」ではない(こんな基礎的なことはちょっと気の利いた技術者であれば誰でも承知している)ので、根本的に間違いです。「数学的」には、すべてのプログラミングは存在として原理的に「数学的」であるので、その数学的基盤に共通性があるなんて、当たり前のことで、「考え方」「パラダイム」の差異を否定する際に有効な反論としては全く成立していません。メジャーなオブジェクト指向言語が命令型言語ベースのため、オブジェクト指向=命令型という誤解もよくありますが、データとそれに対する操作(メソッド)のまとまり(オブジェクト)を基本にシステムを構築するオブジェクト指向と、「副作用を用いない」関数型プログラミングとは、直交・独立な概念です。積極的に副作用を用いる命令型オブジェクト指向も、副作用を用いない純粋関数型オブジェクト指向もあります(Pierce著「型システム入門」第18章と第32章など)。要するに、オブジェクトの状態を破壊的に更新するか(命令型)、新しい状態を持つオブジェクトを作り直して返すか(関数型)というだけの違いです(後者はいわゆるイミュータブルなオブジェクトとして広まりつつあるようです)。いうのも、「机上の空論」ではない、巷のオブジェクト指向プログラミングとは、実態として実質のところ命令型プログラミングであることは周知のことであり、そもそも「オブジェクト指向」という言葉を作ったアラン・ケイが「オブジェクト指向プログラミングの概念は完全に間違って理解されているのだ。オブジェクト指向プログラミングの正しい概念とはオブジェクトとクラスに関してではなく、すべてがメッセージングということなのだ。「メッセージング」とは、名が体をあらわしているとおり動的な命令であり命令型のパラダイムに位置します。いう状況で、いくら、「オブジェクト指向=命令型という誤解もよくある」と、誤解でないことを誤解であると強弁したり、そのために「概念として直交」であると一部のみを切り取って概念化するのは「机上の空論」です。オブジェクト指向と関数型は対立していますか?の答えがYESである、というのは、それこそ国際的潮流の一般的説明としてほうぼうに存在するのは紹介しました。国内の【自称】関数型コミュニティと海外の論調の違いこういう世界的な見解、オブジェクト指向は関数型プログラミングと対立している、という事実、そして自分の見解や説明の間違いを自覚した彼らは、今後どんどんとトーンダウンしていくしかないと思います。実際、以下のようなトーンダウンした記述が同記事に追記されました。どんな言語(というかどんな技術や概念)でもあるように、関数型言語のファンでオブジェクト指向が嫌いという人も一定数はいますし:-)それは思想・信条の自由です。上の記述はあくまで理論の話です。紹介記事の冒頭に書いたとおり、「単純な関数型言語に、複雑なオブジェクト指向はいらない」という考え方もあります(私個人の好みもそれに近く、OCamlのOはほとんど使っていません。「上の記述はあくまで理論の話です。」ということですが、繰り返しになりますが、オブジェクト指向は「理論」ではありません。「理論」ではないものを「あくまで理論の話」と片付けるのは、要するに「空論」、「机上の空論」であり実態を反映していない強弁である、と自ら認めているようなものです。「直交・独立な概念」であるのならば、関数型プログラミングと組み合わせても問題ない、はずですが、実態として、「机上の空論」ではない実態としてのオブジェクト指向は、関数型プログラミングとは、命令型と関数型で当然のごとく水と油で競合、対立するので、当然の結果として「複雑」になって「いらない」ということになるわけです。鬼子」と引用しだしたことをもって、この辺はどちらの主張が最終的に正しかったのか?決着を見たと思います。あとは、どんどんトーンダウンするしかないのでしょうが、最終的には「そんなことを言ったっけ?」とはならないのがネットの議論であり、記録に残るわけです。知的誠実な作法であって、「あくまで理論の話」などと論理整合性のない修正追記を重ねたところで、言説はまともになんてなりません。次、プログラミングの世界的潮流と机上の空論としての関数型プログラミング2「素人としては深入りを避けたいと思いますが、そうだとすればそもそもJavaScript選んじゃったのが関数プログラミングへの無理解を象徴的に示すものなのだということになるような気がします。Posts量子コンピュータが超高速である原理と量子論とそれに至るまでの科学哲学史をゼロからわかりやすく解説01これは連載記事です。これは連載記事で、順次更新されます。この宇宙があらかじめ持っている計算能力に量子のレベルでアクセスして計算するマシン。都内の進学校に通っている。プログラミングが趣味でコンピュータ部に入部した。IQ145の知能を持つ美少女。セキヤの学校のコンピュータ部の先輩で、セキヤを厳しく指導する。