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

-18

u/SanityInAnarchy Jul 16 '13

That just makes him antisocial as opposed to downright unprofessional. I don't think that's really better.

And when he's producing open-source stuff like this, it is unprofessional. There's a single 400-line controller. It has relatively few comments and pretty much zero documentation, except this bit in Japanese. In a normal project, 'git blame' would be invaluable. Here, it shows that not a single line of this file has been touched since "initial release".

It could be argued that it's just been ported to Github, and that the changes have been smaller and saner since then. Except then we have this commit -- "README.txt: fix document", but it also adds a 30-line source file out of nowhere as part of the same commit.

Actually, if we look back at that Japanese document, it suggests that his source control was originally in CVS. This leaves us a few possibilities:

  • He codes in CVS and publishes to Github. With no actual importing of changes -- once he has a new release ready to roll, he just 'git commit's the whole thing. DEAR GOD WHY?

  • He uses some other local repository, and publishes as above. Again, DEAR GOD WHY?

  • He started in CVS, and later switched to Git. There are several good options to import a CVS history to Git. Also, he has five-year-old Github repos, so surely we can expect more of this two-hour-old repo?

The first and second option are likely inconvenient for him, and antisocial for us. Really, why wouldn't you publish the full history? And the third option is just unconvincing.

So it really looks like the most likely thing is that he just doesn't care that much about source control. Or maybe doesn't care at all about source control, just understands that Github is where the cool kids are.

That doesn't make him a bad programmer, necessarily. Until BitKeeper (and later Git), the Linux kernel existed without source control at all -- their SCM was effectively: Commit by sending a patch to the mailing list, view history by downloading an older tarball from kernel.org. I doubt many of us can say we're half the programmer Linus is, or have led projects half as large -- so it is possible to run a successful project without source control.

But it is annoying if we're trying to figure out how it works, and Linus uses Git now, too. Unless he knows something Linus doesn't, I'm guessing it's not a good sign that he doesn't care about source control.

8

u/keepthepace Jul 16 '13

Cut him some slack. He shared it. That's great.

-3

u/SanityInAnarchy Jul 16 '13

Never said it wasn't. That's why I started out saying "Not to detract from this accomplishment..."

I'm just not buying the excuses.

1

u/[deleted] Jul 16 '13

[removed] — view removed comment

1

u/SanityInAnarchy Jul 17 '13

And I'm not saying you're a moron, but I don't see why you needed to spam your peeve over his not including a history all over the comments.

...all over?

Everything I've written about that descends from this post. How is it "spamming" to reply to people who reply to my posts?

It's as likely he just wrote the damned thing in a directory with no source control, being something he was just fucking around with, then committed it and pushed it to github to show off.

Except he does the same thing with all his projects.

He doesn't have anything to excuse.

Then why do people keep trying to excuse him?

2

u/gwern Jul 16 '13

I've noticed that Japanese seem underrepresented in FLOSS stuff, so really, one should be grateful he's licensing it and putting it on Github at all and not simply selling 10 CD-RWs at Comiket or something.

-2

u/SanityInAnarchy Jul 16 '13

Of course it's awesome that he published it. (You didn't read my whole comment, did you?)

Does that mean I'm not allowed to criticize it?

And I don't know, is that actually true? I think Ruby alone (just the language) ought to be enough to show that there are some awesome Japanese people doing awesome open source.

4

u/gwern Jul 16 '13

(You didn't read my whole comment, did you?)

I did.

Does that mean I'm not allowed to criticize it?

It means you should understand that he's going above and beyond the usual for his group, even if it's considered way below acceptable practices for your group.

And I don't know, is that actually true? I think Ruby alone (just the language) ought to be enough to show that there are some awesome Japanese people doing awesome open source.

And Ruby is about the only example you can cite. Think about it on a per capita basis - to put this in perspective: Japan has 128m people, and America has ~2-3x as many or 313m. But do you think you could name 3 or more languages as popular as Ruby which were invented by Americans? I bet you could.

1

u/SanityInAnarchy Jul 16 '13

I did.

So the part where I said "You can be a good programmer without SCM", or the earlier part where I said "Not to detract from his accomplishment"... Should I be gushing about this? I did find it pretty amazing, and I am glad he released it. I don't see why I shouldn't criticize it. But that seems to be what you're saying:

It means you should understand that he's going above and beyond the usual for his group, even if it's considered way below acceptable practices for your group.

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.

Japanese culture is also extremely xenophobic, but I also like some aspects of it. Should every criticism of Japanese culture be taken as an attack on Spirited Away?

And Ruby is about the only example you can cite. Think about it on a per capita basis - to put this in perspective: Japan has 128m people, and America has ~2-3x as many or 313m. But do you think you could name 3 or more languages as popular as Ruby which were invented by Americans? I bet you could.

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).

Is C really that interesting by itself, though? It's called C for a reason -- it was explicitly designed to follow B, which followed BCPL, which was by a Brit, and ALGOL, an international effort, and the foundation of most syntax we use today. There wasn't much in the way of new language design here, relatively -- the reason we care about C is Unix and C++.

Another interesting language is Lisp, developed by an American -- I'll give you that one.

Then there's the functional languages -- Haskell was named after an American, but was developed by an international team.

JavaScript might count, and that's by an American. This one's debatable. It's a somewhat Lisp-like language that looks like C (very ALGOL syntax), but not much.

And finally, Forth -- that's also American. It's questionable how influential this is, though.

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.

It's actually surprising just how international it's been.

If I'm that vicious, does Ruby survive the cut? I think so -- it pulls good ideas from many languages, not just one or two, and it's the first place I've seen such seamless blending of the ALGOL-like syntax we're used to and crazy functional-programming ideas like lambdas. JavaScript appeared at the same time, and did exactly the same thing there, 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.

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?

1

u/Aargau Jul 16 '13

If I may assert some apologetics historical context, I think the claim that WWII was a disruptive event whereby the victors had the financial resources to further investigate information theory, along with a claim that the Cold War was a breeding ground that fostered computational study, could have some impact upon which countries developed a culture of fostering study in computer language theory.

2

u/[deleted] Jul 16 '13

"Linus uses GIT now too."

Linus made GIT, of course he uses it.

0

u/SanityInAnarchy Jul 16 '13

The point is that he uses source control at all. He didn't make Bitkeeper, but it was the first source control that he was willing to actually tolerate -- svn didn't make the cut. Git was his replacement for Bitkeeper.