Вы находитесь на странице: 1из 26

You can give the gift of knowledge by donating to the

Wikimedia Foundation!
Live list of donations
Tax-deductibility of donations | FAQ | Financial statements (pdf)

Visual Basic .NET


From Wikipedia, the free encyclopedia

Jump to: navigation, search


Visual Basic .NET

structured, imperative, object-


Paradigm:
oriented

Appeared in: 2001 (last revised 2005)

Designed by: Microsoft Corporation

dynamic, strong, unsafe[1],


Typing discipline:
nominative

Major
.NET Framework, Mono
implementations:

Microsoft Visual Studio .NET,


Dialects:
.NET 2003, 2005

Influenced: None

Visual Basic .NET (VB.NET) is an object-oriented computer language


that can be viewed as an evolution of Microsoft's Visual Basic (VB)
implemented on the Microsoft .NET framework. Its introduction has
been controversial, as significant changes were made that broke
backward compatibility with VB and caused a rift within the developer
community.
The great majority of VB.NET developers use Visual Studio .NET as
their integrated development environment (IDE). SharpDevelop
provides an open-source alternative IDE.
Like all .NET languages, programs written in VB.NET require the .NET
framework to execute.
Contents
[hide]

• 1 Versions of Visual Basic .NET


o 1.1 Visual Basic .NET
o 1.2 Visual Basic .NET 2003
o 1.3 Visual Basic 2005
 1.3.1 IsNot Patent
 1.3.2 Visual Basic 2005 Express
• 2 Relation to Visual Basic
o 2.1 Comparative samples
o 2.2 Controversy
• 3 Cross-platform and open-source development
• 4 Hello World Example
• 5 Notes
• 6 See also
• 7 External links

o 7.1 Tutorials

[edit] Versions of Visual Basic .NET


As of November 2006 there are three versions of Visual Basic .NET.

[edit] Visual Basic .NET

The original Visual Basic .NET was released alongside Visual C# and
ASP.NET in 2002. C# — widely touted as Microsoft's answer to Java —
received the lion's share of media attention, while VB.NET (sometimes
known as VB7) was not widely covered. As a result, few outside the
Visual Basic community paid much attention to it.[citation needed]
Those who did try the first version found a powerful but very different
language under the hood, with disadvantages in some areas, including
a runtime that was ten times as large to package as the VB6 runtime
and an increased memory footprint.[citation needed]

[edit] Visual Basic .NET 2003


Visual Basic .NET 2003 was released with version 1.1 of the .NET
Framework. New features included support for the .NET Compact
Framework and a better VB upgrade wizard. Improvements were also
made to the performance and reliability of the .NET IDE (particularly
the background compiler) and runtime.
In addition, Visual Basic .NET 2003 was also available in the Visual
Studio .NET 2003 Academic Edition (VS03AE). VS03AE is distributed to
a certain number of scholars from each country for free.

[edit] Visual Basic 2005

Visual Basic 2005 is the next iteration of Visual Basic .NET, Microsoft
having decided to drop the .NET portion of the title.
For this release, Microsoft added many features in an attempt to
reintroduce some of the ease of use that Visual Basic is famous for —
or infamous, with respect to "newbie" programmers — including:

• Edit and Continue - probably the biggest "missing feature" from Visual Basic,
allowing the modification of code and immediate resumption of execution
• Design-time expression evaluation
• The My pseudo-namespace (overview, details), which provides:
o easy access to certain areas of the .NET Framework that otherwise require
significant code to access
o dynamically-generated classes (notably My.Forms)
• Improvements to the VB-to-VB.NET converter [2]
• The Using keyword, simplifying the use of objects that require the Dispose
pattern to free resources
• Just My Code, which hides boilerplate code written by the Visual Studio .NET
IDE
• Data Source binding, easing database client/server development

The above functions (particularly My) are intended to reinforce Visual


Basic .NET's focus as a rapid application development platform and
further differentiate it from C#.
Visual Basic 2005 introduced features meant to fill in the gaps between
itself and other "more powerful" .NET languages, adding:

• .NET 2.0 languages features such as:


