C++に関するNao_uのブックマーク (172)

  • EASTL から垣間見るゲームソフトウェア開発現場の現状 その 1

    (2016/02/10 追記: EASTL は長らく EAWebKit の一部としてライセンスが不明瞭なまま公開されていましたが、この日 BSD ライセンスで正式に公開されました https://github.com/electronicarts/EASTL) 若干古いものですが、2007 年に発表された、Electronic Arts によるゲーム開発向けの改良を加えた STL、"EASTL" の仕様。 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html 仕様だけで実装が公開されてないのが非常に残念なのですが、それは別として、何故こんなものが必要なのか、どういう事情でこの機能が盛り込まれたのか、といったゲーム開発現場の事情が細かく解説されていて、とても参考になります。特に、既にある程度 C++ に習熟してい

    EASTL から垣間見るゲームソフトウェア開発現場の現状 その 1
  • Nadec magicreflection 20101009

    1. C++ RTTI Reflection ( ) KH2O (@pigeon6) Saturday, October 9, 2010

    Nadec magicreflection 20101009
    Nao_u
    Nao_u 2010/10/10
  • ニコニココメントサーバーにおけるメモリ使用量増大問題の調査と対策 - ドワンゴ 研究開発ブログ

    はじめに コメントサーバーは、ニコニコ関連サービスのコメントを司るサーバーである。稿は、ニコニコ広場で起こったコメントサーバーメモリ使用量増大問題について、我々コメントサーバー担当が行った調査と対策のまとめである。 今回のメモリ増大問題の解決にあたり、「仮説を立てる + 計測する→修正する→確認する」というパターンを繰り返した。このパターンは、ソフトウェアの様々な問題を調査するのに適用できる、基パターンである。 コメントサーバー概要 コメントサーバーについて簡単に概説する。 コメントサーバーはニコニコ関連サービスのコメントを管理するサーバーである。基的な機能は、新しいコメントの保存、およびコメントの出力である。ニコニコサービスのユーザーがコメントサーバーに直接触れることはなく、ニコニコのプレイヤーがコメントサーバーと直接やりとりを行う。ニコニコ動画の例でいうと、コメントサーバーを使用

  • SIMD - primitive: blog

    職業 C++ プログラマの間では割と常識っぽいけど web 上に日語の情報があんまりない気がする話を初心者向けに解説してみる試み。想定読者はゲーム業界入る前の自分。 今回は SIMD について。 SIMD / SSE SIMD とは "Single Instruction Multiple Data" の略で、文字通り 1 命令で複数のデータを処理することです。これを使うと、例えば 4 要素のベクトル同士の各種演算を 1 命令で行うことができ、高速化を図れます。PC では PentiumIII 以降の CPUSIMD の一種 (SSE) を実装しており、近年の CPU では SSE も色々改良されています。 SSE は各種コンパイラの拡張命令 (intrinsics) を使うことで、C++ から利用することができます。今記事では VisualC++/gcc での SSE の使い方と

    SIMD - primitive: blog
  • C#のvarとtry〜catchが糞すぎる - やねうらおブログ(移転しました)

    C#3.0からはvarと書くと型を明示的に指定しなくても済む。 var hoge = new HogeClass(); しかし例外処理をするためにこれをtry〜catchで囲みたいとする。 try { var hoge = new HogeClass(); hoge.XXX(); } catch { if (hoge!=null) hoge.YYY(); } このプログラムはコンパイルが通らない。catchのなかでは変数hogeにアクセスできない。try節が終わっているため、hogeのスコープが終わってしまうのだ。仕方ないのでhogeを外部のブロックに出す。 var hoge; try { hoge = new HogeClass(); hoge.XXX(); } catch { if (hoge!=null) hoge.YYY(); } しかしこれまたコンパイルが通らない。var hog

    C#のvarとtry〜catchが糞すぎる - やねうらおブログ(移転しました)
    Nao_u
    Nao_u 2010/09/29
  • 本の虫: 多くのプログラマは言語を表面的な理解だけで使っている

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

  • C++は何を間違えたのか - 人生を書き換える者すらいた。

    以前Webで見かけたプログラミングの魔導書というのを買い、ちょこちょこ読み進めて今日終わった。 タイトルはなんかものものしいが、単にC++のマニアックな話題が詰まったである。 新仕様のc++0xの解説もちょっとあるが、いよいよ変態の領域にきている。ムーブコンストラクタなぞとても使いこなせる自信がない。 いま思い返せば、C++はテンプレートの病的な使い方にフォーカスしてきたあたりから風向きがおかしくなってきた気がする。テンプレートはうまくキマれば格好いいのだが、メタプログラミングのレベルまでいくとコンパイルを通すだけでプログラミング体と同等の思考力が必要なのがきつい。 このも変態テンプレートはたくさん出てくるが、テンプレートでどこまでできるかの追求自体が目的化していて末転倒である。まあ読み物としては面白いし、他の言語なら実行時にしか分からないエラーがC++ならコンパイル時に分かる!と

    C++は何を間違えたのか - 人生を書き換える者すらいた。
    Nao_u
    Nao_u 2010/08/14
  • 「C++のクラス作ったら、絶対にデストラクタをvirtual宣言しなさい」に対するエキスパートの意見

    仮に「C++のクラス作ったら、絶対にデストラクタをvirtual宣言しなさい」という指示があった場合に、自分では反論できないことを知ったので後学のために質問しました。 エキスパートの皆様からの、珠玉の回答集です。

    「C++のクラス作ったら、絶対にデストラクタをvirtual宣言しなさい」に対するエキスパートの意見
    Nao_u
    Nao_u 2010/07/28
  • MALLOC

    時事ネタ いや、「今、fj.comp.lang.cが熱い!」という話は ちょっと前から聞き及んではいたのですが、 流量が尋常じゃないらしいので、 忙しさもあって読むのを控えていたんですけど、 先日、大筋を拾い読みしてみました。 確かに熱いですねえ。 いったん収束するかなあ、と思ったら、なんかまた泥沼の気配が(^^; fjを読んでない人のために説明すると(って、 私も普段はあんまり読んでないんですが)、 「malloc()で確保した領域は、必ずfree()で解放しなきゃいけないか?」という 話題でして、「exit()する時には、OSが解放してくれるんだから 別にfree()しなくてもいいじゃん」という主張と、 「いや、malloc()には常に対になるfree()があるべきだ」という主張があって、 議論を呼んでいたのでした。 んで、私がどう思うかなんですが、 私は面倒臭がりなので、free()

    Nao_u
    Nao_u 2010/07/25
  • C++の話(本当にあった怖い話)に反応してみる - Dr_Caligariの日記

    http://d.hatena.ne.jp/Isoparametric/20100712/1278898618 id:Isoparametricさんが面白いスライドを投稿されていたので、思ったことをつらつらと書いてみたいと思います。 思った事を書いているだけなので、C++のdisを反論しているわけではありません。 私が書くのはゲーム業界のプログラマーという狭い世界で生きている人間が思った事なので、一般的なC++と思わないでください。 ディレクトリ構成が機能単位でなくプログラマの名前幽霊 これ実際に見たことあります。 アセンブラを使っていて、プロジェクトの規模が小さかった時代の名残らしいです。 その頃は、この辺りを気をつけなくてもプロジェクトのソース全体が見通せるので、あまり問題にならなかったみたいですね。 私が見たのは15年くらい昔のプロジェクトのソースなんで、さすがに今はこんな事してるプ

    C++の話(本当にあった怖い話)に反応してみる - Dr_Caligariの日記
    Nao_u
    Nao_u 2010/07/16
    ほぼ全面的に同意
  • c++スレより 「クラスの内側で定義したクラステンプレートを特殊化する」 - matsutakegohan1の日記

    何の気なくのぞいてみたら、2chって宝の山なのですね。 過去スレとかにも面白い書き込みがたくさんあり、幾つかがdatに行く前にこうやって張れたらと思います。 91 名前: デフォルトの名無しさん 投稿日: 2007/09/30(日) 20:19:13 クラスの内側で定義したクラステンプレートを特殊化する、 class X { template<typename T> class Y {}; template<> class Y<int> {}; }; のようなコードは、VC++(2003/2005)ではコンパイルできますが、g++3/4では error: explicit specialization in non-namespace scope ‘class X’ というエラー になってしまいます。 YをXの中ではなく、名前空間スコープで template<> class X::Y {}

    c++スレより 「クラスの内側で定義したクラステンプレートを特殊化する」 - matsutakegohan1の日記
    Nao_u
    Nao_u 2010/06/25
  • 状態遷移って何が必要?

    ホーム < ゲームつくろー! < IKD備忘録 何か色々徒然と 状態遷移って何が必要? (2010. 5. 24) 状態遷移…。ゲームはありとあらゆる状態遷移の塊です。ゲームをUpdateとDrawで分けるなら、Updateの殆どは状態遷移の管理です。この状態遷移、ど~も私は苦手意識があるんですよね ぇ…。作り方を知らないというのがどうも…。そこで状態遷移についてあれこれ調べて、そもそもにしてゲームの状態遷移には一体何が必要なのだろうか徒然なるままに考えてみることにしました。当に徒然で適当に思考を巡らせていますので、変なところはご愛嬌です。 ① 元祖状態遷移switch~case…ん~… C言語で状態遷移と言えばswitch~case。誰でも最初に学びます。状態遷移って「もし~になったら~な状態になってね」という物で、switch~caseは「もし~になったら」そのものです。状態遷移にs

    Nao_u
    Nao_u 2010/06/21
    とても面白いんだけど、やや技巧的すぎるように感じてしまうのは考え方が古いせいか。慣れたやり方に固執するのはよくないのかも
  • Linus氏のC++に対する最近の否定的見解 | taro-nishinoの日記 | スラド

    最近、Linus氏はまたしてもReal World TechnologiesのModerated DiscussionsフォーラムでC++に対する否定的見解を投稿したことは皆さんも御存知でしょう。主要な投稿は以下の5つです。 http://www.realworldtech.com/forums/index.cfm?action=detail&id=110563&threadid=110549&roomid=2 http://www.realworldtech.com/forums/index.cfm?action=detail&id=110577&threadid=110549&roomid=2 http://www.realworldtech.com/forums/index.cfm?action=detail&id=110618&threadid=110549&roomid=2 ht

    Nao_u
    Nao_u 2010/06/21
  • C#とCGアプリの相性について - カタチづくり

    etopirika5 さんが下記のように書かれているので、http://www.quatouch.com/products/hisui/index.html を作っている者として、ちょっと反応してみるよ。 C#は業務用の小さなアプリケーションをちょこっと作るには最適だと思うのですが,一年間かなり使ってみた結果CGアプリや数値計算アプリを作るには全く適していないことがはっきり分かりました. http://d.hatena.ne.jp/etopirika5/20100612/1276299740 僕としては「全く適していない」とは思ってないのだけれど、でも etopirika5 さんがそう思われるのもよく理解できる。 氏は研究者。研究者というのはとても厳しい職業だなあと以前から畏敬の念をもって見上げているのだけれど、彼らは「世界一じゃないと存在意義が示せない」人達なのだ。たとえ狭い分野であろう

    C#とCGアプリの相性について - カタチづくり
    Nao_u
    Nao_u 2010/06/18
  • Spaghetti Source - 各種アルゴリズムの C++ による実装

    ACM/ICPC(プログラミングコンテスト)系列の問題を解くことを目標にして,各種アルゴリズムを C++ で実装してみた.極めて意地が悪い類の問題には対応していないし,特定の入力に対して高速に動くということもない.計算量も最良とは限らない. これらを参考にする方への注意とお願い: これらの記述は正確とは限りません.参考文献を参照することを強く推奨します.間違っている場合は是非教えてください. これらのプログラムは間違っているかもしれません.各人で検証することを強く推奨します.バグがあれば是非教えてください. 分類が怪しいので,これはこっちだろう,ということがあればコメントを下さると助かります. 注意! 現在書き換え中 TODO 分類を正しく行う. 全体的に説明と使い方を詳しく. Verify していないものを Verify. ボロノイ図(いつになることやら……) 基 テンプレート グラフ

  • C++0xにおけるPODの定義

    C++0xのPODの定義をまとめてみた。ただし、C++0xでは、memcpyでコピーして、各データメンバーの状態が保証されるためには、、trivially copyable classであればいい。 PODは、trivial classかつstandard-layout classであること。 さらに、非PODな非staticデータメンバーを持たないこと。 trivially copyable class ユーザー定義のコピー、ムーブのコンストラクタと代入演算子がないこと。 デストラクタがtrivialであること。 trivial class trivially copyable classに加えて、コンストラクタもtrivialであること。 trivialであるということは、ユーザー定義ではないことと、delete化(C++0xの新しい機能)されていないこと。 コピー、ムーブコンストラク

    Nao_u
    Nao_u 2010/06/10
  • 「プログラミングの魔導書」の情報公開 - Faith and Brave - C++で遊ぼう

    http://longgate.co.jp/products.html 弊社、株式会社ロングゲートで、プログラミング雑誌を作るというプロジェクトが進行しています。 書創刊の目的は、プログラミングの入門記事が巷に溢れる今、プログラマのさらなる成長のため情報発信を行い、業界全体の技術力を向上させることです。 雑誌といっても、記事の質を保つために不定期刊行としていることから、実際には雑誌ライクな書籍となります。 書籍名は「プログラミングの魔導書〜Programmers' Grimoire〜」です。 創刊号となる今回のテーマは、サブタイトルにも含まれている「C++」です。全ての記事がプログラミング言語C++に関するものとなっています。 Vol.1のテーマをC++としたのは奇をてらったものではありません。 C++は習得の難しい言語と言われておりますが、近年はBoost C++ Librariesに

    「プログラミングの魔導書」の情報公開 - Faith and Brave - C++で遊ぼう
  • BoostのVisual Studio Debugger Visualizers - Faith and Brave - C++で遊ぼう

    Visual Studioには2005からDebugger Visualizersという機能がこっそり入っていて そのおかげでSTLコンテナの状態がデバッグウィンドウで見やすくなっています。 デフォルトでDebugger Visualizersが有効になっているので、 vectorをデバッグしてみると以下のようにデバッグウィンドウに表示されます。 Debugger Visualizersを無効にした場合は以下のように表示されます。 これを見れば、Debugger Visualizersのおかげでどれだけ見やすくなっているかがわかると思います。 なんだかよくわからない値ではなく、要素数と要素がはっきりわかるようになっています。 Debugger Visualizersは、コンパイラに同梱されたライブラリのみに適用されるだけでなく ユーザー定義のライブラリにも適用することができます。 Visu

    BoostのVisual Studio Debugger Visualizers - Faith and Brave - C++で遊ぼう
    Nao_u
    Nao_u 2010/04/02
  • C++プログラマ向けのゲーム

    江添亮 自由ソフトウェア主義者 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/04/02
    「10秒以内に、ソースコード上のエラーを見つけて、該当箇所をクリックすること」最後から2問目だけ、なぜあそこがエラーなのかがわからない
  • static_container: static_container

    English document is under construction. Now, Japanese and English are written together. This library is a STL like containers. These containers never allocate memory dynamicaly. These containers' implementation is just an array. This library targets embedded programming. 概要 : Summary STL コンテナが登場し、利用者が直接面倒なメモリの動的確保をすることなく、各種のコンテナを利用することが可能になった。だが、MMU の存在しないハードウェアに対してのプログラム ( 多くの場合、組み込み系のプログラム ) におい

    Nao_u
    Nao_u 2010/03/21