This is not a question about the usage of Mathematica, it is more about implementation. Mathematica is a very huge system, it can provide a series of very advanced operation against a Mathematica expression.
The engine of Mathematica is implemented with C or C++ not Python. Since it is implemented by native language, how the expression is represented in C/Memory aspect?
And how Mathematica organize its massively amount of expression manipulation algorithm. Is it organized in a Object-Oriented way like Sympy? or some other ways else?
Is there anyone who can make a general introduction about the structure of Mathematica, not focusing on any single algorithm or expression, just the broad, general view?