How C# Was Made 391
prostoalex writes "Bruce Eckel (from the Thinking in C++/Java/Patterns/Enterprise Java fame) and Bill Venners have interviewed programming legend Anders Hejlsberg. After 13 years in Borland and joining Microsoft in 1996, Hejlsberg now leads the development of C# language and talks about the development process, reasons some things exist in C# and some not, as well as future directions."
"Co-opt Java" (Score:2, Informative)
Re:"Co-opt Java" (Score:5, Insightful)
Re:"Co-opt Java" (Score:5, Insightful)
Sun embraced the internet years before Microsoft and looked out into the future and realized that desktop computing and huge, standalone applications were going to be increasingly replaced by device computing and small, internet downloadable applications would be prevalant.
To that end, they tried to design a language that was simple, that had built-in libraries to handle basic internet protocols and to a large extent, their vision was spot-on and Java was hugely successful.
Without Microsoft spending years trying to undercut them it's very conceivable that Java would be the lingua-franca of the internet right now.
Re:"Co-opt Java" (Score:5, Insightful)
Re:"Co-opt Java" (Score:2, Informative)
Re:"Co-opt Java" (Score:2)
Re:"Co-opt Java" (Score:3, Interesting)
Retek [retek.com] does, and it's one of - if not *the* - most popular set of apps for the backend of the retail industry in the US.
Wake up and smell the marketing bullshit! (Score:4, Interesting)
For fucks sake, man! Wake up and smell the marketing bullshit. The most innovative impressive thing about Java was that it was successfully marketed as basically the second coming (more tangibly as the solution to 10 different huge problems), all while just being another platform. Get it? They created their own platform without hardware leverage, OS leverage, app leverage, etc. It's bootstrapping by marketing.
Re:"Co-opt Java" (Score:4, Insightful)
Re:"Co-opt Java" (Score:3, Insightful)
That C# takes ideas from java is irrelevant.
Maybe you like C#, maybe you don't. maybe it's useful for your project, maybe it's not. Those are side issues -- its role as a tool is secondary.
DotNet performs the task for which it was designed very well. That task is, of course, to contain programming talent and effort within the Windows
Re:"Co-opt Java" (Score:4, Insightful)
Your comment is a fascinating insight into a fanatical mind. You may not yet be as bad as the guy that lives on the corner of my block, with the foil under his NY Yankees basball cap, but the distinction is small.
You've esentially said C# and
Wonderfull logic.
Your prison/Gates metaphor-pun is wonderfully melodramatic as well.
Thanks for play,
Re:"Co-opt Java" (Score:2)
I just stated out the true raison d'etre of DotNet. it's role as a tool *is* secondary -- to Microsoft.
I notice that you did not contradict me.
MSFT created DotNet and C# to displace Java, maintain some measure of control over application development, and reinforce their OS monopoly. Please provide proof to the contrary -- you seem to feel strongly about
Re:"Co-opt Java" (Score:3, Insightful)
Fanatical no. Cynicism spawned actions of Microsoft? Maybe.
Despite whatever wonderful attributes C# and
Re:"Co-opt Java" (Score:2)
Re:"Co-opt Java" (Score:2, Insightful)
Most companies want to dominate the market. The difference is that for the vast majority of them, market domination is a ludicrous concept.
Re:"Co-opt Java" (Score:2)
Re:"Co-opt Java" (Score:2)
Re:"Co-opt Java" (Score:5, Insightful)
Think about it... Smalltalk's main points were the single root object heirarchy, the bytecode compilation, and the large runtime library including full GUI. Did C++ have this? No. It was more "object oriented concepts ported to C" - lean and mean, machine dependant and no standard GUI. The C++ generics and the STL weren't standard when Java arrived.
Re:"Co-opt Java" (Score:2)
On the other hand, these are only means to an end. And, as stated in the early Oak/Java papers, this end was creating a language for mediocre programmers, i.e. a
Re:"Co-opt Java" (Score:5, Insightful)
Java is taking ideas from C# as well, just take a look at 1.5 with enums, yes I know they existed before C# but I think their existence in C# prompted the move.
I just find it funny that pro-MS people often don't like to hear that C# could even possibly be an evolutionary step off of Java. And unlike older languages, Java itself is still evolving. The
I've used both and the both work and they'll both change... for a while
I wounldn't try to find religion in a programming language, they come and go too quickly.
Re:"Co-opt Java" (Score:3, Insightful)
Uh, no. Enums' existence in ansi C and C++ prompted the move, given the large number of developers who work in both C/C++ and java, who know from real-world experience that enums improve maintainability and reliability of code.
Re:"Co-opt Java" (Score:2)
I dont agree. All C# does is take the widely understood OOP concept named the observer pattern and formalize it in language syntax (Delegates).
I personally feel that simple syntax is something that makes Java great. Keep the syntax simple and recommend good OOP to do things like event listening.
J++ fragmenting Java (Score:2)
Re:"Co-opt Java" (Score:5, Insightful)
As a bonus, Gtk# has the best API I've ever used in a gui toolkit.
Re:"Co-opt Java" (Score:2)
Re:oh, and what's the next release of Java have? (Score:4, Insightful)
Re:oh, and what's the next release of Java have? (Score:3, Informative)
The Microsoft CLR has support for many of these features (and others) built into the underlying framework. As a result, things like Generics in C# are about a hundred times as functional and advantageous than they a
Re:oh, and what's the next release of Java have? (Score:2)
Enums type behaviour is possible with public static final attributes.
Metadata is exactly what the XDoclet project was designed to accomplish.
Generics are not the way to ensure typesafety of a collection, encapsulation is.
Interesting Hejlsberg article (Score:5, Informative)
Interview on the .NET Show (Score:5, Informative)
More about Anders Hejlsburg (Score:5, Informative)
Re:More about Anders Hejlsburg (Score:5, Informative)
No, it most certainly is not!
First its Hejlsberg, not Hejlsburg. "Hejl" is pronounced just like "Heil", as a german would in a WW2 movie
So its "Heils-bear"
Re:More about Anders Hejlsburg (Score:4, Informative)
I should know, as we come from the same country.
If Anders would just return the favor... (Score:3, Funny)
Here's a direct link to the Artima articles... (Score:5, Informative)
How C# was made (Score:5, Funny)
Re:How C# was made (Score:2)
Re:How C# was made (Score:5, Funny)
I thought my amplifier was cool for going up to 11, but it can't compete with a piano that goes up to W!
Re:How C# was made (Score:3, Funny)
Sun Should Embrace and Extend (Score:5, Insightful)
It's well known that the C# designers paid a lot of attention to Java, but more importantly, it's also quite clear that they also spent a lot of time paying attention to the experience of developing in Java.
So while I might not entirely agree with the uncaught exceptions or the way methods aren't virtual by default, I do think it would be a good idea for Sun to take the lesson from MS, and take what is best about C# and move it into Java.
Re:Sun Should Embrace and Extend (Score:4, Informative)
Go here [sun.com] and when you done, go here [sun.com] and get it.
When you are done playing, come back and see if your post makes sense.
Re:Sun Should Embrace and Extend (Score:5, Insightful)
However, that doesn't invalidate what I said initially. 1.5 isn't a response to C# (well, maybe the enumerated types are), but seems to be kind of orthogonal to C#. It is a distinct improvement to the language, but that isn't the same thing as "embrace and extend". Those improvements don't give Java evangelists the ability to say "The C# language has no good feature that Java doesn't."
I'm also making an argument about intellectual honesty. Java (like any other piece of software) will never flower into its full potential unless the people who believe in it are willing to acknowledge the strengths of its competitors, and then adopt those strengths where it can.
It isn't a sign of weakness to do that, but a sign of strength.
Re:Sun Should Embrace and Extend (Score:3, Interesting)
Why do big companies want pseudo-compiled langs? (Score:3, Insightful)
It seems to me that big companies like Sun and Microsoft like pseudo-compiled languages like Java and those in
1) Pseudo-compiled languages are easily decompiled. If a small competitor writes an especially useful program, it is easy to see the logic by just decompiling the source code. In business programming, the business systems logic can be EXTREMELY complicated. It's easier to copy it from a competitor who has proven success. See these links for information about decompilation. Of course, the best methods of decompilation are not made public:
Java Decompilers [program-tr...mation.org]
A friend wrote this:
"I regularly use decompilers for Java classes. The last library I decompiled is TupleSpace from IBM, a library for network communication (useful if doing clustering). The result was of a shocking clarity.
"That was especially easy because the code had few local variables (in the bytecode, local variables have an identifier that is a number) and no obfuscation."
2) Pseudo-compiled languages are slower. That raises the cost of hardware. Sun makes most of its money from selling hardware. Slower software requires more expensive hardware. Microsoft makes most of its money selling operating systems. The customers most important to Microsoft are not you and I. Microsoft's important customers are the systems builders like Dell and HP. Systems builders want slow software so they can sell more hardware. Microsoft wants slow software so people buy more systems and therefore more operating systems licenses.
Because pseudo-compiled languages are better.. (Score:3, Insightful)
There will always be a place for C and C++ in places where you *NEED* low-level control over things like memory management, or where performance is very critical. But for most applications, this is simply not the case. You want a language that can do all you need it to do, and you don't want to worry about the rest of the details. Java and C#/.Net are the nex
Re:Because pseudo-compiled languages are better.. (Score:3, Informative)
You can get garbage collection and array bounds checking in fully compiled languages (such as D [digitalmars.com]), too.
And you'd better still worry about such things to a certain extent, or else you'll be throwing exceptions on legitimate usage cases when your fixed-size buffer turned out to be too small, running out of memory because you didn't bother nuking references to old objects, etc.
Re:Why do big companies want pseudo-compiled langs (Score:2, Insightful)
Well, pseudo-compiled languages is hardly a "big company" thing. Look at Python for instance. It's all over the place (in the open source world).
Re:Why do big companies want pseudo-compiled langs (Score:3, Insightful)
> decompiling the source code.
You mean bytecode, probably.
> the business systems logic can be
> EXTREMELY complicated
If it's that complicated, having a bunch of decompiled source code is not going to be that useful. You're better off programming it yourself so you understand it and can change it when you need to.
> Pseudo-compiled languages are slower.
But not _much_ slower. A $3K dual CPU Linux server can serve up a lot of Tomcat hits. Need more?
Re:Why do big companies want pseudo-compiled langs (Score:2)
You just bought a bunch of hardware; you just proved his point.
But thats not necessaraly a bad thing. Its a trade off. Hardware is cheap. Throwing hardware at the problem is very often the cheapest solution.
Re:Why do big companies want pseudo-compiled langs (Score:2)
> you just proved his point.
Not really; his point was that I'd buy a $60K E6500, my point was that I'd buy a couple of $3K pizza boxes.
> Throwing hardware at the problem is very
> often the cheapest solution
Yup, and if you can cut your development time down by using Java vs C, everyone's happy.
Re:Why do big companies want pseudo-compiled langs (Score:2)
Says the person with the dual CPU server. From the first day of Java, the proselytizers kept telling me to get faster hardware and wait for the next version. I now have hardware 30 times faster, and four major versions later, and Java STILL crawls on my system. Even purely interpreted languages like Python and Ruby are faster!
Re:Why do big companies want pseudo-compiled langs (Score:3, Interesting)
OTOH I agree that both are relative simple to decompile.
The speed will depend of your particular use, but in some cases programs in Java are faster than C programs.
Re:Why do big companies want pseudo-compiled langs (Score:5, Interesting)
Um, compiled languages are easily decompiled as well.
http://hte.sf.net is a badass hexeditor/disassembler.
Case in point, I walked through the assembly of iTunes to figure out the AES key that iTunes uses for iTMS. And iTunes was written in C++.
Yes, easily turned into assembly language... (Score:2)
Yes, easily turned into assembly language, but it is much harder to decide what the assembly language is doing than with pseudo-compiled byte code that is a collection of obvious calls to the run-time library.
Re:Why do big companies want pseudo-compiled langs (Score:3, Interesting)
I guess you've not heard of gcj, TowerJ or the other traditional ahead-of-time compilers for Java, eh?
Java is not necessarily a VM based language - that's not to say that VMs aren't useful in lots of situations. Obfuscators also often work well. Of course, if you're doing server-side code, decompilation isn't an issue at all...
Nice straw man though... ;-)
Anders leaving Borland - a blessing in disguise ? (Score:2, Interesting)
Having used both java and delphi I allways missed some sort of generics. I found Anders thoughts [artima.com] to be quite interesting. Question: is it possible to change the java generics-implementation in such a way that it would loose the limitations mentioned (and changing the
Checked Exceptions (Score:5, Informative)
Actually, Java supports both checked and unchecked throwables: the latter with the class Error. My programming style is to make throws that I don't expect to be "routinely" caught throw Errors rather than Exceptions. An Error can still be caught, but since you don't expect it, you needn't declare it.
The checked exceptions are still useful for the case where it would probably be a bug not to handle the exception, e.g. "search found no element" or "file not found". The reason for the two kinds of throwables is exactly this: you don't want to declare that every method doing division throws DivideByZero. Unfortunately, the Java library designers don't seem to have gotten it, and so there's a bunch of things like IOException that IMHO should have been Errors.
Re:Checked Exceptions (Score:2, Interesting)
NullPointerException is a runtime exception for example, and so is ClassCastException.
If you want to squash IOExceptions then just wrap them in RuntimeExceptions - ie
try {
blah;
} catch(IOException ioe) { throw new RuntimeException(ioe); }
- but I'd wager that there might well be some remedial action you can take other than this.
There are cases that go the other way - for examp
Re:Checked Exceptions (Score:5, Informative)
Unchecked exceptions should be derived from the RuntimeException class. Generally subclasses of Error are not meant to be caught ("An Error is a subclass of Throwable that indicates serious problems that a reasonable application should not try to catch" - from the Javadoc for Error).
you don't want to declare that every method doing division throws DivideByZero
That doesn't throw an exception/error at all, it returns NaN [sun.com].
there's a bunch of things like IOException that IMHO should have been Errors
IOException is something that needs to be checked. It can occur because of low disk space, broken network connections (including NFS mounts), bad character coding, etc. Even FileNotFoundException is a subclass of it.
Re:Checked Exceptions (Score:2)
I dont really see the need for two different unchecked throwables, and certainly not because of loose contracts like "you shouldnt try to catch errors but if you like you can try to catch RuntimeException". I'll catch whatever I like thank you very much.
I also dont like C#'s ham-fisted approch of having no checked exceptions at all.
Personally I would have gone with Throwable as an abstract base class with C
Nice language, bad motives (Score:2, Insightful)
Re:Nice language, bad motives (Score:5, Insightful)
C# is just a language, it doesn't lock you into Windows at all. Mono supports the entire C# language.
It's the classes you choose to use that lock you onto a specific platform.
You can't blame C# if people want to use classes that aren't available on other platforms.
Its like saying that C++ sucks because DirectX doesn't work on Linux.
Re:Nice language, bad motives (Score:2)
Is there a STL-type library under c#, and is there a port under mono? If not, it would make c# under other os's kindof pointless, if a few base classes werent implemented.
just curious..
They lie! (Score:5, Funny)
Gandalf: This is C#. Forged by the Dark Lord and his engineers in the fires of Mount Redmond. Taken by him from the hand of evil himself. All who use it are bound to him. Gates needs only this ring to cover all the lands of a second darkness... He is seeking it, seeking it; all his thought is bent on it.
Frodo: Alright, we put it away. We keep it hidden. We never speak of it again... No one knows its here, do they? Do they, Gandalf?
Gandalf: Unfortunately, yes. The power of Gates is far reaching. The innocent would use C# from a desire to do good, but through them, it would wield a power too great and terrible to imagine.
You get the idea...
missing the point, but it doesn't matter (Score:5, Informative)
But it really doesn't matter. The changes that C# made relative to Java are obvious and proven (e.g., value classes, removal of statically checked exception declarations, declared unsafe code sections). Many of them had made Sun's bug parade. All of them had been in other languages before either Java or C#. In fact, C# is, in many ways, close to Modula-3.
There seems to be another reason for some of the design decisions: patents. Sun has patents on several aspects of the JVM and Java, and if Microsoft wanted to be free of potential future claims by Sun, they had to avoid those in their own competing virtual machine.
Keep in mind that Hejlsberg is also a salesperson for the language anyway. That means that he may not be telling you the real reasons behind design decisions, but the reasons that sell the language well.
In any case, however it came into existence, C# is a somewhat better language than Java, and we should be happy about that: whether you are planning on using C# or not, it raises the bar for what is considered standard in industry. Without C#, Sun probably wouldn't even have made the largely cosmetic changes they made to Java in 1.5, and maybe the continued existence of C# will force them to fix other misfeatures of Java and the JVM in future versions. And C# (but not
worst C# drawback (Score:3, Insightful)
Each tiny crappy component, each crappy lib for C# out there on the net is sold, and sometimes for outrageous prices (a month ago seached for a plugin to generate properties from variables - something like getter/setter generator macros, so common in most Java IDEs - found it for 100$ per seat! OMG!). there is no idea of sharing, neither the source nor experience, and this IMHO will be the main cause of C# setback.
And oh, most computer literate people pronouce '#' as 'hash', not 'sharp'
Re:worst C# drawback (Score:4, Informative)
There are plenty of people working on tons of free libraries out there. The gotdotnet workspaces are pretty good place to search for things, but your best best is to follow the weblogs on asp.net.
Re:worst C# drawback (Score:4, Informative)
How about you write your own getter/setter macro and publish it there ? That is how a community is built, slowly but surely.
wrong analysis (Score:3, Insightful)
It is true that there is more open source server-side web stuff for Java than there is for C#. But, against that, you have to hold that C# actually has a full-featured, high-performance, compatible open source implementation. Also, you can get a full-featured, open-source, widely-used GUI toolkit for C#, namely G
Language/tools are secondary (Score:4, Insightful)
The truth is - existing software quality sucks. There are a few exceptions, but there are too many poor quality products being shipped everyday sometimes costing millions of dollars. The fault is seldom with the tools or the language of choice.
There are so many parts of the whole software development process that needs to be improved. With the right process, people and management it is possible to make great software regardless of the language.
When automobile engineers argue, do they argue about the quality of their cars, their features and design or do they childishly bicker about which wrench is better?
Re:Language/tools are secondary (Score:2, Insightful)
Which could crash, or foul up data (or possibly do nothing) because you're writing over the end of a pointer. A high level language will have strings as a built in type. Concatinating them will simply create a new
Re:Language/tools are secondary (Score:3, Insightful)
So because a language might not prevent every stupid mistake a programmer might ever make, there's no point trying to help any programmer ever avoid any mistake?
That makes no sense.
Of course it's always possible to break a program. The point of higher level languages is that they make it harder to break programs. This is not so they can serve as a crutch for incompetent programmers - it's so t
Re:Language/tools are secondary (Score:3, Insightful)
There is no such thing as the right process, there is no such thing as the right people, and there certainly is no such thing as the right management, because none of these things can be designed. On the other hand, tools can be designed and implemented to perform optimally, and it is not all that hard
Re:Language/tools are secondary (Score:3, Informative)
Completely true.
In a time when tools are myriad, code can be found for free, and the Internet archives and Google searches lessons and tutorials for us, software developement is crazy. And its funny and ironic that the most essential part to software developement, the developement (it's process: the drafting, coherent, problem-solving design, habitual testing and review, documentation, etc.) is seen as expendab
Why does C# have redundant syntax? (Score:2, Interesting)
Neither language allows you to create objects on the stack, so using new to denote 'on the heap' is completely redundant.
Also, why can't language designers take hints from the *productive* languages as well as the *popular* ones.
I'm not saying that good programming is a speed typing contest, but modern, popular languages require far too many key presses to get stuff done.
C
Re:Why does C# have redundant syntax? (Score:3, Insightful)
Also, C# allows the core types to be allocated on the stack. Here is a line I pulled from my code:
byte* buffer = stackalloc byte[256];
stackalloc can only be used inside an unsafe context.
Its not redundant (Score:2)
In your example, I know with complete certainty that I am creating a new "Type" and assigning it to the variable "varName". This is not the case if it used the syntax of Python. How do you know I am not calling a method called "Type"?
Scott
Re:Its not redundant (Score:4, Informative)
In your example, I know with complete certainty that I am creating a new "Type" and assigning it to the variable "varName". This is not the case if it used the syntax of Python. How do you know I am not calling a method called "Type"?
You don't know, and you shouldn't.
Suppose at first you do, in fact, instantiate a new object via the 'Type()' call. Later, during the optimization phase, you discover that in most cases you can return a reference to a pre-existing, pooled object. In Python, you can make that change without breaking client code; not so when object creation is explicitly annotated.
As to whether Type is a method, function, or class constructor, it doesn't matter as long as the returned objects implement the required interface.
Re:Why does C# have redundant syntax? (Score:3, Informative)
int i = new int(1);
No heap allocation has occurred, we've just allocated an int32 on the stack and dumped the output of the int32 constructor into it. That new keyword is really just an indicator that tells us we're calling a constructor.
And how about this:
int[] ints = {1, 2, 3, 4, 5};
That just allocated a new heap object, and there's no new keyword in sight...
(Before anyone argues that that's just like string s = "hello", it isn't... string literals are constants
Templates are strong typed in C++ (Score:5, Informative)
I disagree with that assessment. Both C# and C++ generics/templates are strongly typed. It's just that the enforcement happens in different places.
In C++, if you try to stick a class into a templated class when that class doesn't have a particular member function defined, the compiler will yell at you, just like Hejlsberg said. But for some reason, this doesn't count as type checking? Yes, template error messages can be strange (and very long) if you're not familiar with them. But that's just a lesson in "know your tools."
To me, "strongly typed" is strict type enforcement at compile time. C++ templates certainly do this.
Constraints, however, are something that I think are a generally good idea. Stroustrup's reasoning for not including them in C++ was that "Requiring the user to provide such information decreases the flexibility of the parameterization facility without easing the implementation or increasing the safety of the facility." (The Design and Evolution of C++, Stroustrup, 343).
He does, however, show an interesting way to get around this using inheritance:
template <class T>
class Comparable {
T& operator=(const T&);
int operator==(const T&, const T&);
int operator<=(const T&, constT&);
int operator<(const T&, const T&);
};
template <class T : Comparable>
class vector {
};
(The D&E of C++, Stroustrup, 344)
This technique is similar to how C# does constraints, class List where T: IComparable. One is supported and enforced by the language, the other is a natural consequence of the languages facilities. In general, I think that constraints are probably a good thing. Having an error message like "Can not instantiate class Y<T> because T does not implement z()" is probably best, and when looking at a class' declaration, it would be nice to see up front what assumptions the templated class makes.
Constraints on type parameters (Score:3, Interesting)
AIUI, the major reason many of the big names in C++ don't like language-supported constraints on type parameters is that just having "derives from this base class" isn't a sufficiently general condition for good support of generic programming.
C++ enforces any necessary interfaces at compile-time, by checking whether the instantiation of a function template can be interpreted properly with the functions available. Requiring every class that supports == to derive from EqualityComparable is just a cumbersome
What did they miss about checked exceptions (Score:5, Insightful)
Well, if you're a Java programmer worth your salt, you DON'T propagate every exception class the underlying modules might want to throw. You make your code catch exceptions rising from below and either handle them or massage them into the exception set your module exports. This is much better for the upper-level users because they want to deal only with situations raised by, and meaningful for, the APIs at hand, and they don't have to care about what would brew beneath.
If you don't want to lose exception stack information, as of J2SE 1.4, you can chain an original exception to your higher-level exception, so that everything would be rolled down nicely in a trace printout.
Re:What did they miss about checked exceptions (Score:4, Insightful)
Re:How and Why C# Was Made (Score:5, Interesting)
You're referring to Don Box [gotdotnet.com], specifically, right? I don't think it's so much that Don is pooh-pooh'ing OOP in general, it's that he feels that a service-oriented architecture is better suited to the kind of problems we face today than DCOM or CORBA. His point is that trying to use an OOP metaphor for enormous, architecturally sound remote object invocation/data transfer systems is a terribly complex task.
Also, keep in mind that Don wrote *the* book on Microsoft's COM technology; OOP has its place, but CORBA and DCOM are not really the place.
Re:How and Why C# Was Made (Score:2)
*sigh*
Re:How and Why C# Was Made (Score:2, Funny)
Another one? But I haven't finished Brockschmidt yet! :)
Re:How and Why C# Was Made (Score:2)
I'm always wary of giving credit to someone proclaiming the Next Great Thing, when they've spent the last several years as a leading advocate of the Previous Great Thing, then suddenly start finding all these previously overlooked drawbacks in the older technology when the newer one arrives. Don Box seems awfully close to that position right now.
Re:How and Why C# Was Made (Score:3, Funny)
Re:How and Why C# Was Made (Score:2)
Windows Forms was originally WFC (Java AFC extensions). Get it! All
Now do
Re:How and Why C# Was Made (Score:2)
Re:How and Why C# Was Made (Score:3, Insightful)
But say it was. Who cares? Every language is based to some extent on what came before it. The question is, does it improve on other languages? Does it have a niche that it serves better than other options?
In this case, the answer is yes. Java is horrible kludgy in a lot of ways, and yes, it's horribly slow for large applications (although, small benchmarks can h
Re:How and Why C# Was Made (Score:3, Interesting)
Microsoft was worried about java even before it became popular; for the simple reason that if a portable internet language did become popular, it would obviate the need for windows.
Microsoft did not get their hat handed to them when they attempted to co-opt java: seems to have worked ni
Re:How and Why C# Was Made (Score:3, Insightful)
Re:How and Why C# Was Made (Score:2, Insightful)
I wonder why
Re:does c# matter to any one (Score:4, Interesting)
My officemate wrote a function in vb.net on a Windows box, running via ASP.NET/IIS/Win2k. I wrote a small little C# program on my Linux box that calls the procedure on the windows box. It looks something like this:
result=addup(2,5);
with 7 being put in result. Nice and simple. Could have easily been something to add a user to a box...or I could reimplement the same function on my Linux box to add a user there and he could call it from an vb script.
It does a great job of providing cross platform calls without adding tons of overhead or a lengthy API...the libraries do all the setup/teardown instead of the programmer, and it is a lot cleaner than parsing html output.
It may not be perfect, but I'm just sporting a woody because I finally somewhat understand what the hell the nebulous
Re:does c# matter to any one (Score:2)
Re:does c# matter to any one (Score:2)
Re:does c# matter to any one (Score:2)
Re:does c# matter to any one (Score:2)
Maybe his machine doesn't have 256 megs of ram to devote to java apps.
Re:I'm sorry (Score:2)
Sheesh, who gave Bill Gates mod points?