PMzone logo

Book cover

Project Guides

IDE Development



IDE Design and Development

Project 5: Learn How to Write a Graphic User Interface (GUI)

This tutorial presents an overview on how to design and develop an integrated development environment (IDE). Excerpts in the accompanying project guides are taken from the book, IDE Design and Development, Volume 1, First Edition.

Some of the best programming languages come with outstanding Integrated development environments (IDE). The best IDEs include a code editor, compiler, linker, assembler, debugger, context sensitive help, toolboxes, libraries, application wizards, and documentation. Well-designed IDEs should be easy to use and understand. They also should be well-supported, updated, and consistently maintained.


An integrated development environment (IDE) is a software application that provides facilities for writing code, saving and opening code files, building projects (i.e. compiling and linking), and running and debugging programs. We build a simple graphical user interface (GUI) editor for the Ada programming language. The Ada IDE contains a source code editor, build tools, and a debugger. Future versions of the IDE will include intelligent code completion, version control, and a class browser, object browser, and class hierarchy diagram for use in object-oriented programming.

An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of a source code editor, build automation tools and a debugger. Most modern IDEs have intelligent code completion. Some IDEs, such as NetBeans and Eclipse, contain a compiler, interpreter, or both; others, such as SharpDevelop and Lazarus, do not. The boundary between an integrated development environment and other parts of the broader software development environment is not well-defined. Sometimes a version control system, or various tools to simplify the construction of a Graphical User Interface (GUI), are integrated. Many modern IDEs also have a class browser, an object browser, and a class hierarchy diagram, for use in object-oriented software development. An Integrated Development Environment (IDE) is an application that facilitates application development. In general, an IDE is a graphical user interface (GUI)-based workbench designed to aid a developer in building software applications with an integrated environment combined with all the required tools at hand. Most common features, such as debugging, version control and data structure browsing, help a developer quickly execute actions without switching to other applications. Thus, it helps maximize productivity by providing similar user interfaces (UI) for related components and reduces the time taken to learn the language. An IDE supports single or multiple languages. The concept of IDE evolved from simple command based software which was not as useful as menu-driven software. Modern IDEs are mostly used in the context of visual programming, where applications are quickly created by moving programming building blocks or code nodes that generate flowchart and structure diagrams, which are compiled or interpreted. Selecting a good IDE is based on factors, such as language support, operating system (OS) needs and costs associated with using the IDE etc. You’ve picked the language you want to learn, and you’ve learned more about the various language paradigms. You want to get started writing some actual code—but what tool do you use? With almost all languages, you can start writing code in any old text editor available to you, and that’s what programmers used to do, decades ago. Any good engineer, though, will find tools to make his or her job easier, and that’s where the Integrated Development Environment (IDE) comes into play. So now you need to learn how to use a tool before you can learn the language? Not necessarily. Although many programmers consider “should I use an IDE?” to be a question with an obvious answer, they don’t necessarily agree on what that answer is. What’s an IDE, anyway? In most cases, an IDE is a text editor with some extra bits added on to help you write code more easily. The text editor is at the core of the IDE, and works more or less like you’d expect. Many will highlight simple syntax errors on the fly, so you don’t have the experience of having a simple typo ruin hours of coding. They also often have an “autocomplete” feature, so that if you type system.math. and pause, the IDE will present you with a list of the various math functions available, so you don’t need to remember whether the square root function is sqrt() or squareroot(). Just about every IDE has a build automator of some kind that compiles the code, and builds an executable program by adding in any necessary libraries, some of which you may not even be aware of. Those same tools make it easier to organize and include any optional libraries, or ones you’ve created yourself. The feature of most IDEs that you’d be spending the most time with, though, is the debugger. Depending on the IDE, it’s a suite of tools that will find errors in your code before it compiles, and then (hopefully) point them out to you so that you can fix them easily. That’s an oversimplification, and it’s far from foolproof: you’ll be swearing at the debugger for telling you that there’s a type mismatch on line 354 when the root of the problem is a logic error on line 256. But it’s a heck of a lot better than debugging by hand. The Case Against IDEs Now that you know what an IDE is, you want to run right out and get one? Not so fast; there are other sides to the argument. Depending on the language you want to learn, your choice of IDE may be quite limited, and the choices available might be fairly complicated applications. For example, if you want to use one of Microsoft’s .NET languages (C#, Visual Basic, or ASP.NET), you’re going to hear a lot about Visual Studio, which isn’t your only option, but it’s most common. The full version of Visual Studio is expensive, and has a lot more tools than a beginner needs, which is why Microsoft offers “light” versions for individual languages, free of charge, but even those can be pretty intimidating at first look. You may also hear stories about “real programmers” who don’t use IDEs, but type all of their code perfectly the first time, from beginning to end, perhaps even in hexadecimal. Even if you don’t, you’ll probably hear from somebody who thinks that IDEs are overkill, and you can do everything you need with vi or emacs (which will then start an argument about whether vim or emacs add-ons constitute an IDE, and you don’t want any part of that; just back away slowly). Speaking very broadly, programmers who work in scripting languages, or languages that evolved from scripting languages, are more likely to regard an IDE as optional. Overview Integrated development environments are designed to maximize programmer productivity by providing tight-knit components with similar user interfaces. IDEs present a single program in which all development is done. This program typically provides many features for authoring, modifying, compiling, deploying and debugging software. This contrasts with software development using unrelated tools, such as vi, GCC or make. One aim of the IDE is to reduce the configuration necessary to piece together multiple development utilities, instead providing the same set of capabilities as a cohesive unit. Reducing that setup time can increase developer productivity, in cases where learning to use the IDE is faster than manually integrating all of the individual tools. Tighter integration of all development tasks has the potential to improve overall productivity beyond just helping with setup tasks. For example, code can be continuously parsed while it is being edited, providing instant feedback when syntax errors are introduced. That can speed learning a new programming language and its associated libraries. Some IDEs are dedicated to a specific programming language, allowing a feature set that most closely matches the programming paradigms of the language. However, there are many multiple-language IDEs, such as Eclipse, ActiveState Komodo, IntelliJ IDEA, MyEclipse, Oracle JDeveloper, NetBeans, Codenvy and Microsoft Visual Studio. Xcode, Xojo and Delphi are dedicated to a closed language or set of programming languages. While most modern IDEs are graphical, text-based IDEs such as Turbo Pascal were in popular use before the widespread availability of windowing systems like Microsoft Windows and the X Window System (X11). They commonly use function keys or hotkeys to execute frequently used commands or macros. An IDE or Integrated Development Environment is a software program that is designed to help programmers and developers build software. Most IDEs include: •a source code editor A source code editor is similar to an HTML text editor. It is where programmers write the source code for their programs. •a compiler and/or an interpreter A compiler compiles the source code into an executable program and an interpreter runs programs and scripts that don't need to be compiled. •build automation tools Build automation tools help automate the processes that need to happen with most software development like compiling, debugging, and deployment. •a debugger Debuggers help pin-point the exact spot where there is a problem in the source code. If all you build are static websites (HTML, CSS, and perhaps some JavaScript) you may be thinking “I don’t need any of that!” And you would be right. An IDE is overkill for web developers that only build static websites. But if you do or want to build web applications, or convert your applications to native mobile applications, you might want to think again before dismissing the idea of an IDE out of hand. Do Web Application Developers Need an IDE? Ultimately, no. In most cases, you can built a web application in standard web design software, or even a plain text editor without any trouble. And for most designers, an IDE will add more complexity without adding a lot of value. The fact is that most web pages, and even most web applications are built using programming languages that don’t need to be compiled. So a compiler is unnecessary. And unless the IDE can debug JavaScript the debugger isn’t going to be much use either. Build automation tools rely on the debugger and compiler so they don’t add much value. So the only thing that most web designers would use in an IDE is the source code editor—for writing HTML. And in most cases, there are text HTML editors that provide more features and are more useful. SCINTILLA Scintilla is a free open source library that provides a text editing component function, with an emphasis on advanced features for source code editing. SciTE (cross-platform, developed by the same author), Geany (cross-platform), Notepad++ (Windows), Programmer's Notepad (Windows) and Notepad2 (Windows) are examples of standalone text editors based on Scintilla. FEATURES Scintilla supports many features to make code editing easier in addition to syntax highlighting. The highlighting method allows the use of different fonts, colors, styles and background colors, and is not limited to fixed-width fonts. The control supports error indicators, line numbering in the margin, as well as line markers such as code breakpoints. Other features such as code folding and autocompletion can be added. The basic regular expression search implementation is rudimentary, but if compiled with C++11 support Scintilla can support the runtime's regular expression engine. Scintilla's regular expression library can also be replaced or avoided with direct buffer access. Currently, Scintilla does not support right-to-left or boustrophedon languages.[3] Scinterm is a version of Scintilla for the curses Text User Interface. It is written by the developer of the Textadept editor. Scinterm uses UTF-8 characters to support some of Scintilla's graphically oriented features, but some Scintilla features are missing because of the terminal environment's constraints. Scintilla is a free source code editing component. It comes with complete source code and a license that permits use in any free project or commercial product. As well as features found in standard text editing components, Scintilla includes features especially useful when editing and debugging source code. These include support for syntax styling, error indicators, code completion and call tips. The selection margin can contain markers like those used in debuggers to indicate breakpoints and the current line. Styling choices are more open than with many editors, allowing the use of proportional fonts, bold and italics, multiple foreground and background colours and multiple fonts. SciTE is a SCIntilla based Text Editor. Originally built to demonstrate Scintilla, it has grown to be a generally useful editor with facilities for building and running programs. It is best used for jobs with simple configurations - I use it for building test and demonstration programs as well as SciTE and Scintilla, themselves. Development of Scintilla started as an effort to improve the text editor in PythonWin. After being frustrated by problems in the Richedit control used by PythonWin, it looked like the best way forward was to write a new edit control. The biggest problem with Richedit and other similar controls is that they treat styling changes as important persistent changes to the document so they are saved into the undo stack and set the document's dirty flag. For source code, styling should not be persisted as it can be mechanically recreated.

NOTICE More discussion to come as the Ada IDE project progresses.

Page Top

© 1997-2017 Transtar Management Services, Inc. All rights reserved. Terms of Use