タグ

cに関するRaphael-w-bのブックマーク (9)

  • Geekなぺーじ:C言語が嫌いな理由

    「Why I hate C」という記事がありました。 私は個人的にはC言語が好きですが、C言語が嫌だという視点も面白いので要約してみました。 かなり削っているので詳細は原文をご覧下さい。 C言語は組み込みに使うには良い言語ですが、その他の99.9%のアプリケーションを作るには最適とは言えません。 現在、アセンブラが一般的なアプリケーションを書くための良い解では無いことは自明です。 ここでは、もはやC言語もそうでは無い理由を述べたいと思います。 C言語の最も大きな問題はプログラマが間違いを犯しやすい事です。 私も良く間違えます。 どんなプログラマであっても数千行のコードを書いてバグが一つも無いということはありません。 コード量が少ないということは間違いの数も少ないということになります。 C言語は、言語のデザイン上、より多くのコードを書く事を要求します。 また、新しく開発されたプログラミング言

  • ハードウェア乱数生成ルーチンhdrand.c

    ハードウェア乱数生成ルーチンhdrand.c  by とつげき東北  トップページに戻る 「ランダムな乱数」「良質な乱数」を得る 導入: プログラミングをしていて、「真にランダムな乱数」を得ようとしたときに困ることがある。 どんなに優れた決定論的擬似乱数ルーチンも、真にランダムな乱数を作ってはくれない。 結果としてtime値などを乱数の種にすることになるわけだ。 ゲームなどならその程度でも充分だが、セキュリティの重要なソフトではそうはいかず、ユーザのマウス入力のタイミングなどを読み取る必要が出てくる。 そこでCPUがPentium以降・Windows下でハードディスクが使用されている環境で、ユーザに不可解な入力作業をさせることなく、良い性質の乱数を得るためのルーチンを作っておく。 方法: テンポラリファイルフォルダにファイルを作成・削除し、その処理にかかった時間を高分解能

  • C - ring buffer による queue : 404 Blog Not Found

    2006年06月26日15:30 カテゴリ C - ring buffer による queue 同感。 Kazuho@Cybozu Labs: C で tail に queue は不要 C で書くとしたら、やはり目的に特化したデータ構造を使うことで、速度と可読性を稼ぐべきではないでしょうか。 なので、今度はRing BufferによるQueueの実装。 そのためには、「404 Blog Not Found:C - tailとqueue」のqueue.hを以下のように差し替えればOK。ここでtail.cはいっさい書き換える必要がないことに注意。 #define DIE_OUT_OF_MEMORY { fprintf(stderr, "Out of memory!\n"); exit(-1); } struct queue{ int max, cur; void **ring; }; type

    C - ring buffer による queue : 404 Blog Not Found
  • C - tailとqueue : 404 Blog Not Found

    2006年06月24日20:30 カテゴリLightweight Languages一日一行野郎 C - tailとqueue どうせなら、もう少し潰しがきくように書いてみた。 はこべにっき# - C言語でtailっぽいものを書く また,明日学科のC言語のテストがある.C言語なぞ普段まったく使わないもんだから,思い出さねば.てことで,10行固定版tailを書いてみた.以下のソース.まずは、main()の方から。再発明だけでは芸が無いので、行数もオプションとして指定できるようにしてみた。 tail.c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_CHARS_IN_LINE 1024 #include "queue.h" char *new_string(const char *str){ cha

    C - tailとqueue : 404 Blog Not Found
  • Kazuho@Cybozu Labs: C で tail に queue は不要

    « Captcha Plugin/ja について | メイン | brainf*ck で計算機 » 2006年06月26日 C で tail に queue は不要 なんか C で tail を書くのが流行っているらしいので参戦します。 はこべさんや弾さんの例だと、動的なデータ構造を使っているが、これは牛刀だと思いました。少なくとも、djb 先生のお好きな回答でないことは確かです (^^; C で書くとしたら、やはり目的に特化したデータ構造を使うことで、速度と可読性を稼ぐべきではないでしょうか。 ということで、奥の回答。 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_STR 256 #define LINES 10 int main(int argc, char **argv) { char b

  • 大人買いは計画的に : 404 Blog Not Found

    2005年11月25日03:26 カテゴリMathLightweight Languages 大人買いは計画的に う、やられた。 isologue −by 磯崎哲也事務所 Tetsuya Isozaki & Associates: 一級数理フィギュア士試験問題 宮崎からの帰りにANAに乗って、機内のショッピング誌(椅子の前にささってるやつ) 私も山口講演の時にこれを往路で見てネタにしようと思ってたら復路で眼鏡無くしてそれどころでなくて...磯崎さんお見事。 で、問題。 問1. この箱を10個だけしか購入しなかったにも関わらず、10種類すべてがそろっている確率を求めなさい。ただし、箱に特定の種類のフィギュアが入っている確率はすべて同じ1/10ずつとします。(以下同様。) こちらは簡単。2個目で自分が欲しいすっちーが手に入る確率は9/10、3個目では8/10...10個目では1/10。これを全

    大人買いは計画的に : 404 Blog Not Found
  • ポインタ虎の巻

    ポインタ虎の巻 初級篇~ポインタはなぜ難しいか? C言語を学ぶ上で、ほとんどの人が引っかかり、往々にCの勉強を放棄するきっかけとなるのがポインタである。しかし、ポインタはC言語という特定のプログラム言語だけではなく、コンピュータというものを理解する上で、必要不可欠な重要な機能である。C言語参考書では、ポインタを解説する上で「箱」のモデルを使って解説することが多いが、この虎の巻では、より突っ込んだ具体的な動作を解説することでポインタというものの質を解明して見ようと思う。参考書ではC言語の抽象レベルの上で解説がされるのが通例だが、虎の巻では単純化されたアセンブリ命令を使って具体的に解説する。 初級篇目次 変数とは何か? 疑似アセンブリの定義 文字列の処理 アドレスの取得 ポインタの型 関数呼び出しの手法 構造体とポインタ リスト構造 NEW 二進木 NEW 中級篇~ポインタの高度な技 ポイン

  • C言語 Super Technique 講座

    このページは、C言語の中級テクニックを中心に解説する。長らくプログラマをしていると、C言語の面白い使い方例が蓄積している。これらを一挙公開するために、このページを作ったのである。しかし、単にCに留まらず、他の言語の面白い特徴なども紹介していく。 内容的にはかなりヘヴィである。当然のことながら、「ポインタ虎の巻」程度の内容はちゃんと使いこなせることを前提とする。意外な技、落し穴、派手なテクニックなど、内容満載だが、ちゃんとデータ構造とアルゴリズムなども説明できれば良いと思う。(まあ、ぼちぼちやってきいます...) 以下の目次には手引きのために、評価がつけてある。凡例として示す。 レベル その解説で記載されている内容のレベル 有用度 その内容が実際に役に立つものかどうか 邪悪度 その内容が薦める方法が、一般的なコーディング規約の中で「邪悪」とされがちなものであるか否か。関数ポインタの活用(濫用

  • C 言語によるオブジェクト記述法 COOL

    C 言語によるオブジェクト記述法 COOL ver.2 C-language's Object Oriented Language ver.2 [検索] 目次 0. はじめに 1. クラスの記述, 属性の記述 2. 操作の記述 3. クラス属性の記述、定数の記述 4. 初期化操作と後始末操作の記述 4-1.処理効率優先インターフェイス 4-2.再コンパイル不要インターフェイス 4-3.動的バインディング・インターフェイス 5. 状態取得操作と状態設定操作とイベントハンドラの記述 6. 集約の記述、継承の記述 6-1.集約の記述 6-2.継承の記述 6-3.多重継承の記述 6-4.重複継承の記述 6-5.動的継承の記述 7. 多態性(多相性)、インターフェイス継承の記述 7-1.多態性の記述 7-2.多態性を持った生成の記述 7-3.多重継承の多態性の記述 7-4.重複継承の多態性の記述 7

  • 1