o generics [3]
o Partial classes, a method of defining some parts of a class in one file and
then adding more definitions later; particularly useful for integrating user
code with auto-generated code
o Nullable Types
• XML comments that can be processed by tools like NDoc to produce "automatic"
documentation
• operator overloading [4]
• Support for unsigned integer data types commonly used in other languages

[edit] IsNot Patent

One other feature of Visual Basic 2005 is the conversion of If Not X Is Y to


If X IsNot Y which gained notoriety [5] when it was found to be the subject
of a Microsoft patent application [6].

[edit] Visual Basic 2005 Express

Visual Basic 2005 Express - Microsoft's free development application.


As part of the Visual Studio product range, Microsoft has created Visual
Studio 2005 Express Editions for hobbyists and novices. One of these
editions is Visual Basic 2005 Express Edition. The English edition is free
to download from Microsoft. [7]
The Express Editions are targeted specifically for people learning a
language. They have a streamlined version of the user interface, and
lack more advanced features of the standard versions. On the other
hand, Visual Basic 2005 Express Edition does contain the Visual Basic
6.0 converter, so it is a reasonable way to evaluate feasibility of
conversion from older versions of Visual Basic.

[edit] Relation to Visual Basic


Whether Visual Basic .NET should be considered as just another
version of Visual Basic or a completely different language is a topic of
debate. This is not obvious, as once the methods that have been
moved around and which can be automatically converted are
accounted for, the basic syntax of the language has not seen many
"breaking" changes, just additions to support new features like
structured exception handling and short circuited expressions. One
simple change that can be confusing to previous users is that of
Integer and Long data types, which have each doubled in length; a 16-
bit integer is known as a Short in VB.NET, while Integer and Long are
32 and 64 bits respectively. Similarly, the Windows Forms GUI editor is
very similar in style and function to the Visual Basic form editor.
The things that have changed significantly are the semantics — from
those of an object based programming language running on a
deterministic, reference-counted engine based on COM to a fully
object-oriented language backed by the .NET Framework, which
consists of a combination of the Common Language Runtime (a virtual
machine using generational garbage collection and a just-in-time
compilation engine) and a far larger class library. The increased
breadth of the latter is also a problem that VB developers have to deal
with when coming to the language, although this is somewhat
addressed by the My feature in Visual Studio 2005.
The changes have altered many underlying assumptions about the
"right" thing to do with respect to performance and maintainability.
Some functions and libraries no longer exist; others are available, but
not as efficient as the "native" .NET alternatives. Even if they compile,
most converted VB6 applications will require some level of refactoring
to take full advantage of the new language. Extensive documentation
is available to cover changes in the syntax, debugging applications,
deployment and terminology.

[edit] Comparative samples

The following simple example demonstrates similarity in syntax


between VB and VB.NET. Both examples pops a message box saying
"Hello, World" with an OK button.
Classic VB example:
Private Sub Command1_Click()
MsgBox "Hello, World"
End Sub
A VB.NET example:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
MessageBox.Show("Hello, World")
End Sub

• Note that all procedure calls must be made with parentheses in VB.NET, whereas
these were only required for function calls (however in VB6 they could be used in
procedure calls as well by using the Call keyword)
• Also note that the names Command1 and Button1 are not obligatory. However,
these are default names for a command button in VB6 and VB.NET respectively.
• Actually, there is a function called MsgBox in the Microsoft.VisualBasic
namespace, but the System.Windows.Forms.MessageBox class is a preferred way
of displaying message boxes since it has more features and is less language-
specific.
The following example demonstrates a difference between VB6 and
VB.NET. Both examples unload the active window.
Classic VB Example:
Private Sub cmdClose_Click()
Unload Me
End Sub
A VB.NET example:
Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnClose.Click
Me.Close()
End Sub
[Note the 'cmd' prefix being replaced with the new 'btn' prefix. The use
of 'cmd' as a prefix will generate an error, as only 'btn' is now
accepted; see above for default name explanation]

Another useful example of the 'Me' namespace; this example shows


