8 ms·
This is a very nice web site describing a programming language with unparalleled expressiveness, power and permanence. I am heavily invested in Common Lisp. We
by drmeister 8y ago
This is a very nice web site describing a programming language with unparalleled expressiveness, power and permanence.
I am heavily invested in Common Lisp. We are developing a programming environment for designing new materials and molecules called Cando (https://github.com/drmeister/cando https://github.com/drmeister/cando) using Common Lisp as a scripting language. Cando is running on Clasp (https://github.com/clasp-developers/clasp https://github.com/clasp-developers/clasp), a new Common Lisp implementation that interoperates with C++ and is based on LLVM.
What attracted me to the language, after 35 years programming in almost everything else, was how organically it lets one write software and how I don't have to worry about it fading like the next programming fad.
- e12e 8y agoHi, great fan of your presentations on clasp. Have you had an opportunity to look at Julia? It seems that there is some overlap in what can be achieved - with some obvious differences: as I understand it you had a lot of c++ - that could probably (today) be linked from julia, but not "integrated", starting from a green field with Julia, ideally one could do most things in Julia - maybe with some help from rust. And Julia is not a common lisp, obviously. But in merging a high level language and the love, it seems Julia has been successful in getting a lot of real-world, "all Julia" libraries, with "sufficient" performance. If you were starting over today - would you still prefer to build a common lisp with close integration to c++?
- drmeister 8y agoThank you. I did choose Common Lisp over Julia - I started learning Common Lisp in 2013 and Julia started becoming something around 2012. I did so because of the permanence and the demonstrated expressiveness and power of Common Lisp. Common Lisp has been around for almost five times longer than Julia, and Common Lisp has demonstrated again and again that it is capable of solving hard, poorly understood, real world problems in a lot of domains. Fun fact: Julia bootstraps off of an implementation of Lisp. Furthermore, most compiled languages are translated into an abstract syntax tree (AST) as part of compilation. Lisp S-expressions are a text based AST. So I can make the argument that Lisp is as close the "One True Programming Language" that we have. :-) I'm doing chemistry - that's fundamental and timeless - I find it maps beautifully to a fundamental and timeless language like Lisp.
- oblio 8y ago> how I don't have to worry about it fading like the next programming fad. I'm not sure I understand this bit. What other programming language has "faded" and how has it "faded"? At least since the more mature age of software, which I'd say started around '95 or so (so 20+ years).
- vesak 8y agoPascal, perl, ASP, every ML, Fortran, Cobol, Eiffel, Modula, all "4GL" languages.
- kamaal 8y agoNone of them have faded. Cobol? Seriously, there are probably more Cobol programmers than there are Python programmers. And C? Most of the world runs on C, and its irreplaceable language in a non desktop computer. And you will be surprised how much Perl code is written everyday. The root comment is talking about the fad of the year, the kind of a language web devs use as flavor of the year. The current ones are Javascript frameworks. In this case the 'fade' is just the web framework, that probably has less mind share and open source dev contributions.
- vesak 8y agoYeah, when I wrote the comment, I kinda guessed that people would point out the zombie-like state of living for these languages. That's only barely being alive, though, and very much faded. (I did have C in there but edited it out. I don't think that's a dead language yet.)
- AnimalMuppet 8y agoBut isn't Lisp almost as zombie-like as Perl or COBOL? (4GL I'll probably give you...)
- vesak 8y agoWell, yes :) And 4GL languages are actively being used to create new business, so who knows what's dead and what's not. Perhaps the whole programming field is just a bunch of undead things. Sometimes a bunch of living things stumble upon the field, but they're soon infected...
- eslaught 8y agoSince you're already using LLVM, I'm wondering if you've thought about adding something similar to the includec function in Terra [1] which uses Clang to parse C headers. I used to think that Lisp's CFFI was the best FFI out there until I saw that it was possible to literally parse a C header file and have it "just work". It seems like if you're already building against LLVM, so bundling Clang with your project too might not be that big of a jump for you. [1]: http://terralang.org/api.html#using-c-inside-terra http://terralang.org/api.html#using-c-inside-terra . The same idea also occurs in e.g. Python DragonFFI.
- drmeister 8y agoThank you - I'll check it out. We exposed the AST and ASTMatcher libraries of Clang inside of Clasp and we use it to analyze all of the Clasp C++ code to build an interface to the Memory Pool System memory manager. I want to have something that can include C and C++ header files and automatically expose them to the Common Lisp - that would be neat! Maybe we can steal some ideas like the includec function of Terra.
- nextos 8y agoCando and Clasp are really inspiring. Is it easy to get academic funding for such a non-incremental idea?
- drmeister 8y agoNo, none, zero, zip, nadda. What you do is you hook it to another really important idea and then you work until 3:00am every night for months and then years writing code. You take all those voices in your head that say you should not be doing this and squeeze them hard until they... go to sleep and stop bothering you. For me it started paying off in the last year and it is starting to look like it was a really good idea.
- nextos 8y agoIt's sad agencies are not funding this kind of stuff, although I think they are getting slightly less conservative. In any case, congratulations. It's an amazing piece of work.
- flavio81 8y ago>I am heavily invested in Common Lisp. And you're my hero. For having the big courage to write a completely new CL implementation, and attempting what wasn't attempted before: LLVM output, great C++ interoperability. Even more, leveraging the latest state-of-the-art compiler modules (Cleavir, etc.) Keep on with the good work, dr. Schafmeister!!
- pfdietz 8y agoI'm waiting to pounce on that. Oh, the testing I will do.
- arf 8y agoHave you tried other Lisps like Racket? If so, what's your take on them and how do you compare them with CL?