Live data from Hacker News

I'm turning into a Lisp snob

briancarper.net

51–60 of 94 posts

Re: I'm turning into a Lisp snob

#51
post #34

Earlier quoted context omitted.

I'm curious, i rarely see any REAL[1] criticism of lisp, just the old "ughh, my eyes, all those parenthesis, aaa" type of nonsense. Why do you think its a wrong direction? [1] Im not talking about implementations, obviously, Common lisp, scheme and clojure have their problems, im talking about the general idea of lisp.

So, I guess a real criticism of Lisp would be that it is stuck in the past. Lispers are still looking down on C; they never try to look up. If they did, they would see languages like ML and Haskell have surpassed them in all respects. Heck, even Matlab and its descendants with the "everything is a matrix" philosophy have created a powerful new paradigm that is certainly not a special case of "everything is a list". I…

ML and Haskell have surpassed them in all respects.

I must have missed the memo explaining why static typing is always better. Can you forward it to me?

Lisp [is] stuck in the past...

You lose a little credibility here for not specifying which lisp you mean. I'll assume you mean Common Lisp because:

- Scheme is in the middle of reinventing itself after the R6RS unpleasantness, and that process could have any number of interesting repercussions.

- Clojure is very young, and already has a good chance of becoming the first mainstream functional programming language. I'll leave the value of that distinction unspecified for now, but it would be interesting.

- Some of the features available to Common Lisp programmers in the past really are impossible to duplicate today, and will probably remain so for the forseeable future. By all accounts, the system-level introspection and debugging capabilities available on Lisp Machines were a real treat to operate. We can reasonably disagree about how useful it might be to have OS, toolchain, editor, and system software all written in the same language and presenting a uniform interface, but I don't see how anyone could claim that ML and Haskell have surpassed Lisp on this point.

Re: I'm turning into a Lisp snob

#52
post #38

Earlier quoted context omitted.

Just curious, what do you think is the right direction?

If Go people succeeded with taking over some C area, that would be the direction right enough, don't you think? Simply because Go seems a bit better than C. I'd love to see some modern SML or Haskell taking over the area of code compiled to binary, plus a constant growth of dynamic languages as well, because they are also cool. But that big revolution may not happen.

Probably Microsoft's F# is the modern SML with more chances to become mainstream and start that big revolution.

Re: I'm turning into a Lisp snob

#53
post #31
post #14

Earlier quoted context omitted.

You seem to be complaining that... Lisp doesn't exist? You seem to be saying his complaints are of the from "A hypothetical language I have in my head can do that better", but the complaint is of the form "This existing language does that all and better." Given that the only other "problem" in the post is a Hello World post, surely you aren't complaining that the author failed to include a "Hello World" lisp program?…

Well, Lisp sure does exist, and has been used to solve real world problems. But those were predominatly in applications where performance, parallelism, graphics, large matrix computations and GUIs do not matter. If you want to pick on the imperative languages (i.e. Pascal/Fortran/C/C++), you better show you can do what they can do.

Unsubstantiated claims. Common Lisp has been embedded inside Quake II:

http://ecls.sourceforge.net/ecl-in-quake2.jpg

That takes care of the graphics, networking, matrix manipulation and low-latency. What other FUD do you need answered?

Re: I'm turning into a Lisp snob

#54
post #34

Earlier quoted context omitted.

I'm curious, i rarely see any REAL[1] criticism of lisp, just the old "ughh, my eyes, all those parenthesis, aaa" type of nonsense. Why do you think its a wrong direction? [1] Im not talking about implementations, obviously, Common lisp, scheme and clojure have their problems, im talking about the general idea of lisp.

So, I guess a real criticism of Lisp would be that it is stuck in the past. Lispers are still looking down on C; they never try to look up. If they did, they would see languages like ML and Haskell have surpassed them in all respects. Heck, even Matlab and its descendants with the "everything is a matrix" philosophy have created a powerful new paradigm that is certainly not a special case of "everything is a list". I…

I think that this is an unfair criticism; you don't really supply any evidence. (Other than that Lispers are completely oblivious to anything but lisp).

ML and Haskell have certainly surpassed common lisp in some respects, but to say that they have surpassed all lisps in all respects has got to be some sort of sophistry.

Lisp is a form of syntax (and a few primitives like Eval and quote) that makes it easy to write programs that manipulate programs.

Common Lisp and Lisp 1.5 and Scheme and Clojure all have certain other things in common.

However, they have those things in common because they are generally recognized as being good things to have in a language for the purpose of programmer productivity. In no place is it written in stone that to be a Lisp, it must not use Hindley-Milner type inference.

I think you'll also find that most Lispers are chronic dabblers in programming languages, to say that I'm sticking my head in the sand when I choose to write whatever-it-is in Clojure is insulting.

Re: I'm turning into a Lisp snob

#55
post #34

Earlier quoted context omitted.

So, I guess a real criticism of Lisp would be that it is stuck in the past. Lispers are still looking down on C; they never try to look up. If they did, they would see languages like ML and Haskell have surpassed them in all respects. Heck, even Matlab and its descendants with the "everything is a matrix" philosophy have created a powerful new paradigm that is certainly not a special case of "everything is a list". I…

ML and Haskell have surpassed them in all respects. I must have missed the memo explaining why static typing is always better. Can you forward it to me? Lisp [is] stuck in the past... You lose a little credibility here for not specifying which lisp you mean. I'll assume you mean Common Lisp because: - Scheme is in the middle of reinventing itself after the R6RS unpleasantness, and that process could have any number o…

Take away static typing from Haskell and you still have a richer language than Lisp, with more interesting research happening in the community. It is ironic that e.g. nested data parallelism has its roots in Lisp (as early as 1990) but might soon enter the mainstream through Haskell.

Re: I'm turning into a Lisp snob

#56
post #48

Earlier quoted context omitted.

There is value in static checking for some things, but it is also limiting. It requires that code be written such that those things are declarative, can be understood without running the program. There is also value in having those things to be programmable, dynamic. This is a "good reason" even if you prefer the alternative. In Clojure, the lack of static type checking was not done out of laziness. > there is no goo…

> There is value in static checking for some things, but it is also limiting. Other than type-safe heterogenous lists(which is only true if you hold static type systems to a much higher standard of type-safety than dynamic type systems), what sorts of things do a type system with type classes, algebraic data types, and higher order functions prevent doing? > Lisps can and do have powerful type systems - you're confus…

CLOS is runtime dynamic. Haskell is not. Haskell is a mostly static language. Common Lisp is a mostly dynamic language and provides all kinds of mechanism to make changes at runtime to the language and programs written in Lisp. The CLOS Meta-Object Protocol allows various ways to change the object system. This has been used for various object-oriented languages on top of Lisp, user interfaces, databases and other stuff.

The 'dynamic' part of Common Lisp means that is a runtime programmable programming language.

Haskell and Common Lisp serve totally different purposes. Common Lisp is there for incremental, interactive development of complex software - software that is always running in the development process and gets modified until is does something useful. Software that also can be modified when deployed, while running.

Re: I'm turning into a Lisp snob

#57
I am (now) a lisp programmer and find myself boring many people to tears about it. But perhaps I am first a language guy, and like to see new solutions to problems. None give me the satisfaction that Lisp has (smalltalk was close, however). But I like to see new well-designed languages and how well, or not, they address the engineering challenges.

For example, turbo pascal was written during the time that I was writing a pascal compiler. The Pascal standard was truly a harsh mistress, and turbo pascal made a lot of very useful engineering choices to make a fast, very useful compiler in a small environment. Anders went on to do C#, which itself was a good engineering feat.

I watch with interest Clojure and the ecocsystem that it plugs into and it has a REPL.

But it is a pragmatic fact of life that C is a very large force in the day-to-day world, along with a tool used by serious hackers (c.f. Coders At Work).

Python is very nicely designed and gets you to a higher level of programming with ease.

So I was curious when Go came along, as a language development observer, to see what were they coming up with.

It is clearly a language that has had a lot of thought put into it and it seems to be something that will challenge C on its own turf ultimately. Faster than Python, and possibly ultimately approaching C in speed, it has some useful new ideas. In particular, how it does goroutines and channels is quite refreshing. It addresses the admonition that "threads won't work if they are just libraries" with new language constructs.

So criticism of language ought to be tempered by some experience with the language. Having done enough of them, it seems that I often don't have a full appreciation for a language until I have done something significant in that language. So I feel comfortable offering severe criticism of languages like RPG-III and Fortran II and Altair Basic and Bliss-36.

I am probably to the point of being a lisp snob by now, but do appreciate the finer points of other languages.

I think Go is a step in the right direction for the problem that it wants to solve.

Re: I'm turning into a Lisp snob

#58
post #53
post #31

Earlier quoted context omitted.

Well, Lisp sure does exist, and has been used to solve real world problems. But those were predominatly in applications where performance, parallelism, graphics, large matrix computations and GUIs do not matter. If you want to pick on the imperative languages (i.e. Pascal/Fortran/C/C++), you better show you can do what they can do.

Unsubstantiated claims. Common Lisp has been embedded inside Quake II: http://ecls.sourceforge.net/ecl-in-quake2.jpg That takes care of the graphics, networking, matrix manipulation and low-latency. What other FUD do you need answered?

Nah. Using Lisp to script an engine written in C++ is not the same as writing the engine itself in Lisp. I'm not saying this is not possible, it's just that nobody tries.

You might be able to do a serious graphics or high-performance computing project in Lisp. You will be the first one, and I'll be very interested in how it goes.

Re: I'm turning into a Lisp snob

#59
post #45

Earlier quoted context omitted.

I'm curious, i rarely see any REAL[1] criticism of lisp, just the old "ughh, my eyes, all those parenthesis, aaa" type of nonsense. Why do you think its a wrong direction? [1] Im not talking about implementations, obviously, Common lisp, scheme and clojure have their problems, im talking about the general idea of lisp.

I think Lisp's philosophy, as explained by Paul Graham (perhaps you've heard of him :) ), is to enable the programmer to do anything they put their mind to. When choosing whether to do the powerful thing or the simpler thing, they will choose the thing that gives the programmers more power, and point out (not entirely incorrectly) that they can wrap up simpler versions for simpler cases with macros. As a skilled deve…

Both static typing and immutability are trade-offs and we need to know when its appropriate to make them. I get concurrency for the price of immutability in clojure, BUT i could still screw things up using java, and i think that this is a good thing(but im a power hungry lisp programmer, obviously :D). Its my oppinion that what you call the WRONG direction is actually the OTHER direction.

Re: I'm turning into a Lisp snob

#60
post #55

Earlier quoted context omitted.

ML and Haskell have surpassed them in all respects. I must have missed the memo explaining why static typing is always better. Can you forward it to me? Lisp [is] stuck in the past... You lose a little credibility here for not specifying which lisp you mean. I'll assume you mean Common Lisp because: - Scheme is in the middle of reinventing itself after the R6RS unpleasantness, and that process could have any number o…

Take away static typing from Haskell and you still have a richer language than Lisp, with more interesting research happening in the community. It is ironic that e.g. nested data parallelism has its roots in Lisp (as early as 1990) but might soon enter the mainstream through Haskell.

I guess you have never looked at the ANSI Common Lisp standard and the manuals of some of Lisp systems...
Post reply on HN