Anders Hejlsberg is not resting on his laurels. He’s off solving a new problem: Finding a way to query XML and other data using .Net-based programming languages.
The Father of C# on the Past, Present and Future of Programming
About The Author
Eugenia Loli
Ex-programmer, ex-editor in chief at OSNews.com, now a visual artist/filmmaker.
Follow me on Twitter @EugeniaLoli
63 Comments
-
2005-07-16 4:34 pm
all I have to say is that i still use Ctrl-shift, shift-insert to copy/paste and it’s that way for over a decade thanks to turbo pascal , it had one of the best IDEs i have ever used.
> Ahh, so Sun patented the “idea” of Java? No, I didn’t think so. There is no stealing involved unless you have a twisted definition of the word.
M$ didn’t patent anything, it would be against their principles. They made a shameless rip off of Java in a form of C# though. M$ is the master of ripoffs.
-
2005-07-16 4:27 amn4cer
Funny how Java 5 “ripped off” many of the features offered by C# and .NET. Developers have been asking Sun to implement some of the features for years, but Sun only did so after C#/.NET did so.
-
2005-07-16 12:29 pmg2devi
Actually many of the new Java 5 features were around for ages. Templates were first implemented pretty much at the beginning of Java in research versions of Java. At the time Gosling didn’t want to add it because he wanted the dust to settle on C++ templates so he could learn from C++’s experiences and implement only the best features of templates. XDoclet has also been around for ages. I’m not really sure which came first, XDoclet or C# attributes, but I believe that Aspect Java predates both. As for the for syntactic sugar, Perl/Python/Ruby are probably more inspiration for this than C#. And so on.
But you’re right, Java did get inspiration from many other languages, and so did C#. C# focused what it found inspiring on Java, VB, and C++ (not just Java).
But big deal. What counts is *how* it uses it’s inspiration. C# follows that C++/VB/Perl philosophy that if a feature is used often enough, it should be in the language (language complexity be dammed) and that portability is an issue left to 3rd party packages. Java has the C philosphy that given the choice between adding something to the language or adding it to the library, we should add it to the library and that portability through a good enough platform layer should be a goal of a language (native looking GUI interface be dammed).
-
2005-07-16 7:15 pmrayiner
Actually, the C++ philosophy is precisely the opposite. That’s why we still don’t have lambda forms or a proper metaprogramming facility in the language — they want to add those all through libraries built on the template mechanism.
-
2005-07-16 8:21 pm
> Adopting ideas that the programming language research community has been working on and with for decades isn’t “stealing.” About the only thing that Microsoft is “stealing” is mindshare from other languages and platforms
The only mindshare .Net is stealing is the mindshare from VB. Other than that Java is still a much more popular choice out there than .NET and scripting languages like Python and Ruby are used in a different problem domains to compete with .NET. Microsoft BS press releases claiming that .NET is gaining on Java are absolute garbage, there are at least 1.5 times more Java jobs than .NET and the last time I checked the margin actually widened. It looks like the .NET marketing/hype machine is fully deflated by now, so I don’t think things are going to improve for .NET.
-
2005-07-16 4:39 amjapail
Simply because Java is still popular doesn’t mean that it hasn’t ceded any mindshare to .NET. I’ve known people that have transitioned or simply ported services, for instance. .NET is gaining people from various areas.
> Simply because Java is still popular doesn’t mean that it hasn’t ceded any mindshare to .NET. I’ve known people that have transitioned or simply ported services, for instance. .NET is gaining people from various areas.
It looks like people running from M$ in droves recently and that definitely effects .NET share. Prolifiration of J2EE opensource projects is putting a lot of pressure on .NET already. You can hardly justify paying thousands of dollars for the “privilege” of using .NET any more. Open source J2EE containers and IDE’s can do better job than .NET accross the board and without vendor lockin. You must be serously addicted to M$ kool aid to justify staying with .NET.
-
2005-07-16 8:09 amjayson.knight
No business doing any serious enterprise development uses any of the free stuff though; they go with the heavyweights (Bea, IBM, etc) for their app servers, and not only are those platforms fragmented (vendor extensions), they are horrifically expensive compared to their MS counterparts. No one is running away from MS; if anything we’re running back now that they have a serious contendor in the enterprise development realm (meaning, not legacy VB).
-
2005-07-16 12:18 pmnathan_c
No business doing any serious enterprise development uses any of the free stuff though; they go with the heavyweights (Bea, IBM, etc) for their app servers, and not only are those platforms fragmented (vendor extensions
Are you so sure about that? Our business and most of our clients use free and open source J2EE tools (contains and development tools). And, yes, we do serious enterprise development. We use the open source projects primarily because they are actually very reliable, and they are extremely extensible and moldable. Plus, believe it or not, with free support that you get from community forums, coupled with any commercial support you would need to buy, these tools are far better suppored than many closed-source proprietary tools of the same type. They also tend to stick to the spec much better (ironically enough).
The free part is just a plus, and we would probably go with these tools even if we had to pay for them … there’s really no substitute for having the source code if you are building enterprise applications on top of these tools. Major vendors have offered the source code to high end tools to their customers for decades specifically for this reason. Why do you think most of the high-performance compute clusters are being run on linux today?
This isn’t to say the MS isn’t a serious contendor. It is, and .NET is a very powerful framework that is really useful, but you shouldn’t spread your assumptions about who uses what for serious enterprise development.
-
2005-07-17 1:15 amAnonymous
No business doing any serious enterprise development uses any of the free stuff though; they go with the heavyweights (Bea, IBM, etc) for their app servers, and not only are those platforms fragmented (vendor extensions
The company I work for (me make an integrated suite of medical software) was previously an MS-only shop. Recently, we switched to Java to avoid vendor lock-in. So far, it seems to be working, as we’re now making the transition from Websphere to JBoss without too great a fuss.
If a company is silly enough to code heavily with vendor-specific extensions, that’s their problem. All you have to do is watch what packages you’re importing.
-
2005-07-17 1:20 amAnonymous
And I should also mention that we seriously considered .NET, since we had so much Micorsoft experience, but we discovered that it wouldn’t scale with the massive size of our enterprise apps, though Java would.
I have to agree with Lumbergh on this one. Microsoft didn’t really “steal” anything. Microsoft simply took a formula that Sun had proven worked and used that to make C#. It’s kind of like how you see very similar movies come out within the same year (eg: Deep Impact and Armageddon). One film shows what the audience will eat up, and everyone moves in that direction.
Yeah, but Java framework is tied to the Java lang. unlike the .net that is not tied to C#. The nice part is that the os api set is better left to MS to do while individuals can create their own programming language to hook into .net like Boo for example. The inability to create own os api stops potential users from using a prog. lang.
-
2005-07-16 8:36 amramunas
Java framework isn’t tied to Java language, there plenty of other languages that can run on JVM and can use Java class libs, e.g. Jyphon, Kawa, Bigloo etc. There are much more languages to JVM than for CIL.
Both frameworks aren’t well suited for dynamic scripting languages like python, perl, this is one of the reasons why perl6 will use parrot as their platform.
-
2005-07-16 8:58 amRodrigo
>>Both frameworks aren’t well suited for dynamic scripting languages like python, perl, this is one of the reasons why perl6 will use parrot as their platform.
ramunas, Boo is going fine, thanks.
> Yeah, but Java framework is tied to the Java lang. unlike the .net that is not tied to C#.
Ha, this is the biggest myth about .NET. Multilanguage support in .NET is something that goes onto data sheets, but has very little real application in the real world — 99.9% of all .NET project are coded in C#. And BTW, multilanguage support is also available in Java, just check Jython (Java implementation of Python), Groovy, Rhino (JavaScript in Java), Jackal (Tcl in Java) just to name a few. There is not a single thing .Net can claim over Java/J2EE, Java/J2EE is superior on pretty much every count.
-
2005-07-16 6:27 amAnonymous
After your incredibly commentary I’m suddenly compelled to stop developing with Boo and Nemerle and… wait… wait, nevermind, its passed.
“Multilanguage support in .NET is something that goes onto data sheets, but has very little real application in the real world — 99.9% of all .NET project are coded in C#”
*smack*
“M$ didn’t patent anything, it would be against their principles.”
*double smack*
“scripting languages like Python and Ruby are used in a different problem domains to compete with .NET.”
*punch*
“It looks like people running from M$ in droves recently”
*slap*
“There is not a single thing .Net can claim over Java/J2EE, Java/J2EE is superior on pretty much every count.”
*FUD*
>Finding a way to query XML and other data using .Net-based programming languages.
How about adding XQuery back into the BCL?
Having to pay the money means that Microsoft stole — “illegally used” if you prefer — technology in Java to make .NET.
This was one of the big points of Sun’s lawsuit against Microsoft.
So Microsoft makes the big payout and .NET is free and clear.
I find it remarkable how little thinking ability some people have. Did Microsoft want to pay Sun $2 billion? Of course not. They had to because .NET was basically a clone of Java that was made illegally. In order to enable .NET to live without constant lawsuits, Microsoft had to buy Sun off. It is that simple.
Microsoft will never go down in history as an innovative company. They will go down in history as a company that operated their business illegally, used thuggery to get their way in most things, and stole most of their technology. In short, “the standard oil of software”.
-
2005-07-16 10:59 amAnonymous
>Did Microsoft want to pay Sun $2 billion? Of course not.
Well actualy YES, Microsoft hat lots of lawsuits against them at the time. This was just after the DOJ thing and they wanted to wash teir hands the only whay they knew how. With lots of money.
As anyone who has really developed for .NET knows, Microsoft did not even achieve cross-language compatibility between their own .NET languages, much less third-party languages.
For example, C# is NOT implemented to the CLR. So you can make classes in C# that you cannot use from VB.NET. Microsoft even posted some of these classes to their “gotdotnet” site.
Some things will never change at Microsoft. As with the old Windows and thousands of private API’s that allowed Microsoft to build good apps while everyone else floundered, there is the same thing going on with .NET. What Microsoft can do with .NET vs. outside developers is not equal.
Microsoft never competes on merit. They never do anything better than the next guy. They spend all their time sliming you with sweet talking lies while they are busy stabbing you in the back. It is their credo.
-
2005-07-16 9:25 amjayson.knight
*knowing that I shouldn’t feed the troll*
Please provide an example, and I guarantee you any C# developer worth his salt could easily make it 100% CLR compatible for any language built on top of the CLR.
If anything, quite the opposite is true; VB.Net violates the CLR more than C#. Have you really developed for .Net?
-
2005-07-16 10:11 amAnonymous
Of course he hasn’t, but it’s cool to try and look credible and bash MS! The CLS very clearly defines how to make any language output CLS compliant.
>>99.9% of all .NET project are coded in C#
Do you have anything to substantiate this claim?
I don’t know about your part of the world, but I see a lot of people using VB.Net…I wuold say at least 30%.
I hope your basis for claiming Java’s superiority are better supported than that, because I gotta confess it sounds a bit like fanboy talk.
Java is a ripoff of Objective-C + a garbage collector
http://www.cs.umd.edu/users/seanl/stuff/java-objc.html
-
2005-07-16 4:39 pmAnonymous
> .NET = lock in
Awesome, that must explain why our overpriced no vendor lock in standards-based Java solutions always end up locking us into a particular vendor for functionality, support, extensions and upgrades. Welcome to the real world where Java specifications are so poorly defined especially with respect to interacting with other components, that every idiot has a fully ‘standards compliant’ implementation that is incompatible with everyone else’s implementation without the user having to sort through piles of BS (read: spending more time to make them work together than actually implementing their own application. oh, and throwing stupid amounts of money at ‘consultants’ to suggest using more ‘standards-based’ frameworks that further obfuscate everything and provide more exciting oppurtunities for you to be locked in) just in order to make them interoperate properly and have everything break when something changes.
So, to you I say, Java = standards based marketing bullshit with hidden lock in. And there lies the biggest difference between Java and .NET. .NET is marketed as what it is, Java is marketed as what it isn’t. When your marketing revolves around ‘standards’, ‘no lock in’ and ‘freedom’, it just means that your product is completely superficial and has absolutely no real merit over competing products.
Sun could help us developers a lot by pulling their collective fingers out of their ass and stop adding to the BS ladden peasoup that is Java and start cleaning it up first. Of course, they won’t because 1) the ‘community’ would whine too much about Sun’s “control” and 2) Java solution vendors wouldn’t be able to dazzle and confuse managers with their marketing hype BS into making stupid decisions that end up in lock in anymore.
It’s always fun to be brought onto a project that makes use of “best standards based practices and technologies” and discovering after sweeping away the useless marketing tripe, that it uses one of the absolute worst possible and most contrived solutions for the problem. All conveniently suggested by the Java marketeers. Am I bitter? Why yes, but only because I’m the one that has to fix up all the stupid BS that goes into our system and make it work. Java would be great if it weren’t for all the bullshit that’s built up around it. I don’t give a toss if something is proprietary, open-source or whatever the hell. Does it work well? Is it ideally suitable? Does it provide any real value (and I don’t mean just $$$) to us and the client? No? Then get out.
-
2005-07-17 12:20 pmAnonymous
.NET = lock in
If you use .NET, then you gotta use Windows (until mono is a viable alternative). I call this lock in. Devs should all care about portability, it’s VERY important, and you don’t seem to care.
If you do web services, then why not python? j2ee?
-
2005-07-17 2:19 pmRodrigo
Pardon me but I think portability is sometimes overestimated. Sure it’s important for some projects, but not all types of projects. How often does people really switch server platforms etc?
Depending on the type of project, expected life cycle of the app, cost and time constraints etc, portability becomes a secondary or even redundant issue.
I wouldn’t discard .Net just due to portability issues only. For example if someone wants to develop an intranet app to talk to SQL Server and Office, it would be hard to convince the person not go for ASP.Net
It is funny to see Sun going from a position where they saw their language taken from MS and now they are the ones who actually are copying MS’s work.
I also would like to ask what is innovative about Java… i can’t see anything.
And if Java is a multi-language platform where is the intermediate language? Is there any assembler specification? Well boo, i can get python as a multi-language machine too. I can do that with perl and even visual basic. It’s not what you can make with it. It’s how easy you make it.
I can port linux to x-obscure machine but that doesn’t make linux portable if i can make the same thing with netbsd in 1/10 of the time, capiche?
Java sucks as multi-language platform. There is a reson why Jython runs many times slower than Cpython and IronPython beats Cpython hands down.
This is a reply to someone stating that cross-language support in .NET is a myth. Uh? Pardon?
Well, I can’t say I tested all .NET supported language, but I do lots of C# and VB.NET development. Never found any incompatibility among them. I definitely prefer VB.NET because it’s more productive but I have to deal with lots of C# code plus there are a (very) few things which I prefer to do using C#. I wrote many modules which needed to interact with C# applications or VB.NET ones and nothing happened. I used LOTS of libraries (assemblies) developed in C# or VB.NET and nothing happened.
Now, I didn’t do any test using different languages like Boo, Nemerle and so on, but the two major languages interoperate like a charm.
Also, stating that 99.9% (or the like) is using C# to develop on .NET is unsubstantiated. I agree that perhaps 30% developers are VB.NET ones coming from VB developers community which I believe is perhaps one of largest community. Most of them didn’t switch to VB.NET (that’s a fact) but some did.
Now, one can like .NET or not (personally, I do) but should avoid temptation to spread unsubstantiated information. As I said, I never meet a case where two assemblies from different languages (C# or VB.NET) didn’t cooperate like a charm.
-
2005-07-16 7:36 pmAnonymous
I can tell you from experience you can get Boo and Nemerle to interoperate easily between themselves and other languages like C# and VB.NET.
Its not really as hard as some people would have you imagine: exploit the your favorite language’s functionality as much as possible *internally*, and make sure the only APIs you expose to the outside world are CLS compliant.
This lets you keep the wild productivity-savings in your language of choice (that’s a GOOD thing), and lets you offer up your APIs to other languages at the same time, also a GOOD thing.
Delphi is still the best, and Anders helped create that also.
They should make C# act more like Delphi for database development.
It takes me minutes to access any database I want with Delphi, and much much longer with C#.
And C# only supports disconnected datasets for GUI design, while Delphi has the very nice Tdataset.
.NET takes a back seat to Java/J2EE in pretty much every respect. Lets review:
Java is better than .NET because (to name just a few):
1. Much more open and does not have a vendor lockin
2. Runs on muliple platforms and has multiple vendor implementations
3. The entire industry supports it with the exception of only M$
4. Much better performance and scalability than .NET
5. Much better track record in regards to security and stability than .NET
6. Much more mature than .NET
7. In case of server side middleware can be as cheap or as expensive as you want it to be (from high end commercial implementations to free OSS application servers).
8. Plethora of IDE’s and development tools on the market that are of equal or better quality than VS.NET
.NET is worse than Java/J2EE because (to name just a few):
1. One vendor with expremely poor vendor lockin record
2. One expremely poor OS platform (Windows) it can run on
3. One extremely poor applicatino server platform (IIS) it run on
4. Only M$ is pushing .NET, other industry heavyweights avoid it like black plague and provide nothing more than just interop
5. Poor scalability and performance, once you go beyond two processors, .NET sucks ass!
6. .NET is really expensive to deploy compared to OSS J2EE application servers deployed on Linux or application server offerings from Sun for instance
7. .NET is expensive to develop, you have to shell out for each VS.NET developer license before you can do anything useful (compare that with NetBeans and Eclipse).
-
2005-07-17 1:17 amAnonymous
Mono is .NET’s only saving grace. Hopefully that project won’t implode from litigation one day.
All this java guys talking about scalling LOL have you ever done anything in Erlang? Java is a toy for distributed apps… Saying that Java scales only show your poor understanding of what scale really means.
The Microsoft employees seem to have voted all my posts into the red.
But I am still waiting for an answer.
If .NET/C# was not an illegal Java rip-off why did Microsoft pay Sun $2 billion?
-
2005-07-17 4:29 amrayiner
What, exactly, would be illegal about it? It’s not as if Sun has tons of patents covering Java…
“The settlement, which stems from a lawsuit Sun filed in 2002, will include Microsoft continuing to support Sun’s Java Virtual Machine, as well as Microsoft paying $700 million to Sun to resolve pending antitrust issues and $900 million more to resolve patent issues.”
http://www.eweek.com/article2/0,1895,1560909,00.asp
On a related note, I cannot wait for CAFTA. It is time to get some people in America that are not stone cold stupid.
-
2005-07-17 6:32 amrayiner
The fact that they paid $900 mil for patents doesn’t prove anything. What patents would Microsoft be infringing? Certainly, if .NET infringed patents, then clone Java VMs would be infringing too, no?
-
2005-07-17 6:33 amrayiner
PS, you mean “MTV generation”, do you not? Technically, everybody under the age of 70 qualifies as the “TV” generation…
It’s sort of interesting. In many ways, I see my job as making sure you keep up on what’s happening in research and academia and bridging to real-world technologies. Because when you look at functional programming languages, like Haskell or ML or whatever, it’s like, ‘Oh my’! To a lot of researchers, syntax is just a necessary incarnation of semantics. Really, what they’re interested in is semantics. And who cares what notation. You can make another one tomorrow, right?
I hope he’s not implying that the Haskell committee doesn’t care about syntax. If so, maybe he just hasn’t used Haskell enough.
– You can define new operators (and not just redefine existing ones)
– You can use functions as infix operators
– You can (optionally) use indentation to lay out blocks of code
– As monads became pervasive, they added special syntax for them
They have definitely thought about syntax (and done a good job with it). C# is more familiar to programmers primarily because it is similar to Java and C++ — not because of it’s uninspired syntax.
Microsoft had to pay the big $$$ to Sun because Anders could not make a language on his own.
So maybe you would call Anders not “Father of C#” but “Desperate House Husband with no imagination goes overboard with copy and paste”.
Shows you what having a monopoly makes possible. Steal your technology, pay them off, and go on with business.
$2 billion < 2 months of profit for Micro$oft.
Some of the stuff he talks about sounds a lot like Boo (http://boo.codehaus.org).
Really cool article! Its good to know that they’re looking forward.
I actually think that an even better world is a world where (a language) is terse, but it is still strongly typed. And I think it is quite possible to do that. Some of it, in its infancy, is in some of the type inferencing capabilities we have in C# 2.0, where, effectively, we infer the type of the variable from the way you use it. And there’s much more we can do there.
This guy should have a talk with Rodrigo “boo” Bamboo
You beat me by 7 seconds Anonymous 1
But I’m curious to what the type inference capabilities in C# 2.0 are.
I’ve always been a fan of optional or partial type declaration. It just makes sense to have type declarations in method arguments and return types, but declaring types for local variables when type inference can do the job tends to lead to uneccessary verbosity.
One of the problems with Python (to be addressed in 3k), and Ruby is that its hard (and sometimes impossible) to do stuff like code completion when everything is dynamically typed. The Jedit Ruby plugin does a great job of using heuristics and the JRuby parser to get it right a lot of the time.
I think some of the dynamic typing stalwarts probably are so adamant because they don’t have experience with type-inferred languages.
Probably the only saving grace for Java is that it has great tools(IDEs).
And sometimes people say, I think it’s OK to pay the price of no type checking to get that terser code.
Since when does Python have no typechecking?
I actually think that an even better world is a world where (a language) is terse, but it is still strongly typed.
And by “strongly typed” he means “statically typed”. http://www.artima.com/weblogs/viewpost.jsp?thread=7590
And I think it is quite possible to do that.
No shit its “quite possible”, ML-derived languages have only been doing it for what, 30 years?
Some of it, in its infancy, is in some of the type inferencing capabilities we have in C# 2.0, where, effectively, we infer the type of the variable from the way you use it.
It’s about time… For god’s sake, even student-project compilers have had type inferencing for decades now…
I imagine part of the reason certain mainstream statically-typed languages rely solely on manifest typing rather than utilizing type inference is the vain hope of maintaining some manner of conceptual simplicity, since type inference isn’t generally tractable in them. It’s possible that I’m being generous with their motivations.
Also it isn’t clear to me why your comment was originally moderated down, so I’ve taken the liberty of correcting it.
So much adoration for man who basically created a proprietary single-platform Java clone.
Incomprehensible!
I prefer Objective-C’s dynamic typing.
The reason Microsoft is so slow at evolving things is that they wait for someone else to have a good idea then they steal it.
For example:
C# = Java + 2 billion dollars paid to Sun.
Sure it is slightly cleaned up, but the basic design is the same as Java.
I would expect Boo and other systems to make the innovations and then Microsoft will come along, steal them, and use monopoly power to take all the profits of the innovations for themselves.
The reason Microsoft is so slow at evolving things is that they wait for someone else to have a good idea then they steal it.
Ahh, so Sun patented the “idea” of Java? No, I didn’t think so. There is no stealing involved unless you have a twisted definition of the word.
Java wasn’t innovative to begin with. Microsoft simply designed a similar platform to take a piece of Java’s mindshare. Boo isn’t really innovative, either. I like Python’s syntax so I have a certain affection for it over C#.
Adopting ideas that the programming language research community has been working on and with for decades isn’t “stealing.” About the only thing that Microsoft is “stealing” is mindshare from other languages and platforms.
Java is a ripoff of LISP (virtual machine, garbage collector), Smalltalk (machine independent bytecode) and C (syntax). Sun uses their power to take all profits of the innovations for themselves. Sun is the master of ripoffs.
Java is a ripoff of LISP (virtual machine, garbage collector), Smalltalk (machine independent bytecode) and C (syntax). Sun uses their power to take all profits of the innovations for themselves. Sun is the master of ripoffs.
Everything is some kind of ‘ripoff’ something else. The main difference between a proper production language and a academia inspired language is that the academia inspired language is invented to push some academic’s agenda. The production one ‘steals’ features because it’s creators (at least the sane ones) think they can make it provide real practical value to development.
http://research.microsoft.com/Comega/“