4 ms·
Lisp has some good traits, but it isn't the 'ultimate' language. There are a number of issues with Lisp, for example I've heard debugging Lisp macros can be qui
by ZenoArrow 10y ago
Lisp has some good traits, but it isn't the 'ultimate' language. There are a number of issues with Lisp, for example I've heard debugging Lisp macros can be quite hard, I'd also say optional types is a weakness. Even Sussman, one of the creators of Scheme, classes Haskell as the best programming language we currently have, or in his words "the most advanced of the primitive languages.".
http://limist.com/coding/talk-notes-we-really-dont-know-how-to-compute-gerald-sussman-2011.html http://limist.com/coding/talk-notes-we-really-dont-know-how-...
That's not to say Lisp doesn't have merit, because it does, it's easy to pick up, very flexible, and in the right hands can lead to impressive results, but we've still got plenty of work to do to improve the state of the art.
- nickpsecurity 10y agoI agree. As sklogic showed, you can actually get the remaining attributes of LISP by building a Haskell or whatever on top of it. Doesn't have to be Common LISP or even a full LISP. Just the syntax, macros, eval, and basic compiler. One can do the rest in the other language as a DSL. And then another language as a DSL. And another. :)
- emidln 10y agoDebugging lisp macros is like debugging anything else. You have functions that take an input and produce an output. The input is data, the output is data, and there aren't likely side effects. Use the same tools to debug macros that you would use to debug other functions. We have debuggers, tracers, and the repl to help us debug macros, since macros are just normal lisp functions (that run at a different time than "normal" code).
- eggy 10y agoI wonder if Sussman has come across Shen [1]? It is a small Lisp based on Klambda, comprised of just 43 instructions, that has been ported to Common Lisp (SBCL), Haskell, Ruby and Emacs Lisp (just this month). It has also been ported to Python, Clojure, Javascript, Java, and the JVM which are not up to Shen 19 certification yet. Shen has pattern matching, an integrated fully functional Prolog, static type checking and even optional lazy evaluation. It has a very strong type system. Shen commercial has Griffin, an optimized compiler, SML (Shen Markup Language) to generate HTML, and concurrency. Popularity has not been my reason for selecting a language. I have been using J, an APL-derived, language for years, and I also like APL, K, and now Q! It is amusing to see developers rediscover APL concepts after 50 or more years! [1] http://shenlanguage.org/ http://shenlanguage.org/ [2] jsoftware.com
- minikomi 10y agoI am enjoying using J for fun. What kind of work do you use it for?
- eggy 10y agoAnything I can think of using it for. I have used it at several jobs, for fun, and now I'm trying to learn how to build standalone J/Qt cross platform apps. The J runtime runs on Android and iOS too, but my needs are Windows, Mac, Web and Linux for now.
- minikomi 10y agoGood luck man. It's a really interesting language. Error messages could use a little more context, but it's super fun to do /r/dailyprogrammer puzzles with it.
- eggy 10y agoThanks. Error messages are concise, but to the point, and the code is short enough that no scrolling is usually needed. One page view!
- minikomi 10y agoTrue. I still have trouble when I get a domain error due to my thinking about verbs / interpretation order / context / rank not being up to scratch. Would love to get something a little more verbose like "expected ~" or something to help me zone in on what's not working.
- deleted 10y ago[deleted]
- andmed2 10y agoHow well the idea of commercial languages fits development needs? I mean, were there any success stories for commercial languages?
- malisper 10y ago> I've heard debugging Lisp macros can be quite hard It's much easier now that there is slime-macrostep[0]. Hmm. Maybe I should write another debugging lisp post on it. [0] http://kvardek-du.kerno.org/2016/02/slime-macrostep.html http://kvardek-du.kerno.org/2016/02/slime-macrostep.html
- ZenoArrow 10y agoI'd be interested in reading that post. Thanks for the link as well.
- madmax96 10y agoI disagree with your assessment, and I guess with Sussman's appraisal as well. I believe that you are mistaken in your belief that Lisp isn't the most advanced language. The submitted thread contains many comments that state that Lisp is basically a pure implementation of the untyped lambda calculus. I don't think this is correct -- Lisp is itself a unique model of computing, and it generally unifies Turing's and Church's computational model in a relatively unbiased manner IMO. For that reason, I regard Lisp as the most flexible languages of all "multi-paradigmed" languages. The Lisp machine's software was basically exclusively implemented in Lisp; the fact that developers could comfortably accomplish that testifies to Lisp's flexibility. In Lisp, entire linguistic constructs can be dynamically created to iteratively solve a problem. That's basically a bunch of buzzwords, but I think the statement holds significance. I've read comments elsewhere regarding Lisp as the "Maxwell's equations" of PLT. I agree with that. If you're not familiar with the meta-circular evaluator, I encourage you to read up on it, as it justifies this statement. That being said, Haskell's type system is really fantastic. I'd love an implementation of a Lisp with a Hindley Milner-esque type system. Basically, I think Lisp is the most advanced language because it captures what a language is perfectly. This makes it free to involve and embrace new ideas, and has contributed to its continual success and long life.
- jpt4 10y ago> I'd love an implementation of a Lisp with a Hindley Milner-esque type system. I am not certain of whether it is more Hindley-Milner or more "esque", but you may find something of interest in Shen [0]. [0] http://shenlanguage.org/ http://shenlanguage.org/ Edit: I submitted this reply an hour or so after opening the tab, during which interval several others mentioned Shen (which is good, as it deserves a bit of exposure).
- emidln 10y agoShen (in particular its type system) is an executable Sequent Calculus system [0] written with a small portable lisp. This derives from a propositional logic system, not H-M over typed lambda calculus. [0] - http://www.shenlanguage.org/learn-shen/types/types_sequent_calculus.html http://www.shenlanguage.org/learn-shen/types/types_sequent_c...