By reading this book, I've developed my skills in programming with C/C++, assembly language and also learning computer architecture all at the same time. This book contains lots of low level stuffs like designing a cpu core, translate a C++ program to assembly, write an assembler, and many more. The explanation starts with a very simple concepts like translating y = x + 1; to assembly language equivalent until translating an object oriented code to its equivalent assembly language code. It has been a lot of fun learning the relationship of cpu, operating system and the compiler. The exercises are easy enough and had really sharpen my skills. Although the target machine is theoretical, I was able to switch easily into the real machine.
[0] - https://www.amazon.com/Assembly-Language-Computer-Architectu...
If you want to learn assembly language, computer architecture and C++ all at the same time: Assembly Language and Computer Architecture Using C++ and Java , Course Technology, 2004 [1]
If you want to learn how to write compilers, context free grammars, regular expressions and implement grep: Compiler Construction Using Java, JavaCC, and Yacc, IEEE/Wiley, 2012 [2]
If you want to learn functional programming, lambda calculus and LISP: An Introduction to Functional Programming Through Lambda Calculus by Greg Michaelson [3]
My programming skills had grown dramatically with this books. I would wholeheartedly recommend the books mentioned above for those who are interested to learn.
[0] - http://cs.newpaltz.edu/~dosreist/
[1] - https://www.amazon.com/Assembly-Language-Computer-Architectu...
[2] - https://www.amazon.com/Compiler-Construction-Using-Java-Java...
[3] - https://www.cs.rochester.edu/~brown/173/readings/LCBook.pdf - https://www.amazon.com/Introduction-Functional-Programming-C...
[0] - https://www.amazon.com/Assembly-Language-Computer-Architectu...