Microsoft Programming Languages

Prashant Sridharan
Senior Product Manager

July 2003

Contents

The Benefits of Microsoft .NET
Visual Basic .NET
Visual C++ .NET
Visual C# .NET
Visual J# .NET
Summary

The Benefits of Microsoft .NET

The Microsoft .NET Framework is an integral Microsoft Windows component for building and running the next generation of applications and XML Web services. It provides a highly productive, standards-based, enterprise-ready, multilanguage environment that simplifies application development, enables developers to make use of their existing skill set, facilitates integration with existing software, and eases the challenges of deploying and operating Internet-scale applications. The .NET Framework consists of two main parts: the common language runtime (CLR) and a unified, hierarchical class library that includes a revolutionary advance in Web-based development by means of ASP .NET, an environment for building smart client applications (Windows Forms), and a loosely coupled data access subsystem (ADO.NET).

Programmers may write applications to the .NET Framework using a number of languages. Each of these languages is compiled to the Microsoft Intermediate Language (MSIL), which is then converted to native code and executed on the CLR. Since each language interacts with code written for the CLR, any application written in any language can interact with any other application written in any other language. With the introduction of the CLR, programmers now have a rich palette of languages from which to choose, helping them select the right language for their skills and for the task at hand.

A Rich Palette of Languages

Just as artists are unique and employ the medium and tools to suit their experience and personality, software developers employ programming languages based on their skills and the task at hand. No one language satisfies the needs of all developers. Programmers are an innately different breed: part artist, part scientist, always opinionated, and never satisfied. Always seeking perfection, programmers nonetheless accept the imperfection of modern programming languages. Some of them cross-train and switch languages on a whim. Others seek greater expertise in a single language. After all, Michelangelo was a gifted sculptor and a brilliant painter, while Monet excelled with oil and canvas alone. Yet we appreciate them for the genius each possessed.

"We're always going to have a half a million or 50 million religious VB programmers. But guess what? We have VB in .NET. And now we have Java language in .NET. We've even got COBOL!" - Tim Huckaby, President and CEO, Interknowlogy

Programming languages are an inherently personal choice, one based on a number of factors. Rather than force programmers to adopt one language over another, Microsoft provides a platform on which a number of languages—C++, Objective-C, Fortran, COBOL, Visual Basic®, Perl—can each flourish and enjoy full access to the power and flexibility of the .NET Framework.

For its part, Microsoft offers four programming languages and associated development environments, each designed to appeal to a particular school of programmer:

  • Visual Basic .NET, the latest version of the world's most popular development tool and language. Visual Basic .NET delivers unsurpassed productivity and unique language features for task-oriented developers building solutions with the .NET Framework.

  • Visual C++ .NET, the tool of maximum power and control. With the C++ language, power-oriented developers can bridge platform technologies and build both native Windows-based and .NET-connected solutions with maximum performance characteristics and enhanced functionality.

  • Visual C# .NET, the modern and innovative programming language and tool. Introduced in 2001, C# offers a familiar syntax, that is attractive to C++ and Java developers, along with unique language constructs that offer code-focused developers a more elegant experience when developing applications for the .NET Framework.

  • Visual J# .NET, the Java-language tool for Microsoft .NET. Visual J# .NET gives Java-language and existing Visual J++ developers complete access to the .NET Framework and the industry's most advanced XML Web services platform, while maintaining a familiar language and syntax.

This document highlights the rich palette of Microsoft-developed languages available to developers. With Microsoft .NET, programmers and businesses can make use of the skills they've accumulated, while incorporating new platform, tool, and language features that will help them build compelling solutions faster.

Top of PageTop of Page

Visual Basic .NET

https://msdn.microsoft.com/vbasic

Visual Basic 1.0 revolutionized Windows development by lowering the barrier to entry and making a broad audience of developers more productive than ever. Building on this rich history, Visual Basic .NET offers task-oriented programmers a human readable syntax, an intuitive user interface, and tools and upgrade wizards that speed the development of Microsoft .NET-connected applications. Visual Basic .NET takes advantage of the ease of development espoused by its exceedingly popular predecessors, while adding new capabilities that enable all manner of programmers, from the beginner to the experienced corporate developer, to build applications for Windows, the Web, and mobile devices.

