|DMM inside
The Development of the C Language* Dennis M. Ritchie Bell Labs/Lucent Technologies Murray Hill, NJ 07974 USA dmr@bell-labs.com ABSTRACT The C programming language was devised in the early 1970s as a system implementation language for the nascent Unix operating system. Derived from the typeless language BCPL, it evolved a type structure; created on a tiny machine as a tool to improve a meager progr
誰もが一度は星空を見上げながら、宇宙の神秘に思いを馳せたことがあるだろう。こうした幼いころの夢を現実にし、今ではアメリカ航空宇宙局(NASA)でロボティクスやAI分野の研究開発に携わる小野雅裕氏は、宇宙マンガで有名な『宇宙兄弟』の公式サイトで「一千億分の八」というコラムを手掛けていることでも知られている。このたび、同コラムをもとにした書籍を上梓した小野氏に、宇宙の魅力と宇宙開発の現場について話を聞いた。 大阪生まれ、東京育ちの阪神ファン。2005年東京大学工学部航空宇宙工学科卒業。2012年マサチューセッツ工科大学(MIT)航空宇宙工学科博士課程および同技術政策プログラム修士課程終了。慶應義塾大学理工学部助教を経て、現在NASAジェット推進研究所に研究者として勤務。「2007年、短編小説『天梯』で織田作之助青春賞。2014年に著書『宇宙を目指して海を渡る』を刊行。2016年よりミーちゃんの
Fail-Safe C は、メモリ安全性を保証する ANSI C 言語のフルスペックの実装です。 ANSI C 言語の仕様で定められた全てのメモリ操作(キャストや共用体を含む)に対し その安全性を保証し、全ての危険なメモリアクセスを事前に検知し防止します。 Fail-Safe C では、コンパイル時や実行時の様々な最適化手法を組み合わせる ことで、実行時検査のオーバーヘッドの削減を行っています。このコンパイラ を用いることでプログラマは、既存のプログラムを大幅に書き換えたり別の言 語に移植したりすることなく、そのままプログラムを安全に実行することがで きます。 詳細については次の文献もごらん下さい。 Yutaka Oiwa. Implementation of the Memory-safe Full ANSI-C Compiler. ACM SIGPLAN Conference on P
The purpose of this article is to make everyone (especially C programmers) say: “I do not know C”. I want to show that the dark corners of C are much closer than it seems, and even trivial code lines may contain undefined behavior. The article is organized as a set of questions and answers. All the examples are separate files of the source code. 1. int i; int i = 10; Q: Is this code correct? (Will
以前に8ccというCコンパイラをゼロからひとりで開発していたときのログです。40日でセルフコンパイルできるところまで到達しています。日付はすべて2012年です。コードとヒストリはすべてGitHubで見れます。 3月4日 というわけでコンパイラを作っているわけだけど、1000行くらい書いたらそれなりに動き始めてきた。こんなのも動くし: int a = 1; a + 2; // => 3 こういうのも通る。 int a = 61; int *b = &a; *b; // => 61 文字列は文字の配列として扱っていて、配列をポインタに成り下げる振る舞いも実装しているので、こういうのも通る。関数呼び出しもある。 char *c= "ab" + 1; printf("%c", *c); // => b 前回もこのあたりはがんばって実装したからここまで作るのはわりと単純作業かも。二回目だから配列とか
K&Rにのってたmalloc/freeを作ってみました。(約60分) 正気の沙汰とは思えないほど長いですね。反省。 まろっくはむずかしい #include <stdio.h> #include <stddef.h> #include <stdlib.h> /* K&R malloc Heap +--------------------------------------------------------------------- | alloc |header next ...........| allocated |header next.... | +--------------------------------------------------------------------- ^ +-----------------------------^ +-------------
C 言語のプログラムの汚さで競い合うプログラミングコンテスト、The 22nd International Obfuscated C Code Contest の今年の結果が公開されました。 http://www.ioccc.org/years.html#2013 相変わらずの変態ぞろいですのでぜひご覧ください。既報の通り、ぼくは以下の 4 つの賞を貰いました。 Most lazy SKIer Most recyclable Most tweetable 1-liner Most solid それぞれ順次紹介していきたいと思います。 ref: http://ioccc.org/2013/endoh1.c #ifndef SKI #define A(x)B(x##0)B(x##1)B(x##2)B(x##3)B(x##4)B(x##5) #define B(x)C(x##0)C(x##1)C
リセットされるカウンタは g_loop_counter です。 いったい何がいけないのか、わかりますか? mapファイルで確認すると、g_loop_counter は g_is_error_flg の次のアドレスでした。 ステップ実行して g_is_error_flg = false; で g_loop_counter に 0 が書き込まれるのを確認できました。 ただ、g_is_error_flg = false; の何がいけないのか、しばらくは分かりませんでした。 mogemoge.c から見ると、g_is_error_flg の宣言はどっか別の所にあって、mogemoge.c 内では unsigned int として扱うしかない訳です。 ところが、アドレスの割り付けとしてはg_is_error_flg と g_loop_counter で1バイトずつでしか割り当てられていない訳で。 困
@ITに以下のような記事が出て、 今回からしばらくの間は、まったく逆の例、つまり使うとプログラムの処理性能が上がるというシステムコールを紹介していく。システムコールを呼ぶ回数は少ない方が処理性能は高くなるという原則は変わらないが、呼び出しておくと処理性能が向上するシステムコールというものが存在するのだ。こうしたシステムコールを使わないでいることは、とてももったいない。 今回紹介するシステムコールは「mmap(2)」だ。ここでは詳しく仕組みを解説しないが、mmap(2)は、プログラムの処理性能に必ず良い影響を与える。 やはりあった? 高速化に効くシステムコール (1/2):知ってトクするシステムコール(3) - @IT それを真に受けたのか、「Go言語でmmapシステムコールを使ったファイル読み込みの高速化検討とC言語のコンパイラの話 - ryochack.blog」のようなブログエントリも
A to Z of C - Beta (v0.0.12) The evolving non-profit book on C/DOS/Turbo C programming Alert This book "A to Z of C" is compiled and written by simple guys who are not experts and who are not native English speakers. And so, this book might have both grammatical and technical errors. This is the non-profit project and this release is a beta version. If you find any bugs please report that bug to u
低水準ファイル入出力関数 perl でプログラミングするにしても、 基礎知識としてC言語のファイルディスクリプタの概念を知っておくにこしたことはありません。 特に 4引数 select を使うときには、 ファイルディスクリプタの知識があると理解が早いでしょう。 C言語でファイルを扱うときは、一般的に fopen・fread・fwrite・fclose などの ライブラリ関数を使います。これらは stdio.h で宣言されており、 標準入出力ライブラリ (標準入出力関数) と呼ばれます。 ファイルをオープンするときは FILE *fp; fp = fopen("file.dat", "r"); として FILE 構造体を得ます。それに対して fread・fwrite を実行します。 しかし、これら fopen・fread などのライブラリ関数も、 内部では open・read・write・c
I've noticed quite a few hits to my printf formats specifications reference page, looking for information on how to print time_t, off_t and size_t types etc. However I realised the appropriate formats weren't immediately obvious from that page, and going by lots of code I've reviewed, it's a common confusion. The main point to note is that the size of these types depend of various things, so outpu
「Ten reasons why every programmer should learn C」という記事がありました。 個人的な感想ですが、何と無く言いたい事はわかる気がしました。 ただ、多少誇張している(言い過ぎ/嘘)かなと思いました。 あと、恐らくLinuxとオープンソースなどを念頭において書いているんだろうなと思いました。 ちょっと言いすぎ感も漂う内容でしたが、面白かったので訳してみました。 誤訳や勘違いなどが入っている可能性があるので、詳細は元記事をご覧下さい。 以下訳です。 全てのプログラマはC言語を学ぶべきである。 C言語を学ぶ事により得られる利点は無視できないほど大きい。 C言語を学ぶ事により、仕事の機会に恵まれるだけではなく、コンピュータへの理解が深まる。 1) C言語は、C++やJavaと比べて低レベル(low level)な言語である。 低レベル言語を使ってプログラ
ソースコード・ドキュメンテーション・ツール Doxygen は、C++、C、Java、Objective-C、Python、IDL (Corba、Microsoft 風)、Fortran、VHDL、PHP、C# 向けのドキュメンテーション・システムです。 D にもある程度対応しています。 Doxygen には、次の3つの利点があります。 文書化されたソースファイルのセットから、 オンライン・ドキュメント・ブラウザ (HTML形式) やオフラインのリファレンス・マニュアル (形式) を生成することができます。 RTF (MS-Word)、PostScript、ハイパーリンク PDF、圧縮 HTML、Unix man ページ形式の出力もサポートされています。ドキュメントは、ソースから直接抽出されます。これにより、ドキュメントとソースコードの一貫性を保つことがとても容易になります。 Doxyge
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く