the differences between changing opacity in VB6 and VB.net over time.
VB6 Example:
Private Sub Timer1_Tick()
Form1.Opacity = Form1.opacity - 0.01
End Sub
VB.NET example:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
Me.Opacity -= 0.01
End Sub
This gives another example of the numerous uses the 'Me' namespace
has, as well as how it can increase workflow by having a lot of useful
methods available so quickly.

[edit] Controversy

Many long-time Visual Basic programmers have complained [8] about


Visual Basic .NET, because initial versions dropped a large number of
language constructs and user interface features [9] that were available
in VB6 (which is now no longer sold), and changed the semantics of
those that remained; for example, in VB.NET parameters are (by
default) passed by value, not by reference. Detractors refer
pejoratively to VB.NET as Visual Fred or DOTNOT.[citation needed] On March
8, 2005, a petition [10] was set up in response to Microsoft's refusal to
extend its mainstream support [11] for VB6 at the end of that month.
VB.NET's supporters state that the new language is in most respects
more powerful than the original, incorporating modern object oriented
programming paradigms in a more natural, coherent and complete
manner than was possible with earlier versions. Opponents tend not to
disagree with this, instead taking the position that although VB6 has
flaws in its object model, the cost in terms of redevelopment effort is
too high for any benefits that might be gained by converting to
VB.NET. Independent developers producing software for Internet
distribution have also taken issue with the size of the runtime.[citation
needed]

It is simpler to decompile languages that target Microsoft Intermediate


Language, including VB.NET, compared to languages that compile to
machine code. Tools like .NET Reflector can provide a close
approximation to the original code due to the large amount of
metadata provided in MSIL.
Microsoft supplies an automated VB6-to-VB.NET converter with Visual
Studio .NET, which has improved over time, but it cannot convert all
code, and almost all non-trivial programs will need some manual effort
to compile. Most will need a significant level of refactoring to work
optimally. Visual Basic programs that are mainly algorithmic in nature
can be migrated with few difficulties; those that rely heavily on such
features as database support, graphics, unmanaged operations or on
implementation details are more troublesome.
ArtinSoft, the company that developed the VB6-to-VB.NET converter
for Microsoft that comes with Visual Studio .NET, however, has
developed in 2005 a migration tool called the ArtinSoft Visual Basic
Upgrade Companion. This tool expands upon the migration wizard
included in Visual Studio .NET by providing some automated code
refactoring, such as type inference for late-bound variables—producing
explicitly typed variables—and conversion to structured error handling,
among many other tweaks that improve code quality.
Using artificial intelligence algorithms, it is possible for this new tool to
recognize certain code patterns that can be reorganized into more
structured versions, yielding a higher quality .NET code. For example,
the tool is able to automatically recognize commonly used patterns of
“On Error GoTo”, analyze them, and convert them to code blocks that
use “Try Catch” instead of the legacy error handling model—in many
cases with no human intervention.
In addition, the required runtime libraries for VB6 programs are
provided with Windows 98 SE and above, while VB.NET programs
require the installation of the significantly larger .NET Framework. The
framework is included with Windows Vista, Windows XP Media Center
Edition, Windows XP Tablet PC Edition and Windows Server 2003. For
other supported operating systems such as Windows 2000 or Windows
XP (Home or Professional Editions), it must be separately installed.
Microsoft's response to developer dissatisfaction has focused around
making it easier to move new development and shift existing
codebases from VB6 to VB.NET. Their latest offering is the VBRun
website, which offers code samples and articles for:

• completing common tasks in VB6, like creating a print preview


• integrating VB6 and VB.NET solutions (dubbed VB Fusion)
• converting VB6 code to VB.NET

[edit] Cross-platform and open-source


development
The creation of open-source tools for VB.NET development have been
slow compared to C#, although the Mono development platform
provides an implementation of VB.NET-specific libraries and is working
on a compiler, as well as the Windows Forms GUI library.[citation needed]

[edit] Hello World Example


The following is a very simple VB.Net program, a version of the classic
"Hello world" example:
Public Class ExampleClass

Public Shared Sub Main()


System.Console.WriteLine("Hello, world!")
End Sub

