Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Programming IT Technology

Anders Hejlsberg Interviewed On C# 381

ghost. writes: "I'm sure it's been submitted already, but here's an O'Reilly interview with Anders Hejlsberg, Chief C# language architect for Microsoft (as well as the force behind Turbo Pascal and Delphi, in the past). While my interest in C# specifically is mild at best, I always seem to learn a lot when /. gets into a good discussion about programming and language design, and I'd enjoy reading everyone's insight based on what Hejlsberg had to say." It's a good read, too -- this interview brings to the fore some of the questions about openness that people raise about C#, and Hejlsberg has strong words about his new baby.
This discussion has been archived. No new comments can be posted.

Anders Hejlsberg Interviewed On C#

Comments Filter:
  • by Mark A. Rhowe ( 216675 ) on Friday August 04, 2000 @09:23AM (#878737) Homepage
    Chief Architect of Delphi [wnfl.com] and His Team Designed WFC [microsoft.com]

    Good details on C# as described in The Register [theregister.co.uk]

  • by freebe ( 174010 ) on Friday August 04, 2000 @09:32AM (#878742) Homepage
    This is a great thing, if you have programmed with either of these two. Delphi is a joy to work with, and WFC has been described as the best (and most painless) way to program Windows. I'm expecting great things from this.

    One thing I'd like to see is a GNU C# compiler. I assume this will be worked on by those over at egcs, once the standard becomes available?

  • by chrisroy ( 197227 ) on Friday August 04, 2000 @09:33AM (#878743)
    I have to admit that when I first heard about C#, I wasn't too interested. However, after reading this article, as well as seeing some of his credentials (Turbo Pascal and Delphi), I find myself growing more interested.

    This guy definitely knows his stuff, and he had some very interesting things to say about his baby. I would almost get the impression that this guy is one of the lucky ones who doesn't represent the image of his company.

    Of course, I could just be easily fooled. Did anyone else count how many times he mentioned "innovation"? :P

  • The work that we've done with attributes -- a feature used to add typed, extensible metadata to any object -- is completely new and innovative.

    I think C# contains some pretty interesting innovations that make component development easier

    It's not as though this hasn't happened before, but the way we've applied it to the language is pretty innovative.

    We're not saying, "Now that there's only one language, there shall be no further innovations in this race."

    We want to create a platform where there can be innovation.

    Microsoft's favorite word?

    wish
    ---

  • by begonia ( 177694 ) on Friday August 04, 2000 @09:36AM (#878745)
    Rumor has it that M$ snarfed this guy from Borland for a measely $2,000,000/year. Wonder if they're over the league's salary cap?
  • Seriously, though, M$ has been doing this their whole life. PC-DOS became MS-DOS. GWBASIC became BASICA.

    Actually, Microsoft wrote PC-DOS too (well, sort of; they licensed QDOS [Quick and Dirty Operating System] from Seattle Computer but surely must have made a few changes before releasing it). PC-DOS 1.0 shipped with the original IBM PC, and MS-DOS 1.0 was identical except for the name (AFAIK) and shipped at the same time.

    Bill conned IBM into this arrangement wherein IBM paid MS for R&D, MS gave IBM PC-DOS, but MS got to keep it for themselves too and release MS-DOS in competition with IBM.

    Somebody more familiar with this stuff please correct my details.

    --

  • My favorite part:

    Osborn:
    So you can't write unsafe code in VB?
    Hejlsberg:
    No, you cannot.

    :)

    -Waldo
    -------------------
  • by humpmonkey ( 202226 ) on Friday August 04, 2000 @09:38AM (#878752)
    Here [ibm.com] is a link to minutes from a recent ECMA T39 meeting where they discuss the submission of C# and CLI.
    with humpy love,
  • Speaking as a big fat idiot :) I would ask the same question. Aside from tieing us into the whole .NET nonsense, why IS Microsoft trying to reinvent both C++ and Java? And the first response to use the word "innovation" loses...
  • Well it's really just a matter of perspective. Microsoft also doesn't find a BSOD to be "unsafe". Why else would the feature be so prominent in every one of their OSes?
  • by Stonehand ( 71085 ) on Friday August 04, 2000 @09:41AM (#878757) Homepage
    But Java ain't the end-all, be-all. There's nothing wrong with trying to develop a language that takes what they like, and discards whatever features/misfeatures irritate them.

    Even Sun does this, deprecating / adding / altering... Java is an imperfect language in flux, and even Sun knows this as demonstrated by the rate of change. I have no problem with MS also recognizing this and deciding that they'd make slightly different design decisions, which apparently they do.
  • by donny ( 165416 ) on Friday August 04, 2000 @09:42AM (#878758)
    ... and I quote:

    "In C#, enums are not just integers. They're actually strongly typed value types that derive from System.Enum in the .NET base-class library."

    Wow! Now, next time I accidentally set the colour of my car to "Tuesday", the compiler will throw a hissy-fit at me! Hooray for C-#!

    Donny
  • by BeIshmael ( 34304 ) on Friday August 04, 2000 @09:42AM (#878759)
    I think some of those comments were inspired by the initial version of the language reference that we provided to the public. Microsoft wrote it in Microsoft meetings in which we were thinking primarily in terms of Microsoft platforms. As a result, we make references to things like COM and DLLs in the spec when really a DLL is a specific case of the more general problem of how to invoke native code on a given platform. One of the benefits of going to a standards organization and working with people like IBM, with whom we worked on the SOAP specification, is that we ensure we don't make any such references that tie us or lock us into something like the COM framework in future versions of the specification.

    ...I think we've done a great job supporting COM on the .NET platform. But people in the industry have been reading too much into our use of the words COM and DLL. They conclude that the .NET platform is for Windows platforms only, and that's absolutely incorrect.

    People have read too much into the comments because of Microsoft's past actions. It would be really nice to think that they are fully supporting open standards for SOAP and C#. SOAP has tremendous potential. Reading this gives me some hope... Until I think about every Microsoft product's perverted implementation of standard.

    I feel like a guy who just met a pretty girl at the bar. I *know* I'm not going to get to take her home, but the **slightest chance** that it might happen has me buying drinks and listening to her every word all night.

  • Might actually improve my programming. There has been many a moment I stuck a printf in a Java program, tried to use system.out in a C++ program, or found myself wondering why bash didn't like the cout I fed it..

    You should see my Perl. [shudder]
  • by waldoj ( 8229 ) <waldo@@@jaquith...org> on Friday August 04, 2000 @09:42AM (#878761) Homepage Journal
    Do y'all think this is for real? Hejlsberg says:

    The language design team consisted of four people. The compiler team had another five developers.

    Working with such a small team seems just too cool for Microsoft. To be fair, he says that the "the whole company" was involved with the framework. I think it's actually a good sign for C# that it was made with such a small team.

    -Waldo
    -------------------
  • And C# is the first language to incorporate XML comment tags that can be used by the compiler to generate readable documentation directly from source code.

    My, they have an interesting definition of "innovation", too. I wonder if it's innovative in the sense that compiler does it, or that it's XML tags. Otherwise, what the hell are perldoc and javadoc? (Maybe that depends on what your definition of is is...)
  • I'd like to clear up a common misconception. People will tell me I'm wrong, I just know it, but still... For most Win32 programs Delphi and C++ code will run at pretty much the same speed. There is no noticable difference for non-number crunching tasks, and Delphi makes development much faster.

    C++ is more flexible, granted, and some things in Delphi (pointer offsets, for example) are a nightmare in Pascal, but the development time is often far faster. There is no trying to remember whether you want a pointer to a pointer to an array of chars or just a pointer to an array of chars, or whatever...

    Please don't start a huge debate about Delphi v C++, it's not worth it. And let's not mention the VB 'compiler' in the same sentence as fast (oops, just did it...).
  • Which company will inherit .NET?

    While this might sound like it only has a tenuous relationship to the topic on hand, it is extremely important to the survival of C#. Why? Platform Independence. As much as they would like to claim so, C# is far from platform-independent. Microsoft likes it that way. So what will happen if it goes to the Windows division? Lock-in. While Java was destroyed by inconsistencies (one might say purposeful inconsistencies) in different implementations *cough*Microsoft's*cough*, C# will be destroyed by only being available for one platform. As Windoze slowly dies a painful death, it will take .NET with it to its grave -- unless the software division is granted control of it.

    If Microsoft is split up and .NET goes to the software division, they will have no incentive not to make implementations for every platform that it's economical to do so for. C# will then become a true international language, combining the speed of Java with the things that Python, C++, and Modula-2 got right.

    When I was reading this article, I actually was quite impressed with the language. But as far as I'm concerned, there are two options:

    1: The .NET platform goes to the OS division, it remains tied in to windows, and nobody outside of windows will use C#. As windows loses mindshare, so will C#, ruining what might eventually be a great language.

    2: The .NET platform goes with the software division. C# and .NET are ported to various platforms as it becomes economical to do so. Lots of developers use C# and it becomes the language Java only dreams to be.

    --
  • MANILA (AP) -- In a surprise move, lawyers for the accused creator of the "I Love You" virus announced that they would be calling Microsoft programmer Anders Hejlsberg as an expert witness for the defense.

    "We will be presenting the judge and jury with a simple question," said attorney Rick Oxford. "Is it possible to write unsafe code in Visual Basic? Microsoft has already provided us with the answer: No."

    Oxford was referring to a recent interview with Hejlsberg published on www.oreilly.com. In it, the interviewer asked whether it was possible to write unsafe code in Visual Basic; Hejlsberg replied, "No, you cannot."

    US Attorney-General Janet Reno was flummoxed. "I'm flummoxed," she admitted. "That pretty much sinks our whole case right there. But you can be we'll make Gates pay for this." This comment sent Microsoft (NASDAQ: MSFT) share prices plummeting to 0-7/8 per share.

    Free Software Founation founder Richard M. Stallman was unavailable for comment. A spokeswoman said he was "busy buying Visual Basic For Dummies(tm)".

  • by KFury ( 19522 ) on Friday August 04, 2000 @09:49AM (#878774) Homepage
    Hejlsberg goes on and on saying:
    • This is not Java
    • We picked the best parts out of several languages, but mostly C++
    • We're incorporating new concepts to make a better language

    That's great, but his examples are stupid. Cases in point:

    "one of our key design goals was to make the C# language component-oriented, to add to the language itself all of the concepts that you need when you write components. Concepts such as properties, methods, events, attributes, and documentation are all first-class language constructs."

    Sure. That's new.

    "And C# is the first language to incorporate XML comment tags that can be used by the compiler to generate readable documentation directly from source code."

    So what? Ever heard of JavaDoc? POD? Having to code your comments in XML isn't a revolutionary leap (forward, anyhow).

    "One of the key differences between C# and these other languages, particularly Java, is that we tried to stay much closer to C++ in our design."
    -snip-
    "Another important concept is what I call "one-stop-shopping software." When you write code in C#, you write everything in one place. There is no need for header files, IDL files (Interface Definition Language), GUIDs and complicated interfaces."

    What?? First, C++ is the master of header files and interfaces. To write a language eliminating these is a good thing, but it's moving away from C++ and towards more modern languages like Java, not vice-versa. And even so, how can you say you're creating a highly component-ized language and then write everything in one place? OO-Pascal?

    The most annoying thing about this interview is Hejlsberg's stance that people should choose C# because "We're starting with a clean sheet of paper" building a language from scratch. This has been done several times, but too often the first thing that happens to that clean sheet of paper is that it gets marked up with the motives of the creating body, in this case, anti-Java, anti-interoperability Microsoft.

    Don't forget this is the same company that spearheaded the standardization of CSS, yet still fails to support the standard correctly in their browsers.

    I'd just as soon start using Dylan [isr.com] exclusively.

    Kevin Fox
  • by Anonymous Coward on Friday August 04, 2000 @09:52AM (#878780)
    from the interview:

    'This notion that Java is 100% pure and gives you 100% portability just isn't true. There's a great interview with James Gosling on IBM's developer works site in which he directly addresses this issue. He said, yeah, the whole right-once-run-anywhere, 100%-pure-thing was a really goofy idea, and was more of a marketing thing. He says, in effect, "We didn't think we'd ever be able to deliver all that, and basically we haven't." Here's the inventor of the language saying that neither purity nor portability exists.'

    The Gosling interview he refers to is here:
    http://www-4.ibm.com/software/developer/features /gosling/index.html

    Check out the part he's referring to. The Microsoft guy is totally misrepresenting what Gosling says.

  • I disagree. that's like saying the world has enough operating systems, who needs another? We have windows and linux, that's all the world needs. Who needs BeOS? who needs MacOS? Each highlevel language is good for certain things, they each have their own niche. -V
  • And C# is the first language to incorporate XML comment tags that can be used by the compiler to generate readable documentation directly from source code.

    buuuuuullshit. (except for the XML qualifier) this is exactly what perldoc does.

    Enum is in the .NET base-class library. An enum of type "foo" is not interchangeable with an enum of type "bar" without a cast. I think that's an important difference.

    he managed to fit some nice hype in there, aye? the .net base class in-fucking-deed. warning bell: anyone who talks this much about enums (which ARE cool, but not all that friggin' cool) is talking out his butt. how many times have you been writing a C program and thought, well, shit, if only i needed to typecast this enum before i could interchange it, this language would really be much nicer..


    When you write code in C#, you write everything in one place. There is no need for header files, IDL files (Interface Definition Language), GUIDs and complicated interfaces.


    so? aren't all of those things methods used to make code portable? if you're interpreting it all anyways, of course you don't need headers.

    Developers are building software components these days. They're not building monolithic applications or monolithic class libraries.

    what fucking planet is this guy from?

    ok, so maybe it won't be a shitty language, but this interview is 100% market-driven spin-filled drivel. M$ is trying to replace 'object-oriented' with 'component-oriented' as the next language buzzword, and then be the only kid on the block with a buzzword compliant language.

    blah! shut up and use perl.

    --
    blue
  • If they really wanted to do something moderately innovative, Microsoft might try building something more like a successor for Pascal, perhaps more like Eiffel [cf.ac.uk] or Modula3 [m3.org] rather than slavishly replicating yet another stepchild to Simula [sun.com] and BCPL [cam.ac.uk]

    Of course, for a more radically "innovative" approach, Microsoft already hired Simon Peyton-Jones, [microsoft.com] of some "fame" in the world of Functional Programming, and furthermore, he already had C--, [microsoft.com] Still Another "BCPL stepchild."

    There are probably a whole pile of "cool things" that have been deployed internally that might actually be good things that will never see the light of day because, as Matt Welsh observes,

    What you end up with, after running an operating system concept through these many marketing coffee filters, is something not unlike plain hot water.

    That can apply as well to languages as to OSes...



  • Unusual little point in the interview I couldn't help but notice: Until now, MS has tried to milk the cash cow by locking the industry into proprietary standards that weren't usable without MS tools, MS platforms, etc. Examples would be COM+, OLE, ActiveX, VB, MFC, J++ extensions, etc.

    Oddly, they seem to have taken a slightly different route this time: Yeah, they still want you to run Win2000, upgrade to Windows .NET, and be locked into their services, etc - but language-wise, they have opened up their new language - the base of all of those new services and platforms. To quote from the interview:


    I might point out that we're taking a true open standards approach with ECMA. When and if ECMA actually arrives at a standard for C# and a common language infrastructure, the result will be available under ECMA's copyright and licensing policies, which are truly open. Any customer, and any person, will be able to license the ECMA C# standard, subset it, superset it, and they won't have to pay royalties. They'll be able take it and go implement it on any platform or any device. We fully expect people to do that. That is something fundamentally different from our competitors who wandered around the standards bodies, looking for someone to rubber-stamp their proprietary languages.


    The ECMA, if it ratifies the C# standard, will be in charge of at least trying to assure that MS can't mess with the specifications too much, such as to break platform/language interoperability. I'm as astonished as everybody else about Microsoft's sudden commitment to open and certified standards. Maybe they're aiming to have everybody use their language and platform - thereby creating a viable long-term solution that'd keep MS in business even if they were split up or if computing moved in a different direction, rather than attempting to make as much money as possible in the short term.

    Makes you wonder, doesn't it?

    Alex T-B
    St Andrews
  • well, yeah.. but what about someone else who's reading/updating your code?

    I'd be like WTF.. this guy thinks tuesday's a color?

    now i have to figure out what the heck he thinks tuesday is..

    keeping things strongly typed is only a boon in my opinion.

  • by freebe ( 174010 ) on Friday August 04, 2000 @09:57AM (#878790) Homepage
    3: .NET is a strange attempt to avoid a DOJ splitup - the OS only gets it's apps from the Web, so it's about as useful as a Sun Ray on it's own. As soon as they split, MS-Apps Corp licenses the .NET tech to other competitors, who then make another .NET implementation - and kill MS-OS Corp. Hah!
  • Another important concept is what I call "one-stop-shopping software." When you write code in C#, you write everything in one place. There is no need for header files, IDL files (Interface Definition Language), GUIDs and complicated interfaces. And once you can write code that is self-describing in this way, then you can start embedding your software, because it is a self-contained unit. Now you can slot it into ASP pages and you can host it in various environments where it just wasn't feasible before.

    So if I'm reading this right, the whole project goes in one big file? *twitch* Can you imagine the linux kernel in C#:

    jferg@wallace$ wc -l linux.c#
    3172394


    Yeah. That's what I'm looking forward to.
  • by wishus ( 174405 ) on Friday August 04, 2000 @09:58AM (#878793) Journal
    And C# is the first language to incorporate XML comment tags that can be used by the compiler to generate readable documentation directly from source code.

    So the compiler uses the tags to generate documentation? Cool.. I don't have to document anymore... I just put in a tag and let the compiler figure out what my code actually does.

    This will be a great debugging tool!

    wish
    ---

  • <disalaimer reason="I'm a Javaholic">

    Hejlsberg: "caveat emptor, it's unsafe"

    I know that I'm taking a quote out of context here, but really, I am not being flamebait.

    I understand the reasoning in allowing people to use pointers, but can't say that I agree with it. There may be times and places that you need the power of pointers, but are they really necessary in the kind of programming situations that C#/Java are addressing?

    I remember hearing that 50% of programmer errors in c/c++ were memory allocation problems. From experience, sounds about right to me.

    Give people a hammer, and they will go around knocking screws into the wall with it.

    Caveat emptor.

    </disalaimer>

    I must say I agree with one point made in the Register article you point to - Micros~1 should have looked at using python.

  • this guy is a manager/pm.. check out this passage...

    We've tried not to take an "ivory tower" approach to engineering C# and the .Net framework. We can't afford to rewrite all of our software. The industry just can't afford it, especially now when we're moving on Internet time. You've got to leverage what you have, and so I think interoperability is just key

    -Jon

  • I guess I expected this. Everyone's too busy bashing C# because it came out of Microsoft to realize one simple fact.

    Regardless of where it came from, In spite of the fact that it was almost absolutely meant to be a "Java Killer", I'm still probably going to use it.

    Why? It's like a new tool for my toolbox. Sure, I've already got 3 different screwdrivers I'm very fond of (Torx, Flathead, and Phillips), but what if a problem comes along where I a hex 'driver would be easiest? I'll be ready for it.

    Even if it's not my programming language of choice, I'll still be competent enough to use it if necessary. All this zealotry and MS bashing is fun, but denying the usefulness of a language just because it came from MS is just narrow-minded, even if it's only a niche language for COBOL programmers to wrap their code in so it'll embed into an asp page.

    I mean, someday YOU might need to wrap a chunk of COBOL into an ASP page.

    Oh, and by the way, /sarcasm
  • The submission of CLI is very interesting, and I'm looking forward to seeing what the spec looks like. It might well be bletcherous and icky (this is Microsoft, after all, which doesn't like to have one API where 7 will do). But it's impressive that you can write a C# class and then subclass it from VB or Python, and vice versa; this is a degree of unification which languages on Unix badly lack.
  • by kevin805 ( 84623 ) on Friday August 04, 2000 @10:13AM (#878806) Homepage

    Let me see if I understand:
    "You know all crap we've been forcing you to use to make your code work in our byzantine operating system for the past ten years? Well, turns out it wasn't actually as pleasant as we told you it would be, and we can do without it. Please don't lynch us for your RSI."
  • The fact that ECMA's involved just adds another scary point for point. ECMA also controls other useful standards (for instance, javascript). Microsoft would only have picked them if they can either manipulate or coerce them. That means that not only is (duh) C# going to be another hamful Microsoft "standard", but once they've infiltrated ECMA they'll have some other standards to dork with too.
  • Funny comment, but VB != VBS. The I love you bug was written in VB Script, which, while similar to VB, is not the same as VB. Sorry to piss on anyone's parade:)

    -={(Astynax)}=-
  • by Rayban ( 13436 ) on Friday August 04, 2000 @10:14AM (#878811) Homepage
    Anders really twisted James Gosling's words here. He says, quoting James Gosling:

    ... There's a great interview with James Gosling on IBM's developer works site in which he directly addresses this issue. He said, yeah, the whole right-once-run-anywhere, 100%-pure-thing was a really goofy idea, and was more of a marketing thing. He says, in effect, "We didn't think we'd ever be able to deliver all that, and basically we haven't." Here's the inventor of the language saying that neither purity nor portability exists.

    And this is what James said:

    "The perfect goal of "write once, run anywhere, anything runs on anything" is just goofy. You're never going to run some piece of weather modeling software on a toaster [laughs]. And you wouldn't want to. So there are some scale and capability limits. But within that, you can do an awful lot to make sure that if somebody wants to read a file, it looks the same everywhere reading a file makes sense."

    This is clearly a misquote. Gosling is saying that a toaster can't run a weather simulation package (yes, that is goofy). There are physical limits to what you *can* run (ie: you can't run an app with a display requirement of 4000x2000 on a handheld PC with a display of 100x100, or one requiring 128MB on a 64Kb watch). Nothing here is really surprising - Java's strength is trying to hide the minor differences so that you don't need to worry about these while moving between platforms (even some platforms that vary wildly in terms of physical specifications).

  • by barenakedAvenger ( 213794 ) on Friday August 04, 2000 @10:14AM (#878812)
    That is pretty funny :) But isn't it kinda-sorta right? *ducks* Seriously, might you one day wish to write a quick macro to send a file to everyone in your address book (like at a company). I honestly don't think that the lanuage itself is to blame. Outlook/IE are to blame for not warning stoopid users about what they are about to do. Something like that anyway... I really don't like M$, but I also don't like something that could be used as a potential tool to be taken away 'cause some moron wrote a virus in it. It's possible to say that C/C++/whatever can't write unsafe code either. In the right hands. We all know that no virii have ever been written in any of those languages, have they? ;)
  • We focused hard on giving programmers all of the right solutions for interoperating with Internet standards, such as HTTP, HTML, XML (snip)

    Ah yes, as usual Micro$oft are keen to promote internet standards. But who's standards? I wonder, do they mean w3 standards or M$ 'standards'?

  • If you want product speed, you program in C or C++. If you want fast development, you use a rapid application development package like Inprise's Delphi. If you want database access, you learn SQL. If you want a language that anyone with any coding genes at all in their body can use, you write in Perl or Python. If you want to make a serious stab at portability, you use Java. And C#? Uh ...well, let me think now, uh...

    That's a pretty narrow view, considering there are many, many good languages out there. For embedded systems, Forth is an excellent choice. For exploratory programming, Lisp is hard to beat. For writing compilers or slinging complex data structures, I'd choose ML or OCaml or maybe Haskell. For distributed systems, I'd use Erlang or Mozart. For certain problems, Prolog is an unbeatable tool.

    C, C++, C#, Object Pascal, and Java are all working the same general territory. Sometimes you need a different approach.
  • Does this mean that they will be releasing BFlat (or what ever) for Linux, Solaris, BeOS, MacOS, etc. Does this mean that I will be able to work and compile my programs under Linux and they will just run under Windoze, like I do now with Java? Somehow I think that the answers to these questions is "No Fucking Way". I think the boys at M$ are as confused about the meaning of "cross platform" as they are about the meaning of "innovation".
  • And C# is the first language to incorporate XML comment tags that can be used by the compiler to generate readable documentation directly from source code.

    OK, so javadoc isn't XML, but it does the exact same thing he's talking about here. Maybe the next version of javadoc can support XML as well. Or, maybe javadoc shouldn't be revised until XML2.0 comes out. Or maybe we should wait until the next big Marketing Buzzword comes into the now.

    Remember, people, XML is useless without agreed upon standards of the XML structure. These are generally being decided by industries as a whole. This same sort of thing could've happened without XML (look at things like vCards, HTTP protocol, BCD, etc. -- all ways of communicating information irregardless of the platform-specific source).

  • by jon_c ( 100593 ) on Friday August 04, 2000 @10:24AM (#878823) Homepage
    I've never seen a dev team larger then 7 people. Even with something like Win2k, you'll have something like 100, 2-7 people teams. Each team will have 6 Managers, 10 testers, and 1 person that is just sort of "there".

    -Jon

  • by Space Cow ( 93479 ) on Friday August 04, 2000 @10:25AM (#878825)
    Just to clear things up about the above (out of context) quote. He isn't saying you can't write a macro virus in VBScript. He is saying you cannot obtain an unsafe pointer and crash the system.
    This will probably be moderated down as (obvious -1), but people are already responding with posts about VBScript kiddies etc...
  • The state of language design these days is down right depressing. The world can't seem to move beyond all of those silly Algol-derivatives like C, C++, Java, and now C#, making Smalltalk- a language designed throughout the 70s and finialized as Smalltalk-80 in 1980- still the height of language design.

    What does C# add to Smalltalk, and contribute to the the innovation of language design? Not much. It has "attributes," which are nothing more than embedded XML comments; COM integration (good if you're on Windows, but you could always use Dolphin Smalltalk [object-arts.com] for that; SOAP integration (Dandy, but it's available for almost every language around); compilation (you can do this with Smalltalk MT); and the ability to regress back into C-pointer mode to write "unsafe" code, to make sure the incompetent GC doesn't eat your objects (which were never rooted, probably by an incompetent programmer).

    Many of these things are neat and useful, but reek of the sad state of language design nowadays, and available elsewhere with or without add-on packages.

    What's almost as sad, is that a lot of programmers are in awe at the power of C# and Java, with their heads too buried in the sand of C's syntax to see the innovations that Smalltalk (cf. Squeak [squeak.org]) made 20 years ago.
  • by happystink ( 204158 ) on Friday August 04, 2000 @10:27AM (#878831)
    Okay, I was as skeptical as all of you when I saw this, but check it out:

    Who's helping COBOL programmers today? Who's taking them to the Web? Only on the .NET platform can you embed Fujitsu COBOL in an ASP page. I mean it's truly revolutionary.

    THANK GOD! This truly is revolutionary! Yay Microsoft, you have finally made the web usable for the 1970s. I, and half a dozen COBOL programmers who couldn't really get INTO asp until now, thank you.

    :D

    sig:

  • Look, I'll probably get downgraded for being redunant or off topic or creating flaimbait, but I'm going to say this anyway. Anders credentials are based more on luck than skill. Here's why:

    When Anders took over as the Borland Pascal Chief Architect (note: Delphi didn't exist yet). What he succeeded in doing was developing a product that nearly faded into the dev tool "Where is it now?" bin. It almost disappeared! VB was swallowing up BP programmers like crazy. Knock VB all you want (God knows I do), it was a *much* easier tool to develop Windows apps with because of that Visual paradigm that's so standard in tools today.

    Then, one day, Anders gets this "brilliant idea" to take the BP language and put a visual interface on it! What a great idea! Why didn't anyone else think of that!?? (hmmm...)

    The people that made Delphi a great tool then and continue to make it a great tool today are *still at Borland*. Anders came up with *one* idea - the Delphi *team* made that dream a reality.

    I love Delphi, and I wish Anders well, but don't think that just because C# has his name on it that it will just automatically be great. That's the hype that Microsoft is hoping you'll buy into.
  • by Chops ( 168851 ) on Friday August 04, 2000 @10:35AM (#878836)
    Here's a quote from Goodhew:
    This notion that Java is 100% pure and gives you 100% portability just isn't true. There's a great interview with James Gosling [ibm.com] on IBM's developer works site in which he directly addresses this issue. He said, yeah, the whole right-once-run-anywhere, 100%-pure-thing was a really goofy idea, and was more of a marketing thing. He says, in effect, "We didn't think we'd ever be able to deliver all that, and basically we haven't." Here's the inventor of the language saying that neither purity nor portability exists.
    And here's the quote he seems to be referring to, with plenty of context and not "in effect:"
    Gosling: Well, that's really what all of Java is -- a glue layer that tries to make "write once, run everywhere" as close to true as it can be. The usual places where there are hard problems that you really can't get around are things like cell phones -- a cell phone doesn't have a mouse. Although some of them do -- they have little joystick mice.

    developerWorks: So while you're driving, you can be mousing around.

    Gosling: Yeah, actually a bunch of the Japanese I-phones have mice on them. It's a little joystick, you just steer the mouse around, and you push down harder to click the mouse. You can dial a phone that way. Those mice usually feel kind of hokey, although they're the only ones that really work for doing games.

    Not everything is a point of sale terminal, not everything is doing real-time stuff, not everything has a television tuner on it. There are all these APIs for environmental things, and they're going to be there, or they're not going to be there. We can do an awful lot to try to make devices as equivalent as possible and situations as equivalent as possible.

    There are some things that it's impossible to paper over, like the fact that your screen is only 100 pixels on a side; it is what it is. You can do all kinds of stuff with transformation matrices to scale things down, anti-aliasing, but if you take a great big screen and scale it down to 100x100, what you end up with is a bunch of mush. The underlying application really has to know something about the resolution of the screen. That kind of difference from place to place is pretty much unavoidable.

    Other kinds of differences, like what kind of CPU you've got, what kind of network connectivity you've got (as long as you've got network connectivity), anything that you can make look equivalent, we've worked really hard to make it look equivalent. It makes the transportability of software a whole lot easier.

    The perfect goal of "write once, run anywhere, anything runs on anything" is just goofy. You're never going to run some piece of weather modeling software on a toaster [laughs]. And you wouldn't want to. So there are some scale and capability limits. But within that, you can do an awful lot to make sure that if somebody wants to read a file, it looks the same everywhere reading a file makes sense.

    It's sort of like cars. They all have steering wheels. It's not like you get into some cars and they have steering wheels, and some cars have joysticks, and some cars have foot pedals. That kind of situation, which did actually once exist, was goofy. So things have gotten a lot easier.

    In other words, Goodhew is lying to make Java look bad. I find the use of "in effect" to enclose Goodhew's misleading summary in quotations, as if it was a direct quote from Gosling, particularly disgusting.
  • by GeorgeH ( 5469 ) on Friday August 04, 2000 @10:41AM (#878842) Homepage Journal
    $ lynx -dump http://windows.oreilly.com/news/hejlsberg_0800.htm l | grep innovat | wc -l
    8
    $
    --
  • by ameoba ( 173803 ) on Friday August 04, 2000 @10:47AM (#878850)
    One of the key differences between C# and .... Java, is that we tried to stay much closer to C++ in our design
    I was under the impression that one of Java's big strengths was that it didn't stick too closely to C++, and actually had a coherent, consistant design.

    Why are there no enums in Java, for example?
    Granted, having type-safe enums would be nice; but is this really a big enough flaw to design a language around?

    one of our key design goals was to make the C# language component-oriented
    Great... they're making it easier for us to write stuff to sell to those VB guys...

    C# is the first language to incorporate XML comment tags
    OOOER!!! XML tags. I'm glad Microsoft has decided that it's time to follow the industry standard hype. {MumbleMumbleJavaDocMumbleMumble}

    Developers are building software components these days. They're not building monolithic applications or monolithic class libraries.
    trans: Why bother writing decent software, when some schmuck who's never heard of a linked list can do it in less than half the time with VB (and nobody'll notice the difference)? Might as well accept that, and sell him the bits he uses to do it with.

    We focused hard on giving programmers all of the right solutions for interoperating with Internet standards, such as HTTP, HTML, XML, and with existing Microsoft technologies
    Well, what else do you need? HTTP, HTML, XML and M$? I should have figured that out a long time ago, and just taken UDP out of my TCP/IP stack altogether.

    . Unsafe code allows you to write inline C code with pointers ... to pin down memory so it won't accidentally be garbage-collected.
    If you need to write unsafe code to ensure that things don't get "accidentally garbage-collected" either the GC is worthless, or you're failing to fully utilize the paradigm.
    people seem to think we're on drugs or something. I think it's a misunderstanding
    Yes... the guys at Berkely were doing drugs when they wrote BSD. They guys at M$ are obviously too sober to put ideals over profit.

    Only on the .NET platform can you embed Fujitsu COBOL in an ASP page. I mean it's truly revolutionary.
    The only revolution I want to involving COBOL very closely resembles the French revolution. Guilotines and all.

    with C# we were able to start with a clean sheet of paper
    Hrmm... earlier they were talking about how it stayed closer to C++ than Java did; now it's a "clean sheet of paper". I really wish they could make up their mind.

    The unification of programming models, which the .NET framework offers. ...we always seemed to end up marrying a programming language to a particular API and a particular form of programming.
    So, they've learned the error of their ways, and have decided to bring the new unified APIs into the world with a new language?

    one of the key differences between our IL design and Java byte code ...is that we made the decision up-front to not have interpreters. Our code will always run native
    And this is important how? Are they saying you can't run it interpreted? Anyways, I'd like to see a JIT compiler do better than the Hotspot model (interpretation + realtime profiling to find sections of code to compile to native code).

    you can name your source files anything you want.
    For some reason they seem to think this is important. I fail to see it. Skinable filenames?

    I think developers will find the release of Visual Studio .Net to be one of the highest quality releases in Microsoft's history
    It's a little late for them to start worrying about quality now; they're getting their asses Ma-Belled.
  • I meant no disrepsect. I literally meant I'd rather use Dylan (even though it's noi longer supported).

    Actually, the best language I've ever programmed in is NewtonScript [gatech.edu] created by Walter Smith [best.com] who, ironically, later left Apple to work on Windows CE (now he works on Windows Update).

    It's worth checking out (NewtonScript, that is. Not Windows Update).

    Kevin Fox
  • Is C# a good language or not?

    If it is, then a compiler that emits C code compilable by gcc should be built. End of story. I think Microsoft would hate that.

  • But it's impressive that you can write a C# class and then subclass it from VB or Python, and vice versa; this is a degree of unification which languages on Unix badly lack.

    Check out JPython [jpython.org]. You can subclass Java classes in Python, then subclass yourPython classes in Java.
  • This should be a standard measurement for articles concerning Microsoft. Call it the "bogosity" index of the article at hand.

    Ah, but you missed multiple occurances of innovat on a line. It may be that there are more than than. (I'm not saying that there are, but it's possible. Something like a line:

    "We're innovating using other innovations...")

    how about

    lynx -dump some_URL | perl -e 'my $count=0; while(){ while(m/innovat/gi){ $count++; } } print $count,"\n"; '

    (I'm sure there's a quicker way to do it with sed or something else, I just tend toward perl)


  • What makes you believe Microsoft will adhere to this standard any more than they've adhered to the others? He said himself that any customer will be able to take the Standard and "superset" it. Care to guess who'll be first in line?

    Microsoft has never given anything more than lip-service to existing standards. A C# standard won't fair any better.

  • I'm somewhat interested in it.. I registered csharpplanet.com and planetcsharp.com, I just haven't gotten around to putting up content yet since I'm bogged down with other freelance work..
  • To start with, let me state that I have absolutley no knowledge of the C# language and so may be off on a few points. I look forward to vigorous correction by C# proponents.

    First of all, C# is not a Java clone. In the design of C#, we looked at a lot of languages. We looked at C++, we looked at Java, at Modula 2, C, and we looked at Smalltalk.

    In other words, it's Java. Java has concepts taken from amny of those same languages - packages, everything inheriting from Object, and so on. They might have chosen slightly differently, but they seem to share the same base.

    Why are there no enums in Java, for example? I mean, what's the rationale for cutting those?

    That's because having such a feature as part of the language is not nessicary. You can get every benefit of enums he mentioned in the article just by making a static class like so:

    public class EnumThing
    {
    private int color;
    private EnumThing();
    private EnumThing( int colorID ){ color = colorID; }
    public EnumThing RED = new EnumThing(1);
    public EnumThing BLUE = new EnumThing(2);
    }

    Then you just refer to it by EnumThing.RED, or whatever. You have the same level of type protection, and in addition you can specify the access level of the class to make the enum only accessible to that package (I have no idea what level of access control C# enums have).

    And C# is the first language to incorporate XML comment tags that can be used by the compiler to generate readable documentation directly from source code.

    It's not XML based, but Java has always has JavaDoc comments from the start - you've been able to generate documentation directly from code for some time now. This might be at a more granular level though (Javadoc comments are really for methods and attributes and classes, mostly).

    You could easily add this to any language though - you'd just have to run documents through an xslt processor to strip out xml tags before compiling.


    We've tried not to take an "ivory tower" approach to engineering C# and the .Net framework


    I don't have much to add, I just thought it was interesting to hear that .Net is that tied to C#.


    You've seen all the COM interoperability that we have built into the language and into the common runtime; you've seen how you can just import existing DLLs [Dynamically Linked Libraries] using the DllImport attribute; and you've seen how even if that doesn't get you there, we have the notion of unsafe code. Unsafe code allows you to write inline C code with pointers, to do unsafe casts, and to pin down memory so it won't accidentally be garbage-collected.


    And how does security work in C#? That's a lot of access to a lot of things I'm not sure I want to trust at all!!


    When you're writing unsafe code in C#, you have the ability to do things that aren't typesafe, like operate with pointers. The code, of course, gets marked unsafe, and will absolutely not execute in an untrusted environment. To get it to execute, you have to grant a trust, and if you don't, the code just won't run. In that respect, it's no different than other kinds of native code.


    I really hate region oriented trust models. It also opens yourself up to bugs where you can get something to run even if the region is not trusted...

    We want to create a platform where there can be innovation. Who's helping COBOL programmers today? Who's taking them to the Web? Only on the .NET platform can you embed Fujitsu COBOL in an ASP page.


    Nothing like embedding COBOL in a web page for the ultimate in maintainability!! :-)

    I wondered how that really worked with other languages though, and came across this:


    For example, we only have one kind of class in C#, and it is always garbage-collected. Managed C++, on the other hand, has two because it has to preserve the non-garbage collected style of programming.


    So it seems for other langauges there are extra constructs that must be learned in order to work with .Net. Looks like that COBOL programmer will have to learn a few new tricks after all.


    One of the interesting things that came out of our developer tracking study is that over 60 percent of all developers in the professional developer market use two or more languages to build their applications.


    Yes, { Java,C++,Perl,PHP } and { HTML, WML }.


    And what that tells us, especially when we ask which tools programmers use, is that there isn't going to be one object-oriented programming language which is the end all and be all language that everyone will use.


    That might be true, but that's quite an extrapolation. I think it might be more true to say that the languages you use will migrate into business logic and presentation langauges, and perhaps more fragmented from there.

    This next part is REALLY funny:


    C# has more headroom and more power than VB does.

    Osborn:
    Meaning that you can accomplish more with fewer statements in C#?

    Hejlsberg:
    Well, meaning you have more power through the provision for unsafe code.


    Yep, Lot's 'o power - just like a six year old with a tactical nuke is pretty powerful.


    I think the approach we've taken with the IL is interesting in that we give you options to control when compilation -- or translation, if you will -- of the IL to native code occurs.


    This is kind of interesting. Basically, IL is like the Java bytecode, but they give you a lot more options as to when the compilation to native code happens.

    However, it does make you wonder why they just didn't work on using java bytecode as the IL, compile everything into that, and then work on ways to give you the same degree in compilation flexibility for java bytecode they do with IL.


    For the compact framework, we have the EconoJIT, as we call it, which is a very simple JIT [Editor's Note: .NET Compact is a subset of the .NET framework designed to be ported to other devices and platforms.]


    Now I'm sure that .NET is the Java VM, IL is the bytecode, and C# is Java. The parallels to things like .Net Compact and PersonalJava are just too close.


    When you make the decision up-front to favor execution of native code over interpretation, you are making a decision that strongly influences design of the IL. It changes which instructions are included, what type information is included, and how it is conveyed. If you look at the two ILs, you'll notice that they're quite different.


    I'm not sure if this is a stregth or a weakness. In once sense it's nice because you get somewhat optmizied IL for the type of platform you hope to hit. It another way it's quite annoying because you have to regenerate the IL for difefrent types of platforms - sort of moving binary incompatibility from the processor space to the task space. This might be bad for a library that could be used in a client side to generate something, but also up on a server in a web environment, and seems somewhat against the philospophy of components they are trying to put forth.


    An interpreter emulates a CPU. We turn it upside down and we do one pass -- we always do one pass -- where we convert the instructions into machine code.


    So, no HotSpot for C#!! It looks like they've decided dynamic optimization is a waste of time. Oh well, I guess they really didn't want that server market after all.


    Since C# does not have that sort of marriage between physical and logical, you can name your source files anything you want. Each source file can contribute to multiple namespaces and can take multiple public classes.


    All I can think of here is - ARRRRRRGH! I can just iamgine the maintainability of looking for code that could be ANYWHERE. It also seems sort of dangerous in that some totally independant library can "contribute" something to any namespace at all. It might be of use but it sounds like people could really make a mess with it.

    Now, he is asked about Generic programming and what C# plans in relation to same:

    Well, some of what we had hoped to include in the first release has been constrained because -- unlike what everyone believes about Microsoft -- we do not have unlimited resources. We had to make some hard decisions in terms of what is actually in this first release.


    And generic programming features didn't make the cut. Now there's something you really want to tack onto a language later on!!


    Our IL format is actually truly type neutral. And, by keeping it type neutral, we can add generics later and not get ourselves into trouble, at least not as much trouble. That's one of the reasons our IL looks different from Java byte code. We have type neutral IL.


    Now that's an interesting aspect to IL. It will be interesting to see if they do come up wth some Generic programming ideas in the language, and how well they work out.

    Overall it seems like an interesting language, and the end part of the interview mentioned some very nice capabilities. It will be interesting to see if they can stop some of the momentum of EJB application servers in the market.

    They also talked about a number of areas in the EJB spec where vendors are allowed to create extensions. They claim that will lead to a lot of code that can only run within one app server, but from what I've seen people are pretty careful not to use vendor specific extensions of any sort unless absolutley nessicary - and usualy it's not.
  • In my work I have a dire need for a C++-style language which:
    • Is low-level enough to permit tweaking of memory allocation and can map classes onto hardware register sets (so Java is out)
    • Has intrinsic vector types so I can write code for vector units which is optimized by the compiler
    • Doesn't lost all its potential optimizations to pointer aliasing problems
    This would be great for writing games! The world may have enough C-like languages, but that doesn't mean that specific sections of it don't need their own.
  • by Frymaster ( 171343 ) on Friday August 04, 2000 @11:18AM (#878875) Homepage Journal
    The real irony here is that I honestly can't think of anything that MS has invented... I admit that I don't follow Redmond that closely, but avoid ing news of The Beast is like trying to ignore survivor.... So what have they invented?

    DOS - bought for $50k
    Winders - ripped off from Apple who bought a tour to see it from Xerox who ripped it off from whats-his-nuts who worked at SRI who, in turn, stole it from Leonardo DaVinci (no, really, the design for the mouse is on the same page as the helicopter...)
    Word - Oh, come on. It's a word processor
    Excel - Nabbed from Visi-whats-it
    PowerPoint - bought
    Netscape - No, wait, I mean Mosaic... no, wait I mean Explorer
    SQL - New MS innovation removes letters P and L from this acronym.
    Age of Empires - No, really, it's Warcraft.

    In fact, the only thing I can think of that MS really innovated on was PayWare with the Tiny Basic brouhaha... unless I'm missing something really big and obvious.

  • by mkozlows ( 21830 ) <mlk@klio.org> on Friday August 04, 2000 @11:20AM (#878876) Homepage
    From the sounds of things, C# is a sort-of-interesting language that's fatally crippled by its close relationship to Microsoft. Unless it gets full, free, equal implementations on Unix platforms, it's dead.

    That doesn't mean it's entirely worthless, though; in fact, the real benefit of C# might be that it guilts Sun into finally submitting Java to a real standards body. Sun likes to portray itself as an open company, and that image has largely flown up until now -- but when the contrast of Microsoft standardizing C# and Sun zealously guarding Java becomes too glaring, Sun's going to look decidedly less friendly. With any luck, Microsoft's pressure will push Sun into doing the right thing.
  • by jabber ( 13196 ) on Friday August 04, 2000 @11:20AM (#878877) Homepage
    As one of the highest-rated posters already implied, the article is full of self-contradiction and buzzwords. A modularized language that does away with interfaces and header files? Do tell..

    I'll reserve absolute judgement until I play with it, but, here's a thought:

    Whenever M$ gets backed into a corner by a competing technology that they either can not buy, or can't catch up to early, they release a vaporous competitor. This 'alternative' is intended to
    1) bring in a cash infusion from the 'early adopters' of all things Microsoft (Usually clueless managers who mandate to unwilling IT staffs),
    2) get FUD and fluff from magazine article writers from Ziff-Davis who are so deep in M$'s hip pocket they eat lint,
    3) engineer public opinion that M$ has something better than the competition, 'just waiting in the wings'.

    M$ most recently did this with WinCE, as a response to the PalmPilot. They had no real alternative to PalmOS, so they just threw something together and hoped it would stick enough to eat away at Palm. Now that they've had a few years to look at the problem, they release PocketPC - not an improvement IMHO; but I digress.

    C# looks like round 2 of the Java war. Period. It's not INNOVATIVE in the least. It's a different way of doing things. It rolls together some previous ideas (comment markup, components, C syntax, M$-specific VM to run the bytecode) to see what will stick.

    As with all things M$, it's probably a good idea to wait until Version 3.1, to see what it has to offer BESIDES an alternative to solid technology.
  • ...combining the speed of Java...

    Ooooo. So it'll be slightly faster than the spring melt in Greenland, eh? I have a real problem with languages that try to handle garbage collection for me. "Just let the object fall out of scope and the garbage collector will take care of it," they say; then when my application server is responding to hundreds of requests per minute and the free heap's rapidly diminishing stature signals the garbage collector...

    Thanks, but I think I'll stick with an environment that lets me do the right thing and do it quickly.

    Oh, and since when is stuffing all of your code into a single file a good idea? Hello? Sometimes 1 file per function makes a lot more sense. C# just sounds to me like a linguistic fashion show that was paid for by Microsoft.
  • I have yet to work with Win NT 5.0 err 2000, but NT 3.51 was actually a properly designed OS. It was stable and a fairly decent OS. Why does NT 4.0 suck then, because consumers wanted speed, which is one thing that 3.51 was not good at. Make the lines between the layers a bit fuzzy, ok a lot fuzzy, for improved performance and look at what happened.

    The original design for NT was done right. Marketing stepped in and it went down the toilet. I feel sorry for Mr. Cutler for having to watch the marketroids mutate his product into the freakish monstrosity it is today.
  • by Non-Newtonian Fluid ( 16797 ) on Friday August 04, 2000 @11:26AM (#878883)
    Here's the quote:

    The perfect goal of "write once, run anywhere, anything runs on anything" is just goofy. You're never going to run some piece of weather modeling software on a toaster [laughs]. And you wouldn't want to. So there are some scale and capability limits. But within that, you can do an awful lot to make sure that if somebody wants to read a file, it looks the same everywhere reading a file makes sense.

    That's a lot different, I'd say, than Gosling saying that "neither purity nor portability exists", and that it was "more of a marketing thing." My interpretation: All he's admitting is that you'll never have all the various platforms in the world (e.g., a toaster and a PC) be identical. An iMac isn't a Cray SV1. Therefore, perfect "write once, run anywhere, anything runs on anything" cannot exist, but one can get really close (i.e., as close as the hardware and the tasks and hand allow).

  • by generic-man ( 33649 ) on Friday August 04, 2000 @11:28AM (#878884) Homepage Journal
    So you're saying that once a word processor is on the market, companies should stop writing word processors? Come on, the market has room for many word processors. Let's not knock Microsoft for coming out with Word when WordPerfect was available. Just look at how many word processors and typesetting programs we have in the Linux world, and there's still plenty of room for improvement (on the word processor side at least).
  • Just for clarification and perhaps there's little difference between the two, but the Microsoft business lemming Goodhew screwed up the Gosling quote and not Anders.
  • by Frymaster ( 171343 ) on Friday August 04, 2000 @11:31AM (#878889) Homepage Journal
    We already have anough C's. What do you think?

    I think lots about this, really, truly:
    1. Too many languages? No. Too many C's? maybe. People keep going back to C as the lingua franca so there has to be something to it. If you're going to come up with a new language, sticking to C roots may be the best way to ensure durability.
    2. Languages will have to become more spcialized as time progresses and the complexity and scale of computing tasks grow. The future I see in my crystal ball (written in C, btw) are languages devoted to specific tasks such as cgi, game development etc. In a lot of ways this is a throw back to the early days of Fortran, Lisp and Cobol which were non-general languages. There weren't really the issues of scale and complexity back then though that we face now, so it was fairly easy for C to sweep them under the rug.
    3. Future specialized languages will almost assuredly be themselves written in c. I'm not talking about yacc-hacks but honest-to-god interpreted or even compiled languages. What this means, though, is that in a future with fragmented languages used for specialized purposes, people looking to expand their power and control will look back to the source of those languages construction which leads to point 4.
    4. Which is the same as point 1. People keep going back to the lingua franca.... so future specialized languages should stick closely to C while maintaining all the neat features that make them specialized in the first place...

    Was that a bit scattered? Sorry, it's clearly organized in my head, but I haven't gotten around to scribbling out the boxes and arrows yet...

  • The questions I would have asked Hejlsberg:

    - will Outlook (or WinMe) come with this "innovative" JIT compiler?
    - will it be within the same "security" model as VBScript and WSH?
    - what are the C# file extensions again?
  • While that's true (insert typical raving about enharmonics in different instruments) do you think Britney Spears would want to be associated with ANYTHING labeled "flat"?
  • So, what Hejlsberg promises in the interview is that they will deliver something that is easier to program in than Java, works more efficiently than the best Java implementations, is available across platforms, and allows people to write code that ports even more easily between Windows, UNIX, and Macintosh than Java.

    To fulfill those promises, Microsoft not only need to do better than some of the best dynamic language implementors in the world, but they need to do the hard work of producing implementations for their less favorite platforms, just like Sun did with Java. Given Microsoft's track record, I suspect that is less likely than the proverbial snowball in hell, and I wouldn't exactly plan projects around Microsoft's promises.

    But if they deliver, good for them and good for all of us. Let's hold Hejlsberg to those promises a year from now.

  • "Don't forget this is the same company that spearheaded the standardization of CSS, yet still fails to support the standard correctly in their browsers. "

    Pardon me? What? Microsoft doesn't support the CSS standard? Are you insane? Internet Explorer 5.5 is the most standard-compliant browser in the universe. And that's pure fact, not opinion. No other browser, not Opera (though it comes close), not Netscape Navigator, not even Mozilla, has the same level of standard-compliance that IE 5.5 does. In fact, Netscape Navigator 4.74 still isn't even anywhere near IE 4.0's level of standards support.

    Saying that Microsoft is bad because they don't correctly support CSS is pure blatant ignorance. The point here is, Microsoft spearheaded the standardization of CSS, and now they're the ones who make the most compliant browser. That's a good thing.

    --

  • by Anonymous Coward

    I really wonder about a few 'features' of C#. First, I should preface this by saying I spent 6 years programming my Amiga in nothing but 68000 assembler. I then spent years programming in C (on the Amiga and when I first migrated to PC). When I heard that Java did away with pointers, I was less than impressed. Over the past year, though, I've programmed in nothing but Java and I actually appreciate this 'dumbing down'. Debugging other peoples' code is way faster because of it. By allowing 'unsafe' code, C# is going to unnecessarily complicate debugging and open up the application to longer development times and increased maintenance costs.

    'They' seem to think that allowing unsafe code is no worse that allowing naitive calls. I beg to differ. If I'm going to access libraries that I've written in the past, those libraries were written and debugged with tools speicifically designed for that particular language (ie, C++ in my case). I've debugged and tested the code using source level debuggers and it's been in production in other environments so I feel secure in bringing the same library over to Java. Finally, like other aspects of object oriented programming, the libraries become a black box, hiding their 'complexity' from other developers on the project. When you allow for the ability to start dropping 'foreign' code right into your c# code, it is going to have a deleterious impact on OO development. Things don't remain as 'encapsulated' and it will likely demand a greater (language) knowledge from your development team. The last problem with 'unsafe' code is how you go about debugging it. When doing fancy pointer acrobatics using C/C++ (and even one graphics application I worked on using Delphi), I really needed the ability to drill down to the underlying assembly code. With Java, I've never found the need to so this. What level of debugging will be available for C#? How will C# cater to the debugging/testing needs of developers using "any" language?

    Finally, I just want to say that I'm not happy about their support of compilation to native code. Having code be interpreted by default and leaving it to vendors to create native code compilers keeps your application MUCH more platform independant. Sure, Java was slow at first because all initial Virtual Machines interpreted byte code, but these days you wouldn't think about using a JVM without at least JIT (if not naitive compilation). The point is, your application always ships as 'generic' byte code and it's up to the user to have a JVM that offers JIT/naitive compilation.

  • I have a real problem with languages that try to handle garbage collection for me.

    Sure if you are a good programmer and actually do garbage collection. As a physics major doing research using computer programs written by decent programmers who don't do their own garbage collection, I become very glad when I see a program written in Java because it has garbage collection. There is one program that the group that I am in uses, after a couple of hours it has leaked over a gig of memory. Trust me, it is no fun when several of the more powerful machines in the lab are down because there is a desparite rush for another large set of the events that this program simulates. Sure it is possible to create memory leaks in Java, but it isn't as easy to do on accedent.

    To each his own. I do agree that for an object oriented language, the idea of having everything in one file is a bit screwy.
  • It's worth checking out

    Actually, it's probably a really good idea.... since the rumours of the wacom-style, small-binder-sized, it's-a-clipboard-with-a-g4 apple-branded-and-newton-based PDA are heating up... I must admit that this phrase from the Newton page always bothered me. Start quote:

    Rather than two levels of abstraction, class and object, there is just one,

    Objects without classes? um.... It's been a looong time since I was afraid of learning a language (although the prospect of objective C causes me a little bit of consternation....) but statements like that scare the willies out of me...

  • You are missing something really big and obvious.

    Bob.

    Nuff said.
  • Man, the gall of Hejlsberg. I used to code in VB, and some of us at work still do, and we were ROFL at this quote.

    Maybe he meant "I can't write unsafe code with VB."

    Or maybe someone spiked the punch again.

  • by Squiggle ( 8721 ) on Friday August 04, 2000 @11:47AM (#878905)
    Rather than evaluate how C# might help them most /.ers only want to start comparing it to what is already out there ("so what if it can do blah, I can already do blah by blah blah blah in the blah language.")

    The fact is, when it comes down to it, every high level language concept can be done in assembly or machine code. Big deal. The important part is how does the high-level language make the programmers life easier (and thus improve their productivity).

    Stop your bitching, start thinking how C# might make you a better programmer. Tim Sweeney has written an article [gamespy.com] that you need to read. Although (from what I can tell) C# doesn't meet all his ideas of a "next generation" programming language, it is closer than C++ or Java. A quote for the whiners:

    Assembly programmers didn't realize they needed processor-independence; it doesn't seem like a practical concept when your life's work is focused on micro-optimizing individual CPU instructions and register usage. C programmers didn't realize they needed objects because, after all, the world is made of functions and data structures! This seems silly nowadays, but at the time, C programmers had become so accustomed to the strengths and limitations of their language that they thought: since it's so difficult to express object-orientation in C, object-orientation must be a flawed concept. It wasn't then clear that C was simple a poor language for object orientation.

    Similarly, most programmers don't see the fatal flaws in C++ and Java. People tend to look at the failings of C++ frameworks, component-based software, and binary platform independence, and deduce that those concepts are flawed. It isn't clear to most people that C++ and Java are simply poor languages for frameworks, and parametric polymorphism, and binary portability. Most programmers never switch languages. Either they don't want to, or the circumstances of their job don't allow them the luxury.


  • One thing I'd like to see is a GNU C# compiler. I assume this will be worked on by those over at egcs, once the standard becomes available?

    Yes, this would be very cool... assuming MS's marketing and legal departments don't piss in the soup and turn C# into yet another MS proprietary weapon to snare customers into an MS-only world. I can imagine them tying key technology into C# and .NET that is somehow covered by MS patents or such, making it near impossible for a truly open implementation to be created. They will of course wait until C# has caught on, then break compatibility at some point in the future. At least that is my fear.

    The designers of C# seem to have done some really interesting things with it, but they are not ultimately free to implement everything in the totally open way that they seem to desire, not unless management allows them to... and we all have seen the track record that MS management has in that respect (cough)Kerberos(cough).

    Excuse me for being skeptical, but I've been burned by MS one too many times.

    Thad

  • what if a problem comes along where I a hex 'driver would be easiest? I'll be ready for it.

    A hex driver is $3.99 and takes 20 minutes to buy (commute to hardware store included) and will solve problems that can only be solved with a hex driver

    A programming language will take a couple of months to get comfortable with (depending on how much time you have to spend on doing other things at the same time...) will cost about $200 in books, lord-knows-how-much in tools and, in the end, there are no problems that only it alone can solve. There comes a point when you have to ask yourself if it's more efficient to get a "new screwdriver" or just get better at using a dime...

  • From the article:

    Only on the .NET platform can you embed Fujitsu COBOL in an ASP page. I mean it's truly revolutionary.

    HAHAHAHAHAHAHA!!! I almost fell out of my chair when I read that. ASP in COBOL???? Revolutionary??? Maybe Microsoft should also bring back some UNIVACS to run their .NET servers on :)

    Never knock on Death's door:

  • ... java also has the tcp/ip libraries and interfaces built in in a programmer friendly way (did Progress?), but in any event you are correct. If you're determined you can always write portable code. Tcl/Tk is another higher-level way of doing portable programs.

    WWJD -- What Would Jimi Do?

  • you're bluffing.
  • Quicker to type, anyhow. I can't bear to see an explicit loop in a one-liner.

    lynx -dump http://windows.oreilly.com/news/hejlsberg_0800.htm l | perl -e 'print -1 + scalar split /innovat/s,join "",;'

    Innovative bogosity rating: 8

    ---
    Despite rumors to the contrary, I am not a turnip.
  • by A nonymous Coward ( 7548 ) on Friday August 04, 2000 @11:54AM (#878916)
    Near the beginning:

    we tried to stay much closer to C++ in our design. C# borrows most of its operators, keywords, and statements directly from C++. We have also kept a number of language features that Java dropped.

    Then about a third of the way thru...

    with C# we were able to start with a clean sheet of paper, so to speak. We did not have any backward compatibility requirements

    Previously the interview had been at least interesting, but from here on he lost all credibility with me. I think he has been absorbed into the borg and has lost the power of independent thought.

    --

  • C# suppots Goto: after 30 years of people trying to get rid of it this misrable programming construct, Microsoft include it in their 'clean sheet' language. How pathetic is that?

    Anyone that tries to pretend that C# isn't a Java ripoff is just completely full of it, and doesn't know a thing about Java. The gall is unbelievable. Its the big lie.
  • by dimator ( 71399 ) on Friday August 04, 2000 @11:59AM (#878922) Homepage Journal
  • "enum" is an enumerated data type. It is used when data is known to be only one of a discrete, finite, small number of options. Instead of encoding them so that they correspond to numbers (hard to read/comprehend) or making them strings (slow processing) you can use an enum. For example, you need to keep a list of the members of your household, you could make an array of strings to hold them but unless you need to manipulate their names as strings, that's wasteful. You could map them to numbers (1=dad, 2=mom, 3=jane, 4=john) but that's hard to remember who is who, So, you set up an enumerated type that can take the values of dad or mom or jane or john like this:
    enum (dad, mom, jane, john) family_member;
    then you can do this assignment:
    family_member = jane;
    Also, since they are a finite, discrete list of values, C actually maps them to integers for you behind the scenes so you can use the enum variable as if it were integers. So, you could do:
    for (int i=dad; i < john; i++) {
    print my_name[i];
    }
    That's a bit easier to understand. Anyway, long-winded, but enums are useful but not the end-all be-all of a language. :)
  • "the idea of having everything in one file is a bit screwy"

    True, but I think the point was that physical
    and logical structure were not tied together,
    the way they are in Java. You *could* put
    everything into one file, split one
    big class into several files, put two classes
    in one file, etc. In pratice, one class per
    file is probablly the best way to go most of
    the time, but I still like the fact that
    you *can* separate the physical vs. logical
    structure of your modules if you want to.

  • This may be a little offtopic, but I program a little bit but never in C++ (yet) therefore the meaning of the word 'enums' is strange to me.

    enum is short for enumerated type, a type with a list of named possible values. For example:

    enum DaysOfTheWeek { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };

    If you define a variable of this enumerated type, you can't assign other numerical values to it (without forcing it via casts or other mechanisms.

    Not a huge deal, but handy, and worthy of mention as a missing item.
  • by KFury ( 19522 ) on Friday August 04, 2000 @12:13PM (#878935) Homepage
    Microsoft doesn't support the CSS standard correctly, just like they didn't support Java correctly.

    While more 'complete' than Netscape's CSS implementation, it's inconsistant, not only internally, but also across Mac and Windows platforms running the same version of IE. Regardless of other browsers, standards don't do the developer any good unless they are actually standard.

    Supporting evidence can be found here [webreview.com] and here [webreview.com].

    Kevin Fox
  • by TheDullBlade ( 28998 ) on Friday August 04, 2000 @12:17PM (#878938)
    You could write a C compiler that had safe pointers. It would generate significantly slower code, but it could be done quite easily. You just treat all memory as bounded arrays, and each pointer as having an array and an index. If the index is outside of the range when you attempt to access the pointer, you get a fatal error. Simple.

    I'm still disappointed that nobody seems to have come out with a universal sandbox that isn't tied to any system or language. Emulation of real-world systems is very complex (and therefore hard to optimize and debug), and if you put in mandatory features like garbage collection in the Java runtime, it's very hard to write compilers for certain languages.

    BTW, I think calling it C# is a cheap stunt that will just add to name confusion. C is all about pointers, if pointers are frowned on as "unsafe", rather than the default way of doing things, it's not C.

    ---
    Despite rumors to the contrary, I am not a turnip.
  • I don't see why this is a big deal; with private constructors and static members, this is exactly the way most people do enums in Java, and they're 100% typesafe there too. yay MS for inventing this new feature.
  • "Parts of Word, internally, use a p-code engine because it's more compact"

    That's first time I've heard the adjective "compact" applied to the ultimate in bloatware. Even Emacs looks compact compared to Word.
  • It's no secret that they are much better at buying and extending than they are at innovating. And actually not everything that buy and extend sucks.. IE for example is much better than any other browser I've ever tried.

    And there's actually little or no Spyglass code left in IE today.

    Simon
  • by Avumede ( 111087 ) on Friday August 04, 2000 @12:40PM (#878953) Homepage
    Give me a break...

    Taking the syntax of C++ is not inconsistent with starting with a clean sheet of paper. Next you'll be saying "Aha, the code is written in ENGLISH! Ha ha ha, and they said they were going to start with a clean slate!"
  • Usually, in a classless OO language, most of the explicitly defined objects clone themselves and act like classes anyway. It's a step towards a fully imperative language, like Perl or Forth, where the definition parts of the language are just more commands to be executed in sequence, unlike, say C, where struct and function definitions are all read and analysed before you are allowed to run any commands.

    However, I think in newtonscript's case, the classes are just hidden and called "types" (however, I could be wrong; I only skimmed the page).

    ---
    Despite rumors to the contrary, I am not a turnip.
  • This notion that C is 100% efficient and gives you 100% performance just isn't true. There's a great interview with Brian Kernighan in which he addresses this issue. He said, yeah, the whole optimizing-compiler, writing high-level code while still keeping the speed of assembly thing was a really goofy idea, and was really more of a marketing thing. He says, in effect, "we could never make a compiled language competitive with assembly's efficiency, and we haven't." Here's the inventor of the language saying that neither optimization nor the efficiency it supposedly provides exists.

    Gosling never said anything about marketing, and he never said that purity and portability didn't exist (for some tasks). Two outright lies by Goodhew. What Gosling said was that some tasks are portable, and some aren't, and Java can handle both of them appropriately. Summarizing this as "Java is not portable, and never has been," is also a lie. Do you think Gosling would be happy with the summary Goodhew gives?

  • Error 406.3 Page unavailable, operator is changing tape
  • by Anders ( 395 ) on Friday August 04, 2000 @02:47PM (#879002)

    Has anyone ever heard what C++ inventor Stroustrup thinks about the latest addition to the C family?!

    Actually, this is in his FAQ [att.com]. Since it is a short answer, I will carbon copy it here:

    What do you think of C#?

    I have no comments on C# as a language. It will take a lot to pursuade me that the world needs yet another proprietary language (YAPL). It will be especially hard to persuade me that it needs a language that is geared for a specific proprietary operating system.

    Clearly, I'm no great fan of proprietary languages, and quite a fan of open, formal standards.
    --

  • C++ is a compiled language - it is designed for compilation. LISP is an interpreted language - it is designed for interpretation. The fact that there are C++ interpreters and LISP compilers does not change this simple fact.

    In my experience with Allegro Common LISP, the compiler produces dog-slow code even on the highest "optimization" settings. I laugh at this paper that "shows" LISP to be 50% faster than C++. There are always articles saying Language X is faster than Language Y, no matter what X and Y are. They set out to prove something, and prove it, by ignoring evidence to the contrary and magnitfying supporting evidence. If you're convinced by this paper, and not just wowed by its conclusion (hey, you obviously love LISP) then maybe I should read it.

    Just looking at CLOS, the amount of effort the compiler has to make just to dispatch a method invocation makes it seem extremely unlikely to me that a CLOS program is ever going to even approach an equivalent C++ program in speed terms.

    Mind you, I only have experience with ACL (Allegro Common LISP) which performs extremely poorly. If you know of a faster compiler which is commercially available, please let me know!!! We have a mission-critical application written in CLOS which needs an order-of-magnitude speed improvement. I was considering recoding it in C++ ;)

    You mention many features of LISP which are useful - and indeed they are. LISP is very good at wrapping things in other things. That's all its syntax does, so it should be ;) However, Smalltalk has an equally powerful object model, and it uses the more friendly infix notation (let's face it, prefix notation is unreadable to anyone but Ubergeeks).

    As to your obfuscated C function, well wow, I've never seen one of those before ;) I can't be bothered decoding that function. It has no comments, no meaningful variable names, and no meaningful function name. If I had to guess I'd say it was doing an operation on a balanced tree.

    But my point about syntax is that C's syntax helps you read the code, whereas LISP's syntax gives you no help at all. Sure you can write ugly C and LISP code, but I defy you to show me pretty LISP code! No-one's saying that every C program is readable - many quite famously are not - but we are trying very very hard to make our LISP code readable, and still failing.

    LISP is certainly a more powerful language than C++, I'll concede that, but that sort of power scares me. Wait until you work on a bigass project and you'll see why.

So... did you ever wonder, do garbagemen take showers before they go to work?

Working...