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

  • GitHub Expands Copilot Enterprise Search in Visual Studio and VS Code

    GitHub supercharged search for its Copilot Enterprise AI assistant in both Microsoft's Visual Studio IDE and Visual Studio Code so developers can now get results from well beyond local codebases, including the internet.

  • What's New in TypeScript 5.5, Now Generally Available

    Microsoft shipped the latest iteration of its type-infused superset of JavaScript, TypeScript 5.5, introducing inferred type predicates, control flow narrowing, JSDoc @import and other enhancements.

  • GitHub Copilot for Azure Gets Preview Glitches

    This reporter, recently accepted to preview GitHub Copilot for Azure, has thus far found the tool to be, well, glitchy.

  • New .NET 9 Templates for Blazor Hybrid, .NET MAUI

    Microsoft's fifth preview of .NET 9 nods at AI development while also introducing new templates for some of the more popular project types, including Blazor Hybrid and .NET MAUI.

  • What's Next for ASP.NET Core and Blazor

    Since its inception as an intriguing experiment in leveraging WebAssembly to enable dynamic web development with C#, Blazor has evolved into a mature, fully featured framework. Integral to the ASP.NET Core ecosystem, Blazor offers developers a unique combination of server-side rendering and rich client-side interactivity.

Subscribe on YouTube