Recommended books about Lisp

Recommended books about Lisp

This site introduces recommended books about Lisp. This site also provides you the reviews from the readers. I hope this site will help you to choose the book to buy.

Mastering Regular Expressions


TitleMastering Regular Expressions
AuthorJeffrey Friedl
PublisherO'Reilly Media, Inc.
Price$4499
AvailableUsually ships in 24 hours
Description
Regular expressions are an extremely powerful tool for manipulating text and data. They are now standard features in a wide range of languages and popular tools, including Perl, Python, Ruby, Java, VB.NET and C# (and any language using the .NET Framework), PHP, and MySQL.

If you don't use regular expressions yet, you will discover in this book a whole new world of mastery over your data. If you already use them, you'll appreciate this book's unprecedented detail and breadth of coverage. If you think you know all you need to know about regular expressions, this book is a stunning eye-opener.

As this book shows, a command of regular expressions is an invaluable skill. Regular expressions allow you to code complex and subtle text processing that you never imagined could be automated. Regular expressions can save you time and aggravation. They can be used to craft elegant solutions to a wide range of problems. Once you've mastered regular expressions, they'll become an invaluable part of your toolkit. You will wonder how you ever got by without them.

Yet despite their wide availability, flexibility, and unparalleled power, regular expressions are frequently underutilized. Yet what is power in the hands of an expert can be fraught with peril for the unwary. Mastering Regular Expressions will help you navigate the minefield to becoming an expert and help you optimize your use of regular expressions.

Mastering Regular Expressions, Third Edition, now includes a full chapter devoted to PHP and its powerful and expressive suite of regular expression functions, in addition to enhanced PHP coverage in the central "core" chapters. Furthermore, this edition has been updated throughout to reflect advances in other languages, including expanded in-depth coverage of Sun's java.util.regex package, which has emerged as the standard Java regex implementation.Topics include:

  • A comparison of features among different versions of many languages and tools
  • How the regular expression engine works
  • Optimization (major savings available here!)
  • Matching just what you want, but not what you don't want
  • Sections and chapters on individual languages

Written in the lucid, entertaining tone that makes a complex, dry topic become crystal-clear to programmers, and sprinkled with solutions to complex real-world problems, Mastering Regular Expressions, Third Edition offers a wealth information that you can put to immediate use.

Reviews of this new edition and the second edition:

"There isn't a better (or more useful) book available on regular expressions."
--Zak Greant, Managing Director, eZ Systems

"A real tour-de-force of a book which not only covers the mechanics of regexes in extraordinary detail but also talks about efficiency and the use of regexes in Perl, Java, and .NET...If you use regular expressions as part of your professional work (even if you already have a good book on whatever language you're programming in) I would strongly recommend this book to you."
--Dr. Chris Brown, Linux Format

"The author does an outstanding job leading the reader from regex novice to master. The book is extremely easy to read and chock full of useful and relevant examples...Regular expressions are valuable tools that every developer should have in their toolbox. Mastering Regular Expressions is the definitive guide to the subject, and an outstanding resource that belongs on every programmer's bookshelf. Ten out of Ten Horseshoes."
--Jason Menard, Java Ranch


Description
Regular expressions are a central element of UNIX utilities like egrep and programming languages such as Perl. But whether you're a UNIX user or not, you can benefit from a better understanding of regular expressions since they work with applications ranging from validating data-entry fields to manipulating information in multimegabyte text files. Mastering Regular Expressions quickly covers the basics of regular-expression syntax, then delves into the mechanics of expression-processing, common pitfalls, performance issues, and implementation-specific differences. Written in an engaging style and sprinkled with solutions to complex real-world problems, Mastering Regular Expressions offers a wealth information that you can put to immediate use.

Great book, but little Ruby
Review DateF2008-09-07  RatingF
This book is great if you want to learn about what you can do with regex, how they work, how you can improve them (efficiency & accuracy) and what kind of pitfalls there are.

My only gripe is about the Ruby reference on the cover. In the top right corner it says: "For Perl, PHP, Java, .NET, Ruby and more!" Perl, Java, .NET and PHP each get their own chapters (together 200 pages). Ruby, however, only participates in feature comparisons and benchmarks. If I had checked the ToC I would've known this, so I won't hold it against the book that much.

The Ruby thing is a bummer, but since the book is great, it will get all five stars.

Overall good book with some quirks
Review DateF2008-06-19  RatingF
The book is robust and goes into alot detail. I liked the comparing and contrasting between the various RegEx implementations. I had a difficult time digesting some of the detail. In particular, the analogies confused me and I felt the author went overboard with them. Many times, I had to backtrack to understand what was being discussed. However, regular expressions is a complex topic and the author did a good job easing into the concepts. An additional plus was with inline page citation - this helped to find the page corresponding to the topic being discussed.
I would have liked shorter chapters with chapter summaries and more diagrams in place of analogies. Ultimately, Mastering Regular Expressions is a good book referencing a complex topic.

Best material I have seen on regular expressions
Review DateF2008-06-01  RatingF
I went through several books and online tutorials and never found anything that did a good comprehensive job of explaining regular expressions. This book does. If you are having trouble "getting it", I highly encourage reading this book. You will be extremely enlightened even after the first few chapters.

Very in-depth
Review DateF2008-05-23  RatingF
Quite a comprehensive guide to regular expressions. Gets very detailed in the areas that it covers. However, definitely not a 'beginner's guide'. I highly recommend that you are already comfortable with the basis of regular expressions before picking up this book. You will get way more out of it if this is not your first introduction to it. Comfort and proficiency with Perl would also be a big help. Title is correct though, this is a guide to 'mastering' regular expressions, not learning them from the beginning.

Will take you a long way down the rabbit hole
Review DateF2008-02-15  RatingF
How deep down the rabbit hole do you really NEED to go? I had a serious need to get on top of regular expressions to solve one particular problem. I looked at several online tutorials which didn't take me where I needed to go, so I ordered Mastering Regular Expressions after reading the Amazon reviews. I always look at the negative reviews first. In spite of the negative reviews I ordered the book with an open mind.
When the book arrived I began reading it with enthusiasm. In the preface there is a small section on "How to Read This Book". I bought into the author's suggestion to read the book's first six chapters first. I was captivated through the first three chapters, and then somewhere in chapter 4 I began to get very weary with information overload. After putting the book down for a couple of days I decided to skip the rest and use what I needed to write the one regular expression I had need of. The book did successfully help me accomplish this, so I gave it 3 stars. Not only did it give me the information I needed that the online tutorials didn't, it also gave me the confidence I needed. For that, which I am grateful, I would have liked to have given it more stars. I think many of those in need of learning about regular expression could be well served by a "lite-edition" of this book. Perhaps someday when I have the time and the need I may try to wade through the rest of the book, but as it is now Mastering Regular Expressions took me far farther down the rabbit hole than I really needed or wanted to go.
If you need to get on top of Regular Expressions, I would recommend this book, however just be ready to be taken far deeper than the average coder probably needs to go.




Perl Best Practices


TitlePerl Best Practices
AuthorDamian Conway
PublisherO'Reilly Media, Inc.
Price$3995
AvailableUsually ships in 24 hours
Description
Many programmers code by instinct, relying on convenient habits or a "style" they picked up early on. They aren't conscious of all the choices they make, like how they format their source, the names they use for variables, or the kinds of loops they use. They're focused entirely on problems they're solving, solutions they're creating, and algorithms they're implementing. So they write code in the way that seems natural, that happens intuitively, and that feels good.

