2009-03-01から1ヶ月間の記事一覧

PaulGrahamのエッセイを読む4

Being Popular So whether or not a language has to be good to be popular, I think a language has to be popular to be good. One thing hackers like is brevity. Hackers are lazy, ... The individual tokens should be short as well. "lambda"とか…

数学infix記法マクロ

(math 2 * x + 10 * y ^ 3) ↓展開 (+ (* 2 x) (* 10 (expt y 3)))

PaulGrahamのエッセイを読む3

Beating the Averages And the reason everyone doesn't use it is that programming languages are not merely technologies, but habits of mind as well, and nothing changes slower.

球の配置を表示するプログラム

http://p-billiards.appspot.com/ SchemeとPostScriptを使って球の配置を表示するプログラムを書いた。 Pythonで書きなおして、GoogleAppEngineでウェブアプリとして使えるようにした。 1.1 4 2.5 4.05 3 6 3.3 2 3.8 0.2 1.9 5.2 1.4 0.13 0.8 1 1.9 6.7 こ…

PaulGrahamのエッセイを読む2

Chapter 1 of Ansi Common Lisp One of the aims of this book is to explain not just the Lisp language, but the new approach to programming that Lisp makes possible. You can write prototypes so quickly in Lisp that you can go through several …

言語仕様の単純さと魅力

Schemeの魅力はやはり仕様の単純さにあると思う。単純な仕様はプログラムを単純にするし、この単純さのおかげでSICPで実演されているように、すぐにマイインタプリタとかを作って遊んだり勉強したりできる。マイインタプリタを作るのはこの上なく楽しい。こ…

ToDo

OnLisp, PaulGrahamのEssay,CommonLispの勉強,集合知プログラミング,Gaucheのソース,計算理論の基礎,パンフづくり,新歓の練習,ProjectEuler,ファインマン物理学の量子力学

Paul Grahamのエッセイを読む1

一つづつ読んでくことにした。 Programming Bottom-Up ・Bottom-Up。 However, Lisp gives you much broader powers in this department, and augmenting the language plays a proportionately larger role in Lisp style-- so much so that Lisp is not ju…

OnLispを読む

SICPからの流れでそのままSchemeしか使ってこなかったので、OnLispを読んで料簡を広げようと思う。

CommonLispの"*"みたいなマクロ

