Live data from Hacker News

Why programming is a good medium for expressing poorly understood ideas (1967)

web.media.mit.edu

61–70 of 70 posts

Re: Why programming is a good medium for expressing poorly understood ideas (1967)

#61
post #38
post #8

Earlier quoted context omitted.

Tacit knowledge is a useful concept not mentioned by Minsky. I don't think programming is really a good way of expressing a "poorly understood and sloppily formulated idea" of this type: a third party's visual experience and verbal description of a skillful but complex human action such as shearing a sheep. The old philosophical distinction between the discursive and the intuitive is key here. Can you systematically…

Maybe you're familiar with Dreyfus's critique of "cognitivism" in AI, as explained in his book What Computers Can't Do . His recent article "Why Heideggerian AI Failed" is also relevant... and his book on Heidegger, Being-in-the-World , which has some philosophical background for his anti-cognitivism.

I wasn't familiar with Dreyfus' work. Thanks.

Recently I noticed a parallel between Antoine de Saint-Exupery's comments on technology and Heidegger's notions of presentness-at-hand and readiness-to-hand. It's in his essay "The Tool", which also includes the famous line about perfection being achieved when there is "nothing left to take away."

Saint-Exupery has a profoundly romantic attitude to technology: I'm not sure about the order of publication but it is a fact that Heidegger applauded Saint-Exupery's Petit Prince, and apparently Sartre felt the two men's philosophies were related.

http://www.wesjones.com/wind%20sand%20stars/wind%20sand%20st...

