Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save dungsaga/511aec74e06405c6f4bfa6903e2bf36b to your computer and use it in GitHub Desktop.
Save dungsaga/511aec74e06405c6f4bfa6903e2bf36b to your computer and use it in GitHub Desktop.

Revisions

  1. @digikar99 digikar99 revised this gist Dec 16, 2021. 1 changed file with 25 additions and 4 deletions.
    29 changes: 25 additions & 4 deletions lisp-resources-digikar-2020.md
    Original file line number Diff line number Diff line change
    @@ -3,6 +3,22 @@
    *If programming is more than just a means of getting things done for you,
    then Common Lisp is for you!*

    <!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-refresh-toc -->
    **Table of Contents**

    - [Opinionated Common Lisp Resources 2020](#opinionated-common-lisp-resources-2020)
    - [What is Common Lisp?](#what-is-common-lisp)
    - [Lisp for absolute beginners](#lisp-for-absolute-beginners)
    - [Common Lisp Learning Resources](#common-lisp-learning-resources)
    - [Libraries](#libraries)
    - [Programming Environment](#programming-environment)
    - [Communities](#communities)
    - [More Technical Documentation](#more-technical-documentation)
    - [Practical Reasons to use Common Lisp](#practical-reasons-to-use-common-lisp)

    <!-- markdown-toc end -->


    ### What is Common Lisp?

    A programming language.
    @@ -67,13 +83,17 @@ programmers onboard.

    ### Libraries

    Primarily,
    - [Awesome CL](https://github.com/CodyReichert/awesome-cl) list
    - [Quicklisp](https://www.quicklisp.org/beta/)

    But also:
    - [Ultralisp](http://ultralisp.org/)
    - [Quickdocs](https://quickdocs.org/) for searching libraries
    - [qlot](https://github.com/fukamachi/qlot)
    - [clpm](https://common-lisp.net/project/clpm/)
    - for the library APIs, I found the \"Packages\" section of libraries
    on
    [quickref](https://quickref.common-lisp.net/index-per-library.html)
    on [quickref](https://quickref.common-lisp.net/index-per-library.html)
    to be particularly useful

    Quicklisp is a distro-like common lisp package manager - there are
    @@ -99,7 +119,8 @@ Without Emacs:

    - try out [slima](https://atom.io/packages/slima) for Atom -
    atom-slime is no longer maintained!

    - [Alive](https://marketplace.visualstudio.com/items?itemName=rheller.alive) for VS Code

    For vim-users:

    - either go with emacs evil-mode with a [starter-kit](https://github.com/emacs-tw/awesome-emacs#starter-kit)
    @@ -169,4 +190,4 @@ Amidst all this, are there any practical reasons to use Common Lisp?
    [Check this
    answer on Quora](https://www.quora.com/What-is-your-favourite-non-mainstream-programming-language/answer/Shubhamkar-Ayare).

    *This article was originally published by me on my Wordpress blog*.
    *This article was originally published by me on my Wordpress blog*.
  2. @digikar99 digikar99 revised this gist Nov 15, 2020. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion lisp-resources-digikar-2020.md
    Original file line number Diff line number Diff line change
    @@ -93,7 +93,7 @@ There's a read-worthy discussion discussing the two philosophies
    If the reader is okay with Emacs:

    - check out [Portacle](http://portacle.github.io/)
    - or install [quicklisp](https://www.quicklisp.org/beta/) and [SLIME](https://github.com/slime/slime) (go figure!)
    - or install [quicklisp](https://www.quicklisp.org/beta/) and [SLIME](https://github.com/slime/slime)/[SLY](https://github.com/joaotavora/sly) (go figure!)

    Without Emacs:

  3. @digikar99 digikar99 revised this gist Nov 9, 2020. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion lisp-resources-digikar-2020.md
    Original file line number Diff line number Diff line change
    @@ -127,7 +127,7 @@ uses interactive development!
    - [r/learnlisp](http://reddit.com/r/learnlisp)
    - [r/lisp](https://www.reddit.com/r/lisp/)
    - [r/common_lisp](https://www.reddit.com/r/Common_Lisp/)
    - [Discord Server](https://discord.gg/4kHR2g) (expired; perhaps ask someone at one of the other communities for the invite link)
    - [Discord Server](https://discord.gg/ywv48XN)
    - [comp.lang.lisp](https://groups.google.com/forum/#!forum/comp.lang.lisp)
    - There's also [LispForum](https://www.lispforum.com/)

  4. @digikar99 digikar99 revised this gist Nov 8, 2020. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion lisp-resources-digikar-2020.md
    Original file line number Diff line number Diff line change
    @@ -23,7 +23,7 @@ possibilities, then welcome to the world of Common Lisp :)! After all
    this, if someone still wants to have a read at what is so special about
    lisp, have a read [here](http://www.defmacro.org/ramblings/lisp.html).

    (Very often, newcomers confuse CLisp with Common Lisp. (CNU) CLisp is
    (Very often, newcomers confuse CLisp with Common Lisp. (GNU) CLisp is
    just an implementation of Common Lisp. It isn't as good or as
    maintained as several other implementations, like, say SBCL. See [the
    last section](#more-technical-documentation) below.)
  5. @digikar99 digikar99 revised this gist Nov 8, 2020. 1 changed file with 20 additions and 8 deletions.
    28 changes: 20 additions & 8 deletions lisp-resources-digikar-2020.md
    Original file line number Diff line number Diff line change
    @@ -23,10 +23,10 @@ possibilities, then welcome to the world of Common Lisp :)! After all
    this, if someone still wants to have a read at what is so special about
    lisp, have a read [here](http://www.defmacro.org/ramblings/lisp.html).

    (Edit: Very often, newcomers confuse CLisp with Common Lisp. CLisp is
    (Very often, newcomers confuse CLisp with Common Lisp. (CNU) CLisp is
    just an implementation of Common Lisp. It isn't as good or as
    maintained as several other implementations, like, say SBCL. See the
    last section below.)
    maintained as several other implementations, like, say SBCL. See [the
    last section](#more-technical-documentation) below.)

    ### Lisp for absolute beginners

    @@ -41,7 +41,14 @@ languages:

    ### Common Lisp Learning Resources

    For the ones with at least some background in programming (1 year?)
    For beginners:

    - [Touretzky's "Common LISP: A Gentle Introduction to Symbolic Computation"](https://www.amazon.com/Common-LISP-Introduction-Computation-Engineering/dp/0486498204)
    - or, [Graham's "ANSI Common Lisp"](https://www.amazon.com/gp/product/0133708756)

    For the former, be sure to pick up a post-1994 version, since it was in 1994 that Common Lisp gained ANSI standardization.

    For people with at least some programming background (1 year?)

    - [The Common Lisp
    Cookbook](http://lispcookbook.github.io/cl-cookbook/)
    @@ -86,12 +93,17 @@ There's a read-worthy discussion discussing the two philosophies
    If the reader is okay with Emacs:

    - check out [Portacle](http://portacle.github.io/)
    - or install quicklisp and SLIME (go figure!)
    - or install [quicklisp](https://www.quicklisp.org/beta/) and [SLIME](https://github.com/slime/slime) (go figure!)

    Without Emacs:

    - try out [slima](https://atom.io/packages/slima) for Atom -
    atom-slime is no longer maintained!

    For vim-users:

    - either go with emacs evil-mode with a [starter-kit](https://github.com/emacs-tw/awesome-emacs#starter-kit)
    - or with pure vim, go with [slimv](https://www.vim.org/scripts/script.php?script_id=2531) or [vlime](https://github.com/vlime/vlime)

    If you want a bare bones REPL, [here's a three step guide for
    Ubuntu](https://github.com/LispCookbook/cl-cookbook/issues/293).
    @@ -111,11 +123,11 @@ uses interactive development!

    ### Communities

    - [stackoverflow](https://stackoverflow.com/).
    - [stackoverflow](https://stackoverflow.com/).
    - [r/learnlisp](http://reddit.com/r/learnlisp)
    - [r/lisp](https://www.reddit.com/r/lisp/)
    - [r/common_lisp](https://www.reddit.com/r/Common_Lisp/)
    - [Discord Server](https://discord.gg/4kHR2g)
    - [Discord Server](https://discord.gg/4kHR2g) (expired; perhaps ask someone at one of the other communities for the invite link)
    - [comp.lang.lisp](https://groups.google.com/forum/#!forum/comp.lang.lisp)
    - There's also [LispForum](https://www.lispforum.com/)

    @@ -157,4 +169,4 @@ Amidst all this, are there any practical reasons to use Common Lisp?
    [Check this
    answer on Quora](https://www.quora.com/What-is-your-favourite-non-mainstream-programming-language/answer/Shubhamkar-Ayare).

    *This article originally published by me on my Wordpress blog*.
    *This article was originally published by me on my Wordpress blog*.
  6. @digikar99 digikar99 revised this gist Oct 19, 2020. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions lisp-resources-digikar-2020.md
    Original file line number Diff line number Diff line change
    @@ -156,3 +156,5 @@ consult.
    Amidst all this, are there any practical reasons to use Common Lisp?
    [Check this
    answer on Quora](https://www.quora.com/What-is-your-favourite-non-mainstream-programming-language/answer/Shubhamkar-Ayare).

    *This article originally published by me on my Wordpress blog*.
  7. @digikar99 digikar99 created this gist Oct 19, 2020.
    158 changes: 158 additions & 0 deletions lisp-resources-digikar-2020.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,158 @@
    # Opinionated Common Lisp Resources 2020

    *If programming is more than just a means of getting things done for you,
    then Common Lisp is for you!*

    ### What is Common Lisp?

    A programming language.

    *What is so special about it?* A part of the problem of explaining
    Common Lisp to non-lispers is that it is akin to explaining Calculus to
    a middle schooler - one needs *plenty* of concepts. Explaining something
    like python to a C programmer who has never used a higher level language
    would require explaining, perhaps, first order functions and the concept
    of objects. Explaining Common Lisp to a python programmer requires
    explaining macros (and the associated details about read-compile-run
    time), dynamic scoping, condition system, images, off the top of my
    head. Each of it can seem like a *what?*

    I don't mean this in a demeaning sense - one can get far by knowing just
    a few things; but if you are curious about the realm of programming
    possibilities, then welcome to the world of Common Lisp :)! After all
    this, if someone still wants to have a read at what is so special about
    lisp, have a read [here](http://www.defmacro.org/ramblings/lisp.html).

    (Edit: Very often, newcomers confuse CLisp with Common Lisp. CLisp is
    just an implementation of Common Lisp. It isn't as good or as
    maintained as several other implementations, like, say SBCL. See the
    last section below.)

    ### Lisp for absolute beginners

    These are not specifically for Common Lisp, but rather for Scheme and
    Racket, The things learnt here should be transferable to other
    languages:

    - [Structure and Interpretation of Computer
    Programs](https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html)
    - Use [How To Design Programs](http://htdp.org) if SICP is too much
    - These use [Dr Racket](http://racket-lang.org/)

    ### Common Lisp Learning Resources

    For the ones with at least some background in programming (1 year?)

    - [The Common Lisp
    Cookbook](http://lispcookbook.github.io/cl-cookbook/)
    - [Practical Common Lisp](http://gigamonkeys.com/book/)
    - [Bagger's Little Bits of
    Lisp](https://www.youtube.com/watch?v=m0TsdytmGhc&list=PL2VAYZE_4wRJi_vgpjsH75kMhN4KsuzR_) -
    videos!

    This is very opinionated. A more larger list is available at the
    cookbook itself, the sidebar of [r/lisp](https://reddit.com/r/lisp), the
    [Common Lisp website](https://common-lisp.net/downloads) itself,
    [CLiki](https://www.cliki.net/), and probably at several other places.
    Here I wanted to achieve a balance between keeping the page short enough
    to avoid overwhelming as well as covering just enough to get new
    programmers onboard.

    ### Libraries

    - [Awesome CL](https://github.com/CodyReichert/awesome-cl) list
    - [Quicklisp](https://www.quicklisp.org/beta/)
    - [Ultralisp](http://ultralisp.org/)
    - [qlot](https://github.com/fukamachi/qlot)
    - for the library APIs, I found the \"Packages\" section of libraries
    on
    [quickref](https://quickref.common-lisp.net/index-per-library.html)
    to be particularly useful

    Quicklisp is a distro-like common lisp package manager - there are
    \"releases\" once every month or so. And there's a guarantee that all
    the packages in a particular release work together.

    However, if the one month development cycle is too long, there is the
    ultralisp that builds every 5 minutes, in that one doesn't have to wait
    for a month to fix bugs or get the latest libraries. However, there's
    no \"everything builds together\" guarantee.

    There's a read-worthy discussion discussing the two philosophies
    [here](https://lisp-journey.gitlab.io/blog/why-do-we-have-to-wait-one-month-before-quicklisp-updates/).

    ### Programming Environment

    If the reader is okay with Emacs:

    - check out [Portacle](http://portacle.github.io/)
    - or install quicklisp and SLIME (go figure!)

    Without Emacs:

    - try out [slima](https://atom.io/packages/slima) for Atom -
    atom-slime is no longer maintained!

    If you want a bare bones REPL, [here's a three step guide for
    Ubuntu](https://github.com/LispCookbook/cl-cookbook/issues/293).

    A good fun in using lisps is being comfortable with SLIME, that enables
    interactive development. I find this akin to going *inside *a building
    being constructed, with a hammer and several other tools, and then,
    incrementally modifying or building that building. [This
    video](https://www.youtube.com/watch?v=oufGYAAVLfQ&list=PL2VAYZE_4wRJi_vgpjsH75kMhN4KsuzR_&index=5)
    should illustrate the idea. 
    [This](https://www.youtube.com/watch?v=sBcPNr1CKKw&list=PL2VAYZE_4wRIoHsU5cEBIxCYcbHzy4Ypj&index=4) provides
    a larger list of shortcuts, though, the most useful commands I find
    include `C-c C-c`, `M-.` and `M-,`.
    [This](https://www.youtube.com/watch?v=yY1FSsUV-8c) illustrates a wild
    combination of programming and concerts (yes, musical concerts!), that
    uses interactive development!

    ### Communities

    - [stackoverflow](https://stackoverflow.com/).
    - [r/learnlisp](http://reddit.com/r/learnlisp)
    - [r/lisp](https://www.reddit.com/r/lisp/)
    - [r/common_lisp](https://www.reddit.com/r/Common_Lisp/)
    - [Discord Server](https://discord.gg/4kHR2g)
    - [comp.lang.lisp](https://groups.google.com/forum/#!forum/comp.lang.lisp)
    - There's also [LispForum](https://www.lispforum.com/)

    While asking for help, it's a good practice to first google (or
    duckduckgo or whatever) your own query to see if it has been asked
    before.

    ### More Technical Documentation

    You don't want to read this! Go back!

    Common Lisp is an ANSI standard (standardized in 1994). This is the
    language. The language has implementations - SBCL, CCL, ABCL, ECL,
    CLISP, Clasp, Allegro CL, LispWorks, MOCL and may be a few more.

    The standard exists in the form of [The Common Lisp
    HyperSpec](http://www.lispworks.com/documentation/lw50/CLHS/Front/Contents.htm)
    - not very accessible we agree. There is an attempt to make the
    documentation more \"attractive\" at [The Common Lisp
    UltraSpec](https://phoe.tymoon.eu/clus/doku.php?id=clus:todo).

    Individual implementations also have manuals such as the [SBCL User
    Manual](http://www.sbcl.org/manual/) or the [CCL
    Manual](https://ccl.clozure.com/manual/) or the [ECL
    Manual](https://common-lisp.net/project/ecl/static/manual/) or err \...
    you got it!

    There's also the [Common Lisp Wiki](https://www.cliki.net/).

    I told you you shouldn't read this section! Go back to the previous
    sections and learn lisp. And then, come here if you want to do something
    mission critical! There are some very experienced lispers (the creators
    of these stuff themselves!) out in the community whom you should
    consult.

    ### Practical Reasons to use Common Lisp

    Amidst all this, are there any practical reasons to use Common Lisp?
    [Check this
    answer on Quora](https://www.quora.com/What-is-your-favourite-non-mainstream-programming-language/answer/Shubhamkar-Ayare).