Hacker Newsnew | past | comments | ask | show | jobs | submit | anta40's commentslogin

“we won’t touch Mamiyas”

Why? Is the mechanism that complicated? I'm pretty sure medium format SLR like Hasselblad or Rollei SL66 is more... ummm complex.


Very complicated to repair they said /shrug

Fuji GM670/GL690 are also nice if you prefer interchangebale lens GM670 in general is reasonably priced compared to Mamiya 7/GF670

What about Android? Hmm....


Any recommendation for a more realistic book?

I think hacking GCC/LLVM can be pretty challenging, but hey they are real, production-grade compilers and not just typical academic projects.


there are no good modern compiler books - everything that's been written down pales in comparison to what GCC/LLVM really involve. recently i found Engineering a Compiler by Cooper and Torczon when reviewing/prepping for interviews - it wasn't bad. also there's now LLVM Code Generation by Quentin Colombet but that's basically a code walk-through of LLVM (it doesn't cover any of the algos). and it was probably out of the date the second it got published lol (not really but maybe). the truth is that trying to learn how to build a compiler from a single book is like trying to learn how to build a skyscraper from a single book.


> the truth is that trying to learn how to build a compiler from a single book

I think you conflate “learning to build a compiler for a toy language” with “being effective at working on a modern optimizing compiler suite like GCC/LLVM”

The book is perfectly fine for the first use case, and never claims to touch upon the latter.


Respectfully, I think what you mean is that there are no books which give you the experience of hacking on LLVM for several years.


Is Dragon book still relevant? Do you recommend any other learning resources other than reading the source and contributing to llvm?


IMHO absolutely. The basics of lexer and parser are still there. Some of the optimizations are also relevant. You just cannot expect to read the book and be able to write GCC or LLVM from scratch(1).

For learning deeper about other advanced topics there is:

https://www.cs.cornell.edu/courses/cs6120/2025fa/

and

https://mcyoung.xyz/2025/10/21/ssa-1/

So maybe writing a compiler with exactly one FE (for a simple language) and one BE (for a simple architecture), with say 80% of the optimizations could be a doable project.

(1) We should define what we mean by that, because there are thousands of front-ends and back-ends.


I heard that new volume is updated with newer stuffs like data flow analysis, garbage collection, etc. Anyway the book doesn't teach you how to build a basic working compiler, so need to consult another materials.

Try Andrew Appel's "Modern Compiler implementation in Java/C/ML" or Writing a C Compiler (https://norasandler.com/book) which is much more recent.

Eventually, you'd want to hack GCC/LLVM because they are production-grade compilers.


> Is Dragon book still relevant?

No, not at all, the teachings and techniques have been surpassed since four decades or so.

The algorithm LALR is flawed, it only works for a subset of CFG instead of all. That alone is already a death blow. If you want to try out BNF grammars in the wild, it is nearly guaranteed that they are complex enough for LALR to shit itself with S-R conflicts.

The technique of generating and dumping source code is awkward and the reasons that made that a necessity back then are no longer relevant. A good parser is simply a function call from a code library.

The technique of tokenising, then parsing in a second pass is awkward, introduces errors and again the reasons that made that a necessity back then are no longer relevant. A good parser works "on-line" (term of art, not meaning "over a computer network" here) by tokenising and parsing at the same time/single-pass.

The book precedes Unicode by a long time and you will not learn how to properly deal with text according to the rules laid out in its various relevant reports and annexes.

The book does not take into consideration the syntactic and semantic niceties and features that regex have gained since and thus should definitely also be part of a grammar parser.

> recommend any other learning resources

Depends on what your goals are. For a broad and shallow theoretical introduction and to see what's out there, browse the slide decks of university lectures for this topic on the Web.


Thanks. I'd like to learn the most important things in traditional compilers that are still relevant and translate these skills into ML compilers


I taught in the past and still like the trilogy of books

> Modern Compiler Implementation by Andrew W. Appel

It comes in three flavors C, ML (Meta Language), and Java

https://www.cs.princeton.edu/~appel/modern/

Writing a compiler in Standard ML is as natural as writing a grammar and denotational semantics.

Compiler writing is becoming an extinct art.


The ML version is my favourite and I can vouch for the books being quite interesting.

For more modern folks, one can use the ML version as inspiration for doing the book exercises in OCaml, Haskell, F# or Rust.

Writing compilers for a living, and CS research is a niche domain, not something I would consider an extinct art.


Thanks!

Are you sure it’s an extinct art though? LLVM is flourishing, many interesting IRs come to life like MLIR, many ML-adjacent projects build their own compilers (PyTorch, Mojo, tinygrad), many big tech like Intel, AMD, Nvidia, Apple and others contribute to multiple different compilers, projects integrate one to another at different levels of abstraction (PyTorch -> Triton -> CUDA) - there is a lot of compilation going on from one language to another

Not to mention many languages in a mainstream that weren’t that popular 10 years ago - think Rust, Zig, Go


The prominence of LLVM is a symptom of the dying of compiler writing as an art, not evidence of its vitality.


> compiler writing as an art

cooking is an art. software is engineering. no one would say "building skyscrapers as an art is dying".


You should look into GraalVM as well, as it is another approach for compiler development.


I'll take the bait.

Do you distinguish between writing a compiler and writing an optimizing compiler, and if so, how is writing an optimizing compiler an extinct art?

Equality saturation, domination graphs, chordal register allocation, hardware-software codesign, etc there are many new avenues of research for compilers, and these are just the ones on the top of my head that are relevant to my work. Most optimization work is R&D and much of it is left unimplemented at scale, and things like the phase-ordering problem and IR validation are hard to do in practice, even given ample resources and time.


I heard that the ML version was a translation of the C version, and is thus not easy to follow along. Or it may have been the other way around!


The other way around, the best book is the ML version, the other two try to do ML in the respective language.

Ironically, now with modern Java you can that much easier than the approach done in the Java variant back in 1997.


A good counterpoint is that a lot of information about this is dense, cryptic, weird, confusing and hard to get.

The major problem is not to find the sophisticated things, but understand how do it in simple-ish ways.

Do otherwise is a major waste of time!

P.D: And yes, only when you get the basic and learn the jargon still is a problem to find the neat tricks, but is likely that you already get that there is nothing like read the source... (sadly that source is in C or worse C++, but lately with Rust that is gaining traction at least it make more sense!)


I think PHP in general is still popular... even though some of the devs switch to Go...


A bunch of corn videos... well what else? :D


Hmmm what about this: https://ziglang.org/learn/why_zig_rust_d_cpp/

Convincing enough?


So what do Android users on that area use, then? Telegram? Signal? FB Messenger?


Mostly FB Messenger, or SMS/MMS


For typical end users, kernel on its own is useless. So this an example of OS which uses Ironclad kernel:

https://codeberg.org/Ironclad/Gloire


Hmmm nice to see the OS is still under development.

First time I saw it was during undergraduate days.... 2006 or 2007?


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: