This week, I tried to savor the process of using programming language and noted the difference between Python language and my thinking pattern, and between the ways computers and human solve problems. I want to use solving the problem of rounding numbers as an example. We do rounding in everyday life. It is one of the simplest information processing in our brain. However, I found myself stuck when teaching computer to do rounding in Python language. Basically, I think the way I solve this problem is similar to this pattern:
What is the first number after the “.”? If it is one of “5,6,7,8,9”, then round up. Add 1 to the number before “.”; If it is one of “0,1,2,3,4”, then round down. Only remain the number before “.”. Maybe I can create a loop section to let computer compare the number after “.” with “0~9”, then let it go through a “if…. else…”section to decide round up/down. However, it is not similar to my thinking patterns. I don’t use a loop section to solve this problem. I can easily combine the look of a string with the number it symbolizes. For me, number and string are just like two properties of one thing. However, for computers, properties of single things are processed separately.
The most direct way that computer takes is different than mine. In this algorithm, it adds every input “x” with 0.5 and takes the integer part of the result. I think this process reflects the original intention of doing rounding. “0.5” means half way of the “distance” between two integers. What computer does is moving “x” forward 0.5 unit to test whether it reaches the first integer larger than “x”.
Interestingly, It seems that I just ignores the very series of logical processes and always generate the output directly. I noticed that I tend to follow certain rules that directly link two objects and simplify the relationship between them. So the hardest part of using python language is not obtaining the very grammar, but creating a mode which matches computer’s “thinking pattern”. By doing this, I need to move away my eyes from “objects” and unfold the interrelationships among them.
Before the Von Neumann architecture was created, program was not stored inside. Engineers had to rearrange hardware to run a new program. At this level, relationships in blackbox are exposed. But after that, it was still a period that engineers had to shoulder arduous work by dealing with endless “1” and “0”, which recorded slight different of changes in the machines. Then programming language was developed. On a slightly higher level is assembly language, which supply step-by-step instructions for the processor to carry out (White & Downs, 2007). On the higher end, languages such as C and Java allow programmers to write more closely parallel English (White & Downs, 2007). Complicated relationships are closured into various functions. And those functions can be called to other systems without clarifying how it works inside. The grouping of several individual sub-steps into a larger step is an example of abstraction (Conery, 2010). To me, the principle of functional abstraction (Hillis, 2013) lead computer to imitate human thinking pattern.
Creating new functions and term them with English words is just one aspect. At the same time, programmers symbolize series of relationships can create more “objects”. The creation of Wolfram Language also followed the law of the evolution of programming language. I think this new language is revolutionary, because we need no longer to teach computer the difference of “string”, “number” or other data types. Different features of one symbol are combined together.
I think our brain has similar pattern of “Closure”. We perceive the world by letting subtle information passing through our eyes, ears, hands and other sensory organ. Special processes that wrote in our brain integrate the information and create a mode of the world by mapping objects. Some questions are generated by this reflection: Is it an evolutionary advantage of brain’s function of “information hiding” to closure relationships into objects? Can this function be connected to the definition of intelligence? Or is “ignoring relationship” merely a phenomenon caused by our using of language?
Conery, J. S. (2010). Ubiquity symposium’What is computation?’: Computation is symbol manipulation. Ubiquity, 2010(November), 4.
Hillis, D. (2013). The pattern on the stone. Hachette UK. P IX
White, R., & Downs, T. (2007). How computers work. Que Corp. P95-96