Programming Philosophy - Three-Way Programming

    Programming is seen as the process of creating computer programs. The word process in this definition is not superfluous. Usually they argue in the spirit of "look at what a wonderful data structure can be described in a given programming language." The programming philosophy involves looking around, and digging deeper into it.

    Actually, the division into coding, and the creation of algorithms is already specific, life goes on first, that is, a person relies on a certain thought like “I’ll write a framework with such and such properties”. And now this initial direction is a matter of philosophy. The problem is that often the wife of a programmer knows better than himself, at a philosophical level, what he does and why. Elementary philosophical categories: thinking, consciousness, conditioning are unknown to the programmer. And this is strange, if we compare the ability of a programmer to think, for example, reading articles on functional programming or search algorithms, interspersed with articles by prominent Russian or European philosophers, it turns out that actually the programmers' thinking skill is developed not less, but even more.

    Pragmatism is one of the pinnacles of philosophy. Like Marxism at one time, it stated that the confusion about consciousness was insurmountable, and called for reasoning in terms of economics, reduced to natural numbers - pragmatism narrows the field even further and calls for solving obvious problems in the most efficient way. In this sense, the programmer as a philosopher is close to pragmatism.

    There is such a thing as the history of mathematics, for example, the names of mathematicians are the names of the basic mathematical terms. In Russia, mathematics is often taught separately from the history of its discoveries, the European school contains a culture of telling about the process of how this or that formula of scientific thinking was discovered.

    For example, a story like this:
    Trying to color the map of the counties of England, Francis Guthrie formulated the problem of four colors, noting that four colors are enough to color the map so that any two adjacent regions have different colors. His brother referred the question to his mathematics teacher, Augustus de Morgan, who mentioned it in a letter to William Hamilton in 1852. Arthur Cayley raised this issue at a meeting of the London Mathematical Society in 1878. In the same year, Tate proposed the first solution to this problem.


    Do you understand? The social dimension. That is, you learn not only the code, but you also know the names of those who invented this code, you do not study just the C language, but also the history of its creation. This makes it possible to move on from a historical perspective, gives you the opportunity to realize your whereabouts in the social structure and find where to put your strength in a new direction for all of humanity. Russians are constantly inventing new programming languages ​​and algorithms, there is no problem with this, simply because of your ignorance of the history and philosophy of programming, you are inventing what has already been invented. Or, even worse, you are inventing something new, but you have no idea where to put it, which Lord Hamilton to write about your work, and at which London Club meeting to read the report. You will write a report, and it will most likely be perfect from a technical point of view.

    Although systems engineering involves the analysis and formulation of the problem before the actual design, algorithm, development of data structures, coding and debugging, the customer sets the task. The customer is the “Lord God” in the philosophy of programming, he is not comprehended, because he cannot be comprehended, he is an absolute and a higher power. One can only comprehend his individual instructions and complain about the imperfection of “God's creations”. The relations of the programmer and the customer themselves in the Java textbook do not raise, it is Marxism or the Protestant ethics: the metaphysics of submission and the conditioning of material values. In America there is a class of "super programmers", "start-ups", people do not have a customer, they know life so much that they themselves can see the needs. That is, he does not sit and wait until someone who understands life better than him, He will come and tell him what to do, he himself comprehends life and finds where to move in order to earn and realize himself as an activist. He does not write the program that people request, but creates a request and satisfies it himself. Was there an iphone request when Jobs came up with it? Or did Jobs create the request itself?

    Philologists and philosophers, that is, the same guys as programmers, only from a different faculty, consider all engineers to be nonhuman. For them, a programmer is like such a small animal, can do wonderful tricks with technology, but not a person. That is, you are sitting in a room with a computer, but do not understand why you are sitting in it. That is, you think that you understand, but if the philologist asks you “why and why,” you will begin to describe the program you are writing. An elementary skill for a philosopher: to list your social connections and conditioning, to realize your story and how it brought you to this chair here and now, this is the ABC of self-awareness.

    A person is considered a thinking creature, and it would be very easy for a programmer to understand thinking if he compared it with a computer program. A person, like a program, cannot work in a vacuum, a person, in simple terms, thinks what he sees. You look at the code, think how to improve it, look at the error message - you think how to fix it. Try to turn away from the screen and continue to solve the same problem, you will see - it smoothly, but quickly disappears from the head. This is called, thinking what you see, relying on input signals, conditionality of consciousness. Therefore, a second programming vector appears. I am writing a program, it controls the processes in the computer, in the chips, but I myself look at the written source code and what I see is my personal input and allows me to think further. Hence the constant research in the field of new programming languages. Hence the desire to learn another, and another programming language (YP). A person wants to program himself, to expand his capabilities.

    There is a saying that iteration is characteristic of man, and recursion is characteristic of God. There has long been no right direction in the search for truth; people have scattered, relativism, pluralism. When we refer to some object, our statement immediately becomes an object that can be referenced, or you can even switch to a person, so in any discussion, in the comments, you will immediately see the manifestations of postmodernism (replacing the object with a link) and phenomenalism - a transition on a person in an attempt to avoid drowning in the graph of meanings.

    Accordingly, pluralism in the choice of PL, development environment, framework is a tendency to one pole. And the desire to use the same YaP, a framework that many other people mean is collectivism, a manifestation of atomization, alienation. The programmer is very lonely and at the same time overloaded with communication. This is an unplowed field for research. Higher nervous activity, work with structures and text, learning languages ​​- and this is like ordinary daily activity. A programmer would surprise nineteenth-century people with the capacity and power of their thoughts. He would have surprised the twenty-first people, if he could communicate with them at the level at which he works daily. The more surprising is the blindness of the programmer. A programmer is often distinguished by appearance. And this is not a dress code, a person simply does not pay attention to how he looks and what he is wearing. That is, he knows what is dressed on him, but why exactly it, or even how it is correctly called, is this distant cosmos for him. Do you know how a sweater differs from a pullover? Sweater from a sweater? Why do I need it?

    A programmer is like a lamp slave, like a matrix battery - if he suddenly starts to use his brain, his unprecedented abilities to operate with languages, logic, work with data volumes in ordinary life - he can become the one-eyed that is king in the country of the blind. The sweater fits the neck and body, the pullover has a wide opening so that it is more convenient to pull (pull-over), the jacket has buttons. The jumper has a fastener instead of a wide hole. This is elementary, you can write in one line of code. But the programmer does not understand one thing, that this information is not about clothes, it is part of the description of life. True, the Europeans part are different, there is a culture to program life, especially among the British. They discovered long ago that you can write some kind of letter, for example, “I am sending you three bags of cloth, send me six gold ones ”and suddenly it can be repeated again and again and it becomes possible to manage life just sitting at your desk and writing letters. Venice, Hansa, Cambria. The Americans inherited this quality, and since they loved computers and programming, they reached an unattainable level. They see the third programming vector: any code, any program programs not only a computer, not only a processor, but also users.

    Users are not just people who want something, and you can give them this in exchange for money. Users are the same thinking creatures and their thinking is caused by signals from outside the same as yours. They think what they see. They will see the program interface and will think and act accordingly. Each decision made by the programmer in minutes when he looks into the code leads to changes in the user's activities. You program it. This implies opportunities, responsibility and research of the result. These are elementary philosophical categories. Although the latter is close to the programmer, it’s just an iteration of development, it’s debugging and versioning. I wrote, listened to what the user said, made changes to the code again. But no, I didn’t listen, not only listened, but looked at his behavior, as at the behavior of the program, analyzed

    Three-way programming. Computer, programmer, user. It is impossible to make changes to the code without making changes to the future of the user and the programmer. But you can not think about it. It's easier. Not to think is always easier. Of all the input signals, a person prefers to accept those that do not require understanding, but only sensations. The taste of beer, a clean shirt, praise, or even insults and hitting authorities. From these emotions, emotional decision making follows. Nice framework. An idiotic programming language. Dumb comment. Cool article. I had the idea to write my own implementation of b-trees. Why? Well, I liked the idea. Communication programmers, the most logically busy minds, comes down to an exchange of emotions. These are two bubbling streams, collide, repel, create vortices - how can they even program? Very simple, after an hour of emotions, they disperse to read books. Here the thought turns on. Throw the link, I read. I liked it, is there anything to read on this topic? Two lives. The programmer is especially interested in the fact that for him, even coding is an emotional activity, he throws his feelings into a cold screen, he tries to sense the logic and arrange himself as the mind as a result. This is especially characteristic of Russian programmers, and not characteristic of them — to reason, all the more out loud, all the more in writing. Moreover, a person who is able to talk about his project causes distrust - he seems to be a liar who, instead of looking at the code, realizing the structure of the algorithm, for some reason thinking about social manifestations, is promoting himself - tales about Elbrus and Phantom. is there anything to read on this topic? Two lives. The programmer is especially interested in the fact that for him, even coding is an emotional activity, he throws his feelings into a cold screen, he tries to sense the logic and arrange himself as the mind as a result. This is especially characteristic of Russian programmers, and not characteristic of them — to reason, all the more out loud, all the more in writing. Moreover, a person who is able to talk about his project causes distrust - he seems to be a liar who, instead of looking at the code, realizing the structure of the algorithm, for some reason thinking about social manifestations, is promoting himself - tales about Elbrus and Phantom. is there anything to read on this topic? Two lives. The programmer is especially interested in the fact that for him, even coding is an emotional activity, he throws his feelings into a cold screen, he tries to sense the logic and arrange himself as the mind as a result. This is especially characteristic of Russian programmers, and not characteristic of them — to reason, all the more out loud, all the more in writing. Moreover, a person who is able to talk about his project causes distrust - he seems to be a liar who, instead of looking at the code, realizing the structure of the algorithm, for some reason thinking about social manifestations, is promoting himself - tales about Elbrus and Phantom. he is trying to sense logic and shape himself up as a mind as a result. This is especially characteristic of Russian programmers, and not characteristic of them — to reason, all the more out loud, all the more in writing. Moreover, a person who is able to talk about his project causes distrust - he seems to be a liar who, instead of looking at the code, realizing the structure of the algorithm, for some reason thinking about social manifestations, is promoting himself - tales about Elbrus and Phantom. he is trying to sense logic and shape himself up as a mind as a result. This is especially characteristic of Russian programmers, and not characteristic of them — to reason, all the more out loud, all the more in writing. Moreover, a person who is able to talk about his project causes distrust - he seems to be a liar who, instead of looking at the code, realizing the structure of the algorithm, for some reason thinking about social manifestations, is promoting himself - tales about Elbrus and Phantom.

    Therefore, in Russia there is no Open Source. Because open source is not the ability to program, it is the ability to communicate. This knowledge of the history of programs and programmers. You can put your creation on the github, and even write articles and instructions to it, but no one will read it. Or they will read and write "I want to join the project, but I don’t know what to do." "Student, I know Java a little, a very interesting project, tell me what to do." Why does an American student who knows Java immediately know what to do? Why can he create one open source project and join another? The question is more social than philosophical, our society is in a different state. But it is clear to the philosopher - a person is not aware of himself. As Guzeeva says in “Let's get married” - “he understands nothing about himself”. He sits in his room at the computer, his mother tells him "Well, you are so unsuitable for me." "Oh, you would be behind, perhaps smart yourself." But mom is smart, you're a fool. More precisely, she has other input signals, you look at the monitor, she looks around. Even lagging behind intellectually, in the skills of logic and working with information, the presence of extensive input signals from life, about people, about relationships - makes a person who understands life better than a programmer.

    Mom is not a fool, even your clothes and plates can predict your future without knowing asynchronous data processing. It is not difficult, and you could if you looked at society and knew the language of description and programming. To instigate the instances. A valuable frame is growing. The sensible guy appeared. Straighten documents. The authorities noticed. This is an API. Nothing complicated. Programmers can and should rule the world. But, so far, only a small layer of American programmers have understood this. Gates realized that a program can fail when its instructions are executed on the computer, but it should not fail when its instructions are executed by the user. This is not only cynicism, it is an understanding of its role, it is a study of behavior, it is a study of the API of the user and the whole society. Click here, what happens if the user clicks this button? And if the text is entered here, how to do it, so he entered the text here too? A file selection window opens, in which default folder should it be open? How many hours did you spend debugging the code, why didn’t you spend ten times studying user behavior? Gates spent.

    People record on video the user’s behavior behind the program, and from the moment they enter the room. The funny thing is that these people are not programmers, they are invited people - sociologists, even trainers. They sit and do the work, which in theory the programmer should do more efficiently, because this is code debugging. Changes are being made. But the program does not work faster after these changes, it can be slower and more often buggy, in the processor, on the computer it is buggy, but in the user’s behavior it works better, it performs operations faster (performance), more often it reaches the goal (debug), he is satisfied (energy saving). He pays in the end. All Jobs did was user programming. How did he come to this? environment culture? drugs? personal talent? Philosophy. Hegelian Kant, Husserly Russell, Wittgenstein-Sartre, thousands of them. They created many languages ​​to describe reality and APIs for understanding it. Most of the smart words that we use intuitively were once introduced and formulated by them. You can’t use the word “culture” and think about the conservatory, say “conservatory” and not know that this is primarily a system of teaching and selection of teachers. Conservative and conservative experience. For a programmer, everything he uses comes from nowhere. Smart people will understand, there are teachers at the university for this. Conservative and conservative experience. For a programmer, everything he uses comes from nowhere. Smart people will understand, there are teachers at the university for this. Conservative and conservative experience. For a programmer, everything he uses comes from nowhere. Smart people will understand, there are teachers at the university for this.

    By the way, a programming teacher usually does not know how to program or teach. A separate song, it happened, Stalin sent millions of dense peasants to study engineering, now a similar thing is happening in India. Three million graduates annually. It is clear that people strive to streamline teaching, throw out all that is superfluous. Why do you need to know this, you teach it - it will come in handy. The history of Maxwell’s experiments is very fascinating, but you have no time to learn it, you will immediately learn Maxwell’s equation. Well, at least tell the students that before Maxwell there was nothing, after him the science of electricity was already developed. What an example for programmers! There is nothing - there is something. At least tell me how Straustrup and Torvalds worked. As if out of nothing, it turns out something. That is, the teacher is just as philosophically dense as the student.

    You laugh that the Americans cannot find Iraq on the globe. And you laugh at yourself, can you find Hegel on the globe of the history of logic? Do you use BASH, do you know who and when created it and how does it conceptualize its creation after decades? Do you know why a terminal is called a terminal? How is he related to teletype? Do you know that IBM did the census in the United States more than a hundred years ago with the money of the central bank, and then delivered these mechanical computers to Hitler? Can you imagine that the design and terminology of the databases goes back to those cards and they are from the catalogers brought from England in the early nineteenth century? Do you know how the creator of Atari Bushnel did not understand the ideas of his employee Jobs? Do you even imagine the role of Atari in the history of computer technology? Who copied Atari or Sinclair to whom? It is not enough to know devices and their history; first of all, you need to know people, thoughts and their history. Gödel’s father was a priest, and St. Francis’s father was a banker and merchant. What is the Lviv-Warsaw school of logic?

    Well, this is your three-way programming, of course, you need to know not only the code and programming language, but also the history of the language, know yourself and the user and history and languages, but what about debugging? What about debugging? Why do I need a debugger? It’s just that you still don’t know how to think, you still react and wait for prompts, you don’t understand your program, you stop it and wait for the debugger to show you something. Then, you hope, ideas will appear in your head. “It’s inconvenient to set breakpoints in your debugger.” Metaprogramming is when a program creates a program, also a kind of recursion. In the same way, a program can debug a program, meta-debugging, but for this, a programmer must be twice as smart as he must keep two programs in his head at once. People who use printf () and laugh at debuggers just better understand what they are doing.

    By the way, the linker is also not needed, the rudiment of the first translators. And typed languages ​​are needed only because out of a hundred programmers, only one can program, the rest need to be led by the handle. Even one monkey will print “War and Peace” if you unlock only the right keys and in the right order. That's why we love syntax highlighting and themes - this is a way to influence ourselves, our minds, focus our attention, help ourselves see more. Now the boundaries are blurring, where is the built-in documentation, where is the Internet, where is the compiler, where is the interpreter, where to go to work, and where is self-employment. In such conditions, the desire to rely on authority develops, like a child's desire to grab an adult by the sleeve. A devoted look into the eyes of Google when they roll out another technology for developers. You need to get to your feet and look around in a large adult world where you do not study technology, but create them, where you see not only the manual, but also the hand that extends it to you and knows the story of both. These are the basics, this is called the programming philosophy.

    Programming Philosophy
    6: Product and Project
    5: Reactos and Hummingbirds
    4: Shapito Technology
    3: Chichikov and Programmer
    2: Myth and Language
    1: Three-Way Programming

    Also popular now: