タグ

c++に関するttakezawaのブックマーク (104)

  • 江添亮のC++入門

    書はプログラミングの経験はあるがC++は知らない読者を対象にしたC++を学ぶためのである。書はすでに学んだことのみを使って次の知識を説明する手法で書かれた。C++コンパイラーをC++で書く場合、C++コンパイラーのソースコードをコンパイルする最初のC++コンパイラーをどうするかというブートストラップ問題がある。書はいわばC++における知識のブートストラップを目指しただ。これにより読者はを先頭から読んでいけば、まだ学んでいない概念が突如として無説明のまま使われて混乱することなく読み進むことができるだろう。 C++知識のブートストラップを意識した入門書の執筆はなかなかに難しかった。ある機能Xを教えたいが、そのためには機能Yを知っていなければならず、機能Yを理解するためには機能Zの理解が必要といった具合に、C++の機能の依存関係の解決をしなければならなかったからだ。著者自身も苦し

  • Compiler Explorer

    Add new...Clone CompilerExecutor From ThisOptimizationStack UsagePreprocessorASTLLVM IROpt PipelineDeviceRust MIRRust HIRRust Macro ExpansionGHC CoreGHC STGGHC CmmGCC Tree/RTLGNAT Debug TreeGNAT Debug Expanded CodeControl Flow Graph

    Compiler Explorer
  • cgoでGolangとC++ライブラリをリンクするとき、何が起きているのか

    関東も秋が深まり、「紅葉を見にいこうよう」と言ってスベるシーズンがやってきました。みなさんいかがお過ごしでしょうか、れもんです。 さて、自社サイトでGoやるよって発表したので最近はずっとGoを書いているのですが、ついに難題がやってきました。C++で書かれたライブラリをGoで使うというやつです。今日は、GoからC++のライブラリを使おうとするときに何が起きているのかという話と、それゆえにこのオプションを指定するとドツボにはまるのでやめた方がいいよという話です。 GoからC++を使うときの基的な考え方はRubyとかPerlC++のライブラリを使うときと同じです。なので、いつものセオリーでやってみることにしました。まぁC++なら素直にSWIG使えよって話もあるんですが、何事も最初は挑戦だってことで手で書きます。 そのいつものセオリーとは何かというと、C++のライブラリをCインタフェースで使え

    cgoでGolangとC++ライブラリをリンクするとき、何が起きているのか
  • abseil / abseil.io

    Compatibility with the C++ Standard Google has developed many abstractions that either match or closely match features incorporated into C++14, C++17, and beyond. Using the Abseil versions of these abstractions allows you to access these features now, even if your code is not yet ready for life in a post C++11 world.

  • Old New Thing: 未定義動作はタイムトラベルを引き起こす(他にもいろいろあるけど、タイムトラベルが一番ぶっ飛んでる)

    Old New Thing: 未定義動作はタイムトラベルを引き起こす(他にもいろいろあるけど、タイムトラベルが一番ぶっ飛んでる) Undefined behavior can result in time travel (among other things, but time travel is the funkiest) - The Old New Thing - Site Home - MSDN Blogs 久しぶりに紹介するRaymond Chenのブログ記事。 C言語とC++では、様々な部分が、ドラゴンの住まう地というレッテルを貼られている。いや、正式には、未定義動作とされている。 未定義動作が発動した場合、何でもありだ。例えば、変数は同時にtrueでもfalseでもありえる。John Regehrは興味深い例のリストをまとめて、未定義動作コンテストの受賞者もある。 以下の関数を

  • 植山 類

    仕事を説明するときに「Google仕事をしているけどオープンソースなのでGoogleのプロダクトを作っているわけではないし、むしろアップルとかソニーの人と一緒に仕事している」というと、???という反応になることが多いので、こういう仕事をしているんだよということをちょっと説明してみます。...

    植山 類
  • スクールガールストライカーズの 内製クライアントエンジン

    近年、ハイスペックなスマートフォン、高品質なネットワークが普及し、それによりモバイルゲームの制作手法やそれを取り巻く環境も変化してきました。スクウェア・エニックスでは、そのような環境の変化に対して、日々新たなチャレンジをし続けています。そして、このようなスピード感溢れる業界の流れには、会社の枠を超えた技術情報の共有、交流が欠かせないと感じております。 そこでこの夏、社内のエンジニア・テクニカルディレクターによる最新のモバイル開発の技術情報や社内モバイルエンジン、開発秘話によるセッションをメインに、スクウェア・エニックス モバイル オープンカンファレンスを開催する運びとなりました。また、セッションの後は登壇する弊社スタッフと直接ディスカッションやフリートークができる場を設けております。この機会にスクウェア・エニックスという会社についても、より詳しく知って頂ければ幸いです。 マネージャー・テク

  • 本当に怖いC++erとC++という糞言語 - 神様なんて信じない僕らのために

    かつて、ゲームプログラミングはアセンブリが主流で、8bitCPUは掛け算や割り算すらないものでした。割り算がないCPUっていつの時代だよ、っていう人たちもおりますが、ゲームボーイアドバンスに搭載されているARM7TDMIは除算の命令を持っていません。(故に除算を書くと死ぬほど遅いので、乗算で代用したりする) また、浮動小数に対する演算ユニットを持っていないハードウェアもあります。ニンテンドーDSに搭載されているARM946E-Sですら、浮動小数演算ユニットはありません。(CPUの機能としてはオプションで存在する)そのために固定小数点といった技術もあるわけですが、古くさい話です。 これらはCとC++の機能を駆使していかにパフォーマンスを出すかを余儀なくされた時代です。 さておき、最近はスマートフォンでのゲーム開発も進化しており、C++iPhoneAndroidの両方で動くということもあ

    本当に怖いC++erとC++という糞言語 - 神様なんて信じない僕らのために
  • モダン C++ プログラミング - 日本語公開記事 - Confluence

    このドキュメントはサイボウズ社内のトレーニング用に作成したものです。 作成時点では C++11 はまだあまり利用できない状況でしたので、C++98 ベースの記述になっています。 いずれ更新を予定しています。 モダンの定義モダンとはテンプレートメタプログラミング(TMP)を駆使することです。嘘です。 宗教論争に意味はないので、ここでは 「最近の C++ の仕様・機能を理解し、C より実装効率が良く不具合の少ない」 プログラミング技法を「モダン C++ プログラミング」と定義します。 つまり、不具合が少なく、かつ C にはもう戻れなくなるような効率の良さを達成するものです。 学習効率(ROI)が極めて良くないような技法(例えば TMP)は、この定義では除外されます。 勉強方法お勧めの順序は以下。決して全部を読もうとしないこと。 C++ Language Tutorial のような、あっさりした

  • Facebook、Key-Valueストア「RocksDB」をオープンソース化

    Facebook、Key-Valueストア「RocksDB」をオープンソース化:C++ライブラリとして構築 米Facebookは、同社内で高速ストレージ用に開発・使用してきた組み込み式の永続型Key-Valueストア「RocksDB」をオープンソースで公開したと発表した。 米Facebookは2013年11月22日、同社内で高速ストレージ用に開発・使用してきた組み込み式の永続型Key-Valueストア「RocksDB」をオープンソースで公開したと発表した。 Facebookによると、これまでのアプリケーションでは、ネットワークを介したリモートプロシージャコールによって各アプリケーションが管理しているデータにアクセスするのが一般的だった。しかし12億人のユーザーごとにリアルタイムで動的なページを生成しているFacebookのようなアプリケーションの場合、それでは時間が掛かり過ぎるという難点が

    Facebook、Key-Valueストア「RocksDB」をオープンソース化
  • マルチコア時代のLock-free入門

    Please select the category that most closely reflects your concern about the presentation, so that we can review it and determine whether it violates our Terms of Use or isn't appropriate for all viewers.

  • C++11の文法と機能(執筆 江添亮)

    江添亮氏が公開されている「C++11の文法と機能」(GitHub)を PDF 化したものです(関連記事)。 「C++11の文法と機能」(PDF形式、3.7MB) ※注意 この PDF ファイルは、フリーで公開されている xthml ファイルを単純に PDF に変換したものです。 Gumload で購入できるバージョンではありません。 文中の見出しから文へのハイパーリンクなどは、すべて削除されています。 元のファイル同様、GFDL で公開されます。

  • GitHub - google/styleguide: Style guides for Google-originated open-source projects

    Every major open-source project has its own style guide: a set of conventions (sometimes arbitrary) about how to write code for that project. It is much easier to understand a large codebase when all the code in it is in a consistent style. “Style” covers a lot of ground, from “use camelCase for variable names” to “never use global variables” to “never use exceptions.” This project (google/stylegu

    GitHub - google/styleguide: Style guides for Google-originated open-source projects
  • 現在進行中の処理と未来の値を指し示すfuture/promise/deferred - DebugIto's diary

    Future::Qモジュールを書いた時に他のfuture実装についてもいくつか調べたのでメモ。 futureは(バックグラウンドで)現在進行中の処理と、それが終わったあかつきに得られるであろう結果の値を指し示す(というか保持する)オブジェクト。 http://en.wikipedia.org/wiki/Futures_and_promises 言語によってfutureとかpromiseとかdeferredとか呼ばれるけど、コンセプトとしてはどれも同じようなものなのだと思う。ここでは総称して"future"という言葉を使うことにする。 futureの使い方には主に次の2種類がある。 ブロッキングスタイル futureから値を取り出すAPIが存在する(get()メソッドなど)。処理が進行中で値が未確定の場合、処理が終わるまでブロックする。 ノンブロッキングスタイル futureにコールバック関

    現在進行中の処理と未来の値を指し示すfuture/promise/deferred - DebugIto's diary
    ttakezawa
    ttakezawa 2013/08/08
    std::future jQuery.Deferred jsDeferred em-promise Q ...
  • Linux共有ライブラリの簡単なまとめ - wagavulinの日記

    Linuxで共有ライブラリ(*.so)を作るようになったのでちょっと勉強してみた。今までは使うだけだったので、以下のようなことは知っていた。作るときはgccの-sharedオプションを使う。使うときはgccの"-lライブラリ名"でリンクするライブラリを指定する。リンク時のライブラリ探索パスは-Lオプションで指定する。実行時のライブラリ探索パスは/etc/ld.so.confに書いてあるディレクトリ。環境変数LD_LIBRARY_PATHでも指定可能。ライブラリを作るときは、.cから.oを作るときに-fPICをつけるといいらしい。新しくライブラリを入れたときはldconfigするといいらしい。逆に今まであまり知らなかったこと。ほとんどのライブラリはlibhoge.so, libhoge.so.1, libhoge.so.1.1のように3つくらいのファイルがあり、libhoge.soやlibh

  • ClangがC++11を完全実装! 繰り返す、C++11を完全実装

    [Phoronix] LLVM's Clang Compiler Is Now C++11 Feature Complete C++11 support is now feature-complete. · e6e68b5 · llvm-mirror/clang · GitHub 3時間前のコミットにより、Clangは晴れてC++11規格を完全に実装した。その通り、完全にすべて実装した。 コミットは、Inheriting Constructorsとthread_localの機能を有効にする変更だ。 もちろん、まだ実装にバグは残っているだろうし、規格上のバグもあるので、開発に終わりはない。ただし、今日は記念すべき日である。 static_puts said... そうすると、ますますC++11の重要性が高まってきますね! 「寄付のお願い」の方にも書かせていただいたのですが、書籍の執筆への寄

  • 小人閑居して: 【Emacs】C++の補完にはemacs-clang-complete-asyncを

    2012年9月3日月曜日 【Emacs】C++の補完にはemacs-clang-complete-asyncを いつだったかEmacsでC++の補完のためのElispとしてauto-complete-clangを紹介した。そこに書いた通りauto-complete-clangは直接clang -cc1を叩いているのでclang -cc1でライブラリのパスが通っている必要がある。自分でビルドしたclangでは普通パスが通っていない(というかそちらのほうが正しい挙動のはずなのだけど)ので使い物にならない。 弥縫策として「clangに投げるコマンドにパスを-Iで全部ベタ書きしてね☆」というのが作者からのコメントだったが、めんどくさい。 そんなこんなでちょっと古い(Ubuntuのリポジトリにある)clangを使っていたのが昨日まで。昨晩emacs-clang-complete-asyncという

  • LevelDBを読む人たち

    SKS rep @repeatedly あ,WAL使ってなかった.しかしどうやって非同期になってんだ?普通にmemcpyとかしてるようにしか見えんが… 2011-05-17 03:22:15

    LevelDBを読む人たち
  • Boost.勉強会 #4 で発表してきました - 純粋関数型雑記帳

    Boost.勉強会 #4で発表してきました。ICFP Programming Contest 2010 での Discriminating Hacker's 言語の件から、 C++をDISるというテーマで話す機会を頂いたので、せっかくなので、発表させていただくことにしました。 C++コミュニティーの中心でC++をDISる View more presentations from tanakh C++プログラマ、所謂闇の軍団の集う中でこのような発表をするのは、まさに飛んで火に入る夏の虫というやつで、戦々恐々としていたのですが、思惑とは逆に、全然DISれていないと私がDISられるというような結果となりました。 Haskellerの目線から、C++の気に入らない点を、主に型の話をメインに展開していったのですが、おおよそのC++erにとってはあまり賛否両論とは言えなかったようですね。なんでしょうか

    Boost.勉強会 #4 で発表してきました - 純粋関数型雑記帳
    ttakezawa
    ttakezawa 2011/12/10
    c++のきもいところの概要
  • エラー処理を書いてはいけない - Preferred Networks Research & Development

    昨日セミナーとして USTREAM させていただいた資料を公開いたします。 エラー処理を書いてはいけない USTREAMのビデオ タイトルは釣り気味ですが、内容はいたって真面目なのでご安心ください。 概要 やってはいけないシリーズ、の第三弾としての試みです。 リソース管理をしてはいけない ロック処理を書いてはいけない エラー処理を書いてはいけない ← New! タイトルに反して(あるいはタイトル通りに)、正しく長時間動作するプログラムを書くには きちんとエラー処理を行う必要がありますが、 それを何とか抽象化しようという(Haskell界隈での)試みについてのご紹介でございます。 あまり他の人がこういうことを言っているのを聞いたことが無いので、 自分の日々考えていることを世に問うた形になっております。 実際のところ、社内ではC++がメインに使われておりますので、 こういう手法が用いられている

    エラー処理を書いてはいけない - Preferred Networks Research & Development