I was browsing through some websites and found this tutorial https://www.tutorialspoint.com/compiler_design/index.htm
on Compiler Designs. What was intriguing about this is the algorithmic approach for designing an efficient piece of software that is abstracted away from any single programming language and architecture or paradigm. It strictly gives the understanding of what a compiler is, what it does, what it is responsible for and some of the caveats that come with it. This tutorial also breaks down the design process of any compiler into its stages and phases. The overall explanation of this tutorial's approach deals with working with sets of alphabets within in any arbitrary language and how to define what tokens are, the different methods of creating a parse tree either top down or bottom up, a symbol table that would be used to do syntax checking etc. This tutorial in particular also expresses the concepts of translating or interpreting Language A to Language B then it goes from the intermediate stage to different techniques of optimization when converting it to machine or object code. This gives an excellent explanation or description of what is going on behind the scenes within any arbitrary compiler and how that compiler works with the OS - Hardware. If one is able to model their programming habits according to this model I believe that it would allow them to accomplish any task that would be required of them when it comes to software development regardless of their field. One can learn so much just from studying what it takes to design a compiler without ever writing any source code in any language. I enjoyed this tutorial and I hope that many others can learn from this similar as I have.
The website's link that I posted is a direct link to the introduction page of this tutorial, however this website alone has much more to offer than just this tutorial. There are other tutorials as some or text based and others are videos and it even has a live GCC Compiler built into one of their webpages.