CommonLispの*みたいなかんじのを考えた。健全じゃないから使えないけど。 (let$ (assoc 'Hanako '((Taro . 28) (Saburo . 19) (Hanako . 20))) (if $_ (cdr $_) "Not Found") (print "Hanako's age : " $_)) を (let (($_0 (assoc 'Hanako '((Taro . 28) (S…

No Free Lunch Theorem

No Free Lunch Theoremとは簡単にいえば、万能なアルゴリズムは存在しないという定理。 No Free Lunch Theorem や 不完全性定理は、初めて聞くとなんかがっかりだ。だけど、深く考えると数学やアルゴリズムの世界が奥深く感じられる。だって万能なアルゴリズ…

集合知プログラミング買った

google:集合知プログラミング Pythonのコードを使って説明されているけど、自分はSchemeで書きながら読んでいくことにした

プログラミング言語と背景にある理論

LISPはラムダ計算に基づいている。Haskellの型クラスは記号論理学的だ。例えば↓の式なんてシーケントそっくり。 sort :: Ord a => [a] -> [a] Haskellでは記号論理学という背景があるので、圏論を使用してモナドという強力な道具を取り込むことができた。 Ha…

HaskellとScheme

適当に書いてます。 HaskellにあってSchemeにないもの めんどくさくない遅延評価 モナド 型クラス SchemeにあってHaskellにないもの 括弧(Schemeに慣れると括弧があった方が厳密で分かりやすい) 強力なマクロ 単純さ こんなもんなんかな?

コッホ曲線っぽいの

コッホ曲線は正三角形がとびでるフラクタルだが、正方形、正n角形がとびだしてもいいじゃないか。 つまり、正方形なら↓の図形が対象のフラクタルを作る。 すると・・・ 左から正方形、正五角形、正六角形だ。これを眺めているとn->無限大の極限を考えたくな…

C-wrapper

c-wrapper - A Generic Wrapper for C Libraries すごい!

百人一首と補完

Emacsのminibufferとかdabbrevで補完をきかせるとき、どこの文字まで打てば一発で補完してくれるか手が覚えてしまった。 例えば、*scratch*に飛ぶときは*scr、*scheme*なら*sch。みたいにだ。これが決まり字に似ている。wikipedia:決まり字

Haskellを学ぶ

色んな言語やってみようプロジェクト本丸。(ちなみにHaskellの後は『集合知プログラミング』を読んでみようと思っている:amazon:集合知プログラミング) 処理系はECCSに元から入ってたHugs。Haskell のお勉強を導入として読む。

コッホ曲線

PostScriptとSchemeでコッホ雪片を書いた。 (define (Koch n) (if (= n 0) '(F L F L F) (fold-right (lambda (x y) (cond ((eq? x 'F) (append '(F R F L F R F) y)) (else (cons x y)))) '() (Koch (- n 1))))) こんな感じで再帰的にコッホ曲線を表現する…

自分のCでプログラムを書く能力の低さに唖然

しばらくLISPばっか触ってたのでリハビリがてらにライフゲームをCで書いてみたんだが、ものすごい時間かかった。最大の原因は型かもしれない。

Gaucheのソースを読む VM Compile

全部概観をつかむため、斜め読み。 vm.cとgauche/vm.h 昨日gauche.hを読んでgaucheのオブジェクトのシステムをあやふやだけど理解したので、一番興味のあるVM関連のソースを読む。細かいところまで読むと、時間がかかり過ぎるのでかなり斜め読み。 compile.s…

PostScriptってめっちゃ簡単なんだな

平文テキストで拡張子をpsに変えるだけでpsファイルができるなんて知らなかったー。 PostScript Programing 入門 ここ見ればだいたい分かりそう。ネット上にあんまりPostScriptの詳しい情報がない。 http://www.adobe.com/devnet/postscript/pdfs/PLRM.pdf …

ECCSでrakeがこける。

Railsで遊ぼうと思っていたのに!

SQLiteを試す

SQL

wikipedia:SQLite ECCSにSSHで繋いだ環境でmysqlを動かそうとしたが、よく分からなかったので、SQLiteというライブラリ型(サーバ・クライアント型でない)のを試すことにした。ライブラリ型だがCUIでも動かせる。

Gaucheのソースを読む

全く他の人の書いたソースを読んだことがないので練習として。 http://hira.main.jp/wiki/pukiwiki.php?2005_6_23%A5%AB%A1%BC%A5%CD%A5%EB%BA%C2%C3%CC%B2%F1%AD%A1 この、ひらメソッド、というのを念頭において読むつもり。 まず、gauche.h http://wiki.mo…

ScribusっていうオープンソースなDTPソフトを試してみる

DTP

http://www.scribus.net/ Unicode対応だからギリギリ日本語が使える。けど細かいことをしだすと使い物にならないと思う・・・。おそらくフリーで使えるDTPソフトってこのくらいしかない。Windows版を使ってみてるけど・・・不安定。もうダメ。追記: 日本語…

OctaveとかSQLを学ぶ

Octaveを学ぶ動機: 色んな言語(言語というより道具だけど)を見てみたい。(LISPで衝撃を受けたので、ほかの言語からも衝撃を受けたい的な) 線形代数をしっかりやった。 リスト演算の強いAPL/Jをかじってみて面白かった。Octaveは行列演算が強いらしいから…

Google App Engine

http://code.google.com/intl/ja/appengine/ すべての Google App Engine アプリケーションは、最大 500 MB の永続ストレージ、月間 500 万ものページ ビューに十分な帯域幅と CPU を利用できます。 公開が簡単なのがいいよね。非常に面白そう。Pythonが使え…

APL/Jでフラクタルを描く

Sierpinskiのtriangle load 'viewmat' xor=.(+.(*.-.)*.) f =. 3 : 0 if.y=0 do.1 else.t=.f[y-1 (t,0)xor(0,t) end. ) viewmat f"0 i.256 Sierpinskiのgasket load 'viewmat' quo =. 4 : 0

合格発表を野次馬

東大の合格発表を見に行ってきた。12:10くらいにつくも、もう発表されていた。発表は1:00って書いてあるんだけどね。数人の友達にも会って適当に話をしてきた。テニサーの勧誘が受験生に対する配慮に欠けてたと思う。そのあと、ロサにいって3時間パックでビ…