logo

 

     
 
Home
Site Map
Search
 
:: Bitwise Courses ::
 
Bitwise Dusty Archives
 
 
 

rss

 
 

ruby in steel

learn aikido in north devon

Learn Aikido in North Devon

 


Section :: Rants and Raves

- Format For Printing...

Ruby’s Inferiority Complex

Why does criticism of Ruby bring out the worst in people?
Monday 19 March 2007.
 

Little did I know, when I asked Matthew Huntbach to write an assessment of the Ruby language, how much of a storm his article would provoke. Both here on Bitwise and out on the far reaches of the Internet on places such as Reddit, Ruby aficionados have been venting their spleen upon Doctor Huntbach, calling into question everything from his academic credentials to (I kid you not!) his taste in shirts.

Hell, it seems, has no fury like a Rubyist scorned.

What rather few of Matthew Huntbach’s critics have bothered to do is to make any attempt at answering the points made in his article. I haven’t seen much debate, for example, of his criticism of the numerous alternative Ruby constructs available for performing the same tasks (“[when there are] several different ways of doing something … it seemed to be the philosophy of the language to provide all of them.”], or the inherent problems associated with implicit typing (“If I am tracking down the source of some buggy behaviour, I might start by looking for the class of the object whose method call led to the bug. The lack of types in Ruby would make that more difficult, but on top of that I have to face the possibility that the method may have been redefined somewhere else during code execution, maybe for the whole class, maybe for the individual object.”), or the fact that Ruby class definitions are not definitive (“There isn’t one class definition I can reliably say completely defines an object’s behaviour”).

Frankly, I would have been more impressed if those people who so despise Doctor Huntbach’s views, had taken the time to contradict them. True, there has been a bit of discussion about whether or not array addition should sum the elements of a numeric array or concatenate them. But most of the other points made in the article have not been addressed at all.

Instead, Ruby’s most ardent supporters have resorted to name-calling: ‘fascist’, ‘prick’, ‘Never mind what’s wrong with Ruby, what’s wrong with you?’ and other, yet more colourful, examples of informed debate which I shall omit mentioning. If Ruby’s future relies upon this kind of lucid, thoughtful commentary, God help it!

But an even greater crime, it seems, than his criticism of the Ruby language was his dislike of Why’s (Poignant) Guide to Ruby. This is a PDF book on the Ruby language which is decorated with numerous cartoon foxes and a somewhat unconventional style of writing. Some love it; others loathe it. This is hardly surprising. There is, indeed, a similar division of opinion on books ranging from War and Peace to Harry Potter and The Goblet Of Fire (though those mighty tomes, I would be the first to admit, have rather little to say about the art of programming). The author of the Poignant Guide (a mysterious individual named ‘Why’) took the criticism to heart, however, and, as his right, went on the offensive…

And speaking of ‘offensive’, in response to Why’s critique, we here again find the Ruby supporters’ army weighing in with their, by now, familiar well-reasoned, elegantly expressed criticisms of Matthew Huntbach’s personal and professional competences (“Fuck that guy”, “fuck the academic nerd”, “the guy is a total academic failure. He’s talking out of his ass.” etc. )
http://redhanded.hobix.com/cult/whatSWrongWithRubyHahYeahItSMe.html

Really, if Ruby is such as great a programming language, you would have thought that the arguments in its favour might have been slightly more fluently expressed. My heart sinks when I read this kind of babbling nonsense.

Look, I personally am betting my career on the success of Ruby. My own company has developed a Ruby IDE for Visual Studio. Clearly I want Ruby to be a big success. That fact must be so transparently obvious that I hardly think I need to state it. And yet, in spite of that, some people believe that the simple fact that criticism of Ruby sullies the pages of Bitwise shows that I too have an anti-Ruby agenda.

In my view, it is a sign of Ruby’s immaturity that those people who support it are so afraid of criticism. It almost smacks of paranoia. I saw this happen with Java, a decade ago, when that language was first developed. At the time, people used to write poisonous letters to the editors of magazines whenever I dared to point out any flaws (such as bugs in the early java libraries or the language’s slowness of execution). They weren’t complaining that I was wrong (I wasn’t). They were complaining that I said in public things which they wished to remain unsaid.

Ruby programmers need to start getting over their inferiority complex if the great, bad world outside the confines of the ‘Ruby community’ is going to take the Ruby language seriously. The kind of puerile name-calling which has followed Matthew Huntbach’s article certainly won’t do Ruby any favours.

AddThis Social Bookmark Button

