Software evolves by natural selection

Software evolves by natural selection, not by intelligent design. It is a massive trial-and-error process. There are many thousands of programmers working every day to build new things in the hope of replacing the old…

From time to time, you will hear about a new fantastic piece of computer science. For example, right now deep learning is the hot new thing. Some years ago, people were very excited about MapReduce.

As an ecosystem changes, some tools become less likely to be useful while others gain dominance in common use cases. So, because of a myriad of other changes, deep learning is suddenly a lot more useful than it would have been 10 years ago. Deep learning is great to classify pieces of data like images, given that you have the kind of computing power a modern GPU offers. Decades ago, we had much less data, and nothing like a modern GPU, so perceptrons (the ancestors of deep learning) were useless.

What does it mean for the programmer? If software advances by trial and error, then the more quickly you can move and adapt, the better are your chances. It also becomes important to anticipate changes and to try many things. Trial-and-error is an underrated approach in software.

You will do doubt object that you are using the latest stuff… maybe it is deep learning running on the sexiest big-data framework (e.g., Apache Spark) with the fanciest programming language. So you are set, right? Maybe but be concerned that even a brand new bus turns slowly. Don’t be a bus.

So what is the software of the future? Where should you place your bet?

I have been making a boring prediction for more than a decade, and it has served me well: we will have more data. We should think about what could become possible if we were given 10x as much data and 10x as much processing power. What kind of software would we need then?

It is a safe bet that current PC architecture cannot cope. So do not get too attached to it.

Published by

Daniel Lemire

A computer science professor at the University of Quebec (TELUQ).

