wetware emulation
Aug. 2nd, 2005 04:34 pmI have written of this before in years past, but as it is a state I am trying to promote in myself for reasons both practical and philosophical, so I feel it bears mentioning again.
There is a particular way of thinking that comes with coding. As one attempts to understand a program, or formulate it, you must hold that program in your mind, storing the values of each variable and remembering its state from instant to instant, accounting for all changes of state, accounting for forked processes and recursive function calls. Your mind becomes an emulator; you build a working model of the program in your mind, just as if you were the computer.
This requires a form of absolute focus in which all fear and all distraction drop away, simply because there isn't room in your head for them. There isn't time for them. One cannot understand something so complex and alien without giving it your full attention.
I believe that a coder's true measure is the degree of complexity he or she can emulate, much as a chess player can be measured by the number of moves they can project in advance. (Which is nearly identical to understanding a computer program, if you think if every piece's placement as a variable, and every possible move a function with a different potential outcome).
I can emulate simple programs, but I have difficulty following more than one or two levels of recursion. For some people -- the mathematically gifted -- this comes naturally.
It does not come naturally to me, but I believe it is a skill that can be learned, and refined. It will not come easily, but it will come, with practice.
There is a particular way of thinking that comes with coding. As one attempts to understand a program, or formulate it, you must hold that program in your mind, storing the values of each variable and remembering its state from instant to instant, accounting for all changes of state, accounting for forked processes and recursive function calls. Your mind becomes an emulator; you build a working model of the program in your mind, just as if you were the computer.
This requires a form of absolute focus in which all fear and all distraction drop away, simply because there isn't room in your head for them. There isn't time for them. One cannot understand something so complex and alien without giving it your full attention.
I believe that a coder's true measure is the degree of complexity he or she can emulate, much as a chess player can be measured by the number of moves they can project in advance. (Which is nearly identical to understanding a computer program, if you think if every piece's placement as a variable, and every possible move a function with a different potential outcome).
I can emulate simple programs, but I have difficulty following more than one or two levels of recursion. For some people -- the mathematically gifted -- this comes naturally.
It does not come naturally to me, but I believe it is a skill that can be learned, and refined. It will not come easily, but it will come, with practice.