I started programming in high school and wrote software in many domains for 30 years, from the early ARPA-net to massive credit card software. I wrote a FORTRAN compiler with one assistant in a year. I got hassled to do proper project management. Nightmare. It was all about inflated expectations instead of moving fast and winning. Then in 25 years of venture capital investing, I learned from many young companies how the little startups built quickly and well things that giants like Google literally could not get done. This book and my others spell out what I learned from the little guys who beat the giants.
This is the defining book on the C language, written by the authors of the language and published in 1978.
By the early 1980’s it became the standard for writing systems software, helped by the fact that the UNIX operating system was written in it. UNIX grew to become the world’s dominant operating system, running over 90% of the world’s web servers.
By the time I encountered the language I already had programmed extensively in assembler, COBOL, FORTRAN, and other languages. I had written a commercial FORTRAN compiler. The language changed my world, and this book was unique then and now for being written by the creators of the language that changed the world of programming forever.
Nothing about all the languages since C makes things better – yes, including C++. All they do is add complexity and put unnecessary constraints on language, along with continuing the focus on language when your goal as a programmer should be to write as little code as possible, putting everything you can into easily editable metadata.
This edition describes C as defined by the ANSI standard. This book is meant to help the reader learn how to program in C. The book assumes some familiarity with basic programming concepts like variables, assignment statements, loops, and functions. A novice programmer should be able to read along and pick up the language.
This is the definitive book series on algorithms and the core of computer programming.
Unlike most such books, Knuth is a real programmer, deep into the details of the craft, to the point of creating his own assembler language and typesetting generation system. It’s partly the substance of the algorithms and their analysis, but even more is the way he models a way of thinking about and solving complexity that makes this a must-read series.
Finally, after a wait of more than thirty-five years, the first part of Volume 4 is at last ready for publication. Check out the boxed set that brings together Volumes 1 - 4A in one elegant case, and offers the purchaser a $50 discount off the price of buying the four volumes individually.
The Art of Computer Programming, Volumes 1-4A Boxed Set, 3/e
Attending Harvard College gave me the opportunity to collaborate with great programmers in creating the early ARPA-net. But the best course I took was on compiler theory and construction, using an early draft of the material in this book.
Of course I learned how to build a compiler, which I did as my first job after graduating. But more important, I learned that a well-built compiler is a small amount of language-independent code with two major parts.
First the input part that realizes the content of the lexical and grammatical metadata, like today’s LEX and YACC, to turn the program being compiled into a semantic model.
Second the code generator that reads the semantic model and, based on generative model metadata, turns the semantics of the program being compiled to whatever form you want, whether executable code, assembler language, byte code or whatever.
This approach, while indispensable for compilers and interpreters, is also the model for taking a meta-data-driven approach to building software applications of any kind.
Nagel’s book is the most understandable explanation I’ve found about one of the most cosmically seminal math proofs: Godel’s incompleteness theorem.
It takes the idea of recursion and self-reference to the ultimate conclusion about truth, understanding, and boundaries of existence. This may sound hootie-tootie, but think of the sequence of abstraction in math: arithmetic, algebra, calculus, etc.
Once you add in recursion (self-reference), you’ve got the most important concepts underlying true understanding and productivity in software – something never discussed in computer science, and certainly not in practical programming.
Think about the so-called Von Neumann computer architecture, which underlies all modern computers – instructions are data, stored in the same place as ordinary data, and some instructions write data that are instructions. This is recursion taken to the next level.
An accessible explanation of Kurt Goedel's groundbreaking work in mathematical logic
In 1931 Kurt Goedel published his fundamental paper, "On Formally Undecidable Propositions of Principia Mathematica and Related Systems." This revolutionary paper challenged certain basic assumptions underlying much research in mathematics and logic. Goedel received public recognition of his work in 1951 when he was awarded the first Albert Einstein Award for achievement in the natural sciences-perhaps the highest award of its kind in the United States. The award committee described his work in mathematical logic as "one of the greatest contributions to the sciences in recent times."
However, few…
This book explains fundamental concepts of recursion, symmetry, intelligence, focusing on math, art, and music.
It’s full of wonderful tales, amazing facts, little-talked-about relationships among math, art, and music (and by reference computing), not to mention puns and amusing language. If you want to become a better person, this is a good book to read. If you want to understand and succeed in life, ditto.
If you let this book lift your mind to its space and height, you will find yourself vastly more capable of creating and understanding software. It’s a wonderful companion to the Ernest Nagel book I’ve recommended.
Douglas Hofstadter's book is concerned directly with the nature of maps" or links between formal systems. However, according to Hofstadter, the formal system that underlies all mental activity transcends the system that supports it. If life can grow out of the formal chemical substrate of the cell, if consciousness can emerge out of a formal system of firing neurons, then so too will computers attain human intelligence. Goedel, Escher, Bach is a wonderful exploration of fascinating ideas at the heart of cognitive science: meaning, reduction, recursion, and much more.
If your goal is to learn the standard techniques of software, don't waste your time with my books. If you don’t have the time or money to beat the industry giants with 100X your resources, this book has my observations about how many small groups over decades have used methods that aren’t taught to compete and win.
Peacetime software is all about requirements, estimates, and meeting the expectations that have been set. If you say it will take 100 programmers two years to do it and you sort of get it done in 23 months, you’re a hero. But if you’re in the Olympics, all that matters is running faster than everyone else. The MBA’s and experienced managers will say you’re breaking the rules. Wrong. You’re just following better ones.
Act Like an Author, Think Like a Business is for anyone who wants to learn how to make money with their book and make a living as an author. Many authors dive into the literary industry without taking time to learn the business side of being an author, which can hinder book sales and the money that can be made as an author.
This resource serves as a guide to mastering the art of financial literary success and to help avoid the mistakes that many authors make while learning the ropes on their own. This book helps authors “think outside…
Act Like an Author, Think Like a Business: Ways to Achieve Financial Literary Success
Do you want to make money with your book? Do you want to make a living as an author? There’s more to doing so than simply writing and publishing your book. Many authors dive into the literary industry without taking time to learn the business side of being an author. This could dramatically hinder your book sales and the money you can make as an author. Without a guide such as this, mastering the art of financial literary success can take you years, and you’ll be sure to make mistakes during the learning phase. Some mistakes could cost you money;…