End Class
The effect is to write the text Hello, world! to the output console. Each
line serves a specific purpose, as follows:
Public Class ExampleClass
This is a class definition. It is public, meaning objects in other projects
can freely use this class. All the information between this and the
following End Class describes this class.
Public Shared Sub Main()
This is the entry point where the program begins execution. It could be
called from other code using the syntax ExampleClass.Main(). (The Public
Shared portion is a subject for a slightly more advanced discussion.)
System.Console.WriteLine("Hello, world!")
This line performs the actual task of writing the output. Console is a
system object, representing a command-line console where a program
can input and output text. The program calls the Console method
WriteLine, which causes the string passed to it to be displayed on the
console.

[edit] Notes
1. ^ Only if strict type checking (Option Strict) is not enabled. Many VB.NET
developers assert that strict type checking must be enabled in all new projects and
only disabled for legacy code converted by the Upgrade Wizard.
2. ^ http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/dnvs05/html/VBUpgrade.asp
3. ^ http://msdn.microsoft.com/vbasic/default.aspx?pull=/library/en-
us/dnvs05/html/vb2005_generics.asp
4. ^ http://msdn.microsoft.com/vbasic/default.aspx?pull=/library/en-
us/dnvs05/html/vboperatoroverloading.asp
5. ^ http://www.theregister.co.uk/2005/02/22/real_slams_ms_patent/
6. ^ http://appft1.uspto.gov/netacgi/nph-Parser?
Sect1=PTO1&Sect2=HITOFF&d=PG01&p=1&u=%2Fnetahtml%2FPTO
%2Fsrchnum.html&r=1&f=G&l=50&s1=
%2220040230959%22.PGNR.&OS=DN/20040230959&RS=DN/20040230959
7. ^ http://www.microsoft.com/presspass/press/2006/apr06/04-
19VSExpressFreePR.mspx
8. ^ http://www.mvps.org/vb/index2.html?rants/vfred.htm
9. ^ http://vb.mvps.org/vfred/breaks.asp
10. ^ http://classicvb.org/petition/
11. ^ http://msdn.microsoft.com/vbasic/support/vb6.aspx

[edit] See also

Wikibooks Programming has more about this subject:


Visual Basic .NET

• Microsoft Visual Studio


• Visual Basic
• Microsoft .NET
• ASP.NET
• C#
• REALbasic

[edit] External links


• Microsoft's VB.NET website
• Visual Basic 2005 Express Edition website
• VBRun website - legacy VB6 resources from Microsoft
• SharpDevelop - a free IDE for VB.NET, C# and Boo programming language
• Mono implementation of VB.NET
• Doing Objects in VB.NET and C#, a free eBook
• Free source code for VB.NET programmers
• Visual Basic 2005 Learning Guide From SearchVB.com
• Xtreme Visual Basic Talk forums
• developerfood.com Directory of Visual Studio components and controls
[edit] Tutorials

• Startvbdotnet.com Free VB.NET Tutorials


• VB @ The Movies(Free video tutorials from Microsoft)
• Free Video Tutorials from MSDN
• Free VB.NET 2005 Tutorials
• Programming in Visual BASIC

Retrieved from "http://en.wikipedia.org/wiki/Visual_Basic_.NET"


Categories: Articles with unsourced statements | BASIC programming
language family | .NET programming languages | Microsoft Visual
Studio | Microsoft BASIC

Views

• Article
• Discussion
• Edit this page
• History

Personal tools

• Sign in / create account

Navigation

• Main page
• Community portal
• Featured content
• Current events
• Recent changes
• Random article
• Help
• Contact Wikipedia
• Donations

Search

Go Search

Toolbox

• What links here


• Related changes
• Upload file
• Special pages
• Printable version
• Permanent link
• Cite this article

In other languages

• Dansk
• Deutsch
• Español
• Français
• 한국어
• Italiano
• ‫עברית‬
• 日本語
• Norsk (bokmål)
• Polski
• Português
• Русский
• Simple English
• Svenska
• ไทย
• 中文

• This page was last modified 01:19, 14


