Most packages provide a few canned routines in pre-compiled form, driven from a command line or menu. Usually the only flexibility in the model estimated is the choice of parameters in the specific model-estimation commands. Particularly important is the support for model testing using artificial data. If you do write a program to estimate a complex econometric model, it is natural to question whether you have made some mistakes along the way. Fortunately there is a very powerful test available to verify the correctness of estimation procedures.
Artificial data is generated according to the true model with known parameters.
The estimation program should then be able to retrieve those parameters. Some conventional packages augment their internal language to the point where it can be used to code new statistical models. They may include access to some optimization algorithms, so that parameters which maximize a likelihood function coded in the internal language by a user can be found. But this method is only as good as the internal language, its mini-compiler or interpreter, and its support and debugging facilities. Version 2.0 has been rewritten at a low level to make full use of the Standard Template Library, including the special numerical analysis features such as the valarray class.