Code: The Hidden Language of Computer Hardware and Software

Last updated
Code: The Hidden Language of Computer Hardware and Software
Code The Hidden Language of Computer Hardware and Software.jpg
Author Charles Petzold
Subject Computer architecture, computer science
Publisher Microsoft Press
Publication date
29 September 1999
Pages393
ISBN 978-0735605053
Website www.charlespetzold.com/code

Code: The Hidden Language of Computer Hardware and Software (1999) is a book by Charles Petzold that seeks to teach how personal computers work at a hardware and software level. In the preface to the 2000 softcover edition, Petzold wrote that his goal was for readers to understand how computers work at a concrete level that "just might even rival that of electrical engineers and programmers" and that he "went as far back" as he could go in regard to the history of technological development. Petzold describes Code as being structured as moving "up each level in the hierarchy" in which computers are constructed. [1] On June 10, 2022, Petzold announced that an expanded second edition would be published later that year. The second edition was released on July 28, 2022, along with an interactive companion website developed by Petzold. [2] [3]

Contents

The idea of writing the book came to him in 1987 while writing a column called "PC Tutor" for PC Magazine . [4]

Chapter outline

  1. Best Friends
  2. Codes and Combinations
  3. Braille and Binary Codes
  4. Anatomy of a Flashlight
  5. Communicating Around Corners
  6. Logic with Switches
  7. Telegraphs and Relays
  8. Relays and Gates
  9. Our Ten Digits
  10. Alternatives 10s
  11. Bit by Bit by Bit
  12. Bytes and Hexadecimal
  13. From ASCII to Unicode
  14. Adding with Logic Gates
  15. Is This for Real?
  16. But What About Subtraction?
  17. Feedback and Flip-Flops
  18. Let's Build a Clock!
  19. An Assemblage of Memory
  20. Automating Arithmetic
  21. The Arithmetic Logic Unit
  22. Registers and Buses
  23. CPU Control Signals
  24. Loops, Jumps, and Calls
  25. Peripherals
  26. The Operating System
  27. Coding
  28. The World Brain

Content

Petzold begins Code by discussing older technologies like Morse code, Braille, and Boolean logic, which he uses to explain vacuum tubes, transistors, and integrated circuits. Code is notable for its explanations of historical technologies in order to build the pieces for further understanding. Electricity is explained through the example of a basic flashlight, which is then expanded upon through the explanation of the electrical telegraph. He noted that "very smart people" had to go down the "dead ends" of mechanical computers and decimal computing before reaching a scalable solution—namely, the electronic, binary computer with a von Neumann architecture. The book also covers more recent developments, including topics like floating point math, operating systems, and ASCII.

The book focuses on "pre-networked computers" and does not cover concepts like distributed computing because Petzold thought that it would not be as useful for "most people using the Internet", his intended audience. [4] Specifically, he said in an interview that his "main hope" in writing Code was to impart upon his readers a "really good feeling for what a bit is, and how bits are combined to convey information". [4]

Reception

Software engineer and blogger Jeff Atwood described Code as a "love letter to the computer". [5]

Publishers Weekly , shortly after Code's publication, said "Initial response, at least among traditional tech book readers, has been positive" and quotes the book's editor, Ben Ryan, as saying "We're trying to cross the boundary of the computer section, and break out Code as general nonfiction science". It also praises both the quality of the physical book and the style of the writing as easy to read and understand. [6]

Ryan Holihan, writing for Input, calls Code "excellent" and that "it is, by far, the most straightforward way of explaining the earth shattering power humans can wield when working with 1s and 0s", in a brief but positive review. [7]

Code has been included in the syllabi of post-secondary education technical courses, such as "Fundamentals of Modern Software" where it was called "a little dated, but it is a really clear and incredibly accessible presentation of how computers get from electrical currents flowing down wires to programs you can actually use" [8] and other introductory and mid-level computer science and engineering courses. [9] [10] [11] [12]

See also

Related Research Articles

<span class="mw-page-title-main">Atanasoff–Berry computer</span> Early electronic digital computing device

The Atanasoff–Berry computer (ABC) was the first automatic electronic digital computer. Limited by the technology of the day, and execution, the device has remained somewhat obscure. The ABC's priority is debated among historians of computer technology, because it was neither programmable, nor Turing-complete. Conventionally, the ABC would be considered the first electronic ALU – which is integrated into every modern processor's design.