December 2006.
• All text is available under the terms of the
GNU Free Documentation License. (See
Copyrights for details.)
Wikipedia® is a registered trademark of the
Wikimedia Foundation, Inc.
• Privacy policy
• About Wikipedia
• Disclaimers

You can give the gift of knowledge by donating to the


Wikimedia Foundation!
Live list of donations
Today your contribution will be matched by an anonymous
friend.
Tax-deductibility of donations | FAQ | Financial statements (pdf)

Visual Basic
From Wikipedia, the free encyclopedia

Jump to: navigation, search


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.
Visual Basic

Paradigm: Event-driven

Developer: Microsoft

Typing discipline: Static, strong

Influenced by: QuickBASIC

Influenced: Visual Basic .NET

OS: Microsoft Windows

Visual Basic (VB) is an event driven programming language and


associated development environment from 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,[citation needed] as of 2003, 52% of
software developers used Visual Basic, making it the most popular
programming language at that time. Another point of view was
provided by the research done by Evans Data that found that 43% of
Visual Basic developers planned to move to other languages.[1] Visual
Basic currently competes with PHP and C++ as the third most popular
programming language behind Java and C.[2]
Contents
[hide]

• 1 Derivative languages
• 2 Language features
• 3 Controversy
o 3.1 Weaknesses
 3.1.1 Performance
 3.1.2 Error Handling
 3.1.3 Simplicity
o 3.2 Strengths
 3.2.1 Debugging
 3.2.2 Simplicity
o 3.3 Programming constructs not present in Visual Basic
o 3.4 Characteristics present in Visual Basic
• 4 Evolution of Visual Basic
o 4.1 Timeline of Visual Basic (VB1 to VB6)
• 5 References
• 6 See also

• 7 External links

[edit] 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:

• Visual Basic for Applications (VBA) is included in many Microsoft applications


(Microsoft Office), and also in several third-party products like WordPerfect
Office 2002 and ESRI ArcGIS. There are small inconsistencies in the way VBA is
implemented in different applications, but it is largely the same language as VB6.

• Here is an example of the language:

To find the area of a circle


Private Sub Command1_Click()
pi = 3.14159265358979323846264
r = Val(Radius.Text)
a = pi * r * r

area.Text = Str$(a)
End Sub
Another Example to write the words "Hello world" on the form:
Private Sub Form1_Load()
Print "Hello World"
End Sub

• 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 Microsoft's designated successor to Visual Basic 6.0, and 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. For this reason, it was suggested by Bill Vaughn, and wholeheartedly
embraced by the user community, that it ought to have been given an alternative
name. Visual Fred (or VFred for short) was the consensus choice. VB.NET ships
with a rudimentary utility to convert legacy VB6 code, although the inefficient
nature of the resulting code (due to major differences between the two languages)
often leads programmers to prefer manual conversion instead. Indeed, automated
conversion is seen as a fantasy.

Many users have found that automated conversion of anything more


than trivial VB6 programs is essentially impossible, with many TODO's
marking incompatible sections. A rewrite does take care of this, but a
complete rewrite of a complex program is often not practical for
several reasons. First, a small company considering a rewrite must
usually choose between spending its budget on new features and
maintenance, or on conversion of a static program, which in itself adds
no value. Second, a rewrite in a new language means an extensive
testing cycle, again an expense with no corresponding market value.
As a result, the migration path has not as often been from VB6 to
VB.NET, but rather to other languages and platforms such as Java, C#
and Delphi.

[edit] Language features

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 tool 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.
Visual Basic can create executables(EXE), ActiveX controls, DLL files,
but is primarily used to develop Windows applications and to interface
web database systems. 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.

[edit] Controversy
To meet Wikipedia's quality standards, this section may require cleanup.
Please discuss this issue on the talk page, and/or replace this tag with a more specific message.
Editing help is available.
This section has been tagged since May 2006.
Visual Basic is seen as 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 explicit variable declaration are turned off by default,
something that can be easily changed. 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.

[edit] Weaknesses

[edit] Performance

Early versions of Visual Basic were not competitive at performing


