Frequently Asked Questions

General

SIMPOL

SIMPOL Database Micro Engine (SBME)

Graphical Tools

General

Why did you create a new language, why didn’t you just use…?

Many people have asked us this question, where the language named was either Java, or VB.NET, or Python, or PHP, or Perl. The answer is actually quite simple, we knew that the vast majority of our traditional customer base would never have the time or inclination to learn these languages or else that the language in question did not implement what we needed or was not a general purpose language or not available for the platforms we wished to target. The only one to do most of that, Java, is far too complicated for people to use who have not had a university education in computer science. Since roughly 70% of our traditional customer base is made up of people who are professionals in other areas of expertise: doctors, lawyers, carpenters, truck drivers, insurance sales, auto
parts supply, automotive sales, etc., there simply was no point in producing a product that could not meet their needs. In fact, it is arguable that SIMPOL Professional may be the only modern product that may meet the needs of these customers.

Why bother building a new desktop database, isn’t the age of desktop databases over?

Some people will try to tell you that desktop databases together with development tools have passed their sell-by date. That they no longer make sense because today all development is done by highly-trained professionals. They couldn’t be more wrong. There is still a huge sector of the market that is not only not serviced by the “well-trained professionals”, they are also poorly served by the current array of available tools. Most of them have simply gotten too hard to use by the average, logically thinking professional. Or like some, they are simply not suited to producing a really useful piece of software. We firmly believe that there is still a solid market for a useful desktop database and development system, especially one that will allow companies to future-proof their investment in development by ensuring that the applications produced will work on multiple operating systems natively.

What is so special about SIMPOL Professional, why shouldn’t I use Java or C# or VB.NET or…?

If you feel confident using Java, C#, or VB.NET, then by all means, please do so. Still, depending on what you are building and why, you may find that SIMPOL does a better job of meeting your needs long-term than any of the others. Java is a powerful, well-supported language that is available on numerous platforms. It has a tendency to not look native on most platforms, but they may eventually overcome that. However, Java is not greatly dissimilar to C++, so the level of programming knowledge is fairly high in comparison to SIMPOL. Also, there is no native database, though there are many to choose from as separate products. Also there is no built-in data-aware form concept, nor the other database-specific tools for which desktop database are known. C# is primarily a Windows language, although some are trying to make it available for Linux and other platforms. Still, the differences between C# and Java are small, so the level of difficulty is very similar. C# will not be available from its originator (Microsoft) for any other platform than Windows for obvious reasons. Any implementation elsewhere is the work of third-parties. VB.NET is not even an easy move for VB6 programmers, and is also specific to Windows. Please feel free to choose the tools that will solve your problems most easily. SIMPOL includes support for calling external library functions, so there is also no reason to produce a program in only one language.

Why did it take so long?

Building a product that meets the needs of the next few decades and which is intended to replace a product that is as complex and evolved as the original Superbase is a fairly large undertaking. The development team was not funded by a company with a war chest like that of Microsoft, Borland, or any of the other major players. In spite of that, with a small but dedicated team of excellent
people, we have been able to make (mostly) steady progress on our path to creating a new cross-platform development kit. We would have liked to have gone faster, but we were not able.

I want to build freeware or shareware programs, will I be able to do that with SIMPOL Professional?

Yes, you can build and distribute SIMPOL applications as share and freeware. The only limitation is that the multi-user database engine requires a license key to operate.

You say that SIMPOL is cross-platform.
Which platforms do you support or plan to support?

Currently we support Win32 and Linux on Intel x86. We are planning to also support native Win64, Mac OS-X and Windows CE (PocketPC/Windows Mobile). The SIMPOL language, database, and other components are written to be cross-platform by design, so if a customer needs support for another platform, such as HP-UX, or Solaris, it would be reasonably easy (especially considering how similar
they are to Linux) to add that support in the future. Even very different OS’s would not be particularly difficult to add, though for the GUI tools that may be time-consuming depending on the availability of wxWidgets for the target platform. The OS-dependent portions of the SIMPOL code are small and clearly separated from the rest, and the source code to wxWidgets is available and a port
could be organized if required.

You talk about SIMPOL and the SIMPOL Professional and SBME; what is the difference, aren’t they all just parts of SIMPOL?

SIMPOL is the name of the language. SIMPOL Professional is the primary method for developing applications in SIMPOL. SIMPOL Professional is a little different than the older desktop database products like Superbase. Superbase is an end-user desktop database that includes a development language and development tools. SIMPOL Professional comes with a top of the line Integrated
Development Environment (IDE) for building and debugging programs, an end-user tool for creating files, forms, and reports, and for basic viewing of data within those forms and in record and table view. This end-user tool is built as an application using SIMPOL. SIMPOL is a general-purpose programming language that has specific extensions in the area of database-oriented application development. SBME is the database engine, but that is accessed using a set of objects from the SIMPOL programming language and is a completely separate DLL in Win32 or shared library in Linux or Mac OS-X.

Instead of being a single monolithic product, SIMPOL is actually a family of products that work together. This means that when you ship a product using SIMPOL, only the pieces that are needed must be included.

Everything seems to be about SIMPOL now. What happened to Superbase and Superbase Next Generation?

Superbase Developers plc decided to restructure their business and in the process SIMPOL was sold to Simpol Limited. Simpol Limited took on the development team of SIMPOL and has positioned itself to promote and ensure the success of SIMPOL on the world market. In order to deal with the issues surrounding the ownership of the name Superbase, the decision was made to use the name of the language in the naming of the products.

My question isn’t on this list, where can I ask it?

We have several news groups on our news server with a forum frontend that are dedicated to SIMPOL. That is the best place to ask questions, since everyone can read both the question and the answer.

SIMPOL

What does SIMPOL stand for and how do you pronounce it?

SIMPOL originally stood for Superbase International Multi-Platform Object Language, today it just is a word we use to describe our language. It is pronounced the same as the word “simple”. It is also meant to be simple to use.

How difficult is it to learn SIMPOL?

SIMPOL has been designed from the start to be very easy to learn. Superbase Basic Language (SBL) has over 270 keywords that can then be combined in different ways and with various parameters. SIMPOL has only about 20 keywords of which only about 10 are regularly used. Everything else in SIMPOL is an object. The IDE provides a great deal of help using SIMPOL, since it can display intelligent help in various places as you are working on your program, including the function prototype and members of your functions and types. At the same time it is not required to create user defined types if you do not wish, the language can be used fairly effectively for functional programming. To get the hang of the language can take an hour or two and to learn what is available in terms of objects provided may require a little reading in the documentation, but it should be possible to produce usable code quite quickly.

Why not just keep SBL?

SBL began life as a very primitive form of BASIC that only supported a single program at a time in the buffer and the only method of program flow was using GOSUB, GOTO, and RETURN. All variables were global in scope and creating reusable code was extremely difficult. It was then extended to support SUB main() as the starting point for a program, local variables inside of FUNCTION and SUB blocks, and got the ability to respond to events using the EVENTCLASS mechanism. Eventually another layer was added in terms of an object BASIC, but limited to the use of existing objects and with a
large number of idiosyncracies to try and accomodate the older language elements and for retaining compatibility.

The real problem is that the SBL language is badly overweight and it is difficult for newcomers to get to grips with it, primarily because there are too many different ways of accomplishing the same thing. Also, many projects from Superbase customers that started a long time ago have made only limited use of the newer facilities but still run in the older philosophy of everything global. Another big problem is that Superbase suffers from the “current everything” problem. It has a current file, current form, current window, current index for each file, and a current record for each index. Many of problems people have with their own programs can be traced back to this. As a result, we decided to vastly simplify the language and by making everything an object we could also guarantee that once people get used to the new syntax, they would actually be far more productive, since there is no longer a current anything, because nothing is global anymore and the way things are accessed is through a variable that refers to an object. In that way, there isn’t a global current record, for example, but there may be any number of current records held in different variables (or in various positions in an array).

On which platforms does SIMPOL already run?

SIMPOL and various components have already been run on Win32, Linux for Intel, Mac OS-X on PowerPC, and SymbianOS 6 on the Nokia Communicator. The current release works on Win32 and Linux.

How does SIMPOL differ from SBL?

There are numerous ways in which both languages differ from each other, and also a large number of ways in which they are similar. SBL is interpreted and SIMPOL is compiled. SBL today is actually a collection of four different styles of BASIC, from line numbered BASIC, to structured BASIC both with GOTO and GOSUB as the means of calling certain routines, to a more modern BASIC using SUB main() and allowing user-defined SUBs and FUNCTIONs with local variables, and finally incorporating an object-oriented BASIC limited to pre-existing objects. SIMPOL is like the second two of those but with the added ability to create your own objects. It does not allow global variables but has well thought out support for passing objects around where they are needed. SBL is very easy to try things out in, and automatically can print to the built-in view window. SIMPOL is more structured, so trying things out takes a tiny bit longer. SBL has a usable but primitive set of development and debugging tools. SIMPOL has a feature rich and powerful integrated development environment (IDE) that is purpose built to make writing and debugging programs easier and faster. SBL has hundreds of keywords and some built-in objects. SIMPOL has about 20 keywords and numerous libraries providing objects that can be used to build even more sophisticated objects.

Since SIMPOL is compiled, how do I debug my programs?

The SIMPOL IDE has extensive support for debugging programs. It is actually much easier to debug a program in SIMPOL than in SBL. The IDE has support for real breakpoints (including breaking only on a certain condition), the ability to examine the values of variables and objects, etc. It also includes a profiler to help you identify where your code is spending most of its time. See the
IDE Tutorial and the IDE Handbook for more information.

Isn’t it harder to build little programs quickly using SIMPOL than it was with SBL? What about my command line for trying things out?

It certainly takes a bit more than just opening an empty buffer in the old program editor and typing in a few commands and then running the program, that is true. On the other hand, it doesn’t actually take all that long to start the SIMPOL IDE, create a new project (in a subdirectory called SIMPOL\Projects\tests for example) and to then type in the program there and try it out in the IDE.
This is part of the price that we pay for not requiring all of the possible components to already be loaded and not requiring you to ship all possible components when you ship a program. This is the component architecture. Still, with very little practice it will become second nature and the tests directory will become a personal scratch area to try things out.

Do I need to build my programs for each target platform?

No. SIMPOL programs, similarly to Java programs, compile to a cross-platform byte code that is interpreted by the runtime libraries on each platform. There is no need to recompile the program. The same *.smp program will run on all platforms.

In SBL I could build my forms on-the-fly and change them. Can I do that in SIMPOL too?

Yes. It is necessary that your program has been compiled to reference the required components as part of its project settings, but once the components have been referenced in the program, all of the form controls can be created at runtime from source code. In SIMPOL, the new form format is actually XML, and the library that reads the form format, parses it, and creates the actual
form from it is itself written in SIMPOL.

What about OLE2, DDE, and ActiveX controls, can I use them in SIMPOL?

In SIMPOL we currently support OLE2 automation as a client that works with out-of-process servers. In the future we will also support the use of ActiveX controls. DDE client and server support are also possible to include if there is sufficient need. This is an area that we need more feedback about from our customers. Obviously, any applications using OLE2 or ActiveX controls will not work properly on any non-Windows platform.

Will SIMPOL allow me to interact with .NET, Java, etc.?

We have looked at some of these issues. Although we won’t necessarily add this support immediately, we have evaluated allowing SIMPOL programs to call Java classes using the Java Native Interface. Since we also include the XML Document Object Model Level 2 support in SIMPOL, it should also be possible to implement support for SOAP (Simple Object Access Protocol) on top of the XML DOM support to add the ability to interact with and expose web services. There is also some discussion about eventually compiling SIMPOL programs as Java byte code with some helper classes for our types and also to the Common Language Runtime (CLR) from .NET, but it is too early to make these decisions.

How fast is SIMPOL compared with SBL?

