Slashdot Mirror


'Pragmatic Programmer' Author Andy Hunt Loves Arduino, Hates JavaScript (bestprogrammingbooks.com)

Andy Hunt is one of the 17 software developers who wrote the Agile Manifesto, and he co-authored The Pragmatic Programmer. Now Slashdot reader cerberusss writes: In an interview with Best Programming Books, Andy Hunt mentions he "hates languages that introduce accidental complexity, such as JavaScript -- what a nightmare of pitfalls for newbies and even seasoned developers... My go-to languages are still Ruby for most things, or straight C for systems programming, Pi or Arduino projects." Furthermore, he mentions that "I tend to do more experimenting and engineering than pure code writing, so there's occasionally some soldering involved ;). Code is just one tool of many."
Andy writes that he also likes Elixir, talks about Agile, reveals how he survived his most challenging project, and says the biggest advancement in programming has been the open source movement. ("Imagine trying to study chemistry, but the first half of the elements were patent-protected by a major pharma company and you couldn't use them...") And he also answered an interesting follow-up question on Twitter: "Do you feel validated in an age of Node and GitHub? Some of your best chapters (scripting and source control) are SOP now!"

Andy's reply? "We've made some great progress, for sure. But there's much to be done still. E.g., You can't ship process."

6 of 185 comments (clear)

  1. "Beware.. by LesserWeevil · · Score: 4, Insightful

    ..programmers with screwdrivers" a mentor of mine in SW engineering once said. I've largely ignored that dictum, as a more problematic group is programmers who have no idea what a screwdriver (or soldering iron) is for. Programs exist to interface with the real world in some way, and understanding the larger (sometimes analog or wetware) view can make the difference between an elegant, but useless, piece of code and something that changes the world.

  2. Well that makes sense by Kethinov · · Score: 5, Insightful

    Because of course one of the people involved in creating one of the worst management fads ever would also join the JavaScript hate train.

    "The Pragmatic Programmer." Hardly. Real pragmatism is recognizing that popular languages are often the best tool for the job, no mater how aesthetically distasteful they are.

    Ever notice how prolific JS users rarely defend the language? Of course it's badly designed. We use it because it's pragmatic to use the lingua franca of programming.

    What isn't pragmatic is using languages with declining market share because they feel aesthetically "better," or imposing horrible management fads like Agile/Scrum on your team against their will.

    So I'll pass on joining this guy's fan club.

    --
    You're right, I wouldn't steal a car. But if it were possible, I sure as hell would download one!
    1. Re: Well that makes sense by UnknownSoldier · · Score: 4, Insightful

      > All languages suck in various ways.

      Except JavaShit sucks worse. It was designed by a fucking moron in 10 days.

      JavaShit likes to masquerade it has native arrays but we can quickly dispel that notion via these tests:

      console.log( typeof 1 ); // native integer type
      console.log( typeof Math.PI ); // native constant floating-point number
      console.log( typeof "Hello World" ); // native string
      console.log( typeof [] ); // native array, right?
      console.log( typeof [] == "array" ); // sarcasm, this should work, right?
      console.log( Array.isArray( [] ) ); // Why is this needed??

      Which produces this output:

      "number" // OK -- so both integers and floating-point are treated the same way
      "number" // OK -- so both integers and floating-point are treated the same way
      "string" // OK
      "object" // Wut?? Why is Array returning object??
      false // There is no native array in JS
      true // WTF is the point of having a broken typeof if it doesn't work for arrays???

      How does JavaShit define concatenation with arrays? I mean, that isn't too hard to fuck up, right?

      console.log( [1,2] + [3,4] );
      console.log( typeof ([1,2] + [3,4]) );

      Out of the the 4 possibilities for a return type ...

      * The array [4,6] which is Vector or Matrix addition
      * The array [1,2,3,4] which is concatenation like [1,2].concat( [3,4] );
      * undefined -- Gee, one would think this would be expected, or
      * Throw an exception -- maybe even this one.

      ... guess what JavaShit does? It does a 5th retarded thing -- string concatenation!!

      "1,23,4" // <b>WTF!?!?!</b> Who is the fucktard that thought this would be reasonable??
      "string" // <b>WAT!?!</b> Idiotic type conversion to string!?

      --
      Only a complete and fucking moron defends JavaShit.

  3. Original submitter here by cerberusss · · Score: 4, Interesting

    Original submitter here... I just came here to compliment the editor (EditorDavid). This is my first time submitting and thought my summary was pretty good. But EditorDavid just went above and beyond, extending it with stuff from Twitter, couple of sentences on Andy Hunt's work ethic cetera.

    It's been tradition to hate at the editors here, but this time I have to hand it to them, compliments are in order.

    --
    8 of 13 people found this answer helpful. Did you?
  4. It's both because Javascript developed in 10 days by raymorris · · Score: 4, Informative

    As someone else said, often Javascript is the right tool for the job, because the job is manipulating DOM elements in a web browser.

    A major new future in Netscape 2.0 was that it had Scheme embedded, for scripting. Ten days before the public beta, it was decided that the Scheme effort couldn't be salvaged - it just wouldn't work. But Netscape's hype had promised embedded scripting. So in ten days Brendan Eich designed, coded, tested, and integrated Javascript. 10 days for all of that means he had about two days to design the language. It shows. Other languages have had years, or at least months, of design. Javascript had about two days. Eich did an amazingly good job, for weekend design project.

    Obviously Javascript has matured a bit since then, but its origin as the mother of all all-nighters, the crashiest of all crash projects, still shows in its design, its inconsistent naming of functions, etc.

  5. Re: Accidental complexity by UnknownSoldier · · Score: 4, Informative

    In JavaShit, variables can be used ANYWHERE in a function, even outside their _expected_ scoping.

    For example, weak scoping:

    function foo()
    {
        for( var i = 0; i < 3; i++ )
        {
            var bar = 42 + i;
            console.log( bar );
        }
     
        bar = 99; // An error in any sane language but JavaShit was designed by an moron so this is OK.
     
        bat = 99; // typo, but this OK in non-strict mode too, because JS is the new BASIC.
    }

    In contradistinction to C++ which has strong scoping:

    void foo()
    {
        for( auto i = 0; i < 3; i++ )
        {
            auto bar = 42 + i;
            printf( "%d\n", bar );
        }
     
        bar = 99; // ERROR: 'bar' was not declared in this scope
     
        bat = 99; // ERROR -- compiler catches this typo which is a potential bug being masked
    }

    Scoping helps prevent name collision and bugs.

    --
    Only an amateur defends JavaShit; professionals are too busy trying to work around the brain dead language designed in 10 days.