computationally intensive tasks because they were interpreted, and
not compiled to machine code. Although this roadblock was removed
with VB5 (which compiles to the same intermediate language and uses
the same back end as Visual C++[citation needed]), some features of the
language design still introduce overhead which can be avoided in
languages like Delphi or C++. These are more likely to be encountered
in code involving objects, methods, and properties than in strictly
numerical code.

[edit] Error Handling

Visual Basic does not have exception handling with the same
capabilities of C++ or Java, but the On Error facility does provide
nonlocal error handling with features similar to Windows Structured
Exception Handling, including the ability to resume after an error (a
feature that is not provided by either of the other two languages,
although of dubious utility in production code).

[edit] Simplicity

Many critics[citation needed] 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 states, "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 [1]" (Dijkstra was
no less scathing about FORTRAN, PL/I, COBOL and APL).
[edit] Strengths

[edit] Debugging

Visual Basic has a comprehensive set of debugging tools comparable


to those available in the Visual C++ products of the same time period.
Features include breakpoints, the ability to watch variables and modify
watched variables while paused, the ability to modify the point of
execution, and the ability to make modifications to code while paused,
often not requiring a program restart. Arbitrary code could be executed
in the "immediate window", an online interpreter, a very powerful
feature. In some cases, these features were more capable than their
counterparts in Visual C++—for instance, edit and continue in VC was
inspired by the VB feature, and there has never been a VC equivalent
of the immediate window.
Furthermore, since VB5 it has been possible to generate debug
symbols for a native executable and step into VB code in external
debuggers, like the Microsoft debugger or the VC debugger, although
the implementation of VB objects makes it difficult to debug code that
uses them heavily.

[edit] Simplicity

While some detractors argue that the simplicity of Visual Basic is a


weakness, 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.[3] Another source of
confusion for new programmers is the different use of parentheses for
arguments of functions and subroutines.[4] 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, coupled with the IDE's automatic correction to the case used in
the declaration, 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.

[edit] 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.

• Inheritance. Visual Basic versions 5 and 6 are not quite object oriented languages
as they 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. 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 (can be done by using external Windows functions).
• C++ or Java exception handling. Error handling is controlled by an "On Error"
statement, which provides similar functionality to Windows Structured Exception
Handling.
• Typecasting. VB instead has conversion functions.
• Equivalents to C-style pointers are very limited.
• Visual Basic is limited to unsigned 8-bit integers and signed integers of 16 and 32
bits. Many other languages provide wider range of signed and unsigned integers.
• 32-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.

[edit] Characteristics present in Visual Basic

Visual Basic 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 as a
16-bit signed integer. In this construct -1 evaluates to 16 binary 1s (the Boolean
value True), and 0 as 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, in other words True = Not False. 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 and Fortran. 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 does not exist in
Visual Basic .NET and VBScript.
• Relatively strong integration with the Windows operating system and the
Component Object Model.
• 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. There are 12
Deftype statements in total offered by Visual Basic 6.0.

[edit] 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 prototype developed by Alan Cooper called Tripod. Microsoft
contracted with Cooper and his associates to develop Tripod into a
programmable shell for Windows 3.0, under the code name Ruby (no
relation to the Ruby programming language).
Tripod did not include a programming language at all, and Ruby
contained only a rudimentary command processor sufficient for its role
as a Windows shell. Microsoft decided to use the simple Program
Manager shell for Windows 3.0 instead of Ruby, and combine Ruby
with the Basic language to create Visual Basic.
Ruby provided the "visual" part of Visual Basic—the form designer and
editing tools—along with the ability to load dynamic link libraries
containing additional controls (then called "gizmos"). Ruby's extensible
gizmos later became the VBX interface.

[edit] Timeline of Visual Basic (VB1 to VB6)

• Project 'Thunder' was initiated


