タグ

c++に関するstarsky5のブックマーク (127)

  • わんくまで発表してきました - Faith and Brave - C++で遊ぼう

    「『ストラウストラップのプログラミング入門』で語られなかったいくつかのこと」 というタイトルで発表してきました。 Bjarne dont speaking View more presentations from Akira Takahashi Bjarne Stroustrupの『ストラウストラップのプログラミング入門』は、プログラミングを学んでいくためのすばらしい書籍ですが、プログラミングの基礎ができたら次は、「プログラミングにはどんな分野があるか」を知り、自分の興味ある分野はなんなのかを確かめることが必要なのではないかと思い、『ストラウストラップのプログラミング入門』の補完的な内容として、プログラミングのいくつかの分野を紹介させていただきました。

    わんくまで発表してきました - Faith and Brave - C++で遊ぼう
  • node.js C/C++ addons 入門 - unknownplace.org

    node.js のドキュメントを見ていたら C/C++ で簡単に拡張が書けそうだったので試してみた。 addons - Node.js Manual & Documentation ドキュメントに載っている hello.cc をみてみると: #include <v8.h> using namespace v8; extern "C" void init (Handle<Object> target) { HandleScope scope; target->Set(String::New("hello"), String::New("world")); } この extern "C" void init (Handle<Object> target) というやつが、jsで require("hello") したときに呼ばれる感じらしい。この関数だけは必ず実装する必要がある。 この中の Ha

  • VIVID Runtime | Acrodea

    「VIVID Runtime®」は、1つのネイティブコードを異なるOS上で実行させるミドルウェアソリューションです。各OS間の差異にとらわれず、複数OS向けのソフトウェア開発とビジネス展開を可能とします。端末メーカーや通信事業者にとっては、OSごとのソフトウェアの作り分けとメンテナンスが不要となり、開発者にとっては、搭載対象端末の裾野が一気に広がります。 当社にて動作確認済み機種 (2010年8月時点) ■VIVID Runtimeのしくみ アプリケーションコードの中でOSに依存する部分を実行開始時に解決し、オーバーヘッドなしに直接コードを実行 ■WORA(Write Once, Run Anywhere)を実現 ■通常のネイティブコードと同じパフォーマンス ■C/C++/Objective Cをサポート ■OSを抽象化する層としてOpenKODEを採用 ■ミドルウェアカスタ

  • Bjarne Stroustrup Interview about C++  C++ はプログラマの給料を上げるためわざと難しく作った

    English only -----Original Message----- Subject: FW: Bjarne Stroustrup Interview about C++ (Joke I hope) Importance: Low On the 1st of January, 1998, Bjarne Stroustrup gave an interview to the IEEE's 'Computer' magazine. Naturally, the editors thought he would be giving a retrospective view of seven years of object-oriented design, using the language he created. By the end of the interview, the in

  • - MYCOM BOOKS - プログラミングコンテストチャレンジブック

    ■内容紹介 現在、プログラミングコンテストは数多く開催されています。Google Code Jam、TopCoder、ACM/ICPCなどの名前を聞いたことがある人も少なくないでしょう。書で扱うのはそれらのような、問題を正確にできるだけ多く解くことを競うプログラミングコンテストです。 プログラミングコンテストは気軽に参加することができます。例えば、Google Code JamやTopCoderはインターネット経由でコンテストが行われるので、Webサイトでの登録を済ませ、決まった時間にコンピュータの前に居れば参加することができます。 しかし、プログラミングコンテストの世界は非常に奥が深く、経験を積んだプログラマーであっても良い成績を残すことは容易ではありません。プログラミングコンテストで勝つには、柔軟な発想力と幅広い知識を用いて問題を解くアルゴリズムを考え、それらを正確に実装しデバッ

  • 2. allocWithZoneをオーバーライドしてシングルトン特性を強制する | My Codex Leicester

  • EffectiveC++入門

    C++プログラマにとって、『Effective C++』はバイブルのような存在です。どれくらいバイブルかというと、皆さんの使っているGNUのGCCコンパイラには、EffectiveC++のコーディングガイドラインに従っているかどうかチェックするためのコンパイラオプション『-Weffc++』が、あるくらいです。 しかし、その内容は決して初心者向きではなく、実際に買ったはいいが、書棚の肥やしになっているような人たちも多いと思います。そこで、そのような初心者の人たちに EffectiveC++ を読み解くために各章のエッセンスをまとめたガイドラインを書いてみました。 C++はもう時代遅れとよく言われますが、組み込み系からビジネスシステムまで、幅広くカバーできる言語は、C++以外にありません。C++を知っていれば、おそらくどのような業界にも通用するでしょう。ITプログラマを自負するのであれば、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++で遊ぼう
  • 【レポート】GCCに匹敵するコンパイラ?! LLVM - BSDCan2008 | エンタープライズ | マイコミジャーナル

    BSDCan2008、およびその直前に開催されたFreeBSD Developer Summitを通じて関係者がもっとも強い関心を持ったのは、もしかするとChris Lattner氏が担当したセッション「BSD licensed C++ compiler - LLVM and Clang: Next Generation Compiler Technology」だったかもしれない。同氏のセッションで初めてLLVM(Low Level Virtual Machine)について知ったという人も少なからずいたようだ。Lattner氏はLLVMのチーフアーキテクトであり、同技術を語るには適切な人物といえる。 モダンテクニックで開発されたマルチ言語コンパイラインフラ LLVMはモダンなテクニックで開発されたコンパイラインフラストラクチャだ。プログラミング言語に依存しないモダンなオプティマイザとコード

  • LLVM - Wikipedia

    LLVM(エルエルヴィーエム、 またはエルエルブイエム)とは、コンパイル時、リンク時、実行時などあらゆる時点でプログラムを最適化するよう設計された、任意のプログラミング言語に対応可能なコンパイラ基盤である。当初は、LLVMの名称の由来は、Low Level Virtual Machine (低水準仮想機械) の略であるとしていたが[3]、現在は、何の頭文字でもないとしている[4]。 概要[編集] LLVMは、プラットフォームに依存しない中間表現であるLLVM-IRを生成し、LLVM-IRを特定のマシンの機械語などに変換する。LLVM-IRの段階で、言語やプラットフォームとは独立した最適化を行う。この方法によってLLVMは言語からもアーキテクチャからも独立しており、それぞれに特化した、プログラミング言語固有のモジュールと、マシン向けコード生成部を用意することにより様々な言語アーキテクチャーに

  • C++の4つのキャストを使いこなす

    イントロダクション C++ には全部で4種類のキャストがあります。これらの使い方をしっかり確認しておこうというのが今回の主旨です。いきなり題に入ってもいいのですが、まずは C 言語のキャストをおさらいしてみましょう。 (type-name) cast-expression C のキャストにはこの1つの形式しかありません。ややこしいですね。1つしかないのに何がややこしいかって?見た目は1つの形式しかないのに実際の動作は何通りもあるのがややこしいんです。ざっと考えただけでも次の3つの使い方が思い浮かびました。 float average(const int* array, int size); int n = (int) average(array, size); void * get_data(int nID); char * p = (char *) get_data(2); int g

  • 動的削除子 (dynamic deleter) - 意外と知られていない? boost::shared_ptr の側面 - Cry’s Diary

    boost::shared_ptr は動的削除子 (dynamic deleter) と呼ばれる技法に基づいて実装されています.この動的削除子という技法で重要なのは, boost::shared_ptr が最終的に呼び出す解放処理が boost::shared_ptr のテンプレート引数の型に関係なく,コンストラクタに実際に渡されたポインタの型で,かつ boost::shared_ptr のコンストラクタの呼び出しの段階で 決定する,ということです. 以下のようなコードが,動的削除子の効果が一番分かりやすい例になるでしょう. class X{ public: ~X() { std::cout << "X::~X" << std::endl; } }; class B{ public: ~B() // virtual でないことに注意!! { std::cout << "B::~B" <<

    動的削除子 (dynamic deleter) - 意外と知られていない? boost::shared_ptr の側面 - Cry’s Diary
  • RAII - Wikipedia

    RAII(Resource Acquisition Is Initialization)は、日語では「リソース取得は初期化である」「リソースの確保は初期化時に」「リソースの取得と初期化」などの意味を持ち、資源(リソース)の確保と解放を、クラス型の変数の初期化と破棄処理に結び付けるというプログラミングのテクニックである。特にC++とD言語で一般的であり、デストラクタをサポートしないC言語などに対する優位性や利便性のうちのひとつとなっている。 RAIIでは、資源の取得をクラス型変数の構築(初期化)時に、また返却を破壊時に行う。特にプログラムの制御フローが自動変数の属するブロックを抜けるとき、その変数のデストラクタが自動的に呼ばれるため、デストラクタを適切に記述したクラス型変数の寿命が終わるとすぐに資源が返却されることが保証できるようになる。これは例外が発生したときでも同様であるため、RAII

  • C++ Technical Report 1 - Wikipedia

    C++ Technical Report 1 (TR1、Technical Report on C++ Library Extensions)は、ISO/IEC TR 19768:2007[1] の非公式名称で、標準C++ライブラリの拡張についての標準規格である。これには正規表現、スマートポインタ、ハッシュ表、擬似乱数生成器などが含まれている。TR1の目標は「拡張された標準C++ライブラリの使用方法について慣習を確立してほしい」とのことである[2]。 概要[編集] TR1は既に一部ないし全部を実装しているものもある。ちなみに、TR1のほとんどはBoostに含まれており、それが利用可能である。 TR1はC++のライブラリの拡張の全てではない。たとえばC++11ではスレッドに関するライブラリが含まれ、言語機能自体の拡張(move semanticsやvariadic templatesの追加な

  • C++でWebアプリを作る - GOL @Wiki

    WtというC++用のWebツールキットで遊んでみます。詳しくはWtのページを参照して頂きたいのですが、WtというのはGPLで配布されているC++でWebアプリを作るためのライブラリとアプリケーションサーバで構成されています。Webアプリのための・・・というと、JSFやSpring、Strutsなどを思い浮かべますが、これらPage-basedなFrameworkとは異なり、WtはWidget-centricなライブラリであるとWtのページでは説明されています。 これからいじりますので、まだ理解が間違っているかも知れませんが、様々な技術や手法が入りまじって複雑化してきつつあるWebアプリ開発に対して、既存のアプリケーションを開発してきた開発者が従来の手法を駆使して取り組むことを可能とするツールキット、といった感じではないでしょうか。 (ちょっと説明がヘタですが、徐々にわかりやすく説明していき

  • C++の勉強法について質問です。 当方、ウェブプログラマーなのですが、初心者がウェブプログラミングをマスターするには、掲示板を自分で実装してみることが一番…

    C++勉強法について質問です。 当方、ウェブプログラマーなのですが、初心者がウェブプログラミングをマスターするには、掲示板を自分で実装してみることが一番の近道だと思っています。理由は、ウェブプログラミングに必要な知識を一通り網羅できる為です。 C/C++の基礎は一通り勉強したのですが、実際に実務で通用できるレベルになるまでに、どのような勉強方が最適か思案しております。(他のスクリプト言語だと、クックブックやサンプルブックみたいなのが多数ありますが、C/C++でこの系統のを殆ど見かけない気がするのですが、何故でしょうか?) C++の初級から中級にステップアップして、実務で通用できるようになる為に、「これを作ってみるのが良い」ということや、「こういう勉強方が良い」というアドバイスがあれば、教えて下さい。 ちなみに私は、C, C++, Java, Perl, Ruby, PHP, Javas

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • C++の新しいキャスト

    C++の新しいキャスト 従来のキャストの問題点 異なる型への変換において、C/C++ではキャストが用いられます。 // intからlongへのキャスト int ival; int lval = (long)ival; ご存知のとおり、キャストは非常に危険です。 来ならば型の不一致によるコンパイルエラーをねじ伏せるのですから。 キャストの使われ方(意味)は、大きく3種(型変換/型変更/const外し)に分類されます。 型変換 // int から double へ int ival; double dval = (double)ival; 型変更 // long から int* へ long lval; int* iptr = (int*)lval; const外し // const int* から int* へ const int* ciptr; int* iptr = (int*)cip

  • EffectiveC++ 入門

    C++プログラマにとって、『Effective C++』はバイブルのような存在です。どれくらいバイブルかというと、皆さんの使っているGNUのGCCコンパイラには、EffectiveC++のコーディングガイドラインに従っているかどうかチェックするためのコンパイラオプション『-Weffc++』が、あるくらいです。 しかし、その内容は決して初心者向きではなく、実際に買ったはいいが、書棚の肥やしになっているような人たちも多いと思います。そこで、そのような初心者の人たちに EffectiveC++ を読み解くために各章のエッセンスをまとめたガイドラインを書いてみました。 C++はもう時代遅れとよく言われますが、組み込み系からビジネスシステムまで、幅広くカバーできる言語は、C++以外にありません。C++を知っていれば、おそらくどのような業界にも通用するでしょう。ITプログラマを自負するのであれば、C+

  • Facebook、PHPコードをC++コードに変換して高速に実行する「HipHop for PHP」発表

    米Facebookは米国時間の2月2日、PHPの性能と拡張性を改善するプロジェクト「HipHop for PHP」を発表した。PHPコードをC++に変換するプログラムで、すでにFacebook内で利用されているという。今後、オープンソースプロジェクトとして公開し、開発を進める計画だ。 FacebookはPHPを利用した大規模なソーシャルネットワーキングサイトだが、拡張性という問題に直面していた。HipHop for PHPはこの問題を解決するために数年前にスタートしたプロジェクトで、現在すでにFacebook内で利用されているとのこと。これによりWebサーバのCPU利用率が改善し、性能の改善に役立ったという。開発者によると、CPUの利用率を平均して50%削減可能としている。 HipHop for PHPにはソースコード変換機構とC++向けに再実装したPHPランタイムシステム、高速化のために

    Facebook、PHPコードをC++コードに変換して高速に実行する「HipHop for PHP」発表