『プロダクティブ・プログラマ -プログラマのための生産性向上術』を読了。
本書のテーマはプログラマの生産性向上だ。どうすれば向上するのだろう?道具の習熟度を上げて適切に使いこなせば良い。これが本書の結論だ。それを個別の、例えばショートカットのようなTIPSやら、YAGNIやオッカムの剃刀などの考え方やら、手を変え品を変え説明することで示している。
続きを読むJavaにはtry〜catch〜finallyの例外フローが存在するけどC言語には無い。でも実現することはできる。こんな感じで使える。
#include <stdio.h> #include <stdlib.h> #include "exception.h" /* 例外フローの定義 */ /* 例外を投げる関数 */ void sub1(EXCEPTION *e) { printf("sub1 start\n"); /* 表示される */ { int *t = malloc(sizeof(int)); if (t == NULL) exit(1); *t = 100; THROW(*e, t); /* Javaのthrow()に対応 */ } printf("sub1 end\n"); /* 表示されない */ } int main() { EXCEPTION e; TRY_BEGIN(e) { /* Javaのtryに対応 */ sub1(&e); } CATCH(e, int *a) { /* Javaのcatch()に対応 */ printf("catch %d\n", *a); /* 100と表示される */ free(a); } FINALLY { /* Javaのfinally()に対応 */ printf("finally\n"); /* 表示される */ } TRY_END /* 必ず必要 */ return 0; }
コメントのとおりJavaの例外フローと対応付けられる。これらの構文は次のようにsetjmp/longjmpをマクロで隠す形で定義している。
続きを読むやっと『プログラミングClojure』を読了した。
本書は薄いし分かり易い。入門や概要を掴むにはもってこい。訳も読みやすいし。
ちなみにClojureとは、Java仮想マシン(JVM)上で動作するLisp方言のことである。Lispなので当然S式、つまりカッコだらけ。見た目はとっつきにくいけど強力なマクロが使える。そして、普通のLispとは違って基本は副作用を許さない。だから並行プログラミングがとても楽にできる。もちろんやろうと思えば副作用も取り入れられるしJavaのライブラリを簡単に扱うこともできる。そして、副作用と平行プログラミングを併用するためにトランザクションの考え方を取り入れた方法が用意されている。
続きを読むプログラム言語で最初のプログラムと言えばハローワールド。
もはや定番ですが分かりやすいとは言えない。
例えば『プログラミング言語C』では最初に書くべきプログラムとして次の「ハローワールドを印字する」コードを掲載している。
#include <stdio.h> main() { printf("hello, world\n"); }
#include<>??、printf()??
雰囲気をつかむためには良いと思うけど前提知識がないと面食らう。
問題 誰も序文なんか読まない。
解答 序文を第1章と読んだらいい。
解答によって作られた新問題 第1章はたいくつだ。
解答 第1章なんかやめて、第2章を第1章と読んだらいい。
『ライト、ついてますか—問題発見の人間学』より
ドナルド・C・ゴース (著), G.M.ワインバーグ (著), 木村 泉 (翻訳)
本日からブログはじめます。
はじめるにあたって何か気の利いたことを書こうと考えましたが思いつきません。