Task-Oriented Development

Deadlines are nothing new to the software industry. For a large group of programmers, deadlines are a daily fact of life. These programmers are often charged with building opportunistic applications that address a specific business need and require a modicum of planning and a fast track to deployment. Sometimes such solutions will be tested rigorously, while other times the application will be built and immediately deployed, freeing the programmer for the next assignment. These task-oriented developers are focused on delivering solutions quickly. Task-oriented development tools, therefore, must place such a premium on productivity that it is acceptable to abstract programmers from the nuances of the underlying platform and empower them to conceive of an application, build it from scratch, and quickly disseminate it across a business group.

Programmer Constituency

Visual Basic .NET is ideal for the following types of programmers who are looking to use the .NET Framework to construct the next generation of applications and services:

  • Programmers looking for a fast and productive development tool for the .NET Framework. Visual Basic .NET offers an easy-to-understand syntax and an intuitive development environment to help programmers construct applications quickly. Further, with a large and established community of programmers, Visual Basic .NET programmers have a wealth of resources at their disposal to help them get up to speed with Microsoft .NET.

  • Programmers with existing Visual Basic skills or code assets. Visual Basic .NET builds on the keywords, syntax, and nuances of the Visual Basic language. Its case-insensitivity will be immediately familiar to traditional Visual Basic developers, as will the human-readable syntax. Programmers with a significant code investment in earlier versions of Visual Basic can move their code forward using the built-in upgrade technology. Additionally, most existing ActiveX® controls can continue to be used with Visual Basic .NET.

  • Developers looking for familiar design-time and code editor paradigms. Many of the principles of designing applications and writing code are carried forward from the Visual Basic .NET predecessors, including drag-and-drop design of applications, IntelliSense® for assistance in writing code, and automatic code formatting for easier readability.

  • Programmers looking to build applications with a more intuitive and accessible language. Visual Basic .NET is designed to be accessible to a full range of developers, from beginners to experts. Beginners will find many unique features of the Visual Basic language as useful as the key productivity enhancements of the Visual Basic environment.

Unique Language Features

Visual Basic .NET contains several unique language features that lend it an aspect of productivity not found in the other Microsoft-supplied .NET languages, including:

  • Default variable initialization. Visual Basic .NET does not require variables and members to be initialized prior to use, so beginning programmers may not be frustrated by seemingly arcane use requirements as found in other .NET languages.

  • Implicit typing and late binding. Visual Basic .NET code need not specify the type of a variable before it is used, helping programmers write useful code with a minimum of training.

  • Enumeration behavior. Visual Basic .NET offers more intuitive behavior when using enumerated types.

  • Default public access. By default, members of a Visual Basic .NET class are declared to be public, which offers programmers a more intuitive syntax.

  • Use of shared members. Shared members may be accessed in Visual Basic .NET through both the class name and an instance variable of the type to which they belong, helping programmers write intuitive code. For example:

    Dim x as new MyClass

    x.SharedMethod() 'works just as well as...
    MyClass.SharedMethod()

  • Optional parameters. Visual Basic .NET supports optional parameters, affording class designers more flexibility in designing their libraries and giving programmers the ability to write useful code without having to learn all the nuances of object-oriented programming.

  • Filtered catch blocks. Visual Basic .NET offers flexible structured exception handling errors. Filtered catch blocks enable developers to filter errors based on the class of the exception, any conditional expression, or an explicit error number.

  • Parameterized properties. Properties in Visual Basic .NET may contain parameters, making them more flexible than their C# counterparts.

  • Declarative event handlers. Visual Basic .NET event handlers may declare the events to which they are subscribed using the Handles keyword.

  • Interface member redeclaration. Visual Basic .NET enables programmers to rename a member of an interface when it is implemented in a class.

Unique Environment Features

Visual Basic .NET also includes a number of key environment enhancements that enable programmers to more productively design and write compelling applications and services. These enhancements are above and beyond the Visual Studio® .NET features shared among all .NET languages:

  • Background compilation. Background compilation works behind the scenes, silently compiling your code while you are working. Visual Basic .NET developers should be able to know immediately if they have errors in their code.

  • Pretty listing. The Visual Basic .NET code editor can (optionally) automatically format your code as you type, saving you time. Pretty listing can automatically align your code to the correct tab position, recase keywords and variables, add a missing then to an if statement, and more.