But if you're serious about your profession, intuition isn't enough. Perl Best Practices author Damian Conway explains that rules, conventions, standards, and practices not only help programmers communicate and coordinate with one another, they also provide a reliable framework for thinking about problems, and a common language for expressing solutions. This is especially critical in Perl, because the language is designed to offer many ways to accomplish the same task, and consequently it supports many incompatible dialects.

With a good dose of Aussie humor, Dr. Conway (familiar to many in the Perl community) offers 256 guidelines on the art of coding to help you write better Perl code--in fact, the best Perl code you possibly can. The guidelines cover code layout, naming conventions, choice of data and control structures, program decomposition, interface design and implementation, modularity, object orientation, error handling, testing, and debugging.

They're designed to work together to produce code that is clear, robust, efficient, maintainable, and concise, but Dr. Conway doesn't pretend that this is the one true universal and unequivocal set of best practices. Instead, Perl Best Practices offers coherent and widely applicable suggestions based on real-world experience of how code is actually written, rather than on someone's ivory-tower theories on how software ought to be created.

Most of all, Perl Best Practices offers guidelines that actually work, and that many developers around the world are already using. Much like Perl itself, these guidelines are about helping you to get your job done, without getting in the way.

Praise for Perl Best Practices from Perl community members:

"As a manager of a large Perl project, I'd ensure that every member of my team has a copy of Perl Best Practices on their desk, and use it as the basis for an in-house style guide." -- Randal Schwartz

"There are no more excuses for writing bad Perl programs. All levels of Perl programmer will be more productive after reading this book." -- Peter Scott

"Perl Best Practices will be the next big important book in the evolution of Perl. The ideas and practices Damian lays down will help bring Perl out from under the embarrassing heading of "scripting languages". Many of us have known Perl is a real programming language, worthy of all the tasks normally delegated to Java and C++. With Perl Best Practices, Damian shows specifically how and why, so everyone else can see, too." -- Andy Lester

"Damian's done what many thought impossible: show how to build large, maintainable Perl applications, while still letting Perl be the powerful, expressive language that programmers have loved for years." -- Bill Odom

"Finally, a means to bring lasting order to the process and product of real Perl development teams." -- Andrew Sundstrom

"Perl Best Practices provides a valuable education in how to write robust, maintainable Perl, and is a definitive citation source when coaching other programmers." -- Bennett Todd "I've been teaching Perl for years, and find the same question keeps being asked: Where can I find a reference for writing reusable, maintainable Perl code? Finally I have a decent answer." -- Paul Fenwick "At last a well researched, well thought-out, comprehensive guide to Perl style. Instead of each of us developing our own, we can learn good practices from one of Perl's most prolific and experienced authors. I recommend this book to anyone who prefers getting on with the job rather than going back and fixing errors caused by syntax and poor style issues." -- Jacinta Richardson "If you care about programming in any language read this book. Even if you don't intend to follow all of the practices, thinking through your style will improve it." -- Steven Lembark "The Perl community's best author is back with another outstanding book. There has never been a comprehensive reference on high quality Perl coding and style until Perl Best Practices. This book fills a large gap in every Perl bookshelf." -- Uri Guttman

Write Perl on Purpose
Review DateF2008-11-15  RatingF
I started reading Perl Best Practices from page 8 and got bored quickly. But that's because I was reading it the wrong way. First thing, the two introductions -- the preface, and chapter 1, are among the best explanations for why you should care how you write code, in any programming language. The preface begins, "This book is designed to help you write ... the best Perl code you possibly can." Chapter 1 starts with simply, "Code matters." So resist any temptation to skip these intros. Meanwhile, the remaining 18 chapters, each with roughly 20 specific items, cover all of Perl -- much more than one confronts in any specific program. So of course it's boring to read it cover to cover -- it's a reference. But don't just leave it on the shelf until you need it. Instead, set aside 10 minutes a day, and each time, open it up anywhere and start reading. You'll probably be pleasantly suprised to learn something new and useful about a construct you've used many times before.

Still, no one book is the answer. I say read this Perl book for the bite-sized details, and pair it with "Effective Perl Programming" by Hall and Schwartz for the big picture.

All good
Review DateF2007-09-14  RatingF
This a great manual. Instead of being a reference like most books that you may only need parts of, every chapter has some interesting information and is applicable to daily coding. Since at this point you can learn a lot of Perl just on Google, textbook style manuals are on the way out. Best practices, though, is still very applicable. I wish I had read this book years ago looking back at my functional but awkward scripts.

Ruby and Python aficionados, take this!
Review DateF2007-08-17  RatingF
One of the biggest asset in the Perl community is the people that form it. And Damien Conway is one of its outstanding members. Possibly the best speaker I've ever seen, he injects wisdom and wit in its books, which always take you a bit further in the path of Perl Enlightment. This one, of course, is no exception. Not only it teaches what you should do, but the many things you _shoulnd't_ do.
When will we be seeing a novel by Damien Conway? Don't let Charles Stross be the only perl monger that writes novels!

Best Perl book ever
Review DateF2007-07-15  RatingF
Not only the best Perl book I've ever read, it's also one of the best programming language books, period.

If you've ever programmed C++ or Java, you'll know how revered the likes of Effective C++ and Effective Java are, a series of tips, suggestions, idioms, advice and commandments. This is the equivalent for Perl, except it's even more thorough and covers even more ground, from brace layout and statement formatting, to regexes, unit testing, documentation and command line parsing.

There's also an exceptionally good chapter on object orientation, wherein author Damian Conway guides the reader through the use of his own Class::Std module. If you're using objects in Perl, and you're still rolling your own, you're really making life unnecessarily difficult for yourself. Class::Std provides object features reminiscent of CLOS, and makes Perl competitive with the likes of Python and Ruby when it comes to objects. Class::Std has changed the way I code Perl forever, and I know I'm not the only one. Seriously, this chapter is worth the price of admission on it own.

It's hard to overstate just how much excellent stuff there is in here, there's even useful emacs and vi settings provided! And I've not even mentioned how well written it is. Damian Conway really does prove himself the master of witty examples.

Perl Best Practices is just brilliant. Absolutely essential reading - don't code Perl without it.

Don't Write Code Without It
Review DateF2007-03-11  RatingF
This is a fantastic book that's valuable no matter what language you
program in. I've been writing code for three decades and have
programmed in almost two dozen languages and the priorities are always
the same when writing / reviewing code: maintainability, efficiency and
robustness. Every dictum in this book clearly advances one or more of
these priorities. If you're like me, you'll wish you had this book when
you started your software engineering career.

For development teams, this book is an instant win. With any
development team, there is always a discussion as to what coding
standards to use. Perl BP can be used to short-circuit such debate, to
the benefit of everyone involved.

Of course, not everyone will be happy with the standards outlined in the
book. Before I plunged in, I skimmed through the book and found things
that I disagreed with: K&R braces; loop labeling; no unless statements;
postfix if; etc. The arguments made in the book, however, are so
compelling that I'm now gladly writing my code to conform with them.

I always feel fortunate when I read a book that makes me want to change
my behavior for the better. Perl BP is one of these books.




Learning GNU Emacs, Third Edition


