||During Microsoft's Visual Studio .Net Launch in Turkey (March 12, 2002), my colleague Volkan Gazioglu
and myself had a chance to interview Microsoft C# Product Manager Prashant Sridharan and ASP .NET Product Manager Shawn Nandi on behalf of
Below, you will read this very exclusive and interesting interview in full detail.
Exclusive Interview with Microsoft C# Product Manager Prashant Sridharan and ASP .NET Product Manager Shawn Nandi
March 12, 2002
BC: Prashant (on the left), we know that you are known as an evangelist in Java world and you are the author of Advanced Networking in Java and JavaBeans Developer's Resource books.
Prior to joining Microsoft, you were working as software engineer for Sun Microsystems. What was the primary motivation for you to join Microsoft ?
Sridharan: I've joined Microsoft for strictly personal reasons.
BC: For a period, you were the product manager of J++ in Microsoft ?
Sridharan: Yes, I was responsible from J++ versions 1.0, 1.1 and 6.0.
BC: To what extent your prior expertise in the Java World contributed to the development of the C# language ?
Sridharan: Prior to becoming the product manager of C#, I was working on software development tools and Microsoft TV. C# version 1 was developed completely independent of me and now, I'm responsible for version 2.
BC: Nowadays, C# and Java are frequently compared with each other among developers. What is your opinion on this comparison ?
Sridharan: When we look at C# and Java languages, we see that they have different syntaxes. Here we have to make the distinction between the Java language and the Java platform. C# is not a platform on its own,
it's one of the development languages under the .Net umbrella. We can easily make an analogy between the Java platform and the .Net framework, .Net classes and the CLR (Common Language Runtime). When we compare Java
and C# on language basis, we see a couple of important issues that C# brings: Unsafe (*) code, operator overloading and the reduced amount of time to develop software for the .Net framework.
BC: Is C# really a thread for Java or is it too late to compete ?
Sridharan: It's never too late to compete (smiles). Here we have to make the distinction between the Java language and the Java platform again. C# is not aimed at the Java platform but .Net is a very serious
thread for the Java platform. At the moment, .Net platform is supporting more than 20 languages. There are so many VB developers in the world. If those developers want to use VB instead of C#, then this is ok for us because
we see the platform as the key player. Sun Microsystems sees C# as a thread but they perceive the .Net platform as the real thread.
BC: There is also J# among the languages in the .Net platform. How did you overcome the licensing issues with Sun Microsystems ?
Sridharan: J# doesn't work on a JVM. J# enables to develop software with the Java syntax on the .Net framework using .Net classes and CLR. With this aspect, it's just one of the languages on the .Net platform.
BC: Java inventor James Gosling stated in an interview that C# was Java without security, productivity and reliability. What is your comment on this ?
Sridharan: Definitely an absurd statement. Developing code with the unsafe code features of C# is what developers have to decide whether to use or not.
BC: Gosling also mentioned that the backward compatibility of C# with C and C++ made it weak because in C and C++, it's possible to access memory anytime from anywhere.
Sridharan: Yes, this comes from the unsafe code features of C#. It's in developers hands to use this option or not. And infact, this feature is used by small amount of developers.
C# doesn't have any built-in security vulnerabilities. When you develop an application by using the unsafe code features, you drag the application to an unsecure domain but as I said before,
this is done by the developer. Applications that are developed without using the unsafe code features will continue to stay in a secure domain.
BC: Applications that are developed on the .Net platform are first compiled into a meta language called IML (Intermediate Language) and then, they are run within the CLR in an operating system
dependent manner. CLR is only supported on the Microsoft platform at the moment. Are there any plans of porting the CLR to Unix and Linux platforms ?
Sridharan: At the moment, we have a product that is called SS-CLI (Shared Source Common Language Interface) officially and used within Microsoft. We are targeting this product towards FreeBSD and Windows.
We are expecting from our partners to develop C# compilers for other platforms and make C# code run on several platforms by using CLI. Ximian has already got a product developed for Linux now.
BC: In a way, you make it language and platform independent ?
Sridharan: It's too early to talk about platform independence. SS-CLI is mainly used in academic work and to help us see what choices we might have in the future. VS.Net is a work of 4 years
and we have concentrated our resources to enhance it.
BC: What does VS.Net provide by means of backward compatibility ?
Sridharan: We have two main developer base at the moment. In the first group, we have developers of COM and Win32. In the second group, we have VB developers and infact, we can treat them as COM and Win32
as well. For VB developers, we provide a wizard which analysis old VB code and ports it to .Net code. Of course, it's not possible to achieve 100% success in this conversion. What we see most likely is
60% - 70% success in conversion and some manual tweaking.
It's very easy to access COM objects and to
call those DLLs in the .Net framework. Developers willing to port their applications to .Net can develop web services by using the .Net framework and call their old COM objects
when needed. This method has around 90% success rate. We have a relatively small group of developers who write operating system dependent code (native code). Those developers can use the unsafe features of C# or Managed C++.
What we value most is that: Prior work should not be wasted due to porting to a new platform and it should be reusable. It's possible to setup VS.Net and VS 6.0 on the same machine and side by side.
BC: One of the major advantages of .Net is the normalization of the data types. There is no need to use different APIs and different inevitable interfaces of COM such as IUknown and IDispatch inorder to achieve the same functionality.
Sridharan: Absolutely right. There has always been more than one language on the Microsoft platform and we have seen that developers were not quite certain about which language to use.
Questions like "Shall I learn C# instead of VB" or "Shall I port all my code from VB to C#" have been asked frequently. Switching from VB to C# doesn't provide any benefit accept having a couple of features which are not used most of the time.
All languages have to be 1st class citizens in the .Net platform. Besides, we can't ignore the other languages that developers find helpful. For example, PERL is ideal for working with character sets. There is no point in trying to replicate the same
functionality with C# for a developer.
BC: Shawn, you have demonstrated in your morning presentation that it's possible to accomplish many complex tasks by a few mouse clicks and tweaking 2-3 lines of code. How do you compare VS.Net with IBM Websphere Studio, Sun's Forte and
other similar tools by means of productivity ?
Nandi: I think that the developers are tied to the Java language by using those products. Main difference is, by using VS.Net they have the freedom to choose whatever language they want to use. Besides, VS.Net provides very strong support for
XML web services. Anyway, all of them are innovating and trying to bring their bests to the developers.
BC: Nowadays, every major technology provider is pushing the XML web services. How do you compare Microsoft's strategy on web services with IBM and Sun Microsystems ?
Nandi: I believe that Microsoft is a head of the competition in web services. This doesn't mean that we put our own standards and we are incompatible with other vendors. One of the main purposes of web services
is to facilate information flow between disparate systems. Inorder to achieve this, we have formed an alliance with other vendors under the name of Web Services Interoperability Organization (ws-i.org). I think VS.Net and the
.Net platform are the best product and best the platform to develop web services at the moment.
BC: What do you think about the open source movement ?
Nandi: We at Microsoft find the shared code philosophy more successful than opening code to anyone by all means approach.
(*) What is meant by unsafe code here is not any software bug or security vulnerability but structural features of the programming language like unchecked array bounds, etc.
© 2002 Ilker Atalay & Volkan Gazioglu, Bilisim Cumhuriyeti