プログラミング

テンプレート

かっこつけてテンプレート使って、うまくいったと喜んでいたら、g++でコンパイルできずに撃沈。 単純なテンプレートなんだけどなぁ。宣言の順番とか関係してるんだろうか。順番がらみで、初期化並び。 初期化式にnew入れまくったりして調子乗ってたら、バグ…

LL Ring

行ってきた。 感想などは後でここに書く。

デバッグ

今やってる案件のデバッグのことを書こうかと。 仕様書がある。 仕様書といたるところ食い違ってる実装がある。 それでも動くデータがある。 そのデータを作る別プログラムがある。 と言う状態。 これのメンテをやってるのだけど、どれを信じてよいやら。 と…

いいコメントを書く方法

デバッグコードを書く。 その場所にデバッグコードを書いた理由をコメントに書く。 デバッグ終了後、コードは消すが、コメントは残す。 というのを思いついた。

Haskell 始めてみる(08)

3関数より。 add :: Integer -> Integer -> Integer add x y = x + yこれは、カリー化(curry)された関数の一例です。アンカリー化(uncurry)された関数をえるには、タプルを使います。 add (x,y) = x + y カリー化された関数、アンカリー化された関数という表…

Haskell 始めてみる(07)

A Gentle Introduction to Haskell: Values and Types が少し残っているけど、すっ飛ばして次の A Gentle Introduction to Haskell: Functions に進む。

Haskell 始めてみる(06)

再帰型より。 型は再帰的に構成することもできます。たとえば、二分木の型を考えてみましょう。 data Tree a = Leaf a | Branch (Tree a) (Tree a) ここでは多相型の二分木を定義しました。その要素はa型の値を含む「葉」のノードかあるいは(再帰的に)ふたつ…

Haskell 始めてみる(05)

間があいた。 引数のある場合の data 宣言。 基本的に引数なしと変わらない。 data Point a = Pt a a pt1 = Pt 3.0 4.9 pt2 = Pt 3.0相変わらず Pt の定義は気にしない。Point 型の値を作るには、2 行目のように書く。Pt は Point 型の値を作るための符牒だ…

Haskell 始めてみる(04)

雑談。 結城浩さんが Haskell の勉強日記を始めてますね。 ん?結城さんは結構前に Haskell やってたような気が…。 スタートからぐーんと差がついちゃってるなあ。残念。 まあ、同時に始めたところであっという間に差がついてしまうわけだけど。http://comps…

複合代入式の値

知らなかったし、今も自信がない。 int i, j, k; j = 1; k = 2; i = j += k; /* i, j, k の値は? 順に、3, 3, 2 となったけど。 */手持ちの C ハンドブックによると、 += は、複合代入演算子 複合代入演算子は、代入演算子 だから、+= は代入演算子。 また…

リバースエンジニアリングだかコード読みだか

40行ほどだけど、Fortran を読んで何をやってるのか調べてくれと言われた。 Fortran 嫌いなので書きたくもないし読みたくもないけど、仕事だから仕方ない。C++風の擬似コードに直しつつ意図を探る。 しかし意味のあるコメントが一切無い。ほんの少し聞いたヒ…

Haskell 始めてみる(03)