TitleLearning GNU Emacs, Third Edition
AuthorDebra Cameron,James Elliott,Marc Loy,Eric Raymond,Bill Rosenblatt
PublisherO'Reilly Media, Inc.
Price$3995
AvailableUsually ships in 24 hours
Description
GNU Emacs is the most popular and widespread of the Emacs family of editors. It is also the most powerful and flexible. Unlike all other text editors, GNU Emacs is a complete working environment--you can stay within Emacs all day without leaving. Learning GNU Emacs, 3rd Edition tells readers how to get started with the GNU Emacs editor. It is a thorough guide that will also "grow" with you: as you become more proficient, this book will help you learn how to use Emacs more effectively. It takes you from basic Emacs usage (simple text editing) to moderately complicated customization and programming. The third edition of Learning GNU Emacs describes Emacs 21.3 from the ground up, including new user interface features such as an icon-based toolbar and an interactive interface to Emacs customization. A new chapter details how to install and run Emacs on Mac OS X, Windows, and Linux, including tips for using Emacs effectively on those platforms. Learning GNU Emacs, third edition, covers:
  • How to edit files with Emacs
  • Using the operating system shell through Emacs
  • How to use multiple buffers, windows, and frames
  • Customizing Emacs interactively and through startup files
  • Writing macros to circumvent repetitious tasks
  • Emacs as a programming environment for Java, C++, and Perl, among others
  • Using Emacs as an integrated development environment (IDE)
  • Integrating Emacs with CVS, Subversion and other change control systems for projects with multiple developers
  • Writing HTML, XHTML, and XML with Emacs
  • The basics of Emacs Lisp
The book is aimed at new Emacs users, whether or not they are programmers. Also useful for readers switching from other Emacs implementations to GNU Emacs.

Add to Your Private Collection of Emacs Documentation
Review DateF2008-05-16  RatingF
Emacs comes with great documentation, and there is a ton of it on the web. Nevertheless a structured book that is well-designed with great illustrations and examples is priceless. Despite my level of skill with Emacs (I "live in Emacs," using it for all my basic computing tasks), I consult this book regularly. It's a regular part of my Emacs library!

This book covers more than just using the editor: building Emacs from source, the help system, and Emacs Lisp are covered as well. This book is always telling me about things that I didn't know Emacs could do.

Although I have read a few chapters from front-to-back, I mainly use this book as a reference.

The road less traveled
Review DateF2007-11-29  RatingF
It seemed odd to me during my Sophomore year at Penn State that the Computer Science Department wanted me to learn a text editor to do computer programming on UNIX computers. In the business classes students were taught to use an IDE on Windows computers. I remember asking myself why would I be one of the few to learn how to use a text editor to do computer programming when the masses where learning to use a GUI approach. I made up my mind that the computer scientists probably knew more about programming than the business professors, and taking the road less traveled has made all the difference.

While I am no where near a Emacs expert this book has made me into more than just a casual user. Learning how to do the keyboard macros has saved me countless hours of work over the years. Sometimes if I plan on doing a lot of typing for a business document I'll use emacs to get started so I don't have to lift my fingers off the keys, then paste the text into word for formatting.

Using this book to expand my previous knowledge of Emacs has had exponential return on investment. I highly recommend it, to anyone that is trying to learn or wants to improve their emacs skill level.

Doesn't cover everything, but I've been using Emacs for 3 years and learned a lot here
Review DateF2006-02-03  RatingF
LEARNING GNU EMACS is an introduction to the most powerful text editor ever made, a fully-programmable environment that through contributions from thousands has become something of an operating system in itself. This third edition covers all the new enhancements made in version 21.3.

The book begins with an introduction to Emacs as it : a text editor. It gives basic commands for moving around, describes the look of the user interface, teaches how to search and replace, and how to make simple (and not-so-simple) macros. But Emacs isn't just a simple text editor, it also has extensions to do everything from drawing simple pictures to managing your schedule. In the next portion the book describes among other things Dired, the Emacs file manager, the calendar and diary functions, and how to execute commands from within Emacs.

Since Emacs functions as an integrated-development environment for many programming languages, a fairly large portion of the book focus on how Emacs can help the software developer. Concerning markup languages, this new edition covers the excellent nxml mode for XML documents, and in terms of computer languages it describes modes for C, C++, Java, Perl, SQL, and Lisp. Unfortunately, the Python mode is not discussed. An entire chapter is devoted to Emacs' interface to version control systems like CVS.

The book doesn't aim itself at only a beginner's market. It teaches one already proficient in editing to customize Emacs. At the simplest, this means tinkering with one's "~/.emacs" file, but it also includes using the power of Lisp to change all aspects of Emacs.

This book could only be perfect if it were twice as large as it is now, since Emacs has so much in it. I think it a pity that the book doesn't cover Gnus, a mail and news reader that takes advantage of Emacs' scriptable nature to offer immense configurability and power. In fact, it doesn't cover the popular Mew mail reader or Emacs' limited built-in mail reader at all. Also, the bit on search and replace doesn't give any small intro to regular expressions.

Emacs is not for everyone, and even with a fine book like this some people are not going to like it. But if you are comfortable doing basic editing with Emacs, and want to maximize your efficiency, then LEARNING GNU EMACS can help.

Respects the intellect of one motivated enough to learn Emacs and enables mastery of the tool
Review DateF2005-09-15  RatingF
If a person is thinking of learning GNU Emacs, or if they have been using it and are looking to sharpen their skills and broaden their Emacs savvy, it is a fairly safe assumption that the individual is motivated. This person probably knows their way around a command prompt, and it is likely that they are aware that Lisp is more than just a speech impediment. This person needs a book that offers expert advice without wasting time or insulting the intellect of the reader. Learning GNU Emacs, 3rd Edition is that book.

As a programmer, when firing up a monolithic word processor or graphical IDE to edit a simple script or properties file, one cannot help but wonder if these tools aren't overkill much of the time. For a growing number of users, the answer is yes. The tried-and-true text editor is enjoying a renaissance of sorts. One of the most extensible and customizable applications in the text editing category is the venerable GNU Emacs.

The tutorials and documentation for Emacs are abundant, but they often prove time-consuming and ineffective for actually learning Emacs. This book is a refreshing break from the documentation many have come to expect. Imagine you had a consortium of leading experts on Emacs at your disposal to teach you how to use it in a conversational, consultative style. That is what has been bundled into this latest edition of the book.

The extensibility of Emacs has been both a key strength and a criticism of the application. Its user and developer community have created all sorts of additional capabilities for Emacs, ranging from the impressive to the absurd. The authors have done well to judiciously select what to cover in this edition. For example, while Emacs does have the capability to function as an email client, other applications have long superceded its ability. The authors have chosen not to cover this topic, and instead devote the available space to learning Emacs' core functionality - powerful, efficient text editing. Other peripheral areas of Emacs have been left for the user to research after gaining their solid foundation on Emacs as editor and work environment, such as compatibility modes for programming languages other than Java and Perl.

This edition of the book uses the space gained by the removal of esoteric topics to flesh out areas of more common interest. Integration with the major version control systems has been expanded to include Subversion alongside of the age-old standards CVS, RCS, and SCCS. Coverage of support for Java and Perl has also improved, as well as sections for editing HTML and XML. Users wanting to tap into the power of Lisp programming for Emacs should find the coverage satisfying as well.

