This week’s reading changes my understanding of programming language. In professor Irvine’s video, he mentions that we use symbols to represent meanings and to represent and interpret other symbols. Language is such kind of symbol, since we use language to represent language. It does not represent what computer speaks and thinks (what it seems like) but imitates human’s thinking pattern. Just like what Evans points out, “we designed artificial languages for some a specific purpose such as for expressing procedures to be executed by computers”, computer is a machine that decodes our information and execute our command, a procedure through which computer helps us solve problems. Instead of being chaotic, it is actually highly organized and follow the syntax rule of language. Programming language only focuses on the surface form of text. Each word or sentence generates a new meaning. The third function of symbol, mentioned by Professor Irvine, is that it does not represent meanings but performs actions on other symbols. For example, the design of operating system can be used as managing and controlling tool of other software applications. In this case, we use programming language to control operating system and further control software applications.
Different from the symbolic human language system, which is complex, ambiguous irregular and uneconomic, programming language serves as a more powerful means of abstraction. Programming language is simple, direct and easy to execute. Last week, we learned about Shannon’s Transmission Model of Communication and Information. I see programming as the process of information transformation from human to programming system. Take the example of Scheme program (although not being widely used), we, human, first put Scheme, the highest level of language, into the programming system as the resource of input. Then the scheme interpreter decodes and transmits the higher level of language, that is the information, to the machine processor, which is the information receiver. Finally, the machine executes the command.
Computing system connects the programming system and the machine by calculating the functions human put in and transmitting human’s command to the machine. Each part of the hardware has their own functions in the calculating process. There are interfaces that connect the separate parts and transit information between them. For example, RAM stores information, while CPU calculates. From the block diagram of CPU and RAM, we can know that the IP indicates the location of the next program while the SP is address of the newly stocked information. The ALU takes two input numbers and produce one output number. CPU and RAM transmit information and values back and force. By looking inside the machine’s hardware, we started to visualize where the information goes after we put codes into the programming system. The way system calculate functions is a mathematical process, and the way each part of the computer hardware function is an engineering process. That is the reason why Wing sees computational thinking as complements and combines mathematical and engineering thinking.
Prof. Irvine, Introduction to Computation and Computational Thinking
Jeannette Wing, “Computational Thinking.” Communications of the ACM 49, no. 3 (March 2006): 33–35.
Peter J. Denning and Craig H. Martell. Great Principles of Computing. Cambridge, MA: MIT Press, 2015. Review chapters 4, 5, 6.
David Evans, Introduction to Computing: Explorations in Language, Logic, and Machines. 2011 edition.