Ihab Khalili
Danny Yerex
In this document, we compare three widely used GUI application builders: Microsoft Visual C++, Borland Delphi, and Tcl/Tk. As it turns out, Visual C++ is a compiled language which produces highly optimized executable, costs reasonable, and has a really low learning curve, which would seem to make it an ideal choice. Its prominent features are a GUI screen builder called "App Studio", and "App Wizard" which creates project templates.
However, there are other aspects to be considered when choosing a GUI application builder. Each one of Visual C++, Delphi, and Tcl/Tk has its advantages and disadvantages, but there are two important questions to ask before we can make a logical decision about which one would be the best to use, for these different tools each have their place. The questions are:
Also discussed in this document is our testing procedures, and an evaluation of our testing results, including any comments or recommendations where appropriate.
As our evaluation focus is objective, it is our aim to provide the reader with the facts as they appear, and minimize any personal bias.
The evolution of RADs brought about the idea of libraries, where commonly used and heavily tested components were accessible, thus greatly reducing development time. Also, the integration of Object-Oriented Programming (OOP) added two valuable aspects to the development of RADs:
Visual C++ is a programming environment developed by the MicroSoft Corporation (T). The programming language used is Visual C++ is C++ (obviously) which is an object oriented programming language. It is only available for the operating system environments Microsoft Windows 3.x/95/NT. It compiles, links, and creates an executable for the project built by the programmer. The project may include programming code, pictures, and GUI. There are features available to generate customized project templates and for designing the GUI.
Delphi
Delphi is also a programming environment developed by Borland International (T). The programming language used in Delphi is Object Pascal. It is available for Windows 3.x/95/NT. Delphi, as well, compiles its source code to create an executable program. There are many code generator tools available in Delphi as well as an interface builder. It has it`s own built-in database engine, and reporting/printing features. It is one of the most popular interface builders on the market.
Tcl/Tk
Tcl/Tk are two development packages that work in tandem. Together they provide a programming system for developing and using graphical user interfaces (GUI) applications. These packages are available for XWindows and for Windows 3.x. Tcl stands for "Tool Command Language"and is pronounced "tickle". It is a simple scripting language for controlling and extending applications. Tk is a toolkit for the XWindows system, and its name is pronounced "tee-kay". Tk extends the Tcl facilities with additional commands for building interfaces, so that you can construct Motif and Windows user interfaces by writing Tcl scripts instead of C code. Tcl/Tk do not use an interface. The programmer simply writes all the programming code in one file and the interpreter will execute the application. There are no code generators available for Tcl/Tk, but there are some slow third party GUI builders available.
Borland Delphi also compiles its code to produce an executable, so its compilation speed is relatively slower. However, the compiled code is not nearly as efficient (in terms of size and speed) as the Visual C++ compiler, so creating the executable for an application in Delphi takes approximately 1/10 of the time to create the same executable in Visual C++. This is noticed when running the executable as it is a fair bit slower than Visual C++.
Tcl and Tk are interpreted languages, which means that every line of code is read and executed as the program runs. Thus, there is no compilation and no executable will be created. The main advantage of an interpreted language is that it is really fast and easy to debug and create since you do not need to compile and link the code, you just run it. This results in faster development time. However, the main disadvantage of an interpreted language is that it is much slower executable than a compiled language. This is why Tcl/Tk applications are 10 to 20 slower than Delphi and Visual C++.
Borland Delphi, in the other hand, comes fully equipped with a database engine and reporting feature (ReportSmith) for about $400.00 for a single user licence. Delphi uses components which saves the programmer much work. These components are written by other developers and sold for $50-$100/component for a single user. An example of a component is the "Communication component" which lets you use any communication function to create a modem program. Another example is the Multi Media component which lets the programmer control the peripherals like a CD player or video recorder from the application.
Tcl/Tk is a freeware application, so it costs nothing. It can be downloaded from the internet for free. There are no database engines or report features that are available for Tcl/Tk.
Microsoft Visual C++ has a limited number of tools (relatively speaking) to provide easier development. One of these tools is called App Studio which allows the user to create the GUI by simple drag and drop. This allows the user to bypass all the code writing to create the GUI. (This feature is built-in and integral to Delphi). Another nice feature to Visual C++ is the MFC (Microsoft Foundation Classes) which have pre-written code for re-use. The programmer only calls the functions of the re-usuable code and all the windows and events are taken care of automatically. These is what programmers call reusable objects. The last remarkable feature of Visual C++ is the "App Wizard" which creates all the code and windows for a customized and empty project. All the programmer needs to do is add any windows, and functions. The project will run as normal after using "App Wizard".
Borland Delphi provides the programmer with code generators as well, so that the programmer does not need to code the essentials every time. It also uses components which are pre-written classes / objects to perform specific tasks. Such components provide the functionalities needed for a specific task such as accessing database tables and performing SQL (Structured query language), so that the programmer writes a minimum of code in this area. Delphi also provides a reporting tool called "Report Smith" which lets the programmer create any customized report from the database tables. It also has a database engine included within (Borland Database Engine) which provides full database functionalities such as adding, deleting, and editing records.
Tcl/Tk packages do not provide any code generation functions and no GUI builder. So all the windows, buttons, and other objects (called widgets) are implemented via the code you write. As well, all event handling that the user wants to implement must be written from scratch. Usually source code for an application is usually kept in one file since the complexity of the code is hidden behind the interpreters and the source code becomes fairly small. However, Tcl/Tk provides "reusable code" / objects feature. This feature allows you to use code that has already been written such as the "file load and save dialog". This dialog is a very commonly used dialog which lists the files and directory structures and is used to load files or save files. Such dialogs are available in Tcl/Tk as prewritten code.
Borland Delphi is far easier to use compared to Visual C++. It is intuitive and all the error checking is already implemented. Accessing databases or producing reports from the application is an easy and quick process with minimum amount of extra coding required. The available components provide much of the commonly used objects and dialogs for immediate implementation, leaving more time for customizing the components to your task. Delphi definitely has a very high learning curve.
Tcl/Tk has a high learning curve also, though not as high as Delphi. The available commands are limited and fairly easy to use. There are no tools to learn and no interfaces. GUI screens are built through the Tk commands. For example, the positioning of all the widgets is done through a command called "pack" such that when the users resizes a window the position is constant with the window size and position. This way it looks like all the items inside are glued to the window.