1. 16
    Blue. No! Yellow! c java programming blog.cleancoder.com

  2. 21

    Again showing that Bob really has no idea what he’s talking about.

    1. 1

      Oh, gosh, no! Where would you get an idea like that?

    2. 11

      So this is just some random numbers with no substantiation. Why would anybody upvote this? It adds no value whatsoever.

      1. 5

        By substantiation, do you mean empirical measurement or explanation? I thought the post was quite long winded, but it doesn’t seem the point was to calculate the efficiency factor of ruby accurate to three decimal places.

        1. 8

          I mean measurement. Without measurement, what’s the point of including numbers? What’s the value of the conclusion in this article if it’s essentially based on random numbers? I can draw the opposite conclusion by choosing my own random numbers. All I need to say is: “Hey! Scala or F# or Haskell give me a 10x advantage. There, he’s wrong!”. What can we learn from this, and what kind of discussion can we have about it?

          1. 2

            Well, the entire thesis was based around these numbers. Which he pulled out of thin air as far as I could tell, judging by the citation count. …if you pull out the base premise of an argument, it doesn’t work any more. He also ignored all the higher-level concerns of project appropriateness, system design, and other aspects of software development.

            I largely disagree with his conclusion, but I can’t even have a reasonable interchange of ideas with the article, because it is fundamentally flawed in reasoning.

        2. 6

          This was really difficult to read for no apparent benefit. Yuck!

          1. 5

            Hmm. I think he is missing something.

            It’s not just language. It’s size of system that’s interesting.

            What really killed hand coded machine code wasn’t just symbol look up (people soon memorised the instruction codes). It was alterations. Make a change, recalculate lots of offsets.

            If I upgrade my Ubuntu system I see this vast parade of packages upgrading…. some of them are upgrading the tools that are doing the upgrading.

            And it just works.

            I can gain a Huge bundle of functionality by going “sudo apt-get install postgresql”, or any one of the 54000 packages I care to name.

            Clojure and Erlang suddenly become compelling, not interesting, but compelling at the “many threads” point.

            Size, complexity, change kill off weaker languages / systems.

            Legacy, history keep them on life support long after they should have been put out of our misery.

            Let me make a wild prediction.

            Not too wild actually…. Those who remember Fortran 2 will know how enormously it has evolve since then.

            I came in at the Fortran IV point, but there were still many Fortran 2 piles of shit lying around.

            Eventually a truly automatically analyzable and refactorable language will come along… Let’s call it “Rewrite”.

            And any program written in “Rewrite” can be automagically updated to be cleaner, safer and work with the latest version of “Rewrite”.

            And then somebody will start writing a Fortran/C/C++/Ruby/* to “Rewrite” compilers….

            1. 5

              A part of the thing not took account was the reducing of the bug number when going in a higher language

              1. 2

                I was annoyed by the idea that removing the need for programmers to use types was a strictly positive change.

              2. 8

                Short cycles don’t help you if you don’t know where you’re going. They don’t help you if your language is so unexpressive for your problem domain that each cycle represents an minuscule amount of work.

                In fact, I would go so far as to make the (unpopular) assertion that shortening cycles has absolutely no use past the point where you aren’t twiddling your fingers waiting for the compiler and watching your mental context slowly drain out of your head.

                What about architecture, though? What about designing for maintainability, or managing state, or optimizing for performance along critical paths, or inventing APIs that are specific enough to be easy to reason about yet abstract enough to allow consumers to use them seamlessly, or verifying code correctness, or protecting code against malicious attackers, or any of the other hundreds of concerns that a software engineer is going to have to face while practicing her discipline of software engineering? Don’t these things matter? Shouldn’t there be at least some discussion about the role the tools of an engineer play in allowing her to practice her craft in a way that is technologically and socially responsible?

                You know what? Throw out all the drugs, medical instruments, X-ray machines, and years of medical school. We’re going back to trepanations and bloodletting.

                1. 4

                  I keep forgetting that programmers never have to do maintenance of any kind because they only ever write perfect code.

                  1. 1

                    He’s really saying compiling and running a java program is a matter of milliseconds? I just tested compiling a hello world program; takes a second to compile. Around 3 seconds to compile ~900 lines. Back when I played with minecraft mods, compilation took tens of seconds. That’s very different from Ruby’s few milliseconds, especially if he’s right about wait times being exponential.

                    1. 2

                      Modern Java IDEs have hot-compiling incremental compile systems which mean you’re always up to date. Pretty nifty IMO!

                      1. 1

                        Apparently IntelliJ IDEA isn’t a modern IDE, as it takes about half a minute to compile the simplest android app on my desktop with a 4770k.

                        1. 1

                          Why was this marked as a troll comment? What’s incorrect about it?

                          1. 1

                            Huh… haven’t had that experience with a (very small plain java) program. Be interesting to see what a hot-compile comparison would look like.