副标题: A Gentle Introduction to Symbolic Computation
作者: David S. Touretzky
出版社: Benjamin-Cummings Pub Co
出版年: 1989
页数: 600
ISBN: 9780805304923
作者: David S. Touretzky
出版社: Benjamin-Cummings Pub Co
出版年: 1989
页数: 600
ISBN: 9780805304923
内容简介 · · · · · ·
This book is about learning to program in Lisp. Although widely known as the principal language of artificial intelligence research—one of the most advanced areas of computer science—Lisp is an excellent language for beginners. It is increasingly the language of choice in introductory programming courses due to its friendly, interactive environment, rich data structures, and po... (展开全部)
This book is about learning to program in Lisp. Although widely known as the principal language of artificial intelligence research—one of the most advanced areas of computer science—Lisp is an excellent language for beginners. It is increasingly the language of choice in introductory programming courses due to its friendly, interactive environment, rich data structures, and powerful software tools that even a novice can master in short order.
When I wrote the book I had three types of reader in mind. I would like to address each in turn.
· Students taking their first programming course. The student could be from any discipline, from computer science to the humanities. For you, let me stress the word gentle in the title. I assume no prior mathematical background beyond arithmetic. Even if you don’t like math, you may find you enjoy computer programming. I’ve avoided technical jargon, and there are lots of examples. Also you will find plenty of exercises interspersed with the text, and the answers to all of them are included in Appendix C.
· Psychologists, linguists, computer scientists, and other persons interested in Artificial Intelligence. As you begin your inquiry into AI, you will see that almost all research in this field is carried out in Lisp. Most Lisp texts are written exclusively for computer science majors, but I have gone to great effort to make this book accessible to everyone. It can be your doorway to the technical literature of AI, as well as a quick introduction to its central tool.
· Computer hobbyists. Prior to about 1984, the Lisps available on personal computers weren’t very good due to the small memories of the early machines. Today’s personal computers often come with several megabytes of RAM and a hard disk as standard equipment. They run full implementations of the Common Lisp standard, and provide the same high-quality tools as the Lisps in university and industrial research labs. The ‘‘Lisp Toolkit’’ sections of this book will introduce you to the advanced features of the Common Lisp programming environment that have made the language such a productive tool for rapid prototyping and AI programming.
This current volume of the ‘‘gentle introduction’’ uses Common Lisp throughout. Lisp has been changing continuously since its invention 30 years ago. In the past, not only were the Lisp dialects on different machines incompatible, but programs written in one dialect would often no longer run in that same dialect a few years later, because the language had evolved out from under them. Rapid, unconstrained evolution was beneficial in the early days, but demand for a standard eventually grew, so Common Lisp was created. At present, Common Lisp is the de facto standard supported by all major computer manufacturers. It is currently undergoing refinement into an official standard. But Lisp will continue to evolve nonetheless, and the standard will be updated periodically to reflect new contributions people have made to the language. Perhaps one of those contributors will be you.
When I wrote the book I had three types of reader in mind. I would like to address each in turn.
· Students taking their first programming course. The student could be from any discipline, from computer science to the humanities. For you, let me stress the word gentle in the title. I assume no prior mathematical background beyond arithmetic. Even if you don’t like math, you may find you enjoy computer programming. I’ve avoided technical jargon, and there are lots of examples. Also you will find plenty of exercises interspersed with the text, and the answers to all of them are included in Appendix C.
· Psychologists, linguists, computer scientists, and other persons interested in Artificial Intelligence. As you begin your inquiry into AI, you will see that almost all research in this field is carried out in Lisp. Most Lisp texts are written exclusively for computer science majors, but I have gone to great effort to make this book accessible to everyone. It can be your doorway to the technical literature of AI, as well as a quick introduction to its central tool.
· Computer hobbyists. Prior to about 1984, the Lisps available on personal computers weren’t very good due to the small memories of the early machines. Today’s personal computers often come with several megabytes of RAM and a hard disk as standard equipment. They run full implementations of the Common Lisp standard, and provide the same high-quality tools as the Lisps in university and industrial research labs. The ‘‘Lisp Toolkit’’ sections of this book will introduce you to the advanced features of the Common Lisp programming environment that have made the language such a productive tool for rapid prototyping and AI programming.
This current volume of the ‘‘gentle introduction’’ uses Common Lisp throughout. Lisp has been changing continuously since its invention 30 years ago. In the past, not only were the Lisp dialects on different machines incompatible, but programs written in one dialect would often no longer run in that same dialect a few years later, because the language had evolved out from under them. Rapid, unconstrained evolution was beneficial in the early days, but demand for a standard eventually grew, so Common Lisp was created. At present, Common Lisp is the de facto standard supported by all major computer manufacturers. It is currently undergoing refinement into an official standard. But Lisp will continue to evolve nonetheless, and the standard will be updated periodically to reflect new contributions people have made to the language. Perhaps one of those contributors will be you.
喜欢读"Common Lisp"的人也喜欢 · · · · · ·
按有用程度 按页码先后 最新笔记
-
第400页
正醇 (豆瓣:发现生活)
书本给出的答案和演示不符,只需运行(solve)就可以运行了,不用额外加参数。 (setf crypto-text '("zj ze kljjls jf slapzi ezvlij pib kl jufwxuj p hffv jupi jf" "enlpo pib slafml pvv bfwkj")) (setf *encipher-table* (make-hash-table)) (setf *decipher-table* (make-hash-table)) (defun make-substitution (code clear) (setf (gethash clear *encipher-table*) code) (se... (更多)书本给出的答案和演示不符,只需运行(solve)就可以运行了,不用额外加参数。(setf crypto-text '("zj ze kljjls jf slapzi ezvlij pib kl jufwxuj p hffv jupi jf" "enlpo pib slafml pvv bfwkj"))(setf *encipher-table* (make-hash-table))(setf *decipher-table* (make-hash-table))(defun make-substitution (code clear) (setf (gethash clear *encipher-table*) code) (setf (gethash code *decipher-table*) clear))(defun undo-substitution (code clear) (setf (gethash clear *encipher-table*) nil) (setf (gethash code *decipher-table*) nil))(defun clear () (clrhash *encipher-table*) (clrhash *decipher-table*))(defun decipher-string (string) (do* ((len (length string)) (new-string (make-string len :initial-element #\Space)) (i 0 (1+ i))) ((equal i len) new-string) (let* ((char (aref string i)) (new-char (gethash char *decipher-table*))) (when new-char (setf (aref new-string i) new-char)))))(defun show-line (line) (format t "~%~A~%~A~%" line (decipher-string line)))(defun show-text () (format t "~&----------------") (dolist (line crypto-text) (show-line line)) (format t "~&----------------"))(defun get-first-char (x) (char-downcase (char (format nil "~A" x) 0)))(defun read-letter () (let ((obj (read))) (if (member obj '(end undo)) obj (get-first-char obj))))(defun sub-letter (code) (when (gethash code *decipher-table*) (format t "~&'~A' has already been" code) (format t " deciphered as '~A'!" (gethash code *decipher-table*)) (return-from sub-letter nil)) (format t "What does '~A' decipher to? " code) (let ((clear (read-letter))) (cond ((not (characterp clear)) (format t "~&Invalid response.")) ((gethash clear *encipher-table*) (format t "But '~A' already" (gethash clear *encipher-table*)) (format t " deciphers as '~A'!" clear)) (t (make-substitution code clear)))))(defun undo-letter () (format t "~&Undo which letter? ") (let* ((code (read-letter)) (clear (gethash code *decipher-table*))) (cond ((not (characterp code)) (format t "~&Invalid input.")) (clear (undo-substitution code clear)) (t (format t "~&But '~A' wasn’t deciphered!" code)))))(defun solve () (do ((resp nil)) ((equal resp 'end)) (show-text) (format t "~&Substitute which letter? ") (setf resp (read-letter)) (cond ((characterp resp) (sub-letter resp)) ((equal resp 'undo) (undo-letter)) ((equal resp 'end) nil) (t (format t "~&Invalid input."))))) (收起)2012-01-02 12:33:18 6回应
-
第314页
正醇 (豆瓣:发现生活)
9.11 HANDLING END-OF-FILE CONDITIONS 书本这页里的代码有个小错误; 改正如下: (defun read-my-file () (with-open-file (stream "sample-file") (let ((contents (read-all-objects stream (list '$eof$)))) (format t "~&Read ~S objects from the file." (length contents)) contents))) (defun read-all-objects (stream eof-indicator) (let ((r... (更多)9.11 HANDLING END-OF-FILE CONDITIONS书本这页里的代码有个小错误;改正如下:(defun read-my-file () (with-open-file (stream "sample-file") (let ((contents (read-all-objects stream (list '$eof$)))) (format t "~&Read ~S objects from the file." (length contents)) contents)))(defun read-all-objects (stream eof-indicator) (let ((result (read stream nil eof-indicator))) (if (eq result eof-indicator) nil (cons result (read-all-objects stream (list '$eof$)))))) (收起)2011-12-29 09:50:59 回应
-
第314页
正醇 (豆瓣:发现生活)
9.11 HANDLING END-OF-FILE CONDITIONS 书本这页里的代码有个小错误; 改正如下: (defun read-my-file () (with-open-file (stream "sample-file") (let ((contents (read-all-objects stream (list '$eof$)))) (format t "~&Read ~S objects from the file." (length contents)) contents))) (defun read-all-objects (stream eof-indicator) (let ((r... (更多)9.11 HANDLING END-OF-FILE CONDITIONS书本这页里的代码有个小错误;改正如下:(defun read-my-file () (with-open-file (stream "sample-file") (let ((contents (read-all-objects stream (list '$eof$)))) (format t "~&Read ~S objects from the file." (length contents)) contents)))(defun read-all-objects (stream eof-indicator) (let ((result (read stream nil eof-indicator))) (if (eq result eof-indicator) nil (cons result (read-all-objects stream (list '$eof$)))))) (收起)2011-12-29 09:50:59 回应
-
第400页
正醇 (豆瓣:发现生活)
书本给出的答案和演示不符,只需运行(solve)就可以运行了,不用额外加参数。 (setf crypto-text '("zj ze kljjls jf slapzi ezvlij pib kl jufwxuj p hffv jupi jf" "enlpo pib slafml pvv bfwkj")) (setf *encipher-table* (make-hash-table)) (setf *decipher-table* (make-hash-table)) (defun make-substitution (code clear) (setf (gethash clear *encipher-table*) code) (se... (更多)书本给出的答案和演示不符,只需运行(solve)就可以运行了,不用额外加参数。(setf crypto-text '("zj ze kljjls jf slapzi ezvlij pib kl jufwxuj p hffv jupi jf" "enlpo pib slafml pvv bfwkj"))(setf *encipher-table* (make-hash-table))(setf *decipher-table* (make-hash-table))(defun make-substitution (code clear) (setf (gethash clear *encipher-table*) code) (setf (gethash code *decipher-table*) clear))(defun undo-substitution (code clear) (setf (gethash clear *encipher-table*) nil) (setf (gethash code *decipher-table*) nil))(defun clear () (clrhash *encipher-table*) (clrhash *decipher-table*))(defun decipher-string (string) (do* ((len (length string)) (new-string (make-string len :initial-element #\Space)) (i 0 (1+ i))) ((equal i len) new-string) (let* ((char (aref string i)) (new-char (gethash char *decipher-table*))) (when new-char (setf (aref new-string i) new-char)))))(defun show-line (line) (format t "~%~A~%~A~%" line (decipher-string line)))(defun show-text () (format t "~&----------------") (dolist (line crypto-text) (show-line line)) (format t "~&----------------"))(defun get-first-char (x) (char-downcase (char (format nil "~A" x) 0)))(defun read-letter () (let ((obj (read))) (if (member obj '(end undo)) obj (get-first-char obj))))(defun sub-letter (code) (when (gethash code *decipher-table*) (format t "~&'~A' has already been" code) (format t " deciphered as '~A'!" (gethash code *decipher-table*)) (return-from sub-letter nil)) (format t "What does '~A' decipher to? " code) (let ((clear (read-letter))) (cond ((not (characterp clear)) (format t "~&Invalid response.")) ((gethash clear *encipher-table*) (format t "But '~A' already" (gethash clear *encipher-table*)) (format t " deciphers as '~A'!" clear)) (t (make-substitution code clear)))))(defun undo-letter () (format t "~&Undo which letter? ") (let* ((code (read-letter)) (clear (gethash code *decipher-table*))) (cond ((not (characterp code)) (format t "~&Invalid input.")) (clear (undo-substitution code clear)) (t (format t "~&But '~A' wasn’t deciphered!" code)))))(defun solve () (do ((resp nil)) ((equal resp 'end)) (show-text) (format t "~&Substitute which letter? ") (setf resp (read-letter)) (cond ((characterp resp) (sub-letter resp)) ((equal resp 'undo) (undo-letter)) ((equal resp 'end) nil) (t (format t "~&Invalid input."))))) (收起)2012-01-02 12:33:18 6回应
-
第400页
正醇 (豆瓣:发现生活)
书本给出的答案和演示不符,只需运行(solve)就可以运行了,不用额外加参数。 (setf crypto-text '("zj ze kljjls jf slapzi ezvlij pib kl jufwxuj p hffv jupi jf" "enlpo pib slafml pvv bfwkj")) (setf *encipher-table* (make-hash-table)) (setf *decipher-table* (make-hash-table)) (defun make-substitution (code clear) (setf (gethash clear *encipher-table*) code) (se... (更多)书本给出的答案和演示不符,只需运行(solve)就可以运行了,不用额外加参数。(setf crypto-text '("zj ze kljjls jf slapzi ezvlij pib kl jufwxuj p hffv jupi jf" "enlpo pib slafml pvv bfwkj"))(setf *encipher-table* (make-hash-table))(setf *decipher-table* (make-hash-table))(defun make-substitution (code clear) (setf (gethash clear *encipher-table*) code) (setf (gethash code *decipher-table*) clear))(defun undo-substitution (code clear) (setf (gethash clear *encipher-table*) nil) (setf (gethash code *decipher-table*) nil))(defun clear () (clrhash *encipher-table*) (clrhash *decipher-table*))(defun decipher-string (string) (do* ((len (length string)) (new-string (make-string len :initial-element #\Space)) (i 0 (1+ i))) ((equal i len) new-string) (let* ((char (aref string i)) (new-char (gethash char *decipher-table*))) (when new-char (setf (aref new-string i) new-char)))))(defun show-line (line) (format t "~%~A~%~A~%" line (decipher-string line)))(defun show-text () (format t "~&----------------") (dolist (line crypto-text) (show-line line)) (format t "~&----------------"))(defun get-first-char (x) (char-downcase (char (format nil "~A" x) 0)))(defun read-letter () (let ((obj (read))) (if (member obj '(end undo)) obj (get-first-char obj))))(defun sub-letter (code) (when (gethash code *decipher-table*) (format t "~&'~A' has already been" code) (format t " deciphered as '~A'!" (gethash code *decipher-table*)) (return-from sub-letter nil)) (format t "What does '~A' decipher to? " code) (let ((clear (read-letter))) (cond ((not (characterp clear)) (format t "~&Invalid response.")) ((gethash clear *encipher-table*) (format t "But '~A' already" (gethash clear *encipher-table*)) (format t " deciphers as '~A'!" clear)) (t (make-substitution code clear)))))(defun undo-letter () (format t "~&Undo which letter? ") (let* ((code (read-letter)) (clear (gethash code *decipher-table*))) (cond ((not (characterp code)) (format t "~&Invalid input.")) (clear (undo-substitution code clear)) (t (format t "~&But '~A' wasn’t deciphered!" code)))))(defun solve () (do ((resp nil)) ((equal resp 'end)) (show-text) (format t "~&Substitute which letter? ") (setf resp (read-letter)) (cond ((characterp resp) (sub-letter resp)) ((equal resp 'undo) (undo-letter)) ((equal resp 'end) nil) (t (format t "~&Invalid input."))))) (收起)2012-01-02 12:33:18 6回应
-
第314页
正醇 (豆瓣:发现生活)
9.11 HANDLING END-OF-FILE CONDITIONS 书本这页里的代码有个小错误; 改正如下: (defun read-my-file () (with-open-file (stream "sample-file") (let ((contents (read-all-objects stream (list '$eof$)))) (format t "~&Read ~S objects from the file." (length contents)) contents))) (defun read-all-objects (stream eof-indicator) (let ((r... (更多)9.11 HANDLING END-OF-FILE CONDITIONS书本这页里的代码有个小错误;改正如下:(defun read-my-file () (with-open-file (stream "sample-file") (let ((contents (read-all-objects stream (list '$eof$)))) (format t "~&Read ~S objects from the file." (length contents)) contents)))(defun read-all-objects (stream eof-indicator) (let ((result (read stream nil eof-indicator))) (if (eq result eof-indicator) nil (cons result (read-all-objects stream (list '$eof$)))))) (收起)2011-12-29 09:50:59 回应
书评 · · · · · · 我来评论这本书
热门评论 最新评论
Lisp入门最佳书籍
-
- xiaohanyu(我随心动) 我一直以为,学习一门编程语言,最重要的不是学习它的语法,而是它能带给你的编程理念上的更新。以这个标准而言,纵观我所接触过的、甚至写过几行代码的编程语言,只有c、java、shell、python、lisp符合这个标准。 c语言自不必说,奠定了所有计算机的基础;shell让我领略到了Unix的编程哲学(组合小的工具......2011-10-30 7/7有用
本书简单的导读
-
- Juanito http://blog.lisp.tw/blog/2012/02/05/gentle-guide/ Lisp Gentle Introduction to Symbolic Computation 第二版 这本书出版于1990年,线上可免费阅读 (http://www.cs.cmu.edu/~dst/Lis......2012-02-05 来自 John Wiley & Sons Inc版
书中的工具函数dtrace,sdraw和ppmx的地址
-
- reflector(逆风的方向,更适合飞翔) http://www.cs.cmu.edu/~dst/Lisp/dtrace/dtrace.generic http://www.cs.cmu.edu/~dst/Lisp/sdraw/sdraw.generic http://www.cs.cmu.edu/~dst/Lisp/ppmx.lisp......2011-06-25 1/1有用来自 John Wiley & Sons Inc版
"Common Lisp"的论坛 · · · · · ·
| amazon.com上全五星... | 来自哗呀哩呜 | 2 回应 | 2009-12-12 |
| 真正的clisp的好书 | 来自[已注销] | 1 回应 | 2010-06-25 |
- > 点这儿转让 有40人想读,手里有一本闲着?
这本书的其他版本 · · · · · · ( 全部2 )
以下豆列推荐 · · · · · · (全部)
- Lisp书不要钱 (哗呀哩呜)
- LISP & FPL (FTS.)
- Common Lisp系列 (netcasper)
- CS (Albert)
- 读书 (神英侍者)
谁读这本书?
西粉
tags:lisp 经典 基础
语言简单易懂,图示生动,习题丰富,答案解法精妙~~~是一本入门Common Lisp的好书,鄙人不才,只读到第8章,等掌握python了再读它,并行学习两门语言我拿不下
1月19日想读
tags:lisp 经典 基础
语言简单易懂,图示生动,习题丰富,答案解法精妙~~~是一本入门Common Lisp的好书,鄙人不才,只读到第8章,等掌握python了再读它,并行学习两门语言我拿不下
> 5人在读
> 13人读过
> 40人想读
订阅关于Common Lisp的评论:
feed: rss 2.0



