I'm a programmer and new to Mathematica. Mathematica is still very mysterious to me. I know there are a lot of tutorials of Mathematica which cover contents of different functions, such as Plot, DSolve, etc. and play these functions to fit some data, solve equations, do symbolic calculations, and so on. However, these are much like a fancy calculator.
I'm curious whether there exist some tutorials suitable for the taste of a programmer. For example, introduce the primitive types and basic data structures in this language and what's the underlying implementation of these data structures(since different implementations have totally different time/space complexities and I may need to do trade-off to use different implementations); how to write interface, class, module, and package; how to import another package of utilities; is the language pass by value or reference; functional programming; compile; how to write optimizing/efficient code (like in Java 2d array is stored as an array of references to anther array, however 2d array in NumPy is stored as C-contiguous, therefore we need to utilize the implementation of the data structure to write an efficient code) and so on. Therefore I want a bottom-up building of knowledge.
Because Mathematica is also a programming language, are there any textbooks/tutorials/lectures which can cover my requirements?