Infinifactory subreddit1/9/2023 ![]() ![]() The book "clean architecture" by uncle bob is an easy to read startĪgain. One type of course/tutorial you could start looking for - on the side because you are very new - is a course on OOP design. since you are aware of the issue - which is a big plus for you - when you do these tutorials try stepping back several times through the tutorial and ask yourself, how does this application work from 10,000 feet? how is it designed? Why? Learning the bigger picture of application design and architecture is a whole other skill. You have figured out something that many students never figure out, that it is NOT enough to just know loops, if-statements, variables, etc, I agree with the others, you are still a newbie, you should be in tutorials There are some other easier computer org /arch books out there but I'm not aware of any really good legally free ones off the top of my head. Some people might say those books are a bit rough for a beginner, so try to get a sample or borrow one to see if you like them. Those are not referral links, and I recommend they be read in that order. ( Computer Architecture, Fifth Edition: A Quantitative Approach, Hennesey) The standard texts (and my favorites) are If you are mainly dealing with C++ standard library and gui stuff, you will rarely encounter computer architecture topics. If any of those things interest you, you should probably learn it, and you can definitely learn it as you learn C++. So if you aren't dealing with raw pointers directly, advanced multithreading, vector/simd math, HPC, 3d graphics, gpu cards, etc, you really don't need computer architecture. If you want high performance, you pretty much want to learn the equivalent of a class in computer organization and computer architecture. You don't need architecture perse unless you want high performance. He built a chip fabrication set up in his folks' garage when he was in high school. Sam Zeloof has a great series of videos on this. This process is too damned complex to go through right now. They then "lay out" the chip - describe how they want things positioned with respect to one another) and the chip fabricator then uses libraries that they have to transfer the RTL to a series of photolithography masks… you know what. They then use programs to convert it to an intermediary language called RTL (register transfer logic). On that front (again, briefly): the chip designers use hardware description languages (like Verilog and VHDL) to describe the functionality of the chip. 1 and 2 are, as others have stated, more VLSI questions. The book mostly covers question 3 (and I guess 4) above. I'd HIGHLY recommend doing the questions at the end of each chapter to make sure you actually understand the stuff. OP, check out Digital Design and Computer Architecture for a good intro after you watch through some of Ben Eater's stuff. Though, that's outside the scope of this comment. To be fair, Ben Eater's 8-bit computer uses microcoded ROM for control of the processor, which is just one of many control schemes for a processor. ![]() But literally the only place that ever said it that simply and directly was the Dragon Book. It's just a brain-dead post-order traversal. Especially because so many tutorials are like "now that you've parsed your language, interpreting it is easy and left as an exercise for the reader". I was stuck on the basic question: okay, but how do I know what order to generate the code in? It seemed like a very hard question, requiring DAGs and dependency analysis and all sorts of shit like that, and I got discouraged and quit. For instance, for my first language project, I got stuck on codegen and never finished. I really struggled when I started before I read this book because so much stuff is very much simpler than I imagined. Reading this book was absolutely eye-opening, because it presents a bunch of very basic and general information that everybody in language design just assumes you know. I also recommend the 'Dragon Book', which is pretty much the textbook on compiler design. You will often want at least a basic interpreter for your language anyway, if for no other purpose than simplifying expressions. You can build a compiler by building an interpreter, then swapping out the immediate-calculation functions for functions that generate machine code (or LLVM IR or whatever). But an interpreter and a compiler are very, very similar-to the point of being nearly identical. And this tripped me up when I first started. I know that you say you want to build a compiler. I haven't done that LISP project, but I recommend Crafting Interpreters. ![]()
0 Comments
Leave a Reply.AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |