タグ

sicpとschemeに関するkiyo_hikoのブックマーク (18)

  • 非公式PDF版SICP・新訳 - アスペ日記

    計算機プログラムの構造と解釈、通称SICPを一から翻訳し直しました。 ファイル: SICP非公式日語版 翻訳改訂版 リポジトリ: https://github.com/hiroshi-manabe/sicp-pdf また、今回の翻訳をするにあたって考えたことを別記事にまとめました。 腐った翻訳に対する態度について SICPはMITの有名なプログラミングの教科書です。詳しくはminghai氏の記事をご参照ください。 この翻訳改訂版は、minghai氏の非公式日語版(以降、minghai氏版)のあまりにも惨憺たる翻訳を見かねて、原著から翻訳をし直したものです。この翻訳を進めるにあたっては、minghai氏版の訳を置き換えていくというやり方で進めていきました。しかし、差分を取ればわかっていただけると思いますが、minghai氏版のテキストは痕跡をとどめていないはずです。この方式を採ったのは、

    非公式PDF版SICP・新訳 - アスペ日記
  • 『計算機プログラムの構造と解釈』(SICP)を読み終えて - きのこる庭

    ようやくSICPが終わった。念願の夢の1つを叶えた。「ポインタを理解する」「コンパイラをつくる」とかから始まり 今年に入って 技術者として個人的にやりたかった事を3つ実現できた。良い調子。 サムネは記念にマッカーシー先生(再使用が許可された画像)。 完了までの期間 3.5ヵ月程度。平日は帰社後に2~3時間ほど、毎週土日はSICPに費やした。 学んだこと・できるようになったこと 1. より抽象的に物事の仕組みが考えられるようになった。 (「言語」という制約されたドメインを取っ払って純粋に実装について考えられるようになった) 2. 再帰のコードは悩まなくてもスンナリ頭に入るようになった。 3. Eval & Apply の陰陽によるプログラムの成り立ちを理解した。 4. 数学・コンピュータ科学に関する以下のことが人に説明できる程度には身についた。 - Newton法 - エラトステネスの篩 -

    『計算機プログラムの構造と解釈』(SICP)を読み終えて - きのこる庭
    kiyo_hiko
    kiyo_hiko 2014/08/21
    "(´・ω・`)がLispの構文のようなものに見えるようになった" (((;・ω・)))
  • 非公式PDF版SICPの全訳を公開しました - minghaiの日記

    また1年振りの更新となりかけました。 Andres Raba氏により2011年から開発が続けられている、非公式PDF版SICPを全訳しました。 ファイル 恒例のgithubです。 https://github.com/minghai/sicp-pdf jsicp.pdfが日語版の体です。 ejsicp.pdfはデバッグ用の日語・英語併記となります。 ライセンスはCC BY-NC-SA 3.0です。商業使用は認められないことにご注意下さい。 SICPとは何か? SICPとはMITが作成した何も知らない新入生向けのプログラミングの教科書です。 プログラミングと強調したことには理由があります。このは良くあるプログラミング言語の教科書ではなく、あくまでもプログラミングを勉強するための教科書だからです。このことはこのの中でも、最初の前書き、序文にて何度でも繰り返し強調されています。筆者達が

  • Clojureの学習でSICPは使えるかと問われ、Rich曰く、 - @katzchang.contexts

    最初の文章のまま載せていますので、コメント欄のshiroさんの添削と合わせてどうぞ: 一概には言えないが、2点だけ。 僕は、SICPはプログラミング言語のじゃなくて、あれはプログラミングのなんだと思ってる。の中でSchemeを使っているのは、アトミックなプログラミング言語だからなんだ。ラムダ計算、末尾再帰、継続を使った抽象制御、抽象構文(マクロ)、可変状態など。軽量で、かつ十分だ。 SICPでは、プログラミングをする上での課題を扱っている。モジュラリティ、抽象、状態、データ構造、並列処理など。generic dispatchやオブジェクト、並列処理、遅延リスト、(可変な)データ構造、「タギング」なんかの、明確な課題設定に対する実装例と解説が書いてある。 Clojureはアトミックなプログラミング言語じゃない。僕はもう、アトミックにプログラミングするのは古くて遅くて飽きた。Clojur

    Clojureの学習でSICPは使えるかと問われ、Rich曰く、 - @katzchang.contexts
  • Fermat の小定理 - hattorix0's blog

    SICP を読んでいる時に、いつもつまってしまうのでまとめてみる。 概要 Fermat の小定理 - P.28 n を素数,a を n より小さい正の任意の整数とすると,a の n 乗は n を法として a と合同である. そして、それをテストするコードが下記である。 (define (square n) (* n n)) (define (even? n) (= (remainder n 2) 0)) ;; gosh用 (define (random n) (use srfi-27) (random-integer n)) (define (expmod base exp m) (cond ((= exp 0) 1) ((even? exp) (remainder (square (expmod base (/ exp 2) m)) m)) (else (remainder (* bas

    Fermat の小定理 - hattorix0's blog
    kiyo_hiko
    kiyo_hiko 2012/08/06
    SICP1.2.5のフェルマーテストのexpmodの解説
  • 2008-05: Days on the Moon

    それにしても normal、regular、canonical、strict にそれぞれ正規、正則、正準、正格と別個の訳語を割り当てていった人たちはすごいと思う。 1.1.6問題1.3 演習問題三つの数を引数としてとり,大きい二つの数の二乗の和を返す手続きを定義せよ.、私の解答は以下。 (define (f1.3 x y z) (cond ((and (>= x z) (>= y z)) (+ (* x x) (* y y))) ((and (>= y x) (>= z x)) (+ (* y y) (* z z))) ((and (>= z y) (>= x y)) (+ (* z z) (* x x))) (else -1))) ; must not come here 基的な考え方としては一番小さな数を見つけ、それ以外の二つの数の二乗の和を返すというもの。比較に等号を入れているのは

    kiyo_hiko
    kiyo_hiko 2012/08/06
    作用的順序=正格評価(CLとかScheme?)で、正規順序=非正格評価=遅延評価(HaskellとかClean?)で、正格評価ではスペシャルフォームを除き、引数を先に評価 ~順序と言われるとたまに忘れてるのでメモ。あと朗読大事らしい
  • いまSICPを読むのは時間の無駄 - きしだのはてな

    SICPは、よい内容について書かれたであり、最良のだった時期もあった。 けれども、今となっては、理解が難しく内容の割には時間がかかる、時間の無駄ともいえるといってもいいかもしれない。 もちろん、Schemeの可能性、数値計算、プログラミング、コンピュータ教育歴史、そしてSICP自体のすべてに興味があれば、効率がいいかもしれない。 けれども、コンピュータ教育歴史、SICP自体に興味がないのなら、あまり効率のいいとはいえない。特に、Scheme、数値計算に当面の興味はなく、プログラミングについてだけを学びたいのであれば、時間の無駄でしかないと思えるし、今となっては足りない部分もある。 SICPの欠点として、まず、次の点が挙げられる。 日語がよみにくい サンプルに数学の知識が必要 プログラムがよみにくい 日語がよみにくいというのはよく指摘される。ただこれは翻訳だけが悪いのではな

    いまSICPを読むのは時間の無駄 - きしだのはてな
    kiyo_hiko
    kiyo_hiko 2012/08/05
    最初の方からガンガン数学が出てくるので逐一調べないと進まない高卒的にはかなり前の方で挫折した…
  • 数学ガールを読むぞぉ 7 - フィボナッチ数列の一般項(2) - ボクノス

    フィボナッチ数列の一般項の続きです。 フィボナッチの一般項は、 なんですが、(1 + √5)^nの計算が重い。結局n回展開しなければならないため、計算回数は反復の時と変わらなかった。桁落ちしてしまうので、浮動小数点は使いたくないし・・・。 むむぅ・・・と考え。 あ。 あらかじめ展開してやればいいじゃないか!! ということで、√5をxと置きます。 だいぶスッキリです。 上の部分だけ計算すると、 0 : 1 - 1 = 0 1 : (1 + x) - (1 - x) = 2x 2 : (1 + 2x + x^2) - (1 - 2x + x^2) = 4x 3 : (1 + 3x + 3x^2 + x^3) - (1 - 3x + 3x^2 - x^3) = 6x + 2x^3 4 : ... = 8x + 8x^3 5 : = 10x + 20x^3 + 2x^5 6 : = 12x + 4

    数学ガールを読むぞぉ 7 - フィボナッチ数列の一般項(2) - ボクノス
  • k16's note

    kiyo_hiko
    kiyo_hiko 2012/07/24
    「こういう徒労を繰り返しているうちに人生が短くなっていくからちゅういしろ」
  • KOSHIGOE学習帳 - [SICP] 演習問題

    kiyo_hiko
    kiyo_hiko 2012/07/24
    sicp和訳版の両替の解説がどうしても理解できないので / 最初の1枚を選んで、その分金額を減らしながら計算するのだろうか / Haskell => http://www.ipsj.or.jp/07editj/promenade/4608.pdf
  • SICP Chapter 1を読了:おきらくたぬきの次のへそ

    今週の火曜日(2008年12月9日)から「Structure and Interpretation of Computer Programs (SICP)」 を読み始めている。あらかじめ日語訳の書籍もAmazonで購入しておいたのだが、英文の原著がネット上に全文掲載されているのを見つけたため、英語で読み進んでいる。英語のリーディングの訓練もできるので、一石二鳥だと思ったからだ。 で、昨日、5章構成のうちのChapter 1を読了した。実に面白い。Chapter 1のテーマはプロシジャの抽象化。すでに他のLISPチュートリアルや「プログラミング Gauche」、東京大学の「Scheme 演習」に掲載されていた内容もあったが、私にとって新鮮なネタも数多くあった。まだ足を踏み出したばかりの段階だが、この内容の濃さは素晴らしいの一言である。 例題としては様々な数学ネタが取り上げられていたが、私が

  • 独学でコーディング! - a-newcomer.com

    ここ数年、会社を辞めて自分のペースで仕事を請け負うフリーランスという形態で仕事をする人が増えています。フリーランスには様々な職業があり、代表的なものでは翻訳業やイラストレーター、YouTuberもフリーランスに分類されます。そして代表的なフリーランスの職業がもう一つあります。それはプログラマー/エンジニアです。そのプログラミングの大部分を占める工程がコーディングであり、知識と技術を身につければ、憧れのフリーランスに鞍替えすることも夢ではありません。 それではコーディングの知識と技術を取得するにはどのようなルートがあるのでしょうか?現実として学校に通うか、プログラミングを請け負う会社に入社するか、あるいは独学で取得するかのいずれかを選択することになります。そこで今回は最も費用の少ない独学でコーディングを学ぶ方法を紹介したいと思います。 独学でコーディングの知識と技術を身につけるには まずはプ

    独学でコーディング! - a-newcomer.com
  • らくだや: SICP 問題 1.10 Ackermann関数

    kiyo_hiko
    kiyo_hiko 2012/06/10
    くそまじめに置き換えモデルを適用して行ったらm=2ぐらいでお手上げだた
  • Gaucheの使い方

    初期設定 シェルの環境変数 ライブラリパスの設定 .tcshrcの中に setenv GAUCHE_LOAD_PATH ".:/home/staff/suzuki/local/share/gauche/site/lib" Bshell 系の人は,.bashrc, .zshrc 中に export GAUCHE_LOAD_PATH=".:/home/staff/suzuki/local/share/gauche/site/lib" emacsの設定 Emacsの設定 使い方 起動と終了 % gosh > (exit) または ^-D ファイルの読込み (load "./fiie.scm") ライブラリの読込み (require 'lib) trace 機能 ggc パッケージより (use ggc.debug.trace) (trace foo) ... (untrace) eval と環境

  • 社内SICP勉強会(第3回) - 元データ分析の会社で働いていた人の四方山話

    第2回の話題 浮動小数点の話題は、最近セキュリティがらみでありましたね。 PHPの浮動小数点処理に無限ループのバグ | スラッシュドット・ジャパン オープンソース 浮動小数点変換バグはJavaにもあった ここでこの話につながるのかなるほどーと思った。 範囲 1.2(P17)から問題1.13(P23)まで 内容 1.2 手続きとその生成するプロセス 手続きは計算プロセスの局所的進化(local evoluation)である。 局所的進化を手続きが規定するプロセスの全体としての、大局的(global)振舞について記述出来たらよいと思う 1.2.1 線形再帰と反復 階乗の計算 手続き作用の置き換えモデル(1.1.5節)で表現 再帰的プロセス(recursive process)と反復的プロセス(iterative process) 再帰的プロセスでは、解釈系は後に実行する演算を覚えている必要があ

    社内SICP勉強会(第3回) - 元データ分析の会社で働いていた人の四方山話
    kiyo_hiko
    kiyo_hiko 2012/05/28
    ちょうどこのあたりを進めてるので参考に
  • 「計算機プログラムの構造と解釈(SICP)」を読み終えて by なつたん - なつたん

    ひげぽんさんの所をパクってテンプレートにして書いてみました。 練習問題をスキップしつつ、私も約半年でで読み終えました。とても楽しい日々を過ごすことができました。 SICPを読む過程で得たもの ・遅延評価とstream ・制約プログラミング、ロジックプログラミング、amb ・Emacs(Meadow)+gauche+Quackの組み合わせ便利 ・同じ事を表現するのに、抽象度を上げたり、下げたりできること。 ・手加減してあればLispのソースも追えるようになった。手加減していないのは駄目。 ・Lisp特有の、手続きを評価する→S式ができる→また評価する→S式ができる、という気持ち悪い再帰の存在。 ・SICP読み仲間ではないけどいろんなblogつながり。組み込みとFPGAだけでない、いろんな世界がある事をあらためて感じた。 SICPを読みはじめたときの動機を振り返る ・関数型言語について Lis

    「計算機プログラムの構造と解釈(SICP)」を読み終えて by なつたん - なつたん
    kiyo_hiko
    kiyo_hiko 2012/04/29
    社内有志(といっても2名…)のお題となったので、多分まじめに読むことができると思う。「半年くらい勉強する時間を作ろう」 4章で迷ったときの対策など
  • もうひとつの Scheme 入門

    勾配の緩やかな初心者向け Scheme 入門ページです。 コンピュータは使ったことがあるが、プログラミング経験があまりない人を想定しています。 Scheme の解説はすでに山ほど優れたものがありますが、あえて解説記事を書いてみました。 Scheme のような抽象的な話題は波長が合えばすんなりと理解できますが、あわないと全く理解できません。 他の解説を読んで今ひとつよく理解できなかった人は試しに読んでみてください。 この記事の目標はコンピュータ科学の教科書の決定版である SICP を読める程度の Scheme の知識を提供することです。 目次: 処理系のインストール Scheme を電卓代わりに使う リストを作ろう 関数を定義しよう 分岐 局所変数 繰り返し 高階関数 入出力 代入 文字、文字列 シンボル型 連想リスト、ハッシュ表 ベクトルと構造体 構文の定義 (マクロ) 継続 遅延評価 非

  • SICP Web Site for the Japanese Edition

    魔術師:   (名詞)    MITの入門コースで使う計算機科学の優れた教科書 ハル・エイブルソン, ジェリー・サスマン, ジュリー・サスマン共著(和田英一訳)「計算機プログラムの構造と解釈 第二版」(ピアソン・エデュケーション 2000年).   表紙の魔術師ゆえにそういわれる.   LISP/Scheme世界の聖典のひとつ.    まれに紫としても知られている. ハッカー英語辞典 第2版(MITプレス 1993)より λλλ 計算機プログラムの構造と解釈 第二版 λλλ λλλ(Structure and Interpretation of Computer Programs Second Edition) λλλ λλλ に関連するホームページ λλλ λ 訳者跋文 λ 正誤表 λ 人名地名考 Ben Bitdiddle, Alyssa P. Hacker, Sl

  • 1