#410 in Computers & technology books
Use arrows to jump to the previous/next product

Reddit mentions of Advanced Compiler Design and Implementation

Sentiment score: 6
Reddit mentions: 10

We found 10 Reddit mentions of Advanced Compiler Design and Implementation. Here are the top ones.

Advanced Compiler Design and Implementation
Buying options
View on Amazon.com
or
    Features:
  • 3mm diameter, 1kg net weight, ABS Filament
  • Filament Roundness: +/- 0.07mm
  • Filament Diameter: +/- 0.05mm
  • Recommended Print Temperature: 230 - 240°C, depending on printer model
  • Compatible with RepRap, Makerbot, Afinia, Solidoodle or any standard spool based 3D printer
Specs:
Height9.75 Inches
Length7.75 Inches
Number of items1
Weight3.60014873846 Pounds
Width1.75 Inches

idea-bulb Interested in what Redditors like? Check out our Shuffle feature

Shuffle: random products popular on Reddit

Found 10 comments on Advanced Compiler Design and Implementation:

u/rolfr · 57 pointsr/ReverseEngineering

I started from scratch on the formal CS side, with an emphasis on program analysis, and taught myself the following starting from 2007. If you're in the United States, I recommend BookFinder to save money buying these things used.

On the CS side:

  • Basic automata/formal languages/Turing machines; Sipser is recommended here.
  • Basic programming language theory; I used University of Washington CSE P505 online video lectures and materials and can recommend it.
  • Formal semantics; Semantics with Applications is good.
  • Compilers. You'll need several resources for this; my personal favorites for an introductory text are Appel's ML book or Programming Language Pragmatics, and Muchnick is mandatory for an advanced understanding. All of the graph theory that you need for this type of work should be covered in books such as these.
  • Algorithms. I used several books; for a beginner's treatment I recommend Dasgupta, Papadimitriou, and Vazirani; for an intermediate treatment I recommend MIT's 6.046J on Open CourseWare; for an advanced treatment, I liked Algorithmics for Hard Problems.

    On the math side, I was advantaged in that I did my undergraduate degree in the subject. Here's what I can recommend, given five years' worth of hindsight studying program analysis:

  • You run into abstract algebra a lot in program analysis as well as in cryptography, so it's best to begin with a solid foundation along those lines. There's a lot of debate as to what the best text is. If you're never touched the subject before, Gallian is very approachable, if not as deep and rigorous as something like Dummit and Foote.
  • Order theory is everywhere in program analysis. Introduction to Lattices and Order is the standard (read at least the first two chapters; the more you read, the better), but I recently picked up Lattices and Ordered Algebraic Structures and am enjoying it.
  • Complexity theory. Arora and Barak is recommended.
  • Formal logic is also everywhere. For this, I recommend the first few chapters in The Calculus of Computation (this is an excellent book; read the whole thing).
  • Computability, undecidability, etc. Not entirely separate from previous entries, but read something that treats e.g. Goedel's theorems, for instance The Undecidable.
  • Decision procedures. Read Decision Procedures.
  • Program analysis, the "accessible" variety. Read the BitBlaze publications starting from the beginning, followed by the BAP publications. Start with these two: TaintCheck and All You Ever Wanted to Know About Dynamic Taint Analysis and Forward Symbolic Execution. (BitBlaze and BAP are available in source code form, too -- in OCaml though, so you'll want to learn that as well.) David Brumley's Ph.D. thesis is an excellent read, as is David Molnar's and Sean Heelan's. This paper is a nice introduction to software model checking. After that, look through the archives of the RE reddit for papers on the "more applied" side of things.
  • Program analysis, the "serious" variety. Principles of Program Analysis is an excellent book, but you'll find it very difficult even if you understand all of the above. Similarly, Cousot's MIT lecture course is great but largely unapproachable to the beginner. I highly recommend Value-Range Analysis of C Programs, which is a rare and thorough glimpse into the development of an extremely sophisticated static analyzer. Although this book is heavily mathematical, it's substantially less insane than Principles of Program Analysis. I also found Gogul Balakrishnan's Ph.D. thesis, Johannes Kinder's Ph.D. thesis, Mila Dalla Preda's Ph.D. thesis, Antoine Mine's Ph.D. thesis, and Davidson Rodrigo Boccardo's Ph.D. thesis useful.
  • If you've gotten to this point, you'll probably begin to develop a very selective taste for program analysis literature: in particular, if it does not have a lot of mathematics (actual math, not just simple concepts formalized), you might decide that it is unlikely to contain a lasting and valuable contribution. At this point, read papers from CAV, SAS, and VMCAI. Some of my favorite researchers are the Z3 team, Mila Dalla Preda, Joerg Brauer, Andy King, Axel Simon, Roberto Giacobazzi, and Patrick Cousot. Although I've tried to lay out a reasonable course of study hereinbefore regarding the mathematics you need to understand this kind of material, around this point in the course you'll find that the creature we're dealing with here is an octopus whose tentacles spread in every direction. In particular, you can expect to encounter topology, category theory, tropical geometry, numerical mathematics, and many other disciplines. Program analysis is multi-disciplinary and has a hard time keeping itself shoehorned in one or two corners of mathematics.
  • After several years of wading through program analysis, you start to understand that there must be some connection between theorem-prover based methods and abstract interpretation, since after all, they both can be applied statically and can potentially produce similar information. But what is the connection? Recent publications by Vijay D'Silva et al (1, 2, 3, 4, 5) and a few others (1 2 3 4) have begun to plough this territory.
  • I'm not an expert at cryptography, so my advice is basically worthless on the subject. However, I've been enjoying the Stanford online cryptography class, and I liked Understanding Cryptography too. Handbook of Applied Cryptography is often recommended by people who are smarter than I am, and I recently picked up Introduction to Modern Cryptography but haven't yet read it.

    Final bit of advice: you'll notice that I heavily stuck to textbooks and Ph.D. theses in the above list. I find that jumping straight into the research literature without a foundational grounding is perhaps the most ill-advised mistake one can make intellectually. To whatever extent that what you're interested in is systematized -- that is, covered in a textbook or thesis already, you should read it before digging into the research literature. Otherwise, you'll be the proverbial blind man with the elephant, groping around in the dark, getting bits and pieces of the picture without understanding how it all forms a cohesive whole. I made that mistake and it cost me a lot of time; don't do the same.
u/nostrademons · 41 pointsr/programming

You missed out. Compiler design was my favorite course in college.

Anyway, if you don't mind reading textbooks and digging deep into them, you can teach yourself compilers. The seminal work is the Dragon Book. I'd highly recommend supplementing is with Appel's Modern Compiler Implementation in ML (if you're a wimp, you can get the Java or C versions, but I wouldn't recommend it). SICP can also give you some useful perspectives. If you want to go further, there's Advanced Compiler Design and Implementation by Steven Muchnik.

There are also a couple of web tutorials that give you a really quick, whirlwind overview. Graydon Hoare's One Day Compilers uses Ocaml to write a native-code compiler for a Make-like language in 40 slides. My Write yourself a scheme in 48 hours has you write a Scheme interpreter in Haskell, though it sorta assumes you're already familiar with the basics of parsing/lexing/interpreting.

u/poincareDuality · 10 pointsr/compsci

For designing programming languages, my favorites are

u/grules · 8 pointsr/programming

Just read the table of contents of a couple of advanced compiler books:

Advanced Compiler Design and Implementation

Optimizing Compilers for Modern Architectures: A Dependence-based Approach

It is a different ball game.

u/BinaryLust · 4 pointsr/Compilers

Here are few more advanced books that I highly recommend after you learn the basics and want to really implement something.

​

- Modern Compiler Implementation in Java 2nd Edition

- Advanced Compiler Design and Implementation 1st Edition

​

Also here is a link to a GitHub page with tons of compiler related resources. awesome-compilers

u/case-o-nuts · 3 pointsr/compsci

It seems that most introductory texts focus on parsing. However, in my experience, the dragon book does a good job on introductory code generation. Appel's Tiger Book had good information as well. As a heads up, the C and Java versions of the same book are done as an afterthought, and you can tell that the code was translated after the fact. Stick with the ML version.

For optimization algorithms, I've heard good (And bad) things about Muchhnik: Advanced Compiler Design and Implementation.

However, I've had better luck just reading various papers. If there's a specific part of code generation and emission, I can point you to plenty of good papers.

u/oridb · 2 pointsr/learnprogramming

I've been playing around with writing a programming language and compiler in my spare time for a while now (shameless plug: http://eigenstate.org/myrddin.html; source: http://git.eigenstate.org/git/ori/mc.git). Lots of fun, and it can be as shallow or as deep as you want it to be.

Where are you with the calculator? Have you got a handle on tokenizing and parsing? Are you intending to use tools like lex and yacc, or do you want to do a recursive descent parser by hand? (Neither option is too hard; hand written is far easier to comprehend, but it doesn't give you any correctness guarantees)

The tutorials I'd suggest depend on exactly where you are and what you're trying to do. As far as books, the three that I would go with are, in order:

For basic recursive descent parsing:

u/edwardkmett · 1 pointr/programming

As for how folks feel about derivative notation? Maybe a little. ;) Sure, Liebnitz had a way better notation than Newton, but folks still use Newton's notation in some small physics examples, so depending on what someone was struggling with... As for SICP, well, it depends, I'd rather someone swallowed a sugar coated pill than spit it out and never get better.

From a compiler design perspective there are really 2 very different paths you can take (they do start to converge at the end, but you still wind up with ANF vs. SSA, etc) You can explore the scheme/haskell/etc functional programming path or you can go down the Steven Muchnik Advanced Compiler Design and Implementation path., which is much more traditional in terms of the kinds of languages it seems to consider.

http://www.amazon.com/Advanced-Compiler-Design-Implementation-Muchnick/dp/1558603204

Both offer very different seeming designs. So, if lisp was a non-starter, I'd probably send them over to the Dragon book and then down towards Muchnik from there.