Microsoft Announces New Capabilities for C#, C++

Microsoft Announces New Capabilities for C#, C++

November 8, 2002?Microsoft chose the venue of the OOPSLA conference, being held this week in Seattle, to reiterate what company officials called “Microsoft’s commitment to computer science” and to announce important upgrades to the Visual C++ and Visual C# languages. In separate keynote presentations yesterday and today, Anders Hejlsberg and Bill Gates discussed innovations in programming languages as a springboard to the announcements of several new features that will bring both languages closer to developers’ needs.

The upcoming version of Visual Studio (code-named Everett and planned for release in the first part of next year) will include four major enhancements to Visual C++.NET, including 98 percent conformance to the ISO standard. C#, too, will get four major feature enhancements in its next release.

[Editor’s Note (Friday, Nov. 8, 10:30 p.m. PT): The original version of this story erroneously reported that the new features of C# would be released with “Everett.” Only the Visual C++ language enhancements are scheduled for release with that product. ]

DevX spoke to Prashant Sridharan, Product Manager for the Microsoft Visual C# .NET team, and Nick Hodapp, the Visual C++ .NET Product Manager to get some early details on the new features.

New Visual C# Features
Briefly, the four new C# version features are:

Generics: Similar to the concept of C++ templates, generics let developers create strongly-typed collections, such as an ArrayList of integers, more easily. Currently, the base collection classes that ship with the framework accept Object types?which allow developers to write their own strongly-typed collection classes by inheriting from the abstract CollectionBase, NameValueCollectionBase, and DictionaryBase classes. However, doing so requires writing explicit code, both to identify each object type stored in the collection and, when extracting values from the collection, to cast the stored Object variable back into the appropriate type.

In contrast, generics are built into the language; in fact, says Sridharan, they’re built into the next version of the framework itself, and thus accessible to any language that wants to use them. Sridharan said “surfacing” the feature in any particular language requires a certain amount of code; it’s not automatic.

C# is the first .NET language to make the new feature available. It’s unclear whether Microsoft will update other languages to implement the feature, although from the number of newsgroup requests about creating strongly-typed collections in VB.NET, one might reasonably expect that the VB.NET team is at least considering it.

Anonymous Methods: Anonymous methods are widely available in other languages, such as Smalltalk, Python, Lisp, JavaScript, and PHP. You define an anonymous method dynamically at the point where it’s used, rather then pre-defining it as a named method of a specific class. Anonymous methods make some types of operations more convenient, particularly when you need to change the method signature or body at run time. For example, suppose you wanted to dynamically define a delegate for a click event. With anonymous method capability, you could write this:

public Form1(){    this.Click += new EventHandler(sender, e)      {         // code to handle click event here       }; // end of anonymous method}

Note that the method that handles the event?the new EventHandler? is unnamed, or anonymous. Without anonymous method capability, your code would look more like this:

public Form1(){    this.Click += new EventHandler(OnClick);}private void Click(object sender, EventArgs e){    // code to handle click event here}

Not only is the first version shorter, but it’s also dynamic; you can change the method body depending on the program state.

Partial Types: This feature allows a team of programmers to split large classes containing lots of code into multiple files. Without this capability a team would have to use source code management features such as check-in/check-out and merge changes for multiple programmers to work on a single class; with partial pipes, each team member can work on a separate part of the class, and the system will handle merging the separate code files back into a single class at compile time.

Iterators: Iterators simplify the process of building classes that support the C# foreach iteration syntax, absolving programmers of the requirement to implement the IEnumerable interface to enable simple iteration.

New Visual C++ .NET Features
Visual C++ .NET has also been given an overhaul. February 2003 marks Visual C++’s 10th birthday, and the venerable language will gain several new capabilities in the upcoming version.

RAD Windows Forms: C++ developers using Visual Studio .NET will gain RAD form-building capability equivalent to that long enjoyed by Visual Basic (and lately Visual C#) developers.

98 percent ISO Conformance: Even more important, Hodapp says that the new version of Visual C++ conforms to the ISO C++ specification at around the 98 percent level, which is a huge improvement over previous versions. The current version of Visual C++.NET is only 90 percent conforming, said Hodapp.

“We really expect that we’ll be turning a lot of heads in the C++ community. There’s between 15 and 20 areas in the standard that we have to address [to achieve this],” said Hodapp.

Defensive Programming: The new version improves and assists developers writing secure code. Hodapp said that Microsoft has attempted to give developers the same C++ tools for defensive programming that Microsoft uses internally. The currently shipping version of C++ has a buffer security check feature (GS switch) that checks code against a built-in repertoire of security attacks and can provide warnings of potential weaknesses. The new version improves on that feature with a greatly expanded set of known security vulnerabilities, and can also work with Windows itself?specifically, Windows .NET server?to recognize types of attacks that would otherwise be impossible to detect.

Improved Performance: Finally, the new version has “G7” performance enhancements that allow programmers to compile applications targeted explicitly for newer chipsets, such as AMD’s Athlon, and Intel’s P4. Hodapp said “[programmers] can expect to see a 5 to 10 percent performance increase” by using the G7 features. Some of the increased performance occurs because of the compiler’s ability to take advantage of ARCH SSE, or SSE2, which improves floating point throughput.

How will Visual C++’s new capabilities affect your existing code? Hodapp said “Impact on existing code is pretty small. We strove to enable the compiler to continue to build existing code. Any new feature that would break existing code we made so you can turn it on and off. The majority of the features we implemented are new, so existing code doesn’t use those features and won’t be affected by their presence. In our own tests against large volumes of code, we believe the Everett compiler will break less than 1 in 16,000 lines.”

At publication time, Microsoft was still making final modifications to a series of whitepapers about these features. When completed, the documentation will be available for download at www.csharp.net.

Share the Post:
Heading photo, Metadata.

What is Metadata?

What is metadata? Well, It’s an odd concept to wrap your head around. Metadata is essentially the secondary layer of data that tracks details about the “regular” data. The regular

XDR solutions

The Benefits of Using XDR Solutions

Cybercriminals constantly adapt their strategies, developing newer, more powerful, and intelligent ways to attack your network. Since security professionals must innovate as well, more conventional endpoint detection solutions have evolved

AI is revolutionizing fraud detection

How AI is Revolutionizing Fraud Detection

Artificial intelligence – commonly known as AI – means a form of technology with multiple uses. As a result, it has become extremely valuable to a number of businesses across

AI innovation

Companies Leading AI Innovation in 2023

Artificial intelligence (AI) has been transforming industries and revolutionizing business operations. AI’s potential to enhance efficiency and productivity has become crucial to many businesses. As we move into 2023, several

data fivetran pricing

Fivetran Pricing Explained

One of the biggest trends of the 21st century is the massive surge in analytics. Analytics is the process of utilizing data to drive future decision-making. With so much of

kubernetes logging

Kubernetes Logging: What You Need to Know

Kubernetes from Google is one of the most popular open-source and free container management solutions made to make managing and deploying applications easier. It has a solid architecture that makes

ransomware cyber attack

Why Is Ransomware Such a Major Threat?

One of the most significant cyber threats faced by modern organizations is a ransomware attack. Ransomware attacks have grown in both sophistication and frequency over the past few years, forcing