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
Tags: ,

This post was promoted to the Main Feed by a Ricochet Editor at the recommendation of Ricochet members. Like this post? Want to comment? Join Ricochet’s community of conservatives and be part of the conversation. Join Ricochet for Free.

There are 40 comments.

Become a member to join the conversation. Or sign in if you're already a member.
  1. Keith Lowery Coolidge
    Keith Lowery
    @keithlowery

    Henry Racette (View Comment):

    kedavis (View Comment):

    Henry Racette (View Comment):
    They also make it easier for the computer to optimize code to make it run faster or take up less space. The more the computer knows about your intentions, the more it can recognize bits of code that will never run, or tests that don’t need to be performed, or operations that can be re-ordered or combined. Computers have gotten really good at this.

    Computers have been PROGRAMMED to do that.

    Used to be. But most modern computers are essentially self-aware, reprogramming themselves in their idle moments.

    Fire up the Windows task manager some time and just sit there and watch it. All that stuff that happens while you’re doing nothing, not even touching the mouse? That’s your computer thinking. Learning. Growing. Becoming more… clever. And capable.

    One of these days, while we’re sleeping….

    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.

    • #31
  2. Keith Lowery Coolidge
    Keith Lowery
    @keithlowery

    I have practiced computer science for thirty years. What drew me to the field was the unlimited plastic power of digital computers: computers give you the power to dream up almost any machine you like, shape a simple version in modeling clay, and then flip a switch and watch it come alive. This naïve sounding vision is almost real, almost true. A good programmer can sit down at the keyboard and build a program – a working piece of software – with nearly the complexity of an aircraft carrier all by himself, to his own designs and no one else’s. The fact that you can achieve so much all alone is one good reason to be fascinated and terrified by computing. The field has always attracted sociopaths.

    I think I might look askance at any programmer who thinks what they’ve done approaches the complexity of an aircraft carrier, especially if you include the thousands of crew members.

    kedavis,

    As I read Keith’s note and your reply, it seems to me that Keith miscommunicated.

    I think that what he was trying to say was that a good programmer can sit down at the keyboard and build a program – a working piece of software – with nearly the complexity of an aircraft carrier all by himself, to his own designs and no one else’s.

    He didn’t mean, as I read him, to say that a good programmer can sit down at the keyboard and run an aircraft carrier all by himself.

    I don’t think the programs approach that degree of complexity. Some programmers may flatter themselves/each other that way, but I’d call it an illusion or delusion.

    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.

    • #32
  3. BDB Inactive
    BDB
    @BDB

    Henry Racette (View Comment):
    Fire up the Windows task manager some time and just sit there and watch it. All that stuff that happens while you’re doing nothing, not even touching the mouse? That’s your computer thinking. Learning. Growing. Becoming more… clever. And capable.

    And gossipy.

    • #33
  4. Mark Camp Member
    Mark Camp
    @MarkCamp

    kedavis (View Comment):

    Mark Camp (View Comment):

    kedavis (View Comment):

    Keith Lowery (View Comment):

    Henry Racette (View Comment):
    Given that software programs are probably the most complicated things ever assembled by humans, in terms of their number of parts and their interconnectedness, it’s hard for me to imagine automation taking over the job any time soon. I expect it will remain the domain primarily of bright, vaguely maladjusted males for the foreseeable future.

    @ henryracette

    Your comment reminded me of this quote from David Gelernter’s book The Tides of Mind.

    I have practiced computer science for thirty years. What drew me to the field was the unlimited plastic power of digital computers: computers give you the power to dream up almost any machine you like, shape a simple version in modeling clay, and then flip a switch and watch it come alive. This naïve sounding vision is almost real, almost true. A good programmer can sit down at the keyboard and build a program – a working piece of software – with nearly the complexity of an aircraft carrier all by himself, to his own designs and no one else’s. The fact that you can achieve so much all alone is one good reason to be fascinated and terrified by computing. The field has always attracted sociopaths.

    I think I might look askance at any programmer who thinks what they’ve done approaches the complexity of an aircraft carrier, especially if you include the thousands of crew members.

    kedavis,

    As I read Keith’s note and your reply, it seems to me that Keith miscommunicated.

    I think that what he was trying to say was that a good programmer can sit down at the keyboard and build a program – a working piece of software – with nearly the complexity of an aircraft carrier all by himself, to his own designs and no one else’s.

    He didn’t mean, as I read him, to say that a good programmer can sit down at the keyboard and run an aircraft carrier all by himself.

    I don’t think the programs approach that degree of complexity. Some programmers may flatter themselves/each other that way, but I’d call it an illusion or delusion.

    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.

    • #34
  5. Henry Racette Member
    Henry Racette
    @HenryRacette

    Mark Camp (View Comment):

    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.

    • #35
  6. Mark Camp Member
    Mark Camp
    @MarkCamp

    Henry Racette (View Comment):

    Mark Camp (View Comment):

    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 ;-)

    • #36
  7. WillowSpring Member
    WillowSpring
    @WillowSpring

    Keith Lowery (View Comment):

    The fact that you can achieve so much all alone is one good reason to be fascinated and terrified by computing. The field has always attracted sociopaths.

     

    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.

    • #37
  8. David Foster Member
    David Foster
    @DavidFoster

    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?

    • #38
  9. Henry Racette Member
    Henry Racette
    @HenryRacette

    David Foster (View Comment):

    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.

    • #39
  10. Mark Camp Member
    Mark Camp
    @MarkCamp

    Henry Racette (View Comment):

    …typically  vi.

    I always knew you were a Mensch. But never how much of a Mensch.

     

    • #40
Become a member to join the conversation. Or sign in if you're already a member.