<span class="mw-page-title-main">Binary-coded decimal</span> System of digitally encoding numbers

In computing and electronic systems, binary-coded decimal (BCD) is a class of binary encodings of decimal numbers where each digit is represented by a fixed number of bits, usually four or eight. Sometimes, special bit patterns are used for a sign or other indications.

<span class="mw-page-title-main">Braille</span> Tactile writing system

Braille is a tactile writing system used by people who are visually impaired. It can be read either on embossed paper or by using refreshable braille displays that connect to computers and smartphone devices. Braille can be written using a slate and stylus, a braille writer, an electronic braille notetaker or with the use of a computer connected to a braille embosser.

<span class="mw-page-title-main">Computing</span> Activity involving calculations or computing machinery

Computing is any goal-oriented activity requiring, benefiting from, or creating computing machinery. It includes the study and experimentation of algorithmic processes, and development of both hardware and software. Computing has scientific, engineering, mathematical, technological, and social aspects. Major computing disciplines include computer engineering, computer science, cybersecurity, data science, information systems, information technology, and software engineering.

<span class="mw-page-title-main">Central processing unit</span> Central computer component which executes instructions

A central processing unit (CPU), also called a central processor, main processor, or just processor, is the most important processor in a given computer. Its electronic circuitry executes instructions of a computer program, such as arithmetic, logic, controlling, and input/output (I/O) operations. This role contrasts with that of external components, such as main memory and I/O circuitry, and specialized coprocessors such as graphics processing units (GPUs).

In processor design, microcode serves as an intermediary layer situated between the central processing unit (CPU) hardware and the programmer-visible instruction set architecture of a computer, also known as its machine code. It consists of a set of hardware-level instructions that implement the higher-level machine code instructions or control internal finite-state machine sequencing in many digital processing components. While microcode is utilized in general-purpose CPUs in contemporary desktops, it also functions as a fallback path for scenarios that the faster hardwired control unit is unable to manage.

<span class="mw-page-title-main">PDP-8</span> Minicomputer product line

The PDP-8 is a family of 12-bit minicomputers that was produced by Digital Equipment Corporation (DEC). It was the first commercially successful minicomputer, with over 50,000 units being sold over the model's lifetime. Its basic design follows the pioneering LINC but has a smaller instruction set, which is an expanded version of the PDP-5 instruction set. Similar machines from DEC are the PDP-12 which is a modernized version of the PDP-8 and LINC concepts, and the PDP-14 industrial controller system.

Originally, the word computing was synonymous with counting and calculating, and the science and technology of mathematical calculations. Today, "computing" means using computers and other computing machines. It includes their operation and usage, the electrical processes carried out within the computing hardware itself, and the theoretical concepts governing them.

Reconfigurable computing is a computer architecture combining some of the flexibility of software with the high performance of hardware by processing with flexible hardware platforms like field-programmable gate arrays (FPGAs). The principal difference when compared to using ordinary microprocessors is the ability to add custom computational blocks using FPGAs. On the other hand, the main difference from custom hardware, i.e. application-specific integrated circuits (ASICs) is the possibility to adapt the hardware during runtime by "loading" a new circuit on the reconfigurable fabric, thus providing new computational blocks without the need to manufacture and add new chips to the existing system.

Tim Paterson is an American computer programmer, best known for creating 86-DOS, an operating system for the Intel 8086. This system emulated the application programming interface (API) of CP/M, which was created by Gary Kildall. 86-DOS later formed the basis of MS-DOS, the most widely used personal computer operating system in the 1980s.

A binary code represents text, computer processor instructions, or any other data using a two-symbol system. The two-symbol system used is often "0" and "1" from the binary number system. The binary code assigns a pattern of binary digits, also known as bits, to each character, instruction, etc. For example, a binary string of eight bits can represent any of 256 possible values and can, therefore, represent a wide variety of different items.

<span class="mw-page-title-main">Compatible Time-Sharing System</span> Computer operating system

The Compatible Time-Sharing System (CTSS) was the first general purpose time-sharing operating system. Compatible Time Sharing referred to time sharing which was compatible with batch processing; it could offer both time sharing and batch processing concurrently.

