ブックマーク / cpplover.blogspot.com (26)

  • Jacob Kaplan-MossのPyCon 2015における基調講演: プログラミングの才能という都市伝説

    Keynote - Jacob Kaplan-Moss - Pycon 2015 - YouTube The programming talent myth [LWN.net] PyCon 2015で、Djangoの貢献者であるJacob Kaplan-Mossが興味深い基調講演をしているので紹介する。LWM.netでほぼ全面書き起こしに近いまとめがあったので助かった。 自己紹介 Kaplan-MossはDjangoの貢献者であり、Herokuのセキュリテイ部門の部長である。PyCon参加者としては歴史が長く、その他のカンファレンスでもよく発表している。Pythonコミュニティは「自分にとってこの業界におけるとても重要なもの」であり、PyConの基調講演を行うということは、「自分のキャリア上の絶頂」である。 自分の最初のPyConの発表は2005年のことで、PythonAppleScri

    Jacob Kaplan-MossのPyCon 2015における基調講演: プログラミングの才能という都市伝説
  • Linus Torvalds、 GCC 4.9.0のコード生成にブチ切れる

    Phoronixで知ったが、Linus TorvaldsがGCC 4.9.0のコード生成にブチ切れている。 問題はLinuxカーネルのload_balance()がランダムにパニックを起こすというもので、その原因は、報告者の使っているコンパイラーであるGCC 4.9.0のコード生成がおかしかったという話だ。 Linus様は御自ら生成されたコードを読み給い、平生と変わらぬ調子で物事の道理を示された。 Linux-Kernel Archive: Re: Random panic in load_balance() with 3.16-rc From: Linus Torvalds Date: Thu Jul 24 2014 - 14:47:25 EST On Wed, Jul 23, 2014 at 6:43 PM, Michel DÃnzer <michel@xxxxxxxxxxx> wro

    Nao_u
    Nao_u 2014/07/27
    コンパイラのバグとかハードウェアのバグとかそういうのはほんと勘弁してほしい
  • JavaScriptの誕生と終焉

    The Birth & Death of JavaScript — Destroy All Software Talks あの、Watのスピーカーとして有名なGary Bernhardtが、JavaScriptの誕生と終焉についてスピーチしている。 このスピーチは、2040年に行われているという設定である。JavaScriptが10日でやっつけ設計されたというところから始まり、JavaScriptが開発された地は、すでに放射能汚染されているという、2040年からみた歴史的事実を交えつつ、話は続く。 JavaScriptはあまりにも一般化してしまったため、皆JavaScriptで書くようになった。ただし、JavaScriptは遅いので、JavaScriptをネイティブコードにコンパイルしやすいようにする制限的な記法が流行した(整数型でいいところには、0をビット列論理和することにより、整数型で

  • 6年前と今のコンピューターの性能比較

    「タダ飯の時代は終わった」(The free lunch is over.)とHerb Sutterは宣言した。 タダ飯というのは、コンピューターの性能向上にかかる期間があまりに短かった時代を表す言葉だ。一昔前は、コンピューターの性能が倍々に上がっていくので、今、コンピューターの性能が足りないために使えないソフトウェアでも、来年辺りには使えるようになっていたのだ。つまり、プログラマーは苦労せずしてタダ飯をかっらうことができるのだ。どうせ1年か2年待てば、パフォーマンスは問題にならなくなるのだ。今ソフトウェアを最適化する意味がない。 一昔前、我々はタダ飯を享受していた。集積回路の密度が9ヶ月、ないしは1年、そして1.5年で倍になり、回路を駆動させるクロック周波数も倍になっていくのだから、実質、1年ぐらいで、コンピューターの性能は倍になるのだ。すると、2年後には4倍に、3年後には8倍になって

    Nao_u
    Nao_u 2013/11/05
    2006年くらいには、2013年になれば64コアくらい当たり前にあるものだと思ってた。当時最先端の360が3コア6スレッドなのに、次世代ゲーム機ですらまだ8コアしかない
  • DOOM 3 BFGの技術ノート

    Doom3 BFG Documentation Doom 3 BFG Technical Note DOOM 3 BFGとは、2004年に発売された不自由なWindows用の、プログラムだけは自由なゲーム、DOOM 3を、最新のハードウェア用に移植したものである。id SoftwareのJ.M.P. van Waverenによって書かれた、移植のときの技術ノートが、とても興味深い。 まず、DOOM 3 BFGの移植は、結構難しかったらしい。というのも、オリジナルのDOOM 3は、2004年当時のローエンドからミドルエンドのハードウェアで、640x480で20fpsを出せるぐらいだった。これを、2012年のハードウェアで動くWindows、XBox360、PS3で、1280x720で安定して60FPSを出せるようにしなければならない。 DOOM 3は、当時としてはクソ重かった。技術的には野心

  • C++11参考書を公開した後の予定

    の虫: C++11参考書の公開:C++11の文法と機能で宣言したように、C++11の参考書をGitHubで公開した。 GitHub: EzoeRyou/cpp-book GitHubからzipでダウンロード GitHub Pagesでの閲覧:C++11の文法と機能 未完成ではあるし、一部昔のドラフト準拠で、正式な規格に追随できていない箇所もあるが、C++11のコア言語はほぼ解説している。 惜しむらくは、もっと早く、まだ状況が逼迫していない時に公開すべきだったということだ。GitHubに公開してから、修正のpull requestがかなりやってくる。多くは誤字や、単純なタグ間違いだ。そのような問題はあると分かっていたのだが、いちいち調べるよりも、一通り書くことを優先して、この数年間やってきたのだ。 もし、私のレポジトリにpull requestを送るつもりならば、急いでもらいたい。というの

    Nao_u
    Nao_u 2013/10/27
    信念だけでは食っていけない
  • うっかりチューリング完全になっちゃったもの

    Accidentally Turing-Complete ― Andreas Zwinkau 来なら、チューリング完全となるべきではなかったものがある。これは、そのようなうっかりチューリング完全になってしまったものの例である。 C++テンプレート 当初はチューリング完全を目指していなかったが、C++テンプレートはチューリング完全になってしまった。その証明は、この論文にある(PDF) x86 MMU x86のpage fault handlingは、単純なマシンの実装に使える。原理としては、page faultが1 wordをスタックに積み、それによりアンダーフローを起こして別のトラップを生成する。この仕組みは、「減算して0以下ならば分岐」処理を実現する。チューリングマシンを実装するには十分である。デモ動画、講演動画 マジック・ザ・ギャザリング マジック・ザ・ギャザリングはカードゲームであ

    Nao_u
    Nao_u 2013/10/20
    昔作ったエフェクトツールもあともう一押しすればチューリング完全まで行けそうだったんじゃないかと思う
  • DolphinエミュレーターとOpenGLドライバー、栄光と恥

    Official Dolphin Emulator Website - Dolphin Emulator and OpenGL drivers - Hall of Fame/Shame DolphinというGC/Wiiエミュレーターの開発者が、各種プラットフォームにおけるOpenGLの現状について気を吐いている。以下翻訳。 最近、NVIDIAとAMDが、グラフィックドライバーでLinuxをサポートするということが注目を浴びているが、我々は、Dolphinという、WindowsLinuxMacそして最近ではAndroidで動作するGameCubeとWiiのエミュレーターを開発するオープンソースのプロジェクトの経験から、現状を世界に知らせたい。 今年初め、Dolphin 3.5のリリースのあと、Markus Wick (degasus)とRyan Houdek (Sonicadvance1

    DolphinエミュレーターとOpenGLドライバー、栄光と恥
  • 最悪のプログラミング言語、BANCStar

    Following is the email I received from Google for this article. This is so unhelpful to identify the cause. After carefully reviewing the article, I found one URL that was flagged to contain malware(probably usual old domain expired and purchased by other problem) so I removed that link. Please review and re-publish this article. I hope Google's flagging system tells me why it trigger the flagging

    最悪のプログラミング言語、BANCStar
  • 昔の日本語ゲームの伝説的クソ英語翻訳

    Legends of Localization むかし、日ゲーム用制限コンピューター市場を独占していた頃、アメリカの子供たちは日産のゲームの伝説的なクソ翻訳に悩まされていた。"All your base are belong to us"のような伝説的なクソ翻訳は有名だが、そこまでは知られていなくても、やはりひどい翻訳は大量にあるものだ。 さて今、当時のクソ翻訳は、実際には何だったのかという事を、オリジナルの日語版と翻訳版を比較しつつ解説しているWebサイトがある。主にファイナルファンタジーが充実しているようだ。残念ながら、私はファイナルファンタジーはやっていないので、いまいち面白さはわからないが。 Final Fantasy IV: Mist « Legends of Localization たとえば、ファイナルファンタジーIVには、「ミストのどうくつ」というダンジョンがあり、

  • イギリスではランダムなデータを所有しているとムショ送りになる

    In The UK, You Will Go To Jail Not Just For Encryption, But For Astronomical Noise, Too - Falkvinge on Infopolicy イギリスには、Regulation of Investigatory Powers Act 2000という法律がある。これは、暗号文の容疑がかけられたものを復号化する鍵を提供できない場合、懲役刑が課せられるというものである。懲役年数は、テロと児童ポルノ容疑の場合5年、それ以外の場合2年である。 これ自体、非常に邪悪な法律である。ほとんどの国では、自己に不利益な事は話さなくてもよいとされている。しかし、これは暗号に対する復号鍵を自白しない場合懲役刑である。 しかし、もっと危険なことには、現代の高度な暗号文とランダムなデータは見分けがつかないという事だ。たとえば、たまた

  • 発想の不思議

    GCCは最近、エラーメッセージの改良に勤めている。これは明らかに、Clangに影響されたものである。 ひとつ不思議なのは、なぜGCCがいままで、エラーメッセージを改良しようと思わなかったのかということだ。プログラマーはエラーメッセージを頻繁に読まなければならない人種である。したがって、エラーメッセージの読みやすさは重要である。GCCの開発者とてプログラマーである以上、しかもコンパイラーの開発者である以上、コンパイラーのエラーや警告のメッセージは、多くの場合、無視してはいけないものであることを誰よりも理解しているはずだ。なぜエラーメッセージを改良する動きがなかったのか。 GCCにエラーメッセージを改良する技術力や労力がなかったわけではあるまい。現に、Clangが頭角を表してからは、すぐさま、追いかけるようにエラーメッセージを改良していった。これは不思議だ。GCCの開発者にエラーメッセージを改

    Nao_u
    Nao_u 2012/07/12
    「GCCの開発者にエラーメッセージを改良するという発想がなかったはずがない。しかし、実際に動くものとして見せられるまで、その発想を実装するのは、技術力や労力以外の点で、難しいものなのだろうか」
  • C++11の時間ライブラリは美しさを追求したあまり、かえって使いにくくなっているのではないか

    C++11の時間関係のライブラリは、非常に美しい設計をしている。 まず、経過時間そのものを表すdurationがある。Cライブラリでいえば、time_tの値の単位を指定するクラスだ。Cライブラリでは、time_tの値は秒であったが、C++では、単位を指定できるのだ。 durationでは、単位ライブラリであるratioを使って、秒、ミリ秒、マイクロ秒などといった時間単位を表現している。 秒 std::chorno::seconds ミリ秒 std::chrono::milliseconds ナノ秒 std::chrono::nanoseconds 時 std::chrono::hours それ以外の、独自の刻みがほしいとしても、簡単に作成できる。 4分33秒 using four_minutes_thirty_three_seconds = std::chrono::duration< l

    Nao_u
    Nao_u 2012/05/24
  • 1994年のバルバドス対グレナダ戦では、オウンゴールを意図的に行い、また相手のオウンゴールを阻止する戦法が行われた

    1994年のバルバドス対グレナダ戦では、オウンゴールを意図的に行い、また相手のオウンゴールを阻止する戦法が行われた Barbados vs. Grenada in '94: The Most Bizarre Match Ever | Bleacher Report サッカーにおける、基的な勝利の方法とは、ポストの間にボールを蹴り入れることである。ポストとは、もちろん相手側のポストである。このことに最も長けているチームが、試合に勝利するのだ。 ほとんどの場合、これは事実である。しかし、1994年の悪名高いバルバドス対グレナダ戦では、この論理が逆転してしまった。 カリビアンカップのトーナメントの最終グループの試合において、バルバドスが決勝戦に進むためには、グレナダに二点差で勝利する必要があった。90分間の試合の結果が引き分けである場合、延長戦に持ち込まれるが、問題は、バルバドスは二点差で勝利

  • bsnesがついに完成したそうだ

    byuu's homepage SNES Coprocessors — The Future Has Arrived via: Bsnes has emulated every SNES DSP | Hacker News bsnesというオープンソースのスーパーファミコンのエミュレーターがある。このエミュレーターは、スーパーファミコンを極限まで正確にエミュレートする目的で開発されていた。正確というのは、ソフトごとのハックなしに、実機とサイクル一致で、すべての商用ソフトを実行するということだ。このたび、bsnesはすべての商用ソフトをサポートした。最後に残っていたプロセッサーは、1995年に発売された、「早指し二段 森田将棋2」で使われていたST018である。 これで、百年、千年後の未来の歴史家は、ゲーム歴史について学ぶ時、すべてのスーファミのゲームを正確に再現して研究することができるよ

  • ハードウェアの信用

    The Invisible Things Lab's blog: Trusting Hardware 少々古いが、面白かったので紹介する。 なるほど、君はパラノイアにとりつかれているんだね。自分のマシンでは、LinuxとかGNUとかのオープンソースなソフトウェアしか走らせたくないってわけね。やろうと思えば、全ソースコードを自分の目で検証可能だって安心してるわけか(実際やらないんだろうけどさ)。パラノイア病がもっと進行してきて、オープンソースなBIOSとかにまで手を出し始めちゃった。バカな奴らがWindowsみたいなクローズドソースのシステム使ってるなんて訳がわからないよ。とまあ、こう満足してるわけだよね。 でーも、所詮そこまでなんだよね、君は。だってまだハードウェアを信用しなきゃならないでしょ。ハードウェアベンダーが、ネットワークカードのマイクロコントローラーにバックドアを仕込んでないこと

  • C++11ですみやかにプログラムの実行を終了する方法

    結論:C++11で新しく追加されたstd::quick_exitを使え。 プログラムの終了は、すみやかに行われるべきである。なにしろ、終了なのだ。終了にもたついていてはストレスがたまる。とくに、多くの実行環境では、プログラムの外部から、プログラムを強制終了させる方法がある。強制終了は大抵、プログラムの意志を無視して、強制的に一瞬で行われる。外部からできるのであれば、内部からできてしかるべきである。 なぜプログラムは終了時にもたつくのか。それは、終了時に特別な処理を必要とする場合もあろう。たとえば、数GBものデータを遅いHDDに書きださねばならない場合もあるだろう。これは妥当な理由である。では、確保したメモリやその他のリソースの解放処理はどうか。これは、疑問である。というのも、多くの近代的なOSでは、プログラムは個々に独立している。プログラムには独自の仮想メモリ空間が与えられ、必要に応じて物

    Nao_u
    Nao_u 2012/01/15
  • 寿命と所得の視覚化

    江添亮 自由ソフトウェア主義者 C++ Evangelist C++標準化委員会の委員 ドワンゴ社員 C++11を執筆した。 株式会社ドワンゴで働いている。 Mail:boostcpp@gmail.com Twitter:@EzoeRyou GitHub: https://github.com/EzoeRyou 江添亮のマストドン@EzoeRyou 筆者にブログのネタを提供するために、品物をアマゾンお気に入りリスト経由で送りたい場合: Amazon.co.jp: 江添亮: 江添のほしい物リスト 筆者にブログのネタを提供するために、直接に品物を送りたい場合、住所をメールで質問してください。 View my complete profile ► 2020 (31) ► December (2) ► November (2) ► September (2) ► August (4) ► Jul

    寿命と所得の視覚化
    Nao_u
    Nao_u 2010/12/01
    とてもわかりやすい
  • Google IMEは不思議すぎる

    江添亮 自由ソフトウェア主義者 C++ Evangelist C++標準化委員会の委員 ドワンゴ社員 C++11を執筆した。 株式会社ドワンゴで働いている。 Mail:boostcpp@gmail.com Twitter:@EzoeRyou GitHub: https://github.com/EzoeRyou 江添亮のマストドン@EzoeRyou 筆者にブログのネタを提供するために、品物をアマゾンお気に入りリスト経由で送りたい場合: Amazon.co.jp: 江添亮: 江添のほしい物リスト 筆者にブログのネタを提供するために、直接に品物を送りたい場合、住所をメールで質問してください。 View my complete profile ► 2020 (31) ► December (2) ► November (2) ► September (2) ► August (4) ► Jul

  • 本の虫: 多くのプログラマは言語を表面的な理解だけで使っている

    一般のプログラマの多くは、プログラミング言語というものを、ごく浅い表面的な理解だけで使っている。これは、いわゆる「入門書」によるところが大きい。入門書は、言語をできるだけパターンで教えようとする。かくかくしかじかの場合には、とらとらうまうまのように書いておけばいい、などといった具合だ。 たとえば、配列の全要素や、aggregateの全メンバーをゼロで初期化したいとする。多くのC++プログラマは、以下のように書く事であろう。 int a[100] = {0} ; このコードは、正しく動く。配列aの要素は、すべてゼロで初期化される。しかし、C++という言語を考えた場合、{0}と書く必要はない。空の{}で十分なのである。 int a[100] = {} ; では何故、多くのC++プログラマは{0}と書くのか。それは、多くの参考書が、そのように書いているからに過ぎない。大多数のC++プログラマは、