タグ

ブックマーク / www.nurs.or.jp/~sug (9)

  • Super Technique 講座~longjmpと例外

    プログラムの流れを制御する手段として、いわゆる「構造化構文(for とか if とか)」、悪名高い「goto 文」などがあるのは周知のことだが、かなり特殊なものとして、「setjmp, longjmp」による「非ローカル分岐」と呼ばれるものがある。この「非ローカル分岐」は「非ローカル」と言うだけあって、ある関数の中から、別な関数に制御を移すことができたりする。まあ、そのために乱用すべきではなく、注意して使わなくてはならないライブラリ関数なのだが、実はこれは JavaC++ で言語の上で実装されている「例外」の基礎となるものである。だから、まずこの標準ライブラリ関数「setjmp, longjmp」について解説しよう。 → Java 講座の「例外」 setjmp, longjmp とは どうやって実現してるの? setjmp/longjmp の利用例~インタプリタ 補追1:setjmp

    tanakaBox
    tanakaBox 2009/10/16
    Cで例外。例外以外の目的(ハック)で使う事の方が多い気がする。前読んでた気がしたが、どうやら未読だった。要再読。
  • Super Technique 講座~マクロの技

    質的にC言語はトリッキーな言語ではない。だから、トリッキーな技は特定機能に集中する傾向があり、そのような機能とは「マクロ」と「ポインタ」である。 引数展開マクロの小技 DRY原理とプロトタイプ宣言 グローバル変数管理 関数ポインタ配列のプロトタイプ宣言と定義 引数展開マクロの小技 一般論としては、マクロは define 文によって即値定数を記号定数で定義しなおす、というのが真っ当な技であるが、これは今更触れるほどの内容はない。それでも次のようなテクニックはある。 #define swap(type,a,b) {type tmp=a;a=b;b=tmp;} int x = 10; int y = 20; swap( int, x, y ); これは引数展開マクロを使って、いわゆるSWAPを実現する簡単なマクロである。よく類書にこれは「次のように使うと問題がある」とされる。 if( z )

    tanakaBox
    tanakaBox 2007/12/30
    やばい。禁断の果実に・・・
  • Super Technique 講座〜再帰関数の技

    C言語初心者が戸惑うものとして、「再帰」に関する技法がある。まあ、今時の言語で「再帰関数」を書けないのは、COBOL と FORTRAN, 古典的BASIC くらいのものだが、一般的な言語解説書での説明は大変おざなりなものである。だから、これは意識して憶えないことには、やはり身に着かない。 そこで「Super Technique 講座」では、再帰の技法を、再帰という発想の親玉である Lisp(Scheme) を利用して理解する、という無謀な企てをしてみることにする。「ある言語を理解するのに、何で別な言語を勉強するの?」という当然の疑問が湧くことだろう。しかし、しかし、「それがハッカーというものである」。筆者は MS-DOS の時代に、UNIXのテキストツールの使い方を理解するために、それらを自分で実装した。一見「無駄」に見える技術投資は、ことプログラマにとっては決して「無駄」ではない。Li

    tanakaBox
    tanakaBox 2007/07/11
    CでLispを作る。必見。
  • C言語 Super Technique 講座

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

    tanakaBox
    tanakaBox 2007/04/22
    いつもお世話になっております。x講座が役立ちそう。
  • Super Technique 講座~ブックガイド

    サイト500HTMLファイル達成を記念して、ビジターへのサービスとして筆者の愛するプログラミング書籍について熱く語ろうと思う。このページで取り上げるの基準は、「ハッカーマインドが詰まっていること!」である。定番書籍もあれば、知られざる名著、周辺領域のなども含まれているが、すべて「読めば読むほどハッカー度の上がる」ばかりである。まあ、バイブルとか「人月の神話」のような常識的古典を今更紹介するのはヤボであるし、単に「網羅的な情報があるので役立つ」とか、そういうものも止めにしよう。それよりもプログラミング周辺の「絶対面白い名著」、やや理論的で難しい専門入門書レベルまで含めて「とにかく読んでいて刺激的で面白い」ものを選んだ(が、今まとめてみると、絶版扱いが多いな...「ホントに面白いプログラミング書籍」ってそれほど売れないんだ....)。 エキスパートCプログラミング オブジェクト指向入

    tanakaBox
    tanakaBox 2007/04/15
    10年後に読みたい本(汗/案外読める段階になった気がする。びっくりだ。
  • ポインタ虎の巻~関数ポインタの使い方

    ポインタとして指すことのできるのは、通常のデータだけではない。プログラムの断片である関数でさえも、ポインタとしてポインタ変数に格納することができる。たとえば、ある条件に従って、足し算をするのか引き算をするのか変わる、というプログラムがあったとしよう。 int add( int a, int b ) { return a + b; } int sub( int a, int b ) { return a - b; } void main() { int cond; int x, y; ....... if( cond == 0 ) { printf( "result = %d\n", add( x, y ) ); } else if( cond == 1 ) { printf( "result = %d\n", sub( x, y ) ); } else { printf( "I do NO

    tanakaBox
    tanakaBox 2007/03/29
    かなり使えそう。
  • bash 超プログラム術

    bash の解説なんて、ネット上には結構あったりするのだが、これをわざわざ公開しようというのは、次の理由による。 某ソフトハウスでのUNIX講座用に書いてしまったから。 ネット上にある bash 解説だと、表面的な構文解説程度であり、きっちりスクリプト言語として使い倒すレベルの解説はあまりない。まあ、プログラミング言語として凝ったサンプルもやってみようじゃないの、というノリで割とディープに解説する。 アクセスを増やすための人気取り(苦笑)。 まあ、そんな不純な目的による bash 解説である。とはいえ、日常的に使い慣れている bash であっても、「え、こんな使い方があったの!?」という発見もあることであろう。苦笑しながらでも読んでくれたまえ。だから、初歩的なリダイレクションなんかは解説しないからそのつもりで。 ちなみに参考書としたのはオライリー・ジャパン刊「入門 bash 第2版」である

    tanakaBox
    tanakaBox 2007/03/04
    基本的な所だが深い。
  • Super Technique 講座~m4 チュートリアル

    m4 はUNIXの標準コマンドの1つであり、古い歴史を持つマクロプロセッサである。しかし、やや使い方が難しく、しかも古典度が高く専門的なために、どうしても紹介のプライオリティが下がる傾向があって、日語でマトモに書かれた解説にお目にかかったことがない。そこで、m4 に多少の経験値がある筆者があえて m4 のチュートリアルを書いて見せる。基的な情報は m4 の info から仕入れており、それにいろいろな実例を加えて書いている。 マクロプロセッサ m4 とは? m4 の使い方 m4 のディレクティブ マクロ定義に関するディレクティブ マクロ置換の原則 マクロ引数 undefine と include 条件分岐 ループ メタ文字の入れ換え 組み込み文字列処理関数 その他 マクロプロセッサ m4 とは? m4 はマクロプロセッサである。つまり、Cプリプロセッサ cpp (今時だと gcc -E

    tanakaBox
    tanakaBox 2007/02/19
    超強力マクロツール?多少癖アリ。
  • 杉浦ホームページ

    杉浦が書いた書籍「あなたのコードを[賢く]するデザインパターン Java プログラミング」が秀和システムより出版されました。詳細はこっちだ ついにサイトのHTMLファイル総数が、600を越えました...よくもまあ、こんなにも書いたもんだ。(2004.12.20) →確認する 皆様のおかげをもちまして、ついに初めて1日1000HTMLファイルアクセスを達成しました。感謝!!!(6/17,2003) →え、ホント? と思ったら早々と1日2000HTMLファイルアクセスも達成してしまいました。皆様に感謝×2!(8/26,2003) →え、それもホント? 何て言っているうちに1日4000HTMLファイルアクセスも達成してしまいました。皆様に感謝×22!(10/28,2003) →おいおい! 祝!新サーバ格稼動!皆様に感謝!(5/21,2004)→格稼動初日 祝!新サーバで1日3000HTML

    tanakaBox
    tanakaBox 2007/02/13
    ポインタ虎の巻。テクニック講座など。
  • 1