(Apparently the controls of the Lockheed Lightning, the aircraft type in which Saint-Exupery died, were too complex for his taste, turning the pilot into an "accountant" rather than receding from conscious attention, as the primitive instruments of earlier, simpler planes had. Saint-Exupery clearly saw the purpose of "the tool" as facilitating his experience (and responding to his personal "authority") as a free spirit of the air, without much thought given to the constraining military command hierarchy or the pilot's job of killing.)

Re: Why programming is a good medium for expressing poorly understood ideas (1967)

#62
post #43
post #12

Earlier quoted context omitted.

One time, in university I did not have access to a computer for a couple of days and had to write code for a b-tree in C++. I designed and wrote the code fully on paper and when I got access to a computer, I typed it in and it worked! I think that was my peak.

>I think that was my peak. Have you tried to recreate that peak? I'm wondering if it worked so well why you might not have continued working in that mode?

My statement was a little tongue-in-cheek but that was the first time I felt the raw power of my mind. I still feel it now, but it doesn't have as much of an impact as it did then. It's probably what everyone feels when they are in the zone.

So now, I will walk around doing nothing for 4 to 5 hours to let my brain work on a problem, then type it in and have it work in 10 minutes. I do this same thing with design, not just code. I've noticed that coding has become a lot easier as a result.

I still get stuck when I'm dealing with other people's bugs though, especially with third party libraries.

One I've noticed is that being in my head so much makes it more difficult to explain things to other people and I think this hurts me.

Re: Why programming is a good medium for expressing poorly understood ideas (1967)

#63
"We must not fall into anthropomorphic ways of thinking about machines; they do only what their programs say; they can't be original or creative." In debunking this fallacy, I would have thought that the "Computers Are More Flexible Than You Think" argument wold only need to go halfway, and "Brains Are Less Flexible Than We Think" could take us the rest of the way there. Of course, in 1967 I imagine the support for the second argument was much thinner than it is now.

Re: Why programming is a good medium for expressing poorly understood ideas (1967)

#64
post #61
post #38

Earlier quoted context omitted.

Maybe you're familiar with Dreyfus's critique of "cognitivism" in AI, as explained in his book What Computers Can't Do . His recent article "Why Heideggerian AI Failed" is also relevant... and his book on Heidegger, Being-in-the-World , which has some philosophical background for his anti-cognitivism.

I wasn't familiar with Dreyfus' work. Thanks. Recently I noticed a parallel between Antoine de Saint-Exupery's comments on technology and Heidegger's notions of presentness-at-hand and readiness-to-hand. It's in his essay "The Tool", which also includes the famous line about perfection being achieved when there is "nothing left to take away." Saint-Exupery has a profoundly romantic attitude to technology: I'm not sur…

Thanks for the link! I didn't know that was the context for that famous quote, and it was a nice read. It seems that we so seldom get to experience that kind of perfection in software, which is always tangled up and half nonsense. It really is a wonder that anything works.

To me, the ideal of "abstraction" in software has to do with this search for unity, on a conceptual level. Unix with its files and processes seems to come pretty close to being this kind of dependable, understandable, cohesive abstraction... which is why I love shell scripting so much. Sure, it's not the most beautiful language, but the basic building blocks make sense in some almost timeless way.

Digressing further, I'd really love to work on a cleaner shell language. Like, Perl is an exploration of what happens if you write your scripts in a souped-up awk, but what I really want is a bash for us new kids, with good support for nested data structures, functional patterns, some more clever ways of representing background processes and FIFOs, modules and packages, etc etc.

I forget how I got from Heidegger to FIFOs, but yeah, a ready-to-hand shell that works well with common tasks like serving HTTP and building JSON and stuff. I love the Unix philosophy but people aren't really learning shell these days... something like it seems like a way forward... composing simple programs... ah!

Re: Why programming is a good medium for expressing poorly understood ideas (1967)

#65
post #23

Earlier quoted context omitted.

Yes I learned how to program on paper. It was when computer access was expensive. We learned how to write code on paper and then go over each line with a table for variable values as we run over the code. I learned BASIC on punch cards using an IBM Mainframe for the junior high school math computer club, and it got changed to the math contest club after they couldn't afford computer time anymore. In modern times ther…

Do you still do any programming on paper? I've noticed I've occasionally felt like I've relied too much on my tools like my IDE or Resharper. I've been thinking I should get in the habit of doing some programming using just a simply text editor or pencil/paper to prevent that.

I have a paper notebook that I used to design data tables and pseudo code for projects I wanted to work on.

I misplaced it, I would work on it from time to time while riding on a Metrolink train. It is either in my house somewhere or someone stole it.

Re: Why programming is a good medium for expressing poorly understood ideas (1967)

#66

My programming lecturer used to say "programming is the process of breaking a problem down so a high speed idiot can understand it, if you don't understand the problem then you can't explain it". He also said that a programmers most useful tool was a pencil and a 5mm square A4 pad. After years of solving thorny problems by getting away from the screen and scribbling in a pad I can't say he was wrong.

Interestingly, it seems based on my limited understanding of many AI and machine learning techniques that these techniques don't really follow the rule. If you train an artificial neural network to recognize certain photographs, you don't really understand what is going on. You know how the artificial neurons work, and how the training process works to apply weights to various connections between neurons, but you don't really know in precise terms what is going on any more than you do with a biological neural network.

I don't know what the implications of this are, or even if my simplistic understanding is accurate, but it does seem interesting.

Re: Why programming is a good medium for expressing poorly understood ideas (1967)

#67
post #46
post #39

Earlier quoted context omitted.

This is good encouragement for me to try using pen and paper again. The problem is that every time I do, I get frustrated by how slow it is for me, my hands get cramped, and I miss the backspace key. But perhaps I just need to keep at it for a bit, because I do see (and have experienced, back in college) the advantages.

The backspace key equivalent of pen and paper is crossing things out/erasing them. If there's a line of writing I don't like, I'll cross it out and start that piece over. If you want to get faster and better at sketching diagrams I'd recommend you practice some of the basic techniques that say concept artists use. Straight lines from the elbow with little wrist movement and a little practice, and you'll be drawing th…

> But I do think coding and thinking through problems on paper is a valuable skill. One neat thing it allows you to do is to go to a different place than the one you type things at to go think deeply about problems, because it's a lot more portable than a laptop.

Drawing the problem is also useful because it focusses different parts of your brain on the problem. If the problem was easy to solve with just the more linear textual parts, you probably could just have sat down and coded it.

But if that's not enough, engaging the visual and spacial parts can help you understand the solution without being able to verbalise it (ie code it) yet.

Re: Why programming is a good medium for expressing poorly understood ideas (1967)

#68
post #60
post #56

Earlier quoted context omitted.

Your comment just made me realise why I hate any hackerrank "challenges" I have looked at. (Skyscanner uses them for interview tests, I have been close to applying twice, but got offered other jobs before I got around to completing them). I have decided to try a warm up exercises a couple of times before applying but the way they word the questions is so unmeaningful: 'n' lines with y variables, plus spending 20 minu…

All right, so nowadays software engineers cannot read specifications, cannot program and correct their mistake without a debugger, cannot do anything without an IDE, cannot do anything without copy-pasting (from SO) and read their data from a database. Jesus, please send me back to XXth century.

Sure I can but I don't have an hour and a half time limit on it under normal circumstances.

You want me to do something in a rush give me the tools I am used to. Should I code in C rather than python just to prove I can?

Re: Why programming is a good medium for expressing poorly understood ideas (1967)

#69
post #66

My programming lecturer used to say "programming is the process of breaking a problem down so a high speed idiot can understand it, if you don't understand the problem then you can't explain it". He also said that a programmers most useful tool was a pencil and a 5mm square A4 pad. After years of solving thorny problems by getting away from the screen and scribbling in a pad I can't say he was wrong.

Interestingly, it seems based on my limited understanding of many AI and machine learning techniques that these techniques don't really follow the rule. If you train an artificial neural network to recognize certain photographs, you don't really understand what is going on. You know how the artificial neurons work, and how the training process works to apply weights to various connections between neurons, but you don…

Well, one implication is quite obvious. Using ML-techniques you are sometimes able to solve a problem even if you don't have a precise idea of how you would do it. I feel that's part of the point, really.

[Edit: Elaboration]

In ML, you effectively transform your problem from "What piece of code will solve my problem?" to "What piece of data-driven code might solve my problem, and how do I acquire the right set of data?". Also, some ML-algorithms are designed specifically to enable you to analyze their "reasoning" about the problem after they have been trained.

Re: Why programming is a good medium for expressing poorly understood ideas (1967)

#70
post #46
post #39

Earlier quoted context omitted.

This is good encouragement for me to try using pen and paper again. The problem is that every time I do, I get frustrated by how slow it is for me, my hands get cramped, and I miss the backspace key. But perhaps I just need to keep at it for a bit, because I do see (and have experienced, back in college) the advantages.

The backspace key equivalent of pen and paper is crossing things out/erasing them. If there's a line of writing I don't like, I'll cross it out and start that piece over. If you want to get faster and better at sketching diagrams I'd recommend you practice some of the basic techniques that say concept artists use. Straight lines from the elbow with little wrist movement and a little practice, and you'll be drawing th…

The Palmer method, that is what I learned back in the mid-nineties in elementary school. I didn't know it had a proper name other than 'cursive writing'. Neat!

Edit: Err wait, maybe not. It looks the same but so does the Zaner-Bloser form. Looking at some more methods, apparently I don't understand how it all works.

Post reply on HN