Performance

A final area of great importance is performance. The Visual Basic .NET compiler generates Intermediate Language (IL) code that is equal in performance to the code generated by the C# compiler.

Top of PageTop of Page

Visual C++ .NET

https://msdn.microsoft.com/visualc

Often, power-oriented programmers will need to exploit the full capabilities and performance of the underlying platform. Despite the numerous benefits of the CLR and the .NET Framework, some programmers still build applications that depend on the full depth and breadth of the Windows operating system. These programmers have traditionally chosen Visual C++ to attain more exacting control of their applications through highly optimized code and efficient access to system-provided services, including memory, disk access, and more. Visual C++ .NET continues to offer direct access to the Windows platform by way of native code generation and the Win32® API. Visual C++ also gives developers access to the full range of capabilities of the managed CLR and the .NET Framework.

Power-Oriented Development

In many situations, programmers need complete access to all of the features found in the underlying operating system. Historically, Microsoft has offered a spectrum of programming tools, some of which abstract the full breadth of the Windows platform while others deliver unfettered access to all Windows features. Today, while the .NET Framework delivers a range of APIs suitable for building robust enterprise software, it still does not provide access to all of the functionality found in Microsoft Windows. Power-oriented development tools acknowledge this requirement and offer programmers language constructs, class libraries, and environment features to comfortably build the full range of solutions thattheir business needs demand.

Programmer Constituency

Visual C++ .NET is ideal for a number of programmers and situations, including:

  • Programmers who wish to build Win32-based applications and components. A core group of programmers still has the need to build native Windows-based applications. These programmers use the Win32 API and native C++ class libraries for superior performance and functionality. Visual C++ .NET 2003 introduces several new compiler optimizations that can help programmers achieve even greater performance efficiencies in these types of applications.

  • Programmers who wish to bridge the gap between native Windows-based and .NET-connected applications. Existing applications often have complex code which, for a variety of reasons, including time, cost, and even capability, cannot be immediately rewritten to use the .NET Framework. With Visual C++, programmers can extend existing applications or write new code to consume the .NET Framework while still interacting with even the most complex Windows APIs. While C# and Visual Basic offer access to Windows APIs, neither rival the innate ability of C++ to interoperate with existing Windows code.

  • Programmers chiefly concerned with the performance characteristics of their applications. C++ offers developers the largest degree of control over program design and execution. Advanced developers can design and implement applications using C++ that execute more quickly and efficiently than if they were written in other languages, including both native Windows-based and .NET-connected applications.

  • Programmers who wish to build truly cross-platform solutions. Only the C++ language contains an ISO-standardized and truly portable syntax, available on virtually every operating system platform. Visual C++ .NET 2003 offers increased standards compliance, enabling programmers to use advanced language features and to take advantage of popular class libraries available for a variety of different operating systems.

Unique Language Features

Visual C++ .NET contains several unique language features in high demand among advanced programmers. These language features contribute to making C++ the most powerful of all the Microsoft-provided Visual Studio languages:

  • Templates. Templates comprise several compile-time language features which are largely unique to C++, enabling many code reuse and performance enhancing capabilities.

  • Pointers. Pointers give C++ developers direct access to machine level memory locations, enabling the highest performing applications.

  • Multiple inheritance. C++ offers developers a full gamut of object-oriented programming (OOP) features for implementing the widest variety of OOP programming patterns.

  • Intrinsics. Intrinsics provide developers access to key platform features not available through traditional programming practices, for example MMX and AMD 3DNow! registers and instructions.

  • Compile-time attributes. C++ attributes provide a shorthand means of writing highly tuned repetitive boilerplate code using a simple and robust syntax.

Unique Environment Features

