Langbahn Team – Weltmeisterschaft

Visual Basic (classic): Difference between revisions

Content deleted Content added
Wrp103 (talk | contribs)
rv - comments belong on Talk: page
65.110.28.79 (talk)
Line 77: Line 77:
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 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). Other significant features from past editions were also removed including control arrays.
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 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). Other significant features from past editions were also removed including control arrays.


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, but large projects have many thousands of such places requiring lots of programmer time to complete the upgrade. In particular the ''Variant'' data type, which was the default data type is no longer supported. Therefore, programs that did not declare all variables and/or those that depended on the Variant data type cannot be converted without significant effort. Programs written in VB.NET are not able to be feasibly converted back to VB6 code at all.
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, but large projects have many thousands of such places requiring lots of 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 are not able to be feasibly converted back to VB6 code at all.


Some believe VB.NET support will diminish, with [[C Sharp programming language|C#]] becoming the preferred language for .NET programming. This is despite the fact that both languages compile to the same .NET [[Common Intermediate Language]], with the programming language choice merely a matter of syntax preference.
Some believe VB.NET support will diminish, with [[C Sharp programming language|C#]] becoming the preferred language for .NET programming. This is despite the fact that both languages compile to the same .NET [[Common Intermediate Language]], with the programming language choice merely a matter of syntax preference.

Revision as of 01:16, 14 April 2006

This article is about the Visual Basic language shipping with Microsoft Visual Studio 6.0 and earlier. For the Visual Basic shipping with Microsoft Visual Studio .NET, see Visual Basic .NET.
File:VB cover.png
The four colored boxes is the logo of VBA, and the two drums above them symbolize database connectivity

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. In business programming, it has one of the largest user bases.

It is 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.

As of 2003, 52 percent of software developers used Visual Basic, making it the most popular programming language at that time. 43 percent of those Visual Basic developers, however, planned to move to other languages.[1] The popularity of Visual Basic perhaps results from its easy to understand syntax. Like all other Turing complete programming languages, it can also be used to create arbitrarily complex applications. Programs written in Visual Basic can use the Windows API, but doing so requires external function declarations.

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:

  • VBScript is the default language for Active Server Pages and can be used in Windows scripting and client-side web page scripting. Although it resembles VB in syntax, it is a separate language and it is executed by the Windows Script Host as opposed to the VB runtime. These differences can affect the performance of an ASP web site (namely inefficient string concatenation and absence of short-cut evaluation). ASP and VBScript must not be confused with ASP.NET which uses Visual Basic.Net or any other language that targets the .NET Common Language Runtime.
  • Visual Basic .NET is the successor to Visual Basic 6.0, which is part of Microsoft's .NET platform. The VB.NET programming language is a true object-oriented language that compiles and runs on the .NET Framework. VB.NET is a totally new tool from the ground up, not backwards compatible with VB6. It ships with a basic converter to upgrade legacy VB6 code although the inefficient nature of the resulting VB.NET code (due to major differences between the two languages) often leads programmers to prefer manual conversion instead. This usually involves re-writing much of the code although in doing so, the programmer can simplify and improve the code through use of the extensive .NET framework and the more powerful constructs offered by the newer language.

Language features

File:Typical vb6 session.png
A typical session in Microsoft Visual Basic 6

Visual Basic was designed to be usable by all programmers, whether novice or expert. The language is designed to make it easy to 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 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 (e.g., a typo generating an "undefined variable" error message).

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 [2]." (Dijkstra was no less scathing about FORTRAN, PL/I, COBOL and APL.)

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 than 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). The language is simple and human readable which eases maintenance and support, especially when performed by developers who did not originally author the software. 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

  • Inheritance. Visual Basic versions 5 and 6 are object oriented languages but do not include implementation inheritance. VB5 and 6 do however include specification of interfaces. That is, a single class can have as many distinct interfaces as the programmer desires. VB.NET implements the full set of object-oriented features. Visual Basic provides a specific syntax for access to attributes called Property methods, and this is often implemented using getters and setters in C++ or Java. Python has an equivalent notation to VB6's property Let and Get.
  • Threading support not present prior to Visual Basic .NET.
  • Structured exception handling prior to Visual Basic .NET. Error handling is controlled by an "On Error" statement.
  • Built-in support for bit shifting. This feature appears only in Visual Basic .NET 2003 (7.1) or higher.
  • Typecasting. VB instead has explicit conversion functions.
  • Equivalents to C-style pointers are very limited.
  • Visual Basic is limited to unsigned 8-bit integers and signed integers of 16 to 64 bits. Many other languages provide wider range of signed and unsigned integers.
  • 32-bit and 64-bit Visual Basic is internally limited to UTF-16 strings, although it provides conversion functions to other formats (16-bit Visual Basic is internally limited to ASCII strings).
  • Visual Basic doesn't allow constant variables to contain an array. Therefore extra processing is required to emulate this.

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

VB has the following uncommon traits:

  • Boolean constant True has numeric value -1. In most other languages, True is mapped to numeric value 1. This is because the Boolean data type is stored in the same way as a 16 bit signed integer. In this construct -1 evaluates to 16 binary 1s (the Boolean value True) or 16 0s (the Boolean value False). This is apparent when performing a Not operation on a 16 bit signed integer value 0 which will return the integer value -1. This inherent functionality becomes especially useful when performing logical operations on the individual bits of an integer such as And, Or, Xor and Not.
  • Logical and bitwise operators are unified. This is unlike all the C-derived languages (such as Java or Perl), which have separate logical and bitwise operators.
  • Variable array base. Arrays are declared by specifying the upper and lower bounds in a way similar to Pascal. It is also possible to use the Option Base statement to set the default lower bound. Use of the Option Base statement can lead to confusion when reading Visual Basic code and is best avoided by always explicitly specifying the lower bound of the array. This lower bound is not limited to 0 or 1, because it can also be set by declaration. In this way, both the lower and upper bounds are programmable. In more subscript-limited languages, the lower bound of the array is not variable. This uncommon trait doesn't exist in Visual Basic .NET and VBScript.
  • Ability to run the application without performing a full compile or making an executable, allowing for edit-and-continue changes.
  • Relatively strong integration with the Windows operating system.
  • Banker's rounding as the default behavior when converting real numbers to integers.
  • Integers are automatically promoted to reals in expressions involving the normal division operator (/) so that division of an odd integer by an even integer produces the intuitively correct result. There is a specific integer divide operator (\) which does truncate.
  • By default, if a variable has not been declared or if no type declaration character is specified, the variable is of type Variant. However this can be changed with Deftype statements such as DefInt, DefBool, DefVar, DefObj, DefStr to name a few. There are 12 Deftype statements in total offered by Visual Basic 6.0

Visual Basic and VB.NET

Visual Basic .NET, VB.NET, is a backwards-incompatible upgrade 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, Try-Catch-Finally blocks, and zero-based arrays. 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 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). Other significant features from past editions were also removed including control arrays.

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, but large projects have many thousands of such places requiring lots of 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 are not able to be feasibly converted back to VB6 code at all.

Some believe VB.NET support will diminish, with C# becoming the preferred language for .NET programming. This is despite the fact that both languages compile to the same .NET Common Intermediate Language, with the programming language choice merely a matter of syntax preference.

Evolution of Visual Basic

File:Vb6icon.GIF
VB6 Icon

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

  • Visual Basic 1.0 (May 1991) was released for Windows.
Visual Basic for MS-DOS
  • Visual Basic 1.0 for DOS was released in September 1992. The language itself was not quite compatible with Visual Basic for Windows, as it was actually the next version of Microsoft's DOS-based BASIC compilers, QuickBASIC and BASIC Professional Development System. The interface was barely graphical, using extended ASCII characters to simulate the appearance of a GUI.
  • Visual Basic 2.0 was released in November 1992. The programming environment was easier to use, and its speed was improved.
  • Visual Basic 3.0 was released in the summer of 1993 and came in Standard and Professional versions. VB 3 included version 1.1 of the Microsoft Jet database engine that could read and write Jet (or Access) 1.x databases.
  • Visual Basic 4.0 (August 1995) was the first version that could create 32-bit as well as 16-bit Windows programs. It also introduced the ability to write classes in Visual Basic.
  • With version 5.0 (February 1997), Microsoft released Visual Basic exclusively for 32-bit versions of Windows. Programmers who preferred to write 16-bit programs were able to import programs written in Visual Basic 4.0 to Visual Basic 5.0, and Visual Basic 5.0 programs can easily be converted with Visual Basic 4.0. Visual Basic 5.0 also introduced the ability to create custom user controls, as well as the ability to compile to native Windows executable code, speeding up runtime code execution.
  • Visual Basic 6.0 (Mid 1998) improved in a number of areas, including the ability to create web-based applications. VB6 is currently scheduled to enter Microsoft's "non-supported phase" starting March 2008.
  • In April 2005 Microsoft announced that support for non .NET versions of Visual Basic would end within a few years. The Visual Basic community instantly expressed its concern and lobbied users to sign a petition to keep the product alive. Microsoft has so far refused to change their position on the matter. Ironically, around this time, it was exposed that Microsoft's new anti-spyware offering, Microsoft AntiSpyware, was coded in Visual Basic 6.0 (although this can be explained by the fact that the product was "inherited" with Microsoft's acquisition of GIANT). Windows Defender Beta 2 was rewritten as C++/CLI code, as mentioned in Paul Thurrott's review of this product.

Timeline of Visual Basic .NET

  • Visual Basic .NET was launched in 2002 along with the .NET Framework. Its language features are much richer than previous versions, although it is more complex. VB .Net is not backwards compatible, so many older VB programs must be modified to remove features incompatible with VB .Net (e.g., non-zero base arrays, the use of Variant, etc.)
  • In 2004 Microsoft released a beta version of Visual Studio.NET 2005 (codename Whidbey). This included a beta of version 2.0 of Visual Basic .NET
  • Also in 2004, Microsoft announced a return to offering support for Visual Basic hobbyists with the announcement of Visual Basic Express, and Visual Web Developer Express. Both are reduced feature versions of Visual Studio 2005 and support Visual Basic.NET 2.0.
  • On November 7 2005 Visual Studio 2005 was released, which includes Visual Basic .NET 2005 along with the .NET Framework 2.0. Microsoft also introduced Visual Basic 2005 Express Edition, a cut-down free edition designed to introduce people to the Visual Basic .NET environment.
  • In early 2006, Microsoft started making available community technology preview releases of Visual Basic 9.0, primarily focusing on the addition of Language integrated query, but also adding several new language features such as anonymous types, nullable types, and nested functions.

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

  1. ^ Martin LaMonica (2003-05-07). "Study: Visual Basic use may be slipping". CNET. Retrieved 2006-01-25. {{cite web}}: Check date values in: |year= (help); Text "CNET News.com" ignored (help)CS1 maint: year (link)

See also

Template:Major programming languages small