PHPはソースコードを読めばわかるとおりC言語で書いてあります。 そのC言語の中でPHPがどんな処理をしているのかをデバッガであるgdbを用いて見ることができるのでそれを紹介します。まぁ普通のgdbの使い方なんですが:p ソースをダウンロードしてコンパイル PHP-5.2.6のソースをダウンロードします。 まず./configureするとのMakefileができます。 このMakefileの中で-gオプションがついていることを確認しましょう。*1 これがデバッガ(gdb)用のオプションで、コンパイルされたバイナリファイルにソースコードとの対応付けができます。 次にmakeします。時間がかかります。 サンプルファイル makeしている間に次のようなPHPファイルを作成しましょう。 <?php $i = "12"; $k = intval($i); ?> これは文字列の"12"をintval関
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はモダンなテクニックで開発されたコンパイラインフラストラクチャだ。プログラミング言語に依存しないモダンなオプティマイザとコード
以下の文章は、Michael Feathers による On Loving C.. の日本語訳である。 文中の固有名詞などについて理解の助けとなるよう Wikipedia へのリンクを加えさせてもらった。 認めなければならないことがある。私は C を愛している。しばらくはそれを意識していても、忘れがちだ。Ruby、Haskell、OCaml、C++、Java、そして C# に心移りしたこともある――今も多くの言語に時間を割いているが、C の元に戻ってくると、私は故郷に帰ったような気持ちになる。 私は何十年も前に Kernighan と Ritchie の本をパラパラとめくったときのことを覚えている。C にはとても欲求不満を感じた記憶もあるが、とても満足を与えてくれたことも覚えている。C にはヘンなところがあるが、振り返ってみると、それは多くの他の言語のヘンさに比べれば不可解なところはずっと
2008年04月04日03:00 カテゴリTips c - *sとs[]の違い これ、結構tricky。 The C Programmming Lanugage K&R 「 *s 」と「 s[] 」の違い - IT戦記 コメント欄にある「K&Rの5.3を読めばわかる」かというと多分わからない。それどころか P. 100 char s[]; and char *s; are equivalent; なんて書いてあるから余計わからなくなると思う。 なのだけど、すっごく簡単な覚え方がある。 答えは sの値を変更できるか 要するに char *s = "pointer"; printf("%s\n", ++s); はOKだけど、 char s[] = "array"; printf("%s\n", ++s); はNGということ。GCCなら error: wrong type argument to
emacsでc++開発を行うための情報を集めました。まとめをここでしています 以下それぞれのリンク Emacs で C 言語プログラミングを始める人へのイントロダクション 初心者向けdocment 以下の2項目が役立つ タグジャンプ ここで説明しているtagファイルの作成方法 $ find . -name "*.[chCH]" -print | etags - はubuntu7.10では動かなかった 関数名の補完入力がM-tabでできる タグジャンプはここで説明してるetagより後述のgtagの方が便利 Benjamin Rutt's Emacs C development tips (English) complieをする窓の大きさを小さめにする方法 インデントを自分好みにする方法 etagの使い方。Emacs で C 言語プログラミングを始める人へのイントロダクション よりも詳しく解説
Javaにおいてプラットフォームとの高い親和性を実現したり、C/C++で開発されたライブラリを活用するにはJNIを使う必要がある。JNIを使うにはC/C++に関するそれなりの知識と経験が必要だ。Javaからプログラミングを開始したデベロッパにとって、JNIは避けて通りたい技術だ。しかしそれが簡単に実現できる日が来るかもしれない……。 その実現を可能にするかもしれないのがJNIEasy : Java Native Objectsだ。JNIEasyはC/C++を記述することなくJavaライクなシンタックスとJOPOだけでJNIを同じ機能を実現するプロダクト。同プロダクトを使うことでC/C++プログラミングの経験がなくともC/C++ネイティブライブラリが使えるようになる。JNIEasyはWindows、Linuxで動作する。18日(米国時間)にリリースされた最新のJNIEasy 1.2ではMac
_ 他人に厳しい人たち ワーキングプア―日本を蝕む病(NHKスペシャル『ワーキングプア』取材班) アマゾンの書評がものすごいらしいので見に行ったら、本当にそうだった。とはいえ、実際には4星とってるので、高評価が続いたあとになって、こっそりと低評価軍団が襲来したというところなのかも。 目の前の人に厳しくなるってのは、自分の足が引っ張られるからとか、正当化のための理由は確かにあり得ると思うんだけど、こういうアカの他人に厳しい人ってのは、どういう倫理感を持ってるんだか、おれには非常に不思議だ。 ここからジャンプした _ Cで多態 (木村さんのところ) 実例を見たければ、%JDK_HOME%\include\jni.hを見るとか struct JNINativeInterface_ { void *reserved0; void *reserved1; void *reserved2; void
Bocoran Cara Menangkan Undian Berhadiah Luar Biasa Saat ini banyak sekali orang yang percaya bahwa mereka bisa memenangkan undian berhadiah yang biasanya diselenggerakan oleh brand-brand ternama. Hal ini tida terlepas dari kepercayaan beberapa orang bahwa “hoki” atau keberuntungan sedang memihak kepada mereka di jaman yang sedang serba sulit ini. Memang sebagaian orang banyak yang merasa kecil hat
2006年12月07日05:00 カテゴリLightweight Languages C - Judyでたらい回し フィボナッチ関数やたらい回し関数のような、自分を複数回呼ぶような再帰関数は、memoizeするかしないかで結果が極度に変わってくるが、これをCでやってみようという企画。 Judy Arrays Web Page Judy is a C library that provides a state-of-the-art core technology that implements a sparse dynamic array. Matzにっき(2006-06-28)とても高速なテーブル。十分高速なので、疎配列やハッシュとして使える。Cでmemoizeというのは、自分でhashを実装したりしなくてはならず大変だったが、このJudyがあれば実に簡単だ。まずは結果を見てもらおう。 %
2006年12月05日00:30 カテゴリiTech C/C++ - typecastをmethodに 実はこれと類似のことも、ある程度Cでやることが出来る。 404 Blog Not Found:電脳言語における祖先の呪い--演算子篇 型を変換するのも「タイプキャスト」ではなく「メソッド」ということにしてしまえばいいのだから。odz buffer - type declaration とか cast とか たしかに Ruby なんかでは obj.to_i と書いたりするが、cast にも int => double のように、実際の型変換が発生するタイプ(C++ でいう static_cast)と void * => char * のようにコンパイラに変数の取り扱い型を指示するためだけで演算の発生しない*2 cast (C++ でいう reinterpret_cast, const_ca
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く