News

Developers Debate over Future of C#

Developers respond to Microsoft Technical Fellow Anders Hejlsberg's discussion on the future direction of C#.

Anders Hejlsberg, Technical Fellow and C# Team Leader, Developer Division, Microsoft Microsoft Technical Fellow and C# team leader Anders Hejlsberg has spent a lot of time recently talking about the future direction of the C# programming language. But some developers are concerned about the path their favorite language may be taking.

As the flagship language of Microsoft's .NET Framework, C# plays a critical role in Microsoft's development strategy. That role will continue to evolve as the language takes on the attributes of dynamic and functional programming languages.

C# 3.0, which shipped in November 2007, introduced functional programming concepts like the lambda expressions found in Microsoft's F# and Language Integrated Query (LINQ). C# 4.0, which is currently under development, will add dynamic typing. The imperative, statically typed, objected-oriented programming language originally launched as Redmond's response to Java is looking like a whole lot more.

"In a sense, C# is becoming a hybrid programming language, or a multiparadigm programming language. It's object-oriented, it's functional, now-in 4.0-it will be dynamic as well," Hejlsberg says. "I think it's perfectly natural that we borrow the best ideas from these different domains. There's no sort of requirement that one must be a statically typed or dynamically typed programming language. I think both have advantages."

Fresh Concerns
Developers at the Microsoft Professional Developers Conference 2008 in October applauded when Hejlsberg discussed how dynamic typing would finally ease the handling of COM interfaces and other thorny interactions. But other programmers are concerned about C# breaking in new directions.

"One of the most frustrating things is the continuously expanding complexity of C#," writes Dr. Brian Morris, director of Euronav Ltd. in Portsmouth, U.K. "Increased complexity adds higher levels of entry and, worse, [makes it] more difficult to understand and maintain code. Often engineers will use a new feature just because it's there, when using the simpler constructs of a language would give a better solution. Lambda expressions are a typical feature of this."

Ronald Jones, a 20-year programming veteran who is currently mastering C# 3.0, urges Microsoft to "stop already" with the changes. "You inhibit C# adoption every time you change it," Jones writes. "You inhibit its stability and desirability as a platform of choice for future development. A language is not something to be spun out and revised on a whim every year. How could any shop adopt a language that changes as often as C# does?"

Hejlsberg says he understands the danger. "You can't fundamentally change the nature of the beast. C#, its core design center was to be an imperative, object-oriented programming language. Now you can add features that you borrow from functional and dynamic, but it still has that core center of gravity, and you can't really change that," he says.

Hejlsberg says his team has been mindful of the dangers of heaping features onto C#. He points to the continuity of the development team, which began meeting three times a week back in 1999. "That series of meetings is still ongoing. In fact, until recently, it was still in the same room."

"I think it's perfectly natural that we borrow the best ideas from these different domains. There's no sort of requirement that one must be a statically typed or dynamically typed programming language. I think both have advantages."
Anders Hejlsberg, Technical Fellow and C# Team Leader,   
Developer Division, Microsoft   

To VB or Not to VB
Questions also arise around the relationship between Visual Basic and C# under .NET. Hejlsberg says the commonalities between the two programming languages will only continue.

"We have often externally tried to position one [language] for one group and the other for another, and we have not really been all that successful. When you look at the developer communities around the two languages, there's really not a lot of difference between the two," Hejslberg says. "They build the same kinds of apps, they want the same type of features. It's really more an accident of history whether they're using one or the other language."

Ron McCullough, a software developer in Nashville, Tenn., has seen no compelling reason to move off of VB. "Coming from a VB background, I found C# to be awkward and slow to develop, and lacking in many amenities that I've come to expect in VB development," he writes in an e-mail exchange.

Rick Piovesan, a Canadian developer in Aurora, Ontario, Canada, agrees. "As a contractor, my preference is VB first and C# when needed. But these days more and more C# is the language required by client projects," he writes. "But what amazes me is how crude and simplistic Visual Studio's support is for C# as compared to VB. I kept looking for features and wondering where they were."

While both Piovesan and McCullough agree that more activity is moving to C#, Microsoft is committed to co-evolving the two languages. A feature that gets added to C# will be considered for VB, says Hejlsberg.

"Let me put it this way: I think there is absolutely no reason to jump off of Visual Basic for fear it will not evolve in the same fashion as C#," Hejlsberg says. "That's really the assurance we want to give people."

About the Author

Michael Desmond is an editor and writer for 1105 Media's Enterprise Computing Group.

comments powered by Disqus

Featured

  • Full Stack Hands-On Development with .NET

    In the fast-paced realm of modern software development, proficiency across a full stack of technologies is not just beneficial, it's essential. Microsoft has an entire stack of open source development components in its .NET platform (formerly known as .NET Core) that can be used to build an end-to-end set of applications.

  • .NET-Centric Uno Platform Debuts 'Single Project' for 9 Targets

    "We've reduced the complexity of project files and eliminated the need for explicit NuGet package references, separate project libraries, or 'shared' projects."

  • Creating Reactive Applications in .NET

    In modern applications, data is being retrieved in asynchronous, real-time streams, as traditional pull requests where the clients asks for data from the server are becoming a thing of the past.

  • AI for GitHub Collaboration? Maybe Not So Much

    No doubt GitHub Copilot has been a boon for developers, but AI might not be the best tool for collaboration, according to developers weighing in on a recent social media post from the GitHub team.

  • Visual Studio 2022 Getting VS Code 'Command Palette' Equivalent

    As any Visual Studio Code user knows, the editor's command palette is a powerful tool for getting things done quickly, without having to navigate through menus and dialogs. Now, we learn how an equivalent is coming for Microsoft's flagship Visual Studio IDE, invoked by the same familiar Ctrl+Shift+P keyboard shortcut.

Subscribe on YouTube