Live data from Hacker News

Programming as Theory Building (1985)

gist.github.com

21–30 of 39 posts

Re: Programming as Theory Building (1985)

#21

The topic of how we as developers implement solutions in code has been on my mind for years. The one insightful idea I found in this essay is that coding is a lossy one-way operation, from which you cannot fully derive the original idea or the 'theory'. That seems similar to losing information when compiling source code, making it impossible to restore the exact source code from its machine code representation. So if…

[deleted]

Re: Programming as Theory Building (1985)

#22

The topic of how we as developers implement solutions in code has been on my mind for years. The one insightful idea I found in this essay is that coding is a lossy one-way operation, from which you cannot fully derive the original idea or the 'theory'. That seems similar to losing information when compiling source code, making it impossible to restore the exact source code from its machine code representation. So if…

Personally I think the problem starts at “shared understanding” and I think the most promising solution lies within combining ontologies (such as ones based on BFO, perhaps) with Abstract Syntax Trees or Concrete Syntax Trees. I suspect future development will occur merging tests as examples of program functionality with data models and call graphs derived and annotated based on common ontologies. We would have, in t…

I fully agree about the role of an expressive test suite. One of the key insights of Kuhn as cited here is that a "theory" of gravitation requires examples like planetary motion and pendula. A UML Activity diagram can help to convey the application domain globally, but a good suite of unit tests helps me understand the micro-domain of a code base.

Re: Programming as Theory Building (1985)

#23
post #16

Peter Naur is one of the unsung(?) giants of software. His name should be instantly recognizable. This is perhaps the best paper ever to explain the nature of collaborative program development and maintenance. If I had a company I would make this mandatory reading for everybody - everybody, not just programmers.

I am currently leading a topic group at work on code documentation in AI development. I was already planning to skip the lists of dos and don'ts, as well as the usual best practice language, but maybe I should just refer everyone to this gist and Naur ...

Re: Programming as Theory Building (1985)

#24

This concept evokes many familiar memories of reading other people's code, which is always extremely hard. I feel multiple ways about this concept. On the one hand, I believe programs can be sectionally reduced to a inputs, outputs, and a sequence of states in between, and a programmer can understand those things well enough to extend an existing programmer competently in many cases. It must be true, because it does…

So if reading code means reconstructing a theory, that could explain why we have so much NIH.

Re: Programming as Theory Building (1985)

#25

The topic of how we as developers implement solutions in code has been on my mind for years. The one insightful idea I found in this essay is that coding is a lossy one-way operation, from which you cannot fully derive the original idea or the 'theory'. That seems similar to losing information when compiling source code, making it impossible to restore the exact source code from its machine code representation. So if…

You're butting your head against the fundamental paradox of communication: in order to communicate an idea that's in your head to somebody else, you have to encode it in a way that the other person will recognise and decode; that is, you need to already have some shared context. However, if you have a new idea then by definition it can't be part of the shared context, so it can't be communicated. We get around this b…

We need a universal translator,

https://en.wikipedia.org/wiki/Universal_translator

Re: Programming as Theory Building (1985)

#26
> the primary aim of programming is to have the programmers build a theory

I don't agree with that statement, but I don't think the primary aim is to produce a program either.

I believe the primary aim is to enable users to use a program. For that they need a mental model. Maintaining a consistent and simple theory among developers is a means to that end.

Re: Programming as Theory Building (1985)

#27

The topic of how we as developers implement solutions in code has been on my mind for years. The one insightful idea I found in this essay is that coding is a lossy one-way operation, from which you cannot fully derive the original idea or the 'theory'. That seems similar to losing information when compiling source code, making it impossible to restore the exact source code from its machine code representation. So if…

More generally, there is a similar issue with deriving "meaning" from human actions. The question "what did he mean by that?"

Re: Programming as Theory Building (1985)

#28
This makes sense to me. I think it’s really important to be able to predict what the software will do under certain circumstances. You can do that only if you have a pretty good concept of the thinking behind the code. I usually get nervous when something doesn’t behave as expected because it indicates that there is a mismatch between the theory and its implementation.

This would explain why a lot of corporate software isn’t good. There is no shared understanding and a lot of people make changes without understanding the big picture.

Post reply on HN