Hey everyone! Just read the three chapters recommended by Jake. Se below my favourite quotes and some thoughts of mine attached to it. No AI was involved in this process!
Chapter 1
“Nobody can seriously have believed that executives could read programs. Why should they? Even programmers do not read programs” - Very liberating to know that. Ever since I started vibe coding I have this feeling that I don’t understand what I have created or at least how it works.
What does “reading programs” look like in the age of AI? With millions of people vibe coding without writing a single sentence, what constitutes reading their programs? It is looking at their folder structures? Is it looking at the prompts they’ve created? And another question would be: should ask for AI’s help to read other people’s programming for us, or with us?
“Therefore it is reasonable to expect that future languages will make us feel those limitations of PL/I that are not detectable today. Notice that this is a psychological question-one to which we shall have occasion to return” - When we vibe-code we don’t even know what the language limitations are. We can feel limitations in the results we are trying to achieve.
“There are, of course, programmer limitations other than merely not knowing the full power of the languages - vocabulary limitations, we might say. For instance, the programmer may be unaware of certain algorithms, or he may be unable to grasp a sufficiently large portion of the problem at one time to see that certain duplication may be avoided.” - With AI, most people don’t know the full power of the languages. We delegate that knowledge to the LLM. But knowing and expressing the problem we want to tackle is still a very human activity.
“…in most cases, we do not know what we want to do until we have taken a flying leap at programming it. Specifications evolve together with programs and programmers. Writing a program is a process of learning - both for the programmer and the person who commissions the program. Moreover, this learning takes place in the context of a particular machine, a particular programming language, a particular programmer or programming team in a particular work environment, and a particular set of historical events that determine not just the form of the code but also what the code does!”
Chapter 2
“Looking honestly at the situation, we are never looking for the best program, seldom looking for a good one, but always looking for one that meets the requirements” - And the requirements are not fixed. I believe they change and evolve as the program and the situation evolves and now, with AI we have time and speed to create, test, learn, reiterate, with almost no cost.
“If a program doesn’t work, measures of efficiency, of adaptability, or of cost of production have no meaning. Still, we must be realistic and acknowledge that probably no perfect program was ever written.” - Although there is no perfect program, if a good program doesn’t help in the best way possible, it doesn’t matter how well written it is.
“In our discussions of programming practices, we are going to have to take into account the difference between programs developed for one user and programs developed for many. They will be evaluated differently, and they should be produced by different methods.” - In the age of AI we are seeing more and more programs developed for one individual to solve his or her particular problems.
“Why, the, when we are forced to modify programs do we find it such a Herculean task that we often decide to throw them away and start over? “ - This will happen even more in the age of AI because we, vibecoders, definitely don’t “write” programs thinking they will be modified and it is easier for us to throw everything away and start over. On the other hand, I tend to create and release programs fast in order to learn from their use and modify them as needed.
“Fisher’s Fundamental Theorem states - in terms appropriate to the present context- that the better adapted a system is to a particular environment, the less adaptable it is to new environments.” - It strengthens my proposition that we will see one program for each person for each objective or set of objectives.
“When we ask for efficiency, we are often asking for “tight” coding that will be difficult to modify.” - When I am vibecoding I don’t think about making an efficient program because I don’t even know what that would mean. I think about my layer of abstraction and what efficiency means here in the natural language world.
Chapter 11:
“The first of the thirteen features (of human language) which he lists is the use of a “vocal-auditory channel” - that is, I speak and you listen.” - And today we can speak to our computers in order to program.
“To make progress in programming languages, we must first give up de holy grail of trying to program in a “real” language, for programming languages can never be the same as human speech.” - I know that when we use natural language to program we are not programming directly, but as Jake says, it is just another abstraction layer above others. JavaScript is not programming directly in the computer either.