パスワードを忘れた? アカウント作成
15275749 journal
日記

dotkuwaの日記: 関数型プログラミングの独自性 5

日記 by dotkuwa

1.副作用(それが有ると、実行するたびに結果が変わってしまう
 のでテストが困難になる)の無い部分を抜き出し、
 関数としましょう!
 ↑ 手続き型プログラミングでも当たり前の様にされていた事です。
  www
 ↑ ブロックという考えがなかった頃、gotoレスでプログラムを
  組むためには、必ず関数を書かなければならない
  (ループの中身は1行で無ければならない)ので、
  関数として抜き出す事を事実上、強制としていた言語も有った。
 ↑ このパターン(規範?)のみを「関数型プログラミング」と
  すれば良かったのかも知れませんが、実際の歴史では、なぜか
  それ以上の独自性を求める事になった。
 ↑ ただし、副作用の"有る部分のみ"を抜き出そうとしたのが、
  オブジェクトの始まりで
  (openやread,writeやclose事にメソッドが必要で、
   それを1つにまとめるクラスも必要だし、状態変数として
   のインスタンス変数も必要)、
  そちらの方向性に対しては、関数型は無力。
 
2.副作用を無くしましょう!
 ↑ 確かに手続き型プログラミングではされていませんでした。
  しかし、出来る見込みが有りません。
 ↑ 数学的な選択公理の元では、どんな値も0時間で入手が可能で、
  実行するたびに結果が変わらない様に値を得ることも、
  ノーコストですが、CS的な選択公理ではそうは行かない。
 ↑ というか、そもそもCSの第一の存在意義は、コンピュータ上で
  選択公理を実現する事で、さらに言うなら、そのコストを推し量る
  事ではないか!!
 ↑ コンピュータ上でも頑張れば副作用を減らせるが、それで、
  1万円で出来ていた事が1兆円になってしまっては、CS的には
  敗北で有り、トレードオフの問題ではないか?
 
3.モダンとされる有用なプログラミングのアイディアのいくつかを
 関数型プログラミングならではの物としましょう!
 ↑ アイディアを独占することは出来ませんでした。手続き型の
  プログラミングでも、それらモダンなアイディアは取り入れられて
  います。
 ↑ 同じ機能が備わっているなら、関数型かどうかなどどうでも
  良く、逆に「より良いレッテルが貼られている」にも関わらず
  「何の違いも無い」→「詐欺だ」という、逆風にしかならない。
 
4.モダンを超えたアイディアを関数型プログラミングならではの
 物としましょう!
 ↑ プログラミング言語として高階関数を実現しましょう!
  (自然言語による曖昧な哲学的な表現で、かろうじて高階に
   関する表現が出来ていますが、動くプログラムでは何を
   やっても1階のままです。
   高階的表現が必要なら、そちらを指向するのが王道です。)
 ↑ プログラミング言語として副作用を封じ込め、見えなく
  しましょう!
  (かえってテストしにくくなります。)
 ↑ 特定の言語を「関数型」と認定し、モダンで有ると喧伝しま
  しょう!
  (プログラミング言語の発展の過程で「関数型」→「手続き型」
   の様に多様化していったのに、先祖返りをすれば済むという
   訳でもないでしょう。)
 ↑ 特定の言語で、nullを廃し、より良くしましょう。
  (プログラミング言語の発展の過程で「null無し」→「null有り」
   の様に多様化していったのに、先祖返りをすれば済むという
   訳でもないでしょう。)
 ↑ 陽関数を極度に持ち上げ、陰関数は無視しましょう!
  (かえってテストがしにくくなります。)
 ↑ 内部の状態は極力捨てましょう。そうすれば副作用は隠れます。
  (かえってテストがしにくくなりますし、運用方からすると
   大迷惑です。)
 
5.訳の分からない、一見「宗教的」とも言えるドグマを信じて
 いれば、「何をするか分からない」と周りに思わせる事が出来、
 報酬はもらった上で、プログラミングの実務はしなくて良くなる!
 ↑ 5年、10年程度はそうかも知れませんが、それを超えて成果が
  0なら、流石に行き場を失います。
 ↑ 別の専門性を磨いておく事をお勧めします。
 
6.特定の人間を攻撃しましょう。そうやってそれらの人間を排除
 すれば、「全ての良い事」は関数型プログラミングの物です!
 ↑ 完全に排除すべきでした。そうで無いなら未来は有りません。

  • by Anonymous Coward on 2021年05月18日 5時18分 (#4033137)

    もともと関数型言語/プログラミングってあなたの大好きなコンピュータサイエンスを研究するためのものでしょ。
    その成果を実用的な言語に取り込むのは当たり前だし実行環境が理想的なものを前提とするのも当たり前。
    物理科学の教育で(ただし摩擦や空気抵抗は考えないものとする)という但し書きがないから答えは出せないと回答するタイプですか?
    それとも現実世界はパラメータが多すぎてシミュレーションは役に立たないとするタイプ?

    ここに返信
    • by dotkuwa (9387) on 2021年05月18日 19時54分 (#4033810) 日記

      20年前位、どこ出身かは定かでは無いですが、関数型がモダンで、VBとかはまったく話にならない
      との主張を引っさげて、やってきて、自分がこれからリーダーだという所で、実際やっている手をはたいて
      だめだと言いまくった人間が来たのです。
       
      上司に言いましたが、「ビジネスはファクトが大事で、おまえはぺいぺいで、あちらは学術的に裏付けが有る
      (実際は嘘)ので、どうにもならない。ファクトがそろうまで我慢するより無い。」
      と言われ、ファクトがそろうまで待ちました。
      結局それらの関数型の人間は逃げました。
      しかし逃げただけで、なにもペイバックは受けていません。
       
      もちろん、関数型というのが、教育分野だったり、研究分野だったりでその領域に合致するものなのかも
      知れないとは思いますが、合わない分野にしゃしゃりでてきた人間の、少なくとも名誉は減らしたいと
      思うのは、自然だと思います。

    • by dotkuwa (9387) on 2021年05月18日 23時54分 (#4033936) 日記

      教育的、学術的というのは、
      ・既存の教科や分野になぞらえて、プログラミングを考える
      訳ですが、
      アプリケーションの分野では、
      ・そのアプリの分野になぞらえて、プログラミングを考える
      ので、
      合う合わないが変わって当然なので、ある分野でよい結果を
      出したなぞらえが、他では、エセ科学に劣るとなっても
      おかしくないです。

    • by dotkuwa (9387) on 2021年05月19日 4時01分 (#4033975) 日記

      結局、関数型、宣言型というのは、
      ・技術的には追加が無く
      ・フレームワークを全世界固定し、「分かりやすさ」「入って行きやすさ」を求めた
      が、
      実行環境の「理想的な」という「何か」を提示出来なかった
      すなわち、
      ・フレームワークの全世界固定は出来なかった、摩擦や空気抵抗のような、
       全世界共通のパラメータがなかった(大杉とは誰も言っていない)
      というだけで、
      費用を取ってより良さを、自分たちは提供出来ると、コミットしておきながら
      逃げるだけなのは、卑怯ではないでしょうか?

typodupeerror

海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs

読み込み中...