L Peter Deutsch on Why Programing is so Hard

One of the things that I've been thinking about off and on over the last five-plus years is, "Why is programming so hard?"

You have the algorithmic side of programming and that's i close enough to mathematics that you can use mathematics as the basic model, if you will, for what goes on in it. You can use mathematical methods and mathematical ways of thinking.That doesn't make it easy, but nobody thinks mathematics is easy. So there's a pretty good match between the material you're working with and our understanding of that material and our understanding of the skill level that's re[required to work with it

I think part of the problem with the other kind of programming is that the world of basically all programming languages that we have is so different in such deep ways from the physical world that our senses and our brains and our society have coevolved to deal with, that it is loony to expect people to do well with it. There has to something a little wrong with you for you to be a really good programmer. Maybe "wrong with you" is a little too strong, I but the qualities that make somebody a well-functioning human being and the qualities that make somebody a really good programmer—they overlap but they don't overlap a whole heck of a lot And I'm speaking as someone who was a very good programmer.

The world of von Neumann computation and Algol-family languages has such different requirements than the physical world, that to me it's actually quite surprising that we manage to build large systems a[[at all that work even as poorly as they do.

Perhaps it shouldn't be any more surprising than the fact that we can build jet airliners, but jet airliners are working in the physical world and we have thousands of years of mechanical engineering to draw on. For software, we have this weird world with these weird, really bizarre fundamental properties, the physical world's properties are rooted in subatomic physics, but you've got these layers: you've got subatomic physics, you've got atomic physics, you've got chemistry. You've got tons of emergent properties that come out of that and we have all of this apparatus for functioning well in that world.

I don't look around and see anything that looks like an address or a pointer. We have objects; we don't have these weird things that computer scientists misname "objects."


Programming is very alien to anything in the physical world.

Folksonomies: programming computer science

/science/mathematics (0.601058)
/technology and computing/programming languages/c and c++ (0.430258)
/science/physics (0.425536)

physical world (0.998807 (negative:-0.031841)), good programmer (0.804033 (positive:0.044221)), pretty good match (0.793190 (positive:0.785627)), good programmer—they overlap (0.792734 (positive:0.396711)), von Neumann computation (0.780859 (positive:0.396366)), jet airliners (0.779262 (negative:-0.520175)), subatomic physics (0.770990 (neutral:0.000000)), Peter Deutsch (0.688046 (negative:-0.438965)), basic model (0.670249 (positive:0.473556)), skill level (0.663929 (positive:0.785627)), mathematical methods (0.661009 (neutral:0.000000)), weird world (0.655662 (negative:-0.429673)), deep ways (0.655650 (positive:0.488885)), large systems (0.654053 (positive:0.474994)), mathematical ways (0.653538 (neutral:0.000000)), weird things (0.652335 (negative:-0.333439)), mechanical engineering (0.651090 (negative:-0.509967)), Algol-family languages (0.648142 (positive:0.396366)), different requirements (0.648004 (positive:0.396366)), emergent properties (0.643123 (positive:0.822884)), fundamental properties (0.639160 (negative:-0.506763)), atomic physics (0.637874 (neutral:0.000000)), mathematics (0.593334 (positive:0.473556)), programming (0.576431 (positive:0.042256)), somebody (0.572288 (positive:0.396711)), qualities (0.564321 (positive:0.396711)), material (0.556551 (positive:0.785627)), understanding (0.556487 (positive:0.785627)), Programing (0.552239 (negative:-0.438965)), objects (0.551191 (negative:-0.369763))

programmer:JobTitle (0.829252 (positive:0.022110)), Peter Deutsch:Person (0.655796 (negative:-0.438965))

Programming language (0.973025): dbpedia | freebase
Computer (0.789658): dbpedia | freebase | opencyc
Physics (0.720232): dbpedia | freebase | opencyc
Computer programming (0.668395): dbpedia | freebase
Algorithm (0.646720): dbpedia | freebase | opencyc
Programmer (0.624676): dbpedia | freebase | opencyc
Computer science (0.588935): dbpedia | freebase | opencyc
Mathematics (0.565101): dbpedia | freebase | opencyc

 Coders at Work: Reflections on the Craft of Programming
Books, Brochures, and Chapters>Book:  Seibel , Peter (2009-09-16), Coders at Work: Reflections on the Craft of Programming, Apress, Retrieved on 2011-04-21
  • Source Material [codersatwork.com]
  • Folksonomies: information technology programming computer science