In Great Principles of Computing, Denning writes, “A programming language is a set of syntax rules describing a precise notation for each of the above structures.” It was important for me to realize that we communicate to computer in both a similar and different way than we communicate with others. While coding in Python and my previous experience with Python and Javascript, I came to realize the strict importance of syntax. Computers fail to understand a variety of contextual information if not already programmed with a library of understanding about that information. Therefore, you need to provide very strict gramatical patterns for the computer to make sense of your program.
This then means that computational thinking needs to happen as we are not speaking for another human. In Jeannette Wing’s Computational Thinking video and essay she notes, “The process of building a computational solution to a problem is fraught with errors, which can occur at any of the four keypoints: expressing intentions and desires accurately, programming accurately, compiling accurately, and executing accurately. Here: “accurate” means preserving the original intention of the designer.” This explanation helped me understand that beyond linguistic dimensions, Wing’s video statement that Computational Thinking and programming is clearly pulling from engineering and mathematical theory. Programming is building in strict fashion to execute something that needs to be interpreted in one way and one way only. In linguistics, the patterns can be rearranged and interpreted in an infinite amount of ways. In engineering, if the instructions and numbers can be interpreted in more than one way, human error and miscommunication can cause rockets to explode.
Wing goes on to explain, “Computational thinking involves solving problems, designing systems, and understanding human behavior, by drawing on the concepts fundamental to computer science.” I began to understand that programming itself is not all of computational thinking. Programming is the interaction between the human and the computer in which the meaning making semiotic process occurs. However, computational thinking is the process one takes to solutions. The language is the instructions to the solution. In her video Wing said that space, time, and energy were the fundamental efficiency objectives in computational thinking. Similar to theoretical principles or Occam’s Razor, the simplest, least time and effort consuming answer is the one we must chose because we live in a universe with physical constraints.
Wing continues, “It is recognizing both the virtues and the dangers of aliasing, or giving someone or something more than one name. It is recognizing both the cost and power of indirect addressing and procedure call.” While programming in Python, I learned just how clear I had to be with my definitions. Because computer programs have very little vocabulary stored in their library as compared to human’s, creating new vocabulary for them must happen in the programming language. This is when we define and set our variables. Red = 5 and Monty = 23. Unlike humans, computers cannot function if Monty can equal 23 and 29 unless specifically told when it can equal 23 and when it can equal 29. This could be made in a conditional statement. If 1 + 1 == 2 is True, then Monty =23 , else if 1+ 1 == 4, then Monty = 29. This conditional function operates similarly to our understanding of words in sentence context. If you say, “I am all fired up,” or you say “I was fired today,” or if even you say the word “fire,” They have very different meanings even though the grammatical structures are not that different. As natural language processors, we can make sense of these conditionals through cultural absorption.
My own personal side note on the future of programming:
This week, I was curious about some of Vint Cerf’s (also wrote the forward to Great Principles of Computing) new ideas and projects and was excited to come across this TED Talk. As usual, I like to talk a multispecies view on new arising technology. In this TED Talk, computer scientists and animal behavior biologists come together to define elephants, great apes, and dolphins as sentient or self-aware beings (being able to identify themselves in a mirror). They then go on to imagine a world in which the complex communication patterns that these animals have would expand to our understanding through computing. Vint Cerf describes this project as a precursor to the large projects of the ISS and the Mars project are working on to increase computational language processing outside the scope of humans. Their intention would be to communicate with intelligent extraterrestrial life if they were to come across it.
While at first, this all seems very “wooshy washy” and reminiscent of pseudoscience, this TED Talk made me realize that there is actually a lot of science funding going into this type of computational programming because we exist within a universe of endless possibilities and any physicist and mathematician can tell you that there is a statistical change of coming across intelligent communicative life. Moreover, even getting a glimpse of animal communication networks can help us better understand our own cognition and biological evolution on our own planet.
I wonder how our understanding of abstraction and computational thinking may change as further research into multispecies computing continues…
Jeannette Wing, “Computational Thinking.” Communications of the ACM 49, no. 3 (March 2006): 33–35.
Peter J. Denning, “The Great Principles of Computing.” American Scientist, October, 2010.