Interview with Group Program Manager Raj Pai on VB, C#, F#, IronPython, and IronRuby in Visual Studio 2010

Earlier this year Octavio Hernandez visited Microsoft campus and interviewed Group Program Manager Raj Pai about managed languages in Visual Studio 2010. Octavio is a Technical Editor for Spanish magazine DotNetMania and a C# MVP. The Spanish version of the interview was published in the DotNetMania magazine, and distributed at VS 2010 Launch events in Spain. The English version of the interview is included below.

clip_image001

clip_image002

Interview with Raj Pai

In the context of the Microsoft MVP Summit 2010, dotNetMania editor Octavio Hernandez interviewed Raj Pai, Group Program Manager of the Visual Studio Languages Group at Microsoft.

Octavio Hernandez. Raj, the immutable first question of all our interviews consists in asking the interviewee to introduce himself to the readers. Please tell us a little bit about yourself.

Raj Pai. Sure, I started my career at Microsoft as an intern on the Visual J++ team in 1997, while I was studying Computer Science at Stanford University. After graduating, I joined Microsoft full-time, and have been working here since then in a variety of Program Management roles. I am married with a six year old son, and we are having a new baby boy later this month! I plan on raising both my kids to be .NET developers when they grow up J

OH. What are your specific functions as the Group Program Manager of the Languages team?

RP. I lead the team of Program Managers responsible for a portfolio of .NET languages including VB, C#, F#, IronPython, and IronRuby. My team drives the language design, compiler implementation, and IDE experience for these languages, as well as foundational technologies such the Dynamic Language Runtime (DLR). The PM role changes a bit during the product cycle. At the beginning of a product cycle, we focus mainly on requirements gathering, planning, design, and specification of the release. However, this quickly shifts into execution and coordination as we enter the coding milestones. With Visual Studio 2010, my team has spent the last several months driving the final bug fixing and project management work to ship the product. As we ship VS 2010, we will focus on customer outreach so we can have a great launch. And then, the cycle begins again for the next version.

OH. It should be great to see how the product you’ve been working on for the last few years hits the streets, right?

RP. Yes, shipping the product is the best part of the job. Our goal with every release is to make real world developers more productive when writing code, and I’m especially proud of the work my team has done in both the language and the tooling experience in this release. I am really excited to hear the feedback from the developer community as they start using on a daily basis the new features we’ve introduced.

OH. Tell us a little bit about the new features that will be present in C# 4 and VB 10. What new scenarios will these new features make possible?

RP. We have made a number of enhancements to enable rich language support for the latest programming models and paradigms. One major focus area was interoperability with dynamically typed libraries and code assets. Dynamic interop has historically been cumbersome, inconsistent, and bug-prone. In Visual Studio 2010 we built support of the Dynamic Language Runtime (DLR) into both C# and VB, which enables developers to seamlessly interoperate with their Office, COM, Silverlight, and dynamic languages assets from their programs with a unified programming model. In C#, we introduced the new “dynamic” type to provide intuitive syntax in writing code against dynamically typed objects, while in VB we leveraged the existing late-binding support. C# also caught up with VB by adding named and optional parameters, which are especially important for COM and Office interop, but are generally useful in other scenarios as well. Additionally, Office interop has been improved for both languages by eliminating the need to deploy Office apps with Primary Interop Assemblies (PIAs) – Visual Studio will embed the Office types your app depends on within the app itself.

In VB, we introduced several productivity features that will save developers a lot of typing. With implicit line continuations, we remove the requirement to use the underscore when breaking statements across lines. Features such auto-implemented properties, collection initializers, and array literals eliminate the need for a lot of boilerplate code that was previously required. We also improved VB’s support of lambdas by supporting multi-line lambdas – now you can define a Sub or Function anywhere a delegate is expected.

My team is also responsible for ensuring that we are providing a great IDE experience when writing C# and VB code. In this release, we have made a lot of investments towards better tooling support for test-driven development. With the “Generate from Usage” feature, a developer can quickly setup unit tests while VS creates all the stub code under the covers. They can also write code using a “test first” style of development with the new “Low Impact” mode for IntelliSense that doesn’t get in the way of a developers workflow. General UI navigation has been improved greatly with the “Navigate to” feature, which quickly jumps the user to the files and symbols they are looking for.

