A programmer with a head: how coding affects thinking

    Learning to program means not only developing a useful skill, but also acquiring a special type of thinking. Programmers are good at solving math and logic problems. They also pay attention to details, model situations in ordinary life and give an estimate based on a large number of factors.



    On the eve of our Go Workshop course , we tell that psychologists, linguists, and educators think about the impact of coding on the brain, which is what the Australian Indians and the Sapir-Whorf hypothesis have to do.

    In the 30s of the last century, the theory of linguistic relativity, named by analogy with the discovery of Einstein, appeared. It says: language defines consciousness, that is, people perceive the world differently, because the linguistic categories of the native language impose restrictions and even define thinking.

    This idea was formulated by Edward Sepir and his student Benjamin Wharf, but they were wrong. Any idea can be transferred in any language. They attributed the enormous impact on cognitive processes to simple differences in grammar, but the concept also contained sound grain. Guy Deutscher in his book “Through the mirror of the tongue” explains which:

    “If different languages ​​influence the thinking of their speakers in different ways, then it’s not that each language allows you to think to your speakers, but rather in those parts of the meaning that each language usually makes you think. When a language forces its speakers to pay attention to certain aspects of the world ... such speech habits can eventually become thinking habits with consequences for memory, perception, association, and even practical skills. ”

    Truth somewhere north


    It has been convincingly proven that the system of childbirth of nouns affects the associative series, forcing them to endow certain inanimate objects with imaginary female or male features. A similar effect is associated with differences in sensitivity to shades of colors, for which the language has a name.

    But this is minor compared to the fact that the language can form skills. This became clear when studying one of the languages ​​of the Australian aborigines. Instead of the usual “front” and “rear”, “left” and “right”, they use only the directions of the world to indicate the direction.

    This might have seemed like a practical joke, but if the speaker of this language asks you to free up space on the bench, it will sound like “move over, please, east”. If at the same time you are reading a book, sitting facing south, and the aborigine wants you to turn a couple of pages forward, then you will hear "scroll further west." If you turn to face north, the request will sound different - you will be asked to flip to the east.

    To speak this language, one has to constantly monitor the location of the cardinal points, which forms a geographic memory and does not require conscious control of the sense of direction. So, deep language learning is more than just knowledge of grammar and vocabulary.

    The study of the influence of language on thinking has just begun, but similar studies of programming languages ​​are already underway, which are related not only to natural ones with natural ones.

    Programming ≥ speech


    Contrary to stereotypes, in programming, mathematical skills are not the most important, but linguistic ones. About this back in 1982, Charles Wesrel wrote in his "Etudes for Programmers". He drew attention to the verbal abilities as an important aspect of the personality of a successful programmer, bearing in mind the ability to work with the grammar of both artificial and natural languages.

    His observations are confirmed. Statistical studies have revealed a correlation between programming and high linguistic abilities. Direct monitoring of activity in different areas of the brain with the help of MRIs found that while working on the code, the same parts of the brain that are responsible for natural languages ​​are activated.

    Not surprisingly, many programmers find the Sapir-Whorf hypothesis applicable to their work. Similar views held Kenneth Iverson, the creator of APL. Yukihiro Matsumoto admitted that when developing Ruby, he was inspired by the novel Babel-17, based on the hypothesis of linguistic relativity.

    Similar motives are developed in the essay “ Conquering Mediocrity” by Paul Graham, in his “Blub” paradox, according to which a programmer who has mastered one language and solves all tasks with its help does not understand the value of more efficient tools from other programming languages, perceiving them as something strange , unusual and unnecessary.

    The first attempt to summarize the available data on the impact of programming on cognitive processes, made in 1987in the May issue of the journal Educational Computing Research .

    Then, the researchers noticed that programming with its various tasks can positively influence the ability to solve problems strategically, the ability to formal logic, modeling skills and cognitive styles, but did not arrive at unambiguous and demonstrative conclusions due to lack of data.
    Another six years passed before statistics were collected, which allowed to concretize ideas about the impact of coding on thinking. It is presented in a meta-analysis of sixty-five studies on the impact of programming on cognitive processes , published in 1991.

    It turned out that in most cases programming really has a positive effect on various cognitive skills that correlate with the duration of learning a programming language and success in it. “The implications of learning a programming language go beyond the content of a particular computer language,” scientists say. With programming skills, planning skills, reasoning skills, logical thinking, and general problem-solving skills using computer programs are improved.

    Comparative studies of the influence of various programming languages ​​on cognitive processes are continuing. The analysis of the contents of the online repositories of Github and BitBucket, questions and answers posted on StackExchange allocated 750 thousand dollars of the grant . By himThe Knowledge Lab and the Department of Psychology at the University of Wisconsin Madison will restore the “natural history” of programming languages, track how often and for what purposes each of them is used.

    By 2020, researchers plan to find out how the specific features of programming languages ​​affect the number of paths and the speed of solving various problems, analyze how well one or another language is suitable for collective programming.

    The project has an ambitious task: to provide information about which languages ​​to choose for specific projects, and to find out how much this choice affects how developers think and work.

    More than skill


    In addition to the actual programming skills, learning languages ​​forms the habit of what the mathematician, psychologist and programmer Seymour Papert calls “computational thinking” in his works.

    This is a flexible set of skills aimed at algorithmic problem solving , the habit of using abstraction, decomposition, evaluation, logical thinking, accuracy and the habit of noticing details in everyday life.

    The concept of computational thinking gained authority in pedagogy, formed the basis of many educational programs, but over time, as expected in the eighties of the last century, its influence extended far beyond colleges and universities .

    With the help of programming methodology, various problems are successfully solved. An example of this is not only computer modeling, big data collection, the introduction of automated systems, and the success of FinTech.

    Computational thinking is applicable and useful in everyday life and for professionals who are far from IT technologies. The study of programming helps to find new approaches and solutions, no matter what is discussed. Whether it is physics, biology, chemistry, sociology, pedagogy, business or health care.

    Thus, the concept of effective altruism emerged, and the search began for the most effective charity strategies. Thanks to these studies, it turned out, for example, that in the fight against malaria it is more efficient to donate money to anti-mosquito nets , and not expensive medicines.

    Another consequence of computational thinking is the idea of ​​using mathematical tools for barter deals and big data to solve the problem of selecting organ donors. As a result , the design of a complex and at the same time reliable and efficient system for the exchange of donor kidneys "along the chain" for which Harvard University professor Alvin Roth won the Nobel Prize in 2012 was designed.

    In the context of new research, learning a programming language is not just a skill, but also a way to take a fresh look at life, deal with the challenges in a new way, what it puts.

    The Go Workshop course starts very soon in the Binary District - A great start for novice programmers and a logical continuation for those who have already encountered the design of their own web services.

    Also popular now: