Microsoft’s leader of C# development, writer of the Turbo Pascal system, and lead architect on the Delphi language, Anders Hejlsberg, reveals all there is to know on the history, inspiration, uses and future direction of one of computer programming’s most widely used languages – C#. Hejlsberg also offers some insight into the upcoming version of C# (C#4) and the new language F#, as well as what lies ahead in the world of functional programming.
Amusing that he calls C++ and Java programmers the “curly braces crowd.”
From what he mentioned about the use of various programming languages in low-level Windows development, I have to wonder how much C# has been used in modern Windows (Vista onwards).
Its been almost a DECADE SINCE Microsoft announced they were going to stop trying to pretend like they were going to use any standard version of Java, and moved to their own proprietary copy of the java concepts.
And yet..in all that time very little is actually using it in the Windows OS.
Makes you go hmmmm.
C# is not a systems programming language, it is mainly a business programming language. It doesn’t make any sense whatsoever to program core parts of Windows in C#.
but MS does consider it being good for system-level programming (for instance Singularity Project).
Surprising not to see a mention of Singularity in the article, actually…
The language is good, but the runtime won’t work for low-level Windows components for a couple of reasons (many improvements were made too late in the game for inclusion into Vista). Singularity uses a totally different runtime system that doesn’t do any jitting and requires that the entire system be compiled with a single compiler. That’s not exactly in line with the Windows way of doing things.
And some Windows apps are written in .NET. Media Center is a big standout that ships in the box for many editions of Vista. It’s not exactly a small or crappy app.
There isn’t even a great deal of that going on. Most of the business code that has been written on desktops over the years has been mainly C++ and Visual Basic, and there is simply zero business case for anyone to rewrite code just so they can run .Net and program in C# and get applications that are functionally equivalent.
Anybody who has moved to something new over the years has moved to web based applications, mainly because they don’t need to faff about with the client and all the costs and administrative pain that entails. MSDN magazine comes up with ever more creative ways of pulling in dependencies that will blow your foot off once you try and deploy it to users. At least web applications have had some return on investment.
Then why should anyone else use it?
Who is claiming that cloning your existing programs with C# is a good idea? You now have .NET and C# as an superior alternative to C++ and VB, simply use it if you want.
Such broad claims will always prove false. Anyway, web applications may very well mean ASP.NET and C#.
What’s the deal if not someone else is not using C# to program core parts of Windows?
If you just don’t like this programming language or the company behind it, just say so. Less noise.
Anyway, web applications may very well mean ASP.NET and C#.
I certainly hope not. In my opinion, using ASP.NET & C# for web sites is only slightly more elegant than creating web sites in FrontPage.
Well, no. ASP.NET is pretty good – certainly no worse than JSP or PHP. The benefit of ASP.NET is that it allows real RAD design (Okay, I love absolute positioning, so sue me!) and the potential code reuse of a properly designed engine between a desktop and web app is extremely productive (okay, Java has this too, but hey!.)
ASP.NET has a bad rap, because those who are clueless think “ASP” is an element of the ASP.NET runtime. Well, no, it isn’t at all like that. Comparing ASP to ASP.NET is like comparing a Instant coffee to premium ground.
Exactly, and JSP and PHP are also awful. It is much easier to write code and maintain code when you structure it well and separate your business logic from your display.
While you can do this to some degree with ASP.NET, JSP, and PHP, they all encourage poor development practices by making it easier to program incorrectly.
Another thing that I think is stupid about ASP.NET is the lack of complete support for it found in VisualStudio. For example, ASP.NET supports multiple levels of template inheritance, but VisualStudio only supports one level of inheritance (this may be different now, but it was one of several limitation of the IDE in past versions).
Also, I don’t confuse ASP.NET with ASP. Everyone knows ASP is absolutely worthless. ASP.NET has some value at least. However, if I personally were going to use one of these languages, I’d chose PHP over ASP.NET or JSP; but that’s just me.
Edited 2008-10-02 18:31 UTC
As someone mentioned earlier, most enterprise apps these days target the web. This is by far the largest segment of the development market (in terms of developer dollars) – shrinkwrap apps are quite a small proportion (except this is all the hobbyists see).
Technically C# is pretty cool but doesn’t touch Java+Spring+Hibernate+Google Web Toolkit for enterprise development. No, Volta will blow for a few years yet. Our company just got another job (not the first) with a national-level government department whose back-end runs on Sun hardware (since these departments huge), no matter how good you think C# is, it’s not going to win us these contracts since the latest version is always hobbled to the Windows platform (limiting to Windows suits Microsoft’s business model, but no-one else’s) – and no Mono, is too far behind in versions at the moment (despite the hard work of Miguel et al.).
Oh yeah, these days Java runs way faster than C# (which is why Microsoft still doesn’t let people publish benchmarks, it in their licensing terms).
Errr, Microsoft. I take it you haven’t read any editions of MSDN magazine or don’t know how Microsoft is selling .Net? The whole Winforms -> Avalon/WPF stuff is an absolute classic example. Oh, just re-write your code in this technology.
Unfortunately, there is a great deal of existing code around. There’s not an awful lot of new stuff being written, and it’s just a pity that the upgrade path, particularly for VB -> VB.Net is non-existent. People want to take their existing code and upgrade it into something new with no rewrites.
The statement you’ve written there means nothing.
Unfortunately, it’s true. .Net adoption just simply isn’t that fantastic due to vast amounts of legacy code, and the fact that it is a moving target (Winform, WPF etc. etc.), and there’s really no reason to use ASP.Net. They’re just competing with everyone else out there doing web application frameworks, and they’re not doing anything on the client that is helping their customers or users from a backward compatibility point of view.
Because it doesn’t inspire confidence. Microsoft are telling everyone to use .Net when their internal usage and their usage for their own applications is non-existent.
Really, I didn’t think that concept needed explaining.
Translation: Blah, blah, blah, you’re being anti-Microsoft, wah, wah.
If you don’t understand this, I’d advise reading Joel Spolsky’s pretty spot on piece:
http://www.joelonsoftware.com/articles/APIWar.html
Also gotta love the marketer’s summary
Well, kind-of, but quite a small proportion of the development market actually (a smidgen over 4%).
If we’re gonna be talking about averages here, Java is the thing that is used the most, about five(!) times more on average than C#.
Source:
http://www.tiobe.com/index.php/content/paperinfo/tpci/
Java is mostly used for the back end of webapps, but there are large number of Swing apps out in business-land (although there are negligible shrink-wrapped comsumer-level apps).
One reason for this disparity is developers asking themselves why they would use C# to get mostly equivalent functionality but limit themselves to only one server O/S? (Mono doesn’t have all the newest stuff, but it is good project). Sure there are a few nice language tidbits in C# but they don’t outweigh platform- and vendor-dependence, and in fact these extra language features don’t constitute the bulk of most development code (they might affect a few percent of your codebase at most).
Funny how I have managed to stay employed for the past 7 years writing nothing but C# code in IT. Along with the hundreds of developers I’ve worked with. Along with the hundreds of developers they have worked with. Ad nauseam. No one is rewriting anything, but do you not think that IT departments are constantly writing new applications? And guess what they are doing it in…either .Net or Java. Your comment is just way off base.
It’s good when you can make money off writing new stuff, and then rewriting it again when a .Net change occurs or when something like Winforms gets dropped and you have to look at something completely new in WPF. Unfortunately, organisations that aren’t that stupid to pay you money to do that simply don’t go for that sort of thing. You’re in a minority of people who can jack off on new technology, sadly.
Enjoy it while it lasts ;-).
Yer. Hundreds.
Very, very, very few new applications are rewritten versus what is already there, and those that exist are not going to be amended and tested so they run and interact with .Net apps. It’s a waste of time, effort and money, and now that we have virtualisation we can make legacy applications run for pretty much as long as we want. I know where people are spending most of their money these days ;-).
No. They’re doing it by maintaining existing Java code, and they’re adding new features via C++, classic VB and COM, because that’s what they’re existing stuff is in.
The basic thing is this. Until you can open a C++ or a COM based application, or especially a classic VB based one, in the latest version of Visual Studio and not have to throw away a good portion of your code to get it to work or bung on compatibility layers, .Net is essentially useless for all the people who have invested in Microsoft’s development tools and environments over the past fifteen years. Joel Spolsky describes this better than I can:
http://www.joelonsoftware.com/articles/APIWar.html
First off, you misquoted me and took it completely out of context. The full quote included Ad Nauseam at the end of it. Meaning the cycle continues indefinitely.
I really am not going to take much time to argue with someone who is as misinformed as you are. I’ve been in software business for a long, long time whereas you obviously are either brand new, or have no clue what you are talking about all together.
I can tell you without hesitation that COM is 98% dead in IT. Virtually no one is adding any new features using COM. In case you didn’t know, .Net is fully compatible with COM via a little gem you haven’t heard of: COM Interop. Generating an interop assembly is as easy as running a couple of command line utilities. The performance hit is negligible. But wait, it gets even better. COM is also completely forwards compatible with .Net code, meaning that the 2% of the IT shops out there who are stuck maintaining existing components can call into .Net assemblies from their COM components. Again, generating a CCW around a .Net assembly is as easy as a couple of command line utility executions and *gasp* full forwards compatibility.
.Net has been out for 8 of those 15 years, so fear not…all doesn’t appear to be lost. In other words, for over half of those 15 years, .Net has been the preferred mechanism for delivering applications.
Oh, and by the way, I’ve met Joel Spolsky. Four times actually. He loves .Net. His shop does a lot of .Net development. That article is 4 years old, and he’s the first to admit that a lot has changed in the application space in the past 4 years. He hates that this article is often quoted completely out of context.
Means nothing I’m afraid, and people tend to talk about nothing when there’s nothing else to talk about.
As said by MSDN magazine. If all you have are MSDN anecdotes then there is really not a lot I can do for you. There is ton after ton of existing COM code around, .Net and Microsoft’s cool new tools have to work with it (and they have difficult doing that) and it has to be maintained with current tools. You can’t do that with Microsoft’s new stuff.
Yer. It’s a PITA – especially from a deployment perspective. Why bother when you can just develop with older versions of Visual Studio and older technology and have it actually, errr, work without the extra pain of introducing a new technology that there is no return on investment for?
I’m glad you think so, and I’m also glad you’re not the sap deploying and supporting it.
Ha, ha. That’s even more of a PITA. The decision making process above still applies because the bulk of code is still COM.
People dont’ want interop. Interop introduces huge problems when you get it into live. Just ask the Java people. They want to open their existing code in a new version of Visual Studio, compile it and have it work. For the first time ever, that hasn’t been possible.
If you think that only 2% of IT departments and companies out there are maintaining existing code and the rest are writing shiny new .Net code then you are away with the fairies sweetheart. I suggest working for a living rather than reading MSDN magazines, going to conferences and knocking out code that ends up being somebody else’s problem.
Hmmmmm, no. Just because it’s been out it doesn’t mean that it has been used. Weird logic you use there.
Did you actually talk with him about what he wrote?
Has he issued a retraction or a clarification since then (I’m not aware of one), because certainly from the forums he runs very little, if anything, has changed?
Trying to tell me that that he is now a happy camper and is aboard the .Net traing (he was already using .Net when the article was written) means zilch I’m afraid.
Quote please? Where did he say this? The article is completely in context, and I’m afraid he knows as well as I do that little has changed. I would also advise you to stop speaking for other people.
You don’t seem to understand a few things about enterprise development.
First, there is ALOT of enterprise software being written all the time. There isn’t any other segment of the industry that even comes close. Secondly, nothing EVER gets re-written, even when it needs to be. Thirdly, languages NEVER go away. there is still a large market for COBOL and MUMPS programmers, both of those languages have been obsolete for a very very long time.
Yes, there is a ton of legacy c++ business apps out there. No, that doesn’t mean anything in relation to what people are using now for new development.
And COM interop is easy as hell in .net, and it is as easy to call a c++ api in .net or java as it is in c++. Invoking a four year old spolsky article that only marginally relates to the conversation isn’t exactly proof of anything.
Sorry, but you are completely wrong. I’ve worked for a number of major companies where their entire in-house system was written from scratch in .Net languages. A lot was written in VB.Net, which is an absolutely different ball game to traditional VB6, but most is written in C#. I know of very little business software written in VC++ since the advent of .Net, but then maybe you travel in different circles.
I have also seen a lot of software written in managed code that is sold to other parties, be it ASP.NET or desktop apps. In fact, i *work* on a product that is sold to third parties and is extensively written in C# and VB.NET. There’s no native code what so ever.
Sorry, but you need to get out more. If you don’t understand what has gone on, read this:
http://www.joelonsoftware.com/articles/APIWar.html
Joel explains it better than I.
Very little is written in VB.Net these days. All the existing VB code has been lost which means that new code is less likely to be written on top, and why use VB.Net when you can use a proper .Net language like C#?
Where have you been? The controversy of VB.Net amongst existing VB developers has gone on for years. The fact is, Microsoft doesn’t have a RAD environment for .Net.
That might be your experience, but I’m afraid that code running within a .Net environment makes up a very, very, very small proportion of all the code running on Windows today.
You might see some new stuff written with it, but you’re not going to see an existing VB application opened in Visual Studio 2008, compiled to run in a .Net environment and maintained from then on in Visual Studio 2008. That’s the crux of the matter.
I’m not particularly interested in what you work on, because I’m afraid you’re in a minority. You see few shrink wrapped products being developed with .Net, because most of them depend on existing code, and if you’re selling development components to companies I think it’s a fairly good bet that they’re accessing your .Net components from COM.
I cannot think of a single reason why one would code in C# and VB.Net, other than to give the impression that VB.Net actually has a purpose ;-).
Joel explains it 4 years ago? Hmmm… well I’m afraid he was wrong on that one.
I started coding in Delphi in 1996. I continued to use Delphi till around 2004 (though I did some DotNet), where I started to migrate to .Net and C#. All the code I’ve written in the last 4 years has been .Net, except when maintaining a legacy product which was shelved but required minor updates every so often. (This was contractual, not through wanting to maintain it.)
No one uses WPF. True. Winforms is ubiquitous in Europe.
Ufortunately that is complete BS. Two major companies I’ve worked for were misguided enought to use VB.Net. This was legacy holdover from retrained VB6 devs, yes, but it happened all the same.
Because your IT manager is an idiot? I don’t know either. It happened though.
Migrating VB libraries is fairly trivial if you are worth your money as a coder. It’s more problematic to migrate GUI code, but then it is in all such code transitions.
Coding in realworld shops. Where have you been? You seem to be fairly clueless about .Net in general.
Um.. I don’t do VB legacy coding and never have. Maybe I missed the party?
Okay, now you are speaking complete rubbish. I give in speaking to you, you’re trolling for the sake of it and it’s sad and rather unimpressive.
Yer, and nothing has changed. The passage of time hasn’t made it less true I’m afraid.
Yet again, you’re in a minority. The vast majority are maintaining a lot of existing code, and they’re not writing new stuff unless it builds on that legacy code.
Just a pity Microsoft is deprecating it. What will happen? Who knows? Why couldn’t WPF be backwards compatible? Who knows?
What return on investment did they get from that? It’s exceptionally difficult, expensive and rather pointless to retrain existing VB developers in VB.Net, because the only similarity is the name – VB. They can’t bring their code with them.
Not sure what that’s a reply to, but if you’re saying VB.Net actually has a purpose versus C# then you are misguided. They both have exactly the same language features and compile to exactly the same IL. The only difference between them is syntax, and you use C# on that basis because it is the main language .Net is developed for and has no distinct advantages itself.
What twit spends time and money migrating VB libraries just so they can do the same thing but run in a different environment?
1. VB.Net is totally incompatible with VB, and Visual Studio will not work with existing VB code. Migrating the code is long, expensive, requires a lot of testing and is ultimately pointless because it gets you nothing. It doesn’t make the applications run better or faster.
2. Moving to .Net implies writing code from scratch and using some God-awful interop technology that you would think only Java people are crazy enough to use to get access to legacy code. It introduces a lot of problems that shouldn’t be there, especially when it is deployed.
3. If you think 1 and 2 are trivial, seek help.
You haven’t I’m afraid, and it’s a trap a lot of developers fall into. They start reading too many magazines, going to too many conferences and get completely caught up in writing lots of new code that ceases to be their problem when they walk out the door.
Errrr, there you are then.
He, he, he. Since you don’t know anything about classical VB, or indeed any legacy applications that aren’t your problem, VB was a RAD environment that was designed to be object-oriented in nature but didn’t have a lot of the object-oriented features that made rapid development difficult. Many people simply don’t need them, as Joel pointed out. VB.Net, on the other hand, is a full object-orented environment designed to be used in an object-oriented development cycle.
Why not?
Look at SharpOS:
http://en.wikipedia.org/wiki/SharpOS_(operating_system)
sun uses how much java in Solaris?
Yer, and look at the state of the development landscape on Sun’s client and workstation systems :-). Confused, disjointed and not something you feel confident developing on at all.
Edited 2008-10-02 13:09 UTC
The lack of usage of java in the OS has nothing to do with the quality of the dev environment on their client and server systems.
This is getting away from C# but:
Java was never designed to be a multi-language run time framework that was set to be the central framework used to develop applications for the Solaris ecosystem.
.net is set to be the central framework used to develop applications for the Windows ecosystem. it is more cohesive than Java’s mess of a framework and a lot more developer friendly.
I didn’t say that it was, but it’s a question of what direction Sun wants for this environment. If it’s Java then lack of Java usage is a problem. The problem is that Sun just doesn’t have a coherent development and deployment environment for their workstations, but they have been promoting Java as the solution. Unfortunately, there is very little in the way of Java components actually written, let alone pre-installed, to program for a lot of things in their OS and in their chosen desktop environment.
The parallels with .Net are there, except .Net isn’t quite so bad. However, .Net is currently a constantly moving target that runs in parallel with Windows and the current Windows API.
Almost every business product MS has uses .net in some way, and almost every new product they make is done in .net. There is no real business case in re-writing most of their software from the ground up in .net for no other reason then maintainability and futureproofing, for them or for anyone else.
Then why can’t Microsoft’s customers take a classic VB project, or a VC++ 5 or 6 application, open it up in Visual Studio 2008 and get it to compile and run in a .Net environment with very little, if any, code changes? Why is Microsoft asking their customers to do something that they themselves admit is a waste of time and money and is not backwards compatible?
I don’t think anyone is asking people to do that. MS released a new version of the WTL awhile back that had vista bits that only got into .net natively a few weeks ago when 3.5SP1 came out. There is still a large amount of legacy VB/C++ apps out there, and a large community of people around them. .Net is for new development. I wouldn’t doubt you if you said you saw some marketing schlock that said otherwise, but nobody with any sense would take that seriously, even microsoft itself.
The Alaskan state government for one Some federal government branches for another.
C# seems like such a poorly chosen name.
Microsoft should have just called it what it REALLY IS, having failed to corrupt the Java marketplace with proprietary extensions and strategic omissions in their horrible J++ product, Microsoft has simply created a copy of Java, threw in some features borrowed from Delphi, and came out with a new name and a familiar marketing approach.
It would seem like something along the lines of: “Microsoft Cafe”, “Microsoft Brew”, “Ground Rounds”, “Strange Brew”, “We have a java too neeiner neeiner”, etc.
Edited 2008-10-01 16:42 UTC
I disagree with you.
I am not a Microsoft fan and I am actually a Java developer, but I consider C# a good evolution over Java, improving in several aspects, from small to larger ones:
1. Though I do not like the idea of “properties”, they improve the developer productivity and the program readibility.
2. Primitive types autoboxing is far better than the Java’s, you can create a List<int> in C#, but in Java you must to create a List<Integer> using the wrapper class.
3. The type erasure is a big mistake on the generics implementation on Java. C# implements generics support from the CLR and that’s nice.
4. The C interoperability mechanism in C# [PInvoke] is better than Java, it is easier to use and you do not need to create a wrapper DLL around the C functions you must to use.
5. Support for enumerated types and custom properties [annotations] is built from C# 1.0; in Java they added such feature since Java 5 due to hardly competition with .NET.
And about the name… is just great!! C is the language, C is the musical note; C++ is an “increment” to C… and C# is a semitone upper to C… really nice.
Do not read me wrong, I am not a C# advocate, and I like Java, but we cannot speculate saying Java is better for the simple fact of being.
Of course there were improvements over Java. Microsoft could look at Java, copy it, and make improvements where necessary. It wasn’t like they came up with the improvement by themselves either. There was a lot of talk at the time of things Java could have done better and many of those things made it into C#. I don’t mean to say that C# is worthless (I don’t particularly like it or Java, but I think both have some value), but it isn’t anywhere near the greatest advance in software development.
I worked with many of the very early versions of C# prior to its first release, it was embarrassing how exactly like Java C# was. I remember the first time I reviewed some preliminary documentation for C# thinking to myself, “Wow Microsoft, you changed ‘main’ to ‘Main’. Way to make it your own…”
I like the parent poster’s names for Microsoft Java, but I always thought Microsoft should have called it “Me2”.
Well it’s not so bad.
C# is more like C++ than Java. It’s C++ with a managed VM and ideas culled from Delphi. C# shares a lot less common syntax with Java than it does with C++ really. It just implements a lot of the borrowed Delphi ideas in more of a C++/Java fashion.
Having said all that, C# is actually a pleasant and productive language. It isn’t crippled as Java is with its obsession with try/catch and odd MVC based GUI nonsense. C# lets you do all that if you *want* to, not because you **have** to.
Then again, my personal pref, YMMV.
Actually I think Swing is the best designed UI toolkit ever!
I guess it’s the only one you’ve used then.
No, I worked with several UI frameworks including System.Windows.Forms, Qt and GTK+, and in my humble opinion, the way Swing was modelled is pretty good and far better than their competition.
Ah! I worked also with MFC, and it really sucks!
Edited 2008-10-02 14:45 UTC
Nah… Swing sucks compared to Qt or wxWindows, I think. I always thought OWL was a pretty good library too; back in the day anyway.
Umm, how can you say Swing sucks when Swing is closer to the design spirit of OWL than almost any other toolkit out there. OWL rocked compared to MFC, unfortunately Microsoft delayed licensing Win32 to Borland which destroyed Borland’s chances of competing – nothing new here, that’s always the way MS rolls (and we’re seeing glimpses of it from Apple as well).
Qt and wxWindows are hideous in that that use preprocessor cruft to get stuff done, so I can’t see how they could possibly be superior from a design point of view. Especially now that Java2D (and Swing as a consequence) is completely hardware accelerated with pixel shaders (and no change required to the source- or byte-code of any application!).
Incidentally, C# was originally a project called “Cool” and came directlyu from Microsoft’s Java implementation, though they don’t want to mention it since they lost a court battle with Sun over use of the term Java.
It might be the case for clients, but in my experience writing native DLLS to be wrapped I’ve found C++ -> C# far more fraught with pitfalls (pinning nonsense and all the non-standard C++ macros required) than the equivalent JNI (Java Native Interface) -> Java coding (which initially looks daunting but is actually very straightforward and relatively simple).
I won’t start on about wrapping .so/.jnilib since MS C# can’t do it but Java can (important with the 20% computer sales that Apple are surging to).
Edited 2008-10-02 06:44 UTC
I wasn’t aware that Java has anything like LINQ.
As Anders noted: C# 3.0 is the first version in which that group is trying to push the state of the art forward. This matches well with Joel On Software’s 10 year rule or the usual Microsoft Version 3 rule.
Sorry, but C# is much more than that. It is a very well thought out language that fixes problems that Java had and makes it a lot easier to deal with common design issues.
Politics aside, J++ was not a horrible product. Those extensions were sorely needed advances that couldn’t happen in the glacial JCP, it was the best IDE for years, and it was faster.
You could say the same thing to sun, why call it java when the differences with C++ are more stylistic and omissions then anything else?
And C# borrows features from all over, python features being far more notable then those brought over from Delphi.
I beg to differ. I remember when Visual J++ came out. One of the “highlights” of J++ was the WFC – the Windows Foundation Classes. Basically, WFC was an MFC for Java. It allowed J++ developers to develop Windows-only applications in an MFC fashion. As an MFC developer, I thought that was amazingly foolish. If I wanted to develop MFC applications, I was going to use MFC, not some wierd Java/MFC kludge. And if I was a java developer, there was no way I was going to give up the platform-neutral appeal of java to start creating Windows-only apps. To me, it looked like a total dead end – and I was right. Visual J++ started down a bad road, that fortunately dead-ended very quickly.
“I definitely think that there is a space for functional programming today, and F# is unique in being the first industrial strength functional programming language with an industrial strength tooling language behind it, and an industrial strength platform underneath it.”
Have this guy ever heard of… Erlang ? Hard to make more “industrial strength functional programming language with an industrial strength tooling language behind it”… I bet Joe Armstrong at Ericson would love this quote
Kochise
Marketing men and PR people have only heard of products that existed from today onwards. The only history is their product’s history
The author of three programming languages is hardly a mere ‘marketing man’
Did you create a compiler for Pascal and call it TurboPascal?
Did you create J++ [no politics, please] or C#?
Were you the main architect of Delphi early versions?
Anders Hejlsberg is a very respectful guy, and if you read the article, you can see the personal quality he has… He is a personality, but he is happy “because Microsoft confided in him and gave him the opportunity”…
Anders Hejlsberg is a wise guy, at least I bet so. Yet I find ‘strange’ that he ‘missed’ a concurrent language (to say the least about Erlang) that exists for 20 years now !
Would F# be able to run a complex engine such like the Ericsson AXD301 ATM switch with industrial real-time performance, fault tolerancy, hot code swaping like Erlang currently does ? After all, Anders states that F# is the “first industrial strength functional programming language”…
Kochise
Except he is neither.
When asked for his opinion on standards, Hejlsberg replied:
It’s nice the hear support for mono from inside Microsoft.
Edited 2008-10-01 19:56 UTC
I liked the tone of the article. Anders seems like a nice guy. It almost made me feel sorry for my diatribe against C# ( http://www.curly-brace.com/favorite.html )…
You sir, are nothing but a misinformed troll. Virtually everything you’ve mentioned in your last few posts is just flat out wrong. It would take me an hour just to correct all the factual inaccuracies you’re giving. I honestly don’t know where you are getting your information from, but I’m inclined to think you’re just making it up.
FACT: COM is dead in IT. Legacy components exist, but the majority of companies have long since moved on to newer technologies. COM is ANCIENT history. Components have indeed either been rewritten, or have been wrapped. I’d like to know where you get the notion that deploying COM interop is anywhere even close the nightmare that was COM deployment? You deploy the interop assemblies, and you’re basically done. All of the COM registration information is embedded in the manifests themselves. You simply deploy the assemblies and are done with it. I’ve done this literally hundreds of times, and so long as the COM components followed MS guidelines, there have been no major issues.
FACT: People DO want interop, for all of the reasons that you yourself have mentioned. Had .Net been released without interop, that would have been the nail in the coffin right there. MS has always bent over backwards to provide backwards compatibility, and interop is no different. No one wants to ‘open their code in a new version of Visual Studio and compile it’…perhaps you’ve never heard of black box development? There is no reason to even mess with older code if it was written correctly to begin with.
You misquoted me again. The correct quote should be that only 2% of IT departments are maintaining existing COM components. As for suggesting that I work for a living, are you kidding me? I’ve got a decade in the software industry, and 8 of those years have been 95% .Net development (and 2 of those actually working for Microsoft). I have written and deployed more production code than you’ve probably even read as is oh so evident by your complete lack of knowledge of how IT really works.
Yes. Several times. I’ve never outright asked him for permission to directly quote him, but maybe I will.
You’re wrong again. They do not compile down to the same IL. In many cases, the IL is actually quite different. VB has plenty of different features that lend itself to more RAD style development. The two languages have diverged quite a bit over the years actually.
Seriously? Classic (not classical) VB was never designed to be OO. It didn’t support inheritance for crying out loud, which is the core tenet of OOP. It was an event driven language largely built to provide a simplified model for programming against COM. And that’s it.
You’re asking the wrong question. The real question is, why would they want to? MS has gone through great pains to ensure that this very scenario never has to happen. And it rarely does, so long as the legacy component adheres to MS guidelines.
There is nothing I hate more than people who state factually incorrect information as if it is fact. Perhaps most people around here can’t see through your bullshit, but anyone with any real world IT experience can smell it from a mile away.
What is it with this guy Segedunum? He is so negative to everything. Why not being positive sometimes?
Another fact is that a lot of software-producing companies have their main focus somewhere else. For instance, they are delivering software to operate a piece of hardware, or they have algorithms for analyzing certain data which are packed up in some nice GUI app.
These are usually not the kind of companies who write stories in .NET magazine, or post on OSNews. Each time they grudgingly send their software team on a course to learn about the latest tricks in “software deployment” or “advanced .NET interop” only to find out that this info is outdated less than a year later, that’s a major PITA.
Keep in mind that where you may think “this technology is already half a year old – I can’t imagine there’s anyone left _not_ using it”, there are companies who make stuff which is supposed to last for 15 years or so. If they jump on everything which is “hip” now, you can bet that they can’t find anyone remembering how to fix it ten years from now.
COM is far from dead in those areas.
I am not the only one pissed off at MS complicating things “for my own good”. Recently I tried installing a simple COM DLL on a new machine. To my utter surprise, a simple regsvr32 didn’t work anymore. Google for “manifest hell” for more information.