News

Look Sharp

How C#, F# and other experimental programming languages are driving next-generation development.

The "Sharps" -- a growing group of programming languages that build on top of the .NET Common Language Runtime (CLR) -- aren't just a bunch of science-project offshoots of Microsoft's C# language. Rather, they are barometers of how and where languages are evolving, according to both theoretical and pragmatic developers.

A#, F#, J#, Sing#, Spec# and X# (now known as C Omega) all have their devotees. Regardless of individual loyalties, "the various research Sharp languages have had an impact on future software development and programming," says Erik Meijer, an architect in Microsoft's SQL Server group and one of the key driving forces behind C Omega.

Look SharpThe granddaddy of the Sharp languages is C# (pronounced "C Sharp"), Microsoft's object-oriented alternative to Java. But some of the other Sharps, such as C Omega, have emerged as driving forces behind Microsoft's next-generation tools. C Omega has influenced C# 3.0, Visual Basic (VB) 9.0 and LINQ, Microsoft's Language Integrated Query technology that will be part of the "Orcas" release of Visual Studio. (Orcas is expected to ship in the late-2007 or early-2008 timeframe.)

"Over time, many of the most useful features of the experimental research languages migrate into the mainstream languages, such as C# and VB," Meijer says. "However, the technology also flows in the opposite direction. There's a very interesting pump of ideas and people flowing between research and product development."

'Kick the Tires'
Meijer is not alone in his beliefs regarding the significance of the Sharps.

While the Sharps "are purely R&D languages and will most likely never see commercial life, they are good places for Microsoft to kick the tires of new features and technology, and then those will make it to C#," says Stephen Forte, chief technology officer and cofounder of Corzen Inc., a New York City-based consulting firm. (Forte also is a Microsoft Most Valuable Professional (MVP) and Regional Director.) "So if you want to see what C# may look like in five years, take a look at X#, F# and the other [Sharps]."

Joel SpolskyCross-pollination of commercial languages and the Sharps is a growing phenomenon, agrees Joel Spolsky, cofounder of Fog Creek Software and a well-known commentator on software development (via the http://www.joelonsoftware.com blog).

"Historically, there have been two separate tracks in programming language design. The academic track, which includes Lisp, Pascal, ML, OCaml, Haskell, etc., came out of computer science researchers. The practical track, which includes languages like C, C#, Perl, Python and Ruby, came out of working software engineers," Spolsky says. And, "the practical languages often do things the hard way, because they're not paying attention to the inventions of the computer scientists."

"Working programmers have a long history of ignoring Lisp and OCaml, and I don't see that changing now just because it's called F#. What's more likely to happen is that mainstream languages slowly absorb some of the things that were invented 20 or 30 years ago in academia," Spolsky adds.

Increasingly, languages like JavaScript and Microsoft's C# "are actually starting to pay attention to the computer scientists," Spolsky says.

No Flat Growth for the 'Sharps'

There are two categories of Sharps: .NET languages and libraries. This list includes a sampling of some of each.

In Search of the Silver Bullet
The Sharps are "all different attempts at solving the age-old issue of developer productivity and software project backlog. Each language is taking a crack at it in its own way," says Visual Basic expert Jackie Goldstein, founder of Renaissance Computer Systems Ltd., based in Hashmonaim, Israel.

"F# is trying to revitalize [and] modernize functional programming. [C Omega] is recognizing the fact that in today's XML-driven world, we often care a lot more about the data than about the step-by-step algorithms, and therefore a modern programming language should be data-driven. Spec# is trying to take a more theoretical approach, with an emphasis on verifiability," explains Goldstein, a Microsoft Regional Director and MVP.

"I think the Sharp languages are trying to find the silver bullet of productivity for programming languages," Goldstein says, adding: "I've come to the conclusion that there isn't going to be a silver bullet or even a quantum improvement at the language level. I believe that the really significant productivity improvements need to come from the tools and environment, not the language."

There are some coders who are using one or more of the Sharps for their daily development chores. Dominic Cooney, a software engineer at Google's Kirkland, Wash., subsidiary -- and a former Softie who worked on the Office and Connected Systems teams -- is one such developer. Cooney was introduced to F# back in 2004, when he needed to generate Microsoft Intermediate Language (MSIL), the instruction set generated by .NET compilers from .NET languages.

"The best library at the time -- and still the best, I think -- was an OCaml library, AbsIL, that was also the back-end for the F# compiler," Cooney says.

At the moment, the F# project garnering most of Cooney's attention is the compiler for a research language, known as GPSL, which is a concurrent language with direct support for Web services and embedded XML query, he says.

But, as "F# is my language of choice for programming on Windows, pretty much any Windows programming I do is in F#," Cooney notes. "F# is easy to write and read because it's succinct. F# type inference makes it easier to write programs. You get all the benefits of static type checking, [like] finding mistakes early, and a lot of the benefits of dynamic languages: clean syntax, not having to puzzle over names for types.

"In short: I find programming in F# quicker, simpler and more powerful than anything else, and it plays really nicely in the .NET world," Cooney says.

About the Author

Mary Jo Foley is editor of the ZDNet "All About Microsoft" blog and has been covering Microsoft for about two decades. She's the author of "Microsoft 2.0" (John Wiley & Sons, 2008), which examines what's next for Microsoft in the post-Gates era.

comments powered by Disqus

Featured

  • Compare New GitHub Copilot Free Plan for Visual Studio/VS Code to Paid Plans

    The free plan restricts the number of completions, chat requests and access to AI models, being suitable for occasional users and small projects.

  • Diving Deep into .NET MAUI

    Ever since someone figured out that fiddling bits results in source code, developers have sought one codebase for all types of apps on all platforms, with Microsoft's latest attempt to further that effort being .NET MAUI.

  • Copilot AI Boosts Abound in New VS Code v1.96

    Microsoft improved on its new "Copilot Edit" functionality in the latest release of Visual Studio Code, v1.96, its open-source based code editor that has become the most popular in the world according to many surveys.

  • AdaBoost Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the AdaBoost.R2 algorithm for regression problems (where the goal is to predict a single numeric value). The implementation follows the original source research paper closely, so you can use it as a guide for customization for specific scenarios.

  • Versioning and Documenting ASP.NET Core Services

    Building an API with ASP.NET Core is only half the job. If your API is going to live more than one release cycle, you're going to need to version it. If you have other people building clients for it, you're going to need to document it.

Subscribe on YouTube