卜部昌平のあまりreblogしないtumblr RSS

Archive

May
18th
Wed
permalink

エゴサーチで見かけた反応とそれの感想など

  • 速さのためにはCでないと

    この誤解は典型的ですねえ。今、申し訳ないんだけど、普通に書いたCのコードと普通に書いたJavaのコード走らせると、普通に書いたJavaのコードの方が速くなるケース、全部とは言わんが案外と多いですよ。なんでかというと、Javaは普通に書いたらJVMが人類の持てるテクノロジの限りを尽くして勝手に高速化してくれる1が、Cはあなたの能力以上に速くはならない。Cは速いJavaは遅いってのは10年くらい前には正しかったんでしょうけどねえ。

    なお自分でベンチマークしてる暇なんかないよ!という人はshootout.alioth.debian.orgぐらいは読んでもいいんじゃないですかね。たとえばJavaとCの比較で見れば全体的にいって同じくらいのスピード、いくつかの項目でJavaのほうが速いのが分かる。

  • 組み込み屋はCでなければ何を使うか

    これがですねえ、少なくとも俺の半径1クリックではマジもんの組み込み屋は全員verilogとかに流れちゃっててですねえ、もうCなぞ書いてねえのですよ。

    まあつまりね、今日びだと携帯電話ですらIntel入ってるわけです。ってなったときに、じゃあうちの製品でもAtom載せますか、っていうと、わざわざx86のOS書いたりするくらいなら、ありもの持ってくるって事に当然なるわけです。だから、21世紀の現在においてはそもそも、組み込みでなければいけない状況というのがすごーく限られている。で、そんななか、安くて実績豊富なありもんのチップとOS買ってくるんじゃないくて、わざわざどうしても組み込みでやらないといかんね、という状況、これは相当なハードコアなわけですけども、そういう状況になってくると、もはやCやアセンブラですら所望の性能が出せない領域に突入してくるのです。FPGAで論理回路からカスタムの世界です。

    ですので、組み込みだからどうとかいうのは、少なくともCの文脈としては、ちょっともう当てはまりません。今後時代が逆転することはないと思います。

  • 言語の実装は何で書くか

    今から書き始められる大多数の言語は普通にJavaかML系ですよ2。過去にCで書かれてたやつもまだまだ現役だけどさ。ぶっちゃけ今から言語やりだすとしてCでやる必然性ってどこにあるの?

    今更新たにXSLTエンジンをCで書きます、とか言い出すやつおらんと思うのね。文字列処理ほど今Cでやっちゃいかん種類の処理もそうはないですよ。

  • 何で書いてもダメなやつはダメ

    そりゃそうなのかもしらんが、他のツールを使えば全然ダメじゃない人でもCではダメなコードを書いてしまう、これがポイントなのですよ。かくいう自分もCで書いちゃったらメンテナンスしやすい見通しの効いたコードになる自信はちょっとないです3。Cで綺麗なコードを書きましょうってのは道具というか、お膳立てが足りなすぎるのです。

    たしかにそれでも、Cで書かれた綺麗なコードというものは存在し、読むとジョルジュ・ペレックの「煙滅」のような、一種の感動を感じさせてくれます。が、残念ながら私にはIOCCCとかと同じ分類におきたくなる衝動が抑えられません。

  • 使いどころ次第なのでは?

    そう。ほんっとそう。まさにそう。上から下までCで書くのがどんなに狂った発想か。

    Cが本当に必要な領域がもしあるなら、そこはしょうがないからCで書くしかないんじゃないですか。背に腹は替えられないし。でもさあ、それってどこなんですかね。具体的に。まあどっかにはあるのかもしらんが(Kernelの中とかさ)、それの箇所って1970年代とかと比べて大幅減ってるはずなんですよ。計算機は何桁も速くなったし計算機言語は目をみはる発達を遂げたのです。

    ○○だからCでなきゃみたいな幻想は一回捨てたほうがいいです。冷静に、今あるテクノロジを吟味して、最適なものを選びましょう。したら九分九厘はCじゃない選択肢があるはずですよ。それでもどうしても残ったところは、残念だけど必要悪ってことでとりあえずCで書いといてください。たぶんちゃんと吟味すれば本当にちょっとしか残ってないから、被害も最小限でしょう。そこまでちゃんと考えて結果Cを選ぶのなら、まあ、しょうがない。好きにはなれないが納得できます。

    でも、多くのケースはそうじゃないんだよな。


  1. JITコンパイラはJITじゃないコンパイラよりも最適化に用いることができる情報が多いのでJavaとかC#はCよりも最適化が効きやすい。 

  2. 聖典”Modern Compiler Implementation in ML“のおかげ。日本語訳もある。読むべき。というか言語屋なら当然すでに読んでるべき。 

  3. 特にエラーの持ち回りがgotoに頼るかエラーの瞬間にreturnで関数抜けるかしかないのでどう転んでも見通しが悪くなる 

  1. krakeneye reblogged this from shyouhei
  2. fjwr38 reblogged this from shyouhei
  3. onaniena reblogged this from gotogoto
  4. gotogoto reblogged this from shyouhei
  5. functionn reblogged this from shyouhei
  6. photxt reblogged this from shyouhei
  7. suchi reblogged this from shyouhei
  8. miwarin reblogged this from shyouhei
  9. kurano reblogged this from shyouhei
  10. ineod reblogged this from shyouhei
  11. wtakuo reblogged this from hexe
  12. mrkn20 reblogged this from shyouhei
  13. dr-caligari reblogged this from shyouhei and added:
    ゲームプログラマーという生き物が居ることも、たまには思い出してあげてください。
  14. kai-kuchiki reblogged this from hexe
  15. tmkj1 reblogged this from konishiroku
  16. ukar reblogged this from takashi0215
  17. do-nothing reblogged this from nemoi
  18. blasno reblogged this from konishiroku
  19. jangaly reblogged this from gutarin
  20. mogemura reblogged this from konishiroku
  21. rakuyen reblogged this from konishiroku
  22. edieelee reblogged this from taizooo
  23. himatbshiz reblogged this from takashi0215
  24. impepc reblogged this from shyouhei
  25. n13i reblogged this from konishiroku
  26. takashi0215 reblogged this from yellowblog
  27. mokn12 reblogged this from yellowblog
  28. yellowblog reblogged this from nemoi
  29. ginzuna reblogged this from taizooo
  30. nemoi reblogged this from taizooo
  31. taizooo reblogged this from shyouhei and added:
    卜部昌平のあまりreblogしないtumblr:
  32. gutarin reblogged this from konishiroku
  33. konishiroku reblogged this from iomz
  34. iomz reblogged this from shyouhei
  35. kittymint reblogged this from yoosee
  36. metaphorize reblogged this from shyouhei
  37. cerraine reblogged this from ishida
  38. arkhamhpl reblogged this from ishida