1. 4
  1.  

  2. 4

    I’m generally not a fan of Uncle Bob, but this claim in particular is probably the strangest I’ve heard from him:

    The reason we have Clojure, Elixr, Swift, Dart, F#, Scala, and Go today is the sheer raw power of our machines. It is that power that enables Eclipse, Vim, EMacs, and IntelliJ.

    …I didn’t realize Vim and “EMacs” were so power-hungry.

    Okay, on to the real claim:

    So what is it that drove all this language evolution? It should be quite apparent that the current state of our languages can be traced directly to Moore’s Law: the fact that computer speed, component density, and memory size doubled every 18 months; while at the same time, size, cost, and power consumption changed just as dramatically in the opposite direction.

    I also didn’t realize that people made new languages because they had faster computers. Unlike, say, “people made new languages because they wanted to have different tradeoffs, and with faster computers trading off performance for safety/scalability/friendliness/GUIs is more feasible.” That explanation sounds a lot better. It also means that language innovation will go on just fine even without Moore’s Law “propping it up”. It also isn’t completely undermined by the existence of, like, Rust.

    1. 2

      …I didn’t realize Vim and “EMacs” were so power-hungry.

      Ha! Your youth (relatively speaking) and Uncle Bob’s age is showing. :-)

      Back in the day emacs was regarded as a resource hungry monster (pretty much the way eclipse was regarded a year or two ago). (Even now I doubt if you can run eclipse without enabling extra memory beyond the default allowed by the jre)

      And yes, I do remember a time when resources available determined the languages you could use.

      Bob has a point, a small point, a weak point, but a valid point.

      Even now as we enter the age of $1 IoT tiny CPU’s, we are still constrained to the likes of C.

      1. 1

        I also didn’t realize that people made new languages because they had faster computers.

        I am also not generally a fan of Uncle Bob these days, but I think there is some truth to the idea that faster computers enables the widespread acceptance/use of more expensive language features, such as garbage collection and interpretation.

        That said, I think Uncle Bob is confusing correlation with causation.

        1. 3

          Ignoring such things as p-code, etc.

          1. 2

            but I think there is some truth to the idea that faster computers enables the widespread acceptance/use of more expensive language features, such as garbage collection and interpretation.

            Exactly what I’m thinking, “people made new languages because they wanted to have different tradeoffs, and with faster computers trading off performance for safety/scalability/friendliness/GUIs is more feasible.” :P

          2. 1

            EMacs

            Never heard of Eight Megabytes And Constantly Swapping?

            8 megs of RAM obviously. And yes, I’ve been there, having had to scrounge 2M extra ram to install Debian from floppies…

          3. 3

            So apparently people think power consumption has been going down. Did you know the original Xeon had a TDP of 30W?

            1. 2

              I, for one, hope so. I, for one, look forward to the end of the barnstorming era and the onset of the era of professional, and ethical craftsmanship. An era where we discard the detritus of the excesses of our youth, and settle upon a small complement of languages, platforms, and frameworks, with which to carry out the long work that is ahead of us.

              You’re getting Old and Stiff Uncle Bob.

              Alas, you have forgotten two facts.

              As the years advance the programs we maintain get bigger and kruftier.

              We need, desperately, tools to help us understand the global properties of these programs, and improve them. (Hint: That’s one of the reasons I have given up hope for C++, and still keep and eye on Clojure.)

              As the years advance, the CPU’s have become faster, and RAM & disk bigger……

              …our poor creaking old noddles haven’t advanced a bit.

              We need every bit of assistance we can get.

              If someone offers my aging noddle a language (or paradigm) that is more readable, simpler, consistent, expressive language…..

              …and fits my resource requirements.

              I’m grabbing it.

              Oh, remember your waffle about Moore’s Law?

              That’s crap.

              It’s going the other way.

              I have maybe a dozen different computers on my desk ranging in cpu power and ram from really grunty server grade to $1 less than your little finger nail.

              And the business end will always be pushing me hard to make the products mechanically smaller, cheaper unit costs, longer battery life.

              Always.

              No matter what Moore’s Law gives us.

              1. 2

                In case you live at the server end of the CPU spectrum….. and hence think Moore’s Law has made life all roses and MFlops…

                …here is a glimpse into my world.

                https://jaycarlson.net/microcontrollers/

                1. 2

                  Even if hardware were to stagnate, there is plenty of room for new languages. One reason is that the social/cultural spread of computers has also been driving change: programming started as mostly numerical calculations for the military, but we’re using it for so much more of our lives today.

                  Most of the programming approaches we’re using today date back to the 1970s or earlier, when computers weren’t as ubiquitous, mobile, wirelessly networked, etc. We weren’t using them as our primary means of communication, media consumption, reading and writing, etc. Not to mention IoT, AI/ML, etc. (which I see as overly-hyped at the moment, but probably will become very important, probably about the time they become mundane :) ).

                  Such a shift in context will be a fertile ground for new ways of thinking, representing and describing our problems and solutions, which is what programming languages are all about.