Muutke küpsiste eelistusi

E-raamat: Secret Life of Programs

  • Formaat: EPUB+DRM
  • Ilmumisaeg: 06-Aug-2019
  • Kirjastus: No Starch Press,US
  • Keel: eng
  • ISBN-13: 9781593279714
  • Formaat - EPUB+DRM
  • Hind: 32,03 €*
  • * hind on lõplik, st. muud allahindlused enam ei rakendu
  • Lisa ostukorvi
  • Lisa soovinimekirja
  • See e-raamat on mõeldud ainult isiklikuks kasutamiseks. E-raamatuid ei saa tagastada.
  • Formaat: EPUB+DRM
  • Ilmumisaeg: 06-Aug-2019
  • Kirjastus: No Starch Press,US
  • Keel: eng
  • ISBN-13: 9781593279714

DRM piirangud

  • Kopeerimine (copy/paste):

    ei ole lubatud

  • Printimine:

    ei ole lubatud

  • Kasutamine:

    Digitaalõiguste kaitse (DRM)
    Kirjastus on väljastanud selle e-raamatu krüpteeritud kujul, mis tähendab, et selle lugemiseks peate installeerima spetsiaalse tarkvara. Samuti peate looma endale  Adobe ID Rohkem infot siin. E-raamatut saab lugeda 1 kasutaja ning alla laadida kuni 6'de seadmesse (kõik autoriseeritud sama Adobe ID-ga).

    Vajalik tarkvara
    Mobiilsetes seadmetes (telefon või tahvelarvuti) lugemiseks peate installeerima selle tasuta rakenduse: PocketBook Reader (iOS / Android)

    PC või Mac seadmes lugemiseks peate installima Adobe Digital Editionsi (Seeon tasuta rakendus spetsiaalselt e-raamatute lugemiseks. Seda ei tohi segamini ajada Adober Reader'iga, mis tõenäoliselt on juba teie arvutisse installeeritud )

    Seda e-raamatut ei saa lugeda Amazon Kindle's. 

A primer on the underlying technologies that allow computer programs to work. Covers topics like computer hardware, combinatorial logic, sequential logic, computer architecture, computer anatomy, and Input/Output.

Computer programming is not abstract and programs run on a machine. Knowing how computers work and how programs run on them is essential to becoming a better programmer, and understanding underlying technologies can help you develop a sense of what can go wrong. Foundations of Computer Programming fills in the gaps in computer education by giving readers a look under the hood of programming, at the machine. Readers learn how software behaves when running on hardware; how programs manipulate data in memory; how computers process languages; and how web browsers work. They'll also learn how to write efficient programs, computer security basics, and real-world considerations to have in mind when writing code.

Arvustused

Amazing . . . I highly recommend it if you don't have a very 'computer science' background, like me. Tony Messias, tonysm.com

This book was truly a good companion to the start of my CS degree. It gave me background in the computer engineering sphere and a solid foundation in many CS topics, and I am already starting to experience many of the lessons this book gives. Ben Miller, Goodreads Reviewer

This book is amazing. I bought it to refresh my programming basics for courses I teach programming on industrial PLC computers, from beginner to expert. It delves into so much more. Humorous and informative. I highly recommend. Gil Cabrera, Amazon Reviewer

If you are just learning to code, or if you are a developer who wants a deeper understanding of how your code interacts with the machine, highly recommend! Carmen H. Andoh, @carmatrocity

If you are looking for a wonderfully complete tour through how a computer actually works from first principles all the way through running a piece of software, The Secret Life of Programs from @nostarch is the way to go. Nick Maxwell, @CodiferousCoder

Muu info

A primer on the underlying technologies that allow computer programs to work. Covers topics like computer hardware, combinatorial logic, sequential logic, computer architecture, computer anatomy, and Input/Output.
Acknowledgments xix
Preface xxi
Introduction xxv
Why Good Programming is Important
xxvi
Learning to Code is Only a Starting Place
xxvii
Importance of Low-Level Knowledge
xxviii
Who Should Read This Book?
xxviii
What Are Computers?
xxix
What Is Computer Programming?
xxix
Coding, Programming, Engineering, and Computer Science
xxxii
The Landscape
xxxiii
What's in This Book
xxxv
1 The Internal Language Of Computers 1(32)
What Is Language?
2(1)
Written Language
2(1)
The Bit
3(1)
Logic Operations
3(3)
Boolean Algebra
4(1)
De Morgan's Law
5(1)
Representing Integers Using Bits
6(8)
Representing Positive Numbers
6(2)
Binary Addition
8(2)
Representing Negative Numbers
10(4)
Representing Real Numbers
14(4)
Fixed-Point Representation
14(1)
Floating-Point Representation
15(2)
The IEEE Floating-Point Standard
17(1)
Binary-Coded Decimal System
18(1)
Easier Ways to Work with Binary Numbers
18(2)
Octal Representation
18(1)
Hexadecimal Representation
19(1)
Representing the Context
20(1)
Naming Groups of Bits
20(2)
Representing Text
22(3)
The American Standard Code for Information Interchange
22(2)
The Evolution of Other Standards
24(1)
Unicode Transformation Format 8-bit
24(1)
Using Characters to Represent Numbers
25(2)
Quoted-Printable Encoding
26(1)
Base64 Encoding
26(1)
URL Encoding
27(1)
Representing Colors
27(4)
Adding Transparency
29(1)
Encoding Colors
30(1)
Summary
31(2)
2 Combinatorial Logic 33(36)
The Case for Digital Computers
34(7)
The Difference Between Analog and Digital
35(1)
Why Size Matters in Hardware
36(1)
Digital Makes for More Stable Devices
37(1)
Digital in an Analog World
38(2)
Why Bits Are Used Instead of Digits
40(1)
A Short Primer on Electricity
41(6)
Using Plumbing to Understand Electricity
41(3)
Electrical Switches
44(3)
Building Hardware for Bits
47(6)
Relays
47(3)
Vacuum Tubes
50(1)
Transistors
51(1)
Integrated Circuits
52(1)
Logic Gates
53(7)
Improving Noise Immunity with Hysteresis
54(1)
Differential Signaling
55(2)
Propagation Delay
57(1)
Output Variations
58(2)
Building More Complicated Circuits
60(7)
Building an Adder
60(3)
Building Decoders
63(1)
Building Demultiplexers
64(1)
Building Selectors
65(2)
Summary
67(2)
3 Sequential Logic 69(24)
Representing Time
70(9)
Oscillators
70(1)
Clocks
71(1)
Latches
71(2)
Gated Latches
73(1)
Flip-Flops
74(3)
Counters
77(1)
Registers
78(1)
Memory Organization and Addressing
79(6)
Random-Access Memory
82(1)
Read-Only Memory
83(2)
Block Devices
85(3)
Flash Memory and Solid State Disks
88(1)
Error Detection and Correction
88(2)
Hardware vs. Software
90(1)
Summary
91(2)
4 Computer Anatomy 93(24)
Memory
94(2)
Input and Output
96(1)
The Central Processing Unit
97(5)
Arithmetic and Logic Unit
97(2)
Shiftiness
99(1)
Execution Unit
100(2)
Instruction Set
102(1)
Instructions
102(7)
Addressing Modes
104(1)
Condition Code Instructions
105(1)
Branching
105(1)
Final Instruction Set
106(3)
The Final Design
109(1)
The Instruction Register
109(4)
Data Paths and Control Signals
109(1)
Traffic Control
110(3)
RISC vs. CISC Instruction Sets
113(1)
Graphics Processing Units
114(1)
Summary
115(2)
5 Computer Architecture 117(24)
Basic Architectural Elements
118(2)
Processor Cores
118(1)
Microprocessors and Microcomputers
119(1)
Procedures, Subroutines, and Functions
120(2)
Stacks
122(3)
Interrupts
125(3)
Relative Addressing
128(2)
Memory Management Units
130(2)
Virtual Memory
132(1)
System and User Space
133(1)
Memory Hierarchy and Performance
133(2)
Coprocessors
135(1)
Arranging Data in Memory
136(1)
Running Programs
137(1)
Memory Power
138(1)
Summary
139(2)
6 Communications Breakdown 141(42)
Low-Level I/O
142(14)
I/O Ports
142(2)
Push My Buttons
144(2)
Let There Be Lights
146(1)
Lights, Action,
147(1)
Bright Ideas
148(1)
2n Shades of Gray
149(1)
Quadrature
150(2)
Parallel Communication
152(1)
Serial Communication
152(2)
Catch a Wave
154(2)
Universal Serial Bus
156(1)
Networking
156(4)
Modern LANs
158(1)
The Internet
158(2)
Analog in the Digital World
160(16)
Digital-to-Analog Conversion
160(2)
Analog-to-Digital Conversion
162(3)
Digital Audio
165(8)
Digital Images
173(1)
Video
174(2)
Human Interface Devices
176(5)
Terminals
176(1)
Graphics Terminals
177(1)
Vector Graphics
178(2)
Raster Graphics
180(1)
Keyboard and Mouse
181(1)
Summary
181(2)
7 Organizing Data 183(34)
Primitive Data Types
184(1)
Arrays
185(2)
Bitmaps
187(1)
Strings
188(1)
Compound Data Types
189(2)
Singly Linked Lists
191(4)
Dynamic Memory Allocation
195(1)
More Efficient Memory Allocation
196(1)
Garbage Collection
197(1)
Doubly Linked Lists
198(1)
Hierarchical Data Structures
199(4)
Storage for the Masses
203(1)
Databases
204(2)
Indices
206(1)
Moving Data Around
206(4)
Vectored I/O
210(1)
Object-Oriented Pitfalls
211(1)
Sorting
212(1)
Making a Hash of Things
213(2)
Efficiency vs. Performance
215(1)
Summary
216(1)
8 Language Processing 217(20)
Assembly Language
217(2)
High-Level Languages
219(1)
Structured Programming
220(1)
Lexical Analysis
221(5)
State Machines
223(1)
Regular Expressions
224(2)
From Words to Sentences
226(2)
The Language-of-the-Day Club
228(1)
Parse Trees
228(3)
Interpreters
231(1)
Compilers
232(2)
Optimization
234(2)
Be Careful with Hardware
236(1)
Summary
236(1)
9 The Web Browser 237(22)
Markup Languages
238(1)
Uniform Resource Locators
239(1)
HTML Documents
240(2)
The Document Object Model
242(2)
Tree Lexicon
243(1)
Interpreting the DOM
244(1)
Cascading Style Sheets
244(4)
XML and Friends
248(3)
JavaScript
251(2)
Query
253(1)
SVG
254(1)
HTML5
255(1)
JSON
255(1)
Summary
256(3)
10 Application And System Programming 259(24)
Guess the Animal Version 1: HTML and JavaScript
262(5)
Application-Level Skeleton
263(1)
Web Page Body
263(1)
The JavaScript
264(3)
The CSS
267(1)
Guess the Animal Version 2: C
267(15)
Terminals and the Command Line
267(1)
Building the Program
268(1)
Terminals and Device Drivers
268(1)
Context Switching
269(2)
Standard I/O
271(1)
Circular Buffers
272(1)
Better Code Through Good Abstractions
273(1)
Some Mechanics
274(1)
Buffer Overflow
275(1)
The C Program
275(6)
Training
281(1)
Summary
282(1)
11 Shortcuts And Approximations 283(52)
Table Lookup
284(6)
Conversion
284(1)
Texture Mapping
285(3)
Character Classification
288(2)
Integer Methods
290(11)
Straight Lines
292(6)
Curves Ahead
298(3)
Polynomials
301(1)
Recursive Subdivision
301(12)
Spirals
301(3)
Constructive Geometry
304(7)
Shifting and Masking
311(2)
More Math Avoidance
313(5)
Power Series Approximations
313(1)
The CORDIC Algorithm
313(5)
Somewhat Random Things
318(15)
Space-Filling Curves
319(1)
L-Systems
320(2)
Going Stochastic
322(1)
Quantization
323(10)
Summary
333(2)
12 Deadlocks And Race Conditions 335(16)
What Is a Race Condition
336(1)
Shared Resources
337(1)
Processes and Threads
337(2)
Locks
339(4)
Transactions and Granularity
340(1)
Waiting for a Lock
341(1)
Deadlocks
341(1)
Short-Term Lock Implementation
342(1)
Long-Term Lock Implementation
343(1)
Browser JavaScript
343(3)
Asynchronous Functions and Promises
346(4)
Summary
350(1)
13 Security 351(34)
Overview of Security and Privacy
352(10)
Threat Model
352(1)
Trust
353(2)
Physical Security
355(1)
Communications Security
356(1)
Modern Times
357(2)
Metadata and Surveillance
359(1)
The Social Context
359(2)
Authentication and Authorization
361(1)
Cryptography
362(10)
Steganography
362(1)
Substitution Ciphers
363(2)
Transposition Ciphers
365(1)
More Complex Ciphers
366(1)
One-Time Pads
367(1)
The Key Exchange Problem
367(1)
Public Key Cryptography
368(1)
Forward Secrecy
369(1)
Cryptographic Hash Functions
369(1)
Digital Signatures
370(1)
Public Key Infrastructure
370(1)
Blockchain
371(1)
Password Management
371(1)
Software Hygiene
372(12)
Protect the Right Stuff
372(1)
Triple-Check Your Logic
373(1)
Check for Errors
373(1)
Minimize Attack Surfaces
373(1)
Stay in Bounds
374(1)
Generating Good Random Numbers Is Hard
375(1)
Know Thy Code
376(2)
Extreme Cleverness Is Your Enemy
378(1)
Understand What's Visible
378(1)
Don't Overcollect
379(1)
Don't Hoard
379(1)
Dynamic Memory Allocation Isn't Your Friend
379(2)
Garbage Collection Is Not Your Friend Either
381(1)
Data as Code
382(2)
Summary
384(1)
14 Machine Intelligence 385(28)
Overview
386(2)
Machine Learning
388(19)
Bayes
389(1)
Gauss
390(3)
Sobel
393(5)
Canny
398(1)
Feature Extraction
399(2)
Neural Networks
401(5)
Using Machine Learning Data
406(1)
Artificial Intelligence
407(2)
Big Data
409(3)
Summary
412(1)
15 Real-World Considerations 413(32)
The Value Proposition
414(2)
How We Got Here
416(9)
A Short History
416(3)
Open Source Software
419(1)
Creative Commons
420(1)
The Rise of Portability
420(1)
Package Management
421(1)
Containers
422(1)
Java
422(2)
Node.js
424(1)
Cloud Computing
424(1)
Virtual Machines
425(1)
Portable Devices
425(1)
The Programming Environment
425(5)
Are You Experienced?
426(1)
Learning to Estimate
426(1)
Scheduling Projects
426(1)
Decision Making
427(1)
Working with Different Personalities
428(1)
Navigating Workplace Culture
429(1)
Making Informed Choices
430(1)
Development Methodologies
430(2)
Project Design
432(4)
Writing It Down
432(1)
Fast Prototyping
432(1)
Interface Design
433(3)
Reusing Code or Writing Your Own
436(1)
Project Development
436(6)
The Talk
437(2)
Portable Code
439(1)
Source Control
440(1)
Testing
440(1)
Bug Reporting and Tracking
441(1)
Refactoring
441(1)
Maintenance
441(1)
Be Stylish
442(1)
Fix, Don't Re-create
443(1)
Summary
444(1)
Index 445
Jonathan E. Steinhart has designed graphics hardware and software, and built CAD systems, graphics workstations, circuit simulators, power plants, and languages for integrated circuit design. He has consulted for Apple, Intel, Sun, Welch-Allyn, Lulu, and many others.