Opentopia Directory Encyclopedia Tools

Visual BASIC

Encyclopedia : V : VI : VIS : Visual BASIC


Visual Basic (VB) is an event driven programming language and associated development environment prototyped by Alan Cooper as Project Ruby, then bought and vastly improved upon by Microsoft. VB has been replaced by Visual Basic .NET. The older version of VB was derived heavily from BASIC and enables rapid application development (RAD) of graphical user interface (GUI) applications, access to databases using DAO, RDO, or ADO, and creation of ActiveX controls and objects.

A programmer can put together an application using the components provided with Visual Basic itself. Programs written in Visual Basic can also use the Windows API, but doing so requires external function declarations.

In business programming, Visual Basic has one of the largest user bases. According to some sources, as of 2003, 52 percent of software developers used Visual Basic, making it the most popular programming language at that time. However, research done by Evans Data found that forty three percent of those Visual Basic developers planned to move to other languages.

Derivative languages

Microsoft has developed derivatives of Visual Basic for use in scripting. It is derived heavily from BASIC and host applications, and has replaced the original Visual Basic language with a .NET platform version:

Language features

A typical session in Microsoft Visual Basic 6
Enlarge
A typical session in Microsoft Visual Basic 6

Visual Basic was designed to be easy to learn and use. The language not only allows programmers to easily create simple GUI applications, but also has the flexibility to develop fairly complex applications as well. Programming in VB is a combination of visually arranging components or controls on a form, specifying attributes and actions of those components, and writing additional lines of code for more functionality. Since default attributes and actions are defined for the components, a simple program can be created without the programmer having to write many lines of code. Performance problems were experienced by earlier versions, but with faster computers and native code compilation this has become less of an issue.

Although programs can be compiled into native code executables from version 5 onwards, they still require the presence of runtime libraries of approximately 2 MB in size. This runtime is included by default in Windows 2000 and later, but for earlier versions of Windows it must be distributed together with the executable.

Forms are created using drag and drop techniques. A tools palette is used to place controls (e.g., text boxes, buttons, etc.) on the form (window). Controls have attributes and event handlers associated with them. Default values are provided when the control is created, but may be changed by the programmer. Many attribute values can be modified during run time based on user actions or changes in the environment, providing a dynamic application. For example, code can be inserted into the form resize event handler to reposition a control so that it remains centered on the form, expands to fill up the form, etc. By inserting code into the event handler for a keypress in a text box, the program can automatically translate the case of the text being entered, or even prevent certain characters from being inserted.

A Visual Basic application can consist of one or more windows, or a single window that contains MDI child windows, as provided by the operating system. Dialog boxes with less functionality (e.g., no maximize/minimize control) can be used to provide pop-up capabilities. Controls provide the basic functionality of the application, while programmers can insert additional logic within the appropriate event handlers. For example, a drop-down combination box will automatically display its list and allow the user to select any element. An event handler is called when an item is selected, which can then execute additional code created by the programmer to perform some action based on which element was selected, such as populating a related list.

Alternatively, a Visual Basic component can have no user interface, and instead provide ActiveX objects to other programs via Component Object Model (COM). This allows for server-side processing or an add-in module.

The language is garbage collected using reference counting, has a large library of utility objects, and has basic object oriented support. Since the more common components are included in the default project template, the programmer seldom needs to specify additional libraries. Unlike many other programming languages, Visual Basic is generally not case sensitive, although it will transform keywords into a standard case configuration and force the case of variable names to conform to the case of the entry within the symbol table entry. String comparisons are case sensitive by default, but can be made case insensitive if so desired.

Controversy

Visual Basic is a controversial language; many programmers have strong feelings regarding the quality of Visual Basic and its ability to compete with newer languages. It was designed to be a simple language. In the interest of convenience and rapid development, some features like compile time type-checking and variable declaration are turned off by default. This leads to some programmers praising Visual Basic for how simple it is to use, but can also lead to frustration when programmers encounter problems that the features would have detected. For instance, in Visual Basic a common mistake is to incorrectly type the name of a variable, creating a new variable with a slightly different name.

