Programmingzen is Antonio Cangiano's blog on programming languages, Ruby performance, career advice, and developer education.
HN links it mainly for the Great Ruby Shootout benchmarks, which commenters cite when comparing Ruby implementations, and for its views on interviewing.
"I really feel like you're selling an awful lot of the programming language design world short here."
You may be right about that :-) Although now I realize my words didn't exactly convey what I intended to say, see below.
"An awful lot of what programming language design is about is making it easy to precisely express what you mean, in a way that will make sense to future programmers, be robust in the face of changes, and so on."
Actually this is more what I was actually thinking when I said "the core
assumption remains unchallenged". There are ways to program that don't assume you're trying to build a robust, unambiguous and precise meaning (and which are therefore much more adequate for non-technical users). But these ways have not been explored in depth, and are not known to the general mass of developers.
There is a lively conversation at the original blog, would you mind to move the conversation there, to keep it at one place?
http://programmingzen.com/2014/11/27/programming-languages-as-languages/#comment-28865
"Your mind must work fairly differently from mine if you find XML a natural way to reason."
I was not thinking of XML as natural, but of "creating instruction sets that work as recipies and can produce different executable code, so their meaning changes depending on the context on which they're executed". :-D This is the way that humans follow instructions when they receive orders. It's what makes the following a joke:
Q. How did the programmer…
The article focuses on the same things have been hammered on for a while now (other countries do health care better, other countries do education better, other countries do education better...), but I think there's another reason to get out of America: other countries have different cultural strengths.
Antonio Cangiano wrote a post a while back about why Italy doesn't do enough startups (http://programmingzen.com/2011/11/10/the-real-reason-italy-sucks-at-the-startup-game/). In that post, he has a chart (http://programmingzen.com/wp-content/uploads/2011/11/does-success-depend-on-forces-outside-our-control-e1320936286945.png) that shows that Americans, more that the citizens of any other country, believe that their success or failure is a direct result of their own actions. This is a blessing and a curse, as it means that Americans are willing to work harder to get what they want, but they are also willing to believe when a politician says that there's no need for universal health care or help getting people jobs because "anyone who wants it enough can work harder and get it for themselves".
Regardless, I would argue that this is America's defining cultural strength.
I recently moved to Turkey. Turkey has "hospitality" as its defining cultural strength. If you go to a little shop and look around for more than 10-15 min, you can expect to be offered a drink (free of charge, of course). When I go to the bakery, the woman who works there frequently slips me a cookie or pastry…
> I guess since benchmarks are not completely worthless,
The original keeps getting re-iterated:
http://programmingzen.com/2007/11/28/holy-shmoly-ruby-19-smokes-python-away/
The original author, on a basis of a fib benchmark, concludes ruby 1.9 is faster - that is as flawed as it gets.
Did you try running with Python 3? You will get around the same time as you get with Python 2.7. Pick anything from here http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&lang=python3&lang2=yarv and run it with Python 2.7 and ruby 1.9. The programs which are faster with Python 3 will be mostly faster with Python 2.7. 2.7 isn't slower than ruby 1.9; it is faster in most of the cases.
Regarding the fib example, when the original was doing the rounds, I didn't find any explanations from python or ruby implementors. I can't say why, but most likely python has a higher overhead with growing call stacks, and ruby does some optimizations.
"JRuby is much much faster than 1.8."
Why are we even comparing JRuby and Ruby 1.8? Ruby 1.9.3 is the last version and Ruby 1.9 is much faster than Ruby 1.8.
In a benchmark from last year JRuby and 1.9 were about equally fast with 1.9 the winner in most cases. With the recent improvements in JRuby I believe JRuby is faster but I have no idea about how much.
http://programmingzen.com/2010/07/19/the-great-ruby-shootout-july-2010/
EDIT: Note that Ruby 1.9 gained in performance compared to 1.8 due to the introduction of a new Ruby targeted VM, YARV. Previously I believe it ran directly on the AST.
I'm talking about very common things. How do you talk to a mysql database, i'll bet it's C code. how do you parse html, i'll bet it's C. python has a json lib as part of it's standard library, ruby does not so you install it as a gem. Both are C.
Actually, django is worse if this tutorial is correct.
http://programmingzen.com/2007/12/22/how-to-install-django-with-mysql-on-mac-os-x/
They are telling you to install a binary precompiled library. I much prefer having my dependencies managed as they are in bundler than downloading libraries manually and installing them.
I agree, and I think MacRuby is a great idea. Ruby in particular is very close to Objective-C in practice, and some of the latest Apple's changes to Objective-C have made it even more so.
But as much as I love Ruby, MacRuby is still not that much faster than Ruby and often it is slower [1]. But that said I am not bashing MacRuby: it is still a very young project and it has a lot of potential still untapped.
[1] http://programmingzen.com/2010/05/16/benchmarking-macruby-0-6/