MetaCard Corporation

Guide to High-Level Development Tools

Higher developer productivity is one of the primary benefits of a high-level development tool. Higher productivity results in lower development costs, shorter development schedules, lower maintenance costs, and more highly-featured and usable end products. It also means that less time is required to learn and use the tool, since there are fewer low-level details that need to be mastered before the actual work on a project can begin.

It can be difficult to determine whether or not a given language and development environment will support high productivity, however. Here is a list of questions you should ask before choosing a development tool. A tool with all of these features will support high developer productivity, and using such a tool for your next project will cut a considerable fraction (perhaps even a majority) of the time it would take to develop the product using a lower-level tool:

1) Can you execute a string containing language statements?

The ability to build up a list of commands as a string and then execute that string using the language interpreter is probably the single most important feature of a high-level language. Although it's not used very often, this one feature can save writing dozens or even hundreds of lines of language statements. In MetaCard, the "do" command can be used to execute strings, and the "value" function can be used to evaluate strings as expressions. Perl, Tcl, and ksh have similar features. The various BASIC dialects do not. Neither does Java, and by it's very design it is impossible to implement a feature like this in Java.

2) Can you refer to a variable as either a string or a number?

Since most applications require the manipulation of both strings and numbers, an important high-level feature is the ability to operate on a variable as either a string or a variable without having to declare its type or perform a separate conversion operation on it. MetaCard, Perl, ksh, and Tcl all support this feature, but the latter two languages have very low performance in numeric-intensive operations. Visual Basic supports a "variant" type that has this feature but there are many restrictions on its use. Java does not have this feature.

3) Can you refer to words and items in a string with single expressions?

There are many times when being able to get the words or items (elements separated by commas) or lines in an input stream one at a time is useful. With most low level languages (like C/C++/Java/BASIC), you have to write a loop to scan the string a character at a time looking for delimiters and then copy the substring. With MetaCard, you just write something like "word 2 of line 3 of somevariable".

4) Can you change the layout of the controls in and application and change scripts without having to restart the application?

With most low-level development tools, and even high-level tools like dtksh and Tcl/Tk that lack Integrated Development Environments (IDEs), every time you have to change the user interface or scripts of an application, you have to stop running the application, make the change, and then restart it from the beginning to see the changes. Even worse is that with low-level languages (like C/C++/Java/BASIC), you have to wait for a compilation phase to complete before you can restart the application. Since most changes are made to areas in an application that require several actions to get to, the developer must execute those actions over and over again while developing and debugging the application. This process is an enormous waste of time, and takes most of the fun out of developing applications.

MetaCard has the very unusual ability to save all of this tedious restarting and navigation through the interface to get to the part under development. Instead, the developer can make changes to the layout or scripts in an application while that application is running. This saves enormous amounts of development time, and allows productivity unmatched by any other language or development environment.

5) Can you crash the program or system with a programming error?

The absolute worst use of a developer's time is waiting for a system to reboot. While this "feature" of development in third generation languages is most common on MacOS, there are many ways to render even Windows and UNIX systems unusable with them even if you can't actually crash them. And sometimes programming errors in MacOS applications written in third generation languages cause a problem even worse than crashing: data corruption can occur that can cause the loss of some or all data on a hard disk. Even if it's only the program that aborts (called a GPF on Windows or a core dump on UNIX), you're still left with the poor productivity associated with having to restart the application to debug it. With MetaCard, programming errors simply cause an error dialog to appear that can be dismissed with minimal disruption of the task at hand.
White Papers | High-Level Tools . Calculator . TOP . Comparisons . Strained Carrots