出版社: Benjamin-Cummings Pub Co
副标题: A Gentle Introduction to Symbolic Computation
出版年: 1989
页数: 600
定价: GBP 38.03
装帧: Paperback
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.
喜欢读"Common Lisp"的人也喜欢的电子书 · · · · · ·
喜欢读"Common Lisp"的人也喜欢 · · · · · ·
Common Lisp的话题 · · · · · · ( 全部 条 )



Common Lisp的书评 · · · · · · ( 全部 5 条 )


书中的工具函数dtrace,sdraw和ppmx的地址

写得十分中肯的语言书。
> 更多书评5篇
读书笔记 · · · · · ·
我来写笔记-
JeOam (豆瓣:发现生活)
书本给出的答案和演示不符,只需运行(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... (6回应)2012-01-02 12:33
书本给出的答案和演示不符,只需运行(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.")))))6回应 2012-01-02 12:33 -
JeOam (豆瓣:发现生活)
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...2011-12-29 09:50
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
-
JeOam (豆瓣:发现生活)
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...2011-12-29 09:50
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 -
JeOam (豆瓣:发现生活)
书本给出的答案和演示不符,只需运行(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... (6回应)2012-01-02 12:33
书本给出的答案和演示不符,只需运行(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.")))))6回应 2012-01-02 12:33
-
JeOam (豆瓣:发现生活)
书本给出的答案和演示不符,只需运行(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... (6回应)2012-01-02 12:33
书本给出的答案和演示不符,只需运行(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.")))))6回应 2012-01-02 12:33 -
JeOam (豆瓣:发现生活)
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...2011-12-29 09:50
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
论坛 · · · · · ·
真正的clisp的好书 | 来自[已注销] | 1 回应 | 2010-06-25 |
amazon.com上全五星... | 来自哗呀哩呜 | 1 回应 | 2009-12-12 |
这本书的其他版本 · · · · · · ( 全部3 )
- Dover Publications版 2013-2-20 / 6人读过
- John Wiley & Sons Inc版 1990 / 2人读过
以下豆列推荐 · · · · · · ( 全部 )
- Lisp书不要钱 (哗呀哩呜)
- Common Lisp系列 (netcasper)
- 屠龙之路 ([已注销])
- Lisp & Haskell (羊羽北)
- Common Lisp ([已注销])
谁读这本书?
二手市场
订阅关于Common Lisp的评论:
feed: rss 2.0
0 有用 allen 2015-04-02
相当不错的common lisp入门书
0 有用 xiaohanyu 2011-10-30
真正的Lisp入门好书,比起《ANSI Common Lisp》,这本书的可操作性更强些,尤其是每章最后推荐的Lisp ToolSet,个个都很不错。
0 有用 JeOam 2012-01-02
真够gentle的!
0 有用 lili 2012-03-17
手把手的教呀。
0 有用 这位同学 2012-05-23
非常好的Lisp入门书
0 有用 foss 2016-08-02
非常用心的一本书,内容详尽,入门必读。
0 有用 allen 2015-04-02
相当不错的common lisp入门书
0 有用 testcraft 2013-09-03
good introductory book, very easy one which can be finished in one week
0 有用 Liutos 2012-11-27
算是我的启蒙书吧,很简单很适合入门~
0 有用 这位同学 2012-05-23
非常好的Lisp入门书