22 ms·
I don't get it. If LISP is such an EPIC language why are there no major pushes from LISP community, or just showcase a piece of software that proves it. I have
by maxpert 10y ago
I don't get it. If LISP is such an EPIC language why are there no major pushes from LISP community, or just showcase a piece of software that proves it.
I have been looking on internet about what makes LISP cool it's ideas about code is data, powerful macros and hell lot of bragging about being able to define your own syntactic sugar but can't find a single MUST HAVE piece of code that makes me say "I have to learn this". It's a ML age now and developers around the world are looking for such gems, but I don't see LISP picking up momentum (I did notice Erlang picking up momentum upto the point people feeling crappy about syntax invented Elixir).
- deleted 10y ago[deleted]
- dschiptsov 10y agoThe piece of code is called Open Genera and it is available from pirates. Some sources and excellent documentation are on the bitkeeper. There is also the MIT Scheme, as seen on TV in the Wizards Lectures (1986 Abelson & Sussman SICP lectures). BTW, the guys who designed and developed early lisps, up to 80s, were bright people heavily influenced by discoveries of "modern science" of the time, which were genome and protein structures, basics of cell biology, signaling pathways, early genome sequencing techniques etc. Their designs has been based on right principles. Erlang is another example. Another obviously successful project is called (surprise, surprise!) GNU Emacs. Non surprisingly it is a continuum of early emacses, such as Zmacs. Recently, Eitaro Fukamachi (a true hero, in my opinion) have bootstrapped a few remarkable projects, which should mark the beginning of the Common Lisp renaissance, but these projects also went unnoticed by packers. Why Clack when we have PHP or Java Server Faces? As for Erlang syntax - the pattern-matching on receive with variable binding for simple, terms-based protocols is, again, too good for mediocrity to grasp {ok, Val} | {error Why} etc.
- incepted 10y agoYou're doing some major revisionism with this post and claiming a lot of completely unsubstantiated (and in my opinion, completely made up) facts. I don't think Gosling, Stallman or Armstrong ever mentioned any basis in genetic science to justify their language. And seriously, think about it... It's completely absurd. I'm also not sure why you think that returning error codes is "too good for mediocrity to grasp", because in the 21st century, it's considered a very bad practice that leads to extremely unsafe coding practices, which is one of the many reasons why it's been deprecated in most modern languages invented in this century (except Go ;-)).
- dschiptsov 10y agoIt is actually a long story, and it goes back to the old dogma that lists and structures made out of conses are good-enough, almost universal building blocks for code and data. Type-tagging was obviously inspired by DNA, etc. As for protocols, there is, for some obvious reasons, still nothing better than asynchronous, out of order message-passing over a packet-based networks, with fixed-size header (upon which one could patter-match in a single pass) and adjustable size payloads, which could adapt to a physical channel by adjusting to its frame-size, so, the stdlib and OTP is good-enough and well-balanced and just works. It is also not a coincidence that Erlang is pure-functional - so is the world of proteins and enzimes. There is a bit more universality in a chunked linear structures and stateless asynchronous message passing of type-tagged binary data with feed-back loops co-regulation that it seems.)
- TeMPOraL 10y agoAll things you mention are library-level stuff. It's also no surprise that Erlang is actually a Lisp with Prologish syntax - just take a look at the intermediary language that sits between Erlang and BEAM bytecode ;). Yeah, the one you have to learn about if you want to do parse-transforms.
- incepted 10y ago> Type-tagging was obviously inspired by DNA Source? > It is also not a coincidence that Erlang is pure-functional - so is the world of proteins and enzimes. That world is mostly driven by mutations, which are the exact opposite of functional purity. I really have no idea where you get all these broken metaphors.
- sjy 10y agoGood polysemous use of the word 'mutations.'
- yomly 10y agoSussman cites a desire to mimic biology in his essay "Building Robust Systems" https://groups.csail.mit.edu/mac/users/gjs/6.945/readings/robust-systems.pdf https://groups.csail.mit.edu/mac/users/gjs/6.945/readings/ro...
- 55acdda48ab5 10y agoTalking about lisp in 2016 is mostly just debating static vs. latent/dynamic typing. The lisp guys were talking up their advantages in the 80s/90s era of fortran and C and really bad c++, and I guess the really shitty original JVM. It's a discussion from a dead age. latent/dynamic typing and also macros work very poorly when the codebase is large and there are many people involved, or when we're talking about decade plus code-base lifespans. It's that simple. If you're one or three noticeably smart dudes building a system from start to ultimate finish (financial exit in four years?), why not go with LISP or something like it. If you're a team of one or two I advise you do go with lisp or perl or python or erlang or whatever. But that's not the systems anybody builds or maintains much anymore. We make things that a rotating cast of 100 might touch over 30 years. We need static typing.
- golergka 10y agoJavascript though.
- oblio 10y agoPeople are constantly complaining about using it. And many of them are trying to make it safer, it's just a slow process since it requires standardization and adoption at a large scale. Think about strict mode, ES6, Google Closure compiler, Flow, Typescript, etc.
- jasode 10y agoIn both cases of Javascript and Objective-C, programmers didn't deliberately choose "dynamic" as an explicit engineering design. Even though the Apple System9/OSX platform has been around a long time, the Apple ecosystem got really popular with the iPhone & iOS in 2007. From 2007 to 2014, the official SDK for that was Objective-C. Obj-C is dynamic, and as a consequence, people happened to program in a dynamic language. ("When in Rome do as the Romans...") Same situation for web browsers. The only "sdk" for adding interactivity and actions to web pages was Javascript -- which happened to be "dynamic". In other words, "dynamic" was something programmers had to live with rather than something they chose for architectural superiority. In both cases (Swift, TypeScript), the desire for static typing became apparent.
- narag 10y agoYou have surely heard that success has many parents and failure's an orphan. The proverb is of course cynical, but there is more truth to it than it seems. Success often needs many parents, while failure may come from a single factor among many. Or simply because there were not enough parents to make it succeed, in which case, you could say only half-jokingly that the failure happened for no reason.
- pdkl95 10y ago> LISP is such an EPIC language The point isn't that LISP is a great language. I think it is, but that's mostly personal opinion. The important part is to understand the concepts that LISP introduced and/or popularized.
- AlexeyBrin 10y agoA nice example of Common Lisp is Maxima http://maxima.sourceforge.net/ http://maxima.sourceforge.net/ a Computer Algebra System
- incepted 10y ago> If LISP is such an EPIC language why are there no major pushes from LISP community, The main reason is that the LISP community is just not paying attention to the modern world. Back in its days, LISP was revolutionary and ahead of its time. It gathered a bunch of followers who could reasonably be justified in thinking their language of choice had something unique about it. And then, they made a major mistake: they stopped paying attention. The tech world moved on and passed them. And they ignored it, confident that nothing new or interesting could ever be invented after Lisp. It's the ultimate hubris: thinking that programming language science can ever reach an end.
- junke 10y agoYou're doing some major revisionism with this post and claiming a lot of completely unsubstantiated (and in my opinion, completely made up) facts. (https://news.ycombinator.com/item?id=11699585 https://news.ycombinator.com/item?id=11699585)
- noctuid 10y ago> they stopped paying attention I don't think that you've been paying attention to recent Common Lisp libraries or recent lisps. Lisp has never stopped evolving and continues to take ideas from other languages.
- groovy2shoes 10y agoJust as other languages continue to take ideas from Lisp! C.A.R. (Tony) Hoare said of Algol 60 that it was such a good language that it was not only an improvement on its predecessors, but an improvement on nearly all its successors as well. The spirit of that statement rings true for me[1], and I feel that the same could equally be said of many Lisps, especially when I think of things like read/write, CLOS, streams, conditions, (delimited) continuations, hygienic macros, etc. Common Lisp has been virtually static for over 30 years[2] not because it's "behind the times", but because it was so far ahead of the times that everything else is still playing catch-up! [1]: I feel as though Algol 60 was, with few exceptions, the best language available until around the mid-to-late 80s. [2]: Not to mention that it really hasn't been totally static: now we've got ASDF, QuickLisp, {U,C}FFI, CLIM, SLIME, etc. And loads of libraries.
- erikpukinskis 10y agoBecause language goodness really doesn't matter that much. It's like people arguing about which car is best. Sure, a BMW can do more than a Kia, in more style. But in terms of what influences the course of human events, what usually matters is, can your car get up to the speed of traffic and continue running until you get to your destination. Everything else is just niceties. Even the advantages in comfort don't really change much, because your expectations just adjust to whatever level of luxury and effort you are used to. The truth is, functions, variables, and loops are an extraordinary form of magic. Being able to use those forms of magic well is an infinitely deep space of learning and growth. Maybe your language feature helps you solve a problem better, but compared to the opportunities available to you in terms of just becoming a better programmer, it's a comparatively small opportunity. For example, knowing when to put away your primary language and use a special purpose one (and when not to) is an ability that can improve your productivity 1000x. I don't think there are any language features that can come close to it. Compounding this, every time you use a unique language feature, you incur readability costs, and portability costs. The more control structures you put into your toolbox, the more choices you have to consider every time you read and write code. That cuts into whatever wins these fancy control structure provide.
- deleted 10y ago[deleted]
- bootload 10y ago"I don't get it. If LISP is such an EPIC language why are there no major pushes from LISP community, or just showcase a piece of software that proves it." Irony. Using HN to say this. [0] [0] Arc ~ https://en.wikipedia.org/wiki/Arc_(programming_language) https://en.wikipedia.org/wiki/Arc_(programming_language)
- sotojuan 10y agoSorry but a simple site like HN is not a good showcase of any language. I think they mean more ambitious and popular software.
- 59nadir 10y agoThe funny thing about this is that there is no language that simply allows you to make great things, because making great things really does not have anything to do with the language you use. The only types of areas where this is even remotely the case are things where the rest of the field consistently undervalued a certain concept/category of problems. That's why there is really no language that can do concurrency as easily as Erlang. The only way to figure out whether a language is good for you or not is to use it for whatever you can think of. Trying to be convinced by an Internet forum that a language is good because someone else made something in it is pointless. People have made whatever you can think of in almost every language older than a few years. Their successes say nothing about whether or not the language is good or not or whether or not it was a painful process to make it.
- sotojuan 10y agoWell said!
- bootload 10y ago"a simple site like HN is not a good showcase of any language" HN the site, looks deceptively simple. It solves a number of problems simultaneously [0] yet seems to work at scale [1] without bugs. [2] The success of Arc, a Lisp derivative is in the everyday usage of the site and the hard problems it solves. [3] The original comment stands. [0] http://paulgraham.com/hackernews.html http://paulgraham.com/hackernews.html [1] "1.6 million page views and 200,000 unique visitors on a given weekday" 2013 ~ http://techcrunch.com/2013/05/18/the-evolution-of-hacker-news/ http://techcrunch.com/2013/05/18/the-evolution-of-hacker-new... [2] In fact almost 10 years ago I reported a bug, pg actually responded it was a server reset. https://flickr.com/photos/bootload/406590838/ https://flickr.com/photos/bootload/406590838/ [3] Submitting high quality links, with high quality discussion while increasing users. That is a hard problem.
- throwaway_exer 10y ago> I don't get it. 1) The purpose of HN posts on Lisp is to fellate pg, nothing more. 2) One of the big reasons Lisp has failed commercially is that expert programmers create their own personal libraries, which cannot be taken to the next employer for legal reasons. So all that effort is wasted.
- codemac 10y agoWhy is #2 only true for Lisp? I've seen it true for every job I've ever had.
- lmm 10y agoIn Lisp things that would be syntax in other languages are libraries instead, so the impact is bigger.
- nothrabannosir 10y agoMate I like reading about lisp and I couldn't give 2 craps about pg. HN has gone beyond yc and pg quite a while ago.
- hellofunk 10y agoClojure is running enterprise tools around the world. We use it exclusively at our company, partly because we are small and time:productivity ratio is really good with it for few developers. But much larger companies are using it also, nearly exclusively. As far as macros go, the most popular Clojure library for routing web requests on a server is Compojure, and it wraps a lot of low-level stuff up in a tight lisp macro set that makes it trivial to functionally compose your http requests. It's pretty nifty and is used extensively in industry. Also this web site you are interacting with right this moment as you read this is built on lisp.
- krapp 10y ago>Also this web site you are interacting with right this moment as you read this is built on lisp. And didn't they at one time have to reset the server every few weeks because HN would use up all the RAM or something? That's not something other forums built in lesser languages have to do. I mean, it obviously works, but would anyone say it works particularly well, even as a Lisp implementation of a web forum?
- hellofunk 10y agoThe RAM issue (if there was one) has nothing to do with the language in this case. If we are talking about lisp, then I assume we are referring to any true lisp, in which case the underlying hardware scenarios widely vary. I don't know how Arc does it but Clojure's resources are no different than any of the millions of Java web servers running; just a much better language to run on vs Java for that platform.
- ryanobjc 10y agoWell other languages cheat in a way, php restarts the runtime frequently, and many other scripting environments do as well. Also, as a side note, one would be quite surprised how frequently will known companies solve memory problems by restarting processes frequently.
- ryanobjc 10y agoWell other languages cheat in a way, php restarts the runtime frequently, and many other scripting environments do as well. Also, as a side note, one would be quite surprised how frequently will known companies solve memory problems by restarting processes frequently.
- shade23 10y agoA language is more the choice of a coder and the environment they use.What you need to realize is the history of Lisp and face the face that new languages are merely re-implementation of paradigms which are present in some other language. Lisp started as a set of axioms which then were implemented.You should read pg's [1] description of Lisp. >If you have seven primitive operators (quote, atom, eq, car, cdr, cons, and cond) then you can define in terms of them another function, eval, that acts as a Lisp interpreter.And so any language that contains these seven operators is a dialect of Lisp, whether it was meant to be or not. So Lisp is hard to understand and use but what happens when you try to modify/make languages which handle the situations that Lisp can,you end up with Lisp.And as a Lisp Dev, when you have seen this cycle.You really do not feel the need to defend every attack against Lisp. PS:I am not a Lisp dev,but i am trying hard to learn Lisp. [1]:http://www.paulgraham.com/ilc03.html http://www.paulgraham.com/ilc03.html
- deleted 10y ago[deleted]
- simula67 10y agoIt's too awesome to lend itself to such showcasing
- golergka 10y agoBecause worse is better. http://dreamsongs.com/WorseIsBetter.html http://dreamsongs.com/WorseIsBetter.html
- fsloth 10y ago"LISP is such an EPIC language..." IMO, the true advantage of lisp nowadays is that of an abstract syntax tree algebra ripped clean of cruft (well, that's scheme, but...). It's much more useful as a way of thinking rather than as a language. "Structure and interpretation of computer programs"is great because if one goes through the entire book and especially implements the scheme interpreter in e.g. C++ or whatever living language it gives you this fantastic general normalized thought model of programming languages which makes it much easier to learn new languages and concepts. That's anyway my experience. So, to me, Lisp is useful similarly as say, relational theory is useful in software designed (having a relational model is wonderful for complex systems even with a lack of SQL database as a part of the system - if there is more than one 'thing' screw objects and rather use explicit tables and maps).
- khrm 10y agoCheckout the VR script by John Carmack https://www.youtube.com/watch?v=ydyztGZnbNs https://www.youtube.com/watch?v=ydyztGZnbNs It's on racket (scheme dialect). There are no language which can make you more efficient. But some languages open your mind. Just read SICP and find out what makes language EPIC. Many big projects are in Php. But surely no one would claim that it makes php "the EPIC" or even great.
- moonshinefe 10y agoI also don't get it. I've literally never seen a job ad in my area a single time that needs lisp or lisp-based languages, and the only time I ever see it mentioned is by insanely devoted people who love spending dozens of hours learning a bizarre language that nobody else uses. It reminds me of Esperanto a bit, it might have some nice ideas but it will never take off. I've yet to hear a succinct, practical argument as ot why I should take the dozens of hours to learn lisp or any of its derivatives as someone working as a non-academic.
- sklogic 10y ago> practical argument If you want to increase your productivity in orders of magnitude, if you want to be able to complete projects on your own that otherwise large teams would struggle to do, you must learn Lisp or any other meta-language suitable for DSL construction. Luckily, now there is quite a few of them, so if you don't like Lisp in particular there is a number of alternatives available.
- forgetsusername 10y ago>If you want to increase your productivity in orders of magnitude, if you want to be able to complete projects on your own that otherwise large teams would struggle to do I've seen this claim a few times in this thread. What makes this possible? If you can increase productivity so drastically, why isn't everyone using it all the time? It seems utterly irrational not to.
- sklogic 10y ago> What makes this possible? Take a look at what kind of power DSLs can give you: http://www.moserware.com/2008/04/towards-moores-law-software-part-3-of-3.html http://www.moserware.com/2008/04/towards-moores-law-software... If you use this methodology consistently, all of your code (including the DSL compilers themselves) is just as readable as this. Imagine, all your code reads as just an English specification of a problem you're solving, with some tables and diagrams where needed. > why isn't everyone using it all the time? I do not have an answer to this question. Yet, given that I never managed to convince anyone who was not already doing this stuff that macro-based DSLs are a way to go, apparently, there is a huge cultural problem and a huge stigma attached to macros (likely because of the C preprocessor and some really bad Lisp examples - think of the stuff like LOOP macro). I personally use this approach exclusively, and I cannot understand those who prefer to write 1000x more code.
- bsder 10y ago> but can't find a single MUST HAVE piece of code that makes me say "I have to learn this". Because Common Lisp isn't a better language anymore. When Lisp was big in the early 80's, assembly, COBOL, FORTRAN, C and some Pascal pretty much ruled the day. Compared to any of those, Lisp is deeply magical. So, the real question is why did such a magical language lose to the upstarts that all appeared in the late 80's and early 90's: Perl, Python, Tcl, Lua, etc. Answer: files, strings, and hash tables. All of those languages make mangling text pathetically easy. Perl is obviously the poster-child for one-liners, but all of those make that task pretty darn easy. Lisp makes those tasks really annoying. Just take a look at the Common Lisp Cookbook for strings: http://cl-cookbook.sourceforge.net/strings.html http://cl-cookbook.sourceforge.net/strings.html Why should any beginner willingly subject themselves to that kind of verbosity?
- jwdunne 10y agoVery true. Now you mention it, I wonder why, given the awesome power of extensibility, this hasn't been improved? Shouldn't it be trivial to write a DSL that makes string handling almost, if not as good as, Perl et al?
- TeMPOraL 10y agoIt is, which is probably why nobody bothered to put it in a library before. But you have CL-PPCRE, which is arguably the most performant and one of the most solid implementation of Perl-compatibile regular expressions out there.
- azeirah 10y agoThe only string related task I've found Common Lisp excelling at is it's print formatting syntax. That stuff is really nice.
- TeMPOraL 10y ago> Answer: files, strings, and hash tables. All of those languages make mangling text pathetically easy. Perl is obviously the poster-child for one-liners, but all of those make that task pretty darn easy. Fair point about strings, not sure about files and hash tables. But you've mentioned a bunch of scripting languages, and CL was never competing with these. Why it lost to Java and later to Python and Ruby in webdev is a different question. But string handling - you need to notice that as an industry, we shot ourselves seriously in the foot with Unix and proliferation of unstructured text. The unstructured text-oriented philosophy is frankly insane, and lisps are older than it - so for better or worse, they didn't follow. People now are slowly rediscovering why adding structure to your text is better than having each program implement its own incompatible, bug-ridden regex-based parser. And surprise surprise, structured data is something lisps excel at since before most of us were born.
- TeMPOraL 10y agoA small few: http://lisp-lang.org/success/ http://lisp-lang.org/success/. EDIT: Also, https://www.youtube.com/watch?v=8X69_42Mj-g https://www.youtube.com/watch?v=8X69_42Mj-g for a recent example of Common Lisp pushing the limits of science and computing in chemistry.
- sklogic 10y agoWant to see a real killer example? Look no further than the Nanopass framework. It outhaskells Haskell and outmls MLs. It solves the expression problem they struggle with. It makes compiler construction laughably trivial.
- toomanythings2 10y agoComputer science isn't a contest. There isn't any reason for a push. Among scientists and good engineers, the more intelligent tech rises to the top. Everyone else uses PHP. There are practical limitations. If everyone else is using C, it will be more difficult to introduce LISP. Of course, making a push for Lisp usage would gain users and, therefore, tutorials and make it more practical but probably only among those same scientists and engineers due to the nature of Lisp itself and how you think when using it.
- billsix 10y agoRead "On Lisp" http://www.paulgraham.com/onlisp.html http://www.paulgraham.com/onlisp.html