Ricochet is the best place on the internet to discuss the issues of the day, either through commenting on posts or writing your own for our active and dynamic community in a fully moderated environment. In addition, the Ricochet Audio Network offers over 50 original podcasts with new episodes released every day.
Work Thought (of Decidedly Limited Interest)
I write software. I do a lot of my work using Microsoft Visual Studio, what we programmers call an IDE — an Integrated Development Environment. Visual Studio is, in my professional opinion, a pretty fantastic product, the best IDE available for general-purpose programming.
The most recent version of this product contains a “code completion” feature. That is, the program kind of looks over your shoulder while you’re working, makes note of what you’re doing, and occasionally offers to finish whatever it is you’re in the process of typing, based on its assumptions about what you’re trying to do.
(Forgive me for anthropomorphizing it but, if there’s any non-living thing that invites anthropomorphizing, it’s artificial intelligence.)
This is something I’ve thought about for years, and something I’ve long thought I might enjoy having — but I never really expected it to be worth using. Frankly, it’s barely up to that point now, but it is pretty good. Surprisingly good.
And, unlike with self-driving cars, no one gets run over if it makes a bad call.
I was typing a bit of code this evening, something to do with generating “tool paths” — instructions to guide a numerically controlled milling machine. I’d typed this bit of code:
if (elem.X > feat.Width)
elem.X = feat.Width;
I then typed the following:
if (elem.Y
and, before I could type anything further, the IDE suggested this:
if (elem.Y > feat.Height)
which is in fact what I intended to type. I accepted that, and it completed the next line for me as well, entering:
elem.Y = feat.Height;
Now it isn’t a great leap of intuition to guess that, if I’m comparing an ‘X’ value to a ‘Width’ in one place, then I’m likely to compare a ‘Y’ value to a ‘Height’ soon after. But I still think it’s impressive.
I tried typing the same thing, “if (elem.Y”, on the line above the “if (elem.X” line, and the IDE had no suggestion for me. Apparently it reads the code in the same order I do, and it was basing its prediction on my previous action, not some fairly obvious assumptions about the terms X, Y, Height, and Width.
Okay, so it isn’t rocket science. But it’s a harbinger of things to come — a harbinger of my eventual obsolescence, perhaps. I don’t know what comes after “learn to code,” but I’m sure someone is thinking about it.
Published in Science & Technology
I’ll add to this. Many modern computers haven’t exactly “been PROGRAMMED to do that“. They’ve often been programmed to discern what that is.
Machine learning and AI, in the form of neural networks, are really just statistics. But the steep decline in the cost of storage, memory, and bandwidth over the last 30 years has made statistical analysis, at a scale that was historically cost-prohibitive, possible. This “learning” ability (i.e. synthesizing statistical features of highly complex interactions with the real world) is altering the way some software is designed. It is evolving from being “PROGRAMMED to do that” to having the “that” itself be much more elastic than was reasonably achievable in the past. In essence, linear algebra is eating the world.
FWIW.
Not to be pedantic, but I myself didn’t really communicate anything. I merely quoted David Gelernter. Having said that, I doubt Dr. Gelernter was actually trying to make a quantitatively correct statement. More likely trying to illustrate something about the power of programming by individuals.
I myself would be loathe to contradict David Gelernter on matters of software. He is an astonishing polymath, widely regarded as a leading expert in the world in parallel programming. Yale professor. Accomplished artist. Musician. Author. An important guy in his own right and one of the original targets, as it happens, of the Unabomber. (His book about that experience is a wonderful thing to read.)
I confess the thought of reducing his literary illustration to an actual quantitative analysis never crossed me mind.
And gossipy.
Sorry, I completely miscommunicated. I didn’t communicate anything that I meant, and everything that I did communicate, I did not mean.
I meant to reply to your comment, which had nothing to do with the complexity of programming. I didn’t mean to communicate anything else.
What we have here is a failure to communicate.
And a minority immigrant with outlandish behaviors (me) whom you have taught how to translate our string of exotic native hieroglyphs, “What we have here is a failure to communicate”, into a sentence that is not taken as an insult in the mainstream culture ;-)
This is an ironic quote by Gelertner. I have (and enjoyed) his book on Parallel Computing. He has also written about baseball, but I don’t think many in computing (or baseball) know he was a victim of Ted Kazynski (The ‘Unibomber’) – a true sociopath.
Seems like it would be easy for the autocomplete to misinterpret the programmer’s intentions and for the programmer to miss what it had done…as we see all the time with autocorrect. If the program is controlling a machine tool or other physical device, the consequences could be….interesting. Have you ever encountered this?
Also, does Studio know what language you are using…presumably in this case some CNC language…or is it just analyzing strings of characters?
David,
The auto-complete is presented as an option that’s easy to ignore — just keep typing what you really want. I almost never use whatever suggestion it makes, because it’s always only a little bit of text and I’m a fast typist: it’s easier to just ignore it and keep typing.
The program knows what language I’m using. In this case it was C#, which is a Microsoft spin-off of C++. When I code for a specific controller in a proprietary language, I usually use a conventional programmer’s text editor, typically vi.
I always knew you were a Mensch. But never how much of a Mensch.