TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: Books to feel comfortable discussing internals of programming languages?

2 pointsby dondraper36over 3 years ago
To be more accurate, I am referring to the Go programming language, but I assume the answer doesn&#x27;t depend heavily on a particular language.<p>Not so long ago, I switched to Go from Python and I really appreciate almost all aspects of the language. I have read all the recommended resources (and keep rereading some of them like Effective Go). At this stage, very often it all boils down to reading the specification, which is very readable and user-friendly.<p>Nonetheless, there are some questions for which explanations unexpectedly (for me, I mean) shift the discussion to code in C, assembly instructions, how the compiler is implemented.<p>Even though I understand that pretty often it&#x27;s not necessary to understand things at a very low level, but I feel comfortable when unable to do so.<p>What are some resources or at least subjects I should get comfortable with so I can reason about more advanced issues like performance, motivation behind certain language decisions, etc.<p>Do you think that getting your feet wet with C is necessary for that? Compilers? Assembly? Something else?

3 comments

GrumpyYoungManover 3 years ago
You could try Nystrom&#x27;s &quot;<i>Crafting Interpreters</i>&quot; as an introduction but really you&#x27;re asking about a topic that is usually covered in the final year of college because it has so much pre-requisite knowledge. You do need to know machine language for at least one processor architecture since that&#x27;s the ultimate output that source code is being converted to. You also need to be pretty adept at data structures (often derided as useless knowledge by the HN pundits) because you&#x27;re chopping up that source code into a structure amenable to conversion into machine code. (Ideally, you&#x27;d also want to know processor and machine architecture at a fairly detailed level because you can&#x27;t really reason about performance without knowing the mechanisms by which machine language is actually processed and their constraints.) Only then are you at the point where it makes sense to talk about how the internals of a compiler is implemented.
_448over 3 years ago
If you can get a hand on this book then read it: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Code:_The_Hidden_Language_of_Computer_Hardware_and_Software" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Code:_The_Hidden_Language_of_C...</a><p>The other resource is: <a href="https:&#x2F;&#x2F;www.coursera.org&#x2F;learn&#x2F;build-a-computer" rel="nofollow">https:&#x2F;&#x2F;www.coursera.org&#x2F;learn&#x2F;build-a-computer</a> and <a href="https:&#x2F;&#x2F;www.coursera.org&#x2F;learn&#x2F;nand2tetris2" rel="nofollow">https:&#x2F;&#x2F;www.coursera.org&#x2F;learn&#x2F;nand2tetris2</a>
jasoneover 3 years ago
The single best book I&#x27;ve encountered for this sort of learning is Programming Language Pragmatics, by Michael L Scott. I read an earlier edition (3rd?) cover to cover well after entering industry, and it was invaluable for both broadening my perspective and fully grasping many foundational concepts.