No Such Blog or Diary
「一番嫌いなプログラミング言語は何?」
結構悩んだ.そもそも嫌いな物を思いつくとか難しい気がするのだけど,悩んだ結果 perl が一番嫌いなんじゃないかと.「使いたくない=嫌い」という解釈で.任意の目的に対して積極的に使用を回避したくなるのは perl しか思いつかん.
以下,答えを探している最中の思考.
sed:ロマン.頭の体操.やればなんでもできる便利な子.ワンライナーに必須.
C++:速い.演算子オーバーロードは素晴らしい.template で頑張るととても楽しい.
Haskell:遅延評価バンザイ.型推論バンザイ.高階関数バンザイ.参照透明バンザイ.
Java:どこでも動く.GCは素晴らしい.遅くない.リフレクションで頑張るととても楽しい.
awk:数値を使うワンライナーに便利.
bash:言語かこれ? バッチ処理には十分.
Python:キレイなスクリプト言語.
アセンブリ言語:速度のために必須.インラインで使うけど.
Lisp:なんでもありの素晴らしき自由.mix.eval/apply.
FORTRAN:良くも悪くも数値計算に必要十分.
C言語:真のC言語は安全.union は素晴らしい.#define で頑張ると楽しい.
OCaml:高階関数とか型推論とか欲しいけと遅延評価とか要らないし汚いことしたい時用.
php:web に関連するものならこれで.HTML との親和性が一番良いんじゃないかなと.
JavaScript:ブラウザで動くLispだよね.
閑話休題.
これを次の自己紹介の項目に入れよう.
- Comments: 0
- TrackBack (Close): -
てんぷれーとはすける
- 2011-11-11 (Fri)
- 一般
テンプレートは透ける.変換したらこーなった.
閑話休題.
理論の実証のために,いくつものデータ型に対して同じようなクラスやインスタンスやゴニョゴニョを沢山書く必要があった.が,それらはデータ型の定義さえ手に入れば機械的に作れるものなので,二個目の型に取りかかったあたりで面倒&馬鹿らしくなってきた.
ということで,定義を生成するプログラムを Template Haskell を使って書きだしたのだけど…… こっちはこっちでめんどくさい.わかりやすいドキュメントがあるのか無いのか.つか,データ型を渡して型クラスとかインスタンスとかを生成させるという使い方(つまりは deriving のようなことをさせるの)は正しいのかどうかよく分からん.
とりあえず別の手法にいったほうが良いかも知れないなぁ.
- Comments: 0
- TrackBack (Close): -
CYKなのかCKYなのか忘れる
- 2011-11-10 (Thu)
- 一般
The Cocke–Younger–Kasami (CYK) algorithm (alternatively called CKY)とか書かれているからどっちでもいいのだろうか?
とりあえず CMYK と同じ順番でいいのね.
どうでもいいけど Haskell で書くとメンドイ.
- Comments: 0
- TrackBack (Close): -
7x7x7のキューブを1時間で直す
- 2011-11-09 (Wed)
- 一般
センターキューブのキャップが外れて正しい位置が分からなくなったので,バラして組み直した.かなりシステマティックな構造をしているので組み上げも比較的簡単.最後にハメるパーツをどれにするかで難易度が変わりそうだけど,センターから桂馬飛びの位置にあるヤツが楽かもしれない.全体を歪ませてから穴に向けて押し込むと結構簡単にはまってくれる.
- Comments: 0
- TrackBack (Close): -
多次元配列とポインタのポインタと
時々「配列とポインタは同一視出来る」という説明を聞くのだけど,これって良い説明なのか悪い説明なのかよく分からない.特に,多次元の配列の解説と同時にこの説明があるのはどうなのかなぁとか疑問に思う.1次元の配列を扱う範囲に置いては特に文句はないのだけど.
多次元配列の解説においては,「多次元配列=ポインタのポインタ」という説明になる.仮に float c[10][20] という配列と float **d というポインタがあった場合,この説明では c = d とした以降は c と d がプログラム中で同一に扱えることになる.が,実際には c と d はインクリメントとかデリファレンスの挙動とかが違い,同一視すると痛い目を見る.正しくは,c は 20要素の float 配列のポインタ(float (*)[20]と書くのか?)と同一視出来る程度であって float ** とは別物と.
ということで,下のプログラムを動かすと c と d が別物だとよく分かる.c と e は同じ挙動.
main(){ float c[10][20], **d, (*e)[20]; d = c; e = c; printf("%p %p %p\n", c, d, e); printf("%p %p %p\n", c+1, d+1, e+1); printf("%d %d %d\n", c == *c, d==*d, e==*e); }
結果は以下の通り.
0x7fff7bca9320 0x7fff7bca9320 0x7fff7bca9320 0x7fff7bca9370 0x7fff7bca9328 0x7fff7bca9370 1 0 1
- Comments: 0
- TrackBack (Close): -
なんでFAXなんだか
- 2011-11-07 (Mon)
- 一般
ホテルの予約を FAX で申し込みしなければならないとか面倒すぎる.なぜにインターネットで処理できないのか?
というか,送信だけならいいけど「予約の結果を送るから受信できるようにしておいてね」とか面倒すぎる.
- Comments: 0
- TrackBack (Close): -