staticおじさん(読み:すたてぃっくおじさん)とは、2010年に@ITに「実はオブジェクト指向ってしっくりこないんです![1]」
と投稿して炎上したおじさんのことである。
staticおじさんが爆誕した2010年ごろのIT土方界隈ではJavaを中心としたオブジェクト指向が主流であり
「なんでもかんでもオブジェクト指向」という風潮があった。
このためstaticおじさんは多勢に無勢でボロクソに叩かれる結果となり、さらにはプログラミングそのものの
話を飛び出してオブジェクト指向推進派による学歴差別などに発展したすえに無事炎上した。
それからわずか数年後、staticおじさんの主張に「極力static変数は使わない」「関数ポインタを多用する」
というコーディング規約を加えた「関数型プログラミング」がJavaScript界隈を中心に爆発的に流行し、
その流れに乗るかたちでこれら規約を半ば強制する仕様の「関数型プログラミング言語」も多数登場するなど
世界的に一大ブームになった。
ちなみにstaticおじさんの主張と非常に酷似したものが、staticおじさんの登場より遥か昔、インターネットを
支える中核技術である「IP」のRFC(仕様書)にも「階層化の有害性」として書かれていたりする。
また、海外でも同様の主張を面白おかしく書いた「Bjarne Stroustrup インタビュー」なる怪文書が出回り、
こちらも大炎上した。
https://monobook.org/wiki/%E3%82%B9%E3%82%BF%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E3%81%8A%E3%81%98%E3%81%95%E3%82%93
探検
なぜ「staticおじさん」は叩かれたのか?
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2019/02/08(金) 15:18:48.58ID:pS5scTjj2019/02/08(金) 15:23:11.24ID:R4YoGPI4
Java全盛期だったからな
2019/02/08(金) 15:23:36.16ID:R4YoGPI4
phpまでオブジェクト志向とか狂ってたし
2019/02/08(金) 15:25:03.48ID:W/Hntm+n
staticおじさんの主張と関数型プログラミングは全く関係ない
関数型プログラミングはstatic変数なんか使わない
関数型プログラミングはstatic変数なんか使わない
2019/02/08(金) 15:28:16.85ID:f3TJJu2l
リーダブルコードにも極力staticにした方がいいって書いてあったな
6デフォルトの名無しさん
2019/02/08(金) 15:35:53.11ID:a1Tp9aO/ >>4
それは純粋関数型
それは純粋関数型
7デフォルトの名無しさん
2019/02/08(金) 15:36:51.43ID:QZ4Uj/ZC あの時期はjavaもそうだがrubyも悪い
2019/02/08(金) 15:37:21.50ID:4N6nvMTr
perlがクソクソ叩かれてた時期だからな
2019/02/08(金) 15:38:40.76ID:rNz0EA76
VBまでオブジェクト指向になってたからな。
底辺はそれが正しいと洗脳されてた。
底辺はそれが正しいと洗脳されてた。
2019/02/08(金) 15:39:02.52ID:OaBR9fSD
関数型はあまりにも難しすぎた
11デフォルトの名無しさん
2019/02/08(金) 15:39:58.76ID:VPgD7UHh いまでも関数型が理解できない奴が大半でTypeScriptみたいなトランスコード言語が次々出てきてるからな
12デフォルトの名無しさん
2019/02/08(金) 15:40:51.42ID:SGtVqYU9 @ITまわりは高学歴しか自慢できることが無い奴ばかりだったのが問題
13デフォルトの名無しさん
2019/02/08(金) 15:53:40.70ID:XuHrBl4g あれ完全に洗脳だよな
2019/02/08(金) 15:53:58.63ID:podrO9MW
集団ヒステリーみたいなもんだな
2019/02/08(金) 18:39:16.63ID:W/Hntm+n
>>6
だからなに?
> staticおじさんの主張と関数型プログラミングは全く関係ない
> 関数型プログラミングはstatic変数なんか使わない
この2つに対して、なにか否定したいなら
その理由を言えば?
だからなに?
> staticおじさんの主張と関数型プログラミングは全く関係ない
> 関数型プログラミングはstatic変数なんか使わない
この2つに対して、なにか否定したいなら
その理由を言えば?
2019/02/08(金) 18:39:54.29ID:W/Hntm+n
2019/02/08(金) 18:55:10.86ID:OdhM+TRJ
オブジェクトおじさんの方がたち悪いよね
18デフォルトの名無しさん
2019/02/08(金) 19:21:27.21ID:wNOXgeyf >>16
うっかり騙されるとこやったわ。
うっかり騙されるとこやったわ。
19デフォルトの名無しさん
2019/02/08(金) 21:28:02.60ID:g73JWU9E static女子高生なら叩かれなかった。諸悪の根源は彼がおじさんだったことであって彼の主張自体は何の間違いもない。
2019/02/08(金) 23:26:01.35ID:Ic824lCQ
>>19
静的女子高生…
静的女子高生…
21デフォルトの名無しさん
2019/02/08(金) 23:43:27.29ID:g73JWU9E >>16
make as many methods static as possible.
make as many methods static as possible.
2019/02/09(土) 00:10:27.61ID:Mo2A6iec
オブジェクト指向は愚かな考え
2019/02/09(土) 00:10:50.62ID:EjSVuTSx
>>17
ハロワすらオブジェクト指向で書こうとするからな
ハロワすらオブジェクト指向で書こうとするからな
2019/02/09(土) 00:12:10.95ID:1GMUh/vL
オブジェクト指向おじさんはIDEないと追うのが絶望的なソースにしまくるからタチが悪い
2019/02/09(土) 00:28:00.76ID:O4yJeWlE
オブジェクト指向3本柱マンのうちカプセル化が最も有害だと思う。
取りうる状態の組み合わせ爆発でまともな動作保証なんて出来ないだろ。
取りうる状態の組み合わせ爆発でまともな動作保証なんて出来ないだろ。
2019/02/09(土) 00:45:24.72ID:BEDpXpn6
お前ら関数型言語使えるんだよな?
2019/02/09(土) 01:01:16.24ID:qNFZDICU
そもそも関数型言語という言い方も誤解を招く要因
関数を型として扱えますよ何言ってんのと返されるだけ
関数を型として扱えますよ何言ってんのと返されるだけ
28デフォルトの名無しさん
2019/02/09(土) 01:19:36.90ID:wvYgqGa/2019/02/09(土) 01:24:06.13ID:c95MOxnf
東工大なら低学歴ぶった切ってよし!
30デフォルトの名無しさん
2019/02/09(土) 07:09:44.77ID:EhJ/kkED >>27
正確には関数を型安全な値として扱えますよ
正確には関数を型安全な値として扱えますよ
31デフォルトの名無しさん
2019/02/09(土) 08:02:23.63ID:NDas405z >>25
「階層化の有害性」ってやつだな
「階層化の有害性」ってやつだな
2019/02/09(土) 08:53:19.02ID:Oe2OGrsC
>>20
性的女子高生
性的女子高生
2019/02/09(土) 22:22:51.11ID:zy9w8qc8
staticおじさんは叩かれるけどDIでシングルトン保持するのは許される風潮があるよね
2019/02/09(土) 22:25:13.92ID:OJ6TU+cc
そりゃstaticにしないためのシングルトンだからな
2019/02/09(土) 22:56:18.26ID:DcqhKReG
Staticおじさんの言ってることと関数型言語はだいぶ違うと思うけど
2019/02/09(土) 23:26:26.85ID:RhBmlgQc
手続きおじさん
2019/02/10(日) 00:05:58.40ID:GE1ki46W
VBSおじさん
2019/02/10(日) 08:49:09.24ID:rK2pFdNZ
プログラミング手法そのものにこだわりがある人はダメ。めんどくさい。
2019/02/10(日) 09:58:53.14ID:ALObnpoM
おれあんまりこだわりないよ。
メソッドの先頭で全変数宣言
宣言した変数は直ちに初期値を代入
中途return禁止
ぐらいかな
メソッドの先頭で全変数宣言
宣言した変数は直ちに初期値を代入
中途return禁止
ぐらいかな
2019/02/10(日) 10:01:36.11ID:n6QJeawT
>>39
中途return禁止ってアーリーリターンも出来ないってこと?
中途return禁止ってアーリーリターンも出来ないってこと?
2019/02/10(日) 11:35:02.24ID:Ix0Ul5tp
中途return禁止とか言ってる奴はだいたい手段と目的を履き違えている
わざわざフラグ立てるくらいなら中途returnの方がマシ
中途returnが良くないと言われるのは処理順に依存した状態を持っていることになるからで、その代わりにフラグを使っても何も解決しない
わざわざフラグ立てるくらいなら中途returnの方がマシ
中途returnが良くないと言われるのは処理順に依存した状態を持っていることになるからで、その代わりにフラグを使っても何も解決しない
2019/02/10(日) 11:51:13.31ID:T5bON3Sh
前の会社は中途return禁止に再帰も禁止だった
めんどくさかったわ
めんどくさかったわ
2019/02/10(日) 11:55:13.97ID:LJxziodv
関数抜けるときの必須処理が多い場合は中途リターンせずにgoto使って、それ以外は中途リターンかな。
2019/02/10(日) 12:07:39.82ID:n6QJeawT
>>42
再帰禁止って、下手したら実装できないアルゴリズムとかあるんじゃないの
再帰禁止って、下手したら実装できないアルゴリズムとかあるんじゃないの
2019/02/10(日) 12:09:17.09ID:LJxziodv
>>44
ないでしょ
ないでしょ
2019/02/10(日) 12:19:54.47ID:Q/s8Bwot
実装できないことはないだろうけど再帰使った方がはるかに見通しが良くなるケースは多々あるだろうな
2019/02/10(日) 12:26:47.02ID:O8DkeQeo
あるフォルダ以下のフォルダ、ファイルを一覧表示とか再帰が便利だけどな
無くても余裕で作れるけど
無くても余裕で作れるけど
2019/02/10(日) 12:28:37.10ID:rK2pFdNZ
再帰使ったことないな。どんな時に使いたくなる?
呼び出し側で管理できるようにして繰り返し呼ぶ方がコードから処理がイメージしやすくていい気がするんだが。
まあコード量が少なくなるのと謎の美しさは感じるけど。
呼び出し側で管理できるようにして繰り返し呼ぶ方がコードから処理がイメージしやすくていい気がするんだが。
まあコード量が少なくなるのと謎の美しさは感じるけど。
2019/02/10(日) 12:29:11.59ID:rK2pFdNZ
>>47
なるほど
なるほど
2019/02/10(日) 12:30:17.50ID:Q/s8Bwot
>>48
階層の深さが可変のツリー構造になってるデータを探索する時とかに使う
階層の深さが可変のツリー構造になってるデータを探索する時とかに使う
2019/02/10(日) 12:31:26.00ID:cscIJSF5
末尾再起最適化を言語が保証してるのは前提として、いちいち末尾再起にするためにガチャガチャ汚ならしく変形するのが無常過ぎる。
例えばフィボナッチなんかは普通に再起書けば定義がそのまま動いているようでとても美しい。
メモ化入れてもそこまで汚くはならない。
しかし末尾再起のために変形すると一気に定義から離れる。
読むとき頭で変換しながら読むことになる。
ちっとも美しくない。
それなら最初からループで書いたほうが万が一にもスタック溢れないんだからいいわ。
例えばフィボナッチなんかは普通に再起書けば定義がそのまま動いているようでとても美しい。
メモ化入れてもそこまで汚くはならない。
しかし末尾再起のために変形すると一気に定義から離れる。
読むとき頭で変換しながら読むことになる。
ちっとも美しくない。
それなら最初からループで書いたほうが万が一にもスタック溢れないんだからいいわ。
2019/02/10(日) 12:32:03.94ID:DNUQi1GG
業務で再帰使ったことないわ
2019/02/10(日) 12:38:01.57ID:O8DkeQeo
将棋とかの思考ルーチンって再帰になってるのかな?
2019/02/10(日) 12:40:20.34ID:Q/s8Bwot
この再帰の話、全員が想定してる言語や状況が違いすぎて絶対に話がまとまらないやつだなw
2019/02/10(日) 12:41:15.72ID:O8DkeQeo
関数型 → 再帰
2019/02/10(日) 13:18:03.20ID:9lfcYoyL
>>52
ステップ数増やせるもんな
ステップ数増やせるもんな
2019/02/10(日) 13:33:45.38ID:n6QJeawT
再帰は階層構造を扱う時はほぼ必須だと思うけど、逆にそれ以外の用途はあまり思いつかない
2019/02/10(日) 13:44:32.23ID:DNUQi1GG
>>56
いや単純に使う場面がなかった
いや単純に使う場面がなかった
2019/02/10(日) 14:53:51.09ID:BEjmBSJ8
ループは再帰の糖衣構文だから何でも再帰で書けるんだけど
再帰構造を扱うとき以外は普通にループしたほうがいい、ってかそうでないと糖衣に包んだ意味がない
再帰構造を扱うとき以外は普通にループしたほうがいい、ってかそうでないと糖衣に包んだ意味がない
60デフォルトの名無しさん
2019/02/10(日) 15:05:17.60ID:tULdsfrx2019/02/10(日) 15:09:21.60ID:O8DkeQeo
フィボナッチで再帰は安直でマシンパワーの無駄使いの見本
ループでヤレ
ループでヤレ
2019/02/10(日) 17:24:48.45ID:KoYwv+8z
スマホのこのクソIME 再帰くらい変換しろやクソッ!候補にも出てこんぞ!
2019/02/10(日) 18:43:05.58ID:h0ljrL+B
1. ループは速い
2. 再帰にすると遅い
3. 末尾再帰になっていて処理系が対応していれば、
内部的にループに変換するので1と同じ速度になる
2. 再帰にすると遅い
3. 末尾再帰になっていて処理系が対応していれば、
内部的にループに変換するので1と同じ速度になる
2019/02/10(日) 20:55:34.15ID:c1xIq/Nm
SQLおじさんよりは実害ないからいい
2019/02/11(月) 10:51:41.00ID:vMTyjZUq
データ構造そのものが再帰構造になってるなら大人しく再帰を使う
せっかく階層を持ってるのに全部並列に並べてループ回してたら余計なコードが死ぬほど増えて何もいいことない
それ以外で使ったことはないし使おうと思ったこともない
せっかく階層を持ってるのに全部並列に並べてループ回してたら余計なコードが死ぬほど増えて何もいいことない
それ以外で使ったことはないし使おうと思ったこともない
2019/02/11(月) 12:10:58.33ID:27p6nxD6
別にデータ構造に振り回される必要ないと思うけどな。ループで処理した方が見通しよければそれでいい。まあコードが死ぬほど増えるなら避けた方がいいだろうけど。
67デフォルトの名無しさん
2019/02/11(月) 12:57:42.78ID:yN+iMh1T データ構造に振り回される
68デフォルトの名無しさん
2019/02/11(月) 12:58:12.86ID:yN+iMh1T www
2019/02/11(月) 13:02:33.29ID:qWYAdfL4
>>67
俺もワロタ
俺もワロタ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【東京】赤坂サウナ火事2人死亡 サウナ室のドアノブ外れ閉じ込められた可能性 ★5 [nita★]
- 「こども2万円給付」は“ずるい”?「子持ちだけ優遇されてる」「来年から独身税もあるのに」…子育て世帯への支援は“不公平”なのか [♪♪♪★]
- 「こども2万円給付」は“ずるい”?「子持ちだけ優遇されてる」「来年から独身税もあるのに」…子育て世帯への支援は“不公平”なのか★2 [♪♪♪★]
- 「PC買うなら急げ」は本当だった。マウスが一部販売停止&1月値上げを発表 [♪♪♪★]
- 【速報】 ロシア潜水艦が攻撃されて巨大水柱 [お断り★]
- 渡邊渚、批判・騒動への本音「ネット上では声が大きい人の意見が「普通」と思わされてしまう。これが今の日本社会の現状なんだな」 [muffin★]
- 【高市ラジカセ】 カセットテープでお馴染みのマクセル。 従来製品比で4倍の容量を持つ「全固体電池」を発表 🎉 [485983549]
- 解説者「高市、物価高対策何もしてなくね?」志らく「…俺はいいよ?でもネットの高市応援団が黙ってないで😡」 [359965264]
- 【高市速報】ヤフコメアンケート「上野動物園にパンダは必要?」パンダはいらないが脅威の90%😳 [931948549]
- 東京都「お願いパンダレンタルさせて!!!😭」中国「🥴」 [817260143]
- 俺「チロル!!!!チロル!!!イク!!イクぞぉ!!!チロルの耳舐めでイク!!!!!!」
- 中古バイク最大手レッドバロン、まあいいじゃんそういうのの精神でロシアにバイク輸出して経産省に怒られる [369521721]