19 thoughts on “Software evolves by natural selection”

  1. What do you mean by that, when you say, the current pc architecture cannot cope? We already do not rely on a single pc anymore. Or do you mean, when you have one chunk of data, that this nothing anymore, that one pc with the current architecture can cope with?

    thx

    1. The way I interpreted that is, “Learn AWS or similar cloud computing services”, because they are a more scalable solution for the near future. Your PC will get exponentially obsolete as time passes.

      1. It goes without saying. Microsoft did not include Linux (sort of) in Windows 10 for fun. But I’d like to stress also that Visual Studio now ships with clang, so you can build software for non-PCs (e.g., Android devices).

    2. What do you mean by that, when you say, the current pc architecture cannot cope? We already do not rely on a single pc anymore.

      The current PC architecture is very mature and well optimized. The downside of that is that we have reached a local maximum in many cases. If you look at the progress made in PCs during the last few years, setting aside GPUs, it is not exactly impressive. Meanwhile, the latest iPhone, a non-PC system, has nearly caught up with the performance of a modern-day laptop. If you look at the sales statistics, you will notice that we have reached “peak PC” some time ago. We are no longer building as many PCs as we used to. We are on a plateau. If you look at all computers being built today, there are many more non-PC computers than PC computers, and the gap is widening increasingly fast.

      1. Modern-day laptops are more about better displays, faster disks, faster connections, and low power usage than about raw power. It seems that either widely used software cannot take advantage of better hardware, or there is just not enough demand for more powerful laptops.

        Servers often have an order of magnitude more CPU cores and two orders of magnitude more memory than laptops, while using essentially the same architecture. We will eventually reach the limits of PC architecture, but laptops and desktops are still far from them.

        1. A PC is basically a motherboard with an x86 processor and a few distinct RAM chips. Throw in a hard drive. It has been the dominant platform since the fall of Unix.

          How well is it doing?

          Intel’s capitalization has basically been stagnant for the last 15 years (save for a small bump about 5 years ago). Dell is down a whopping 75%. AMD is basically dead, except for their GPUs.

          The most successful tech company right now is Apple. A good 75% of its profits come from mobile computing. Apple designs its own silicon.

          A fast growing segment is the Internet of Things where the PC is basically nowhere to be seen…

          1. I thought this was about the PC not coping with the increasing amounts of data. I agree that it will become increasingly irrelevant to the end users.

            Apple is probably not that relevant in the long term. It’s becoming a consumer electronics company, with little interest in computing in general. Apple was never interested in the back end, and now it’s also leaving content producers and niche markets to other companies.

            The Internet of Things is one of the most dangerous ideas the humanity has ever had, probably on a par with nuclear weapons. We’ll need a heavily regulated Internet or the civilization won’t be able to survive it.

            1. I thought this was about the PC not coping with the increasing amounts of data. I agree that it will become increasingly irrelevant to the end users.

              I think it is that also. For example, PCs are not designed for deep learning or machine learning in general. Nvidia is much smaller than Intel, but it has been growing much faster recently.

              And even within Intel’s product line… Something like a Knights Landing machine is not really a PC anymore… as a first approximation, it can be treated as a PC, but there are many differences. It is really more a cluster of mobile processors.

              Apple is probably not that relevant in the long term. It’s becoming a consumer electronics company, with little interest in computing in general. Apple was never interested in the back end, and now it’s also leaving content producers and niche markets to other companies.

              Dell once mocked Apple, when it was multiple times larger than Apple. Today, Apple is worth multiple times Dell… and not because people are buying Macs… because people are buying iPhones.

              I don’t know that Apple is unaware of the importance of the backend. I think it is more an issue of focusing on their strengths.

              You can choose to consider a smartwatch something that is not part of computing… but I think you’d be wrong.

              The Internet of Things is one of the most dangerous ideas the humanity has ever had, probably on a par with nuclear weapons. We’ll need a heavily regulated Internet or the civilization won’t be able to survive it.

              Well. It has arrived.

              1. If you’re coming from the server side, Knights Landing feels like an incremental change. You get more cores (but not that much more) and a decent amount of memory. The cores are general-purpose x86 cores, even if they are slower than the usual. Knights Landing might be useful in bioinformatics, where GPU computing has not really taken off. GPUs still have too little memory, and it’s usually more cost-effective to buy traditional hardware than GPUs for bioinformatics workloads.

                Apple is definitely focusing on something, but not just on their strengths. They’re no longer interested in Macs, except as consumer devices. Mac Pro has been abandoned for years. While MacBook Pro used to be one of the best high-end laptops around, the latest models are no longer high-end due to the compromises in GPU performance and memory capacity.

                1. @Jouni

                  If you’re coming from the server side, Knights Landing feels like an incremental change.

                  My point was that even Intel recognizes the need to break the mold.

                  The Atom cores in Knights Landing were meant for non-PC uses. Intel failed to get a foothold in mobile computing, and they are (wisely) recycling their technology into new architectures.

                  Apple is definitely focusing on something, but not just on their strengths. They’re no longer interested in Macs, except as consumer devices. Mac Pro has been abandoned for years. While MacBook Pro used to be one of the best high-end laptops around, the latest models are no longer high-end due to the compromises in GPU performance and memory capacity.

                  Why would you think that Macs are Apple’s strength right now? Macs are PCs with a different operating system… PC sales have flatlined, if not declined, for years now.

                  Look at the market. Dell was the giant… it has been in a free fall for years. Apple did a bit better, but they can’t expect to go against the general trends in the market forever.

                  The days of the PC era are numbered.

                  1. Apple sells iPhones, Macs, iPads, and other devices, in that order. (Tablet sales have been declining in general, as phone screens have grown larger and lightweight laptops have become better.) If Macs are no longer Apple’s strength, then Apple is a company with just a single strong product.

                    What I think is happening is that Apple is abandoning the “producer” market. That’s a market where the PC will remain strong, as people still need large screens, a variety of input methods, and the ability to connect to external devices, which may remain in service for decades. While the PC has been declining as a consumer device, there are no serious alternatives to it for “producers”.

                    There are also some consumer markets where the PC remains strong. For example, while consoles almost killed PC gaming some time ago, PC games now generate more revenue than mobile games and console games together.

                    1. Apple sells iPhones, Macs, iPads, and other devices, in that order. (Tablet sales have been declining in general, as phone screens have grown larger and lightweight laptops have become better.) If Macs are no longer Apple’s strength, then Apple is a company with just a single strong product.

                      Apple is pretty much the IPhone company. Please see https://www.statista.com/statistics/382260/segments-share-revenue-of-apple/.

                      Note that I am not making any particular prediction regarding Apple. I do not own Apple stock.

                      What I think is happening is that Apple is abandoning the “producer” market. That’s a market where the PC will remain strong, as people still need large screens, a variety of input methods, and the ability to connect to external devices, which may remain in service for decades. While the PC has been declining as a consumer device, there are no serious alternatives to it for “producers”.

                      IBM still makes money selling mainframes. I still use a “radio” (FM radio) every day. People still use paper.

                      The fact that some mature technology is going to remain around a long time is an easy prediction to make.

  2. We are more and more heavily reliant on cloud computing and always present networks. My phone doesn’t have to get any faster. It may get better microphone, speakers and sensors – but it is basically my connection to vast data and AI resources. The Google Home device (which I am really thinking to get for christmas) is the future of computing for the masses.

  3. If someone had said 20 years ago that the average citizen of the US would have access to the worlds’ data all searchable with incredible speed by the worlds largest computer array – for free, with a pocket device – I think most people would have laughed.

    1. @Jouni

      If you’re coming from the server side, Knights Landing feels like an incremental change.

      My point was that even Intel recognizes the need to break the mold.

      The Atom cores in Knights Landing were meant for non-PC uses. Intel failed to get a foothold in mobile computing, and they are (wisely) recycling their technology into new architectures.

      Apple is definitely focusing on something, but not just on their strengths. They’re no longer interested in Macs, except as consumer devices. Mac Pro has been abandoned for years. While MacBook Pro used to be one of the best high-end laptops around, the latest models are no longer high-end due to the compromises in GPU performance and memory capacity.

      Why would you think that Macs are Apple’s strength right now? Macs are PCs with a different operating system… PC sales have flatlined, if not declined, for years now.

      Look at the market. Dell was the giant… it has been in a free fall for years. Apple did a bit better, but they can’t expect to go against the general trends in the market forever.

      The days of the PC era are numbered.

    2. If someone had said 20 years ago that the average citizen of the US would have access to the worlds’ data all searchable with incredible speed by the worlds largest computer array – for free, with a pocket device – I think most people would have laughed.

      Yes. You are right.

    3. Having been around at the time :), I can say that most people back then would not have laughed. Instead, they would have wondered why it took us so long.

      For example, in 1993 AT&T ran a very high-profile series of advertisements (the “You Will” series) bragging that they would basically roll out stuff like videoconferencing, pocket GPS, telemedicine, Siri-style personal assistants and so on in the next few years.

      The main things these ads got wrong were that (a) it took 20 years instead of 5 to actually ship, and (b) it wasn’t AT&T that delivered these technologies.

      1. Speaking for myself, back in 2001-2002, I thought people were mad to think that, soon, videoconferencing would be everywhere. You have to recall that, at the time, people bought videoconferencing stations at 50k$ a piece with dedicated Internet connection (from a priori designated end points). There were expensive projects in remote medicine or remote education. Back in 2002, there were bleeding edge: expensive and difficult.

        Ten years later, everyone could use Skype. Today we basically have videoconferencing too cheap to meter. I think it is easy to say that you expected it, in retrospect. We have a selective memory, we forget about all the things we failed to see.

Leave a Reply

Your email address will not be published.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

You may subscribe to this blog by email.