Perhaps the most distinguishing feature of this book is the chapter devoted to the use of Emacs on different platforms. Unix, Windows and Mac OS X users receive equal acknowledgement. The precautions and insights regarding Emacs nuances when used on particular platforms can reduce users' frustration when getting started with Emacs.

Even current Emacs users can benefit from this work. The mnemonic devices and conventions used in the book allow users to commit useful keyboard commands to memory. The memorization is further solidified by the exercises sprinkled appropriately through each chapter. Readers do not go for very many pages before it is time to be at the keyboard again, harnessing the power of muscle memory to reinforce the material presented.

A Professional Book for Professional Programmers
Review DateF2005-03-19  RatingF
Most of the Unix/Linux senior level Wizzards that I know use Emacs and swear by it. There are others (vi users especially) who swear at it, but that's another story. Emacs is a huge package and is growing bigger. Although you can consider it a text editor, it's a big, massive package that does a lot more than just edit text.

At the start of the book the authors comment "Many people think that Emacs is an extremely difficult editor to learn. We don't see why." I think the WHY is that most people start with a simpler more fundamental text editor like vi. Then when they think of moving to Emacs their fingers have to un-learn the vi commands to replace them with the Emacs commands. The authors say they don't recommend the vi emulation mode built into Emacs, but fingers sometimes take a long time to un-learn.

If you've just decided to move to Linux, you might want to start with Emacs and never go the vi route. There is no question that Emacs has more power. Comparing to the Microsoft world, I think of vi like NotePad, while Emacs is like Word.

There's an interesting table near the front of the book that asks you what you want to do with Emacs. If you want to write HTML, read Preface and Chapters 1-3 & 8. Then after you are getting some work out of the package, you can go to other chapters as you need them - Chapter 12, for instance to use Emacs to compare files.

About half the book is on 'simple' text editing, where their 'simple' maybe isn't as 'simple' as the rest of us consider 'simple.' I do a lot of SQL, Chapter 9 talks about the editing support for SQL, and for other programming environments like Perl, Lisp, JDEE, etc.

This book is from O'Reilly. O'Reilly does professional quality books for professional programmers. If it's time to learn Emacs, you can't do better than this.




Structure and Interpretation of Computer Programs - 2nd Edition (MIT Electrical Engineering and Computer Science)


TitleStructure and Interpretation of Computer Programs - 2nd Edition (MIT Electrical Engineering and Computer Science)
AuthorHarold Abelson,Gerald Jay Sussman
PublisherThe MIT Press
Price$8200
AvailableUsually ships in 24 hours
Description
Structure and Interpretation of Computer Programs has had a dramatic impact on computer science curricula over the past decade. This long-awaited revision contains changes throughout the text.

There are new implementations of most of the major programming systems in the book, including the interpreters and compilers, and the authors have incorporated many small changes that reflect their experience teaching the course at MIT since the first edition was published.

A new theme has been introduced that emphasizes the central role played by different approaches to dealing with time in computational models: objects with state, concurrent programming, functional programming and lazy evaluation, and nondeterministic programming. There are new example sections on higher-order procedures in graphics and on applications of stream processing in numerical programming, and many new exercises.

In addition, all the programs have been reworked to run in any Scheme implementation that adheres to the IEEE standard.

Description
Abelson and Sussman's classic Structure and Interpretation of Computer Programs teaches readers how to program by employing the tools of abstraction and modularity. The authors' central philosophy is that programming is the task of breaking large problems into small ones. The book spends a great deal of time considering both this decomposition and the process of knitting the smaller pieces back together.

The authors employ this philosophy in their writing technique. The text asks the broad question "What is programming?" Having come to the conclusion that programming consists of procedures and data, the authors set off to explore the related questions of "What is data?" and "What is a procedure?"

The authors build up the simple notion of a procedure to dizzying complexity. The discussion culminates in the description of the code behind the programming language Scheme. The authors finish with examples of how to implement some of the book's concepts on a register machine. Through this journey, the reader not only learns how to program, but also how to think about programming.


Have you read your SICP today?
Review DateF2008-07-07  RatingF
I read this book because it was assigned for a course in school and I feel that working through the book greatly increased my ability. Now that school's out I find myself wanting to conjure the spirits of the computer with my spells and asking people to `read SICP' in all kinds of conversation.

go back to skool!
Review DateF2008-05-20  RatingF
i bought this after wanting to brush up on theory, algorithms, programming concepts and all the other Compsci stuff but didn't want to go back to skool.

this book really helps brush up on what you need to know and I would recommend that anyone taking compsci today get this book and work thru it in conjunction with your regular classes.

those of you who didn't go to compsci should get this book too.
You will learn a lot..but not how to spel!

The one book *every* programmer must read
Review DateF2008-04-18  RatingF
My first encounter with SICP was in the second year of university, where I took a course named "SICP 1. I already had working programming experience by that time, so the course wasn't hard, but I was struck by the beauty of the subjects it taught, by the Scheme language it used and by the long and interesting homework assignments it had. This course woke my curiosity about functional programming, and the Lisp family of languages in particular.

A few years later, with much more experience behind my back, I've decided to tackle SICP seriously and read the whole book, solving the vast majority of the exercises. This endeavor took about 10 months, and I enjoyed it immensely. I think SICP is a wonderful book, a seminal work in the field of programming. It is one of those rare books every programmer should read. In this review I'll try to explain why.

In contrast with most introductory books about programming that just teach you a language, SICP takes a far better approach. The main goal of the authors is not to teach Scheme, it is to teach programming. From the beginning, the book takes an integrative path, where the basic axioms of programming are presented, and later are fortified with examples and exercises. SICP teaches about computational processes - iterative and recursive. How to use them best in each situation, and how to implement them. It also explains abstraction by functional composition. These are topics rarely presented in programming books, but SICP puts them rightly in the first chapter, because they are the real stuff programming is based on.

The example programs developed in the book are real, large, and exciting. You'll get to develop a powerful picture language, a generic object-oriented arithmetic package including complex and polynomial arithmetic, a simulator for digital circuits, a symbolic differentiation package, an interpreter for Scheme written in Scheme, an interpreter for a logic programming language similar to Prolog, a virtual machine for a simplified pseudo-assembly DSL, an interpreter for Scheme written in this pseudo-assembly, and finally a compiler from Scheme to the assembly language. All these examples are real, well-thought out exercises for skill, taken from beginning to a very complete end. In no other book such a wealth of topics is addressed in an accessible manner.

A word about exercises in SICP. They are numerous, some of them are hard, but the exercises are the best way to really understand what the book tries to teach. In a manner, they're as integral part of the book as the text itself. The exercises are very well prepared and lead the reader through the examples coded by the authors into greater understanding of the topics taught. At times, it feels like the exercises are specifically designed to force you to think about the essence of the topics, and not just grasp them superficially.

SICP commonly suffers from the criticism that it's too hard for beginners. Maybe this criticism is rightful, and universities should give a simpler introductory course to programming before SICP. But this is an aspect of the educational systems, not pertaining to the book itself. I wouldn't know, I never read SICP as a beginner. However it is being taught, SICP is an amazing book. It is by far the best programming book I have ever laid by hands on, and I seriously doubt that it will be surpassed any time soon. Reading SICP will enlighten you as a programmer, and make you a better one. I can't imagine one programmer who won't gain something important by reading SICP.

Single most important CS book
Review DateF2008-04-05  RatingF
If you disagree, hopefully you're thinking Knuth. But consider this: Knuth is a wonderful bestiary of important programs and proofs; SICP is about the very nature of programming and programs.

