Skip to main content

CODE: The hidden Language of Computer Hardware and Software

BOOK REVIEW

Author: Charles Petzold
Total Reading Time: ~32 hours | Total Sittings: ~34 | Total Reading Days: ~14
Last Location: 12457  | Rating: 9.5/10  

I started reading this book to understand how computers understand programming languages; I could have learnt codes directly, which I have done before with C language, but I felt incomplete, so this book became my meat.

This book explains the working of computer in a profound manner for a person having a medium processing brain. The book starts with code languages (ex: Braille, Morse codes) and explains on how alphabets of a language (say English) can be represented by different combinations of zeros and ones, viz A as 001 or anything like that, and then introduces the use of this in the history for telegraphy, where text messages were sent into the ocean water via wires to other countries. The on or off switch used in passing or not passing current were used as zeros and ones, to represent alphabets or numbers or punctuations.

Here is how the story continued, upon the start of telegraphy, there comes a need of labour to sit at one side to send the codes of alphabets, and at the other side to decode these codes into alphabets. As there arise large resistance for long distance travel of current, there comes a need of setting up a station in between the sender and the receiver, so that the person in the middle station can send the same code to the receiver, thus avoiding the resistance problem. Here a major development is shown via introduction of relays, which eliminates the need of a person to sit and resend the text. The below illustration shows a relay, where one can assume the switch A to be of sender and the electromagnet and the switch B to be at the middle station; when the sender switches on (i.e binary digit 1), the iron bar gets magnetised to pull the adjacent wire to complete the circuit, thus signalling switch to be on, and vice versa. This device pulls out the job of a person in the middle station. This little and simple modest device is the one which is going to build computer! Yes the book uses this small device to explain the working of the computer.      


The book continues to explain on how the combination of relays can represent logical gates. These relays representing gates are used to build adding machine, which adds (and even subtracts) binary numbers, using switches' on and off as 1 and 0. Boolean algebra is used to make various combinations of relays to make the machine possible. The output wires are connected with bulbs to indicate the user on switch being on or off. The book introduces flip-flop circuits using these relays to make the circuit "remember" status of the switch. These flip-flops are given the capacity of memory 1 bit (binary digit), which when arranged in different ways make up many bits. The circuit elements which shows the ability of knowing on/off status is symbolised and given a particular address. For information, which I like to mention, 8 bits = 1 byte, 1024 bytes = 1kilo bytes (KB), 1024 KB = 1 mega byte (MB), 1024 MB = 1 gigabyte (GB). Understanding flip-flops requires lot of processing in our brains, which I thought author could have reduced. Another important circuit the book introduces is the oscillator, which has major hand in automation.

Book explains historical replacement of these relays with vacuum tubes--which changes switch in a millionth of a second, and then these vacuum tubes with more stronger transistors; it is to be seen that both vacuum tubes and transistors act the same way as relays. The ability of changing switches at a very fast speed is what book explains as the game changer for the faster evolution of computers. Then the book explains on how the switches can be connected to keyboard to input data; in a interesting way screen is not at all a important part for earlier computers, the output devices used instead were in general, bulbs; this is obvious as computer started as a computing machine, which still remains as the same, but veils the functions of computation while giving service.

Book then explains machine-level languages, where one inputs the data using switches to load, store or to perform any other operation on the relays. To make the language human friendly, the book explains on how the assembly level or higher level languages such as C , C++, Javascript, Java, COBOL, Pascal and others are used. Author also explains the working of digital screen based on pixel working using binary codes. It finally explains the most modern graphics and other audio related devices. The book blends history in between, which gives a place of relaxation within a lot of processing areas of the book.  
 
This book gives me a confidence on the simplicity of building machines, which can be surely used in future for my own experiments, and I hope the same feeling will occur to others. Analogy between computer's working and the brain's working seems to offer a benefit in helping us compare the common share to see the patterns for generality, and thus can duplicate principles to achieve things like faster processing in ourselves, etc. This book's information will be effectively used by those who already know a bit of programming language and electronics.

Comments

Popular posts from this blog