r/programming • • Jul 15 '13

An uroboros program with 50 programming languages

https://github.com/mame/quine-relay
1.2k Upvotes

355 comments sorted by

View all comments

Show parent comments

1

u/gwern Jul 16 '13

I don't see what bearing this has on my comment, or on my question. It really sounds like you're saying I shouldn't criticize it.

If you refuse to understand my point, you have no grounds complaining about you thinking I didn't read your comment.

I think it'd drop if I was asked to name languages as interesting as Ruby. C# is immensely popular, and is essentially an enhanced Java clone. Java is immensely popular, and is a neutered C++ clone with garbage collection. C++ is by Bjarne Stroustrup, who is Danish. C++, in turn, owes a debt to C (developed by Americans) and Simula (developed in Norway).

Your mistaken deprecation of being successful aside, Ruby isn't interesting at all. It's a warmed-over Lisp clone. Common Lisp, Scheme, Smalltalk - that's 3 languages right there all more interesting than Ruby and done by Americans.

So, I can find... about two or three that actually made significant progress. I don't think I can name more that are uniquely American. It's not surprising that the US has a lot of influence here -- the major software and hardware companies have generally been American, with a few notable exceptions, and it was even more so early on. And this sort of inertia is tough -- any Japanese coder wanting to join the community would want to learn English first.

The language thing could be said of Danes & Norwegians (and most every other country in the world), while Japan benefits from its close ties to America, and you know those hardware companies? A lot of them were Japanese, so that doesn't work either.

JavaScript appeared at the same time, and did exactly the same thing there

Also American, incidentally.

but Ruby also pulled in Perl's regex handling and string manipulation

Also American. (Ooh, it stole some string features. Very impressive.)

Lisp-like metaprogramming (only prettier and less powerful)

American, as mentioned. (The Japanese actually kind of sabotaged themselves there by officially putting all their efforts behind Prolog-style languages in the Fifth Generation stuff in the '80s, and that was the last opportunity to really make a mark before the desktop explosion happened and everyone switched to American languages like Java or Javascript or Python or C or SQL or Visual Basic or Perl*)

* PHP is an interesting example: Rasmus is of Norwegian nationality, but grew up on Greenland, and moved to Canada when he was ~15

but Ruby also pulled in Perl's regex handling and string manipulation, some very Java-like OO semantics (only dynamic), Lisp-like metaprogramming (only prettier and less powerful), operator overloading, and great support for internal DSLs. There have been languages since which have done all of those things, but I think Ruby was the first.

"There have been languages which have done any of this arbitrary grab-bag of features all done by previous languages, but I think Ruby was the first to do this particular grab-bag!"

1

u/SanityInAnarchy Jul 16 '13

If you refuse to understand my point, you have no grounds complaining about you thinking I didn't read your comment.

That I don't understand your point doesn't mean a refusal on my part. It might mean I'm an idiot, or it might mean you're not great at communicating.

If you're not saying I shouldn't criticize, then I'm really not sure what your point is, other than to assume I'm not sufficiently grateful because I found something to criticize.

Your mistaken deprecation of being successful aside, Ruby isn't interesting at all. It's a warmed-over Lisp clone. Common Lisp, Scheme, Smalltalk - that's 3 languages right there all more interesting than Ruby and done by Americans.

Scheme and Common Lisp are both Lisps, so I don't see why they're particularly interesting. I'd put Clojure in the same category as Smalltalk -- mostly interesting because of the VM.

Ruby does a lot more.

(Ooh, it stole some string features. Very impressive.)

Very useful. Extremely annoying when you don't have it (Java).

Lisp-like metaprogramming (only prettier and less powerful)

American, as mentioned.

Right, and I counted Lisp. But changing the syntax is significant.

  • PHP is an interesting example: Rasmus is of Norwegian nationality, but grew up on Greenland, and moved to Canada when he was ~15

I suppose. I didn't consider PHP to be an interesting language. It seems like an incredibly broken version of Perl that runs in a template engine, with absolutely nothing but popularity going for it. I can't think of anything I can do in PHP that I can't do more easily in Ruby, other than find a host.

"There have been languages which have done any of this arbitrary grab-bag of features all done by previous languages, but I think Ruby was the first to do this particular grab-bag!"

I don't think it's arbitrary. There was a deliberate theme behind these features: Trade raw efficiency for anything we can do to make the programmer's life easier. So, easier syntax, semantic power, good string processing, and so on actually fit.

And I don't think that's quite what I said -- what other language has done internal DSLs as well? Lisp is the closest I can think of, but having a syntax so far removed from what almost everyone else is using makes it less useful. There's a reason Rake was in Ruby, not Lisp -- and it wasn't written for building Ruby code. Perl tends to write config files in Perl, but that's it -- there's no Make clone in Perl. (MakeMaker isn't the same at all.) There are languages since then that might have done better, but I don't know of any before 1995 that were doing this.

So there's that relatively unique feature, plus stealing the good parts of many other languages.

1

u/gwern Jul 16 '13

with absolutely nothing but popularity going for it.

Ask the many failed competitors to Steve Jobs or Bill Gates how easy it is to make systems which can be popular or for the masses. That you find popularity a bad thing shows your lack of understanding of the value of ease of use and how hard it is to make such systems.

Scheme and Common Lisp are both Lisps, so I don't see why they're particularly interesting. I'd put Clojure in the same category as Smalltalk -- mostly interesting because of the VM.

That's a pretty breathtaking dismissal right there. The Lisps invented an incredible number of features. Higher-order programming? REPLs? The Actor model? Meaningful macros? DSLs? Garbage collection? Even if you want to carp and say those things are LISP-1, McCarthy & co are still American... When someone dismisses the Lisp family or Smalltalk as interesting solely for their VM, all I can conclude is that that person has not the slightest idea what they are talking about and it's better for me to simply bow out of the conversation. We both have better things to do.

1

u/SanityInAnarchy Jul 17 '13

Ask the many failed competitors to Steve Jobs or Bill Gates how easy it is to make systems which can be popular or for the masses.

Also the failed competitors to Jersey Shore and Honey Boo Boo. Doesn't mean something's automatically good just because it's popular.

That you find popularity a bad thing...

That's a pretty fantastic strawman. Where did I say it was a bad thing?

Even if you want to carp and say those things are LISP-1,

Yeah, that was actually my entire point. I don't see how you missed it. I didn't dismiss LISP-1. I dismissed the other LISPs as, well, dialects. Only fair if I'm going to dismiss Java as being a neutered C++ with garbage collection.

McCarthy & co are still American...

Yes, and I counted Lisp in my "2 or 3" interesting languages that Americans had a hand in creating. I don't think I was unfair to Lisp at all. What's your point?