If you're not thinking either, and no offense to K&R et al: Do yourself a favor, watch the videos. Sussman & Abelson are entertaining teachers. SICP is a difficult book, and seeing Sussman in a fez after the metacircular evaluator just... helps.

But of course Graham's and Norvig's reviews are gems of their own.

this book saved my life
Review DateF2007-12-16  RatingF
So there I was, 18 years old, having been raised on a toxic stew of MS-BASIC, Apple II assembly and some MPW Pascal. My mind was poisoned. Everything I knew about programming was wrong. I read book after book on programming and CS, but none of them really seemed to make a real dent in my style.

Enter SICP. In a few months, this book reshaped my concept of what it meant to program a computer. It does not spend time teaching a language; Scheme is presented precisely because its syntax and commands can be covered in about ten minutes, and its structure becomes absolutely transparent within a few days of looking at Scheme code. It does not spend time walking the reader through common coding tasks, as a Learn X In 24 Hours text might.

SICP teaches the fundamentals of programming mastery. Abstraction, modularity, design paradigms, compilation and interpretation, and more topics are presented in a style which is exactly as simple as it can be, and no simpler. Scheme allows these topics to be covered without becoming mired in details which would otherwise plague the implementor.

It will not show you how to write a GUI, scrape a web page, develop a social networking website or create a network server. It will, however, guide a dedicated reader through an exploration of immensely powerful programming technique, and it will prepare the reader to solve any problem in any language for the future.

SICP is not a machine gun, putting power into casual hands. It is a light saber, rewarding discipline and practice with unstoppable capability.




Hackers and Painters: Big Ideas from the Computer Age


TitleHackers and Painters: Big Ideas from the Computer Age
AuthorPaul Graham
PublisherO'Reilly Media, Inc.
Price$2295
AvailableUsually ships in 24 hours
Description
"The computer world is like an intellectual Wild West, in which you can shoot anyone you wish with your ideas, if you're willing to risk the consequences." --from "Hackers & Painters: Big Ideas from the Computer Age," by Paul Graham We are living in the computer age, in a world increasingly designed and engineered by computer programmers and software designers, by people who call themselves hackers. Who are these people, what motivates them, and why should you care? Consider these facts: Everything around us is turning into computers. Your typewriter is gone, replaced by a computer. Your phone has turned into a computer. So has your camera. Soon your TV will. Your car was not only designed on computers, but has more processing power in it than a room-sized mainframe did in 1970. Letters, encyclopedias, newspapers, and even your local store are being replaced by the Internet. "Hackers & Painters: Big Ideas from the Computer Age," by Paul Graham, explains this world and the motivations of the people who occupy it. In clear, thoughtful prose that draws on illuminating historical examples, Graham takes readers on an unflinching exploration into what he calls "an intellectual Wild West." The ideas discussed in this book will have a powerful and lasting impact on how we think, how we work, how we develop technology, and how we live. Topics include the importance of beauty in software design, how to make wealth, heresy and free speech, the programming language renaissance, the open-source movement, digital design, internet startups, and more. And here's a taste of what you'll find in "Hackers & Painters": "In most fields the great work is done early on. The paintings made between 1430 and1500 are still unsurpassed. Shakespeare appeared just as professional theater was being born, and pushed the medium so far that every playwright since has had to live in his shadow. Albrecht Durer did the same thing with engraving, and Jane Austen with the novel. Over and over we see the same pattern. A new medium appears, and people are so excited about it that they explore most of its possibilities in the first couple generations. Hacking seems to be in this phase now. Painting was not, in Leonardo's time, as cool as his work helped make it. How cool hacking turns out to be will depend on what we can do with this new medium." Andy Hertzfeld, co-creator of the Macintosh computer, says about "Hackers & Painters": "Paul Graham is a hacker, painter and a terrific writer. His lucid, humorous prose is brimming with contrarian insight and practical wisdom on writing great code at the intersection of art, science and commerce." Paul Graham, designer of the new Arc language, was the creator of Yahoo Store, the first web-based application. In addition to his PhD in Computer Science from Harvard, Graham also studied painting at the Rhode Island School of Design and the Accademia di Belle Arti in Florence.

Informative and Enjoyable
Review DateF2008-04-25  RatingF
Hackers and Painters is a good read. I enjoyed learning about the author's perspective on programming trends. I really enjoyed learning about his enthusiasm for Lisp. This book is not a how-to, but a collection of essays describing the authors views, opinions, and experiences with various programming topics. I definitely recommend it.

Unconventional book, unconventional author, surprising points made
Review DateF2007-10-19  RatingF
The book particularly deals with the nexus between programming, creativity, social commentary, wealth-generation, business-personal-entrepreneurial psychology (his specialty!) and LISP-related stuff. I skipped the programming sections because Im not a programmer. The philosophical commentary was better than 90% of other philosophy books I've read, more cutting and more true-to-life.

Interesting
Review DateF2007-09-07  RatingF
Paul Graham is very clever (and rich - is that relevant?), however light also bends around his ego. Whether the sum of these qualities is positive is not absolutely clear to me.

If you want to read the best thing that he has written, you might be better served by his book on advanced Lisp programming, which is a monument anybody can be proud of - it comes close behind SICP on my personal list.

And, if you do read this book, I suggest you also look at 'The Science of Art' by Martin Kemp, which gives another perspective on the maybe slightly overweighted metaphor of the title, and the relation between theory and practice it implies.

Airport mall book
Review DateF2007-08-11  RatingF
In spite of the strong desire to punch the author in the face after finishing the book, there are many great truths inside. Basically why is it that most people think salaries on the same position should be the same if work results differ in orders of magnitude.

Also it's funny to see an ultra-capitalist criticize the western decadent corporate structure. It's The Market for Lemons all over the place.

Don't expect to find anything useful to make a dot com startup on this book. It's all anecdotes from his experience and his quasi-religious views. It's more rhetoric on Lisp than business.

As another reviewer said, read first his online essays before diving into this.

Interesting but don't believe too much
Review DateF2007-07-28  RatingF
I was entertained and greatly appreciated the view of the author but the many times I completely disagreed (due to very substantiated reasons) made me skeptical of several ideas of the author. But, the reasons for him holding those views is, in and of itself, interesting. He does have several good and controversial ideas and his experiences are quite valuable to read. Most of the time, I found myself flying high with him as he stated things that really need to be said which ran against conventional thought. Other times, I found myself raising my eyebrows in bewilderment. After all, it really is a book about his thoughts so take it as such. His book, his soapbox.

The book reads well but really trails off towards the end. I found myself finishing the book just so I could say I was through with it. The opening chapters are quite entertaining. Read a few chapters that you find interesting and leave it at that.




The Little Schemer - 4th Edition


TitleThe Little Schemer - 4th Edition
AuthorDaniel P. Friedman,Matthias Felleisen
PublisherThe MIT Press
Price$2800
AvailableUsually ships in 24 hours
Description
drawings by Duane Bibby

foreword by Gerald J. Sussman

The notion that "thinking about computing is one of the most exciting things the human mind can do" sets both The Little Schemer (formerly known as The Little LISPer) and its new companion volume, The Seasoned Schemer, apart from other books on LISP. The authors' enthusiasm for their subject is compelling as they present abstract concepts in a humorous and easy-to-grasp fashion. Together, these books will open new doors of thought to anyone who wants to find out what computing is really about.