This is just a taste of the many improvements across both the language and tooling, so I encourage folks to visit MSDN to review the comprehensive list of features we’ve delivered, and try out the product.

OH. Some time ago, you set yourselves the goal of working towards the feature parity between C# and VB. Do you think the goal has been fully attained, or there is still some work pending for the next versions?

RP. We have made a lot of progress towards this goal with Visual Studio 2010, filling some of the most significant gaps in each language. Moving forward we will continue co-evolving the languages. Any major new language feature will be added to both languages in the same release, although they may be expressed in different ways to match the style of each language. On the IDE side, we got a lot closer to parity in Visual Studio 2010, but we still have work to do in future releases to make sure that both languages can take advantage of the same code understanding and refactoring features. We are also continuing to work across the platform teams at Microsoft to get more language parity with the samples and content we produce for each platform.

OH. This edition incorporates a new member of the family of Visual Studio languages, F#. What are its distinctive features? What kinds of problems is F# best suited to solve?

RP. The motivation behind F# was to create a new .NET programming language that combines ideas from functional and object oriented programming into one language. F# is a general purpose language, which you could in principle use to solve just about any part of your programming work. However, F#’s particular feature set is targeted at apps in areas where technical, explorative, algorithmic or parallel work is major part of the application. What is unique about F# is that it allows developers to combine the succinct, expressive, and compositional style of functional programming with the power of the .NET platform. By including F# in the VS 2010, we are providing one of the first commercially supported tool and languages to write functional code. I believe the F# will attract developers and domain specialists in science, technology, engineering, finance, and academia to Visual Studio and the .NET platform. Since F# is particularly well suited to write parallel and asynchronous code, we also see a lot of excitement from the broader developer community. I am very excited to see the growth of F# adoption now that we’ve included it in the Visual Studio box.

OH. I suppose the following version of Visual Studio (after 2010) will then add Iron Python and Iron Ruby to the suite? Is there any already defined policy in that respect?

RP.IronPython and IronRuby have been very successful with a model of agile, out-of-band releases. The dynamic languages community is fast-paced, and they love to see the frequent updates we’re able to provide since we are not tied to the Visual Studio ship cycle. So at this time we are not planning on including these languages in the Visual Studio box. What we have heard, however, is that our users really could use a Visual Studio tooling experience for our Dynamic Languages. In response to the feedback, we have started an incubation project to provide Dynamic Language tooling as an add-on to Visual Studio, and I hope to release a broadly available technology preview sometime after the Visual Studio 2010 launch.

OH. What can you advance us regarding the possible features the following versions of C# and VB will offer?

RP. Sure. Keep in mind that this is early thinking, since we have just winded down the Visual Studio 2010 project. One major initiative that we have been considering is re-architecting both the C# and VB compilers to expose our internal data structures via a rich compiler API. By doing so, we will enable a variety of new scenarios. For example, by exposing each compiler as a service, we could provide enhanced explorative modes of development, such as a Read-Eval-Print-Loop (REPL) window where you can write VB or C# code that can execute immediately. Exposing the compiler data structures would make it very easy for not only our internal teams but also the external developer ecosystem to build code analysis and refactoring tools that can plug into Visual Studio to provide rich code editing experiences. Overall, we believe that investing in a great compiler API will enable us to be a lot more agile in our ability to innovate the developer experience in Visual Studio. We are also looking at where we want to take the languages. One area that we’ve been investigating is how we can provide better language primitives to write parallel and asynchronous code. Over the next few months we will be able to share more of our thoughts with the community as we ramp into the planning cycle for our next release.

OH. Some final words to our readers, please…

RP. Thanks for the opportunity to talk to your readers! I hope everyone has a chance to take a look at Visual Studio 2010. I look forward to getting some feedback on your experiences – we actively monitor the forums and the Connect website, and we would love to hear from you!

OH. Raj, thank you very much! Keep up the great work!