Why SIMPOL?
The design ideas behind the SIMPOL programming language and the development tools associated with Superbase NG are a direct result of years of exposure to customer program code. We have looked at what worked well, at what caused problems, and have made many very strongly discussed decisions about fine points in the product. The goal for SIMPOL is to provide a powerful, yet easy-to-learn and use programming language. A common problem in the past has been that the programming languages that were easiest to start with did not enforce enough discipline to ensure that the products that often grew from those early simple programs were able to be maintained and extended. As a result, a powerful product might wither from a lack of resources to improve and support it, beyond a certain level of complexity. The design of SIMPOL promotes code reuse, careful design, and at the same time does not require an understanding of fairly arcane concepts in order to get started. It allows for both object-oriented and functional programming styles, and these can be mixed and matched where appropriate.
Another guiding principle for SIMPOL was that of being cross-platform. By designing the language to hide the vast majority of platform-specific issues, applications can be written once and run without change on other platforms.
Finally, in the heritage of numerous products from the mid-80's through the mid-90's, a conscious effort was made to provide higher level tools that assist people who may not have been trained programmers to succeed in solving their own problems. At the same time, we chose to build the tools in SIMPOL itself, so that they can be easily extended. By producing various layers of decreasing complexity within the same tool chain, people can enter into the development process at the level with which they are comfortable, and still grow and progress over time to more complex layers of the product if they choose. We found that although there are products that exist that allow easy development, they often become dead ends when the desires of the user exceed the capabilities of the tools. At the other end of the spectrum, there are many complex tools available on the market for doing development, but most are simply too difficult for people who are not programming for a living.