The Little Schemer introduces computing as an extension of arithmetic and algebra|things that everyone studies in grade school and high school. It introduces programs as recursive functions and briefly discusses the limits of what computers can do. The authors use the programming language Scheme, and interesting foods to illustrate these abstract ideas. The Seasoned Schemer informs the reader about additional dimensions of computing: functions as values, change of state, and exceptional cases.

The Little LISPer has been a popular introduction to LISP for many years. It had appeared in French and Japanese. The Little Schemer and The Seasoned Schemer are worthy successors and will prove equally popular as textbooks for Scheme courses as well as companion texts for any complete introductory course in Computer Science.

Description
This delightful book leads you through the basic elements of programming in Scheme (a Lisp dialect) via a series of dialogues with well-chosen questions and exercises. Besides teaching Scheme, The Little Schemer teaches the reader how to think about computation. The authors focus on ten essential concepts of thinking about how to compute and demonstrate how to apply these concepts in inventive ways. The Little Schemer is an excellent book both for the beginner and for the seasoned programmer.

An interesting read
Review DateF2008-08-11  RatingF
This book teaches in a Socratic method of asking questions and providing answers. It is very engaging and interesting way to learn. For me, it works -- this book has truly helped me learn recursion.

This book is pretty enjoyable to work your way through. Highly recommended.

The poor Little Schemer
Review DateF2008-07-20  RatingF
This poor expos contains highly cryptic text from the outset. It makes the assumption that everyone understands the words used to program in Scheme.

The author appears not to give thought to the probability that each student has different levels or aspects of understanding, and forgets that nobody knows everything about any one thing. "Lambda", "cons", "car" and "cdr" are some of the many words that he uses and assumes everyone should understand

I highly recommend the book Programming & Meta-programming in Scheme to help explain the mathematics and vocabulary used in the Scheme language. I recommend this book especially to those that are perplexed by the text in The Little Schemer.

I could not finish this book.
Review DateF2008-07-17  RatingF
Don't buy this book on recommendations. Thumb through it first. It's just a series of Q & A that beat you over the head with examples of recursion. If you already "get" recursion, it'll drive you insane after a chapter or two. Why this came so highly recommended, I'll never know.

Only Good as a Brain Puzzle
Review DateF2008-06-04  RatingF
Anybody who tells you this is a good way to learn Scheme (or recursion) wants to cause you pain. Don't believe their lies!

Go learn the language (or how to use recursive techniques) somewhere else and come back to this once you have the basics if you want to get some practice thinking in the Scheme mindset.

In my opinion, a better way to practice would be to simply write some tools in Scheme than to waste your time banging your head against the wall trying to divine what this waste of paper is trying to teach you.

Build a Scheme Interpreter, but not realize it right away!
Review DateF2008-05-16  RatingF
This book is excellent for explaining concepts of Scheme and Lisp. I highly recommend it for people that like logic puzzles and who are trying to uncover the Zen-like nature of programming in Scheme. This book emphasizes functional style by showing how many situations recursion applies to, and how you can use it to achieve various programming techniques (for example continuation-passing style).

Although this book is not a technical introduction to Scheme or Lisp, it does get very technical. The last few chapters introduce continuation-passing style, the Y operator, and building an interpreter. Earlier chapters focus on list processing and uncovering some basic computer science techniques (e.g. that fact that numbers in a machine are representations of the concepts we have for numbers).

This is a great book to read or skim any time, read with pencil and paper, or to actually code the examples. I've read it in various ways three times.




Practical Common Lisp


TitlePractical Common Lisp
AuthorPeter Seibel
PublisherApress
Price$5999
AvailableUsually ships in 24 hours
Description

...it has a fresh view on the language and the examples in the later chapters are usable in your day-to-day work as a programmer.

| Frank Buss, Lisp Programmer and Slashdot Contributor

If youre interested in Lisp as it relates to Python or Perl, and want to learn through doing rather than watching, Practical Common Lisp is an excellent entry point.

| Chris McAvoy, Chicago Python Users Group

Lisp is often thought of as an academic language, but it need not be. This is the first book that introduces Lisp as a language for the real world.

Practical Common Lisp presents a thorough introduction to Common Lisp, providing you with an overall understanding of the language features and how they work. Over a third of the book is devoted to practical examples such as the core of a spam filter and a web application for browsing MP3s and streaming them via the Shoutcast protocol to any standard MP3 client software (e.g., iTunes, XMMS, or WinAmp). In other "practical" chapters, author Peter Seibel demonstrates how to build a simple but flexible in-memory database, how to parse binary files, and how to build a unit test framework in 26 lines of code.


Perfect companion to Lispworks LISP IDE for Windows
Review DateF2008-11-15  RatingF
I read Structure and Interpretation of Computer Programs (SICP) when it was first published. This inspired me to learn LISP (at least to the extent that was needed to understand the examples in that outstanding book).

For a long time I put off using LISP for any problem solving because there was no convenient development environment on Windows that I could use to develop easily. The situation now has changed with the availability of Lispworks Personal, which is free for a minimally crippled development environment.

I needed a proper reference work which I could use to re-familiarise myself with LISP. SICP is based on Scheme, an excellent dialect, but not Common Lisp, the version which seems to have become dominant. Practical Common Lisp is that book. Professionally written by a real expert, well laid out, accessible relative beginners such as I, but with a depth of detail that will surely make it a valuable addition to the bookshelves of the experts.