型構築子 / データ構築子 A Gentle Introduction to Haskell: Values and Typesより。 Haskellではdata 宣言を使って、ユーザ自身が型を定義することができます。 data Bool = False | True 型 Bool は(無引数) 型構築子の例です。また、True や False は(無…

バグ

バグがないことは大切だけど、バグがあってもバグ箇所が簡単に見つかる事、修正方法がすぐにわかることも大切だなーと思いました。 そんなコードを書けるようになりたいですね。

Haskell 始めてみる(02)

はすける Haskell で遊ぶ | Netsphere Laboratoriesより。 予約語 case class data default deriving do else if import in infix infixl infixr instance let module newtype of then type where _ これだけ。大文字・小文字を区別する。 22 個。少なくてう…

Haskell 始めてみる(01)

The Haskell 98 Report: Introductionより。 Haskell プログラムの大雑把な構成 Haskell プログラムは、モジュールの集まり モジュールは、宣言の集まり 宣言は、式の集まり Haskell の名前は 6 種類 変数名 (値を表す。) 構築子名 (値を表す。大文字始まり)…

思いやり

プログラミングで大事な事の一つに「思いやり」がある、とおもってたら、たまたまhttp://www.jitu.org/~tko/cgi-bin/bakagaiku.rb?bakaid=200605172で書いててくれました。 XP の原則で Mutual Benefit ってのがあるんですね。知りませんでした。で、Respect…

手続きの規格化

XML とか YAML とかで、データの規格はあるけど、手続きの方も規格があったら便利だなと、ふと思った。 アルゴリズム+データ構造=プログラム(Algorithms + Data Structures = Programs (Prentice-Hall Series in Automatic Computation))にはなるほどと思…

プログラミング追体験

void GraphicWizardsLair( void ); // 番組を再生しながらチャット等で発言すると時刻を記録して、あとで別人が追体験できるシステムより。 こういうの、いい。 ソース読んでるとき一番知りたいのは、書いた人の意図なんだけど、なかなか読み取れない。 エデ…

ついでにちょっと感想。

積読中の SICP ですが、読んでたときに思った事をメモ。 ループが無い 代入が無い ということは、変数の値は初期化時のまま。気持ちいい。 データが無い ふと「あれ?データどこだ?」と思ってタマネギみたいにむいていくと無くなってしまった感じ どうもパ…

Church 数のメモ - つづき。

しかし、ここでの特徴は、「普通の数値に戻す」ことではなくて、「関数をそのまま数として扱う」ということにある。これで、数そのものの「作り方」はわかったが、そこから任意の数を作るための「演算」はどうしたらよいのだろう? 例えば、自然数は、次の数…

反復的プロセスからループにしてみた。

フィボナッチ数を計算する関数を、繰り返し(iteration)をつかって定義しなさい。再帰版は次の通り。(define (fib n) (cond ((= n 1) 1) ((= n 2) 1) (else (+ (fib (- n 1))(fib (- n 2))))))分かりませんでした。なので、関数型言語の勉強にSICPを読もう - …

Church 数のメモ

404 Blog Not Found:TuringとChurchの狭間で で少しすっきりしたので、分かったところまでメモ。 0 := λ f x . x 1 := λ f x . f x 2 := λ f x . f f x 自然数 の場合を自分用に噛み砕いて。 自然数 は、2 変数関数である。 関数 の第一引数は、関数である。…

プロかなアマかな

2006-04-10 - J プログラミングの面白さというのは、 ものを作る楽しさ 糞イカれた仕様に文句を垂れつつ、バッドノウハウを蓄積し、それを駆使する快感 の二種類があって、、後者の面白さというのは、Unix系OSをいじるときの快感と似てるわけ。 私はどちらか…

言語身につけレベル

d.y.d. 「ある言語を知っている」というのは、自分の場合こんな感じに分類するんですけど 名前は知ってる ソースを見たら、その言語で書かれているということはわかる 他人のソースを参考にしながらならば、一応は何か書ける 標準的なライブラリやパッケージ…

1 分考えて書こう

http://d.hatena.ne.jp/codemaniax/20060329/1143605333 コードを書き始める前に、1分だけでもいいから考えてみよう。何のための、誰のためのコードなのか。そのコードがどのように使われ、誰の役に立つのか。結果として誰がハッピーになるのか。 役に立たな…

15 分で Perl6 parser!

その名はhaskell - sshi.Continual Audrey Tang スゲー。Haskell スゲー。そんな話聞けるんだったら、YAPC::Asia 2006 Tokyo 行きたかった。 Pugs を 2 ヶ月で作ったって話を知ってから、Haskellに興味を持ってます。まだ全然手を付けてないけど、近いうちに…

CLAPACK

ちょっと CLAPACK を触ってみてます。 FORTRAN 臭がプンプンするインターフェースとか、動作が不安定だとか、作業領域を渡さなきゃいけないとか、その長さが見積もれないとか。 まあ、用が足せればいいので戯れつつ少しずつ。

Debug で落ちて Release で落ちない

逆の場合(Release で落ちて Debug で落ちない)こともたまにあるけど、いずれにしても厄介だ。 大抵メモリ周りだと思うんだけど、原因がつかみにくい。 何か解決の一般論ってないかな?以前探したときはあったような気がするんだけど、見失ってしまった。 で…

Rubyはダメだよー

雪深き男(仮名)に Ruby の話を振ったら、「Ruby はダメだよー」と。すかさず噴火ヘリ男(仮名)が「Ruby はいいよー」と。なんでも、日付管理をよくするそうで、Time クラスがとても便利とのこと。そんな話をしながら夜が更け、気がつくとなぜダメなのかを聞き…

デザインパターン

デザインパターンに興味をもったのは、masarl さんの morijp.com を読んでから。あと、 とか。 で、勉強しないといけないなーと、GoF 本を買って今年の正月は実家で読んでました。 まとまった時間が取れなかったり、抽象的な話が難しくて積読になってますが…