| By Derek Ferguson | Article Rating: |
|
| February 20, 2008 02:15 PM EST | Reads: |
72,941 |
.NETDJ: Who are your technology idols?
AH: I look at it like, "If I've seen so far, it's because I've been on the shoulders of giants." There have been so many people who have done so many things. Coming from the world of C, I thank Bjarne Stroustrup for C++, James Gosling for Java, and Kernighan and Ritchie for C. I'm just happy to be able to carve out a little corner of that universe.
.NETDJ: How do you perceive the role of C# in the .NET universe? Is it the preeminent language of .NET, the C-family language for .NET, or something else?
AH: I think it is the C-family language for .NET. I think that if you are a C/C++/Java programmer today you will definitely come into .NET feeling very comfortable with C#. If you are programming in VB6, VB.NET will feel more familiar. Either way you go, both are completely integrated. You can now have projects that use both languages. With Visual Studio 2005, you can even link together VB and C# code into a single assembly, so externals consumers can't even tell!
.NETDJ: So, what is the function of language in .NET, then?
AH: I think the thing that is really important to understand is that, in the world of .NET, language is really just a question of syntax. The unique value proposition for .NET is that all languages ride on a common runtime and therefore the learning curve...well, 10 or 20 years ago learning the syntax of a language was 50% of the learning curve, and 50% was its APIs; indeed it might have even been that the language was more. Now, the API is the overwhelming learning curve, 95% or better. So, having a common API regardless of your choice of language is an enormous benefit!
Under Windows, the current API is the .NET Framework. Going forward, it will be WinnFX, which is even better! Syntax is a lifestyle choice. VB or C#, we all sort of tend to visualize things in the language in which we are most comfortable. Is English better than French? I don't think so. I don't think there will ever be one end-of-the-line programming language. New languages are how we make progress. New languages and arrive and fix problems from old languages, and so on and so forth.
.NETDJ: I was recently asked by someone why .NET needs both Events and Delegates. Honestly, I couldn't answer them. Could you explain this?
AH: This is like asking why we need classes and fields. They are different things. Delegates are types, and Events are members, so we have to have both Delegates and Events. The tie here is that an Event is of Delegate type, but encapsulates a particular instance of that Delegate.
The way to think of it is that you can think of Events as being properties of a Delegate type, so you kind of see that distinction. Now we do add some syntactical elements in C# so that, rather than getting and setting Events directly, we ask you to use the -= and += operations. Other than this, Events are like Properties of Delegate type.
.NETDJ: What is the one feature unique to C# that you think developers coming from other platforms most tend to overlook?
AH:
In Java, you have to introduce primitives, references and wrappers, and so-on-and-so-forth immediately, because Java doesn't have a unified type system. I personally think that this makes a lot of sense.
.NETDJ: Since last we spoke, Global Outsourcing has become a much hotter topic in development circles. What are your thoughts on this?
AH: I can't say that I have any well-formulated thoughts. It seems more of a political issue than a technical issue.
.NETDJ: Last time we spoke, Mono was in its infancy. Since then, they have actually issued their first full release. Do you have any thoughts on this platform?
AH: I've talked to Miguel and looked at Mono a little bit. I think it is nice to see that our standardization efforts are bearing fruit and that the CLI is being implemented on other platforms. I think it is important to a lot of customers to know that alternate implementations are available, even if they don't use them. It will keep us on our toes, too! Competition is healthy.
.NETDJ: Before we go, could you tell me a little bit about your book?
AH: It is The C# Programming Language - the complete technical specification of the C# programming language. It is based on all of the ISO and ECMA specifications. The book, unlike the standards, has a gentler introduction and also has a whole section on C# 2.0 that describes the new features.
.NETDJ: I can certainly see the usefulness in a clear explanation of a new feature like Generics. Don't you think the whole concept is too complex to ever become generally used by .NET application developers?
AH: Oh no, quite the opposite. I expect that Generics and the new List<LT> and Dictionary<K,V> generic types will become the bread-and-butter of any .NET application! Honestly, they do precisely what ArrayList and HashTable do, except that they give you strongly typed collections with all the convenience methods a developer is likely to need.
Previously, there has sort of been this tension between strong typing and convenience when writing code with lists and arrays. You could have an array of Customer type, for example, but an array can't grow itself or sort, etc. So then people use ArrayLists, which have all the convenience methods, but don't retain any type information. With generics, you can have your cake and eat it too! You can have a strongly typed ArrayList - a list of type Customer, for example.
I believe that this will become an incredibly used type. It will get used much more often than ArrayLists, for example. The best part is that you won't need to understand Generics at all in order to use Generics-based collections. In order to author them, probably yes - but using them is just like using an array!
Published February 20, 2008 Reads 72,941
Copyright © 2008 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By Derek Ferguson
Derek Ferguson, founding editor and editor-in-chief of .Net Developer's Journal, is a noted technology expert and former Microsoft MVP.
![]() |
isodoor 10/26/09 03:54:00 AM EDT | |||
Professor Linda Shapiro is a great women with the following honors: |
||||
![]() |
Peter Frost 01/28/08 06:21:14 AM EST | |||
So it was the flaws in most major programming languages (e.g. C++, Java, Smalltalk, even Delphi) that drove the fundamentals of the CLR, which, in turn, drove the design of the C# programming language itself? Interesting... |
||||
![]() |
David Totzke 03/14/05 12:27:22 PM EST | |||
The mothers of C# invention wrote: "Or you might actually look beyond the blinders and see that VB is Basic mutated beyond recognition. And Basic was the worlds only programming language for those who couldn't program. " Thank god for that. Now all of the people who couldn't program won't be able to inflict their garbage on the world. "The father of C#! Like calling the guys in Malasia and China running the illegal CD and DVD duplication operations the fathers of multi-media. " Well, at least they're not bitter. Somebody get the mothers some Thorazine please. Sheesh, |
||||
![]() |
The Mothers of C# Invention 03/12/05 09:59:57 PM EST | |||
>I think there is a healthy cross-pollination that occurs Or you might actually look beyond the blinders and see that VB is Basic mutated beyond recognition. And Basic was the worlds only programming language for those who couldn't program. Or if you took the blinders off, you might see that C# is Java with Microsoft curb feelers. J++ + MFC ??? What a joke! Microsoft never saw a standard they couldn't improve upon! The father of C#! Like calling the guys in Malasia and China running the illegal CD and DVD duplication operations the fathers of multi-media. |
||||
![]() |
Doug Ferguson 03/11/05 03:45:29 PM EST | |||
What should the language/framework add in the future? Managed Threading would be a great addition. Currently managed memory stops the wild pointer problems that we see in unmanaged C/C++. The GC manages the memory. However, when programming with threads, it is so easy to make a mistake. What is worse is that you will not know that you have made a mistake until some random collision blows up your program. Managed Threading would check for thread safety in addition to type safety. With all the announcements about dual core processors, multi-threading issues will be more important than ever. |
||||
![]() |
dotnetRajesh 02/18/05 09:31:57 AM EST | |||
Fantastic interview.Thanks. |
||||
![]() |
Mukul Gandhi 02/11/05 11:41:32 PM EST | |||
Its indeed inspiring to read interview of Mr. Anders Hejlsberg. I have heard that Microsoft has decided not to implement latest version of XSLT language(XSLT 2.0) and XPath (XPath 2.0) in the .NET Framework. But Microsoft wishes to implement XQuery 1.0 in .NET, but only after it becomes a W3C recommendation. In this interview, Mr. Anders Hejlsberg has said.. "Another language that is difficult to learn, but very powerful, is XSLT". It therefore seems, XSLT is an important language for Microsoft! I wish Microsoft implements XSLT 2.0, XPath 2.0 and XQuery 1.0 in .NET Framework(and other relevant products). Also it seems, Microsoft has decided not to release next version of their freeware MSXML software(i.e. after MSXML4, which I think is MSXML5). MSXML5 is shipping only with MS Office 2003. I wish Microsoft release its latest MSXML5 software(or later versions like MSXML6..) as freeware just like MSXML4. And, latest MSXML (6 and beyond), should support XSLT 2.0 and XPath 2.0! I have heard, that Microsoft is of the view, that they implement W3C specs only after they become recommendations(and not in draft form).. I do agree with this view.. But, if Microsoft starts work now(it might have already started!), to implement XSLT 2.0/XPath 2.0 in .NET and MSXML, the product would be delivered on time! Regards, |
||||
- Cloud Computing on Gartner's Top 10 List and SYS-CON Events' 2010 Calendar
- Adobe Flex Developer Earns $100K in New York City
- Move Over BI, Here Comes PI - Performance Intelligence
- Yahoo! Query Language
- RothmanResearch.com Market Review and Company Analysis on FULT, DISH, ASBC, CTRP, FSLR and CRBC
- Qt DevDays 2009 - Munich
- The Time Is Right for Enterprise Cloud Computing
- Microsoft Nudges Eclipse Developers to Windows-Ware
- Who Invented Virtualization?
- ExaGrid Sets New Standard in Backup Price, Performance and Capacity with Launch of EX10000E Disk Backup System with Data Deduplication and Expanded 100TB GRID Capacity
- Smearing Cloud Lipstick on a Legacy Tech Pig
- Moving the Operating System & Desktop to the Cloud
- 1st Annual Government IT Conference & Expo: Themes & Topics
- Cloud Computing on Gartner's Top 10 List and SYS-CON Events' 2010 Calendar
- Is Microsoft as Free as Open Source?
- Adobe Flex Developer Earns $100K in New York City
- The Curious Case of Build Release Management eBook
- IBM, Microsoft, Others in Lock-Picking Cloud API Push
- Move Over BI, Here Comes PI - Performance Intelligence
- United Planet offers practical portal building tips for SMBs
- Yahoo! Query Language
- RothmanResearch.com Market Review and Company Analysis on FULT, DISH, ASBC, CTRP, FSLR and CRBC
- Qt DevDays 2009 - Munich
- The Time Is Right for Enterprise Cloud Computing
- Why Do 'Cool Kids' Choose Ruby or PHP to Build Websites Instead of Java?
- The Top 250 Players in the Cloud Computing Ecosystem
- Red Hat Named "Platinum Sponsor" of Virtualization Conference & Expo
- Ulitzer to Give Drupal 6.0 Its Biggest Scalability Challenge Yet
- An Introduction to Ant
- Appcelerator Named "Platinum Sponsor" of AJAX World Conference & Expo
- "What's New and Exciting About the Web Right Now?" Asks Time Magazine
- Oracle To Keynote Cloud Computing Expo
- First Eclipse Project Targeting PHP Now Available
- AJAX World - Two Great PDF Creators
- C#, Turbo Pascal, C++, PHP...and the LEGO Brick: Denmark's Leading Exports
- Rolling Your Own MVC: The Page Load Scenario






























