2008-12-31

http://anond.hatelabo.jp/20081231190326

そういうのはバッドノウハウとは言わないの?

関数ポインタバッドノウハウとは言わないでしょ。C言語自体がバッドノウハウの結果だと言うなら、当たりだけど:)

手続き関数という抽象まことに一般的な存在で(数学では汎関数というのもある)、それをC言語で直接的に表現したのが関数ポインタ関数的なものを オブジェクト指向言語オブジェクトとして実装するほうがバッドノウハウだと思う。 少なくとも私は JavaのComparableインタフェースよりも C言語の heapsort/mergesort/qsort の関数引数 int (*compar)(const void *, const void *) のほうがシンプルで どちらかといえば本質をよりよく表していると思う。 なぜ関数的なものを表現するのに オブジェクトとかinterfaceとか継承とか「余計な概念」を導入する?それこそバッドノウハウでしょ。 まあでもC言語にはクロージャが無いから、関数的なものも扱いづらいことこの上ないが、Cにクロージャが無いこと自体はバッドノウハウとは言わないでしょー。

逆も然りで、オブジェクトを表現するために 関数を使ってれば そればバッドノウハウだけど、オブジェクト関数ほど一般的な概念ではないと思う(オブジェクトなんか無くても別にいい、かも?)。

あ、もちろん難読化や最適化や動的ロードのために件のようなコードを書くのはバッドノウハウに近いだろう。

記事への反応 -
  • Exploit系のバグなのか、わざとやっているのかが外部ツールで判別付かない場合がある ツールにひっかかるから、ですらないと思う。単にそういう技が必要なくなっただけ。 そもそもexp...

    • 単にそういう技が必要なくなっただけ 必要が無くなったのは大前提だと思うけど? だから、昔はやったけど、今はやらない。DLLやSOがあるというのが1番の理由。でも、なんでDLLやSOが...

      • あきらかに素人さん相手の説明でそりゃーないでしょ。というか、第1の問題点として指摘しているかのように書いてあるし。まぁいいけど。。。 そもそも、まさに動的リンク機能がOSに...

        • 関数ポインタはバッドノウハウどころか、手続き的な抽象を使いたいところで多用しますぜ。 C++やオブジェクト指向言語だと 継承と仮想関数を使うけど、同じようなケースで C言語では...

          • そういうのはバッドノウハウとは言わないの?(「本来想定されていない使い方をするために、工夫してできるようにしちゃうノウハウ」を指してバッドノウハウと言うんだと思ってたか...

            • そういうのはバッドノウハウとは言わないの? 関数ポインタをバッドノウハウとは言わないでしょ。C言語自体がバッドノウハウと言うなら、当たりだけど:) 手続きという抽象はまこと...

              • 関数ポインタで、例示された5つを実現するのはバッドノウハウじゃないの? 「関数ポインタを使ってプログラミングしましょう」というプログラミングスタイルは、正統派ではないと...

                • 例示された 5つ が 動的コード操作のことを指しているのなら、そりゃバッドノウハウかもね。 でも関数ポインタは… 「関数ポインタを使ってプログラミングしましょう」というプロ...

                  • うーん。 K&Rでも「5.11関数へのポインタ」で触れられてるのはqsortの話だし、そこで「関数へのポインタを定義できるよ」とはある。個人的にこれは意図していないけど載ってることだ...

                  • 関数ポインタはバッドノウハウになっているよ、確かに。 じゃぁ、何がグッドノウハウかというとC++のVirtual関数 C++の継承やVirtual関数は中身はvtableでvtableって何のこと?っていうと 関数...

                    • 関数ポインタがバッドノウハウ的であるような根拠があれば納得できるんだけど。 オブジェクト指向だってバッドノウハウじゃない?ツリーの途中で指摘されてなかった? 昨日からお前...

        • 最初期の増田っす。 そもそも関数ポインタって、最近流行の言葉(笑)で言えばバッドノウハウだから、別に細かいこと良いんじゃないの? 関数呼び出しってのも「式」にしちゃうとコン...

記事への反応(ブックマークコメント)

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