Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2010-05-04

(12)Lisp システムにおけるデバッギング・ツール(1979)

| 16:43 | (12)Lisp システムにおけるデバッギング・ツール(1979) - わだばLisperになる を含むブックマーク はてなブックマーク - (12)Lisp システムにおけるデバッギング・ツール(1979) - わだばLisperになる

CiNiiのLISP関係の論文をのんびり漁っております。今回は、

です。

まず最初にデバッグとはどういうことかを考察し、その後、具体例として、LISPシステムでのデバッギング・ツールを紹介しています。

ツールとしては、

LISP 1.5では、

  1. トレーサー (CLでいうTRACE)

InterLispでは、

  1. DWIM(自動スペル修正機能)
  2. ブレイク・パッケージ(エラーでの対話的な処理/CLでいうBREAKなど)
  3. ADVICE機能(CLでいうとメソッドコンビネーション、Emacs Lispのadvice機能の方が近い)
    • 目的の関数にフックを掛けたりラップしたりする
  4. LISP専用エディタ
  5. プリティ・プリンタ
  6. バック・トレーサ
  7. 構造解析ルーチン(PRETTYSTRUCTURE)
    • 関数間の呼び出し関係を出力したり、変数の束縛、自由変数等々を調べることができるものがあったようです。
  8. UNDO機能
    • 対になる実行した内容を打ち消すようなコマンドを保存しておいてUNDO時に実行するという仕掛けだったらしい

Lisp 1.9では、

  1. 入出力デバッグ機能
  2. 機械語レベルでのデバッグシステムとの連携

Lisp Machine Lispでは

  1. エラー処理用関数のユーザーへの開放
  2. MAR機能(機械語レベルでのデバッグシステムとの連携をLISPで記述/操作できる)

等々ですが、現在も30年前もそれ程変っていないように思えます。

Slime等にも上記のようなデバッグに使える便利な機能はあるようですが、自分は、あまり積極的に使ったことが無かったので、ちょっと見直してみたいと思いました。