Weaknesses

Debugging

Visual Basic does have a very basic set of debugging tools like breakpoints and "Full Compile" testing which can point out errors with accuracy. The On Error Goto statement provides very basic error handling; Visual Basic does not have Exception handling.

Simplicity

Many critics of Visual Basic explain that the simple nature of Visual Basic is harmful in the long run. Many people have learned VB on their own without learning good programming practices. Even when VB is learned in a formal classroom, the student may not be introduced to many fundamental programming techniques and constructs, since much of the functionality is contained within the individual components and not visible to the programmer. Since it is possible to learn how to use VB without learning standard programming practices, this often leads to unintelligible code and workarounds. Second, having many of the checks and warnings that a compiler implements turned off by default may lead to difficulties in finding bugs. Experienced programmers working in VB tend to turn such checks on.

Many of the criticisms fired at Visual Basic are in fact criticisms of its ancestor, BASIC. A famous formulation by Edsger Dijkstra was, "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration [link]." (Dijkstra was no less scathing about FORTRAN, PL/I, COBOL and APL.)

Strengths

However, many proponents of Visual Basic explain that the simple nature of Visual Basic is its main strength, allowing very rapid application development to experienced Visual Basic coders and a very slight learning curve for programmers coming from other languages. Additionally, Visual Basic applications can easily be integrated with databases, a common requirement. For example, by using controls that are bound to a database, it is possible to write a VB application that maintains information within the database without writing any lines of VB code.

Visual Basic is also a conglomerate of language features and syntax, with less consistency, but more tolerance, than many modern programming languages. Many language features like GoSub, On Error, and declaring the type of a variable by the last character in the name (i.e. str$) are legacies from Visual Basic's BASIC roots, and are included for backward-compatibility. The syntax of VB is different from most other languages, which can lead to confusion for new VB programmers. For example, the statement "Dim a, b, c As Integer" declares "c" as integer, but "a" and "b" are declared as Variant. Other characteristics include the entry of keyword, variable and subroutine names that are not case sensitive, and an underscore "_" must be used for a statement to span multiple lines. Some Visual Basic programmers perceive these as strengths needed to avoid case-sensitive compiler errors, and accidentally omitting line-termination characters some languages require (usually semicolons). For example, the ability to enter variable and subroutine names in any case can be used to the programmer's advantage: by declaring all names in mixed case, but entering them in lower case elsewhere, allows the programmer to type faster and to detect typos when a token remains in lower case.

The language continues to attract much praise and criticism, and it continues to cater to a large base of users and developers. The language is well suited for certain kinds of GUI applications (e.g., front end to a database), but less suited for others (e.g., compute-bound programs). Its simplicity and ease of use explain its popularity as a tool for solving business problems — most business stakeholders do not care about technical elegance and effectiveness, and concentrate instead on the cost effectiveness of Visual Basic.

Programming constructs not present in Visual Basic

Many of these features are implemented in Microsoft's replacement for Visual Basic 6 and prior, VB.NET. While Visual Basic does not naturally support these features, programmers can construct work-arounds to give their programs similar functionality if they desire.

Behaviors present in Visual Basic

Visual Basic has the following uncommon traits:

Visual Basic and VB.NET

Visual Basic 2005
Enlarge
Visual Basic 2005

Visual Basic .NET, VB.NET, is a backwards-incompatible redesign of Visual Basic to Microsoft's .NET platform. Almost all of the above criticisms have been addressed with many of the missing features added. VB.NET has support for threading, advanced object oriented code, and Try-Catch-Finally blocks. Many new features (mainly from the .NET framework) have also appeared, like remoting, web services, 64-bit integers and ADO.NET.

VB.NET is also a fully-compiled language (as opposed to previous versions which could both compile and interpret the language). Programs require compilation even if the program is only to be debugged. This resulted in a number of convenient features being removed from Visual Basic, including the quick execution of programs, and the famous edit-and-continue feature (this feature has been restored in Visual Basic 2005). Visual Basic 2005 also includes the "MY" namespace, which gives the developer a vast amount of commonly used functionality.

