[HN Gopher] Show HN: "Programming Algorithms in Lisp" Book
       ___________________________________________________________________
        
       Show HN: "Programming Algorithms in Lisp" Book
        
       Author : vseloved
       Score  : 156 points
       Date   : 2021-02-08 16:09 UTC (6 hours ago)
        
 (HTM) web link (www.apress.com)
 (TXT) w3m dump (www.apress.com)
        
       | peebz wrote:
       | How much does this differ from the version I bought on Leanpub?
        
         | vseloved wrote:
         | Not much. I have summarized all the updates here: http://lisp-
         | univ-etc.blogspot.com/2021/02/programming-algori...
        
           | peebz wrote:
           | Great - thanks!
        
       | tasubotadas wrote:
       | Thanks! Looks interesting - just bought it :)
        
       | u678u wrote:
       | Anyone tried leetcode with lisp? I'm not sure if its a good way
       | to learn or an exercise in banging your head against the wall.
        
         | Jtsummers wrote:
         | I've toyed around with some similar sites in the past.
         | Challenges like that that sit closer to purer algorithm tasks
         | are not at all hard in Common Lisp.
        
         | ludston wrote:
         | I really enjoy solving project euler puzzles with CL. It's very
         | well suited to them.
        
       | yters wrote:
       | Is the big underlying motive for LISP its connection with
       | symbolic AI?
        
         | Jtsummers wrote:
         | First, I still find it _very_ jarring to see  "LISP" written
         | that way when referring to Common Lisp, and most other
         | languages in the Lisp family, as "Lisp" has been the common way
         | of writing it for a very long time. That styling, now, is
         | mostly found in older texts on the subject _or_ when talking
         | about LISP and LISP 1.5 and a few other specific
         | implementations.
         | 
         | Second, Common Lisp is a general purpose, multiparadigm
         | language. There's a lot to like about it. If you want to
         | implement conventional procedural algorithms, the language is
         | well-suited to writing in that style. If you want to adopt a
         | more functional and recursive (versus iterative) style, it is
         | similarly well-suited (though somewhat implementation dependent
         | as CL, unlike Scheme, does not mandate tail call elimination,
         | which can bite you in performance). If you want to write in an
         | OO-style, it has a way to do that (though it is different than
         | the OO-styles many people are familiar with so takes some time
         | to learn). And if you like writing DSLs (but don't want to
         | implement a full parser or an interpreter but would rather have
         | something compiled for better performance), it's very well-
         | suited for it.
         | 
         | Third, while it was commonly used for symbolic AI, it is not
         | restricted to that domain. But, if that's what you want to use
         | it for, you should look into the book _Paradigms of AI
         | Programming_ by Norvig (now available for free online) which is
         | pretty much just about implementing now classic symbolic AI
         | programs in CL.
        
         | mepian wrote:
         | Not anymore, today Common Lisp is generally a very nice
         | language that balances dynamicity and performance quite well,
         | and especially shines in interactive (or REPL-driven)
         | development:
         | https://mikelevins.github.io/posts/2020-12-18-repl-driven/
        
           | User23 wrote:
           | Also popular implementations do some cool things. The
           | compiler section in the SBCL manual[1] has good details.
           | SBCL's type inference is powerful and you can also convince
           | yourself it's actually working by looking at the output of
           | DISASSEMBLE.
           | 
           | [1] http://www.sbcl.org/manual/index.html
        
           | wry_discontent wrote:
           | Clojure is my only serious exposure to lisp, and I get
           | jealous when hearing about features like a `breakloop` in
           | Common Lisp.
        
             | codr7 wrote:
             | Why not give it a spin?
             | 
             | There is plenty more to discover in Common Lisp, Clojure
             | has some nice tricks but it's a faint echo as far as raw
             | power goes.
             | 
             | http://www.sbcl.org
        
             | vseloved wrote:
             | there's an interesting recent video on the differences
             | between Cl and Clojure here:
             | https://www.youtube.com/watch?v=44Q9ew9JH_U
        
       | mindcrime wrote:
       | Perfect timing... I just renewed my APress Access subscription
       | like 3 days ago. Will definitely give this a look.
        
       | vseloved wrote:
       | Hi, I'm the author.
       | 
       | For those who haven't heard about the book yet: it is a practical
       | description of the main data structures and algorithms in use
       | today. The book is also featuring a presentation of the most
       | important algorithm development techniques, as well a examples of
       | the real-world use cases in each chapter. It uses Common Lisp as
       | an implementation language, and also contains a crash course into
       | the language if you are not yet familiar with it.
       | 
       | For those who have already seen or even read the previous version
       | published on Leanpub, here is a summary of the updates:
       | http://lisp-univ-etc.blogspot.com/2021/02/programming-algori...
       | 
       | As usual, AMA.
        
         | humbleharbinger wrote:
         | As a second year cs student currently taking an algorithms
         | course with no experience with LISP, would this book be useful
         | for me?
        
           | vseloved wrote:
           | In the preface, I discuss a bit the topic of how algorithms
           | are taught in the universities versus how they are actually
           | used. I made a choice to lean heavily towards the "practical"
           | approach. So, from the perspective of a student, this
           | shouldn't be your principal manual, the theory isn't
           | presented in the best possible way, to say the least. (As a
           | manual I'd recommend Skiena, or you can use Cormen etc.) But
           | if you read the book as supplementary material it can give
           | you a different perspective on those theoretical concepts
           | and, hopefully, you'll get more value from studying them as
           | you'll see where it all leads and how you might be using the
           | obtained knowledge in your further work. As for Lisp, I don't
           | think that picking it for any smart student should be a
           | problem.
        
         | 2pEXgD0fZ5cF wrote:
         | I bought myself a copy of your book recently. I have not worked
         | through it back to back, but I enjoyed taking a look at known
         | things through the lens of CL.
         | 
         | However I have to admit that the reliance on additional
         | external libraries kind of had me a bit disappointed, but I can
         | understand the reasoning and advantages behind such a decision.
        
           | vseloved wrote:
           | thanks for the feedback!
        
         | NAR8789 wrote:
         | What are this book's selling points as compared to SICP? On the
         | surface, both are teaching computer science fundamentals in a
         | lispy setting.
        
           | vseloved wrote:
           | You're quite right that SICP is about the fundamentals.
           | Progalgs is about writing efficient programs. It's for those
           | who already understand the fundamentals.
        
         | jimbokun wrote:
         | Is the goal of this book to teach algorithms to Lisp
         | programmers, or to teach algorithms using Lisp as its a good
         | pedagogical language, or something else?
        
           | vseloved wrote:
           | More of the second: i.e. teach algorithms using Lisp. The
           | secondary goal is to get people more accustomed with Lisp.
        
       ___________________________________________________________________
       (page generated 2021-02-08 23:00 UTC)