はてなキーワード: 関数型プログラミングとは
実を言うと、普通のプログラマはオブジェクト指向以前のプログラミングも理解できないんだけど、あれらはまだ手続き的な要素を内在してるから、そっちだけを受け取ることはできる。
それまで手続き的な要素+宣言的な要素だったプログラミングが、関数型プログラミングへと移行する時に手続き的な要素を切り捨てたのね。より純粋な手法に進化するために。
だから、それまで手続き部分だけを受け取って喜んでた普通のプログラマは急にわからなくなりヒステリーを起こした。
だけど、プログラミング上級者はオブジェクト指向以前にも宣言的な部分しか見てないから普通のプログラマが何を騒いでるのかわからない。
普通のプログラマって、部品化の凄いやつが関数型プログラミングになるとか勘違いしがちだけど(staticおじさんもその変奏)、全く質の違うもの。
部品化って、重複コードをひすたらサブルーチンに括り出すようなもの。副作用がある。
日本のSIer(日立NEC富士通とか)って教養がない極東の田舎者だから、副作用を理解できない。すぐに「部品化」を持ち上げる。怖いんだろう。自分に理解できないプログラミングが。モナドですら大多数は理解できないんだもの。あんな教科書的なものですら。
とにかくアジアってIT後進国なのね。トップの日本ですらこうなのだから。"NTT"データがHaskellでレガシーシステムを脈絡なく解析してホルホルしてるレベルだもの。
まず日本に生まれた時点で、関数型プログラミングを理解するには圧倒的に不利。こんなこと言うと、「普通のプログラマにもわかやすく説明できるのが一流ダー」みたいな恥ずかしい駄々っ子が沸いてくるけど、プログラミングって歴史上一度も大衆を相手にしてないので。
OSSの恩恵で、普通のプログラマもコンパイラを無料で使えるようにになっただけで泣いて喜ぶべき。
そしてあれは、将来のスポンサーとコミッタの入り口としてやってるの。1000人に1人、将来コミュニティに貢献する人材がいるかもしれないと信じて。
シリコンバレー住人にもOSSコミッタにもなれない普通のプログラマはまあ、おこぼれで"文化的"コスプレしてQiitaでもやればいいんだと思うよ。
古いスター見られないから新しくスクリプト書いた。listStarURLs(ユーザ名, ページ数)で与えられたユーザのブクマを与えられたページ数まで見て自分がstarを押したブコメをリストアップする。
これで出てきたスター一覧を上のスクリプトと組み合わせれば与えられたユーザに自分がつけたスターをお手軽に全削除できる。
昔Qiitaかなんかで「JSではforは使わず関数型プログラミングが素晴らしいのだ!(ドヤァ」という記事に「いやいや逐次awaitしたいときそれじゃ困るんだよ(キリッ」みたいなブコメがついてて大変生暖かい気持ちになったことを思い出したのでfoldしてみたけどあのときブコメしていた関数型()フロントエンド()プログラマー(笑)の皆さんは別に見てはないだろうなw
関数型プログラミング使ってないでしょ?
バリバリに使ってるが
実務でプログラムの仕様検討なりレビューなりするときに、お前みたいなこと言いだすやつがいるとしたら邪魔でしか無いが、関数型プログラミングで何作ってる人なんだ?
関数型プログラミングの知識は役に立つけど必須じゃないんだよなぁ…
やってみせ、言って聞かせて、させてみせ、ほめてやらねば、人は動かじ。
話し合い、耳を傾け、承認し、任せてやらねば、人は育たず。
やっている、姿を感謝で見守って、信頼せねば、人は実らず。
まずは、あなた自身がプログラマーになって、見本を見せることが第1歩です。
その後受託系の会社に就職できたのだけど、人間関係がうまくいかなかったようで数ヶ月で辞めた。
鬱病気味になったみたい...。
どうやら、プログラミングという仕事の特徴について、あなたは理解していないようですね?
プログラミングの特徴は、「コンピューターが相手なので、嘘やハッタリが一切通用しない」ということです。
人間相手なら、適当に指示を出したり、いい加減な対応でも何とかなるけど、コンピューター相手だと1mmも融通が利きません。
という3点が必要です。
警察に職務質問されて有名になった江添亮さんのブログ等を読んで、この方のようにネチネチと論理をこねくり回すのが好きなら、プログラマーに向いています。
(例)本の虫: 麻布十番で職務質問を受けた話 https://cpplover.blogspot.jp/2017/08/blog-post.html
プログラムというのは、小さな部品を組み合わせて、大きなシステムが作られています。
小さな部品がパズルのピースに相当して、大きなシステムがパズルの完成品です。
つまり、大きな問題を小さな問題に分解して、1つずつ順番に問題をつぶして行く姿勢が必要です。
があります。
命令型のプログラミング言語しか使えない人がプログラマーになると、テスト地獄に陥って、結果的に鬱病を発症しやすくなるだろうと危惧しています。
上述のように、パズルのピースを組み合わせてプログラムを作るには、「関数型」の作法を身に付けておくと良いでしょう。
関数型プログラミングを習得するために、今なら「Haskell」または「OCaml」というプログラミング言語をお勧めします。
HaskellやOCamlは、良い参考書がたくさんあるので、本屋に行って実物を確かめてください。
Haskellを学んでみて、パズルのピースを組み合わせる感覚が理解できたら、あなたはテスト地獄に苦しめられないプログラマーになれるでしょう。
もしも、Haskellが理解できないようだったら、残念ですがプログラマーには向いていないかもしれません。
(例外的に、あなたがマゾで、テスト地獄や残業、徹夜が楽しいと思える性格なら、Haskellが理解できなくても大丈夫かもしれません。)
Haskellの教材(英語)を紹介するので、参考までに読んでみてください。
http://learnyouahaskell.com/chapters
(このサイトの内容は、日本語の書籍「すごいHaskellたのしく学ぼう!」として出版されています。)
Haskellは、順番に学べば必ず理解できるようになっています。
もしも、Haskellが習得できなければ、大きな問題を小さな問題に分解して解決していく作業には不向きな性格かもしれないので、他の仕事も検討してはいかがでしょうか?
(人生は一度きり。時間の無駄にならないようにお気を付けください。)
あなたと友人が、無事Haskellを習得して、テスト地獄を乗り超えるスーパーハッカーになり、日本のIT産業を牽引されることに期待いたします。
(追記)
自分が作りたいプログラムすら作れない人が、他人が希望するプログラムを作るなんてできっこないからねw
(プログラマーが楽で簡単な仕事だと思ったら大間違いですよ?)
(追記 その2)
関数型プログラミングをマスターしておけば、OOPでも役に立つよ。(現実には、関数型もOOPも必要に応じて投入するし)
iOS→「プロトコル指向プログラミング」「RxSwift」、Android→「RxJava」辺りのキーワードでググってみて。
別に皮肉とか宗教戦争で煽ってるわけじゃなくて、自分も苦労して辿りついた口だから、今から始める人には遠回りして、余計な苦労を味わって欲しくない。
(追記 その3)
他の人が書いてたけど、1人でプログラミングするんじゃなくて、2人(ペアプログラミング)や3人以上(モブプログラミング)から始めたら良いかも。
Googleの「プロジェクト・アリストテレス」で、仕事の生産性を改善するには「心理的安全性」が重要と分かり、プログラミングの仕事もやり方が変わって来ています。
https://kuranuki.sonicgarden.jp/2017/01/psychological-safety.html
(追記 その4)
元記事が消えていたのでバックアップしておきます。(この投稿だけ読むと意味が分からなくなるため)
https://anond.hatelabo.jp/20170910205249
2017-09-10
■知り合いをプログラマにさせたいんだけど知恵を貸してくれ
プログラマって育休からの復帰しやすいだろうし、アルバイトよりは待遇いいし、勤怠ゆるいし、労力の割に楽ちんだと思うんだよね。
接客のバイトで消耗するくらいなら、プログラマになればいいと思っているのだが、その知り合いは自身のことをプログラミングを不向きと評価しているらしい。私は、プログラミングに限らず物事は時間をかければ習熟していくものだと思っているので、不向きではないと思うんだ。不向きというのは物理的に制限のある時だと思う。
その知り合いについて。
Vimはぎこちないけど使える。日常的にmacOSを使っていてターミナルの操作はできている。cd, ls あたりは理解している。
趣味を含めてアプリケーションを完成させた経験はないが、ifやfor文などの基本構文は理解している。数年前にプログラミングスクールのようなところに半年間通っていた。その後受託系の会社に就職できたのだけど、人間関係がうまくいかなかったようで数ヶ月で辞めた。鬱病気味になったみたい...。
何か成功体験があれば自然とのめり込んでと思うんだけどなかなかスイッチが入っていないみたい。
こちら側からは、プログラマーになれば?と直接は伝えてはなくて、素人でもプログラミングできましたみたいなネットの記事をシェアーしているくらい。(心理的リアクタンス避け)
知恵を貸して欲しい。
ReactはJavaScript界隈の関数型プログラミング化の潮流で登場。
最近、炎上している別の方面で、特にFRPと組み合わせると圧倒的なパワーを発揮すると一部では実例とともに指摘されている。
http://kenokabe-techwriting.blogspot.jp/2016/05/frptimeenginereactjsocaml.html
Reactは、関数型あるいは宣言型に書けるように用意されている。DOMは、「仮想DOM」として、JS(JSX)上の「値」として統合されていて、それは自由に変形し、組み合わされ、リアクティブにJSX上の仮想DOMから実DOMにリアルタイムでマッピングされ描写される。
JQueryも、実DOMを関数型で操作できるような拡張ではあるが、Reactのように宣言的に書くことは不可能。
coffee scriptは、ES6登場までの過渡期の橋渡しみたいなもので、登場したのも消えたのも合理性がある。
React.jsは、関数型の潮流で登場したものでこれも合理性があり、この延長線上でさらに洗練された代替物が登場する可能性はあれど、このパラダイムが消えることはない。
まずReactの特徴は、「状態データから変換してビューを生成する」スタイルに統一されることにある。
これはjQueryをはじめとするDOM操作モデルでの、「初期状態ビューの作成」と「(イベントに伴う)状態変化からの部分ビュー変更」で構成するスタイルから脱却され、たとえば部分処理の積み重ねから想定外の状態が生まれることを防ぐ。
SPAは、クライアントが自立した1プログラムとして状態を管理する。サーバはUIと同様の非同期なイベント発生源/イベント発行先の一つとして扱う。またReactとReduxの組は、データベースサーバとサーバサイドページ生成のスタイルを、サーバとブラウザでやるようにシフトさせたものともみなせるだろう。
そしてReact自体には、JSX構文もbabelもいらない。JSXタグを書くよりむしろReact.DOM.div({...},...)等で書いたほうがプログラミングでは扱いやすい。JSXはサーバサイドページ生成のテンプレート言語利用文化に寄せた表現に過ぎないといえる。そして今ではbabelで変換する対象もES6 modulesのexport/importだけだ。これも分割ファイル対応のためにwebpackあたりを使うなら、ついでにbabelでES6 modulesも、といった程度のこと。
すでに一般に忘れられつつあるprototype, Dojo, Mooと同格であるjQueryのほうが五年後も活発にメンテされるのかどうか怪しいだろう。もちろん、レガシーなものとしては残り続けるだろうが。
Reactのモデルは関数型プログラミングのモデルそのものであって、そういう観点ではすでに何年も続いたものであり、React自体は消えたとしてもその手法は長く続くことになる。
観測できる事実として、岡部さんと住井さん、nonstarteさんの振る舞いが目立ってきた頃から、
国内ネットでは、地雷、滅多なことを言わないほうがいいという風潮がありました。
しかも、「純粋関数型」が何か?というさえ、海外では関数型プログラミング界隈の著名人、
たとえば岡部さんが引き合いに出す論文のエリオットはじめ、合意が取れていません。
http://conal.net/blog/posts/the-c-language-is-purely-functiona
「nonstarter氏や住井教授のようなエントリの内容は、日本国内でのみ少数の合意が得られてるに過ぎず、海外では主流ではない。」
よって、これは岡部さんのほうが公平な現実について発言しており、が正しいと判断します。
住井さんをはじめ、岡部さんが批判する相手は、議論となっている関数型プログラミングの定義などが、まるで世界的に合意がされており岡部さんのみが異端だという主張ばかりしており、あまり信用できません。
FRPって関数型プログラミング+リアクティブプログラミングでしょ?
そんで、リアクティブプログラミングって、
__drawFrom.t = { x: e.clientX, y: e.clientY };
みたいなグローバル変数を書き換えるコードを自分で書くんじゃなくて、
この変数とこの入力欄/入力ボタンは結びついてます、って書くだけで、フレームワークが利用者に見えないところで、自動的に更新してくれる仕組みだよね?
自分でイベント拾ってグローバル変数書き換えてたらFRPじゃないよね?
違う?
正確には、
「関数型って時間はパラメータで与えて結果を得るんじゃないの」とか意味不明なこといってる馬鹿がいて、
hoge.t あるいは、date.now やらで指定してたインデックスというのは、関数型プログラミングの文脈から、インデックスが得られるんだとさ。
初期値0からはじまる時無限の再帰のカウントから、どうやって時刻を得るパラメータが得られるのか、頭のおかしい奴の考えるコードは想像不能。
ああ。住井@東北大かな?
>(分析哲学ではなく関数型言語の意味で)参照不透明なので、関数型プログラミングのメリットは享受できない、命令型の破壊的代入と等価ですね。
君の役にもたたない机上の空論は皆そろそろ聞き飽きていると思うので、適当なハッタリではなく、timeengine(FRP)がいったいどのような局面で、参照不透明と名実ともになり「破壊的代入」のデメリットが顕在化し、関数型プログラミングのメリットが享受できなくなるのか、具体的に示せよ?100%無理だろうけどね。机上の空論じゃないなら、やれるもんならやってみな?w
ああ。住井@東北大かな?
>(分析哲学ではなく関数型言語の意味で)参照不透明なので、関数型プログラミングのメリットは享受できない、命令型の破壊的代入と等価ですね。
君の役にもたたない机上の空論は皆そろそろ聞き飽きていると思うので、適当なハッタリではなく、timeengine(FRP)がいったいどのような局面で、参照不透明と名実ともになり「破壊的代入」のデメリットが顕在化し、関数型プログラミングのメリットが享受できなくなるのか、具体的に示せよ?100%無理だろうけどね。机上の空論じゃないなら、やれるもんならやってみな?w
ああ。住井@東北大かな?
>(分析哲学ではなく関数型言語の意味で)参照不透明なので、関数型プログラミングのメリットは享受できない、命令型の破壊的代入と等価ですね。
君の役にもたたない机上の空論は皆そろそろ聞き飽きていると思うので、適当なハッタリではなく、timeengine(FRP)がいったいどのような局面で、参照不透明と名実ともになり「破壊的代入」のデメリットが顕在化し、関数型プログラミングのメリットが享受できなくなるのか、具体的に示せよ?100%無理だろうけどね。机上の空論じゃないなら、やれるもんならやってみな?w
今回のように、
----------------------------------------------------------------------------------
「オブジェクト指向と関数型は対立していますか?」について権威論証のきらいがありますし、
関数型プログラミングとオブジェクト指向のパラダイムとしての対立 国内の【自称】関数型コミュニティと海外の論調の違いというブログ記事
http://kenokabe-techwriting.blogspot.jp/2015/04/blog-post.html
では、
以下が広く一般的で国際的な【「関数型言語」に関する一般的説明】です。
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
SaitohMDMA_Love
0 contribution
その方は万能感・誇大妄想のきらいがある電波系として別の意味で有名な人ですよ。
----------------------------------------------------------------------------------
このコメントに対しては、
----------------------------------------------------------------------------------
@SaitohMDMA_Love 私が示したのは見解なので。そのような中傷行為や個人攻撃、悪意が見て取れる属人性の主張をしながら、その論者による見解を否定する試みは、属人論法であり権威論証だと言えます。(蛇足ですが、MDMAというのは違法薬物なので中傷行為同等に良俗に反するHNだとも思います)
----------------------------------------------------------------------------------
。。。。。。。。。。。。。。。。。というのは、「荒らし」とは言わない。
「荒らし」というのは、@SaitohMDMA_Loveであり、「荒らし」コメントがそのままで、「荒らし」コメントを叱る、妥当な技術論を削除したQiitaが問題だということ。
そのおまえが念仏唱えてるとおり、「300以上の荒らしコメント」という文言は実態として虚偽であり、実態として虚偽であることをわかってわざとデマ流してるよな?
「Qiita社長コメント」という「弁明」があったことも捻じ曲げて念仏唱えながらさ。
@SaitohMDMA_Loveみたいな「荒らし」をはじめ、おまえみたいな異常な念佛教徒は「異常者」であり、技術論にわいてでてきてしきりに念佛を唱えるおまえらが荒らし。
これ本質は関数型プログラミングに縄張り意識を感じていた連中が岡部氏に反発したヘイト案件。住井も加担してました、反論も含めて投稿されるとヤバイ。Qiitaもヘイトに加担してます、ヘイトコメントは消しません、ヘイトに反するコメントは消します、ってことでしょ。。
http://qiita.com/esumii/items/ec589d138e72e22ea97e#comment-0bad8d4aabf92ec70352
----------------------------------------------------------------------------------
「オブジェクト指向と関数型は対立していますか?」について権威論証のきらいがありますし、
関数型プログラミングとオブジェクト指向のパラダイムとしての対立 国内の【自称】関数型コミュニティと海外の論調の違いというブログ記事
http://kenokabe-techwriting.blogspot.jp/2015/04/blog-post.html
では、
以下が広く一般的で国際的な【「関数型言語」に関する一般的説明】です。
----------------------------------------------------------------------------------
っていう投稿が通知されてくる。
http://kenokabe-techwriting.blogspot.jp/2015/04/blog-post.html
----------------------------------------------------------------------------------
SaitohMDMA_Love
0 contribution
その方は万能感・誇大妄想のきらいがある電波系として別の意味で有名な人ですよ。
----------------------------------------------------------------------------------
このコメントに対しては、
----------------------------------------------------------------------------------
@SaitohMDMA_Love 私が示したのは見解なので。そのような中傷行為や個人攻撃、悪意が見て取れる属人性の主張をしながら、その論者による見解を否定する試みは、属人論法であり権威論証だと言えます。(蛇足ですが、MDMAというのは違法薬物なので中傷行為同等に良俗に反するHNだとも思います)
----------------------------------------------------------------------------------
というお叱りが加わって、俺も全くそのとおりだと思うのだが、すぐに記事主のコメントがあって、ほどなくこのコメントが消されてしまった。つまり、
「万能感・誇大妄想のきらいがある電波系」と誹謗中傷しているコメントについては、記事主もQiita運営もまるで反応しなかったのに、誹謗中傷、個人攻撃、ヘイト良くないというお叱りコメントがあったら反応しだして、びっくりするのが、
「万能感・誇大妄想のきらいがある電波系」は温存したまま、反論コメントや、誹謗中傷を咎めるコメントだけがまるまる削除されてしまった。
http://kenokabe-techwriting.blogspot.jp/2015/04/blog-post.html
には、誹謗中傷は見当たらないし、それならまず「万能感・誇大妄想のきらいがある電波系」と誹謗中傷しているほうのSaitohMDMA_Loveのコメントが消されてしかるべきだと思うんだが、いったいどういう運営判断なんだろう?
もちろん、このブログ記事の筆者が、過去Qiitaでトラブルになったことも知ってるが、そのときのアンチの誹謗中傷コメントふくめ全部Qiitaは温存したまんまなんだよね。
ちなみに、そのときもQiita運営に消されたのはkenokabe氏を擁護しアンチの誹謗中傷行為を咎めたコメントのみで、これらは全部真っ当な技術的な議論をするコメントだった。もちろん俺自身も含めて見ている人は参考になる情報だったと思う。
その一方でQiita運営は、茶化したり個人攻撃しかしていないコメントは完全放置で温存したまま。今も探したら見れると思うけど。
2chのスレも知ってるけど、酷い有様だし、一部ではQiita社員も加担しているという書き込みすらある。もちろんアンチは「完全勝利」だの「Qiitaの騒動は最初から俺が書いた絵」だとか言ってマッチポンプ自慢してはしゃいでる。
Qiitaの中の人もこの状況は知らないわけじゃないとは思うんだよね。
それどころか、これひょっとしてQiita運営もグルになって誹謗中傷に加担してないか? そうじゃないと
>その方は万能感・誇大妄想のきらいがある電波系として別の意味で有名な人ですよ。
その他、過去のアンチの誹謗中傷コメントはまるまる温存してるとかいうダブスタが説明できないんだよなあ。
----------------------------------------------------------------------------------
wgt_cosmos
0 contribution
なんにもできな~い
なんにもできな~い
すぐ消されて
なんにもできな~い
----------------------------------------------------------------------------------
こういうのはQiitaは見てみぬふりなんだよなあ。迷惑なんですけど。
追記)メール通知によると、
----------------------------------------------------------------------------------
「オブジェクト指向と関数型は対立していますか?」について権威論証のきらいがありますし、
関数型プログラミングとオブジェクト指向のパラダイムとしての対立 国内の【自称】関数型コミュニティと海外の論調の違いというブログ記事
http://kenokabe-techwriting.blogspot.jp/2015/04/blog-post.html
では、
以下が広く一般的で国際的な【「関数型言語」に関する一般的説明】です。
@SaitohMDMA_Love 私が示したのは見解なので。そのような中傷行為や個人攻撃、悪意が見て取れる属人性の主張をしながら、その論者による見解を否定する試みは、属人論法であり権威論証だと言えます。(蛇足ですが、MDMAというのは違法薬物なので中傷行為同等に良俗に反するHNだとも思います)
ちなみに当コメントが消される現象および、上記複数の不適切なコメントが消されない不可解な現象については、某所で話題にもなっているとお知らせいただきました。
http://b.hatena.ne.jp/entry/anond.hatelabo.jp/20160226093209
----------------------------------------------------------------------------------
というコメントがあった。その直後、Qiitaは、このアカウントを停止してしまった。
あとから見た人は確かに、この投稿主がなにか「荒らし行為」や「悪い投稿」をしたからこんな結果になると思うだろうけど、実際の投稿は上記のように無害どころか情報として有益なもので、さらに誹謗中傷行為を咎めるもの。
The user qualification of the comment's author is cancelled.
という文字。
こんなことをして喜ぶのは2chスレとブコメに湧いてる偏執的なアンチだけだと思うんだよなあ。あとは、間違ってると批判されてる記事主の住井氏と取り巻き。
ちなみに、このQiitaが「闇堕ち」しているとか言われている評価については、ブコメに湧いてる偏執的なアンチによって擁護されてる。
誹謗中傷もヘイトもアンチも関心がない「普通のひと」にとっては、単純に有益な情報が損なわれて、変な界隈がはびこるようなコミュニティになってしまっているだけ。
正確性が要求される技術情報サイトがそんな変な状態になってるのに、そんな変な状態が好都合な変な連中に擁護されてメンツを保つQiitaの現在を「闇堕ち」と言われてるんだけどね。
結果を見ると、Qiita運営もグルになって誹謗中傷に加担していると思う。
>この投稿した奴は、kenokabe本人か、最低でも「削除された」投稿の投稿者。そうでなきゃ、「メール通知」でコメントを把握できるのは、あのエントリに投稿したことのある人物だけ。
またやってるよ。はじまった。推論は間違い。理由。
たしかに
http://qiita.com/esumii/items/ec589d138e72e22ea97e#comment-0bad8d4aabf92ec70352
でもこの記事にコメントしたのは、kenokabe氏本人(いつもの偏執狂による認定決めつけ?)か、(最低でも)「削除された」投稿の投稿者 だけなの?(笑)何人もいるのにね。
ひとりひとりにあなたですか?って確かめてみたら?もちろん俺はここで匿名で投稿したわけなので、聞かれてもしらばっくれるか答えないけどね。Qiitaでこういう人に目つけられて同じように偏執的につきまとわれるのは嫌だから。