タグ

c++に関するmooonymannのブックマーク (32)

  • コンパイル中にコンパイルする「コンパイル時Cコンパイラ」をつくった話 - kw-udonの日記

    僕は先日、「コンパイル時Cコンパイラ」なるプログラムをつくって、公開した。 「コンパイル時Cコンパイラ」とは、コンパイルするとC言語プログラムのコンパイルが行われるというようなC++プログラムである。 C++のコンパイル中に C言語プログラムのコンパイルを行う、 "コンパイル時Cコンパイラ"をつくりました #ELVMhttps://t.co/kKiLU3rLFX— うどん (@kw_udon_) 2016年11月18日 自分で書いておいてなんだが、「なんのこっちゃ」という感じではある。(ちゃんと記事中で説明する。) 実際、変なプログラムではあるのだが、とても嬉しいことに多くの人に面白がっていただき、予想だにしなかった大きな反響をいただいた。 Hacker Newsで1位になったり、LLVMの公式ブログで紹介されたり、果てはC++の作者であるBjarne Stroustrupにも言及されるに

    コンパイル中にコンパイルする「コンパイル時Cコンパイラ」をつくった話 - kw-udonの日記
  • Bjarne Stroustrupのプログラミング入門書の査読の感想

    C++の設計者ストラウストラップによるプログラミング入門書の最新版日語訳が、9月に @asciidwango から出版されます。 https://t.co/ssT9ubfXtT — アスキードワンゴ編集部 (@asciidwango) August 5, 2016 アスキードワンゴ編集部からBjarne StroustrupのProgramming -- Principles and Practice Using C++というの第二版の邦訳が出版される。初版は翔泳社が出していたが、C++14に対応した改訂版の第二版の版権が空いていたので、アスキードワンゴから出すための作業をしていた。私は邦訳の査読をした。 今年になってから半年は、ずっとこのの査読をしていた。このためにC++標準化委員会の最新の文書を把握する作業が数ヶ月ほど滞った。そして、この仕事は、私がドワンゴに入社して以来、最悪の

    Bjarne Stroustrupのプログラミング入門書の査読の感想
  • Sublime Textの「あいまい一致」をリバースエンジニアリング | POSTD

    Sublime Text は、私のお気に入りのプログラミング用テキストエディタです。 Sublime Textで気に入っている特徴の1つは、あいまい検索アルゴリズムです。ファイルや関数の検索が超高速なのです。これまで多くの人が、インターネット上で、この仕組みについて質問していましたが、満足の行く回答はありませんでした。そこで、私が自らこれを解明することにしました。 全部読むのが面倒な方へ 文を読まずに最終結果だけ知りたいですか? 了解! 私は、あなたを責めたりしませんよ。 インタラクティブなデモ: こちらをクリック ソースコード: C++JavaScript Sublime Textの仕組み Sublime Textのあいまい一致とは何でしょうか。そして、なぜそれはそんなに賢いのでしょうか。聞いてくれてうれしいです。 Sublime Textには、2つの非常に便利なナビゲーション関

    Sublime Textの「あいまい一致」をリバースエンジニアリング | POSTD
  • C++11のスレッド、アフィニティ、ハイパースレッディング | POSTD

    背景と導入 何十年もの間、CやC++の標準規格は、マルチスレッディングや並行処理を「その標準の範囲を超えたもの」として扱ってきました。標準規格の目的である”抽象機械”の力が及ばない、”対象依存”という影の世界においてです。メーリングリストやニュースグループの質問には並行処理に関するものが山ほど寄せられましたが、それらにすぐに突き返された回答は「C++はスレッドには関知しません」という何とも冷淡なものでした。この件によって当時のことを思い出す人々は、今後も絶えないでしょう。 しかしC++11の登場で、そんな状況に終止符が打たれたのです。C++標準化委員会は、時代の流れに乗らないと、この先C言語が取り残されてしまうと悟ったのでしょう。彼らはスレッドや同期メカニズム、アトミック操作、メモリモデルなどの存在に、ようやく気付いたわけです。そして標準規格として、C++コンパイラやライブラリのベンダーに

    C++11のスレッド、アフィニティ、ハイパースレッディング | POSTD
  • とても賢いコンパイラーの逆襲

    The Hacks of Life: The Dangers of Super Smart Compilers Clangの最適化が未定義の挙動を検出してコード片を消し去ってしまったことに引っかかった開発者の嘆き。 今日初めて、RenderFarmのDSF render(global scenaryを作成するのに使っている内部ツール)をClangで最適化コンパイルして実行した。 結果はsegfaultだった。これは驚きだ(そして自身消失だ)。というのも、最適化していないデバッグビルドは問題なく動くし、GCCでコンパイルされた最適化ビルドも正しく動く。-O0ではバグがない(つまり#if DEVコードのバグではない)ので、「最適化は何をやっているんだ」の時間だ。 大量のprintfと試行錯誤の結果、最適化は以下のようなコード片を丸ごとすっ飛ばしていることが判明した。 for(vector<me

  • Emacs for C++ - Qiita

    Intro Emacs Advent Calendar 2015の第3日目の記事です。 皆さんはC++でコーディングするとき何のエディタでコーディングしていますか?Emacs Advent Calendarで愚問でしたね。答えはもちろんEmacsかと思います。Emacsが最高のエディタであることに疑問の余地はないのですが、ことC++のコーディング環境となるとVisual Studio/Eclipse/ClionなどのIDE系と比較してコードの追跡や補完・デバッグの環境で1歩遅れているのかもと感じずにはいられません。もちろん私がEmacsのポテンシャルを活かしきれてないのもありますが。。。 この記事ではLinuxでIDE系との差を埋めるためのC++開発環境を紹介したいと思います。 Tools Emacs C++開発環境では以下のツールを使用します。 LibClang CMake RTags

    Emacs for C++ - Qiita
  • C2C++11Level1

    特にC言語をマスターした方は、C言語で満足してしまいC++11の便利機能を使わない方が多い。 私も半年前まではそうでした。 しかし、C++11を少し触っていくと、C言語にはない 安全なコードを書くことが出来ます しかも、C言語と比べほとんどオーバーヘッドがないのが素敵 主にCゲンガーを対象に、更に安全で開発効率が良くなる 新機能のTipsを 実際にC++を使っている技術者視点でシリーズ化しようとおもいます みなさんのツッコミ よろしくお願いします。Read less

    C2C++11Level1
  • JNIサンプル集

    JNIEXPORT void JNICALL naHoge( JNIEnv* env, jobject obj){ jclass clsj = env->GetObjectClass(obj); jmethodID func = env->GetMethodID(clsj, "hoge", "()V"); env->CallVoidMethod(obj, func); } JNIEXPORT void JNICALL naHoge( JNIEnv* env, jobject obj){ jclass clsj = env->GetObjectClass(obj); jmethodID func = env->GetMethodID(clsj, "hoge", "(II)I"); int retval = env->CallIntMethod(obj, func, 1, 2 ); } C側か

  • C++ マルチスレッド 入門

    エラーハンドリングとはどうあるべきかについての考察。 Boost.勉強会 #3 関西 ( http://kokucheese.com/event/index/4335/ )にて発表。

    C++ マルチスレッド 入門
  • Argument Dependent Lookup | 闇夜のC++

    C++言語の持つオシャレな機構の一つにADL(Argument Dependent Lookup)というものがあります。 和訳すると「実引数依存の名前検索」となり、読んで字の如く、「実引数」に依存した「名前検索」となります。なるほどわからん。 ADLの挙動 コードを見ながら順を追って理解してみましょう。

  • 前置インクリメント vs 後置インクリメント | 闇夜のC++

    後置インクリメントにはひと目で遅くなりそうな処理が見て取れますね。 前置インクリメントがインクリメント処理後、単純に自身の参照を返すのに対し、後置インクリメントではインクリメント前に一時オブジェクトの生成、そしてインクリメント後にはその前に生成した一時オブジェクトを値で返しています。 前置と後置では、単純にオブジェクトをコピーして返す分、普通に考えたら後置の方が遅いよね。というのが従来の認識でした。 「C++ Coding Standards -101のルール、ガイドライン、ベストプラクティス」の中でも、特に後置インクリメントの必然性が無い時は迷わず前置インクリメントを使うことが推奨されてきました。 元の値を必要としないときは前置形式の演算子を使おう __C++ Coding Standards (p50) 新たな主張 「ゲームエンジン・アーキテクチャ第二版」の中の一節を紹介します。 しか

  • unique_ptr はクラスの正確なサイズを知らないといけない? - Qiita

    最近悩んでいること。 ちょっと古いですが、C++11時代におけるクラスの書き方 と言う記事があって、ふむふむなるほど、と思うわけですが、困ってしまうことがあります。 A と言うクラスと、APrivate と言うクラスがあって、Aは外部に公開するクラスで、APrivateは外部に公開したくない、Aのみが使うクラスです。 昔の書き方 #ifndef __A_H #define __A_H class APrivate; class A { public: A(); virtual ~A(); int func(); private: APrivate *d; }; #endif // __A_H #include "a.h" class APrivate { public: int someData; }; A::A() : d(new APrivate) { d->someData = 5;

    unique_ptr はクラスの正確なサイズを知らないといけない? - Qiita
  • Big Sky :: ruby と C++ と golang で gRPC のベンチマークを取ってみた。

    « Protocol Buffers を利用した RPCgRPCgolang から試してみた。 | Main | Vim 上のファイラを NERDTree から dirvish に乗り換えた。 » 先日、Google が開発しているリモートプロシージャコール、gRPCgolang から使うチュートリアルを書きましたが Big Sky :: Protocol Buffers を利用した RPCgRPCgolang から試してみた。 http://mattn.kaoriya.net/software/lang/go/20150227144125.htm 今日は rubyC++ から触ってみたいと思います。はじめに ruby の方ですが、Ruby 2.2.0 でビルドする事が出来ません。どうしても Ruby 2.2.0 から試したい人は、以下の PR にあるパッチを適

    Big Sky :: ruby と C++ と golang で gRPC のベンチマークを取ってみた。
  • C++11メモ @ charやintより移植に強いint8_t, int32_tなどのbit数指定整数を使う - ラーメンは味噌汁

    2013-09-18 C++11メモ @ charやintより移植に強いint8_t, int32_tなどのbit数指定整数を使う C++11 bit数指定整数とは charやintなどの整数値のbit数は厳密に定義されていませんでした。・charのbit数は処理系依存 ・整数型のbit数は処理系依存、ただしshort ≦ int ≦ longを満たす更に恐ろしい事に ・charが符号付きか符号無しかは処理系依存定義としてはこの程度のものです。これではとても移植性の高いプログラムは書けません。 よくC言語の入門書に載っている例 こんな表をよく見かけます。 型 bit数 最小値 最大値 char 8bit -128 127 short 16bit -32768 32767 int 32bit -2147483648 2147483647 long 32bit -2147483648 21

    C++11メモ @ charやintより移植に強いint8_t, int32_tなどのbit数指定整数を使う - ラーメンは味噌汁
  • AndroidのC/C++ネイティブアプリケーション開発を支援するGoogleの新ツール

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    AndroidのC/C++ネイティブアプリケーション開発を支援するGoogleの新ツール
  • メモリモデル?なにそれ?おいしいの? - yohhoyの日記(別館)

    この記事はC++ Advent Calendar 2014の21日目にエントリしています。 内容はC++メモリモデルと逐次一貫性についての概説記事となっています。 flickr / nomadic_lass もくじ 忙しい人のための「C++メモリモデル」 C++メモリモデル一問一答 ソフトウェアからみた「C++メモリモデル」 “メモリ”という共有リソース C++ソースコードが実行されるまで メモリの一貫性と整合性 逐次一貫性モデル is Easy ハードウェアからみた「C++メモリモデル」 ハードウェア・メモリ一貫性モデル C++コンパイラの責任と自由 強いメモリモデル vs. 弱いメモリモデル 逐次一貫性モデル is Hard (文のみ約9600字) まえがき When your hammer is C++, everything begins to look like a thumb

    メモリモデル?なにそれ?おいしいの? - yohhoyの日記(別館)
  • ゲーム開発者のための C++11/C++14

    constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだGenya Murakami

    ゲーム開発者のための C++11/C++14
  • cocos2d-x 3.0 + C++11で始めるゲーム開発超入門

    cocos2d-xの簡単な紹介と、cocos2d-x 3.0のalpha版でどのように変わったかを紹介します。

    cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
  • Wandboxを支える技術

    Wandbox とは 普通の C++ 使いは日常的に仕様書を読んでいる その際、実際にコンパイラを動かして試したくなる場合がある 例: 「ISO/IEC 14882:2011 における 3.4.2/2 が結果がどうなるのかよく分からないな」 「現行の gcc/clang でどういう動作をするのか試してみたい」 普通の C++ 使いは日常的に paper を読んでいる その際、実際にコンパイラを動かして試したくなる場合がある 例: 「N3648 が gcc で実装されたのか」 「最新の gcc でどういう動作をするのか試したい」 普通の C++ 使いは日常的にコンパイラのバグを報告している その際、実際にコンパイラを動かして試したくなる場合がある 例: 「std::negative_binomial_distribution がコンパイルエラーになるバグって直ったんだっけ?」 「最新の gc

  • C++のカレンダー | Advent Calendar 2014 - Qiita

    Advent Calendarって何? 12月1日からクリスマスまでの間、日めくりカレンダーのようにわくわくしながら過ごすために、毎日交代で技術エントリを書いていく企画です! どんな内容を書けばいいの? C++に関連する内容ならなんでもかまいません! 最新のC++の話やC++歴史C++で書かれたライブラリやアプリケーションの話など自由に書きましょう! どこに書けばいいの? Qiitaに記事を作成してもいいですし、gistや自分のブログなどどこでも問題ありません。

    C++のカレンダー | Advent Calendar 2014 - Qiita