6 ms·
I hate the "lists of myths" (that aren't) genre. > Common Lisp does not have compile-time type checking. Nothing in the standard mentions compile time checkin
by patrec 7y ago
I hate the "lists of myths" (that aren't) genre.
> Common Lisp does not have compile-time type checking.
Nothing in the standard mentions compile time checking requirements and there is no useful de-facto standard that you (or tooling!) could seriously build upon either. I'd be suprised if python did not have better "compile-time type checking" for all practical purposes. Yes, SBCL gives much better type warnings at compile time than python, but for python you have mypy and it's A Thing, and still a joke compared to a proper type system like Ocaml's.
> Common Lisp is too specialized, it’s not for general-purpose development.
Common Lisp has no eco-system to speak of for machine learning, web development, command-line utilities, games programming, mobile development, GUI programming, embedded development or pretty much anything real general purpose languages do. If you have something for which Common Lisp is a good fit, you can still be commercially successful using it because not everything requires a super rich eco-system and for some problems what Common Lisp has is in fact highly competitive. But if you want to use common lisp effectively you definitely need to pre-select the problems you want to work on accordingly to an extent that's not true of python, C, C++, Rust, javascript, Go, Java, and half a dozen other languages.
> Common Lisp applications are hard to deploy.
No server or desktop or web-browser comes with common lisp pre-installed. Building common lisp is a pain, because packaging/ASDF is terrible and you don't easily get a nice and small statically linked executable out either. Compared to exactly what language is common lisp not hard to deploy?
- michaelanckaert 7y ago>> Common Lisp applications are hard to deploy. >No server or desktop or web-browser comes with common lisp pre-installed. Building common lisp is a pain, because packaging/ASDF is terrible and you don't easily get a nice and small statically linked executable out either. Compared to exactly what language is common lisp not hard to deploy? I'm not here to defend all of the flaws in CL, but I really enjoy the SBCL feature that allows you to compile to a binary. Yes it may not be as small as a pure C/C++/Rust executable, but it's very useful and I've used in various projects with great success. My heart still goes out to Python but I was I could just as easily create a Python executable as I can with SBCL.
- bibyte 7y agoIsn't Common Lisp's save-lisp-and-die roughly analogous Pyinstaller? I mean they both work but nobody seems to be using them. In my experience Common Lisp code is most commonly deployed with an interpreter.
- lispm 7y agoMost Common Lisp is actually compiled, not interpreted. If one compiles code or loads compiled code to something like SBCL and dumps an image, you can both run it directly from that image AND have still have the development tools included. Some Common Lisp implementations also have delivery tools which create applications without development tools. Some applications though include the development tools, because they are thought to be extended by the user. For example a CL-based CAD system might exposed Common Lisp as the scripting language for CAD extensions.
- bibyte 7y agoOf course many implementations do compile to machine code but there are also a few that don't (clisp, ecl, abcl). It is really complicated to talk about languages that have multiple implementations. That is why I went with "interpreter". That was pretty lazy of me :). But you didn't say anything about the original question. Have you seen Common Lisp code deployed as an executable or as source code?
- lispm 7y agoInterpreted in Lisp usually means 'executing s-expressions by a Lisp interpreter'. ECL and CLISP also use compilers. ECL usually compiles to C, which then is compiled to native code via a C compiler. CLISP has its own virtual machine, which is the target of its compiler. Don't know what ABCL does, would have to look it up - but in the end it usually would execute JVM code, which gets compiled by its JIT compiler. Question of code deployment. I have seen deployment as an executable, deployment as an executable with also loads compiled code (for patches) and deployment as source code. Especially commercial applications and/or end-user applications tend to deploy as executable. For example ScoreCloud is a LispWorks application as an executable and can be bought on Apple's Mac app store. My Lisp Machine at home boots into a Lisp image which contains a whole operating system as compiled Lisp code. That's exotic, but many other Lisp development environments already come as compiled Lisp executable. For example on the Mac and on ARM64/Linux I use LispWorks. On the Mac it is the usual Mac application bundle, where the executable already contains much of the IDE and then loads some code on demand from compile code files.
- vindarel 7y agoHeliohost or Platform.sh come with CL pre-installed (https://github.com/CodyReichert/awesome-cl#deployment https://github.com/CodyReichert/awesome-cl#deployment). In my experience, deploying a CL app is muuuch less a pain than a Python one: you build a self-contained binary, you run it and voilà, you can access your web app from the internetz. The binary is ±20MB in size (compiler, debugger and all included). With Python, there are so many ways to fail (and even because a dependency of a library didn't pin its dependencies well enough. Gosh.). Building a self-contained app is 1 line in the .asd project declaration. https://lispcookbook.github.io/cl-cookbook/scripting.html#building-a-smaller-binary-with-sbcls-core-compression https://lispcookbook.github.io/cl-cookbook/scripting.html#bu...
- vindarel 7y agoweb development: kind of agree, but that didn't prevent me and two other colleagues to build a commercial website last year, for 1,5 month. It receives tens of thousands of visits a month and has a small admin panel for a three persons team. Job done, rent paid CLI utils: it's simple to use cl-readline. There are a couple libraries for ncurses. The Lem editor is a good example. mobile: nope. For the adventurous, see https://gitlab.com/eql/EQL5-Android https://gitlab.com/eql/EQL5-Android and its REPL. GUI: https://github.com/CodyReichert/awesome-cl#gui https://github.com/CodyReichert/awesome-cl#gui Qt4, Gtk3, IUP, Tk, Nuklear have good bindings. Qt5 is possible with gobject-introspection (for the adventurous). Proprietary: CAPI. Electron: Ceramic. Java GUI interop with ABCL? ML: https://github.com/CodyReichert/awesome-cl#machine-learning https://github.com/CodyReichert/awesome-cl#machine-learning MGL's author won the Higgs Boson Machine Learning Challenge, but yeah. for the rest: IDK https://lisp-lang.org/success/ https://lisp-lang.org/success/
- Ambrevar 7y agoThanks for the list! :)
- vindarel 7y agoaddendum: for iOS, Android and mac: possible MOCL (proprietary) https://github.com/CodyReichert/awesome-cl#implementations https://github.com/CodyReichert/awesome-cl#implementations
- patrec 7y agoCLI utils: you're missing the point. Of course you can write some simple terminal apps with common lisp, but can you name a single one that anyone who is not a lisp fanatic uses? If not, ever wonder why? GUI: would you develop a commercial app (to pay your rent) in any of these apart from CAPI? ML: You are joking, right?
- vindarel 7y agoI can name one :) pgloader https://tapoueh.org/blog/2014/05/why-is-pgloader-so-much-faster/ https://tapoueh.org/blog/2014/05/why-is-pgloader-so-much-fas... I'd use Electron with Ceramic, not the GUI bindings. Or maybe Nuklear. But I would build personal projects with them. ML: yeah, yeah. Just to show there have been work on it, that (of course) the platform is capable.
- yellowapple 7y ago> Common Lisp has no eco-system to speak of for machine learning, https://www.cliki.net/Machine%20Learning https://www.cliki.net/Machine%20Learning > web development, https://www.cliki.net/Web https://www.cliki.net/Web https://en.wikipedia.org/wiki/Viaweb https://en.wikipedia.org/wiki/Viaweb https://en.wikipedia.org/wiki/Reddit#Technology_and_design https://en.wikipedia.org/wiki/Reddit#Technology_and_design (though it admittedly got rewritten into Python) > command-line utilities, https://github.com/TeMPOraL/hju https://github.com/TeMPOraL/hju, among, like, hundreds of other examples > games programming, https://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp https://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp https://github.com/shirakumo/trial https://github.com/shirakumo/trial http://xelf.me/ http://xelf.me/ https://borodust.org/projects/trivial-gamekit/getting-started/ https://borodust.org/projects/trivial-gamekit/getting-starte... > mobile development, https://wukix.com/mocl https://wukix.com/mocl http://kriyative.github.io/2011/03/26/ecl-for-ios-updated/ http://kriyative.github.io/2011/03/26/ecl-for-ios-updated/ https://common-lisp.net/project/ecl/posts/Lisp-ECL-and-QML-Qt5-on-Android.html https://common-lisp.net/project/ecl/posts/Lisp-ECL-and-QML-Q... > GUI programming, https://common-lisp.net/project/mcclim/ https://common-lisp.net/project/mcclim/ https://www.cliki.net/GUI https://www.cliki.net/GUI > embedded development https://cliki.net/embedded https://cliki.net/embedded http://www.ulisp.com/ http://www.ulisp.com/ (not technically Common Lisp per se AFAICT, but seems to have very similar semantics) > Building common lisp is a pain, because packaging/ASDF is terrible and you don't easily get a nice and small statically linked executable out either. https://www.xach.com/lisp/buildapp/ https://www.xach.com/lisp/buildapp/ http://www.sbcl.org/manual/#index-save_002dlisp_002dand_002ddie http://www.sbcl.org/manual/#index-save_002dlisp_002dand_002d... https://ccl.clozure.com/manual/chapter4.9.html https://ccl.clozure.com/manual/chapter4.9.html
- patrec 7y agoIf you think spamming random links to old toy/dead/in-house projects you found on Cliki and that contained words like "machine learning", "Games" or "GUI" (mcclim – really?[]) constructs an effective rebuttal to "no ecosystem to speak of", I'm not sure I know what to say. But I'll go through your list in more detail if you want me to. [] For the record CLIM had interesting ideas, but last I looked, calling McCLIM's implementation of them a toy would be charitable.