HackerNews Readings
40,000 HackerNews book recommendations identified using NLP and deep learning

Scroll down for comments...

An Introduction to Statistical Learning: with Applications in R (Springer Texts in Statistics)

Gareth James , Daniela Witten , et al.

4.8 on Amazon

72 HN comments

Mastering Regular Expressions

Jeffrey E. F. Friedl

4.6 on Amazon

72 HN comments

Game Programming Patterns

Robert Nystrom

4.8 on Amazon

68 HN comments

Steve Jobs

Walter Isaacson, Dylan Baker, et al.

4.6 on Amazon

67 HN comments

Machine Learning: A Probabilistic Perspective (Adaptive Computation and Machine Learning series)

Kevin P. Murphy

4.3 on Amazon

66 HN comments

The Cuckoo's Egg: Tracking a Spy Through the Maze of Computer Espionage

Cliff Stoll, Will Damron, et al.

4.7 on Amazon

61 HN comments

Programming: Principles and Practice Using C++ (2nd Edition)

Bjarne Stroustrup

4.5 on Amazon

58 HN comments

Ghost in the Wires: My Adventures as the World’s Most Wanted Hacker

Kevin Mitnick, William L. Simon, et al.

4.6 on Amazon

55 HN comments

Modern Operating Systems

Andrew Tanenbaum and Herbert Bos

4.3 on Amazon

54 HN comments

Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software 2nd Edition

Eric Freeman and Elisabeth Robson

4.7 on Amazon

52 HN comments

The Singularity Is Near: When Humans Transcend Biology

Ray Kurzweil, George Wilson, et al.

4.4 on Amazon

51 HN comments

The Everything Store: Jeff Bezos and the Age of Amazon

Brad Stone, Pete Larkin, et al.

4.6 on Amazon

51 HN comments

Compilers: Principles, Techniques, and Tools

Alfred Aho, Monica Lam, et al.

4.1 on Amazon

50 HN comments

Test Driven Development: By Example

Kent Beck

4.4 on Amazon

45 HN comments

Patterns of Enterprise Application Architecture

Martin Fowler

4.5 on Amazon

43 HN comments

Prev Page 2/16 Next
Sorted by relevance

HorkHunteronOct 21, 2019

I would personally say SICP.
Also a bit far fetched, but I would love to see more people read Compilers: Principles, Techniques, and Tools aka The Dragon Book, is what made me fall in love with compilers

RochusonApr 24, 2021

There is a more recent edition of "Compilers: Principles, Techniques, and Tools" worth considering: https://www.amazon.com/Compilers-Principles-Techniques-Tools....

BjoernonMay 11, 2009

I can only recommend the "Dragon Book". Its old but really a great intro into Compilers. I had the benefit of working with it must say I didn't find anything better so far.

Compilers: Principles, Techniques, and Tools
by Alfred V. Aho (Author), Ravi Sethi (Author), Jeffrey D. Ullman (Author)

http://www.amazon.com/Compilers-Principles-Techniques-Alfred...

de107549onJuly 23, 2016

There were different book that impacted different stages of my career:

As a programmer :

1. The C++ Programming Language by Bjarne Stroustrup.

2. Operating System Concepts by Silberschatz

3. Compilers by Aho

As an agile software developer:

1. eXtreme Programming by Kent Beck

2. Pragmatic Programmer by Hunt and Thomas

3. Continuous Delivery by Jez Humble

As an architect:

1. Domain Driven Design by Evans

2. Pattern-Oriented Software Architecture by Buschmann

3. Envisioning Information by Edward Tufte

As a CEO:

1. Good To Great by Collins

2. Lean Startup by Eric Ries

3. Beyond Budgeting by Pfläging

gburtonMar 3, 2019

He almost surely means Compilers: Principles, Techniques, and Tools by Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman [1]... or one of the earlier versions of the book with different authors and titles ;-).

As was common for 80s software textbooks, this was nicknamed for the distinctive image on the cover.

But (and now your edit clarifies that this indeed was your point), perhaps your point is just how difficult it would be to automatically disambiguate nicknames in diverse communities like StackExchange.

[1] https://en.wikipedia.org/wiki/Compilers:_Principles,_Techniq...

jjiceonSep 11, 2020