Forum

  • Ruby’s Inferiority Complex
    16 August 2010, by Rusty Shackleford

    The author earned the scorn he got.

    The guy doesn’t even understand Ruby’s type system.

    Pro tip: If you think Ruby has weak typing or no typing at all, you are very wrong.

  • Ruby’s Inferiority Complex
    22 March 2007, by Peter Booth

    Admission: I am a Ruby fanboy. And ten years ago I was a Java fanboy, and Fortran 77 some time before that ...

    After all the hooplah I was expecting that Huntbach had written a venemous diatribe - but his article seemed reasonable to me. Not that I agreed with every point - but my measure of quality isn’t (always) whether someone shares my prejudices. I have found the arbitrariness of Ruby a challenge, but the biggest challenge has been immaturity of tools and documentation. I think the author makes a good point about the overmaturity of Java. He doesn’t touch upon the thing I most like about Ruby - it’s succinctness.

    I imagine that part of the fuel for the self-righteous responses to the article is the warm cozy feeling of being part of an in-crowd that has recognized the next Velvet Underground when they are still big enough to play 100 person venues. And perhaps when Microsoft begin selling VisualRuby 2.0 I will be leaping onto Scala or whatever seems like it will be the next big thing. Doctor Huntbach’s article or the responses don’t peturb me - but they say something interesting about human group dynamics. I didn’t enjoy Why’s Poingant Guide but I am in awe of his coding skills. I’m confident someone that smart can handle criticism. Didn’t someone famous say that adult life is just kindergarden with long pants?

  • Rubyists?
    22 March 2007, by Augusto

    I find it disturbing that there is a name for users (fans, cultists) of a particular language.

    This is reminding me of the whole Serenity "Brown Coats" fanbase, that almost imploded with the failure of the movie at the box office.

    "Rubyists" ... incredible.

  • Ruby’s Inferiority Complex
    21 March 2007, by Derek

    Really, if Ruby is such as great a programming language, you would have thought that the arguments in its favour might have been slightly more fluently expressed.

    The logic is a bit off here. First, I hope you don’t mind my assumption that when you said "fluently," you actually meant "eloquently." In any event, a language’s "greatness" has no correlation with whether its users can or cannot eloquently state arguments in its defense.

    • Ruby’s Inferiority Complex
      22 March 2007, by Huw Collingbourne

      I hope you don’t mind my assumption that when you said "fluently," you actually meant "eloquently."

      I meant ’fluently’ - which means expressed gracefully. I have no objection to ’eloquently’ either.

      • Ruby’s Inferiority Complex
        22 March 2007

        I guess I have to concede that point. I’ve never heard the term used to express anything but an "effortless ability to express oneself," which may or may not be eloquent.

        My point about the logic still stands firm. In fact, I’ve developed a theory. The easier a powerful language is to effectively utilize, the weaker-minded an individual need be to use it. Therefore, we can assume that the larger the number of crazy Huw Collingbourne-bashers spouting nonsense, the better Ruby actually is.

  • Ruby’s Inferiority Complex
    21 March 2007, by Divad

    To be fair, the criticisms are probably hitting close to home.

    Here’s the real deal: 1. Even if you "bet your career" on Ruby, that doesn’t mean long term. Especially those of us that already know that Ruby is destined to be Perl 2.0 in terms of overall importance, lifespace and applicability 2. Ruby makes things tricky- even for the "small brilliant teams" where programmers are never learning (they’re already experts) and never have time constraints since they never are tasks with projects that "don’t make sense".

    Ruby paints a glorious picture of programming idealism where environment is perfect, the team is perfect, and thus you don’t need static typing or high performance to get your job done.

    Every Rubyist knows that is false deep within somewhere, and they just don’t want to admit it. That is the heart of the Ruby Inferiority Complex.

  • Ruby’s Inferiority Complex
    21 March 2007

    He didn’t even really ’attack’ Why. He said he didn’t like the poignant guide and gave his reasons. I didn’t agree with him (I really enjoyed it, despite some flaws) but I can see why he felt the way he did.

    There were no comments AT ALL that did anything other than attack the author. I lost a great deal of respect for Why due to his overly defensive response.

    The Ruby community has lost by self KO: calling someone a fascist

    • Ruby’s Inferiority Complex
      22 March 2007, by David Koontz

      The Ruby COMMUNITY called the author a facist? How about one moronic simpleton called the author a facist. I think judging an entire population based on the comment of one anonymous source is just as stupid a thing to do as flinging around a stupid label like facist.

  • Ruby’s Inferiority Complex
    20 March 2007, by Saucetentuo

    I’m a bit late to the party, but if you want to see Ruby criticism done right, visit How Ruby Sucks.

  • Ruby’s Inferiority Complex
    20 March 2007, by jc

    Relax Huw. Most of the responses to Matthew’s article were fairly reasonable. The Ruby community is passionate about their language and a few people in it take the whole thing too seriously, so there’s always a few stupid responses to any criticism. There’s no reason to define the entire community by the missteps of a small percentage.

    Personally I thought the criticisms of the language brought up by Matthew were fairly irrellevant, and theoretical in nature. There’s no real way to respond to stuff like that, other than "so be it". So you can redefine a method at runtime that will make debugging a nightmare. But if we didnt have that, our Rails integration testing DSL’s wouldnt be as awesome as it is. Many things of use can be abused, and its a very common in politics to use minor downsides of anything to discredit a technology that clearly has some upsides as well.

    I’m just saying sometimes you have to disagree with someone’s entire outlook, as opposed to his point by point arguments that only make sense within a flawed perspective.

  • Ruby’s Inferiority Complex
    20 March 2007

    I suppose I am one of the guilty parties, and must apologize for calling the author a "fascist" for not printing my comment. So, don’t take my remark as a rubyist because I haven’t used the language and was commenting on the general mentality which certain one-way authors subscribe to, i.e., tell them what you think but don’t let them talk back. Works well in a classroom but not in the world of "open" (and sometimes cacaphonous) discourse

    Having said that, picking on _why was really a low blow and uncalled for. In my opinion, this was the "lightening rod" which spurred many of the people to lose their heads for a moment and say things they didn’t mean. If you have spent any amount of time in the Ruby community you’d know that _Why is always on the edge of what can be done with the language and he always brings a fresh and non-confrontational approach to the community. And he has a lot of fans, outside of the Ruby community, me included. So there are two things in that ill-concieved articles. A critique of the language Ruby and an un-provoked and un-called for personal attack on _Why. Most of the emotional responses, mine included, were a response to that and not to the flimsy "critique" of the language. By all means, critique the language, but don’t start off by viciously attacking someone who never really gets into the politics of language wars. Therefore, I say, "_Why the lucky stiff MUST be defended!"

  • Ruby’s Inferiority Complex
    20 March 2007, by Gabe

    Ruby does have a lot of fanatics. This is common to underdog niche items of all sorts. Some people get irrationally defensive over any kind of criticism. If your bread and butter is a language like Ruby that faces the threat of drying up and becoming a ’dead’ language, a little defensiveness is not unwarranted. But also realize that the attack dogs are not representative of the community. This type of vitriol only exists at the superficial level of general Ruby discussion. If you are evaluating Ruby you will be best served by avoiding the meta-discussion and just spending some time learning the language.

    I am a ruby programmer and I thought the article was interesting, but an attack on Why is going to be a lightning rod that obscures everything else. As to the legitimate criticisms, it seemed like he was mostly criticizing Ruby’s dynamic nature with some superficial syntax critiques. Let’s be clear about this, open classes, mixins, and dynamic typing introduce the possibility of whole new types of nasty bugs that would never occur in Java. That is the cost, however the author never talks about the benefits (the code being a little shorter is not the main benefit).

    A major pragmatic benefit is the ability to slightly tweak the behavior of a library without modifying the original source. Yes, this would often be bad style, but sometimes the ’right’ way of doing things is so obtuse or unmaintainable that its worth it to break the rules. In Java (and most languages) you simply can’t do it, but in Ruby it’s up to the programmer.

    Another benefit is more freedom to structure your code in a way that makes sense. For instance, suppose you need a number of your objects to be used in a new module. Maybe they need to return some of their internal state in a new format. If this new format is unique to the functionality of the new module then it might make sense for those formatting methods to be defined in the new module file and only mixed-in to the main classes if the module is used.

    Whether or not this architecture is best is up for debate, but it would be unwise to dismiss it out of hand simply because it violates an architectural assumption that Java programmers must live by.

    The bottom line is that static typing buys you certain assurances and abilities in your IDE at the expense of flexibility. If you prefer static typing that’s your prerogative, but you can’t look only at what you lose by going dynamic, you must also consider what you gain.

    Ultimately I think Ruby is probably not right for the enterprise because in any sufficiently large shops you’re going to have incompetent programmers, and a strict language like Java makes it much harder to shoot yourself in the foot.

  • Ruby’s Inferiority Complex
    20 March 2007, by Hugh

    The insult on _why wasn’t needed at all in the previous article. If you didn’t like his tutorial, there are dozens of other ones. Seriously, he’s done a lot for Ruby - like the camping framework, textile library, etc...

    I guess that insult was a bit too personal. If you’re going to be criticizing a language, try not to get too personal (ie. criticize the language, not the people).

    It’s like writing an article reviewing Linux and saying "Another thing I don’t like about Linux, people like Linus Trovalds’ keep on starting flame wars..." - you’re going to make a few people made.

  • Ruby’s Inferiority Complex
    20 March 2007, by Ralph the Llama

    If this guy were not from UK, I would say he is republican. Smart enough to mud any subject beyond all recognition. I am sorry, nothing gentler comes to my mind. Can we avoid this kind of detrimental articles, nobody wins. Except maybe someone like this one, blowing smoke through the nest of busy bees to rob the honey. Are you Matthew, a hired envoy, "embracing" Ruby for Microsoft?

    • Ruby’s Inferiority Complex
      23 March 2007, by Matthew Huntbach

      I am intending to write a more detailed reply on this whole article, but I can answer to this. No, I am not a Republican in US terms, my politics in UK terms is Liberal Democrat (for some time I was an elected councillor for that party), and in USA terms I find the Democrat Party too right-wing for me, and the Republican Party unspeakable.

  • Ruby’s Inferiority Complex
    20 March 2007, by Zorbid

    The anger of the response comes from the violence of the original post. It wasn’t a purely technical article. Dismissing the hype is one thing (< hat foil="tin">a lot of the hype surrounding Ruby is IMO a grassroots marketing campaign orchestrated by 37 Signals< /hat >), criticising genuine enthusiasm (_why’s) is another matter, especially with the harsh words MH chose to use.

    One should not expect a cool, rational answer to this kind of flames.

    I didn’t read the reddit comments (which are crude more often than not, whatever the topic), but here the insults were IMO remarkably sparse in this context, and, at Redhanded, they were mostly the kind of things you’d say to comfort a wounded friend.

  • Ruby’s Inferiority Complex
    20 March 2007

    The original article was poorly written and shoddily defended. It also reflects on your so called "magazine" that you allowed it to be printed without a basic amount of editing and peer review.

    Perhaps what you were really after _WAS_ the controversy (<== See google ads to the left?) and you knew that once you pressed the RED button and it hit reddit, you’d at least make a couple fifty bucks.

    So at least thank the hordes who you are trying to milk. And please note that I’m not a Ruby afficionado, but for you to pretend that MMH’s article raised valid points is a bit disingenuous. The article was poorly written, lazily edited, and at best a poor attempt at flame bait.

    Thanks for your time, and NO I will not be clicking on any of the google ads which seem to have sprung up after the "controversy" in a "teacup" as it were began.

    • Ruby’s Inferiority Complex
      20 March 2007, by Huw Collingbourne

      It also reflects on your so called "magazine" that you allowed it to be printed without a basic amount of editing and peer review.

      Thank you for giving me the opportunity to clarify our editorial policy.

      We do not edit articles to change the meaning of the author’s words. We do correct punctuation and spelling and may ask an author to rewrite passages to improve clarity. Having worked in the computer press for more than 20 years, I can tell you that this is an unusual policy. Most print magazines a) have a style sheet which obliges the author to write in a specific style, and b) habitually cut or alter an author’s words (even when that significantly changes the meaning) often without consulting the author. It is my strong view that an author should express himself or herself entirely in his or her own words and that no editorial pressure should be brought upon the author to adopt any specific point of view.

      In the present case, for example, I did not know what views Matthew Huntbach would express on Ruby until he sent me his article. No matter what his views might have been, I would not have edited his article in order to change those views in an effort to make them fit my personal prejudices. When an author writes an opinion piece such as this, it is my clear intent that the readers should be certain that the words are a genuine expression of that author’s opinion and have not been modified in a process of "editing and peer review"

      best wishes

      Huw

      • Ruby’s Inferiority Complex
        20 March 2007, by chromatic

        As an editor myself, I publish only works that meet a minimum standard of research and technical acumen. That includes opinions with which I disagree—but if the author can defend his or her views to my satisfaction, I publish the work.

        In my opinion as a reader, the original editorial was inspecific, superficial, difficult to follow, and lacked any particular insight or useful criticism of the Ruby language. I wouldn’t have published it.

  • Ruby’s Inferiority Complex
    20 March 2007

    Me: Deleting the long paragraph I wrote.
    I: Why?
    Me: If I write something in favor of Ruby, I might be(with a high probability) called a Ruby aficionado.
    I: What’s going on here.
    Me: I have a good hint.
    I: Explain mf.
    Me: I have exhibited similar behavior in the past. When I take things personally.

  • Ruby’s Inferiority Complex
    20 March 2007, by Sebastian Vuorinen

    I think there are actually two separate issues here. First any article that has the potential for even the slightest controversy and makes it to Digg or Reddit is going to get useless or even angry comments on it. It makes really no difference how sophisticated the community is in general. As things stand now, you’ll need to moderate if you want to avoid this.

    The other issue is that the original article really could have used some editorial guidance. If you read the article through it tries to balance things out in the last part, but the rest of the article is a bit unbalanced in my opinion. Mr Huntbach talks a lot about programming languages in general and points at a few of Ruby’s shortcomings, but really the examination is superficial at best. Everything he’s talking about has been discussed by the Ruby community before. Many of the discussions took place even before there was Rails and the popularity that came with that.

    His comments about Why’s Poignant Guide to Ruby are unfortunate. That may indeed have been the authors biggest fallacy. He totally failed to realize what that piece of work is supposed to be. It certainly isn’t targeted at language switchers so using it as an example is not constructive. I must admit that Why’s Poignant Guide to Ruby is listed under manuals on ruby-lang.org. But even there you are told that it contains ’talking foxes and chunky bacon’. Isn’t that a hint ? Maybe we should add something like ’WARNING: contains pop-art and humor’ there ? Usually when people ask for good tutorials on the community forums they are pointed to more appropriate places. While the Poignant guide does get mentioned from time to time it is accompanied with fair warnings about its suitability to actually learning the language.

    Had the author just bemoaned the lack of documentation he’d probably gotten a totally different response. Generally the Ruby community does admit that we still need to do a lot of work on documentation. And specifically we’d need more documentation for advanced programmers. That part of the authors argument is correct.

    Indeed it might have been a good idea to point the author at some of the Ruby community’s selfcritical pieces like Matz’s ’Why Ruby sucks’ presentation before letting him write that article. In a lot of ways Ruby has both benefitted and suffered from Rails. The boost in general interest has made it possible to publish many books about Ruby that might not have happened otherwise. On the other hand people have difficulty to distinguish between Ruby and Rails and some of the Rails community’s sometimes overenthusiastic spin rubs off on perception of Ruby too.

  • Ruby’s Inferiority Complex
    20 March 2007, by Samuel Murphy

    I’ve been programming (for work) in Ruby for about a year. I bought the book after the first interview and was essentially up to speed on the first day. Which is not to say there are not still niches that I have not fully grokked. Ruby is a pleasure to program, it’s great fun to work out a sequence in one line that would be a page (or three) in Java.

    The original article did seem a bit whiny on the topic of computer languages in general, a better title would have been "What I don’t like and let’s use Ruby as an example". He says, "However, these days when I look at the Java section in the bookshop, there is little I understand." And he feels qualified to critique another language? Huh?

    He never quoted Matz (the author of Ruby) but slammed some writers for being too fanboyish. I couldn’t get through Why’s tutorial but I’ve used his code and his technical insight is amazing. Perhaps Ruby needs a really boring academic tomb to prove it’s a fine language but well I don’t think any of the users care. What I’ve seen of the actual language development discussions the issues are discussed with state of the art knowledge of language theory. Skipping the silly academic parts.

    Huntbach finishes with a sense of a slam that Ruby (shh or any other language) does not native handle parallelism wishing it would break "away from the single-processor sequential computer." He does say that Ruby would be his choice. I expect if he had to use it in the real world he would soon be a fanboy.

  • Ruby’s Inferiority Complex
    20 March 2007, by Jack Strain

    Incredible spin you’re putting on this. I like Ruby, I also like Python, C# and straight C. When I saw a link on reddit to an article called "What’s wrong with Ruby" I thought "finally someone’s speaking up". I was looking forward to a dissenting voice. What I got was complete and utter arse. There wasn’t a single point in there.

    He goes on about how Ruby is ad hoc not elegant and backs this up by giving the example that adding two arrays together does infact add two arrays together instead of adding their individual elements. I can forgive a man for having odd taste but no mainstream language does this, not just because it makes no sense in most peoples’ minds but because it won’t work (what happens if the elements don’t support addition?).

    Well now we’ve got his ridiculous personal views about arrays out of the way he’s going to give us some actual real criticism of the language isn’t he? No. We get to hear about how terribly insulting Why’s poignant guide to Ruby is. I don’t know where to even begin with what’s wrong with thay. I wasn’t aware of some official mandate forcing all new Ruby programmers to read Why’s guide. The only reason it’s mentioned so much is it’s actually quite good. I’m sure there’s "Nazi Bob’s guide to C# and Genocide" out there but noone cares because we don’t have to read it and it would be ridiculous to claim it as a negative for C#.

    He fills out the rest with the age old static verse dynamic typing.

    Now you come back saying how the Rubyists are raving fanatics. Some of them may well be, just like the Java folks 4 years ago frothing at the mouth about Enterprise widgets and what not. My question is: to me as programmer who simply cares about getting things done, why the hell do I care that people like the language too much?

    People couldn’t combat Matthew’s points because he had none. There’s enough real problems with Ruby (scoping problems, libraries emphasis on magic) that it seems lazy and ignorant to not go to the effort of finding out what they are and simply pretending your own personal tastes are real problems.

    It seems to me what really happened here is Matthew wrote an article on why he’s not going to try ruby where he wasn’t planning on receiving so much attention. Then some people decided to mod this up on sites like reddit in a sort "omg look how stupid this guy is Ruby really does rock if this is the best they can come up with" and we get the current state of frothing at the mouth by fanatics who take Matthew’s article as anything more than a sad joke.

    Think about things before you write Matthew. People aren’t stupid enough to write articles like "What’s wrong with Haskell" or "What’s wrong with C++" without actually learning the basics of the language no matter how many PHDs they have.

  • Ruby’s Inferiority Complex
    20 March 2007

    I’m not much of a Ruby user (more of a Python guy, and kind-of a language geek), yet the article of Mr Huntbach smacked me as... kind-of fanboyish and purely subjective. You know, 100% fact-free and such.

    I mean let’s re-read it together a bit.

    He starts by telling us of a slew of "new languages" that oppose (and claim to be better than) "mainstream" languages such as Java.

    These languages? "Perl, [...], Python and now Ruby". Born in 1987, 1991 and 1993 respectively, versus 1995 for java. New programming languages? Come on...

    Next paragraph we’re told that Perl is a "simple [nb: Perl? Simple? Whoa...] text-manipulation language [...] with few pretensions to be anything else.". Has he even USED Perl? Has he ever taken a look at CPAN? That’s so wrong it hurts. Yeah Perl is one of the best text-manipulation and scripting languages out there, but saying that it’s nothing else and that it doesn’t "pretend" to be anything else shows the lack of knowledge of Mr Huntbach on the subject, just as the labelling of Python and Ruby as "Scripting Language" whatever that means (i guess that being dynamically typed is enough to label you a "scripting language" in Mr Huntbach’s view, as Python for example was never built for scripting but as a general purpose programming language and a learning tool, as the successor of ABC; likewise Ruby was built as a successor for both Perl and Smalltalk, the practicality of Perl and the semantics of Smalltalk).

    The first section is already pure nonsense, there is nothing right in there, do we really want to continue reading?

    Let’s get to the next section. We’re told that Mr Huntbach doesn’t like hype. Good, I don’t either. Mr Huntbach tells us that he hated Why’s Poignant Guide why not, most people find Why to be funny and insightful, on top of being an overall smart guy. I guess that’s not his case, but then he goes on telling that the sum of two arrays should be the sum of each element of the arrays? Is there ANY language out there that behaves like that? Does it even make any sense? What happens if you perform this sum operation on arrays of objects that don’t support any kind of addition, do the semantics of the operation suddenly change?

    I do agree that I don’t like "+" as an appending operation and much prefer, say, Haskell’s "++", but every language I know that can use "+" on iterables uses it for concatenation. And that does include Java where "+" is a string concatenation operator... I guess that Mr Huntbach would like "+" to perform a matrix addition on arrays, but arrays are not matrices, and matrix addition of arrays is not what people want 9 times out of 10, not to mention that matrix addition of 1-dimentional arrays is trivial: `array0.zip(array1).map |e| e[0] + e[1] `.

    Then he goes on with Ruby’s array slicing. While i do agree that the [index, length] slicing doesn’t make any sense (and think it shouldn’t exist), he doesn’t seem to realize that *Ruby’s arrays are not multidimentional*. A multidimentional Ruby array is a serie of nested 1-dimentional arrays thus an array slice working on a multidimensional structure doesn’t make any sense whatever he says.

    He then tells us that he hates implicit dynamic typing, which is fine, take it or leave it, tell us that you don’t like it, but you don’t have to go any further, any user of dynamically typed language from Javascript to Erlang has already heard everything you have to say about how you hate the lack of static type system, of compiler assisted check and whatnot, don’t be surprised to be flamed when you launch in yet-another-I-hate-dynamically-typed-language rant.

    And he concludes by labelling once again Perl, Python and Perl (and by inference most Lisp dialects as well as Smalltalk) "scripting languages", yet again whatever that means and without ever actually defining the term.

    In other words, he wrote a mostly fact-free rant against ruby based on his own likings (of statically explicitely typed compiled programming languages) but without talking about the actual shortcomings of the language (in the language’s paradigm, and you could write books on the issues of Ruby including but not limited to the overly complex grammar and grammar-related bugs or incoherences — that can change from one minor version to the other, the speed of the runtime, ...) and you’re surprised he got flamed for it?

    In the end, I don’t think Ruby users are "afraid of criticism", most of them do take reasoned, intelligent, constructive criticism fairly well, and a lot of them do voice strong criticisms against Ruby (these criticisms being one of the reasons why 3 new runtimes are in the work for the Next Generation Ruby). But as most people, they don’t see any value in useless destructive criticisms of the core of the language (the philosophy the language was based on, you don’t like it, just leave it, or openly state what you don’t like about it but don’t try to hide behind "yeah I like Ruby but... I hate everything it was built for and on and everything it stands for and every principle and rationale that underlie the language", it’s just cowardly), and it does indeed bring the worst out of them. You may hate them for being "puerile", but you should realise that Mr Huntbach doesn’t come any better out of his article.

    And I guess your jabs at Why brand you as "puerile" too... how the hell is Why "mysterious"? I mean seriously, his Wikipedia page provides a photo and the name of his band, his e-mail is on his weblog and there’s a 500% chance to run into him if you ever attend OSCon, RubyConf or RailsConf.

    • Ruby’s Inferiority Complex
      20 March 2007, by Huw Collingbourne

      how the hell is Why "mysterious"?

      A matter of definition, I suppose. I think someone whose name is a question might reasonably be called mysterious (unless I’ve misunderstood and ’why the lucky stiff’ is his real name?)

      • Ruby’s Inferiority Complex
        20 March 2007

        > unless I’ve misunderstood and ’why the lucky stiff’ is his real name?

        No, ’Why the lucky stiff’ is his nickname indeed, I don’t really see how that makes him mysterious granted that it’s trivial enough to find his photo and meet him in person, but whatever floats your boat i guess (I mean you’re aware that "Freddy Mercury" isn’t Freddy Mercury’s real name, nor is Marilyn Manson really named "Marilyn Manson" right?).

        • Ruby’s Inferiority Complex
          20 March 2007, by Huw Collingbourne

          you’re aware that "Freddy Mercury" isn’t Freddy Mercury’s real name

          Yes, see the book which I wrote about Freddie Mercury (currently out of print, alas).

          Now, here’s another thing I don’t understand. You seem to be characterising the word ’mysterious’ as derogatory. All I meant was that here is a writer of whose name I am not even aware. In the same way, I would have described my old colleague MacBiter (in Computer Shopper magazine) as ’mysterious’ in the plain and obvious sense that his identity is, to the reading public, a mystery. I fail to understand why you are determined to find in the rather innocent word ’mysterious’ a covert insult.

    • responses on why’s blog are communal response
      20 March 2007, by jherber

      to the direct attack on why. how can why’s guide be considered fodder for any comparison of ruby as a language to other languages? it can’t. why’s site and tutorial are just a cherry picked example of a colorful character in the ruby community. java has hani, the bile spewer. python has a few eccentrics too. so what, that tells us nothing about the capabilities or limitations of the underlying language.

    • Ruby’s Inferiority Complex
      20 March 2007, by Frank Atanassow

      "Perl, [...], Python and now Ruby". Born in 1987, 1991 and 1993 respectively, versus 1995 for java. New programming languages? Come on...

      I think the gist was that these languages came to full prominence several years after their inception, and after Java had already become big news. Perl was well-known a bit earlier than Java, perhaps, but I think mostly as a language for system administration, which is still a relatively narrow domain.

      Next paragraph we’re told that Perl is a "simple [nb: Perl? Simple? Whoa...] text-manipulation language [...] with few pretensions to be anything else.". Has he even USED Perl? Has he ever taken a look at CPAN? That’s so wrong it hurts.

      Let us recall that Perl originally stood for "Practical Extraction and Rubbish Lister" (later: "...Report Language"), and PHP for "Personal Home Page" tools. I think that is a pretty good argument that these languages were designed with a very specific domain in mind, and started out without the "pretension" to be general-purpose languages.

      As for "simple", Perl is indeed syntactically complex, but I think its operational semantics is not wholly different from that of most other untyped languages, including Smalltalk. Indeed it lacks things like first-class continuations, which make Scheme’s semantics notably more challenging, and a thoughtfully designed hygienic macro system.

      Mr Huntbach tells us that he hated Why’s Poignant Guide why not, most people find Why to be funny and insightful, on top of being an overall smart guy.

      FWIW, I also hated the Guide. I felt it was patronizing, unsubstantive and ridiculously long-winded. But what really annoyed me were fawning and outrageous remarks such as: "We can no longer truthfully call [Ruby] a computer language. It is coderspeak. It is the language of our thoughts." And, no, it’s not that I have a problem with humor in programming; it’s that the humor is vapid and completely incidental to the subject matter.

      I feel free to make such value judgements on the Guide because it is substantially an artistic work. If it had been written more in a technical style, I would feel more compelled to address its content (such as it is) exclusively and dispassionately. It is unfortunate that Why and his supporters cannot separate the artistic and technical critiques from each other. (If I were more cynical, I might wonder if that is in fact why the Guide bundles those two aspects together: to conflate them?)

      then he goes on telling that the sum of two arrays should be the sum of each element of the arrays?

      No, he doesn’t. He says that Tim Sweeney did not find it intuitive. I think his point is not that array sums should be defined element-wise, but rather that any choice of semantics for + is somewhat arbitrary.

      Is there ANY language out there that behaves like that?

      Yes, I believe APL and some other languages extend all arithmetic operations to arrays in an element-wise manner.

      Does it even make any sense? What happens if you perform this sum operation on arrays of objects that don’t support any kind of addition, do the semantics of the operation suddenly change?

      Of course it makes sense. One could define + so that if some elements do not support addition a run-time error would be raised, just as one would get a run-time error if one tried to sum (say) a pair of trees or a pair of Elephants. Actually, the objection you raise is more understandable in a statically typed regime, where one would need some static constraint on the types of elements to avoid run-time errors. Surely you do not support (gulp) static typing?!

      Again, FWIW, to me it is perfectly sensible to use the symbol + for array catenation. Indeed, I would also be fine with * used the same way and in fact you will find many instances in the mathematical literature which do use those symbols (or closely related ones, like juxtaposition, or circled versions) with that meaning. For me, what is "intuitive" about + and * as symbols, is that they are binary operators which are at least associative, probably have units, and might also be commutative. But I am reasonable and open-minded enough that I know one might well define them otherwise; that is why I don’t complain about + and * being used as unary operators in regular expressions, for example.

      matrix addition of 1-dimentional arrays is trivial: `array0.zip(array1).map |e| e[0] + e[1] `

      It is odd that you call this trivial here, yet would not even concede that it makes "any sense" just a few lines earlier.

      Then he goes on with Ruby’s array slicing. While i do agree that the [index, length] slicing doesn’t make any sense (and think it shouldn’t exist), he doesn’t seem to realize that *Ruby’s arrays are not multidimentional*. A multidimentional Ruby array is a serie of nested 1-dimentional arrays thus an array slice working on a multidimensional structure doesn’t make any sense whatever he says.

      This is pretty incoherent. One can easily rewrite "a[x..y]" as a[x,y-x], so clearly that interpretation makes sense. And, again, just because Ruby has "jagged arrays" does not mean that you cannot define "a[x,y]" as "a[x][y]": for example, just issue a run-time error if the subarray is not long enough. Again, I think the point is not that it must be defined one way or the other, but that many interpretations are natural, and some are more natural or less natural for some people.

      He then tells us that he hates implicit dynamic typing

      How did you get that from: "I can take it or leave it"?

      which is fine, take it or leave it, tell us that you don’t like it, but you don’t have to go any further, any user of dynamically typed language from Javascript to Erlang has already heard everything you have to say about how you hate the lack of static type system, of compiler assisted check and whatnot

      I am pretty conversant with type theory, and I’ve engaged in a lot of static typing debates with advocates of dynamic typing. I have found, actually, that many such advocates are very ignorant of static typing, its limits and its merits, and particularly ignorant of the sorts of type systems in modern languages such as Haskell and Objective Caml. So I’m afraid I can’t agree that everyone already knows all they need to know about static typing.

      However, I think you are again mischaracterizing Huntbach’s remarks. He does not launch into a full-blown critique of (what you term) implicit typing, but rather gives a few reasons why he likes static typing, and then levels two concrete criticisms at Ruby: that dynamic typing makes it more difficult to resolve type-related bugs, and that run-time type modification makes it even more difficult.

      Now, you could have addressed these criticisms pretty easily (though incompletely), for example, by pointing out that pervasive debugging facilities in interpreted implementations of dynamically typed languages let a user easily identify the type of a value at run-time. Or you could have pointed to something like DrScheme’s MrFlow, and suggested that a similar system might be developed for Ruby. But instead you not only failed to address Huntbach’s comments, you also flamed him for being critical... which, if you are representative of the Ruby community, goes some way towards confirming Collingbourne’s point and, incidentally, also suggests why that community might never develop something like MrFlow.

      don’t be surprised to be flamed when you launch in yet-another-I-hate-dynamically-typed-language rant.

      I think you are the one who flames, and the one who hates, though the objects of your hate are static typing and critics of a paradigm you have fallen in love with.

      While I think Huntbach’s article missed some more essential criticisms of Ruby, it was considerably more coherent and "factful" than yours. If, instead of painting Huntbach as a foolish ivory tower egghead, you had responded with some scientific detachment and dispassionate argumentation, you would have shown yourself to be more mature and well-informed, and done a better service to your peers in the Ruby community than you have done.

    • Ruby’s Inferiority Complex
      16 February 2008, by Scott O

      I guess that’s not his case, but then he goes on telling that the sum of two arrays should be the sum of each element of the arrays? Is there ANY language out there that behaves like that?

      Actually, APL does this. Any arithmetic operator can be applied pairwise to the elements of two arrays to produce a third array: C <- A/B does pairwise division. The arrays must conform in all their dimensions. It makes for extremely compact, if sometimes difficult to understand code.

  • Ruby’s Inferiority Complex
    20 March 2007, by Jon Gretar

    It’s the same with everything you critisize.. Dave Thomas once got a really angry and threatining letter becouse he dared to critisize Java and say that it was not the optimal solution to everything.

  • Ruby’s Inferiority Complex
    20 March 2007, by Tuor

    The original article wasn’t that good; it simply hit the reddit wire. The points made could have been made by any hack academic. It is not fair to expect people to have useful responses to an article that is not particularly useful. Besides, this is the internet. Expect spam.

  • Ruby’s Inferiority Complex
    20 March 2007

    I think there is a severe disconnect here. The items you list as being problems are seen as features by ruby programmers. Aside from that I thought the criticizing ruby by attacking _why was stupid and petty. _why posted what I thought was a brilliant response.

    Maybe ruby isn’t what you want it to be, maybe it’s not good enough for academia, maybe it’s not good enough for the enterprise, maybe it’s not good enough for business but it gives _why and me and millions of others joy. That’s what _why was trying to say when he was talking about baling hay. Ruby doesn’t exist to bail hay or to make the gears of commerce turn. It exists to give us joy and it does that with panache and style and a good dose of humor.

    • Ruby’s Inferiority Complex
      20 March 2007, by Huw Collingbourne

      I think there is a severe disconnect here. The items you list as being problems are seen as features by ruby programmers.

      That being the case, I would have anticipated replies which demolished the critical arguments by pointing out the benefits of Ruby’s features which the author had failed to appreciate. Those arguments never appeared.

      Aside from that I thought the criticizing ruby by attacking _why was stupid and petty.

      Not really. There can be few books or software products (or films or TV shows) which haven’t had far, far worse reviews than that! It is not the fact that people object to criticism which I find curious, but that they respond, not by defending the object of the criticism but by hurling totally irrelevant insults at the author.

      • Ruby’s Inferiority Complex
        20 March 2007, by gwenhwyfaer

        There can be few books or software products (or films or TV shows) which haven’t had far, far worse reviews than that!

        That’s certainly true, but a "review" (in fact, a one-line dismissal) of an informal, non-definitive tutorial to a language is wholly out of place in a discussion of the merits of the language, as is any discussion of the number of cutesy tutorials around it - Raganwald mentioned "the little Schemer". It’s roughly akin to condemning Perl because the Camel book is "too dry and formal". I am surprised that you object to "totally irrelevant insults" being thrown at the author of the article, but can’t conceive that like might generate like.

        But I’m sadly not at all surprised to see that your article ignores the contributions that intended to try and engage the author (Jake’s, for one) in favour of just scraping the barrel for flames and presenting them as not only representative of the community, but the only output of that community. You must know of Sturgeon’s Law - I’ve seen you refer to it yourself - so why ignore it here?

        (Not to mention casting your own "totally irrelevant insult". Your characterisation of _why as "going on the offensive" is quite unfair. I read _why’s response. "On the offensive" is about the least applicable term possible.)

        For the record, I’ve never used Ruby, nor do I particularly intend to. But sometimes something is so manifestly unfair that it requires comment; the attack on _why’s book was one of those things.

        Moreover, the pattern of ’post inflammatory and unfair article on X; cherrypick the worst of X’s community’s responses; condemn X again for having an immature community’ is one that’s far too familiar to anyone who’s been watching the Linux scene for a decade or so, where it’s been repeated so often that by now it’s both transparent and tedious. And quite correctly described as "trolling".

        It saddens me that a journalist of your reputation and history would participate in such a charade, let alone initiate it.

        • Ruby’s Inferiority Complex
          20 March 2007, by Huw Collingbourne

          Not to mention casting your own "totally irrelevant insult". Your characterisation of _why as "going on the offensive" is quite unfair. I read _why’s response. "On the offensive" is about the least applicable term possible.

          "On the offensive" is an expression taken from military terminology; it means mounting an active defence. Having been attacked, you do not retreat but you launch a counter attack - you go "on the offensive". This is a perfectly legitimate response to criticism and I felt that Why’s blog entry fitted the description.

          My play with the word ’offensive’ (in the next paragraph of my article) was aimed at some of the comments that were left by other people was not intended as a criticism of Why. I apologise if my punning on the word caused any unintended confusion. I had not imagined that it might.

          • Ruby’s Inferiority Complex
            21 March 2007, by gwenhwyfaer

            *sigh* No, it appears - ironically enough - that the confusion is yours. I was well aware of what you meant by "on the offensive" and it was that sense I felt was unfair. Indeed, _why’s response was the epitome of stoic passivity - about as far from "mounting an active defence" as possible, unless you consider the mere act of responding at all to be going on the offensive, which dilutes the phrase to meaninglessness - and I’d consider such a misreading of my words pretty insulting if it was then used to bolster a point about how appalling my community was. Especially if I thought it wilful.

            (Having said that, your watering down of the phrase into "mounting an active defence" is weaselly. "On the offensive" is generally used to describe someone assuming an attacking posture, and it was to that sense - the one I believe you intended, given the old saying about the best form of defence - that I responded; and I did so because as I read it, _why’s response went out of its way to avoid anything that could be described as an attack.)

            In fact, it did occur to me that you might think I had misread you in exactly this way, and I rewrote what I was saying in an attempt to clarify that. Clearly not quite well enough, for which I apologise. But given that you misunderstood me, isn’t it also rather possible you misunderstood _why too?

            (Of course, I’m assuming that you did miss my point, and weren’t just gratuitously insulting my intelligence in an attempt to pre-emptively disparage me - which really could be described as "going on the offensive". But I’ve already used the i-word...)

            • Ruby’s Inferiority Complex
              21 March 2007, by Huw Collingbourne

              It appears that you are determined to misread my most innocent comments as being deliberately provocative. That being so, it is not worth my commenting any further.

      • Ruby’s Inferiority Complex
        16 August 2010, by Rusty Shackleford

        Please tell what his arguments were. All he wrote was personal feelings and misinformation.

        • Ruby’s Inferiority Complex
          9 November 2010, by Bill

          Wow! As a (non-academic) software developer who had used a variety of languages over the past 20 years, I stumbled upon this and the previous article and spent some time reading through them and the comments. I was interested in learning Ruby as part of expanding my tool set, bought a few books on the subject, and stumbled across these articles in a Google search on the terms ’ruby language’. I’ve never seen such a response to any article in all my days on the web; to say it was passionate is too flattering. Passionate and rabid are two very different things. I had hoped to actually learn a few things, but instead got a ring side seat at the circus. It’s always a shame when an opportunity for an intelligent exchange of ideas (and opinions) is squandered in favor of some kind of tribal war. :(

  • Ruby’s Inferiority Complex
    19 March 2007, by Steven

    As neither a lover nor hater of Ruby, I found the article quite fascinating, and the comments to be the sort I expect from anti-Microsoft and FireFox fanatics (I’m sure you know what I’m talking about). I knew some coders were a little protective of their choice of language, but never realised HOW protective until I read the comments ... as you mentioned, they didn’t seem to care whether he was right or wrong - just that he insulted the "oh so wonderful" Ruby.

    Unfortunately, this type of behaviour has become more and more prevalent on the interweb, moreso in the last couple years (or at least, I’ve only noticed it getting more common in the last couple years anyway).

    Just take any Microsoft article on Digg .... whether pro or anti, they’re there bashing the heck out of it. Can’t seem to help it.

    As for BW being anti-Ruby, obviously they didn’t bother looking at your site (most likely just got directed to the article by another fanboy and read the first paragraph or two)

  • Ruby’s Inferiority Complex
    19 March 2007, by Mike Woodhouse

    I suppose it’s a sign of Ruby’s increasing mindshare that the "community" is starting to look and feel a little like that of Python. Or, God help us, Perl.

    Which is a shame - one of the aspects I used to offer as a differentiating plus was the easy-going, humorous and uncommonly helpful Ruby community. It’s still going to be there, I’d guess, just that little bit harder to find.

    And, as pointed out, what a shame no-one seemed really to have read the article. Personally, I’d like to read what Matthew has to say about other languages, for and against. I might not agree with him (I don’t suppose he cares either way, nor should he) but that’s good - more brain-fuel.

    • Ruby’s Inferiority Complex
      20 March 2007, by Ladislav

      I’ve always found the Perl community to be easy-going, humorous and uncommonly helpful, myself. One or two trolls and people with overly-thin skins, sure, but you get those everywhere. Though even the best of us can get our backs up at the constant stream of "Or, God help us, Perl"-style comments out there.

    • How to Bring Out the Worst In People
      20 March 2007

      One way to ensure that you’ll never see the "easy-going, humorous and helpful" side of the Ruby community is to single out _Why (a famously shy person who is also one of the best-known and best-loved Rubyists) and hurt his feelings by calling his art "patronising" and "horrid".

      If Dr. Huntbach is afraid of fights, he should avoid starting them.

      Failing that, perhaps he should find an editor who provides actual editorial advice - advice like "what exactly does your taste in humorous Ruby books have to do with the Ruby language?"

    • Ruby’s Inferiority Complex
      20 March 2007, by Martijn Faassen

      I always thought Python had an easy-going, humorous and uncommonly helpful community, but perhaps that’s because I was introduced to the language in 1998 or so? From a distance (the language doesn’t fit my brain very well) I enjoyed the creativity and quirkiness of the Perl community too. Communities evolve as they grow, and perspectives on communities are varied. To put this in perspective: I recognize a lot of the debate around Ruby from years ago with Python: it’s "just a scripting language" and "dynamic typing is unsafe" and so on. Possibly we’ve helped prepare the ground for Ruby a little. :) I also recognize the enthusiasm of who I suspect in some cases are the recently converted. Python was likewise a breath of fresh air to me, coming from mostly a C++ background. Don’t let the sudden rush of oxygen get to your heads though - other languages have their strong points too.

    • Ruby’s Inferiority Complex
      20 March 2007, by Liam Clarke

      To be honest, Python is past this point in the language growth cycle, but it did used to be terrible.

      • Ruby’s Inferiority Complex
        25 June 2007, by Anne

        Ruby has a funny inferiority complex. Yeah, Python is past that point in the language growth cycle.


Home