Modern universal systems have the following typical structure:
The central place is occupied by the system kernel. It is a set of pre-compiled functions and procedures represented in machine codes and providing a set of built-in functions and operators of the system. This set must be functionally complete. The role of the kernel is particularly important in symbolic mathematics systems where the kernel stores many hundreds or even thousands of rules for converting mathematical expressions.
The kernel of mathematical systems is carefully optimized because the speed of the calculations performed by a given computer mathematics system depends on its speed. Precompilation of the kernel also contributes to this. User access to the kernel to modify it is usually excluded. The kernel may be several megabytes in size. The kernel is written in the system implementation language – most often it is C or C++ (only with Derive the artificial intelligence language MuLISP is used) and compiled in the company – the developer of the system.
The interface allows the user to address the kernel with his queries and get the result of the solution on the display screen. The interface of modern systems of symbolic mathematics is based on the means of operating systems Winsdows 95/98 and has almost all their features: moveable and scalable document windows, dialog and information windows, control buttons, communication with peripheral devices, etc. Often the system interface provides the ability to create and edit library modules and system extension packages.
Functions and procedures included in the kernel are executed extremely quickly. From this point of view, it would be advantageous to include as many computational tools as possible in the kernel. However, this inadvertently leads to slower searching for the needed facilities due to the increase of their number, to longer kernel load times and to other undesirable consequences. Therefore, the size of the kernel is limited, but to it add libraries of rarer procedures and functions, which the user refers to, if the kernel does not find the procedure or function needed. Some systems allow the libraries to be upgraded and expanded by the users themselves.
Cardinal expansion of the systems capabilities and their adaptation to the tasks solved by specific users is achieved by means of the systems expansion packages. These packages, as a rule, are written in own programming language of this or that system, which makes possible their preparation by ordinary users, although the basic delivery of systems include professionally prepared proprietary extension packages. Many firms practice the delivery of such packages, prepared by numerous users of such systems, first of all professionals-mathematicians, of course, after their careful check and filtering at the firm developing mathematical system.