There are a ton of great books out there! If you're looking for a bit of the whole shebang, check out Compilers: Principles, Techniques, and Tools (aka, The Dragon Book). It's an older book, but a lot of what is described in there is still very relevant and good info. If you want a more high level overview at first, I'd recommend Crafting Interpreters [0] and Writing a Compiler/Interpreter in Go [1]. The latter two focus more on lexing, parsing, and intermediate code generation.

[0] https://craftinginterpreters.com/
[1] https://compilerbook.com/

LukeShuonMar 31, 2021

> To be fair, the first edition of the book is from 1986.

The first edition of

Compilers: Principles, Techniques, and Tools* is from 1986. The first edition of the dragon book wasn't Compilers, it was Principles of Compiler Design (1977). The 2nd edition of Compilers is the 3rd dragon book.

jjuhlonAug 8, 2015

Since you don't say specifically what topics you are interrested in I'll just name a few of my own favorite non-fiction books that have a great signal-to-noise ratio:

- Computer Organization and Design, Fourth Edition: The Hardware/Software Interface

- Advanced Programming in the UNIX Environment

- Effective Modern C++

- SFML Game Development

- Compilers: Principles, Techniques, and Tools

stiffonMay 8, 2013

There is a lovely description of the classic Thompson algorithm of building an NFA from a regular expression and then simulating the NFA with a DFA using two stacks :) in the "Compilers" book by Aho et al. There is also a great article from Russ Cox on it:
http://swtch.com/~rsc/regexp/regexp1.html

I recommend implementing this as an exercise, rarely do you see that much classic CS theory put to a practical use in one place.

harrisreynoldsonJuly 7, 2017

This recent HN post could be useful to you: https://jaseemabid.github.io/2017/07/04/compiler.html

The "dragon" books is one of the classics. (Compilers: Principles, Techniques, and Tools) ... linked to in another comment.

groovy2shoesonOct 30, 2013

This series is one of the best introductions to compiler construction. It doesn't cover everything and it's 25 years old now, but it is the only guide I know of that will hold your hand as you build a working compiler from scratch.

If you have never built a compiler before, I cannot think of a better place to start.

Afterward, if you're curious about theory and advanced topics, I recommend heading to Compilers: Principles, Techniques, and Tools by Aho, Sethi, and Ullman (which covers a lot of theory associated with front-ends) then proceeding to Modern Compiler Construction in ML by Appel (which covers some more advanced topics and back-end stuff). Then you can continue reading about more specific/advanced topics if you like.

cedex12onFeb 4, 2020

Second edition, as in the first "Compilers: Principles, Techniques, and Tools", or the second ?

majikaonNov 4, 2013

/r/compilers [1] has some good resources. You can also check its top submissions [2].

I also recently found Matt Might's Compilers class [3] via a submission here on HN. It has a lot of language-agnostic resources.

[1]: http://www.reddit.com/r/compilers

[2]: http://www.reddit.com/r/compilers/top/

[3]: http://matt.might.net/teaching/compilers/spring-2013/

randcrawonNov 22, 2016

These books are all venerable CS standards (AKA bibles) that teach principles well, though probably not the most up-to-date:

"Compilers, Principles, Techniques and Tools", by Aho, Ullman, Sethi, Lam

"Artificial Intelligence: A Modern Approach", by Russell, Norvig

"Computer Architecture: A Quantitative Approach", by Patterson, Hennessy

"Computer Networks", by Tannenbaum

"Operating System Concepts", by Silberschatz

tptacekonMar 1, 2011

In order, up to 20 votes:

Code Complete 2nd Ed -- Pragmatic Programmer -- SICP -- K&R -- Refactoring -- CLR -- Design Patterns -- Mythical Mammoth -- TAOCP -- Compilers (Dragon Book) -- Head First Design Patterns -- G.E.B. -- Effective C++ -- Programming Pearls -- Code (Petzold) -- Working Effectively With Legacy Code -- Zen and the Art Of Motorcycle Maintenance -- Peopleware -- Clean Code -- Coders at Work -- Surely You're Joking -- Effective Java -- Patterns of Enterprise Application Architecture -- Little Schemer -- The Inmates Are Running The Asylum -- Why's Ruby -- Practice of an Agile Developer -- The Elements of Style -- The Art of Unix Programming -- Joel on Software -- Modern C++ Design -- The Design of Everyday Things -- Test Driven Development -- How To Win Friends And Influence People -- Agile Software Development -- Domain Driven Design -- The Practice of Programming -- Don't Make Me Think -- Writing Solid Code -- Pragmatic Thinking And Learning -- Software Estimation -- Foundations of Programming -- Algorithms + Data Structures = Programs -- The Passionate Programmer -- Facts And Fallacies of Software Engineering -- Getting Real -- The Story About Ping