It is fairly clear that in many areas, SIMPOL is faster than SBL, in spite of the fact that it is doing quite a bit more (all SIMPOL strings are Unicode 3.2 strings in UCS2 format — 2-bytes per character currently). SIMPOL numbers have no floating point limitations because we don’t use floating point. SIMPOL integers have no realistic limitations in terms of size and scale. As time goes
on, we will continue to evaluate the speed of SIMPOL where it appears to be slower than it should and will optimize those areas as required.

Detail blocks in SBL were interesting and useful, but I really wanted more of a grid capability. Is there a grid in SIMPOL?

Many of us over the years have felt the lack of a proper grid control in Superbase. The SIMPOL wxform has a grid control. There is also a data-aware version that is called dataform1datagrid. We also have a single-level detail block to cater for those users that still want to use the detail block approach. The detail block also supports unlinked content filled using a query.

Superbase Micro Engine (SBME)

Superbase files have lots of pieces that make up each database file, does SBME also work that way?

No, SBME files are container files. An *.sbm file can contain one or more database tables and all of the various portions of the database tables (data definition, indexes, etc.) are contained within the file.

SBF files need a large number of file handles to manage a large number of files. Is this also true of SBME?

No. Each *.sbm file only requires one file handle regardless of how many database tables it may contain or how many indexes any table may have.

SBF files are fairly fast, are the SBME files as fast or faster?

SBF files are comparable in speed to the fastest of its competitors in the desktop database arena and faster than many. SBME files tend to be considerably faster. In fact the more records a table has, the faster it seems to be. In spite of that, SBME was not originally designed to be especially fast, but rather to be efficient when used on small devices. That means that the database takes up as little space as possible and requires as little memory as possible when running.

How big a footprint does the database engine have?

The single-user database engine is 156KB in size on Win32. The multi-user client engine is about 140KB. The multi-user server engine is around 192KB. How much cache memory is used can be decided by the user when they open the single-user engine. The PPCS-based client engine does not cache records since there is no safe way to tell when the cache should be dumped.

SBF files have a maximum size of 2GB. What is the maximum size of an SBME file?

SBME files have a theoretical size limitation of 64 Exabytes on Win32 on an NTFS file system. On Linux the maximum size is based on the file system limitations of the target file system.

Graphical Tools

Superbase currently has a Form Designer, Graphical Report Designer, Menu and Icon Bar editors, a Dialog Editor, a Labels tool, Quick Report tool, etc. Does SIMPOL Professional have these kinds of tools?

SIMPOL has a Form Designer and in the next release (v1.6) or the one after (1.7) it will have a Graphic Report Designer. These tools are built in SIMPOL itself. The Form Designer currently is designed for creating display forms, a mode for print forms is also planned for one of the next releases. This allows greater flexibility than was provided in the past. Display forms look native on
each platform, whereas print forms will try to be consistent on all platforms (within the limitations of available fonts of course). The Graphic Report Designer is eventually intended to support labels as a type of report. It will also allow for a number of more modern targets for the output of the resulting report, such as HTML and XML. As for the menu and icon bar editors, there is
planning to also eventually provide these editors.

Superbase has a limited set of user-interface controls, what does SIMPOL offer in this regard?

As was briefly mentioned elsewhere, SIMPOL is incorporating the wxWidgets toolkit for its cross-platform GUI support. wxWidgets includes far more controls than the older Superbase product ever dreamed of. This includes all of the usual controls plus others like an HTML control, various types of tabbed notebook styles (using tabs, a listbox, a combobox, and a tree control), various styles of tree control, listbox controls, in sufficient variety to supply the needs of most applications. There is also a rich text control for supplying an editor, a grid control that can be used in many ways, common dialogs such as print, font select, color select, open and save file, select directory, etc. There is a document architecture with print preview capability. We provided the basic controls necessary to convert and build existing Superbase applications and are evaluating the various bits of functionality to determine which pieces are available consistently across our target platforms and we are then implementing them as time permits. Not all controls will be available immediately, or even ever. We will implement only those controls that appear to provide significant value to our users. We may also implement our own control types if things are required that are not provided for by wxWidgets controls.