In computing, an interface is a shared boundary across which two or more separate components of a computer system exchange information. The exchange can be between software, computer hardware, peripheral devices, humans, and combinations of these. Some computer hardware devices, such as a touchscreen, can both send and receive data through the interface, while others such as a mouse or microphone may only provide an interface to send data to a given system.

<span class="mw-page-title-main">Charles Petzold</span> American computer programmer

Charles Petzold is an American programmer and technical author on Microsoft Windows applications. He is also a Microsoft Most Valuable Professional and was named one of Microsoft's seven Windows Pioneers.

<span class="mw-page-title-main">Computer</span> Automatic general-purpose device for performing arithmetic or logical operations

A computer is a machine that can be programmed to automatically carry out sequences of arithmetic or logical operations (computation). Modern digital electronic computers can perform generic sets of operations known as programs. These programs enable computers to perform a wide range of tasks. The term computer system may refer to a nominally complete computer that includes the hardware, operating system, software, and peripheral equipment needed and used for full operation; or to a group of computers that are linked and function together, such as a computer network or computer cluster.

<span class="mw-page-title-main">History of general-purpose CPUs</span>

The history of general-purpose CPUs is a continuation of the earlier history of computing hardware.

<span class="mw-page-title-main">Arithmetic logic unit</span> Combinational digital circuit

In computing, an arithmetic logic unit (ALU) is a combinational digital circuit that performs arithmetic and bitwise operations on integer binary numbers. This is in contrast to a floating-point unit (FPU), which operates on floating point numbers. It is a fundamental building block of many types of computing circuits, including the central processing unit (CPU) of computers, FPUs, and graphics processing units (GPUs).

The following outline is provided as an overview of and topical guide to computing:

This is a list of the individual topics in Electronics, Mathematics, and Integrated Circuits that together make up the Computer Engineering field. The organization is by topic to create an effective Study Guide for this field. The contents match the full body of topics and detail information expected of a person identifying themselves as a Computer Engineering expert as laid out by the National Council of Examiners for Engineering and Surveying. It is a comprehensive list and superset of the computer engineering topics generally dealt with at any one time.

The Hack Computer is a theoretical computer design created by Noam Nisan and Shimon Schocken and described in their book, The Elements of Computing Systems: Building a Modern Computer from First Principles.  In using the term “modern”, the authors refer to a digital, binary machine that is patterned according to the von Neumann architecture model.

References

  1. Petzold, Charles (2000). Code: The Hidden Language of Computer Hardware and Software. Microsoft Press. ISBN   0-7356-1131-9.
  2. Petzold, Charles (10 June 2022). "Announcing "Code" 2nd Edition". charlespetzold.com. Retrieved 10 June 2022.
  3. "Code: The Hidden Language of Computer Hardware and Software, 2nd Edition | Microsoft Press Store" . Retrieved 2024-02-20.
  4. 1 2 3 Wall, David. "Amazon.com Interview: Charles Petzold". Amazon.com. Retrieved 13 November 2019.
  5. Atwood, Jeff (3 January 2007). "If Loving Computers is Wrong, I Don't Want to Be Right". Coding Horror. Retrieved 13 November 2019.
  6. "Blazing New Trails". Publishers Weekly . Vol. 246, no. 43. 1999-10-25. pp. 30–31. Retrieved 2022-05-26 via EBSCOhost.
  7. Ryan Houlihan (20 January 2021). "Want to learn to code? Read this book first". Input. Retrieved 26 May 2022.
  8. James grimmelmann (2017). "Fundamentals of Modern Software Syllabus". james.grimmelmann.net. Retrieved 26 May 2022.
  9. Finlayson, Ian. "CPSC 305: Computer Systems and Architecture". ianfinlayson.net. Retrieved 26 May 2022. Computer Systems and Architecture
  10. Kevin Driscoll. "Computational Media" (PDF). dh.virginia.edu. Retrieved 26 May 2022.
  11. Cal Lee (2017). "INLS 465: Understanding Information Technology for Managing Digital Collections". ils.unc.edu. Retrieved 26 May 2022.
  12. Kao (2011). "An Introduction to Computer Science for Everyone Spring, 2011" (PDF). users.cs.northwestern.edu. Retrieved 26 May 2022.