Visual C++ .NET 2003 also contains a variety of environment features that assist programmers in creating flexible and powerful applications, including:

  • Optimizing Compiler. The Visual C++ Optimizing Compilers tune applications for a variety of scenarios, including target machine environments, floating point calculations, and MSIL generation.

  • Runtime Code Security Checks. Programmers can write more-secure nativeWindows-based applications using advanced compiler features that help protect applications from malicious attack.

  • 32- and 64-bit support. Visual C++ compilers are available for multiple hardware platforms including 32- and 64-bit Intel and AMD microprocessors, and a variety of embedded device microprocessors, enabling truly scalable applications.

  • Advanced Error Reporting. Applications are always susceptible to programmer error. Visual C++ enables developers to more easily identify and correct bugs, even in deployed code, with Minidump technology.

  • Advanced debugging. The Visual Studio Debugger and Visual C++ provide seamless support for simultaneously debugging both native and managed code.

In the future, Visual C++ .NET will include several advanced features to help programmers gain more exacting control over their components and applications:

  • Generics. A run-time technology for reusing parameterized code algorithms.

  • Templates on managed types. The ability to use compile-time C++ template syntax and technology with managed types.

  • Richer support for creating common language specification (CLS) conformant and verifiable assemblies. The C++ compiler will aid the developer by flagging non-CLS conforming types and nonverifiable code.

Top of PageTop of Page

Visual C# .NET

https://msdn.microsoft.com/vcsharp

Traditionally, Visual Basic and Visual C++ have occupied opposite ends of the developer spectrum. Visual Basic, with its emphasis on productivity, has customarily focused on offering programmers the easiest, most intuitive development experience, sacrificing full coverage of underlying system resources in the process. On the other hand, Visual C++ has always erred on the side of offering complete access to the Windows platform, even if it meant a conscious choice away from greater productivity.

To bridge the gap between these two offerings, Microsoft provides code-focused developers the modern and innovative C# programming language. C# offers programmers a clean and elegant programming language, familiar to C++ developers, with many of the productivity benefits enjoyed by Visual Basic programmers.

Code-Focused Development

All programmers write code at some point in their projects. However, many programmers also spend a considerable amount of time using wizards, controls, and designers to gain a measure of productivity in their application design and development. For code-focused programmers, the unfortunate side effect of such productivity is less understanding and control over the code used within their programs. Given the choice between greater productivity and greater understanding of their code, code-focused programmers often prefer to "trust" the code they write themselves rather than code that is emitted by the development environment. Indeed, such programmers may at times resort to using a designer or wizard, but will invariably elect to modify the generated code, at a minimum for formatting consistency and often for functional perfection.

Moreover, code-focused programmers tend to write code that is intended for reuse by others, perhaps even those less knowledgeable or sophisticated about their development practices. The business frameworks and class libraries these programmers create often require only a code editor and rarely involve a design surface of any kind.

Programmer Constituency

The C# programming language is ideal for the following types of programmers who are looking to use the .NET Framework to build the next generation of applications and services:

  • Programmers seeking a productive language in the C/C++ family. The C# language supplements a C++-like syntax, with support for operator overloading, enumerated types, case sensitivity, and more, with additional component-oriented features, such as properties, attributes, delegates, events, and more. Together with the .NET Framework, these familiar and new features offer C++ programmers a readily usable syntax with superior productivity, manageability, and security benefits to native code.

  • Framework designers and software architects. With robust support for authoring business frameworks, including operator overloading and even unsafe code for access to earlier software, C# offers software architects the features necessary for building rich, flexible business frameworks and libraries. With upcoming future features, including generics and iterators, C# will continue to offer architects a superior alternative for building business systems based on the .NET Framework.

  • Programmers with a large investment in Java-based software. With the Java Language Conversion Assistant (JLCA), programmers with a large investment in Java-based software can quickly migrate their existing code to C# and the .NET Framework. The JLCA performs a source-code level analysis of code and generates new C# code based on the legacy Java-based software. Once the analysis and conversion is complete, areas of code requiring further attention from the developer are clearly marked, enabling the programmer to complete the migration process, if necessary.

C++-Like Language Features

The C# programming language also contains a number of features that bring traditional C++-style development to programmers building applications with the .NET Framework. Often, these features resemble functionality found in Visual C++, albeit with greater productivity:

  • Support for all CLR types. The C# language supports all data types defined in the CLR, enabling programmers to create solutions that take full advantage of the .NET managed execution environment.

  • Pass-by-reference and out parameters. Using C#, programmers may pass variables by reference to a function and even create out parameters that require initialization prior to the termination of the function in which they are defined.

  • Operator overloading. C# allows framework designers to create more robust class libraries by overloading operators.

  • The "using" statement. Programmers may gain slightly more control over how their application manages resources by employing the using statement.

  • Unsafe code. C# enables programmers to selectively use pointers and manipulate memory. While "unsafe code" is still managed by the CLR, it does afford the advanced programmer greater control over how their application uses memory. For the most control over application memory, however, programmers are advised to use Visual C++.

  • XML documentation. Programmers may use XML to annotate and document their solutions alongside their code.

