Stanford, we seem to have a problem ...
To your court, it’s rather an article-question, an article-reasoning, and in some places - bewilderment. On the one hand, we were presented with the authoritative opinion of Leslie Lamport, "Programming Should Be More Than Coding", which places programming and coding in an impromptu ranking table. On the opposing side, I, who do not have sufficient status for disputes with the master and the legendary university, which he represents ... but I cannot deny myself such pleasure and risk. I hope that more experienced comrades will correct my flaws in reasoning.
I understand intellectually that coding in the modern world is usually perceived as the lowest level of engineering activity, which on the evolutionary chart is closer to a chimpanzee than to a programmer. And perhaps this is our big mistake, because the code is like DNA. Only four nucleotides, and what a motley biomass in the product line.
As experienced engineers, we are masters of abstraction. Therefore, it will not be difficult for us to introduce a conditional programmer named Leslie Lampport (all names and matches are not random) and his main tool is the Turing machine. He is a master of his craft, largely thanks to the iron tao:
- Decide what the program should do.
- Determine how exactly it should fulfill its task.
- Write the appropriate code.
The last step, although it seems important to him, clearly does not like him and suggests ignoring him. And it's hard to argue with that. Moving the pointer along the endless tape of a Turing machine is a mortal longing.
And here his genius is fully revealed. But this process, like a sharpie with thimbles, must be monitored very carefully. He takes three points of his program and puts a ball with a code under the last one. We nod and place bets. Then the thimbles are deliberately slowly mixed. Where is the code?
We have practically no doubt where the third thimble is, and the code is ... under thimble number 1. Onlookers are in shock, Mr. Lamport also looks bewildered, but in his heart he knows that he cheated. And precisely at this moment, when he quietly rolled the ball with the code from item 3 in item 1, I really wanted to grab it by the sleeve.
What looks like a duck quacks like a duck, and even it’s sure that the duck is most likely to be. If you have developed the TLA + language for specifications, shouting with all its appearance and behavior that it is a code, that is it. The fact that you used it at the stage of program specification, that is, point 1 of the "decision what the program should do", you did not get rid of the need for point 3 to "write the appropriate code."
Let's interpolate Leslie for ten years ahead, during which he methodically uses the TLA + he created to write specifications. I think, regardless of whether the analysts, we, architects or database engineers, reluctantly admit that we are becoming something of a coder in the most routine sense of the word. Different dialects, different dictionaries, but the same reflex apparatus, which with a bored look gives out design patterns, ER-diagrams or specifications in the case of our character. And now, under the specious item # 1, the author of the thesis that "coding is not so important" hides this very coding.
To illustrate, I will invite another witness, let's call him John McCarthy. Programming a Turing machine is so infuriating to anyone as John, especially when it comes to the tasks he loves so much in the field of artificial intelligence. And in salvation, he invents a new, declarative coding style to describe how the task should be performed (paragraph 2 of the Leslie list). Let's call it conditionally LISP.
Let's assume that John has not written a single program in his life, which, according to the Lamport formula, puts him in the ranking at the level of plankton, although he has the most direct relation to the code. The question arises, what is his degree of perplexity and what will he say to him at a meeting?
I will not bore dozens of identical examples, but I will try to offer some summary to the court of colleagues. Coding is the pulse of development. It is present at all stages in one form or another. A cardiogram looks boring, but it is a necessary indicator that the project is alive. Therefore, the wording * -as-a-Code is increasingly popping up.
We are all coders. We have a certain apparatus and rules for this, just everyone does it on their own floor. There is no justifiable reason that a person who produces PHP code is somewhat more stupid than an analyst who creates executable specifications, and together they lose to a young hacker who thinks immediately in machine codes.
The difference is that some of us will see something that others have not noticed and add value to this process. McCarthy - LISP, Lampport - LaTeX and TLA +. And when you sort through such codes as the decimal number system, Braille, radio or emoticons, your tongue doesn’t rise to say that “Programing Should Be More Than Coding”.
PS Maybe someone from the conference visitors wants to ask the questions raised. If they seem silly to the speaker and the audience, then bring everything to me.
PPS It so happened that I have a lot of materials on the topic of code and coding, and if this topic is of interest, I will share it with pleasure.