2007-05-01から1ヶ月間の記事一覧

MzScheme付属のDrScheme使ってみた。

なんか気になったので、DrScheme使ってみた。ソフトウェア技法 DrScheme クイックリファレンスエディタ+対話モードが付いているので、便利だと思う。インデント機能もなかなかいい感じ。WindowsユーザーにオススメのSchemeエディタだと思う。僕はVimで充分だ…

SICPを読む(13) 1.2.4 & 問題1.16 対数的はスゲー

SICPスゲーおもろい。今までは指数的増加を扱っていましたが、対数的に低減させていくというのが今回のテーマ。対数的ってワカリズライけど、1000回の計算が10回で出来たら凄いよね!!というお話し。 べき乗 nのn乗を計算するとき、 b^0 = 1 b^n = b * b^n-1…

SICPを読む(12) 問題1.11 - 1.15 やっぱり反復が・・・。

やっぱり、ひげぽんと同じように反復が解けなかった・・・。 問題1.11 フィボナッチ強力版の登場です。ボスクラス。n n >= 3の時、f(n) = f(n - 1) + 2f(n - 2) + 3f(n - 3) となる関数を再帰と反復で計算する手続きを書け。再帰は一瞬で解けた。 ; 再帰 (de…

SICPを読む(11) 1.2.2 再帰脳を作ろう。

段々再帰な人たちの言っていることが判りはじめた気がする。 再帰脳を作ろう。 僕等が1から10まで足すとしたら、「あ、1から10までねハイハイ。」1 + 2 + 3 + 4 + ... + 10 = 551から計算する。再帰な人たちは、「10の前は9だ。1まで足せば良い。」10 + 9 + …

SICPを読む(8) 1.1.8 ブラックボックス抽象としての手続き。

要するに、隠蔽って事だね。Javaでいう所の、privateで定義しよう!みたいなお話し。 ところで、expってなんだっけ? 気になる1文がある。 (define (square x) (* x x)) (square 2) ; 4 2の2乗は4だ。そこまではわかる。問題は次だ。 (define (square x) (exp …

SICPを読む(7) 問題 1.6 - 1.8

vimが落ちたので、1.6 1.7のソースは略。 問題 1.6 無限ループ。ifが特殊形式の意味がわかってきた。無限ループに入ると、vimごとkillしなければならない・・・この先不安。 問題 1.7 1.7の解答は古い値と新しい値を比べる方式。僕のは有効桁数を(/ guess 10…

SICPを読む(6) 1.1.7 いきなり微分。

ぐはぁ、早速数学が飛び出した。僕、数学苦手です・・・。 Newton法による平方根 まず、平方根の求め方を調べる。 ニュートン法 - Wikipedia ニュートン法による平方根の計算 わかりやすいスライド。 いきなり微分。でも、簡単そうなので、頑張って展開した…

SICPを読む(10) 問題1.9 - 1.10 指数的爆発

問題1.9 紙の上で展開した。散々悩んだので、あっさり解けた。 問題1.10 数学的帰納の問題。プログラムを見て、数学的定義を述べよ。 (define (A x y) (cond ((= y 0) 0) ((= x 0) (* 2 y)) ((= y 1) 2) (else (A (- x 1) (A x (- y 1)))))) xに大きな値を取…

SICPを読む(5) 開発環境について。

そういえば開発環境を書いていなかった。OSはFedora6。エディタはvim。 vim7+MzScheme メイン環境。 コンパイル時に「./configure --enable-mzschemeinterp --with-plthome=/usr/lib/plt」が必要。 Vim7ではMzSchemeが使えるよ | 東京嫉妬 - 括弧の中を評価…

SICPを読む(9) 1.2.1 再帰と反復

再帰的プロセスと反復的プロセスの違いが判らなかったが、なんとなく掴めるようになった。Karetta|Gaucheプログラミング|すべて再帰である注目すべきは、*の位置。*があるとどんどん右へ伸びていってしまう!!(fact-iter ...)では、自分で自分を呼び出してい…

「新次元」のプログラミング言語、Befungeについて。

GCC

「新次元」のプログラミング言語Befungeが凄い。 Greenbear Laboratory - Befunge わかりやすい Befunge - Wikipedia なんとなく掴める Befunge 実装例 Befunge-93 言語仕様の邦訳 WikipediaのHello,Worldが美しい。 v @_ v >0"!dlroW"v v :# < >" ,olleH" v…

SICPを読む(4) 問題1.2 - 1.5

問題1.2 (/ (+ 5 4 (- 2 (- 3 (+ 6 (/ 4 5))))) (* 3 (- 6 2) (- 2 7))) ; -37/150 4/5でもOK。 問題1.3 (define (square-3 x y z) (if (> x y) (sum-of-squares x (if (> y z) y z)) (sum-of-squares y (if (> z x) z x)))) (square-3 2 3 2) アンサーブッ…

SICPを読む(3) 問題1.1

まだ手続きの意味がよくわからない。特殊形式(define,and,not)は手続きではないと書いてあった。ますます意味不明。それでは、ようやく練習問題。 10 ; 10 (+ 5 3 4) ; 12 (- 9 1) ; 8 (/ 6 2) ; 3 (+ (* 2 4) (- 4 6)) ; 6 (define a 3) ; a (define b (+ a…

アセンブリ言語の教科書 第3章 数値のカウント(yieldで)

GCC

たのしいプログラミングをアセンブリで実現したくなったので、RubyのtimesをGASに移植してみた。 .text .global main main: push %ebp mov %esp,%ebp mov $10, %eax push %eax push $print call times mov $0, %eax leave ret times: push %ebp mov %esp,%eb…

アセンブリ言語の教科書 第3章 数値のカウント(再帰で)

GCC

Scheme勉強中なので、GASで再帰します。 .text .global main main: push %ebp mov %esp,%ebp mov $10, %eax push %eax call count pop %eax mov $0, %eax leave ret count: push %ebp mov %esp,%ebp mov 8(%ebp),%eax push %eax push $count_s call printf p…

アセンブリ言語の教科書 第3章 Hello, GAS world!!

GCC

サンプルに少し改良を加えました。 .text .global main main: push %ebp mov %esp,%ebp push $hello call printf mov $0, %eax leave ret .data hello: .string "Hello, GAS World!!" 一見何の変哲もないHello,Worldですが、かなり罠が隠れています。1行づつ…

SICPを読む(2) 1.1.5 抽象?手続き?

なんか難しい言葉がいっぱい飛び出してきた・・・。抽象、手続き。まず、抽象。これはなんとなくイメージが掴める。 ところで、円周率ってなんだっけ? (define pi 3.14159) あ〜。piってなんだっけ・・・。そうそう円周率。円周率って・・・えっと、えっと・…

引数の受け取り

#!/usr/bin/gosh (define (main args) (print args) 0) 普通にアプリケーションとして使えそう。

SICPを読む(1) 1.1.1 式

うは、括弧だらけなんですけど。終了。 (exit)

アセンブリ言語の教科書 第3章 GDBの使い方。

GCC

アセンブリでprintfデバッグは辛すぎなのでのGDBデバッグについて学ぶ。アセンブリでも-gオプションが使える。 % gcc -g -o hello hello.s % gdb hello (gdb) l 1 .text 2 .global main 3 4 main: mov $1, %eax 5 mov $0xFFFF, %ax 6 mov $0b101010, %ah 7 m…

SICPを読む(0) 覚悟

計算機プログラムの構造と解釈作者: ジェラルド・ジェイサスマン,ジュリーサスマン,ハロルドエイブルソン,Gerald Jay Sussman,Julie Sussman,Harold Abelson,和田英一出版社/メーカー: ピアソンエデュケーション発売日: 2000/02メディア: 単行本購入: 35人 …

名著を中心に。

今回は覚悟を決めて2冊購入。その他色々。 名著 計算機プログラムの構造と解釈作者: ジェラルド・ジェイサスマン,ジュリーサスマン,ハロルドエイブルソン,Gerald Jay Sussman,Julie Sussman,Harold Abelson,和田英一出版社/メーカー: ピアソンエデュケーショ…

getlineラブ。

GCC

アルゴリズムの勉強用にC言語で1行読み込みを作ってみたけど、Rubyの方がずっと早かったorz。原因は、mallocの回数とioのバッファリングにあるような気がして今日はずっとRubyのio.cを眺めてた。ま、よくわからんのでwebを探索。・・・素敵なライブラリを発…

たのしいRuby 読了後の感想など。

たのしいRuby 第2版 Rubyではじめる気軽なプログラミング作者: 高橋征義,後藤裕蔵出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/08/05メディア: 単行本購入: 11人 クリック: 350回この商品を含むブログ (259件) を見る 本の感想 やはり定番書。…

たのしいRuby 第24章 HTML抽出

さて、たのしいRubyも最終章!!今回はHTML抽出です。ライブラリ使えば・・・と、思ったのですが、やはり最終章やることが高度です! 最終章の目的とは HTMLの抽出と言うのはあくまでサンプルであって、最終章の目的は・・・。"正規表現を使った字句解析"つまり…

ttyshereおもろい。

Hirameki Inspiration - ttyshareがおもしろいより。世の中いろんな共有サービスがあるけど、ついにここまで来たか・・・。TTYShare - share and view your tty data online.まだあんまり集まってないみたいだけど、これから注目のサービスになりそうです。…

音声読み上げソフトFestival

気になるメニュー発見 Adobe Readerのメニューの中に、表示 > 読み上げ > このページのみ読み上げるというメニューがあった。気になるので、実行してみた。 喋った!!喋ったよ!! 英語しか読み上げてくれないけど、なかなか良い発音で聞き取りやすい。 環境設…

Fedora6に、Vim7.1+MzSchemeインストール。

Vim

Vim7.1が出てたので、念願だったMzSchemeも一緒にインストールすることにした。Vim7.1はバグフィックスが中心らしい。 まず,MzSchemeのインストール。 fedoraの場合、パッケージ名がplt-schemeなので、わかりずらい。どうやら、MzSchemeは新しめのがいいらし…

たのしいRuby 第23章 郵便番号検索

膨大なデータから素早く検索処理をしたい!!そうなると、データベースの力を借りるのがいい。しかし、サーバー型のデータベースを使うほどでも無い。そんな中途半端な問題を解決してくれるのが、ハッシュ型のデータベース。今回はgdbmを使った郵便番号の検索…

はじめてのEmacs Lisp

最近、最も気になる言葉がLisp。RubyはPhytonがモデルで、PhytonはSchemeがモデルらしい。VimScriptもPhytonがモデルなので、Shemeの仲間?んでもって、GNU lsを見たときの関数ポインタの山。ミニErlangブーム。至るところで関数型言語の影が見える。 lambda…