Crafting Interpreters
A**N
Enjoy the journey to learning one of the most challenging parts of computing
A very gentle, informative and enjoyable journey to writing your own language
Y**.
Really a great book that I am longing for long time. Easy to follow.
Really a great book that I am longing for long time. Easy to follow.
J**É
Excelente! Bem completo na área de compiladores
Recebi esse livro super rápido com nota fiscal e tudo certo! Ainda não tive tempo para ler o livro, mas é um produto excelente sobre compiladores.
F**N
Outstanding and enjoyable!
This is a fascinating book in many different ways.I am myself a teacher and throughout the book I could feel the authorattention and dedication in making this book something you could learn from.He touches many different aspects of the matter with many great explanationsand without hiding the forest behind the trees, adding a touch of humour and his own illustrations.He deserves my own job 10 times.All the code you need to write is in the book. I tried hard to find a mistake, even a typo, but to no avail.At times you wonder why he is writing the code that way, but then later, you find about it,so you need to be careful to follow him as much as possible. The problem is that eachchapter ends with some interesting challenges, and if you tackle them in the order they come,then your code becomes somewhat different from what's in the book and you then needto figure out how to put that into place in your own code. That is exactly the problem I was confronted with in the Java part of the book, and by chance refrained from doing in the C part.Another problem is testing your code. Sooner or later you will need to get some certitude about thethings you wrote, even if you follow the author as much as possible, and that means testing it.I put in place my own tests for the Java part, throwing in many hours of effort.I then realised the author had build it's own testing framework on his github repo for the book,and used his framework for testing the C part of the book. The tests are written in Dart, and there is not much documentation into place to instruct you how to run them on a chapter by chapter basis. I had to read the code to figure out how to do it, and adapt the code a little bit to make it run properly under Windows, but I finally succeed. Dart is easy to grasp, but you still need to understand how to install the Dart ecosystem and properly configure it with the package manager.As for the code itself, the Java part is as you would expect it to be. Functionalities are well segregated in to many classes doing their own things, with proper encapsulation. As for the C part, well, I guess I am not very accostumed to how compiler coders are writing C code. To me, this code seems like a mess. Macros are used extensively. There are many cross-dependecies between files. Of course the author is very knowledgeable and know its art. When doing the NaN boxing at the end of the book (last chapter on optimization) you understand why so much macros to begin with. As for cross-dependencies, I tried to figure out how I could avoid it, but to no avail. I suppose I just need to accept it that way.No book is perfect, but still, this book is mostly perfect, even in its imperfections. 5 stars.
H**S
De lo mejor que he leído con respecto a intérpretes/compiladores
Si alguna vez quisiste saber cómo escribir un intérprete de un lenguaje de programación de (relativamente) alto nivel, este es un gran libro. El autor empieza definiendo el lenguaje que quiere implementar (Lox) y luego desarrollo dos intérpretes para este lenguaje, uno en Java (para entender las bases) y luego otro mucho más rápido en C, pero también más complejo, en C.Se trata de un libro ameno, escrito por un experto que conoce el tema a fondo y que te permitirá aprender todos los conceptos fundamentales. ¡Altamente recomendado!
P**U
Die Kraft des Tuns - Super!
Robert Nystrom sagt gleich zu Anfang: „It’s the book I wish I’d had when I first started getting into languages…”. Diese Aussage kann ich nur unterstreichen. Ich habe in den letzten Jahrzehnten sehr viele Bücher zum Thema Scannen, Parsen, Kompilieren, Interpretieren und über den Aufbau und die Struktur von Sprachen durchgeackert und versucht, sie für meine Arbeit zu nutzen.Dies ist vor allem wegen des immensen Theorieanteils der Werke nicht immer gelungen. Der akademische Aspekt, die Mathematik und Logik, deren Notationen und die dadurch erzielte Effizienz mögen wichtig sein; doch sie schläfern auch ein, lenken vom eigentlichen Ziel ab und können darüber hinaus auch mehr verwirren als helfen.Der in diesem Buch verfolgte Ansatz ist viel pragmatischer und einfacher zu verstehen: Die speziell für den Lehrzweck geschaffene Sprache Lox wird gleich zweimal, Hand in Hand mit dem Leser, als Interpreter implementiert.Einmal so simpel wie möglich, mit einem auf Java basierenden rekursiven Tree-Walking-Interpreter und einmal auf Performance und Kompaktheit optimiert, in maschinennahem C. Theorie gibt es immer nur so viel, wie es für den nächsten Abschnitt absolut notwendig ist.Ich habe beide Teile durchgearbeitet und bin der Meinung, dass es mit Abstand das beste Buch zum Thema ist.Es ist didaktisch rund und mit vielen Aufgaben und Herausforderungen gespickt, die im zugehörigen Github auch aufgelöst werden.Es ist sprachlich ausgereift und trotz des „trockenen“ Themas sehr amüsant geschrieben.Beide Teile implementieren das Gleiche mit unterschiedlichen Schwerpunkten; das hilft, zunächst die Konzepte und dann die Wege und Optimierungen zu verstehen.Der Praxisbezug vermittelt Architektur und Design-Patterns auf beinahe spielerische Weise.Aber das Beste: Das Buch hat keine Fehler. Obwohl der Code Schritt für Schritt ergänzt und verändert wird, ist er zu jedem vorgesehenen Zeitpunkt einsatzfähig und leistet, was er soll. Keine Sackgassen, Verwirrung und Frust!Der erste Interpreter ist übrigens auch ohne Schwierigkeit auf Python implementierbar.
Trustpilot
1 month ago
3 weeks ago