Hatena::Groupcadr

From The Darkside - Lisp実験室@Hatena このページをアンテナに追加 RSSフィード

2009-11-22  

[][][] 2009/11/07 Shibuya.lisp TT#4に行ってきた 17:27  2009/11/07 Shibuya.lisp TT#4に行ってきた - From The Darkside - Lisp実験室@Hatena を含むブックマーク はてなブックマーク -  2009/11/07 Shibuya.lisp TT#4に行ってきた - From The Darkside - Lisp実験室@Hatena  2009/11/07 Shibuya.lisp TT#4に行ってきた - From The Darkside - Lisp実験室@Hatena のブックマークコメント

ひさびさに更新してみて初めてココにはTT#3を更新していないことに気がついた(^^;


そして長らく書いていないので、はてな記法についてすっかり忘れてしまった(^^;


それはさておき、行ってから2週間以上が経過してしまったけれども今頃、

Shibuya.lisp TT#4の感想を印象に残った部分メインで覚えてる範囲をメモ書き程度

に書いてみます。



今回からLisp初心者入門セッションがSTARTということですが、平日

歩いて通勤していることもあり疲れていたためテキストの内容を確認

して第二部から出かけてみた。

ただ急いでいたため筆記用具を忘れてキーワード記録に失敗(^^;


まず、近山先生の1980年前後のLisp事情とUtiLispの話。

大学卒業時の研究テーマにLispを選び、実装したMicroLisp。

メモリ1KB以内を目指すためアトムを1文字で実装。

APLみたいだけど意味が通じて読みやすくて凄い。

次に修士時代にLispコンテストに応募するためFACOM 230/38上で動くLisp

拡張したPascalで実装。

結局コンテストの締め切りには間に合わなかったけど、「情報処理」誌上で竹内先生

に同じマシン上のFortranで実装したものより速かったと言及してもらえた。

Pascalを拡張してGCを書き速度も出る処理系を作っちゃうんだから本当に凄い。

次に博士時代にはAdaの仕様書を読んで勉強していたが和田先生から

「仕様書なんか読んでても言語は分からない。まずは作ってみろ」と提案され

Lispで実装してみることに。

この和田先生のエピソードを聞いて、踊る大捜査線の「事件は会議室で起きてるん

じゃない。現場で起きてるんだ!」

がなぜか頭に思い浮かんだ(笑

以上の経験を元に使いやすさを追求したUtiLispの開発へ。

ちなみにUtiLispのUtiは「Utile」(=Useful)を意味する。

Lispの中からOSをコントロールしハードウェアベタベタの最適化を行う実装。

今となっては古い手法だが当時はベストエフォートだった。

実装には1年半、残りの半年でドキュメントを書いた。

1人で書き上げたというのだから本当に凄いなと思った。

自分もキーボードのあるモバイル端末上で動くLisp処理系の研究と実装をちまちまと

やっているので工夫をすればメモリが少ない環境でも十分実用的なレベルの処理系が

書けるんだという参考になった。



次に竹内先生のLispの心についての話。

LISQ(りっぷく)、LISX(りっぺけ)、TAO

LISQにはcar,cdr以外にcbr,ccrの4つのセルがあった。

TAONTTで最適化のためにマイクロコードレベルでガリガリ書くだけでは足りず

ロジックボードもいじっていた。

最適化のためにマイクロコードレベルで実装という話は近山先生のUtiLispにも通じるな

と思った。

カレンダープログラムを作ってFreeBSDVMware上のTAO/ELISエミュレータでデモ。

LispMのエミュレータがVM環境上で動作しているのが興味深い。

今のハードウェアスペックなら自作で組み立てても当時動かしていた環境より3倍

くらい速いのが作れると言われていたのが印象的。



LTでは特にgaraemonさんのInterpreterで少しずつ動かしながら実行結果を確認できる

「3次元幾何モデルライブラリkomainu on CL」とひげぽんさんの「さあ家に帰ったら

Schemeのコード書いてみよう」が印象に残った。


TT#4以降、様々なLispの論文を読んでいるがCommon Lispもいいけど近山先生や竹内

先生みたいな限られた環境で最適化する実用的なLispやLispMやArcなんかも面白いと

思うので、いろいろ横道に逸れつつ作っている自分の処理系にもそういう面を活かせれば

いいなと思う。

2008-09-18

[][][]あとで読む20080918 20:40 あとで読む20080918 - From The Darkside - Lisp実験室@Hatena を含むブックマーク はてなブックマーク - あとで読む20080918 - From The Darkside - Lisp実験室@Hatena あとで読む20080918 - From The Darkside - Lisp実験室@Hatena のブックマークコメント

関数型言語でLispの他に好きなのはHaskellで微妙にConcurrent Clean

が気になったりして、Liskellがインタプリタじゃなくてネイティブコンパイラ

だったら良かったのにと思う今日この頃。

OCamlで実装されたLispインタプリタとかもいくつかあるらしい。

ネイティブコンパイラばかりが全てではないと思うけど、OCamlで実装した

Lispのネイティブコンパイラとかあれば面白いのに・・・

などと思ったりした。


Elyssa Release Notes - Linux Mint

Foresight Linux

sakurapup.browserloadofcoolness.com Puppy Linux 日本語化キット

Scheme Constraints Window Manager

Festvox: Home

The Festival Speech Synthesis System

Lambda Gate -- Various LISPs

oclisp: minimal lisp interpreter in ocaml

Objective Caml Ultimate Lisp

Howdy world.org

みずぴー日記

2008-07-31

[][][]実践Common Lisp第4&5章とあとで読む20080731 03:59 実践Common Lisp第4&5章とあとで読む20080731 - From The Darkside - Lisp実験室@Hatena を含むブックマーク はてなブックマーク - 実践Common Lisp第4&5章とあとで読む20080731 - From The Darkside - Lisp実験室@Hatena 実践Common Lisp第4&5章とあとで読む20080731 - From The Darkside - Lisp実験室@Hatena のブックマークコメント

sbcl1.0.19の更新履歴を読んでいて、Windows PortにAddress Space

とあったからと言って、1.0.13のバイナリでも発生するメモリ問題がFix

されたとは言い難いなと思った。

もしかして早とちりかも・・・。( ̄~ ̄;)

とりあえず仕事のPCに持っている環境も自宅ノートPCの環境にも

sbclをソースからコンパイルできる環境はある。

MinGW+MSYS(g++, make)を導入済みなので、修正されてなくても自力

で1.0.13と1.0.19のdiffを取って比較し、バグを発見したら直して

コンパイルしちゃえばいいじゃん。

って話なのかもしれないけどね。( ̄~ ̄;)

昨日は会社で第5章の5.3 オプショナルパラメータまでやったので、

残り(~5.9 無名関数)を帰宅してから終わらせた。

だから今日(8/1)は第7章くらいまで進めば(希望は第8章だが)週末には

家で、実践サンプルをclispでいじって、月曜日に会社でsbcl版ができる

かしら?

とか思ったり・・・

自宅ノートPCではsbclのメモリ問題の関係でclisp-2.46+slime

使っているが、REPLを動かす程度なら速度的には何ら問題ない。

かえって関数を再定義した場合、sbclでは警告されるがclisp

は文句を言わないので都合がいいかもしれない。

疲れていて途中で何度も居眠りこいたので更新するのに3時間もかかって

しまった・・・(;´Д`)


☆あとで読む20080731

Introduction to Functional Programming(1996/7)

SISC -Second Interpreter of Scheme Code

A SBCL page from N2KRA

SBCL Internals - Build on Windows -

SBCL Internals - Win32 -

LISPBUILDER-SDL-TTF -

git.boincor.net Git -sbcl git blame

SBCL on Win32 without cygwin? comp.lang.lisp|Google Groups

Linux Devel Software

Projects Tagged Compiler

CodeComments.com -Lisp-

What's In Peter's Head - Updated Lisp Companies Page

Parinya Software

Jabberwocky

McCLIM - A GUI toolkit for Common Lisp

LTK - The Lisp Toolkit

2008-07-29

[][][][]実践Common Lispとあとで読む20080729 23:28 実践Common Lispとあとで読む20080729 - From The Darkside - Lisp実験室@Hatena を含むブックマーク はてなブックマーク - 実践Common Lispとあとで読む20080729 - From The Darkside - Lisp実験室@Hatena 実践Common Lispとあとで読む20080729 - From The Darkside - Lisp実験室@Hatena のブックマークコメント

日曜日の夜中にガーっと実践Common Lispの2章まで終わらせて

一日空けて、今日、ソフトウェア評価の空いた時間にWin2K3(DE)

のNTEmacs23+SBCLSlimeで理解が曖昧だった部分の復習と

Windows特有の操作をノートにまとめた。

ちなみに、動かしてるPCのスペックはCPUがPentiumD 3.2GHz/3.19GHz

でメモリが1GB。

まだソースコードを追いかけた訳じゃないけど、Win32ではメモリが

1GBを超えると起動に失敗するバグが最新版の1.0.13でも修正されて

いないようですね。( ̄~ ̄;)

とりあえず環境構築後、これだけ知っとけばEmacsSBCLSlime

on Win32で楽しくCommon Lispが勉強できるための自分用メモ

は以下。

1.NTEmacs23をrunemacsで起動

2.ミニバッファでM-x(Esc + x or Alt + x) slimeREPL起動

3.Emacsのバッファで関数定義をタイプして改行後、タブキー押下で

自動的に2行目をインデント

4.バッファで入力した関数定義をC-c、C-c(Ctrlキー長押しでcを

2回タイプ)でLisp環境へ送信し、評価+コンパイル

5.C-c、C-z(Ctrlキー長押しでc,z)でREPLに戻って、関数を

呼び出して実行

6.C-x、C-fで新規ファイルを作成しミニバッファにファイル名を

タイプ

※拡張子は.lispまたは.cl(省略形)

7.作成したバッファ内でC-x、C-s(Ctrlキー長押しでx、s)

EmacsのSave-bufferコマンドを呼出し、ファイルを保存

※ファイル保存後はRead-onlyになり、REPLSlimeのショート

カット(REPLでカンマをタイプ)が効かなくなるので、ミニバッファ

に怒られる

→ミニバッファでコマンド(quit)を入力して終了したい場合は、

Read-onlyじゃない時に実行する

8.「q」でデバッガ画面から抜ける

9.(load (compile-file "xxx.lisp"))で関数定義が含まれる

ファイル全体をコンパイルしてロード

※(compile-file "xxx.lisp")+(load "xxx.fasl(fas)")

でも可

※Win32では、ファイルが[HOME]/bin/下なら"xxx.lisp"で可。

それ以外なら、(ex)"C:/lisp-src/xxx.lisp"のように絶対パス

で入力する必要がある

10.C-c、C-k(Ctrlキー長押しでc,k)でカレントバッファのコンパイル

とロード



☆あとで読む20080729

コンパイラ入門 - 神様なんて信じない僕らのために

Gauche on QuickSilver - ひげぽん OSとか作っちゃうかMona

紫ログ - Gauche on Quicksilver

R6RS test suite - comp.lang.scheme | Google Groups

GNU Emacs FAQ For MS Windows

Charles Curley - NT Emacs Installation

Local Emacs dotfiles

Links to emacs dotfiles on the web

Links to Emacs sites on the web

Common Lisp - Wikipedia(ja)

Common Lisp Object System - Wikipedia(en)

Common Lisp HyperSpec

2008-07-27

[][][][]ArcSBCL実装他、あとで読む20080727 18:38 ArcのSBCL実装他、あとで読む20080727 - From The Darkside - Lisp実験室@Hatena を含むブックマーク はてなブックマーク - ArcのSBCL実装他、あとで読む20080727 - From The Darkside - Lisp実験室@Hatena ArcのSBCL実装他、あとで読む20080727 - From The Darkside - Lisp実験室@Hatena のブックマークコメント

QEMU for WindowsSBCLを動かす環境を作ろうとしてたけど、今日は

一日寝込んでいたので、まだこれから。(´Д`;)

以前にSBCLArcを実装しようとしてるのがあったよなぁ・・・

と思い出して検索してたのが、ようやく見つかった。

自分のノートPCでは、まだ動かんけど会社のXP(JP)、Win2K3(DE)

にはMinGW+MSYS+Emacs22.2(DEは23)+SBCLSlime環境が

あるから、ソースコードを追いかけ始めようと思う。

自宅の方でもWin32のMemory問題を追っかけるためにソースは落とし

とかなくちゃ!(´∀`)

コンパイルの方法とか実行の方法とかもネット上で調べてようやく

分かったので、本当の意味でスタートラインに立てたような・・・

あと、Gauche本もあるしWin32用のGaucheもあるから、そっちも

いじくりたいし・・・

Schemeのネイティブコンパイラにも興味あるし・・・

これから、いろいろ楽しみになって来たなぁ・・・ヽ(*´∀`)ノ


☆関連項目

(fn Arc Language Blog): May 2008

Arc Forum | Arc Code Jam

Arc Forum | CL-Arc: Arc Compiler in Common Lisp

arc.sbcl.lisp at master from nex3's arc - GitHub-

pauek's arc-sbcl at master - GitHub-

入門Common Lisp その4(質問よろず)

LETTER - Common LispでOLEライブラリを作りはじめる -

やっぱりSchemeだね - 超やさしいLispインタプリタの作り方 -

やっぱりSchemeだね - Pure Lisp -

Scheme: なぜSchemeにはreturnが無いのか

ありえるえりあ - Software Design 2月号 「Emacsマスターへの道」原稿