|
| 1 | +--- |
| 2 | +layout: default |
| 3 | +--- |
| 4 | + |
| 5 | +<header> |
| 6 | + <h1 class="title">Choosing Your Lisp</h1> |
| 7 | +</header> |
| 8 | +<p>Common Lisp implementations usually are called “systems”, and there are a number for the expert to choose from; I recommend <strong><a href="http://sbcl.org">SBCL</a></strong> for new users. Read on for more detail.</p> |
| 9 | +<h2 id="open-source">Open Source</h2> |
| 10 | +<p>In general, Lisp systems are designed around a front end to do development with. However, without an IDE, usually the best usability is to use a system with working arrow keys in the terminal. The author has investigated the <em>CCL</em> and <em>SBCL</em> systems using a plugin called Linedit; this should provide a ramp-up experience.</p> |
| 11 | +<p>Using emacs as an IDE and <a href="http://sbcl.org">SBCL</a> (Steel Bank Common Lisp) is the most popular choice at this point in time for open source development. Other common systems are CCL (Clozure Common Lisp), CLISP, ABCL (Armed Bear Common Lisp) and ECL (Embeddable Common Lisp). Less common systems exist. This author recommends <em>SBCL</em> or <em>CCL</em> for beginners who are comfortable on the command line, but would like to point out that each Lisp system provides value within the general Common Lisp ecosystem.</p> |
| 12 | +<h2 id="commercial">Commercial</h2> |
| 13 | +<p>LispWorks and Allegro Common Lisp are the currently maintained commercial implementations with IDEs. They provide free limited-functionality personal editions. This author has had good experiences with LispWorks Personal Edition; it has limitations on its use, however.</p> |
| 14 | +<p>Mobile developers may find <a href="https://wukix.com/mocl">mocl</a> a very interesting product in this space; it is a recently (2013) released Common Lisp system designed for interoperation with the base systems.</p> |
| 15 | +<h2 id="tabulation-of-systems">Tabulation of systems</h2> |
| 16 | +<table class="table table-striped"> |
| 17 | + <thead> |
| 18 | + <tr class="header"> |
| 19 | + <th style="text-align: left;">Name</th> |
| 20 | + <th style="text-align: left;">Base</th> |
| 21 | + <th style="text-align: left;">Notes</th> |
| 22 | + </tr> |
| 23 | + </thead> |
| 24 | + <tbody> |
| 25 | + <tr class="odd"> |
| 26 | + <td style="text-align: left;">SBCL</td> |
| 27 | + <td style="text-align: left;">Native</td> |
| 28 | + <td style="text-align: left;">High speed compiler</td> |
| 29 | + </tr> |
| 30 | + <tr class="even"> |
| 31 | + <td style="text-align: left;">CCL</td> |
| 32 | + <td style="text-align: left;">Native</td> |
| 33 | + <td style="text-align: left;">High speed compiler, good on OSX and Windows</td> |
| 34 | + </tr> |
| 35 | + <tr class="odd"> |
| 36 | + <td style="text-align: left;">LW</td> |
| 37 | + <td style="text-align: left;">Native</td> |
| 38 | + <td style="text-align: left;">Commercial platform</td> |
| 39 | + </tr> |
| 40 | + <tr class="even"> |
| 41 | + <td style="text-align: left;">ACL</td> |
| 42 | + <td style="text-align: left;">Native</td> |
| 43 | + <td style="text-align: left;">Commercial platform</td> |
| 44 | + </tr> |
| 45 | + <tr class="odd"> |
| 46 | + <td style="text-align: left;">ABCL</td> |
| 47 | + <td style="text-align: left;">JVM</td> |
| 48 | + <td style="text-align: left;">Java interop</td> |
| 49 | + </tr> |
| 50 | + <tr class="even"> |
| 51 | + <td style="text-align: left;">ECL</td> |
| 52 | + <td style="text-align: left;">C</td> |
| 53 | + <td style="text-align: left;">C interop, has iOS port</td> |
| 54 | + </tr> |
| 55 | + <tr class="odd"> |
| 56 | + <td style="text-align: left;">MOCL</td> |
| 57 | + <td style="text-align: left;">Native</td> |
| 58 | + <td style="text-align: left;">Stores CL as a library for mobile devices - iOS & Android</td> |
| 59 | + </tr> |
| 60 | + </tbody> |
| 61 | +</table> |
| 62 | +<hr/> |
0 commit comments