• Visual Basic 1.0 (May 1991) was released for Windows at the Comdex/Windows
World trade show in Atlanta, Georgia.

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 textual, 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. Notably, forms became
instantiable objects, thus laying the foundational concepts of class modules as
were later offered in VB4.
• Visual Basic 3.0 was released in the summer of 1993 and came in Standard and
Professional versions. VB3 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 non-GUI
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 calculation-
intensive 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.
• Mainstream Support for Microsoft Visual Basic 6.0 ended on March 31, 2005.
Extended support will end in March 2008. In response, the Visual Basic user
community expressed its grave 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.[5].
Windows Defender Beta 2 was rewritten as C++/CLI code, as mentioned in Paul
Thurrott's review of this product.

[edit] References
1. ^ Martin LaMonica (2003-05-07). Study: Visual Basic use may be slipping.
CNET. Retrieved on 2006-01-25.
2. ^ http://www.tiobe.com/tpci.htm
3. ^ If you want that a, b and c all be an integer, you should write: "Dim a as integer,
b as integer, c as integer" or "Dim a%, b%, c%".
4. ^ Parentheses must be used for function arguments. For subroutines, parentheses
may not be used unless the optional keyword Call appears before the subroutine
name.
5. ^ Andrew Orlowski and Carey Bishop (2005-07-22). MS Anti-Spyware built on
MS Abandonware. The Register. Retrieved on 2006-10-04.

[edit] 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 – A programming language with a 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.
• Properties window

[edit] External links

Wikibooks Programming has more about this subject:


Visual Basic Classic

• VBKeys
• VBForums
• Utter Access Forums
• HashVB Wiki
• Beginner Visual Basic 6 tutorials
• VB 6.0 at MSDN
• VB City
• VB Lessons on Free-Ed.net
• Visual Basic 6.0 Tutorials by Gilberto E. Urroz
• Visual Basic at MSDN (primarily supports the VB.Net version)
• Visual Basic Section on About.com
• Visual Basic Section on Developer Fusion
• Visual Basic Tutorial for Beginners
• .VB File Extension Information FileInfo.net
• Project Semplice: VB on the Java Virtual Machine
• Visual basic programming for MMORPG cheat writers
• Planet Source Code - A very large collection of free source code
• FreeVBCode.com - Free source code collection devoted to Visual Basic
• Visual Basic 2005 Express (free edition) net installer
• Visual Basic 2005 Express (free edition) cd-image
• VB 5 Control Creation Edition, Download free here.
• Visual Basic for DOS (Free Edition) Download
• VBCode.com Free Visual Basic code snippets and downloads
• Hashtable Implementation For VBA and VB6
• "The Father of Visual Basic" - History of the "Visual" part of VB
• VB Wikia Wiki - Another wiki for visual basic

Retrieved from "http://en.wikipedia.org/wiki/Visual_Basic"


Categories: Articles with unsourced statements | Cleanup from May
2006 | Programming languages | Imperative programming languages |
Procedural programming languages | BASIC programming language
family | Microsoft BASIC | Microsoft Visual Studio | Microsoft
development tools
Views

• Article
• Discussion
• Edit this page
• History

Personal tools

• Sign in / create account

Navigation

• Main page
• Community portal
• Featured content
• Current events
• Recent changes
• Random article
• Help
• Contact Wikipedia
• Donations

Search

Go Search

Toolbox

• What links here


• Related changes
• Upload file
• Special pages
• Printable version
• Permanent link
• Cite this article

In other languages

• ‫العربية‬
• Български
• Català
• Česky
• Dansk
• Deutsch
• Eesti
• Español
• Esperanto
• Euskara
• Français
• 한국어
• Hrvatski
• Bahasa Indonesia
• Italiano
• ‫עברית‬
• Magyar
• Bahasa Melayu
• Nederlands
• 日本語
• Norsk (bokmål)
• Polski
• Português
• Română
• Русский
• Simple English
• Slovenčina
• Slovenščina
• Suomi
• Svenska
• தமிழ
• ไทย
• Tiếng Việt
• Türkçe
• 中文

• This page was last modified 18:20, 18


December 2006.
• All text is available under the terms of the
GNU Free Documentation License. (See
Copyrights for details.)
Wikipedia® is a registered trademark of the
Wikimedia Foundation, Inc.
• Privacy policy
• About Wikipedia
• Disclaimers
\

Вам также может понравиться