The recent release of tools targeting new programmers, and the departure of a major force on the IronRuby development team, caused some predictable teeth-grinding from Microsoft watchers. LightSwitch, which I discussed in a recent column (“LightSwitch turns up,” Sept. 1, p. 24), and WebMatrix, a free Web-development stack, are Microsoft products aimed squarely at newer programmers—the people who once made Visual Basic such a success and who in recent years have been flocking to PHP or ColdFusion.
Are C# and Visual Basic on the CLR accessible to newcomers? I give you “public static void Main(string args)”. Scoping, class versus instance methods, return values, arrays, perhaps the difference between value and reference types, perhaps the immutability of string instances, the idea of an entry point… There are probably even more concepts in there that are “obvious” or evoke the “don’t worry about that for now” response.
Visual Basic is easier, but it’s still harder than Python or Ruby, languages that have more advanced resources and more modern frameworks to aid the programmer as they become more experienced.
In my column on LightSwitch, I said that support for IronPython and IronRuby were “no brainers,” but the Dynamic Language Runtime, which some of us feel is one of the huge “wins” for the .NET stack, hasn’t been pushed by Microsoft lately, and the unfortunate timing of the departure of IronRuby’s major developer was interpreted by some as evidence that Redmond’s strategy is scattered and counterproductive. The rumor that the IronRuby effort now consists of one half-time developer hardly seems encouraging for the project’s survival.
In a blog post on wildermuth.com, C# MVP Shawn Wildermuth made the argument that “Microsoft isn’t a big company…[T]he reality is that Microsoft is a single HR department that services 100+ small companies.” The post was praised by Microsoft cheerleaders. It’s a clever spin on Microsoft’s famously competitive internal environment, but it’s also nonsense.
The percentage of Ruby use in startup companies is significantly greater than zero, and at least some smart people (including people at Microsoft Research) use technologies implemented on the Java Virtual Machine, Web servers other than IIS, and GUI toolkits that don’t come from the Pacific Northwest.
Just as Microsoft’s teams are compelled to use Microsoft technologies, those outside Microsoft are hardly competing on a level playing ground against Redmond’s “startups.” Even putting aside marketing budgets, no one evaluates a product launched by Microsoft and thinks of it as risky as opposed to a product launched by a startup. Would, say, Team Foundation Server have been adopted as rapidly as it did if people did not assume that Microsoft stood behind the product and were guaranteeing support and evolution in a way that no startup could?
The main thrust of Wildermuth’s post was that LightSwitch is not aimed at the engaged professional developers who closely follow announcements from Microsoft’s Developer Division. That’s certainly true. But it’s wrong to deny Microsoft’s responsibility to be taken at face value; if Microsoft says, “X is the best thing for this type of developer,” then they are equally saying, “Y is not the best thing.” If Microsoft cancels IronRuby, it won’t be because of an intractable technical problem or the lack of investment resources, it will be because Microsoft has consciously decided that, for every type of programmer, there are better choices than Ruby.
I don’t personally agree with that, but if someone were to say, “What were you looking for in IronRuby that you could not get from IronPython?” I would admit that it’s mere preference and some specific libraries that almost certainly have equivalents in the Python world. But if, on the other hand, IronPython is never promoted into the “first-class” category that includes Visual Studio integration, that cannot be dismissed as meaningless or disinteresting to the public. On Microsoft Connect, the only feature with more votes than IronPython integration is IronRuby integration.
Visual Basic is an under-respected language, and C# is my favorite among mainstream languages, but I do not think that their union is the set of “best choices, at all times, for all developers.” Especially if you allow that you need two other entries to contain the entire set: C++ and F#. C/C++ I’ll grant you for all your unmanaged needs, but surely if functional programming as embodied in F# has enough to offer to be promoted to first class, so too does dynamic programming as embodied in (at least) IronPython.
Even more, I would love to see the promise of .NET’s explicit design goal of accommodating many languages be more actively supported by Microsoft. Despite the DLR, which makes it much easier to implement certain language features, there are significantly fewer languages available for .NET than for the Java VM. Java had a few years head start a decade ago, but at this point, that’s essentially irrelevant.
One of my favorite developments of the past several years has been the resurgence of interest in programming languages. It would be nice if Microsoft’s stack were the best place in the world for that interest to play out.
Larry O’Brien is a technology consultant, analyst and writer. Read his blog at www.knowing.net.