Depressing.

yanonJan 14, 2009

* Algorithms has CLR (Introduction to Algorithms, by Cormen, Leiserson, Riverst and Stein)

* Compilers has the dragon book (Compilers: Principles, Techniques, and Tools)

* Lisp has a few, as far as I know. There's pg's "ANSI Common Lisp" and "Paradigms of Artificial Intelligence Programming" by Norvig which I hear is fantastic from everyone that read it.

lmmonAug 14, 2012

A working knowledge of algorithms and data structures will benefit you, but you might well be better off reading a book than following this. For the rest I really wouldn't bother; Compilers is an interesting way to learn some things, but not terribly applicable, everything else is stuff you'll pick up yourself or don't really need.

stiffonDec 30, 2012

It's your study that gives you new skills, not the books, having said this, the following guided the most valuable learning experiences in my life:

"What is Mathematics?" by Richard Courant taught me to think at a higher level of abstraction. I read it after I realized the parts of SICP (which recommendation here I obviously second) I liked most were the math-related parts and I think it is fair to call it a SICP for mathematics, at least I don't know a book that comes closer. Then I also used Courant's "Differential and Integral Calculus" and Spivaks "Calculus" with his very detailed answer book, and this way I self-taught myself enough material to finally be able to do some reasonably serious math, e.g. proofs.

After reading "Compilers: Principles, Techniques, and Tools" I wrote my own implementation of grep with state machines, then a compiler for a simple language and finally understood what a programming language really is. "Programming Language Pragmatics" was a very useful book here, too, thanks to it teaching me a range of different possible semantics for common concepts in programming languages I was able to learn new languages much more easily and easily spot bugs that I would otherwise spent hours on.

"The Mindful Way through Depression" and the accompanying CD with guided meditations taught me to meditate and meditation forever changed the way I react do difficult situations.

"Starting Strength" taught me correct exercise technique that completely changed the outcomes of my strength training.

fogusonMar 13, 2008

Off the top of my head:

- Soul of a New Machine

- The Cuckoo's Egg

- Revolution in the Valley

- Fire in the Valley

- Compilers by Sethi, Ullman, Aho

- Masters of Doom

- iWoz

- Steve Jobs & the NeXT Big Thing

- Crypto

- Code

- The Man Who Loved Only Numbers

- The Man Who Knew Infinity

- ANSI Common LISP

Most of the books above are recommended because once reading them you will have an uncontrollable urge to immediately create something brilliant. You will not be able to stop yourself.

-m

csmattryderonJan 6, 2017

I bet you have, but if not, do yourself a favour and grab a copy of "Compilers: Principles, Techniques and Tools" aka "The Dragon Book".

Still got my copy from uni, dog-eared and sticky-noted throughout.

kenjacksononAug 16, 2010

Compilers is a huge topic. Think a topic the size of databases, with way less visibility.

The Dragon book is probably the best introductory text. The new version that came out a few years ago actually did improve the original text a fair bit. Although there is a lack of discussion about SSA in the text.

While most compiler books spend most of the text talking about the front-end of the compiler the crazy interesting stuff is in the backend. The new Dragon book greatly improves here over the old one, but I'd also recommend two other texts:

1) Morgan, Building an Optimizing Compiler -- some people love the writing style. Others hate it, but the material is solid.
2) Muchnick, Advanced Compiler Design and Implementation -- Great book. Must read if you're serious about optimizations.

microtheriononFeb 29, 2012

This is probably going to devolve again into a long discussion, but here's the books with an academic bent that I was most impressed with (many of them 25 years ago, of course):