In addition, C# is a rapidly evolving technology that stretches the boundaries of language design. The C# language designers plan to add a number of additional features to the language, increasing the array of options at the programmers' disposal, and allowing them to create applications using a modern, innovative programming language. These features include:

  • Generics, a form of C++ templates that makes reusing existing code easier.

  • Iterators, a construct that makes traversing collections of data significantly faster and easier.

  • Anonymous methods, an easier way to perform simple tasks using delegates.

  • Partial types, a means for programmers to split code across multiple files.

Top of PageTop of Page

Visual J# .NET

https://msdn.microsoft.com/vjsharp

Microsoft rounds out its programming language offering by introducing the Java language on .NET, with Visual J# .NET. Visual J# .NET helps programmers, students, and professors preserve their skills and curricula by enabling them to use the Java language to construct solutions using the full functionality of the .NET Framework. Further, Visual J# .NET helps ease the transition to Microsoft .NET for Visual J++ 6.0 customers, giving them an avenue with which to migrate their skills and solutions to the next generation Windows-based platform.

Java-Language Development

The Java language has solved many problems traditionally facing C++ developers through a simpler syntax and familiar object-oriented functionality. For developers using the Java language, Visual J# .NET offers the most familiar and productive way to start building applications with the .NET Framework. Java developers can continue to use the Java language and immediately incorporate any of the rich functionality found in the .NET Framework.

Programmer Constituency

Visual J# .NET is ideal for programmers in a number of situations, including:

  • Existing Java-language developers. Developers who are already well-versed in the Java language may not wish to learn a new language. Visual J# .NET preserves the Java-language developer's skills and investments and reduces the barrier to learning the .NET Framework.

  • Programmers with an investment in Visual J++. Visual J# .NET migrates and converts Visual J++-based projects into Visual J# .NET. The converted projects can immediately be enhanced to take advantage of functionality found in the .NET Framework.

  • Students, teachers, and professors. Visual J# .NET can be used by students, teachers, and professors to teach the fundamentals of Computer Science using the simplicity of the Java language. Visual J# .NET meets all requirements of the Advanced Placement Computer Science exam.

Unique Language Features

J# contains a number of language features designed to make it the most comfortable and familiar experience for the Java-language developer looking to develop applications using the .NET Framework:

  • Java-language syntax. Java-language developers will find that they can use the syntax they are already familiar with and gain full access to the .NET Framework.

  • Class library support. Independently developed class libraries designed to provide the functionality of most Java Development Kit (JDK) level 1.1.4 class libraries and many of the classes in the JDK 1.2 java.util package specified in College Board's Advanced Placement curriculum for Computer Science.

  • Properties, delegates and events. J# has support for consuming and exposing .NET-style properties, delegates, and events while maintaining consistency with traditional Java-language syntax.

  • Javadoc comments. J# supports Javadoc-style code comments. Visual J# .NET includes a tool that users can invoke to generate HTML API documentation based on the Javadoc comments.

Unique Environment Features

Visual J# .NET plugs directly into the Visual Studio .NET development environment, giving J# developers full access to features like the designers, debugger, and advanced editors. There are also a few tools designed to help existing Java-language developers transition to Microsoft .NET:

  • Visual J++ Upgrade Wizard. Visual J++ developers can upgrade their projects to Visual J# .NET. The Upgrade Wizard converts the project file and gives the user context-sensitive help related to any potential problems.

  • Binary converter. This tool converts Java bytecode files to Microsoft .NET assemblies for use in .NET-connected applications.

Summary

Programming languages may be used to build a variety of solutions. Each language contains unique features and benefits that make it best-suited for certain kinds of applications. Microsoft offers a rich palette of four programming languages which together provide developers with the functionality necessary to build robust .NET-connected software.

 

Top of PageTop of Page