Note: Microsoft has officially dropped the ".net" within the Visual Studio product name for 2005.

Many of the original critics of Visual Basic now praise VB.NET for providing a "complete" language, while a few supporters of Visual Basic claim VB.NET has made the language too complicated and too hard to use for simple application development. Another criticism of VB.NET is the incompatibility and lack of similarity in syntax. VB.NET provides a wizard to help upgrade code, but many features are not converted properly. The wizard produces a list of places in the code where the upgrade is incomplete, and large projects have many thousands of such places requiring significant programmer time to complete the upgrade. In particular the Variant data type, which was the default data type is no longer supported. It is replaced by the Object type. Programs written in VB.NET must be manually converted to VB6 code if this is desired.

Some critics believe VB.NET support will diminish, with C# becoming the preferred language for .NET programming. However both languages compile to .NET Common Intermediate Language. With the releases of the 2002, 2003 and 2005 versions of Visual Studio, Microsoft has re-affirmed support for Visual Basic. Starting with Tech Ed 2001 , Bill Gates "called attention to the significance of the 10th anniversary of Microsoft® Visual Basic® , the world's most widely used programming language." Currently, C# programmers must include the Microsoft.VisualBasic namespace to access the very powerful "My" class.

Evolution of Visual Basic

VB 1.0 was introduced in 1991. The approach for connecting the programming language to the graphical user interface is derived from a system called Tripod (sometimes also known as Ruby), originally developed by Alan Cooper, which was further developed by Cooper and his associates under contract to Microsoft.

Timeline of Visual Basic before Visual Basic .NET

VB DOS Logo

Timeline of Visual Basic .NET

Visual Basic and HyperCard

Putting Visual Basic into historical context invites comparison with HyperCard, a programming tool developed by Bill Atkinson, Dan Winkler, and their associates at Apple Computer and released in 1987. Both HyperCard and VB initially present the user with a "drawing" environment in which UI objects can be dragged, sized, captioned, and have a set of properties edited. Both connect a set of events, associated with the visual objects, to fragments of code. In both cases, the code is written in a programming language that is intended to cater to the novice and be easy to use. This is not to suggest that VB is a clone or copy of HyperCard. The relationship is more like that of C or Pascal to ALGOL; one can detect a family resemblance.

Unlike VB, HyperCard's programming language, HyperTalk, like COBOL before it (and AppleScript after it), consists of syntactically valid English sentences, such as "Get the number of card buttons." (Whether this actually makes it any easier to read, write, understand, or maintain than BASIC is arguable.)

Another difference that may have contributed to the rise of VB is that VB produced applications that were virtually indistinguishable in look, feel, and general characteristics from Windows applications produced with traditional development tools. That is, it produced "true-form" Windows applications. HyperCard produced HyperCard stacks, which do not resemble true Macintosh applications. HyperCard briefly spawned a limited cottage industry of commercial "stackware," rather like the former market in spreadsheet templates, but saw little commercial application (with notable exceptions: the fully commercial adventure game Myst was based on an elaborated version of HyperCard). HyperCard "stacks" were always recognizable as such.

HyperCard made a big impression when it was released in 1987, but for various reasons Apple did not follow it up vigorously or develop it much beyond what it was in 1987. By the year 2000 Apple had effectively abandoned it; it was officially discontinued in April 1999.

References

See also

  • Comparison of programming languages
  • REALbasic - provides direct import of Visual Basic 6 projects, often with few changes needed to compile to Windows, Mac and Linux
  • BlitzMAX - more properly object oriented dialect, compared to Visual Basic
  • IIf — a function in several editions of Visual Basic that returns one of its two parameters based on the evaluation of an expression. Similar to a conditional statement, or roughly equivalent to the ternary operator of C and related languages.

External links

has more about this subject:

 


From Wikipedia, the Free Encyclopedia. Original article here. Support Wikipedia by contributing or donating.
All text is available under the terms of the GNU Free Documentation License See Wikipedia Copyrights for details.

Search Titles
0123456789
ABCDEFGHIJ
KLMNOPQRST
UVWXYZ?

E-mail this article to:

Personal Message: