Snowsuit Zine // issue 10

Table of Contents

Object Oriented Programming is a Conceptual Deadend

Without a doubt, Object Orientation is the most widely used programming paradigm in the software industry right now and has been for a while. Every mainstream language supports objects in some way and many companies include interview questions aimed at determining one's ability to design in an OOP way. The TIOBE index lists Java, C, C++, C# and Python as the top five languages. Except for C all of these languages promote OOP as a selling point. Unfortunately, while OOP will continue to be used for a long time, it is conceptually dead. Almost all of the progress being made in OO languages is not pushing the cutting edge of OOP but rather moving away from it. There is little more that can be done to advance objects because they already do everything.

Over the years Object Oriented Programming has gained a significant mindshare and been the subject of much hype. Many will remember that OOP was hailed as the best way to reuse code and through encapsulation objects would allow for better management of complexity. A selling point of Ruby and Python was the claim that everything is an object, and this was good. Before one can attempt to tear OOP down, one has to define an object. As described in issue3, all that one sees in OO languages today boils down to a tuple containing an opaque state and a dispatch table. OO languages provides different ways of constructing this tuple, but they all come down to the same thing. CTM provides an excellent introduction to conceptually building objects from smaller primitives.

Looking at the latest release of Java, almost all of the attention it has gotten has been around two features that have very little to do with OOP: lambdas and streams. While anyone who has read the koan of master Qc Na knows, lambdas and objects are in many ways the same thing, however their addition in Java is a departure from its strict sense of OOP. The streams API is heavily influenced by composable functional programming primitives. There is very little OOP about streams.

What is happening is the realization that OOP is not the right abstraction. OOP does not represent how the world works and it does not represent how the machine works. Objects are also far too powerful. Each object is a whole computer. It can do anything and it can affect other objects in difficult to reason about ways. Tools such as Java streams gain their power by restricting what one can or should do with them.

OOP languages are not going to disappear and it's not clear that they are even dying. C++, Java, C#, Ruby and Python are all here to stay for a long time. Even if they moved away from OOP entirely, their legacy codebases easily have decades of life in them. The latest releases of these languages have made one thing clear, however: they have nothing left to learn from OOP. Even diehard users of OO languages are promoting the value of other paradigms in place of OO concepts. Much like how GOTO still exists but is generally considered to be the wrong tool for most problems, in a decade, it might not be unusual to hear someone say that the Java language is good "as long as you avoid the objects part".

Articulations

Investments In Artificial Intelligence

The VC community has been abuzz on some topics that have existed in science fiction for quite some time. In particular, artificial intelligence has once again become a popular topic of conversation.

It is clear that AI has not reached the heights that science fiction writers have longed for. Some would say it has outright failed, with 40 years of history supporting this claim. And yet, research and investment continues.

In spite of years of failure, AI may still find a way to succeed. Google and NASA created an official partnership in 2013 to explore what will be possible with AI when quantum computing arrives. Some researchers in the group believe quantum computing will unlock so much potential, beyond just AI, that humanity will be able to determine if it is alone in the universe. A bold claim, to say the least.

Humanity has gotten more realistic about what to expect from machines. Computers started beating the best human chess players a while ago. IBM produced a machine that could play jeopardy. In general, machine learning has produced machines extraordinarily good at scanning a huge solution space quickly and then picking out likely solutions. Humans are notoriously bad at this, which makes machine learning a welcome augmentation of human capabilities.

From the point-of-view of an investor, it is reasonable to think a fundamental upgrade in computing power from traditional machines to quantum machines might be needed to discover the missing leaps between where tech is today and sentient machines.

Robots, drones, and self-driving cars are more examples of ideas from science fiction that seem doable today. These devices probably don't require sentience to perform well. It was recently announced that drones could investigate a location and tie a rope bridge between two points. Self-driving cars are mostly required to go from point A to point B without hitting anything, and though this is a significant challenge. The tools for doing this are not too different from the tools that built Watson or Deep Blue.

Robots, drones, and cars will all arguably be dumb robots and will still be extremely valuable to their owners, whether by operating one or many. If we hold the view that robots are dumb, we can turn Elon's concerns about evil AI's into concerns about evil humans telling dumb robots what to do and his concerns start to seem plausible.

It isn't enough to think dumb robots are good investments. One should think about what dumb robots will make possible. For example, in a world of self-driving cars, owners won't have to park the car when they see a two hour movie. The car could instead be making money for its owner by renting itself out while their owner is busy. Perhaps we do this through Uber or perhaps through a company that doesn't exist yet.

Returning to the investor point-of-view, there may be at least a decade of dumb AI's that are very good at specific things. Some of these AI's will support platforms, which themselves breed network effects. Investors would be wise to not abandon their sensibilities to pursue opportunities that promise to science fiction's imagination a reality. They would, however, be wise to focus on AI's that cover the monotonous, error prone side of human thought. Further, AI may be in a good place to perform grunt work as it gets deployed inside robotic machines.

Monthly Consumption

Papers

  • Solaris Service Management Facility: Modern System Startup and Administration by Adams et al (2005) (link)
  • Architecture of Open Source Applications - nginx by Andrew Alexeev (link)
RSS