Wednesday, November 06, 2024

ANSI Common Lisp vs Scheme; Books +JavaScript, Python


Lisp (programming language) - Wikipedia

Lisp (historically LISP, an abbreviation of "list processing") is a family of programming languages with a long history and a distinctive, fully parenthesized prefix notation.[3] Originally specified in the late 1950s, it is the second-oldest high-level programming language still in common use

Today, the best-known general-purpose Lisp dialects are
Common Lisp, Scheme, Racket, and Clojure.

Common Lisp - Wikipedia

Common Lisp is not an implementation, but rather a language specification.[4] Several implementations of the Common Lisp standard are available, including free and open-source software and proprietary products.[5] Common Lisp is a general-purpose, multi-paradigm programming language. It supports a combination of procedural, functional, and object-oriented programming paradigms. As a dynamic programming language, it facilitates evolutionary and incremental software development, with iterative compilation into efficient run-time programs. This incremental development is often done interactively without interrupting the running application.

Scheme (programming language) - Wikipedia

Scheme is a dialect of the Lisp family of programming languages. Scheme was created during the 1970s at the MIT Computer Science and Artificial Intelligence Laboratory



Free Books Online

ANSI Common Lisp book online, from 1995, by Paul Graham 


Structure and Interpretation of Computer Programs - Wikipedia

is a computer science textbook by Massachusetts Institute of Technology professors Harold Abelson and Gerald Jay Sussman with Julie Sussman. It is known as the "Wizard Book" in hacker culture.[1] It teaches fundamental principles of computer programming, including recursion, abstraction, modularity, and programming language design and implementation.

The book describes computer science concepts using Scheme, a dialect of Lisp. It also uses a virtual register machine and assembler to implement Lisp interpreters and compilers.


Welcome to the SICP Web Site

PDF: Structure and Interpretation of Computer Programs, 2nd ed.

MIT Press published the first edition in 1984, and the second edition in 1996. It was formerly used as the textbook for MIT's introductory course in computer science. SICP focuses on discovering general patterns for solving specific problems, and building software systems that make use of those patterns.[2]

MIT Press published the JavaScript edition in 2022.[3]


This book is derived from the classic textbook Structure and Interpretation of Computer Programs by Abelson, Sussman, and Sussman. John Denero originally modified if for Python for the Fall 2011

Source Academy (SICP JS interactive)


This is an open-source repository for the book Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp by Peter Norvig (1992), and the code contained therein. The copyright has reverted to the author, who has shared it here under MIT license. On the list of most influential books for programmers.

Forums

What do you think about Structure and Interpretation of Computer Programs (SICP) : r/ExperiencedDevs (reddit forum)

Which is the better introduction to Lisp: On Lisp (by pg), SICP, or another text... | Hacker News


Code

Category:Common Lisp - Rosetta Code

Category:Lisp Implementations - Rosetta Code

Compiler Online

CommonLisp Online Compiler @onecompiler.com/commonlisp

(format t "Hello, World!")

AI Copilot

Comparison of Common Lisp and Scheme for Learning

Both Common Lisp and Scheme are dialects of Lisp, but they have different design philosophies and features.
Here’s a comparison to help you decide which one might be better for learning:

Common Lisp

Pros:

  1. Rich Standard Library:

    • Common Lisp comes with a comprehensive standard library, providing a wide range of built-in functions and utilities.
  2. Macros:

    • Powerful macro system that allows for advanced metaprogramming.
  3. Multiple Paradigms:

    • Supports procedural, functional, and object-oriented programming.
  4. Stability and Maturity:

    • Long history and stable specification, making it a mature language.
  5. Interactive Development:

    • REPL (Read-Eval-Print Loop) allows for interactive coding and debugging.
  6. Community and Ecosystem:

    • Active community and a wealth of libraries available through repositories like Quicklisp.

Cons:

  1. Complexity:

    • Larger and more complex language specification compared to Scheme.
    • Might be overwhelming for beginners due to its extensive feature set.
  2. Syntax:

    • More verbose syntax, which can be less elegant and harder to read for some learners.

Scheme

Pros:

  1. Simplicity:

    • Minimalist design with a small core language, making it easier to learn and understand.
    • Emphasizes a clean and elegant syntax.
  2. Educational Focus:

    • Often used in academic settings to teach fundamental programming concepts.
    • Books like "Structure and Interpretation of Computer Programs" (SICP) use Scheme to introduce computer science principles.
  3. Macros:

    • Hygienic macro system that avoids common pitfalls associated with macros in other languages.
  4. Flexibility:

    • Encourages a functional programming style but is flexible enough to support other paradigms.

Cons:

  1. Standard Library:

    • Smaller standard library compared to Common Lisp, which might require more effort to find or implement additional functionality.
  2. Fragmentation:

    • Multiple implementations and standards (e.g., R5RS, R6RS, R7RS), which can lead to inconsistencies and confusion.
  3. Less Industrial Use:

    • Less commonly used in industry compared to Common Lisp, which might limit practical applications and job opportunities.

Summary

  • Common Lisp: Better suited for learners who want a comprehensive and powerful language with a rich set of features and libraries. It is ideal for those interested in exploring advanced programming concepts and metaprogramming.
  • Scheme: Better suited for learners who prefer simplicity and elegance. It is ideal for educational purposes and for those who want to focus on fundamental programming concepts without the overhead of a large language specification.

Recommendation

  • For Beginners: Scheme might be a better starting point due to its simplicity and educational focus.
  • For Advanced Learners: Common Lisp offers more features and a richer ecosystem, making it suitable for more complex projects and advanced programming techniques.

Why Use Common Lisp or Scheme?

  • Educational Value: Both languages are excellent for teaching fundamental programming concepts, recursion, higher-order functions, and the principles of functional programming.
  • Simplicity and Elegance: Scheme's minimalist design makes it easy for students to grasp the core concepts without being overwhelmed by syntax.
  • Powerful Features: Common Lisp's macro system and multiple paradigms provide a rich learning experience for advanced students.

Teaching Common Lisp

  • MIT: Historically, MIT used Common Lisp in its courses, particularly in the famous "Structure and Interpretation of Computer Programs" (SICP) course. While the course has since transitioned to using Python, Common Lisp is still used in some advanced courses and research projects.
  • Stanford University: Some courses and research projects at Stanford involve Common Lisp, especially in the context of artificial intelligence and symbolic computation.

Scheme

  • MIT: The SICP course originally used Scheme and is still highly regarded in the computer science education community. The course materials, including the textbook, are widely used in other institutions as well.
  • University of California, Berkeley: The introductory computer science course CS 61A uses Scheme (via the Racket implementation) to teach fundamental programming concepts.
  • Harvard University: Some introductory courses and programming language courses use Scheme to teach functional programming and language design principles.