11
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
this post was submitted on 29 Sep 2023
11 points (92.3% liked)
Lisp Community
900 readers
1 users here now
A community for the Lisp family of programming languages.
Lisp (historically LISP) is a family of programming languages with a long history and a distinctive, fully parenthesized prefix notation. Originally specified in 1958, Lisp is the second-oldest high-level programming language. Only Fortran is older, by one year.
Related communities
- Clojure (lemmy.ml)
- Clojure (programming.dev)
- Lisp (programming.dev)
- Scheme (lemmy.ml)
- Scheme (programming.dev)
- Guix (lemmy.ml)
- Guix (infosec.pub)
- Emacs (lemmy.ml)
Language references
- Common Lisp
- Scheme
- Racket
- Clojure
Tools
- IDEs for CL
- Quicklisp (CL Library manager), Qlot (project-local library manager)
- ocicl (new library manager)
- Roswell (CL Environment Setup Utility)
Tutorials/FAQS
- lisp-lang.org
- The Common Lisp Cookbook
- Style Guide Norvig/Pitman
- Nikodemus' CL FAQ
- Google CL Style Guide (2014)
- A Road to Common Lisp (2018) (noob guide)
- Udemy Common Lisp course (videos, commercial)
- State of the CL Ecosystem 2022 · 2020 · 2015
- Where to get help with Common Lisp
Useful Lisp resources
- Common-Lisp.net
- Awesome CL (CL libraries)
- Planet Lisp
- Planet Scheme
- comp.lang.lisp
- CL Professionals Mailing List
- Lisp companies
- Wikipedia CL
- Stackoverflow Lisp questions, CL, Scheme
- Code Review (Lisp, CL, Scheme)
- Rosetta Code, CL
- Mailing Lists, more
- ANSI Clarifications and Errata
Search
Videos
Common Lisp
Clojure
Racket
Scheme
- MIT's SICP lectures
Books
- Free, Complete, On-line, Authorized
- Common Lisp: A Gentle Introduction to Symbolic Computation (Touretzky, 1990)
- Common Lisp: An Interactive Approach (Shapiro, 1992)
- The Common Lisp Cookbook / Original 2007
- Common Lisp The Language, 2nd Edition [Pre ANSI] (Steele, 1990)
- How to Design Programs (Felleisen, Findler, Flatt, Krishnamurthi)
- Lisp Outside the Box (unfinished, Levine, 2011)
- On Lisp (Graham, 1993)
- Paradigms of Artificial Intelligence Programming (Norving, 1992)
- Practical Common Lisp (Seibel, 2005)
- Programming Languages: Application and Interpretation (Scheme) (Shriram Krishnamurthi, 2007-2020)
- The Scheme Programming Language (Scheme) (R. Kent Dybvig, 2009)
- Structure and Interpretation of Computer Programs, HTML5/EPUB3 (Scheme) (Abelson/Sussman, 1996)
- Other Books
- ANSI Common Lisp (Graham, 1995)
- Common Lisp Recipes (Weitz, 2016)
- Land of Lisp (Barski, 2010)
- Let over Lambda (Hoyte, 2008)
- Lisp, 3rd Edition (Winston/Horn, 1989)
- Object-Oriented Programming in Common Lisp: A Programmer's Guide to CLOS (Keene, 1989)
- The Art of the Metaobject Protocol (Kiczales/des Rivières/Bobrow, 1991)
- Essential LISP (Anderson/Reiser/Corbett, 1986)
Food for thought
- An Intuition for Lisp Syntax
- Lambda the Ultimate
- Erik Naggum comp.lang.lisp archive
- Pascal Costanza's Highly Opinionated Guide to Lisp
Implementations
- CL Open Source
- CL Commercial
- Allegro CL
- LispWorks multiplatform, iOS and Android
- CL Developmental
- CL Historical
- mocl for OSX, iOS and Android
- Open Genera
- Scieneer CL
- CLiCC (CL→C)
- Corman Lisp (MS-Windows)
- Eclipse Common Lisp
- MKCL (fork of ECL)
- ThinLisp (CL→C)
- WCL (embeddable)
- Scheme TODO
Events
founded 7 years ago
MODERATORS
(EDIT: this got to be a wall of text, so I wrote a proper blog post about it, but I'll take any comments on it here, or on this Lemmy post linking to my blog.)
I have known about Common Lisp and Scheme for years, but only recently started using them.
I use Emacs and Emacs Lisp to manage my tens of thousands of text files, I write Emacs Lisp scripts to automate simple tasks like searching for pieces of information, formatting it, and outputting it to a report that I might publish on my blog or send in an e-mail. I also use Emacs to help with data cleaning before running machine learning processes. Emacs helps with navigating CSV and JSON files, it also is a really good batch file renamer.
I have recently started using Guile Scheme to do some personal projects. I went with Guile over the myriad other Scheme dialects because it is the implementation used for the Guix package manager and operating system. Also, there the G-Golf foreign interface layer allows Guile to automatically use an C library that implements the GObject Introspection interface. So through Guile, like with Python, you can use any C code library used to create of all native apps in the Gnome, MATE, Cinnamon, or Xfce desktop environments. This makes Guile a viable alternative to Python scripting across all of those Linux desktop environments.
Of all the Lisp dialects, Scheme is my favorite, for a few reasons:
syntax-caseloopmacro of Common Lisp. Scheme also provides me the ease-of-mind that comes with knowing the optimizing Scheme compiler will ensure recursive loops will never overflow the stack.That said, I am also starting experimenting with Embedded Common Lisp (ECL) because it is a lightweight standards compliant Common Lisp implementation that compile your program into C++ code, and this is useful to my professional work.
In modern software engineering, especially in the realm of big data and machine learning, all of the most commonly used frameworks are written in C++ for performance, and scripted in Python. But Python does not scale well at all to larger applications, where Common Lisp does (for various reasons, but mostly due to how Lisp does strong dynamic typing and the meta-object protocol). So I see Common Lisp, and the ECL compiler, as a viable alternative to the sub-optimal status quo of Python/C++ in my professional work. Mostly, ECL would allow me to write a program in Common Lisp instead of Python, but deliver to my clients the C++ code that ECL generates to be used in their machine learning projects. (I have not actually done this yet, I am still investigating whether this would be a viable solution to any of my projects).
ECL makes it easy to use C++ libraries through Lisp instead of Python. And there are so many good, performant C++ libraries out there: Qt, OpenCV, OpenCL, Tensorflow, PyTorch, OpenSceneGraph, FreeCAD, Godot, Blender. And it compiles easily on Linux/Unix (GCC), Windows (MSVC), and MacOS (via Clang++), so good for cross-platform development.
@Ramin_HAL9001 @cadar if you are doing numeric things, you may wish also to try clasp https://www.youtube.com/watch?v=mbdXeRBbgDM&pp=ygUKY2xhc3AgbGlzcA%3D%3D
Oh wow, I had seen this presentation back when it first came out in 2018 and had forgotten about it! Thanks for reminding me!
@Ramin_HAL9001 I feel like they have made less presentations of late, but the repo commits say that they are still working on it