15 ms·
A new version of Common-Lisp.net has been launched
- lisper 8y agoAlso worth noting if you're on a Mac then in addition to PortiCL there is also Clozure Common Lisp which has a very nice Mac-native IDE: https://www.clozure.com/ccl/ https://www.clozure.com/ccl/ CCL itself is multi-platform but the IDE is currently Mac-only.
- kamaal 8y agoAs someone new to Lisp. The following thing has always fascinated me. I've read some older posts on comp.lang.lisp and people insist on buying a 'high performant' Lisp. I think what they mean is Allegro CL or Franz Lisp. But why is it 'high performant' compared to other implementations? Like say CMU CL(now SBCL). For example, in this case why would one use Clozure CL instead of SBCL?
- cbcoutinho 8y agoSBCL [0] is a fork of CMU CL [1], and both are actively maintained projects. [0] https://gitlab.common-lisp.net/cmucl/cmucl https://gitlab.common-lisp.net/cmucl/cmucl [1] https://sourceforge.net/p/sbcl/sbcl/ci/master/tree/ https://sourceforge.net/p/sbcl/sbcl/ci/master/tree/
- lisper 8y ago> Allegro CL or Franz Lisp. Same thing. Franz is the company. Allegro Lisp is the product. Like "Apple Macintosh computer." > But why is it 'high performant' compared to other implementations? Like say CMU CL(now SBCL). Somewhat better compiler, but mainly lots of extra features (better debugging, graphics, better libraries). > why would one use Clozure CL instead of SBCL? I use CCL because 1) I like the IDE and 2) its compiler is fast so you can always compile everything essentially for free. In other CLs you have to choose between running in compiled or interpreted mode, and that can sometimes cause problems. CCL doesn't have an interpreter at all. It always compiles everything and that makes it easier to use.
- kamaal 8y agoWhat resources would you recommend one read to understand more about debugging facilities in Common Lisp?
- lispm 8y agoSee the LispWorks IDE user guide: http://www.lispworks.com/documentation/index.html http://www.lispworks.com/documentation/index.html
- lmohseni 8y agoI have found this series of articles to be very helpful: http://malisper.me/debugging-lisp-part-1-recompilation/ http://malisper.me/debugging-lisp-part-1-recompilation/
- lisper 8y agoDebugging facilities are not standardized so you'd need to consult the documentation for whatever implementation you are using. e.g.: https://franz.com/support/documentation/10.1/doc/debugging.htm https://franz.com/support/documentation/10.1/doc/debugging.h... http://www.sbcl.org/manual/#Debugger http://www.sbcl.org/manual/#Debugger
- vindarel 8y agoIn [Successful Lisp, how to understand and use CL](http://www.communitypicks.com/r/lisp/s/17592186045679-successful-lisp-how-to-understand-and-use-common http://www.communitypicks.com/r/lisp/s/17592186045679-succes...) there is a chapter on debugging. Book's site, free dl: https://successful-lisp.blogspot.com https://successful-lisp.blogspot.com Also, it may not be necessary to master the most complicated machinery: compiling function by function gives lots of hints, and the very nice [log4cl](https://github.com/sharplispers/log4cl/ https://github.com/sharplispers/log4cl/) is handy.
- xenophonf 8y agoI'm pretty sure SBCL compiles everything too. From "Compiler-only Implementation," section 2.3.3 (page 14) of the user manual (http://sbcl.org/manual/sbcl.pdf http://sbcl.org/manual/sbcl.pdf): SBCL is essentially a compiler-only implementation of Common Lisp. That is, for all but a few special cases, eval creates a lambda expression, calls compile on the lambda expression to create a compiled function, and then calls funcall on the resulting function object. A more traditional interpreter is also available on default builds; it is usually only called internally. This is explicitly allowed by the ANSI standard, but leads to some oddities; e.g. at default settings, functionp and compiled-function-p are equivalent, and they collapse into the same function when SBCL is built without the interpreter.
- lispm 8y agoFranz Lisp does not exist anymore. It was a dialect like Maclisp at that time. It has been replaced three decades ago with Allegro CL - by Franz, Inc.. The 'fast' Lisps are often the native Lisps (SBCL, Clozure CL, Allegro CL, LispWorks, Lucid CL, ...). For selected applications some implementations were more specialized (for example GCL with fast numerics for Maxima)... SBCL has the advantage of some more advanced type handling. But fast isn't just low-level benchmarks. It might mean fast for a certain application. For example on the Deep Space One spaceship the application was deployed with LispWorks (and not OpenMCL/Clozure CL) because LispWorks had the best GC (soft realtime) and could be running on a hardened PowerPC processor on a real-time OS. And 'fast' in Lisp is also important for mostly unoptimized, but compiled, code with full runtime checks and lots of flexibility. Stuff which would be 'full debug' mode in C++. For example the typical Lisp Machine OS could run in a full development mode without much runtime speed penalty - just lots of space penalty. It still had to deal with the window system (written in Lisp), disk access (written in Lisp), interrupt handler and scheduler (written in Lisp) ... Is that 'fast' enough for the interactive user? Benchmark-wise the system might be slow, but it might perform well for applications running multiple threads and lots of interrupts. Imagine your application is a CAD system written in Common Lisp with CLOS (there are and were a bunch of those). It might need a large address space and zillions of CLOS objects. Will it run fast enough for interactive 3d workloads? How fast is the GC? How fast is the CLOS implementation? How does it deal with FFI operations into OpenGL... Stuff like that had been developed with Lucid CL and Allegro CL. At a time when CMUCL still was printing GC messages to the terminal... Nowadays a lot of machines are "fast enough" and have lots of memory. But when one needed a 64bit SGI for a demanding application, Allegro CL was the thing to use. I think the IDE for Crash Bandicoot was Allegro CL on an SGI. Later similar graphics applications in Lisp ould also run on large Windows NT machines with faster graphics cards. Today Allegro CL is also the only CL one I know, which has a partly parallel GC - a demanding application like their database and knowledge-bases drives the need for faster runtimes. Lucid CL no longer exists (though LispWorks provided support for it), but it had a compilation mode for full-program compilation, which enabled good runtime performance. Many commercial applications had been deployed with it - until the company went away - after investing lots of money into an advanced C++ IDE which did not fly on the market. With something like LispWorks and Allegro CL one can develop normal-looking and fast applications for the desktop - stuff which feels much less sluggish than your typical Java desktop application and has useful interactive performance.
- patrec 8y agoNot just Allegro, from what I read, Lispworks is also noticeably faster then SBCL (you might be able to find some comparisons for a practical system by googling for elPrep, which is now written in Go but used to be Common Lisp and ran on both Lispworks and SBCL). Concerning the appeal of Clozure CL, I think people have traditionally used it for faster dev turnaround due to better compilation speed than SBCL (which in turn typically generated faster code).
- lispm 8y agoFor some reason ITA (now at Google) had people who advocated moving from SBCL to CCL for their application(s).
- abc_lisper 8y agoHi kamaal, it’s nice to see you interested in cl. I don’t know if you remember this but we sparred a couple of times on HN few years ago. I have been on this path before and happily settled on clojure for a few years now. I don’t know if it applies to all cls, but what nobody told me was how little I have to worry about when writing code in clojure. I stopped paying attention most of the Language and instead spend time on solving the actual problem. It is very liberating. See the talk “simple made easy” by rich hickey if you haven’t already. Also most psychological and process incl. debugging barriers come down when using clojure
- kamaal 8y ago>>I don’t know if you remember this but we sparred a couple of times on HN few years ago. Hey, I apologize if that was something that hurt you in anyway. I discovered Lisp a few months back, I had of course heard of it long back, but kind of discovered using it only months back. I don't code in Lisp at day job or full time. But many of my problems related to understand data structures and algorithms have vanished since I started thinking of them in Lisp. Mostly because I started to think in terms of recursion well, and other list manipulation stuff feels like it just comes to naturally. Not sure why this, or its unique to me. But for some reason I find it very easy to think and work with trees and graphs when I think of them as lists. Always looking forward to learn and do more.
- abc_lisper 8y agoNo it was cool :) Yeah, most of incidental complexity vanished away once I start using clojure. Lisp is pretty cool in that there is very little to learn in way of syntax and ceremony. If you are new to functional programming, I suggest understanding reduce well. Understanding it forms the basis of higher order functions. Also half of clojure core is implemented with reduce. Also, I highly suggest watching the talk “simple made easy”. One hour of time spent there pays off in many many months/years
- blihp 8y agoIf by 'older posts' you mean early 2000's and prior, the open source Lisps weren't as many or as good as they are today. CCL is open source (back then it was closed source under the MCL banner), SBCL didn't exist in it's current form (that was announced in 1999) etc. In general, each decade back you go, think of whatever open source software that even existed as being significantly less powerful, performant and buggier. Many open source projects (esp. the GUI applications) started life as bad imitations of not much better commercial software vs. what you're used to seeing today. And to top it off, you were running it on radically less powerful hardware (in the early 90's you could still watch windows on the screen being redrawn on 'high end' hardware) so any software performance issues you had were magnified by the systems you were running on.
- mruts 8y agoI like Lisp (I used to love it, but I'm more in the static typing camp nowadays;Typed Racket is good though) but Common Lisp honestly is an abomination. I can't really think of a situation in which CL is a good choice for a new good base. And calling CL "modern" is... ironic at best.
- dang 8y agoCan you please keep programming language flamewars off HN? This comment is a classic flamewar-starter, and we're hoping for higher-quality discussion here.
- rataata_jr 8y agoThe site looks amazing
- village-idiot 8y agoIt’s interesting seeing lisp try and make a comeback, I wonder if it’ll work. As one of the few programmers who has worked in CL commercially in this century, my general analysis is that the language has way too much rope. The code base I worked on wasn’t too clever by half, it was too clever by leaps and bounds. I’d genuinely never start a multi engineer project in Lisp ever.
- kamaal 8y ago>>As one of the few programmers who has worked in CL commercially in this century As some one new, but with active interest in Lisp, I'm genuinely curious to know the projects you've worked on.
- deleted 8y ago[deleted]
- typon 8y agoWhat do you think is the best example of this rope you're talking about? Macros? Something else?
- masukomi 8y agoi think the macros make life easier, and if well written make the code more maintainable by simplifying the code you're encountering most of the time. for me the "rope" was the ridiculous complexity of things like the "loop" macro. Coming from a newb (to CL) perspective and wondering "how do i use this thing" ... ugh you could probably write a small book on all the different ways to use that thing. This type of stuff was littered through the language. Instead of small focused functions that were really self explanatory, but limited in capability, you have things that are way too ... i dunno "configurable"? "modifiable"? There were also thinks akin to "method overloading" but done by a drunk person seeing how many "useful" ways they could call this one function. The core language documentation is extraordinary. Probably better than any language out there.... but I moved on to Chicken Scheme for my personal work. Life was much better afterwards.
- TurboHaskal 8y agoI like this one more https://lisp-lang.org https://lisp-lang.org
- muraiki 8y agoAs someone with glasses, that default text size is much more readable for me.
- serialdev 8y agoThis really makes me excited, there is no reason why we cannot implement a thorough type-system like qi and shen on top of common-lisp for massive teams, the repl experience is still unparalleled, and I for one would love more libraries popping up, so maybe more people can make a business case for it. Machine learning in python is nice, but I would definitely enjoy common lisp for it too!
- lisper 8y ago> there is no reason why we cannot implement a thorough type-system like qi The SBCL compiler actually has a type inference engine built in to it.
- lispm 8y agoMany CL implementations have a type inferencer (usually so that the compiler can optimize code without the developer having to specify types everywhere). What sets SBCL (and CMUCL and Scieneer CL) apart is that it does limited forms of compile time type checking: http://www.sbcl.org/manual/index.html#Handling-of-Types http://www.sbcl.org/manual/index.html#Handling-of-Types
- lisper 8y ago> type inferencer > compile time type checking Aren't those the same thing?
- omaranto 8y agoI don't think so. A type inferencer figures out types of expressions that don't have a type explicitly declared using information it has about other things that are declared. A compile time type checker is expected to signal errors at compile time for programs whose types don't check out. You can use a type inferencer without signaling any errors at compile time (for example, by deferring errors to runtime) and you can signal type errors at compile time even if you don't infer any types (like C compilers, that demand all variables have a declared type).
- yawn 8y agoWhen I saw the stark red banner at the top, I thought my browser was showing me a warning about the site.
- yawn 8y agoUpdate: they changed the color. Looks great!
- systems 8y agoif i may make a suggestion, please add a forum i personally prefer forums for help, support and learning from the community, over any other option (mailing lists, irc, stackoverflow, etc .. ) most programming languages websites nowadays includes a discourse based forum and it works greats i strongly recommend adding one
- chicagoscott 8y agoI'm very glad to see this. I'd also like to see a new Lisp book, with an animal on the cover: http://www.andrewlangman.com/articles/the-missing-lisp-book.html http://www.andrewlangman.com/articles/the-missing-lisp-book....
- lispm 8y agoThis is a good one: http://weitz.de/cl-recipes/ http://weitz.de/cl-recipes/
- chicagoscott 8y agoThank you, it does look good. I still want one with an animal on the cover! Or, more seriously, I think an O'Reilly book on common Lisp would go a long way toward promoting the language. As would one from the Pragmatic Programmers.
- lispm 8y agohttp://shop.oreilly.com/product/9781593272814.do http://shop.oreilly.com/product/9781593272814.do Though it is an alien... Btw., for a decade or so O'Reilly actively refused to publish Lisp books - which did not make them very liked in the community.
- vram22 8y ago>Btw., for a decade or so O'Reilly actively refused to publish Lisp books - which did not make them very liked in the community. Interesting, any idea why? I would have thought they would have been happy to publish Lisp books, since they have published books on so many other computer subjects. I used to be a huge buyer and reader of their books. Only reason I can think of for them not wanting to publish Lisp books is perceived small market size - do you think that was it? But on the other hand, they did publish books on topics like XML-RPC, which was probably not very much used even when they published a book on it. I had that book, it was about using XML-RPC from multiple languages [1]. [1] Programming Web Services with XML-RPC: http://shop.oreilly.com/product/9780596001193.do http://shop.oreilly.com/product/9780596001193.do
- gibsonf1 8y agoVery nice site - well done! There are some very good lisp libraries on github that aren't in the project list, such as many of the web libraries I use every day like https://github.com/fukamachi/caveman https://github.com/fukamachi/caveman or https://github.com/fukamachi/dexador https://github.com/fukamachi/dexador I've also started a new library for creating a Solid Pod host https://github.com/gibsonf1/cl-solid https://github.com/gibsonf1/cl-solid Is there a way to elegantly link to github projects as well?
- tarboreus 8y agoThis site has the biggest, fattest annoyance sticky bar that I've ever seen!
- nikki93 8y agoReally wish SBCL ran on iOS. :( It's the only one with the perf I want. But like compilation at runtime on iOS is a no go so ... yeah. LuaJIT in interpreter mode is p fast tho.
- newcup 8y agoIf you don't mind paying, LispWorks has an iOS runtime: http://www.lispworks.com/products/lw4mr.html http://www.lispworks.com/products/lw4mr.html. I'm not sure of the perf part on iOS, but on x64 it's pretty good.
- lispm 8y agoActually the performance is pretty good. My iPad Pro is basically running LispWorks as fast as my 2015 Macbook. It's faster than other ARM systems I've seen, too.
- nikki93 8y agoInteresting. I might give this a shot. Do you know if CFFI stuff works -- so that I could use eg. cl-opengl or cl-sdl2 -- if you somehow statically link stuff together? That's what I do w/ LuaJIT for example. Or maybe LispWorks has its own OpenGL bindings, not sure.