News for hackers. Stuff that matters.
Re:Clojure: It’s About the Libraries by weavejester on Thursday April 30, 2009 @05:28PM (#587582)
Please tell me this is a parody. A programming language is a tool, not a religion.
Re:Clojure: It’s About the Libraries by ken on Thursday April 30, 2009 @08:45PM (#587842)
No, a language is a way of communicating ideas, and hence, of thinking about them. (I wouldn't call English or kuchi shoga or tensor diagram notation "tools", even though they can be incredibly useful.) A programming language implementation can be used as a tool.

I think this is the core of our differences. Lisp has traditionally been used mostly as a language -- as Dijkstra put it, it "has assisted a number of our most gifted fellow humans in thinking previously impossible thoughts". Most other programming languages have been used as tools.

Clojure looks like a perfectly competent Lisp-on-JVM (with immutability!), but I don't see it changing how I think about anything. It's thoroughly on the "tool" side of things, which understandably leads to people in the "language" camp being miffed that anybody thinks it's comparable to classic Lisps from the "language" camp.

The Lisp engine in Abuse was a tool, too, and highly productive for its uses, but at least nobody claimed it was a successor to the Lisp line.

Re:Clojure: It’s About the Libraries by weavejester on Friday May 01, 2009 @04:13AM (#588244)
I dislike arguments over semantics. Saying something is a tool does not mean it is not also a language. For instance, mathematics can be considered both a tool and a language.

It's true that Clojure is a programming language designed to be practical, but I fail to see why this would make it any less useful as a language for communicating ideas, or any less able to change how people think about things.

Could you provide an example of an idea that is more easily communicated in another Lisp, rather than in Clojure?

Re:Clojure: It’s About the Libraries by jimbokun on Friday May 01, 2009 @09:32AM (#588455)
"Clojure looks like a perfectly competent Lisp-on-JVM (with immutability!), but I don't see it changing how I think about anything."

The immutability is a non-trivial change in thinking about how to write a program. You can write a program without mutation in Common Lisp, and you can mutate things in Clojure, but the greater cost of implementing mutation in Clojure means you are less likely to do so. This leads to different programs.

No, that is not as big of a change in thinking as Lisp was compared to the languages of the day when McCarthy created it. But I find it a fine addition to the family of Lisps, nonetheless.

Re:Clojure: It’s About the Libraries by asciilifeform on Thursday April 30, 2009 @05:53PM (#587631)
Clearly you have never met a tool which afterwards made you regard all other supposedly similar tools as stone knives and bearskins. Perhaps this day is still in store for you.

For the sake of your career as a programmer (assuming this is your trade), you'd better hope not.

Re:Clojure: It’s About the Libraries by weavejester on Thursday April 30, 2009 @07:34PM (#587760)
You're correct that I haven't come across such a tool. But I have also programmed in Lisp, and whilst I like it a lot, I don't consider it the pariah of programming languages as you seem to do.

What makes you believe Lisp is so superior to other classes of programming language? For instance, what makes a Lisp superior to a stack-based language like Forth or Factor?

Re:Clojure: It’s About the Libraries by sharkbrainguy on Friday May 01, 2009 @01:05AM (#588121)
This isn't meant to refute your argument or insult anyone I just that pariah probably doesn't mean what you think it means and you might like to know.

From Wiktionary:

   1. An outcast
   2. A demographic group, species, or community that is generally despised.
   3. Someone in exile
   4. A member of one of the oppressed social castes in India.
Re:Clojure: It’s About the Libraries by weavejester on Friday May 01, 2009 @04:16AM (#588246)
Dammit, what was the word I was thinking about then?

Thanks for correcting me :)

Re:Clojure: It’s About the Libraries by gojomo on Friday May 01, 2009 @05:30AM (#588294)
Probably paragon. Maybe pinnacle or nonpariel.
Re:Clojure: It’s About the Libraries by weavejester on Friday May 01, 2009 @05:45AM (#588306)
I think I might have been mixing up paragon and messiah.
Re:Clojure: It’s About the Libraries by asciilifeform on Thursday April 30, 2009 @11:37PM (#588046)
> What makes you believe Lisp is so superior to other classes of programming language?

Because I feel straightjacketed whenever I cannot redefine my language on a whim in every conceivable way, or am forced to write a whit of boilerplate. (Yes, none of the existing Lisps fully meet this ideal, but nothing else comes close.)

Re:Clojure: It’s About the Libraries by weavejester on Friday May 01, 2009 @04:31AM (#588258)
Hold on. Why is a stack based language any less able to do that? If anything, it's closer to your ideal, as it has less inherent syntax than Lisp.

And for that matter, why do you think Clojure is so awful? It has no reader macros, true, but it does provide a more succinct way of writing hashes and vectors than most other lisps. Other than that, well, it's a Lisp.

Re:Clojure: It’s About the Libraries by asciilifeform on Friday May 01, 2009 @01:19PM (#588784)
> Why is a stack based language any less able to do that?

Having to juggle the stack at every step (i.e. FORTH) is a mental burden. It forces you to organize your thoughts in a certain - not necessarily harmful - but very specific way.

> Other than that, well, it's a Lisp

A Lisp unworthy of the name; one which encourages users to pepper their code with opaque routines which have no underlying Lispiness. A Lisp which barfs Java stack traces.

Re:Clojure: It’s About the Libraries by weavejester on Friday May 01, 2009 @09:10PM (#589386)
Forgive my bluntness, but I was rather hoping to peel back the emotive language and ideological rhetoric and have an objective and technical discussion.

I gauge programming languages by their effectiveness at solving practical problems. Do you believe Clojure's design makes it less effective at solving problems than other Lisps? Or are your objections to it purely ideological?

Re:Clojure: It’s About the Libraries by asciilifeform on Saturday May 02, 2009 @11:50AM (#589941)
Yes, Clojure is less effective than other Lisps. And Symbolics Genera remains my standard of comparison. You cannot un-create it. The standard of comparison for a technology will always be everything previously achieved by mankind, rather than what is available on the market today.

Bu I will try to explain my real objections.

"Beauty is the first test: there is no permanent place in the world for ugly mathematics." (G. H. Hardy)

I was drawn into programming at an early age because it seemed beautiful and allowed me to run wild with creative ideas. Thus I insist on systems with a purely minimal amount of accidental complexity - so as to leave the most room in my head for the ideas I am trying to put into practice. I have zero interest in "programming as construction work" - implementing the ideas of others, or for that matter doing anything which isn't in some important sense original. Thus I want my programming environment to resemble pure mathematics, where absolutely nothing is present for which there is not an ironclad and inevitable logical reason, where everything is open to question, and the answer is never "because the drunken intern wrote it that way five years ago."

Most of the "practical problems" programmers supposedly "solve" shouldn't even exist. They are created through the idiocy of other programmers. In particular, I am talking about any situation where the output of one program requires "glue" to match the input requirements of another; or any situation where formats are converted; and many other cases. If the moronic mistakes of the past four decades were undone, most of the people who are calling themselves programmers would have to find honest work.

Screw "practicality." Programmers are the proverbial firemen who start fires when they aren't at the station-house, and gloriously put them out, hailed as heroes every time.

Clojure will never be beautiful because it promotes the use of undigestable foreign matter in Lisp code: primitives on which you cannot pop the hood to reveal more Lisp, with turtles all the way down. Its claim to the name Lisp is in an important sense fraudulent. I rest my case.

Re:Clojure: It’s About the Libraries by weavejester on Saturday May 02, 2009 @02:10PM (#590081)
Your criticism of Clojure is based upon aesthetic ideals, then, rather than practical or technical considerations. However valid this criticism is, it's not something I have a particularly strong interest in, I'm afraid.
Re:Clojure: It’s About the Libraries by asciilifeform on Sunday May 03, 2009 @01:25AM (#590579)
So aesthetics of any kind are foreign to you? Or just in relation to programming? Are you equally eager to sit down on a pile of bricks as on an Aeron?
Re:Clojure: It’s About the Libraries by weavejester on Sunday May 03, 2009 @08:33AM (#590807)
No, but I'd rather have a fast ugly car than a slow pretty one.

I think I disagree with you on two points. I place a higher emphasis on efficiency than I do aesthetics; I want a language that allows me to do things quickly. I also have a slightly different idea of programming language beauty than you do. I like languages that have an small but expressive syntax and a concise core library. Clojure fits that definition better than any other Lisp I've found, so from my point of view, it's the most beautiful Lisp as well as the most practical.

But aesthetics are subjective, which is why I dislike arguments about them. I don't particularly care what language a library function is written in, just so long as it integrates elegantly with the language I'm working in. You might think that using external libraries is aesthetically displeasing, but that's a subjective opinion.

What I am interested in discussing are technical details about a language, as they are entirely objective. We can discuss whether a particular language produces more concise code than another, and come up with examples to prove it. I like those sorts of discussions, because even if I don't agree, I'll always come away with a better understanding of the favoured language of the other guy.

By contrast, arguments over aesthetics just seem pointless, as neither participant will learn anything or change their view.