"Compilers: Principles, Techniques, and Tools" by Alfred V. Aho, Ravi Sethi and Jeffrey D. Ullman (a.k.a the "Dragon Book")
"The Art of Computer Programming" by Donald Knuth
"Introduction to Automata Theory, Languages and Computation" by John E. Hopcroft and Jeffrey D. Ullman

An amazing book, despite the fact that the core thesis of the first edition, that we were on the verge of permanent world domination by RISC architectures, turned out to be dead wrong:

"Computer Architecture: A Quantitative Approach" John L. Hennessy and David A. Patterson

Two books by Niklaus Wirth (A bit out of fashion, maybe because they were written in the "wrong" languages, and maybe because they were TOO concise in today's world of shovelware books. Wirth is the Strunk & White of CS writers):

"Algorithms and Data Structures" by Niklaus Wirth
"Compiler Construction" by Niklaus Wirth

This book might be the one that impressed me most in my undergraduate studies, although I can't say I've done much with what I read there:

"Parallel Program Design: A Foundation" by K. Mani Chandy and Jayadev Misra

matthias509onJune 21, 2021

Another interesting rabbit hole to explore is the compiler. Back in the day I wrote a toy compiler for a college course and used this text book: "Compilers: Principles, Techniques, and Tools". a.ka. "The Dragon book", but I would look at some of the other books here like "Modern Operating Systems" before this.

kyleconJuly 9, 2008

I thought about posting this here after a relative success asking the question on Reddit:

http://www.reddit.com/info/6mikl/comments/

but it looks like you've beaten me to it!

I did create a listing of the most popular books mentioned on the comment thread, if you're interested. The following were mentioned by 4 or more people:

14 The C Programming Language

11 Structure and Interpretation of Computer Programs

8 Introduction to Algorithms

7 Compilers: Principles, Techniques and Tools

6 Programming Erlang

5 The Mythical Man-Month

5 The Pragmatic Programmer

5 Applied Cryptography

4 Beautiful Code

4 The Little Schemer

4 Programming Perl

more here: http://www.reddit.com/info/6mikl/comments/c04abpy

whimsyonNov 3, 2010

Automata Theory, Languages, and Computation (2nd edition) by Hopcroft, Motwani, and Ullman.

Compilers, Principles, Techniques, and Tools, 2nd ed ("The Dragon Book") by Aho, Lam, Sethi, and Ullman.

American Gods, by Neil Gaiman

Harry Potter and the Methods of Rationality, by Eliezer Yudkowsky

AdieuToLogiconOct 4, 2019

> A very instructive exercise for anyone who is or intends to be a software developer is to write some sort of interpreter and/or compiler.

Another exercise, perhaps less demanding in this regard, is to explore using Free Monads[0] to implement an EDSL[1] for a problem domain. Of course, the approachability of this varies based on the person involved.

> For instance, and amusingly enough written in golang, one of the most respected recent books on this topic is `Writing an Interpreter in Go` and its sequel `Writing a Compiler in Go`.

Queue obligatory reference to "the dragon book":

  Compilers: Principles, Techniques, and Tools[2]

0 - https://softwareengineering.stackexchange.com/questions/2427...

1 - https://www.quora.com/What-is-an-embedded-domain-specific-la...

2 - https://suif.stanford.edu/dragonbook/

kazinatoronOct 15, 2016

From the first list, I've only read (3) The C Programming Language and only partially (5) Mythical Man-Month.

From the second: (1) Intro to Algorithms, absolutely cover to cover once, and selected readings additional times; based the Kazlib "dict" module closely on the Red Black tree algorithm (with a slight improvement); (2) Compilers: Principles, Techniques and Tools: Ditto, and in recent years, implemented a regex compiler based on the graph-based descriptions in that book; (3) TAOCP: selected readings only, too huge; (4) Design Patterns: cover to cover, when OOP was fashionable in the 90's; (5) nope, but I read the Stroustrup and Ellis Annotated C++ Reference Manual cover to cover (weekend before starting first C++ gig). That counts as a 1:1 substitute, more or less.

svatonApr 1, 2021

This is trolling, but as most of the HN comments here mention the dragon book and a careless reader may get the same impression, let me reply seriously anyway, and point out that the Turing award is not for that: https://awards.acm.org/about/2020-turing

It is for their pioneering research work in algorithms and theory related to compilers (some of which indeed went into some of their books later). Also, even if you consider only books, they wrote nine books, and neither of the two mentioned as most influential is "the dragon book". The first mentioned is the book by Aho, Hopcraft and Ullman: Design and Analysis of Computer Algorithms (1974)

> a classic in the field and was one of the most cited books in computer science research for more than a decade. It became the standard textbook for algorithms courses throughout the world when computer science was still an emerging field.

This predates other major algorithms textbooks like say Kleinberg and Tardos (2005), Skiena (1st ed 1997), CLRS (1st ed 1990), or Sedgewick (1st ed 1983). Easily the standard textbook for more than a decade (and still used in some universities; it's still in print in some countries).

> Principles of Compiler Design (1977)

This is the "green dragon book", not to be confused with Compilers: Principles, Techniques, and Tools (1986, 2nd ed 2006) aka the "red dragon book" and the one people usually mean by "dragon book". This book is not even mentioned in the award citation. (Their automata book was widely used too.)

So the idea that the award was given solely or even primarily for the dragon book seems entirely inaccurate. The Wikipedia pages on Aho and Ullman give some idea of their work: indexed grammars, nested-stack automata, egrep, fgrep / Aho-Corasick algorithm, the algorithms that went into yacc and lex, AWK (Aho), and "one of the founders of the field of database theory" (Ullman).

[Edit: Shortened my very long comment.]

optymizeronMay 22, 2017

I respect Alan Kay as much as the next guy, but I don't really know what the take-away is here.

Alan Kay having 4-6 hours a day to read books is certainly out of the ordinary and I can't emulate that. That's not "work day" - that seems more like "I don't have to go to work"-day. I suppose we can acknowledge that Alan Kay is making use of his time wisely.

Also, what kind of books are we talking about here? I guarantee you Alan Kay is not reading a technical book like Compilers by Aho in a day. Sure, he might be physically able to read the letters on all the pages in the book, but he's not LEARNING that much information in a day. That book is 2 semesters worth of new information, not to mention that it requires practice to solidify.

Even the author acknowledges this is a case of quantity over quality. How much actual learning is Alan Kay doing? Now that would be a useful point of reference. That would tell me if I have to up my learning game or if I'm doing just fine.

If every week I learn one new technology like RxJava, React Native, P, etc, am I beating Alan Kay at learning, even though I might be reading fewer pages?

weiranonApr 14, 2012

We did this for our Compilers module during my second year CS degree at Nottingham university. It's a very interesting subject and I thought it gave a very good grounding in understanding new languages. Unfortunately we had to write our compiler in Java, we had the option of using Haskell but I didn't really learn get to grips with functional programming until the third year.

dkerstenonSep 9, 2009

$39.99 for a 44 paged PDF? On Amazon.com I can buy a hardcopy version of Compilers: Principles, Techniques, and Tools (2nd Edition) for $86.29 and its got (according to amazon) 1000 pages.

theomegaonJuly 27, 2018

I can recommend the book „Compilers: Principles, Techniques and Tools“ [often called „Dragon Book“]. It explains from the basics with all the theory how to write a Leser, parser and much more features. It is one of the few books I bought after university.

https://en.m.wikipedia.org/wiki/Compilers:_Principles,_Techn...

jgwil2onJune 21, 2020

Main updates as of May 2020:

Computer Architecture: added Computer Systems: A Programmer's Perspective as first recommendation over nand2tetris.

Compilers: Crafting Interpreters added as first recommendation over dragon book.

Distributed Systems: added Designing Data-Intensive Applications as first recommendation over Distributed Systems.

Online availability of some video lectures has changed as well.

muhfuhkuhonAug 16, 2010

They call it the "Dragon Book". Compilers by Alfred Aho. It's supposedly THE standard for compiler design.

klsonDec 31, 2011

He did mention the dragon book which is actually titled Compilers: Principles, Techniques, and Tools but is better known by the dragon title. It is a seminal work and still regarded today even though it is older. But it is by no means a light read, it will definitely give you a deep understanding of computing, but it's a little heavy if you just want to develop web apps.

sigjuiceonAug 28, 2018

It is redundant. See page 1 of most compiler books.

Compilers: Principles, Techniques, and Tools

Simply stated, a compiler is a program that can read a program in one language - the source language - and translate it into an equivalent program in another language - the target language

Engineering a Compiler

Compilers are computer programs that translate a program written in one language into a program written in another language

jeyonAug 22, 2007

> The Art of Computer Programming, by Knuth

Too dense and theoretical, even for someone who enjoys it. Introduction to Algorithms by Cormen, Leiserston, Rivest and Stein is more understandable and practical. It does cover everything useful and is thorough, it just isn't pedantic. [1] http://tinyurl.com/yr257c

> Compilers: Principles, Techniques, and Tools by Aho, Sethi, and Ullman (the dragon book)

Maybe. You might want to try Engineering a Compiler by Cooper and Torczon instead. Again, it's more practical/useful/interesting. But if you're dying to write a parser generator, go ahead and read the Dragon Book. http://tinyurl.com/ys3ql7

> Structure & Interpretation of Computer Programs, by Abelson and Sussman

Available for free: http://mitpress.mit.edu/sicp/full-text/book/book.html

Dunno about the databases book, but the rest are also good.

1. Unless you really, really need those tape sorting algorithms.

wolfgkeonSep 22, 2016

> Out of curiosity, where would one find an explanation (potentially dry, long, and complicated) of the algos you mention here?

> In other words - how did you get to know them?

My book recommendation: Dick Grune, Ceriel J.H. Jacobs - Parsing Techniques: A Practical Guide (Second Edition). Many people will also recommend the "dragon book" (Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman - Compilers: Principles, Techniques, and Tools (Second edition)), which is not a bad book.

If you want to dive deeply into parsing and want to read about all the details over hundreds of pages, the Grune-Jacobs book is clearly the recommdendation. On the other hand, if you just want to understand the theory behind the parsing stage of a compiler (as one part of a compiler - and there are lots of other parts, too), you will probably prefer the dragon book.

scott_sonOct 2, 2012

I'm really just describing how a compiler works. Are you looking for references on the compilation process? There's a classic series called "Let's Build a Compiler" (http://news.ycombinator.com/item?id=1727004) available online that walks through building a simple compiler. Then there's also actual textbooks, but I was not impressed with either of the two textbooks I've had on the topic. Many people recommend "Compilers: Principles, Techniques, and Tools" (http://dragonbook.stanford.edu/) also referred to as just the dragon book. If you're not averse to textbooks, you may also want to check out Michael Scott's "Programming Language Pragmatics" (http://www.cs.rochester.edu/~scott/pragmatics/).

T-RonApr 6, 2011

It really depends on what you feel you're missing and what you're hoping to do (definitions of "daily work" vary widely). If you're looking to get up on theory by doing your own program of sorts, you could do worse than start with these (in roughly this order):

Structure and Interpretation of Computer Programs - Abelson, Sussman, and Sussman

Introduction to Algorithms - Cormen, Leiserson, Rivest, and Stein

The Art of Assembly Language - Hyde

a digital logic book (not sure which is most recommended), and an architecture book (see reply by tftfmacedo)

Modern Operating Systems - Tanenbaum

Introduction to the Theory of Computation - Sipser

Compilers: Principles, Techniques, and Tools - Aho, Lam, Sethi, and Ullman (a.k.a. "Dragon Book")

Programming Language Pragmatics - Scott

A database design book (one that covers Relational Algebra, not just a book on SQL), and maybe a book on Networks. Also, Roy Fielding's paper on REST is both academic and applicable (and more approachable than you'd expect of a Ph.D paper). If you want to go all the way, an undergraduate program usually also has Calculus, Discrete Math, Linear Algebra, and Statistics. Some schools would also require Physics and Differential Equations. I'm sure I'm missing some topics, too, particularly electives.

If you can get through those and the associated problem sets, you'll have a better foundation than most.

tlrobinsononJan 25, 2008

Compilers is one of the few classes I really regret not taking in college. Fortunately, I discovered the unprotected URL to my university's online lectures site (no you can't have it) and might just have to watch this semester's class...

I started watching them, and the professor recommends this book (and the new edition of the Dragon Book):

http://www.amazon.com/Advanced-Compiler-Design-Implementatio...

xpeonFeb 9, 2017

A quick search on Amazon gives:

Compilers: Principles, Techniques, and Tools

Engineering a Compiler, Second Edition

Writing Compilers and Interpreters: A Software Engineering Approach

Compiler Construction: Principles and Practice

Compilers: Principles and Practice

Language Implementation Patterns

Crafting a Compiler with C

Compiler Design in C

Principles of Compiler Design

Modern Compiler Implementation in Java

srijanshettyonOct 21, 2019

The books that really shaped my understanding of CS are:

- Theoretical CS:
- Compilers: Principles, Techniques, and Tools (The
Dragon Book)
- Introduction to the Theory of Computation, Sipser

- Programming:
- Java Concurrency In Practice, Brian Goetz
- Generics in the Java Programming Language, Gilad Bracha
- Professor Frisby's Mostly Adequate Guide to Functional
Programming
- Unix for Poets
- Modern C++

awjonApr 7, 2011

What I have in the room with me:

1. Modern Algebra by John R. Durbin

2. Introduction to the Theory of Computation by Michael Sipser

3. Machine Learning - An Algorithmic Perspective by Stephen Marsland (not quite on the same level as the above two, but still pretty solid)

I think Tanenbaum's Operating System and Appel's Compilers books both go in this category too, they're big but not compared to their subject matter. But, I've seen enough people disappointed in both to think this is more my personal opinion at play.

ori_bonJuly 11, 2010

I don't know if it has a name (it seems to simply be referred to as "an efficient sparse set representation"), but I think I initially remember seeing it introduced in "Compilers: Principles, Techniques, and Tools" in an exercise at some point in the past.

A good description of it is here: http://research.swtch.com/2008/03/using-uninitialized-memory...

dfrankeonAug 22, 2007

In no particular order:

The Art of Computer Programming, by Knuth

Compilers: Principles, Techniques, and Tools by Aho, Sethi, and Ullman (the dragon book)

Structure & Interpretation of Computer Programs, by Abelson and Sussman

On Lisp, by Graham

A First Course in Database Systems, by Ullman and Widom

The C Programming Language, by Kernighan and Ritchie

The Cathedral and the Bazaar, by Raymond

lastofusonNov 27, 2015

It might be worth picking up some CS textbooks if you are someone who can learn from books well.

Things that have helped me the most from my CS degree:

* Learning the internals of operating systems and the UNIX API (Modern Operating Systems (3rd Edition), Advanced Programming in the UNIX Environment, 3rd Edition)

* Network programming (Unix Network Programming, Volume 1 and everything else really by W. Richard Stevens)

* Compilers (Compilers: Principles, Techniques, and Tools is the goto book, but I found it hard to read stand-alone. Might be worth finding a different textbook here)

* Algorithms and data structures (Introduction to Algorithms, 3rd Edition)

* Learning the basics of how CPUs work form a computer engineering book is useful as well, along with assembly language, and how higher level languages like C get translated to ASM and eventually machine code. I can't quite remember what text books I used for this.

Compilers was useful, even though I've never written one professionally, as knowing how to parse anything well save you headaches when someone tells you to parse some HTML for instance. You will also pick up regular expressions and some fun useful data structures.

yummyfajitasonJuly 6, 2010

This site rocks. Some pirated books well worth reading (buy the book if you can afford it):

Witten, Moffat, Bell. Managing gigabytes: compressing and indexing documents and images (How to build a search engine)

Aho A.V., Lam M.S., Sethi R., Ullman J.D. Compilers: Principles, techniques, and tools (Dragon book)

Anyone else have any suggestions?

Energy1onNov 30, 2014

As an outsider, I am trying to learn the basics of computer science. I was recommended this book along with the ones listed below. Do I need to study them all or can I do one r two of them and move on?

Introduction to the Theory of Computation by Sipser.

Programming Language Pragmatics by Michael L Scott.

Compilers: Principles, Techniques, and Tools by Aho et al.

Concepts, Techniques, and Models of Computer Programming by Van Roy.

Intro to Computing Systems by Yale Patt & Sanjay Patel.

Computer Systems: A Programmer's Perspective by Randal Bryant & David O'Hallaron.

Built withby tracyhenry

.

Follow me on