wordy though useful and expansive
Review DateF2008-07-26  RatingF
Describes macros well, has plenty of examples and very well written text, very well thought out text. This and ANSI Common Lisp complement one another very well. (I've heard Norvig's book is highly touted too, though I've not seen it in real life.)

Quite Possibly the Best Language Tutorial Ever Written
Review DateF2008-05-12  RatingF
I've studied a number of (computer) languages over the years, but one that I've never spent the time to really learn was Lisp. So, sitting down with this book one long weekend, I decided to give it a shot. What I found -- besides the fact that Lisp is a fascinating language that incorporates so many ideas that are only beginning to be incorporated in more "modern" languages -- is that Peter Seibel has written one of the best language tutorials that I have ever used. His style is conversational and clear, with the information broken up into easily digestible chunks. You may start this book thinking Lisp is just a hard-to-read language with too many parenthesis, but you will finish it with a new view of how computer languages should really work.

Very helpful and practical
Review DateF2008-05-05  RatingF
I found this to be an excellent book. Very helpful and practical. I found it complemented nicely the more theoretical "ANSI Common Lisp" book by Paul Graham.

A great beginner/intermediate text
Review DateF2008-04-01  RatingF
If you've been using lisp for years already, the value of this book is probably more on the minimal side of things (although I suspect even a seasoned lisper might find it useful from time to time). However, if you're trying to get a grip on the ins and outs of coding in lisp, this book is a great place to begin. I find the book well-written and well-organized. Perhaps the biggest plus is that the book isn't overly 'dumbed down' and goes into sufficient depth to enable one to move beyond simple exercises at the REPL.

It is also nice to have a hard copy and the online version both available.




The Seasoned Schemer


TitleThe Seasoned Schemer
AuthorDaniel P. Friedman,Matthias Felleisen
PublisherThe MIT Press
Price$2700
AvailableUsually ships in 24 hours
Description
drawings by Duane Bibby foreword and afterword by Guy L. Steele Jr.



The notion that "thinking about computing is one of the most exciting things the human mind can do" sets both The Little Schemer (formerly known as The Little LISPer) and its new companion volume, The Seasoned Schemer, apart from other books on LISP. The authors' enthusiasm for their subject is compelling as they present abstract concepts in a humorous and easy-to-grasp fashion. Together, these books will open new doors of thought to anyone who wants to find out what computing is really about.

The Little Schemer introduces computing as an extension of arithmetic and algebra|things that everyone studies in grade school and high school. It introduces programs as recursive functions and briefly discusses the limits of what computers can do. The authors use the programming language Scheme, and interesting foods to illustrate these abstract ideas. The Seasoned Schemer informs the reader about additional dimensions of computing: functions as values, change of state, and exceptional cases.

The Little LISPer has been a popular introduction to LISP for many years. It had appeared in French and Japanese. The Little Schemer and The Seasoned Schemer are worthy successors and will prove equally popular as textbooks for Scheme courses as well as companion texts for any complete introductory course in Computer Science.

Description
Friedman and Felleisen's The Seasoned Schemer picks up where their book, The Little Schemer, left off and focuses on the myriad uses of functions in Scheme. Using the same dialogue format as The Little Schemer, the authors demonstrate how Scheme's flexible facilities for handling functions give the program so much variety and power. Along the way, the authors also present a variety of other more sophisticated language constructs.

introduces the rest of scheme (almost)
Review DateF2006-09-03  RatingF
The Seasoned Schemer continues where the Little Schemer left off introducing local variables via let and it's variations including letrec. Set!, the syntax for changing a variables value is introduced. Continuations, as used for escaping from an computation and for going back to previous position in code are also introduced. There are less references to the accomplishments of famous computer scientists in this book than in the Little Schemer which I found to be disappointing. However, I greatly enjoyed this book and would recommend it to anyone wanting to increase their understanding of the Scheme programming language. Although scheme's vector data type is not introduced, I think you will have enough of an understanding of Scheme after reading this book to make substantial programs.

Excellent book on thinking recursively
Review DateF2000-07-27  RatingF
This book is the second half of "The Little Schemer". It expects you to have mastered the previous volume, so it starts fast and picks up speed from there.It covers a lot of ground in a slim volume (just as in "The Little Schemer"). This book introduces the concepts of closures and call-with-current-continuation (among other things).As with "The Little Schemer", this book's strength is in its socratic instruction method. Lessons are written and illustrated as conversations between the reader and the instructor (in question/answer format). While this sounds strange, it is actually surprisingly effective as a means of learning the material. It might seem somewhat like rote instruction, but it can often frame foreign concepts in a rememberable fashion.Neither of these books require much in the way of background or familiarity with the material. They were created as a means of teaching non-programmers to program in Scheme. However, I think they hold value for trained programmers as well.

solid material - interesting format
Review DateF1998-02-24  RatingF
Dialogue style makes this book fun to read. Leitmotif of food examples keeps the tone light and the reader hungry. Have the number for pizza handy before you sit down for this book. Focuses on the use of functions in scheme, in an easy reading, enjoyable style. My only minor criticism is that the typographic conventions make the code hard to read. I realize that they serve a purpose, but it made the typesetting ugly. An admirable work, suitable for reading even if you already "know it all", just because of its approach to teaching.




ANSI Common LISP (Prentice Hall Series in Artificial Intelligence)


TitleANSI Common LISP (Prentice Hall Series in Artificial Intelligence)
AuthorPaul Graham
PublisherPrentice Hall
Price$7500
AvailableUsually ships in 24 hours
Description

KEY BENEFIT: Teaching users new and more powerful ways of thinking about programs, this two-in-one text contains a tutorial|full of examples|that explains all the essential concepts of Lisp programming, plus an up-to-date summary of ANSI Common Lisp, listing every operator in the language. Informative and fun, it gives users everything they need to start writing programs in Lisp both efficiently and effectively, and highlights such innovative Lisp features as automatic memory management, manifest typing, closures, and more. Dividing material into two parts, the tutorial half of the book covers subject-by-subject the essential core of Common Lisp, and sums up lessons of preceding chapters in two examples of real applications: a backward-chainer, and an embedded language for object-oriented programming. Consisting of three appendices, the summary half of the book gives source code for a selection of widely used Common Lisp operators, with definitions that offer a comprehensive explanation of the language and provide a rich source of real examples; summarizes some differences between ANSI Common Lisp and Common Lisp as it was originally defined in 1984; and contains a concise description of every function, macro, and special operator in ANSI Common Lisp. The book concludes with a section of notes containing clarifications, references, and additional code. For computer programmers.


Description
This book provides an excellent introduction to Common Lisp. In addition to chapters covering the basic language concepts, there are sections discussing the Common Lisp object system (CLOS) and speed considerations in Lisp. Three fair-sized examples of nontrivial Lisp projects are also included. The book's clear and engaging format explains complicated constructs simply. This format makes ANSI Common Lisp accessible to a general audience--even those who have never programmed before. The book also provides an excellent perspective on the value of using Lisp.

The must have book for Lisp programmers
Review DateF2008-09-08  RatingF
If you are interested in Lisp, you must get this book right after finishing Practical Common Lisp.

thought provoking
Review DateF2007-11-01  RatingF
This is not an introduction to programming book. Instead it describes how an experienced programmer can use CL. As such, it is very dense. Descriptions of new operators are part of the text, rather than displayed in figures (there is a good reference at the back). This keeps the book small though.

Perhaps the most profound ideas in the book are bottom up programming (modify the language to add the commands you need), coding at the highest-level possible until the problem is well understood, and that code comments have cost:

"Good code, like good prose, comes from constant rewriting...Interlinear comments make programs stiff and diffuse, and so inhibit the evolution of what they describe"

As for downsides, I found the exercises for each chapter to be uneven. One asks us to create a function that returns a copy of a queue, later we're asked to detect car-circular lists, yikes.

Pragmatic
Review DateF2007-10-13  RatingF
Paul Graham does a great job of reminding readers in practical ways that designing programs means examining trade-offs of performance, memory use, and simplicity. I appreciate any computer science book that not only introduces a language but also drives the reader toward developing a thought process that will make them implement great solutions in any programming language.


When I Hack Lisp this book is with me
Review DateF2006-04-15  RatingF
Once you move beyond the very basics of Lisp this is a great book to have around. It has nice to the point examples of how to perform common and uncommon tasks in Lisp. In the back of the book there is a small description of the commonly used functions for Lisp. The brievity and size of the book plus the density of the material presented makes for a excellent book to have at your side while you are coding. I wouldn't recommend it for developers or anyone who has never seen Lisp code before but once you are beyond that stage it is an excellent bargin

a very expressive language
Review DateF2006-03-12  RatingF
Common Lisp is a bit of a throwback. And so is this book, from 95. There is absolutely no graphics described for Common Lisp here. Not unlike Fortran, C or C++. Here you get a "pure" language, without all that user interface fluff. The lack of an update to this book in 10 years also reflects the stability of Common Lisp. Veterans of C or Fortran should recognise this.

The language itself will be radically different to many readers, if they hail from a typical C, C++ or Java background. Very flexible and powerful. Plus, the code can be nicely compact. In some qualitative sense, you might say that Lisp has more expressive power than many other languages, per some unit length of source code.

The numerous problems should be appreciated by the diligent reader. And they should be tackled.




Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp


TitleParadigms of Artificial Intelligence Programming: Case Studies in Common Lisp
AuthorPeter Norvig
PublisherMorgan Kaufmann
Price$8995
AvailableUsually ships in 24 hours
Description

Paradigms of AI Programming is the first text to teach advanced Common Lisp techniques in the context of building major AI systems. By reconstructing authentic, complex AI programs using state-of-the-art Common Lisp, the book teaches students and professionals how to build and debug robust practical programs, while demonstrating superior programming style and important AI concepts. The author strongly emphasizes the practical performance issues involved in writing real working programs of significant size. Chapters on troubleshooting and efficiency are included, along with a discussion of the fundamentals of object-oriented programming and a description of the main CLOS functions. This volume is an excellent text for a course on AI programming, a useful supplement for general AI courses and an indispensable reference for the professional programmer.


Description
This is an overview of classical artificial intelligence (AI) programming via actual implementation of landmark systems (case studies). For the student interested in AI, Paradigms of Artificial Intelligence Programming is an invaluable history lesson. Even the programmer who is relatively uninterested in AI will find value in the book's basic introduction to Lisp and case studies written in Lisp. But perhaps the book's best feature is its information on efficiency considerations in Lisp. Paradigms of Artificial Intelligence Programming is worth purchasing for these discussions alone, which provide a wealth of useful guidelines for optimizing your code.

One of the Best
Review DateF2006-04-12  RatingF
"Paradigms of Artificial Intelligence Programming" is one of the best books of computer science that I have ever read. I put it up there in the pantheon with "Structure and Interpretation of Computer Programs". I have found more useful and mind expanding material in these case studies than I have in many other books on computer science. I highly recommend this book to anyone, even if they have never used Lisp.

Norvig's Corollary to Greenspun's Tenth Law of Programming
Review DateF2005-04-23  RatingF
This book has been called "The best book on programming ever written". I'd have to agree--it is certainly the best that I've ever read.

William Zinsser said, "The essence of writing is rewriting" and the same can be said for writing computer programs. Norvig's book presents this process--how the limitations of a program are overcome by revision and rewriting. What sets Norvig apart as a writer is that, amazingly enough, he can write about debugging (the most dreaded part of computer programming) and make it a fascinating read!

Lisp has been getting a higher profile lately because of essayists like Paul Graham and Philip Greenspun; in particular, Greenspun's Tenth Rule of Programming which states: "Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp." So, should this book be read as an exhortation to return to Lisp as the preferred programming language?

Paradoxically, I think not. One third of the way through the book, Norvig shows us how to implement Prolog in Lisp. From then on out, most of the AI techniques he presents either directly use Prolog instead of Lisp (such as his excellent discussion of natural language processing using Prolog) or use Prolog as a base to build on (such as his discussions on knowledge representation).

From this we can abstract what I'd like to call Norvig's Corollary to Greenspun's Tenth Law of Programming: "Any sufficiently complicated LISP program is going to contain a slow implementation of half of Prolog". I'm leaving out the "ad hoc", "bug-ridden" part of Greenspuns's law, because Norvig's programs are neither. But it is quite remarkable the degree to which, once having absorbed Prolog, Norvig uses Prolog as the basis for further development, rather than Lisp.

Is this a book about Prolog then? Again, no. What is the take-away message? It is this: as our world becomes more and more complex, and as the problems which programmers are facing become more and more complex, we have to program at a higher and higher level.

Norvig does not stop at just embedding Prolog in Lisp. He also shows us how to embed scheme as well. Excellent discussion on the mysterious call/cc function and on continuations.

In a capsule review, it is impossible to really give an overview of a 1,000 page book like this one. But the scope and heft of the volume really needs to be commented on: the programs presented in this book are like basis vectors, the totality of which nearly span the space of programming itself. In no way should this be considered "just an AI book" or "just a LISP book". This book transcends language, time, and subject matter. It is a programmer's book for the ages.

An Excellent Reference on WHY to write good Lisp
Review DateF2001-06-21  RatingF
This book is equally excellent regardless of whether you wish to regard it as:a) A historical study of Artificial Intelligence, with USABLE examples of code, orb) A book presenting techniques for programming in Common Lisp.As a reference about Common Lisp, it is certainly lacking, but this is no great problem when both the Common Lisp HyperSpec and Steele's book are readily available in electronic form. It provides something more important: SIGNIFICANT examples, and significant discussions on WHY you would use various Lisp idioms, and, fairly often, discussions on HOW pieces of Common Lisp are likely to be implemented. Its discussion of an implementation of the LOOP macro, for instance, provides a very different point of view than the "references" to LOOP. (Contrast too with Graham's books, which largely deprecate the use of LOOP.)From an AI perspective, it is also very good, providing WORKING SAMPLES for a whole lot of the historically significant AI problems, including Search, PLANNER, symbolic computation, and the likes.It would be interesting to see parallel works from the following sorts of perspectives:- The same sorts of AI problems solved using functional languages (e.g. - ML, Haskell), to allow contrasting the use of those more modern languages. Being more "purely functional" has merits; such languages commonly lack macros, which is something of a disadvantage.- The use of CL to grapple with some other sorts of applications, notably random access to data [e.g. - databases] and rendition of output in HTML/SGML/XML [e.g. - web server].

Not advanced, but good and vast
Review DateF2001-04-18  RatingF
The strength of this book is its combination of breadth and completeness: there is working code (well beyond the toy stage) of a large number of different AI systems that cover a large subset of what is commonly considered AI.The programming itself is rather basic, and very straightforward. In many places an advanced programmer would have avoided a global variable, unified code through the use of higher-order functions, had functions communicate through a shared local environment, created a lazy list, you name it.The author avoids most of these more advanced approaches in order to present the ideas behind the approaches without being sidetracked into programming technique issues, and that is the correct choice for this book. Even as it is, there is already the duplicity of teaching Common Lisp and teaching AI programming.That being said, the code in general is not bad at all, even though I wouldn't want my students to learn CL programming from it. The author has simply bent down to the level of, a good C programmer, and worked from there. His main intention being to teach AI programming approaches, he has spent much less time to raise the programming level of his audience.Knowing the author's level of Lisp programming, I can't wait to see a book by his hand on how to use abstraction as an organising principle in programming.

Excellent study of both AI and Common Lisp
Review DateF1998-06-02  RatingF
I have no background in computer science or AI, but found myself needing to use Lisp for various creative and artistic purposes. I've spent a lot of money on books relating to Common Lisp, but I wish I had just gotten this one and Touretzky's "Gentle Introduction to Symbolic Computation." The particular strengths of this book are its detailed discussion of advanced topics, especially optimization, and the practical overview of current and historical AI topics through programming examples. Very clearly written.




links

Computer Books top page
excel excel function excel vba word microsoft access database JAVA C COBOL Visual Basic Delphi Ruby Lisp perl Eclipse Ant EJB design pattern object oriented homepage blog affiliate html TCP/IP Apache Tomcat flash javascript CGI XML Ethernet LAN WAN network router switch network Oracle SQL Server DB2 dBase PostgreSQL MySQL FileMaker Windows OS OS Windows2000 OS WindowsXP OS Linux Unix MacOS FreeBSD TRON artificial intelligence cipher robot computer photoshop Illustrator LiveMotion Dreamweaver Fireworks web design pdf postscript MOUS



PR(Japanese site)

Excel