After reading Bill Burke’s article, Dynamic Languages: Rationalizations and Myths, you might also want to look at Patrick Logan’s articles, Dynamic Languages: Should the Tools Suck? and Deeper Dynamics.
{ 0 comments }
Joey deVilla’s blog on nerdy life, work and play
Posts tagged as:
After reading Bill Burke’s article, Dynamic Languages: Rationalizations and Myths, you might also want to look at Patrick Logan’s articles, Dynamic Languages: Should the Tools Suck? and Deeper Dynamics.
{ 0 comments }
This side-by-side comparison of Java and Python shows why I prefer working in languages like Python and Ruby: the “yak shaving” that Java requires drives me crazy.
{ 0 comments }
The blogger at willcode4beer says in 17 Thousand Reasons I’m not a Ruby on Rails Developer that the median salary of Rails developers is on average $17K less than that for J2EE developers. I’m not worried — the pay at TSOT for RoR development is on par with the J2EE rates cited.
The article also suggests that “to bring salaries up, they need to drop the ‘easy’ part. Development is hard, and no language or platform is going to change that. We solve complex problems. Complex problems are hard to solve. period. They should focus on the productivity gains in the areas where Rails shines, and try to avoid the areas where it doesn’t.”
{ 0 comments }
One lesson that Nathan Weizenbaum learned from Java that makes him a better Ruby programmer: “I learned what I was abstracting. I learned what blocks are, why dynamic typing is useful, what it means to redefine an operator. And I learned it from Java, by doing without.”
{ 0 comments }
Java’s nickname, “The New COBOL”, as a badge of honour: “…considering COBOL’s standing in the industry: It’s not clear that being the ‘new COBOL’ is actually a bad thing. It may not be glamorous, because people see COBOL programmers as being outmoded and uninventive, but COBOL is far from dead.”
{ 0 comments }
Tim Bray posted a blog entry on what drives adoption of a language in which he included some tables such as the only below:
Flawed
FoundersPolished
SuccessorsProcedural FORTRAN, COBOL, PL/1 C Object-Oriented C++ Java Higher-Level Perl, TCL Python, Ruby
This table of his should inspire a monkey knife fight on a number of blogs:
Flawed
FoundersPolished
SuccessorsWeb-Centric WebObjects, ColdFusion, ASP.Net, Struts, etc.,
etc., etc., PHPRails
Here’s an interesting one. What will JavaScript’s successor be? My guess for the short-term (by that, I mean “the next half-dozen or so years”) is “the next version of JavaScript”.
Flawed
FoundersPolished
SuccessorsMobile-Code JavaScript ?
The one about concurrent programming is a little more up in the air. Although there are other languages designed with concurrent programming in mind (either from the ground up or with concurrency retrofitted onto an existing language) and there have been for a while (I used Concurrent C in a course back at Crazy Go Nuts University in the early ’90s), Erlang is getting a lot of the attention these days since it has both a success story at Ericsson under its belt as well the clout of a Pragmatic Programmers book behind it. There is a feeling among some programmers (Bray included) that it isn’t going to be the language to turn concurrent programming from arcane art into mainstream practice:
Flawed
FoundersPolished
SuccessorsConcurrent Erlang ?
Shelley Powers disagreed with Tim’s assessments in her posts Flaws are in the Eye of the Beholder:
I find it fascinating when a person marks as ‘flawed’ the languages that have, literally, defined not only the web but application development of all forms. Perhaps the metric shouldn’t be on syntax, form, or function, but on usability.
Here’s her own table on languages:
'Perfect', but barely used 'Flawed', but simple, approachable, powerful, popular Higher-Level *Ruby (every time I see 'Ruby' I mentally add, Mama's precious little…) *I’m giving Python a slide because Python has fairly widespread use today.
Perl Client side code (The to-be-created scripting language that will take a nice, clean, easy to use language and morph it until it satisfies the purists, while breaking faith with the millions of users just trying to do a job) JavaScript Object Oriented Java (bloated beyond recognition with senseless additions and overly complex infrastructures) C++ (which can kick Java's ass performance and resource wise) Web-Centric Rails (you know that thing they used for the one application?) Cold Fusion, ASP and ASP.NET, PHP
Those of you who recall Bjarne “C++” Stroustrup’s line “There are just two kinds of languages: the ones everybody complains about and the ones nobody uses” or the essay Worse is Better (or the essay that led to it or Jamie Zawinski’s commentary on it) should be feeling deja vu now.
As for Shelley’s table, I’d probably have put “PHP” where “Perl” is right now.
I think that right now, the “scripting languages” are stuck in something akin to “Three Stooges Syndrome”. That’s the disease where Mr. Burns from The Simpsons, being so old and frail, has so many diseases trying to get at him at the same time that they’re all “stuck in the door”. The doctors illustrated the syndrome with a model, shown below:

And since Tim and Shelley have their tables, I thought I’d make one too:
| Scripting Stooge | What’s Driving It |
|---|---|
| Perl | Legacy: it was the original “duct tape of the internet”. |
| PHP | Widespread adoption, drives a lot of apps, easy to program, easy to deploy. |
| Python | Very readable, one of the 4 languages approved for use at Google (the others being C++, Java and JavaScript, according to Steve Yegge). |
| Ruby | Ruby on Rails, which is a very nice framework from the web app developer’s point of view. That and maybe the fact that DHH is rather photogenic (although PHPer-turned-Pythoner Leah Culver could give him some competition). |
{ 0 comments }

Back in December 2005, I wrote a blog article talking about the blog shooting war between Java and Ruby advocates that erupted over which approach was better: the one taken by Java with java.util.list or the one taken by Ruby with the Array class.
It’s interesting to see that nearly two years later, not much has changed — now we have a shooting war over Obie Fernandez’ blog entry, Top 10 Reasons Why Java Sucks Ass. I’ll write about this shooting war in a future article — in the meantime, for the sake of reference (and because the blog in which the article originally appeared in about to disappear), here’s my “Monkey Knife Fight” article from December 9, 2005.
Of late, I have been applying the term “Monkey Knife Fight” to language and architure wars among programmers. There’s something about them that reminds me of having two monkeys, each armed with a stilletto knife, squaring off while cheered on by a rabid crowd. I suppose that the major difference is that unlike monkey knife fights, you can glean some knowledge, understanding and even cooperation in the aftermath of a language war.
The particular monkey knife fight I am referring to starts in an entry on Martin Fowler’s bliki (bliki being a blog and a wiki), where he talks about two schools of thought about programming interface design:
He compares two similar structures: Java’s java.util.List with its 25 instance methods and Ruby’s Array, which has a hefty 78. He then shows us what it takes to fetch the last element of a Java List:
myList.get(myList.size - 1)
While in Ruby, getting the last element of a list is simpler:
myList.last
Elliotte Rusty Harold, author of a lot of books on Java and XML, disagrees with Fowler. He’s of the “less is more” school and wrote:
A 78 method List class is about three times as bad as a 25 method List class, not three times as good. A 12 method List class would be about twice as good.
…
Java’s List class does not lack any of the functionality in Ruby’s. Java just factors it out into a few more classes, especially the Collections class, and skips a couple of rarely used “convenience” methods. The result is a simpler, easier-to-understand, easier-to-use, more humane API.
And thus the monkey knife fight began, with a much excitement from the spectators:
[I rather like the graphic he included, shown below.]

length() and it says ’see method size()‘.”
Array class] is "an atrocity". So what's the magic number? Is 22 methods ok, but 23 - heck no, that gets into atrocity range? There's absolutely no way to look at the raw number of methods and make that statement. He's assuming that there must be fluff in there - but that's an assumption, not evidence."[Be sure to read his examinations of what he considers to be extraneous methods for the Array class.]
Array is a class. The distinction may seem to be hair-splitting, but it’s important…java.util.List isn’t really a shining example of good interface design either.”list.get(list.size() - 1) should be embarrassing. list.last or list[-1]? I think [-1] reads well enough, and fits into a very elegant set of functionality involving slices and whatnot. But I also think list.last is entirely justifiable. OTOH, list.get(0) isn’t embarrassing, so list.first isn’t as compelling. And the nitems method he points to really seems overboard.”As for me, I fall closer to the Martin Fowler camp rather than the Elliotte Harold camp, largely based on gut instinct. All the setup you have to do to get Java to do anything of consequence drives me bonkers. Classes with a pared-down interface may be simpler, but not when I have to start linking them to all manner of utility classes to get them to do what I want. It’s not so much simplicity as it is sweeping complexity under the rug, where you’ll have to eventually deal with it. Working with Java, I feel that I’m always thinking “How do I get Java to perform task X?”, while with Ruby, it feels more like “How do I get this result?” With Ruby, I feel that I’m wrestling only with the problem, not the language.
I do have one complaint about the Ruby approach — method aliases. While it’s convenient for luring in programmers from other languages, I think it actually detracts from code readability to have two method names mean the same thing.
{ 0 comments }
Possibly inspired by articles like Tim O’Reilly’s State of the Computer Book Market (here are parts one, two, three and four of the Q1 2007 edition of this series) posts on the O’Reilly Radar blog, Antonio Cangiano decided to do a little research of his own:
Technical books are a topic that interest me a lot. From book sale figures and trends we can attempt to better understand where developers are putting their money, not only their mouths. For this article I decided to perform a small experiment, by collecting some interesting data. I considered 23 fairly well known programming languages, and searched for the top selling book (according to Amazon) for each of them. The Amazon sales rank allows us to compare the success of books representative of each language, and indirectly compare the popularity of the languages themselves.
According to Antonio’s research, here are the best-selling programming language books are for these languages, listed starting with the best seller:

To see the top 23 programming languages based on Amazon ranking, go visit Antonio’s blog entry.
A commenter on the article wrote:
Actionscript would rank even higher than JavaScript, since the book Essential ActionScript 3.0 by Colin Moock currently is at sales rank #346.
There are some interesting languages on this list. Although they get mentioned on Reddit and a number of developer blogs, they’re not quite mainstream yet. In spite of that, they’ve placed quite well based on Amazon’s ranking system:

[Cross-posted to the Tucows Developer Blog]
{ 0 comments }
John Maeda at The Laws of Simplicity has an interesting photo of a lightswitch at Sun Labs:

Click the photo to see the original.
He writes:
I gave a talk at Sun Labs where I encountered a special light switch in one of their conference rooms. At first I thought it was some kind of silly “engineer” joke. But the light switch functions as stated for real. Does it win the award for the most confusing light switch? I bet there are other ones out there that are equally complex to use.
The lightswitch design philosophy at Sun is quite clearly reflected in Java.
{ 0 comments }
It hasn’t even been a year since Sun hired JRuby contributors Charles Nutter and Thomas Enebo to work on it full-time. It’s been an even shorter period since Ola Bini (whom I had the pleasure of meeting at RailsConf 2007) got hired to do the same by Thoughtworks.
In that short span of time, they’ve done something impressive: they (and all the other contributors involved) have brought JRuby to version 1.0.
The release is being termed as “Ruby compatible” with all known JRuby bugs causing incompatibilities with Matz’s Ruby (MRI) resolved. Applications should “just work” out of the box.
Here’s InfoQ’s summary of Charles Nutter’s roadmap for JRuby post version 1.0:
- Performance:
In the last year speed has been increased by an order of magnitude and a JIT compiler has been enabled. The team will continue to work on improving the JRuby speed and performance.- Java Integration: Today libraries can be called, interfaces implemented, and classes extended. Edge cases exist however. A redesigned integration API is targeted for 1.1.
- Ruby 2.0 and Rubinius: The goal is to support Ruby 2.0 and Rubinius byte code execution soon.
We at Global Nerdy would like to congratulate the JRuby (and NetBeans) teams on a job well done. We salute you with a filet mignon on a flaming sword!
{ 0 comments }