Please create an account to participate in the Slashdot moderation system

 



Forgot your password?
typodupeerror
×
Ximian GUI Software

Mono Poises to Take Over the Linux Desktop 925

Edd Dumbill writes "Miguel de Icaza and the Mono team recently hosted a two day open meeting in Boston. O'Reilly have just published my report of the meeting. Highlights include Miguel's view that 'C is dead!' and the Mono approach to dealing with Microsoft patents on .NET."
This discussion has been archived. No new comments can be posted.

Mono Poises to Take Over the Linux Desktop

Comments Filter:
  • .NET (Score:5, Insightful)

    by Anonymous Coward on Friday March 12, 2004 @12:25AM (#8539757)
    I realize that this is an unpopular opinion here on Slashdot, but C# is actually a pretty cool language and the .NET runtime is a promising platform. Microsoft didn't just dream this up overnight... they had a lot of smart people working a long time creating this beast.

    It would certainly benefit us to learn about these technologies and leverage them, rather than to unilaterally declare them evil, wrong, stupid, etc. and just bury our heads in the sand and pretend they dont exist.
  • by adun ( 127187 ) on Friday March 12, 2004 @12:26AM (#8539766)
    Aside from being a the primary source of Mediterranean winds, Icaza has apparently forgotten about that whole "Linux" thing that is built on that whole "UNIX" thing that was built using that whole "C" thing. I applaud his salesmanship. I deplore his view that the desktop is equivalent to the operating system.
  • C is not dead (Score:3, Insightful)

    by Yaa 101 ( 664725 ) on Friday March 12, 2004 @12:26AM (#8539771) Journal
    You need a solid underground when programming...

    MS and solid? hmm...
  • by Faust7 ( 314817 ) on Friday March 12, 2004 @12:30AM (#8539801) Homepage
    It would certainly benefit us to learn about these technologies and leverage them, rather than to unilaterally declare them evil, wrong, stupid, etc. and just bury our heads in the sand and pretend they dont exist.

    I think that about a lot of Microsoft technologies -- but to be fair, I'd say that the mere existence of Mono is evidence that a process such as you have described is already in motion.
  • C lives (Score:3, Insightful)

    by Anonymous Coward on Friday March 12, 2004 @12:31AM (#8539805)
    There will still be times for the necessity of optimizing for something for which the .NET JIT compiler will not be sufficient.

    Also, .NET is much like Java, and C hasn't died from the adoption of Java.

  • Overnight (Score:5, Insightful)

    by SuperKendall ( 25149 ) * on Friday March 12, 2004 @12:33AM (#8539829)
    I realize that this is an unpopular opinion here on Slashdot, but C# is actually a pretty cool language and the .NET runtime is a promising platform. Microsoft didn't just dream this up overnight...

    Yes, it took at a least a couple of days to copy all the Java libraries and ReCapitalizeMethods,

    Seriously though, .Net is a nice language with some advancements over Java, but not different enough from Java to make its existence worthwhile. It's just leading to a lot of duplication of effort across the world (like Ant and Nant, or JUnit and NUnit).

    Now if they'd come up with something like Haskel# as the primary language (instead of hamstringing other languages and making all of the core libraries Java like) or something really different that actually advanced the field of programming as a whole, then I might be more appreciative But as it is I see the tremendous duplication of effort across the world to do the same things in Java and C#, and it just makes me sad.
  • by fatboy ( 6851 ) * on Friday March 12, 2004 @12:33AM (#8539831)
    .....at their own game.

    You can't a better .NET than .NET

    Anyone remember "a better Windows" than Windows called OS/2?
  • by Spicerun ( 551375 ) <spicerun AT gmail DOT com> on Friday March 12, 2004 @12:36AM (#8539859)

    As it is, I don't want to even attempt to emulate another 'grand MS idea'...especially since there are already superior non-MS systems out there that puts .net to shame. No, I'm not going to cite those systems...do your own research. You'd be surprised.

    Die Mono Die!

  • Re:Um, no. (Score:5, Insightful)

    by IAmTheDave ( 746256 ) * <basenamedave-sd@yah[ ]com ['oo.' in gap]> on Friday March 12, 2004 @12:36AM (#8539864) Homepage Journal
    Yeah, it's crappy. But heck, it's a move in the right direction. I know certain people (cough... slashdotters) are quite protective of the purity of writing unmanaged code.

    But that said, I have never developed software more rapidly than in C#. .NET has trippled my productivity (on the Windows platform) and my approval rating at work has skyrocketed as I have rolled out several solutions on .NET that are stable, solid, and effective.

    I really wish that Linux had a stable .NET equivelent (sp?) - cause then I could completely abandon Windows at home. But as long as I can code C# with such RAD success, Linux is going to have catching up to do.

    I applaud MONO. It's far from ready, but keep going. Keep working. Please - make MONO (or something else) as good as C#, .NET, and Windows Forms (and hell, ASP.NET) is. RAD is so important in the real world, that Linux would only benefit - incredibly - from a .NET like solution.
  • Re:.NET (Score:4, Insightful)

    by ivern76 ( 665227 ) on Friday March 12, 2004 @12:38AM (#8539883)

    I disagree. After a few months of working with C#, I have come to the conclusion that it's nothing but a bastardized clone of Java that had every little piece of sugar they could snarf from VB and C++ added to it, whether it made sense or not.

    For example, the braindamaged distinction between structs and classes as value and reference types respectively. What if you want to make both value and reference objects of the same class? Or treat the same object as value or reference as needed? The stupidity becomes even more apparent when you find out that the System.Array.Initialize() function will only initialize value arrays, not reference arrays (WTF? Is there ANY reason to even have the [,] array creation operator if you still have to construct the members one by one after creation?). I could go on and on about "features" that were clearly hacked on in five minutes to fit some deadline, with little thought or care.

    C# does have some nice things that, say, Java lacks. Operator overloading, automatic boxing and unboxing of primitive types, and properties come to mind. The first two, AFAIK, will be in Java soon, and properties are just syntactic sugar to replace observer methods. Honestly, I'm not impressed, and I don't intend to use C# ever again unless I absolutely have to.

  • Re:Overnight (Score:1, Insightful)

    by Anonymous Coward on Friday March 12, 2004 @12:38AM (#8539888)
    .NET isn't a language. It's mainly an application framework that can be used in most languages.
  • by konmaskisin ( 213498 ) on Friday March 12, 2004 @12:39AM (#8539902) Journal
    1) Rave about C#
    2) Convert everything to run on Mono C# .Net
    3) Get sued bad by the world's most deep pocketed software publisher except that unlike SCO vs. Linux this time the evidence is on the side of plaintif.

  • What a choice... (Score:3, Insightful)

    by eidechse ( 472174 ) on Friday March 12, 2004 @12:40AM (#8539906)
    I'm not sure I dig the idea that the future of app development comes down to a choice between MS and Sun.
  • Exactly (Score:5, Insightful)

    by SuperKendall ( 25149 ) on Friday March 12, 2004 @12:44AM (#8539934)
    Exactly, there will be "kind of" a functional language - which has to use the same libraries everyone else does, which are all just like the Java libraries. So people using this pseudo-functional language will be hard-pressed to really see the advantages of a functional language as you would if you had a real function language with a set of libraries as broad as that offered by Java.

    I formed this opinion long ago, just around when C# first came out, when I read an article by one of the founder of Eiffel talking about how Eiffel# would work (I wish I had not lost the link - I can no longer find this article). He saw opportunity at that point to gain new Eiffel programmers. But I saw only a tar baby, where the longer you worked with the system the more you just said "Well, all I'm doing is calling C# libraries with this weird syntax so I might as well make life easier by just using C#". .Net and C# is the perfect vehicle to migrate users of all other languages to C#, not really to make life easier on people who want to work in one of the non-C# languages.
  • by Anonymous Coward on Friday March 12, 2004 @12:45AM (#8539940)
    With new versions coming out regularly, any clone will never be caught up to the status of the original project.
  • Hell yea PyGTK! (Score:3, Insightful)

    by 3cents ( 741537 ) <salakowske@PARISwisc.edu minus city> on Friday March 12, 2004 @12:46AM (#8539944) Homepage
    I've been using pygtk on and off for the last year or so and i've got to say that when used in combination with glade it's a real dream to work in. I think if a Visual Basic like IDE could be created for those who are afraid of the deep end of text editor, command line tool development we could have a real open source Visual Basic killer on our hands. And i'll take that over C#/Mono any day of the week.

    slashrank [slashrank.org]
  • by SuperKendall ( 25149 ) on Friday March 12, 2004 @12:49AM (#8539966)
    .Net is the platform in which C# is the closest natural representation of what the bytecode is like. As such, .Net is a vehicle for C# and a distorted reflection of all other languages.

    Yes, .Net is the VM and C# the language. But as Java has shown, it's not really so easy to keep the two wholly separate. They are interdependent to some extent.
  • My guess is that Microsoft will significantly alter the .NET APIs for Longhorn, leaving Mono behind with older legacy libraries that are no longer interoperable with the Microsoft compiler and the rest of the Windows-using world. Needless to say, that would be bad for the Mono team.

    Uhm, why would MS do this? .NET is designed to be and sold as a "cross platform" solution--a real way to do Java's "write once, run anywhere" line.

    Introducing a crippling change for Longhorn would not only hurt this goal, but it'd bring down the rath of a few regulatory agences all over again--and piss off everyone using .NET and not Longhorn.

    Now, if you said "my guess is that MS will introduce custom APIs in Longhorn that make .NET work better", I'd agree with you. But that's not what you said.

  • Why Mono Will Fail (Score:5, Insightful)

    by cryptoluddite ( 658517 ) on Friday March 12, 2004 @12:56AM (#8540014)
    There is almost no difference between C#/Mono/.NET and Java, but almost no Linux developers write in Java. Check out your distribution's packages and you'll almost see more JVMs than Java apps. And for some reason Linux developers avoid Java like the plague, even though it's got a godzillion features that make everything so much easier (garbage collection, huge consistent class library, security, etc). Put in a GTK or QT library interface instead of the slow and huge Swing (that Smalltalkers foisted on Java) and you're golden -- there's every reason to use Java, especially for applications.

    The Linux culture has so far prevented Linux from taking the next step. Just look the (essentially) complete lack of interest in gcj (gcc open-source java). Just look at the slow pace of Mono. It isn't goind to happen anytime soon, unless the Linux app community wakes up and sees the future. Yeah, 10 years from now we'll still be doing manual memory management. Sure...
  • by Dr. Sp0ng ( 24354 ) <mspong.gmail@com> on Friday March 12, 2004 @12:56AM (#8540015) Homepage
    ... to attack Microsoft on the .NET front. We have all the components of a powerful, truly cross-platform development platform; they just need to be packaged in a way which can compete with the cohesive API that is .NET.

    Now, I'm not trying to start a flamewar here, so I'm not going to insist on specifics here, but what needs to be done is to create essentially a "distribution" of a powerful language (I'd use Python), a good cross-platform widget set (I'd use Qt, were it not for the license issues - personally I don't blame Trolltech for the licensing scheme, as $2500 is chump change to any real development house anyway, but in this case it would hinder adoption. Maybe wxWidgets then, or GTK+ configured in a way to appear like native widgets, but gah, GTK+ is such a hideous API), a selection of useful Python (or whatever) modules, and so on.

    Like I said, this is nothing that didn't exist before, but it should be packaged in such a way as to provide a standardized environment on every platform that applications can rely on. Come to think of it, rather than use a specific language like Python, maybe the whole thing should just be wrapped around Parrot.

    Anyway, the specifics don't matter. It's the idea of having a good competitor to .NET with a standardized set of support stuff on each platform, with a single installer to support the entire shebang. Why can't this be done? If I had the time, I would, but I don't. But if there was one place the open source community can take on Microsoft, it's development tools. And the time to do it is before .NET gets too entrenched.
  • by bcrowell ( 177657 ) on Friday March 12, 2004 @12:58AM (#8540026) Homepage
    My perception of the GNOME world is that it's very chaotic, and a lot of people are talking big, but not accomplishing as much as they're claiming. Whenever I try to compile a significant GNOME app from source using the FreeBSD ports system, it pulls in a bazillion dependencies, and at least one of those dependencies is broken and doesn't compile. I'll wait a month or two and try again, and this time, the previously broken dependency is now fixed, but it fails beause of some other dependency. There are some of these, e.g., GNU solfege [solfege.org], that I've been trying to compile for a year or two, and I always fail because at least one of the dependencies is broken. Over all, it just seems like there there are too many big, complicated pieces of software in GNOME, and they're not stable enough: ORBit, pango, atk, etc., etc., etc.

    So now Miguel de Icaza is saying all that stuff is soooo passe, everyone cool has moved on to the next big thing. Excuse me? It can be passe if it isn't even stable and working yet!

    Okay, YMMV. Maybe my experience is particular to what I'm doing, which is compiling from source using the FreeBSD ports system. But I have to say that the experience wasn't much different when I installed binaries rather than compiling from source. The shared libraries are changing their APIs constantly and breaking binary compatibility.

    And then there's the performance issue. The last time I tried the GNOME desktop, it was just ridiculously slow. I mean, I'd click on an icon in the file manager, and I'd have to go get a cup of coffee and come back and see if it had opened it. People said, "OK, that was the old versions, now GNOME is more optimized," so I came back and tried it again, and it was just as slow. Well, if it's that slow when you're running all the stuff written in C, imagine what it'll be like when you're running .NET.

  • Re:C is Dying? (Score:3, Insightful)

    by Canadian1729 ( 760713 ) on Friday March 12, 2004 @12:58AM (#8540031)
    Saying C is dead is such a stupid comment, it invalidates anything else he might say.
  • by WombatControl ( 74685 ) on Friday March 12, 2004 @12:59AM (#8540033)
    Uhm, why would MS do this? .NET is designed to be and sold as a "cross platform" solution--a real way to do Java's "write once, run anywhere" line.

    For the same reason they did it with Java - if it's "write once, run anywhere", then why would you buy Windows licenses? Microsoft (quite naturally) wants everyone to run a Windows server and a Windows client, and having Linux be able to take either role with ease doesn't give them the leverage they need to continue their marketshare.

  • Me too. (Score:2, Insightful)

    by LinuxGuyFriend ( 756285 ) on Friday March 12, 2004 @01:00AM (#8540039) Homepage
    I have a dollar that says C is going to outlast C#. Right next to my other dollar that says UNIX (or derivative) is going to outlast Windows.
  • Re:Um, no. (Score:5, Insightful)

    by cerberusss ( 660701 ) on Friday March 12, 2004 @01:02AM (#8540057) Journal
    I really wish that Linux had a stable .NET equivelent (sp?) - cause then I could completely abandon Windows at home.

    Why don't you use Java?

  • Re:.NET (Score:4, Insightful)

    by willdenniss ( 707714 ) on Friday March 12, 2004 @01:06AM (#8540088)
    here here.

    And, unlike .NET - Java is fully featured across all of it's supported OS's.

    Will.
  • by milest ( 447184 ) on Friday March 12, 2004 @01:07AM (#8540092)
    The article talks about C dying for *user* applications explicitly:
    "A great deal of serious end-user application coding on Linux still goes on in C or C++"
    "Where does this place the future of the Linux desktop..."
    "The expectation for GNOME 3.0, however, is that a lot of the platform will use Mono, rather than the C implementation it has now"

    Probably no one writes kernels in C# and there is less and less reason to write user applications in portable assembly. Programming languages are tools, and we use different tools for different jobs. I prefer to use higher level languages where it is feasible because I'm more productive. I use C where I have to, because it has features that other tools don't.
  • Re:C is dead? (Score:5, Insightful)

    by maraist ( 68387 ) * <michael.maraistN ... m ['AMg' in gap]> on Friday March 12, 2004 @01:07AM (#8540096) Homepage
    C is inferior, yes. It's hardly dead though.

    I think C deserves a little more respect than a blanket comment like this.

    We still have assembly languages today for several reasons, even though it's been "dead" since the 80's. Driver writers, compiler writers, and high performance inner-loops of scientific apps NEED snippets of assembly.

    Thanks to the design goal of c (as the paint on the metal), you can now program in mixed c/assembly and thus never have to actually write anything in raw assembly files anymore. But you still write with the intention of generating specific sections of assembly.

    The people that write c are those that are resource conscious. I am not aware of ANY other language that is allows resource management as well as C. "performance" is just one resource, and I know many argue that JIT's counter-balance the performance advantages of optimized c. I still refuse to belive JIT's have ever approached -O3 performance, but am willing to concede that a well written VM app can perform acceptibly.

    ButMemory is another key resource management position that sometimes requires hard computer science to derive workable solutions.. When you abstract how resources are utilized (via a VM), then it negates the value of such hard computer science. Note that this ONLY applies to a particular problem space. Though, a non-trivial problem space to be sure.

    The point is thus that the classic paradigm of "the right tool for the job" is essential here. There are MANY problems that are best done with low level, very concise languages like c. Most OS components, VMs, or fast-duty-cycle applications should very well have core work done in c/assembly.

    The obvious other end of the stick is managing large amounts of code, for which assembly need not apply, and c is indeed becoming a distant memory as I think you are implying. Yes, web-services and many such fast-to-deploy applications transcend c, but don't be too quick to write-off the value in having a generation of computer scientists that are not well enough versed at writing low level applications.

  • by Why Should I ( 247317 ) on Friday March 12, 2004 @01:11AM (#8540134) Homepage
    If you had even bothered to read the article, or even found the actual original statement you would know it was taken out of context.

    Miguel even says in his very next statement words to the effect "c is dead, except for the JIT".

    In other words, as far as application development is concerned (the main target of the CIL) c is dead.

    Come on, lets not go on flaming without at least considering context.
  • by unoengborg ( 209251 ) on Friday March 12, 2004 @01:18AM (#8540178) Homepage
    My guess is that a PHB is more willing to switch applications as long as they still run in on windows, than to switch from windows to Linux.

    So the most interesting thing for free software is not if windows apps are written in C#. The interesting thing is to port free Linux apps to windows, and so to speek invade the windows domain with free software.

    That way windows users can get a first taste of what Linux can offer without leaving the confort of their familliar windows environment. It will also force propriatory software companies to compete against free software on the windows arena. Their chances of being succesful in that competition increases if they can offer cross platform solutions just like their free replacements.

    If windows users start to use these free apps instead of closed source ones from venders like Microsoft. It will be much easier to switch OS from windows to Linux.
  • Re:Um, no. (Score:2, Insightful)

    by IAmTheDave ( 746256 ) * <basenamedave-sd@yah[ ]com ['oo.' in gap]> on Friday March 12, 2004 @01:20AM (#8540187) Homepage Journal
    How true, how true :) Although, this is coming from a VB job. My position, as a senior software engineer, is one of having to produce massive amounts of working code in short periods of time. Yeah, it sucks. Yeah, it's against everything I hold dear about programming. But Yeah, it pays the bills readily. So we used to use VB for ActiveX mixed with ASP for web front ends where necessary (MS was mandated from above.)

    Now we've moved to .NET and I have seen massive productivity from myself and my staff - and most importantly, it's f'in nice to be back in a C type syntax. Nothing was worse than code sans-line-terminators!

    So yeah, JAVA would be ok but wasn't allowed (prior to my obtaining this position) and VB was already prolific in the enterprise so the move to .NET and C# was more than alright with me.
  • Comment removed (Score:4, Insightful)

    by account_deleted ( 4530225 ) on Friday March 12, 2004 @01:21AM (#8540199)
    Comment removed based on user account deletion
  • by mhesseltine ( 541806 ) on Friday March 12, 2004 @01:21AM (#8540200) Homepage Journal
    Operating systems are NOT, I repeat, NOT in the same boat as operating systems. OS/2 was a "better" windows, but windows already had taken hold of the market. Mono is just allowing current linux developers to take advantage of a very powerful and capable language specification which, BTW, will also allow many people to stop needing to use windows.

    First, I would say that Operating systems are in the same boat as operating systems. Maybe this was supposed to say "Operating systems aren't in the same boat as programming languages"?

    People aren't trying to build a better .NET; we're trying to build a .NET. Is there a .NET for linux?

    Are you implying we shouldn't use .NET on linux merely because .NET exists in windows? I think that's not a very good argument...

    I think the implication is that, if you trust Microsoft to set the standards, you'll spend all your time and effort playing catch-up to them when they change to a new standard.

    For an example of this, look at the Samba project. Yes it's been successful, but look at how difficult some of the advanced functionality was to get correct (Active Directory for starters)

    Mono will always be a second-class citizen in the .Net world, precisely because it isn't supported or backed by any truly large player that can hold some influence with Microsoft.

  • by Captain Irreverence ( 761516 ) on Friday March 12, 2004 @01:27AM (#8540235)
    Mono is a DotNet wannabe.
    DotNet, of course, is a Java wannabe.

    Why not just use Java? Oh, that's right:

    Microsoft - Duplicates anything they don't own and control

    Open Source Movement - Duplicates anything someone else owns and controls
  • Re:.NET (Score:4, Insightful)

    by grennis ( 344262 ) on Friday March 12, 2004 @01:27AM (#8540240)
    What if you want to make both value and reference objects of the same class?

    Value/Reference is a class-based distinction. It has nothing to do with instance, and I can't say I've ever had a real world problem with this. Can you?

    Or treat the same object as value or reference as needed?

    Real world example?

    the System.Array.Initialize() function will only initialize value arrays, not reference arrays

    Of course. C++ is no different. Remember how in C++ you have to write "delete [] x" instead of "delete x"? Simply because you have to communicate to the compiler that it must call the destructor on each array member... but the constructor is much more difficult. What if the array element type has no default constructor?

    I could go on and on about "features"

    And I could equally as well refute your points.

    It is ignorant to simply dismiss .NET or C# because it is something you don't know and don't understand. Take the time to learn it... there are valid criticisms, but you haven't found them yet.

  • by Trejkaz ( 615352 ) on Friday March 12, 2004 @01:30AM (#8540260) Homepage
    So is much of the class library. Same goes for Java, they have a small-as-possible native layer somewhere further down and implement everything above it in the language itself.
  • by Anonymous Coward on Friday March 12, 2004 @01:31AM (#8540267)
    If I need to write a daemon that handles 250,000 hits/hr, I write it in C. Hands down, C is the only language I know where I can control memory and CPU usage. The only language where I can predict what will happen with some accuracy. If I write a program in Python or Java or whatever, it starts consuming RAM, it starts context switching at the wrong times, etc. On a recent Python project I had to actually go into the Python memory allocator (written in C) and do some hacking, because it didn't work right for my project. So obviously C is well and alive.

    If I need to write a quick script, but make sure it's clear enough to understand next week, I use Ruby. A lovely, well-designed language. Why bother with compiling and linking? Go dynamic.

    If I want to use an awesome development environment, I use Mac OS X. Aside: sometimes I wonder if people who rave about the latest scripting language or the latest Windows dev tool, have ever actually *used* NeXTSTEP/Cocoa! It's still light-years ahead of what most people use. Look how many examples in the Gang of Four patterns book come from NeXTSTEP!

    And, if I need to write a .NET program on Windows, I ... USE WINDOWS! Maybe I'll "play" with Mono, but at the end of the day the only reason I'd use Mono is for Windows interop. Not to replace Windows.

    C# is a nice improvement on Java. Which isn't hard to do.

    Like a lot of folks I look at Mono and I just don't get the point of it. It's Microsoft's technology, it's always going to be playing catch-up... to a mediocre environment.

    Give me .NET's dev tools and IDE for Ruby, then I'll get excited.
  • Re:.NET (Score:2, Insightful)

    by Trejkaz ( 615352 ) on Friday March 12, 2004 @01:32AM (#8540275) Homepage
    This is because Gosling is not a mathematician and has never needed to use complex numbers nor matrices in a computer program. Unfortunately then, whenever you do need to use either of these two in Java, you're going to be unhappy.
  • Danger! (Score:5, Insightful)

    by dmiller ( 581 ) <[gro.tordnim] [ta] [mjd]> on Friday March 12, 2004 @01:36AM (#8540297) Homepage

    I respect Miguel, but I think he seriously underestimates the risk posed by MSFT's patents in this area. Quoth the article:

    Microsoft has granted a license to use this technology under so-called "reasonable and non-discriminatory" terms.

    "Reasonable and non-discriminatory" (RAND) does not imply "free". RAND was the proposed licensing requirement for W3C patents that was howled down by the community.

    Given that MSFT is willing to finance SCO to use arguably illegal tactics to destabilise and discredit free software, who would expect that they are above enforcing a small fee for every patent needed to implement Mono? They needn't do this immediately, in fact it is in their interest to wait until the technology is widely adopted, so they can slug everyone at the same time. Note that the usual legal defences against "submarine patents" won't work either if the terms have been disclosed to be RAND all along.

  • Re:C is Dying? (Score:5, Insightful)

    by Ironsides ( 739422 ) on Friday March 12, 2004 @01:37AM (#8540303) Homepage Journal
    Obviously this guy has never been in an Engineering College lately. We are still learning C. Not C++, Not C#, Not Java, C. As in where you have to declare all your variables at the very beginning and can't declare them anywhere else. It's how we program microprocessors (among other things) in something other than assembly. And I highly doubt they will make a Java compiler for PICs, Motorolla HC11 and HC12's and various other devices any time soon. Besides, I here places are still looking for COBOL and FORTRAN programmers. Seeing as how those two are still here, C still has a long way to go before the white lillies come around.
  • Re:c is dead... (Score:3, Insightful)

    by Kaeru the Frog ( 152611 ) on Friday March 12, 2004 @01:38AM (#8540311)
    Is that 'C' or 'C-Bang'?
  • by miffo.swe ( 547642 ) <daniel@hedblom.gmail@com> on Friday March 12, 2004 @01:43AM (#8540337) Homepage Journal
    I think Mono is a really nice way of putting gnome a bit to much in the way of the Microsoft Bulldozer.

    Do ANYONE think that MS would let the oppurtunity to use a patent against OSS go by?
    Without a written consent from Microsoft openly stating they wont sue and slander i cannot give in to Mono. If gnome is built upon it i will go elsewhere with my business.

    Call it damage control in advance.
  • by Skapare ( 16644 ) on Friday March 12, 2004 @01:55AM (#8540401) Homepage

    No language can replace C until it can compile its own compiler written in itself.

  • by Chuck Chunder ( 21021 ) on Friday March 12, 2004 @02:05AM (#8540451) Journal
    Surprise, Microsoft releases .Net for Unix, and the entire effort is null and void. Your pride and joy is now a footnote, and a deprecated one at that.
    Sun produces Java [sun.com] for a whole bunch of platforms. So does IBM [ibm.com].
    Intel [intel.com] have a C compilers on a bunch of platforms. So does GNU [gnu.org] (and Sun, and Microsoft).

    Software doesn't suddenly become useless simply because another vendor releases a competing implentation on the same platform. If MS do release a .NET implementation for Linux then mono will still be valuable. Licencing terms will obviously be one area they compete on. No doubt there will be others.
  • Re:Miguel is dead! (Score:3, Insightful)

    by orthogonal ( 588627 ) on Friday March 12, 2004 @02:27AM (#8540550) Journal
    C is a language with the flexibility and speed of assembly combined with the ease of use of assembly.

    Of course, that's tongue in cheek, and yes, C's concept of arrays is perhaps too tied to a specific kind of machine architecture (and to BCPL's concept of arrays),

    but

    while C is far more portable and easier to code in than assembly, one great feature of C is that, if you know a particular machine's assembly language, you can look at your C code and pretty easily guess what assembly instructions will be generated from it.

    I recall when I was first learning C++ -- and no, I'm not a C++-hating C bigot -- one thing that annoyed me was the realization that what seemed a straightforward C++ function call -- or even more straightforward, an operation like i + j, when performed on class instances, could be much much more involved.

    (Consider the example I just gave, i + j: in C++ this could easily be i.operator+( j ), which might involve an implicit converting function or constructor to make j into the right type for i's operator+, and operator plus could easily be a virtual function that did some work and then called a super-function to do the rest of the work, and it wouldn't be a good operator+ unless it returned by value, which would mean that there'd be a (probably implicit, in the code) call to the constructor for whatever class i was an instance of. And we haven't even mentioned Handle-Body Idiom or Template Method Pattern or Pimpl Idiom or exception handling yet.)

    I soon got over my annoyance when I realized that it was precisely this ability to concentrate this much -- and much of it mostly automatic, as with converting functions of constructor calls -- into the semantics of addition, i + j, that makes C++ such a powerful tool in the hands of the right programmer.

    The trade-off, of course, is not being able to see the assembly language instructions in your mind anymore. The good programmer chooses his tools and his trade-offs.

    So to bring this back onto the topic of the post, I highly doubt C is dead or even dying or even a bit ruffled around the edges -- there are still, and for the foreseeable future, there will be, very very good reasons to use C -- it's the portable lingua franca of programming, and it's a remarkably clear language that allows one to concisely describe what otherwise would require lots more asembly instructions.
  • Re:MonoDevelop IDE (Score:5, Insightful)

    by k_head ( 754277 ) on Friday March 12, 2004 @02:41AM (#8540605)
    Why develop your own IDE? Why not write a plug in for eclipse?

    Bah, you probably wanted something written in C#. So much wasted effort.
  • Re:.NET (Score:4, Insightful)

    by IllForgetMyNickSoonA ( 748496 ) on Friday March 12, 2004 @02:48AM (#8540658)
    Yeah, sure. Last time I checked, there was no operator overloading in Fortran either. Nevertheless, it is still the preferred language for mathematicians (among others).

    Operator overloading, while in some occasions quite handy, must be used with great care. Unfortunatelly, for quite a lot of programmers out there, it seems to be misused as a yet another way to obfuscate a program into oblivion! If you ever get to analyse the code written by a BOOZFH (Bastard Operator Overloading Zealot From Hell), you'll know what I'm talking about.
  • Re:Miguel is dead! (Score:2, Insightful)

    by Anonymous Coward on Friday March 12, 2004 @04:00AM (#8541025)
    "Would it be more secure?"

    Not necessarily. It could just as easily be a gaping hole. It depends on the quality of the code.

    Would it be a bloated pig? Now that's another story. ;)

    Seriously... There is no magic bullet.

    No miracle language, no supa dupa development method, no virtual virtualization, is going to replace a competent coder. Get over it.
  • Re:Miguel is dead! (Score:3, Insightful)

    by kdart ( 574 ) <keith DOT dart AT gmail DOT com> on Friday March 12, 2004 @04:11AM (#8541072) Homepage
    Yep, I read your link. I have a philosophical difference, however. If someone has to know all that esoterica to be a "real" programmer than it's the language that is broken. That language just begs for problems (and bugs).
  • Re:.NET (Score:5, Insightful)

    by ivern76 ( 665227 ) on Friday March 12, 2004 @04:18AM (#8541098)
    What if you want to make both value and reference objects of the same class?

    Value/Reference is a class-based distinction. It has nothing to do with instance, and I can't say I've ever had a real world problem with this. Can you?

    Or treat the same object as value or reference as needed?

    Real world example?


    Easy. Value types allow you to transparently create copies of data, essentially letting you deal with immutable objects without the added complexity of calling a clone() operation every time you need a new copy to work with. This has nothing to do with class characteristics, and everything to do with the particular code you're using.

    the System.Array.Initialize() function will only initialize value arrays, not reference arrays Of course. C++ is no different. Remember how in C++ you have to write "delete [] x" instead of "delete x"? Simply because you have to communicate to the compiler that it must call the destructor on each array member... but the constructor is much more difficult. What if the array element type has no default constructor?

    If it has no default constructor, then you make it an error for value types (duh) and a nop on reference types. Alternatively, you could make it an error on both. If there's no default constructor, you don't call Initialize(). Your comparison to C++ loses, because 1) we're not discussing C++, and 2) we're not discussing "telling" the compiler how to do a job, we're discussing how the compiler doesn't do said job no matter how you "tell" it to.

    I could go on and on about "features"

    And I could equally as well refute your points.

    That's great to hear. Start any time you want.

    It is ignorant to simply dismiss .NET or C# because it is something you don't know and don't understand. Take the time to learn it... there are valid criticisms, but you haven't found them yet.

    I wouldn't go as far as to call you ignorant, but I know for certain it's stupid to dismiss my claim without actually addressing it. If you scroll up and actually read my post and yours, you'll notice that you either didn't read my claims properly, didn't think the matter through properly, or didn't type your reply properly.

    Why do I claim this? Well, 1) you don't seem to understand how you can use value and reference types interchangeably in a real world situation, yet you go ahead and talk about it. 2) You try to address my issue with Initialize() by pulling a textbook Chewbacca defense with C++'s delete[] syntax. And 3) you tell me there's "valid criticisms", yet you fail to mention any. All you know is mine don't work, yet you also fail to adequately explain why.

    In the end, I have no option but to classify you as a troll until you prove otherwise. I suggest you start doing so by addressing my initial post with clearly thought out answers.
  • Re:Miguel is dead! (Score:5, Insightful)

    by Anonymous Coward on Friday March 12, 2004 @04:50AM (#8541183)
    A man is a good programmer or he is not a good programmer. He is not "a good C++ programmer". Whether he has learnt some esoteric nuance of a language does not make him a good or bad programmer. A particular language is just an interface to the act of programming, like a GUI is an interface to the act of using, and if it does something surprising, the problem is likely with the language, not the developer.
  • Re:Miguel is dead! (Score:5, Insightful)

    by Jordy ( 440 ) * <jordan.snocap@com> on Friday March 12, 2004 @05:15AM (#8541252) Homepage
    When over 95% of "C++ programmers" that I interview can't even answer this: straightforward question about virtual methods, I see no hope for the language. It seems most people who claim to be C++ programmers just say that because they use a C++ compiler and stick their functions in objects.

    I'd like to point out that there is absolutely nothing wrong with writing "C with Classes." It makes a whole lot more sense than trying to fake it with structs and function pointers with only a minimal loss of efficiency. Certainly replacing all char pointers with strings would make up for the inefficiency with the huge amount of time saved debugging. Just because operator overloading, templates, references, etc. exist doesn't mean you have to use them. I mean, no one puts a gun to your head and forces you to use Swing in Java just because it is standard.

    Second, that question should have been rather simple to answer for anyone who was aware that the std::complex template has a copy constructor with an implicit conversion. Not everyone knows that simply because complex isn't exactly the most widely used thing in the world. If you are going to ask that quesiton, I'd recommend defining a template in the code to make it obvious.

    The language features in C++ can be abused, but a huge number of errors I see are from misusing APIs and none of the high level languages like Java are going to make sure you are paying attention to what you are doing.
  • by 0x0d0a ( 568518 ) on Friday March 12, 2004 @05:16AM (#8541258) Journal
    Microsoft has a *huge* patent portfolio. If you honestly believe that Microsoft doesn't have at least one patent against most major projects, you're being terribly optimistic.
  • Re:Miguel is dead! (Score:5, Insightful)

    by Pete ( 2228 ) on Friday March 12, 2004 @05:36AM (#8541344)
    ron_ivi:
    When over 95% of "C++ programmers" that I interview can't even answer this:
    straightforward question about virtual methods [www.gotw.ca], I see no hope for the language.

    Seriously dude, that is most definitely not a straightforward question. It's carefully designed to test your understanding of some of the subtle tricks and traps of C++. And one of the "tricks" it uses to mislead you has nothing to do with inheritance, rather with implicit casting.

    I must admit I got tripped up on it though, mainly because I'd forgotten the distinction between hiding and overriding. The question is nasty, ugly, and was intended to be as confusing and tricky as possible... and any programmer that writes code like that (especially something involving changing the default value of a parameter for an overriden method) ought to be shot.

    BTW, if you're asking questions out of GOTW as interview questions, I can only say that that's pretty nasty - except perhaps as a final round question for some of the really cocky smart-arse types :-). Or if you're looking for a seriously hard-core C++ expert, in which case you'd probably expect him/her to have read all of GOTW and Sutter's books and know all the answers off by heart anyway.

    It seems most people who claim to be C++ programmers just say that because they use a C++ compiler and stick their functions in objects.

    There's certainly a depressing number of such people about - though nowadays they're mainly moving into Java, a language better suited to their limitati^Wcapabilities. And I say "Hooray!" to that :).

    Pete (who has for the last two months been maintaining/debugging/adding features to a 1998-era MSVC6 project, written by a guy who really had no idea about C++. Sigh.)
  • Re:Miguel is dead! (Score:2, Insightful)

    by pyrrho ( 167252 ) on Friday March 12, 2004 @06:02AM (#8541497) Journal
    You know what? You don't have to even use pointers in C++.

    The idea that a C/C++ program is more likely to be buggy than a VM that is also a C/C++ program is a bit off. They are both C/C++ programs... hey! I know... do what the geniuses that work on JIT or VMs do!

    I have a theory that programmers should understand memory.

    I also have a theory that next programmers will complain about having to use end-paren and close-bracket... "we're only intested in begining the function parameter list... the computer should close it for us!
  • and of course (Score:3, Insightful)

    by pyrrho ( 167252 ) on Friday March 12, 2004 @06:05AM (#8541523) Journal
    half that esoterica wasn't even implimented while C++ became popular.

    Because functions declared in structures is 90% of what C programmers wanted out of it at the time. Having constructors and destructors was also quite nice. And that is enough to use C++ right there.

    You are not supposed to use all the esoterica.
  • Re:.NET (Score:2, Insightful)

    by gglaze ( 689567 ) on Friday March 12, 2004 @06:28AM (#8541607)
    i think its a solid language.
    but its Microsoft's Language.
    they have never done anything to earn trust.
    atleast sun has.


    Some day i will try to comprehend how anyone can say this. Do you guys not realize that Sun has NOT allowed Java to be submitted to open standards bodies, and instead chooses to keep it proprietary - while microsoft has already submitted C# and fully published it as an open spec?? Since this is the most relevant example of "earning trust" I can think of for the sake of this discussion, I can't imagine what more you need.
  • Re:.NET (Score:3, Insightful)

    by nimblebrain ( 683478 ) on Friday March 12, 2004 @07:05AM (#8541700) Homepage Journal

    For example, the braindamaged distinction between structs and classes as value and reference types respectively.

    I, for one, am glad they put this distinction in. The difference in treatment between the two can have some profound effects on the way allocation, array handling, and memory footprint operate.

    With an array of objects, you get an array of references (checked pointers) to the objects, requiring an allocation per object (the size of the allocation depending on the particular derivative) and indirection to access the pieces.

    With an array of value types, the size can be predetermined (in much the same way stack-based object variables were in C++) and the items therein laid out end to end, giving a single block allocation and no extra reference per item required.

    Some of these pieces are especially important because of the Managed Code model - you can't lay out a stretch of bytes and cast it directly back and forth to an object type. Having tricks like this that can let you keep your performance and still declare the code provably 'safe' is invaluable.

    I've been playing with C# and Delphi-for-.NET, and ported one of my frameworks across. It's been an interesting experience - I was expecting something insubstantial when I first heard about the initiative, but now that I know Anders H. was behind much of it, its low disagreeability factor is well-explained :)

    Operator overloading, automatic boxing and unboxing of primitive types, and properties come to mind. The first two, AFAIK, will be in Java soon,

    I attended a seminar on the Java 1.5 extensions being introduced, and they were: generics, autoboxing/unboxing, varargs (for lack of a better term :), improved and generic-aware for syntax and enumerations. Interestingly, generics made a strong case for a number of the other features, especially boxing (we were treated to "before-and-after" syntax possibilities for each feature). Looks interesting.

    and properties are just syntactic sugar to replace observer methods.

    You're thinking of delegates, and in a way they're syntactic sugar on observer methods, but besides cutting out a lot of need for anonymous or named action observer classes, they implement some of the Active Object pattern with BeginInvoke, which will asynchronously delegate something until EndInvoke is called. Very useful with remoting calls.

    Properties on the other hand are syntactic sugar. Goobery syntactic sugar over the myField()/setMyField() set. I do make a lot of use of them in Delphi, and all they do is basically tie the getter and setter together in an explicit way instead of relying on convention. The main beneficiary of this is the IDE/inspection tools, which can query reflection/RTTI to find out what to display and how to hook up a property update. JavaBeans was in part based on Borland's experience here (I was quite shocked looking at the docco for the JavaBeans and seeing things with names right out of DsgnIntf.pas :) - I believe they ended up relying on naming conventions for Java's purposes.

  • Re:Miguel is dead! (Score:3, Insightful)

    by ron_ivi ( 607351 ) <sdotno@cheapcomp ... m ['ces' in gap]> on Friday March 12, 2004 @07:31AM (#8541825)
    Parent wrote: "usage of c and it's derivatives (c++, objective-c) is more likely create buggy and insecure software."

    However note that you can write insecure code even with MSWord or Excel macros.

    (but yeah, I agree with you in general - high level applications shouldn't be worrying about the stuff you mentioned)

  • Re:Miguel is dead! (Score:5, Insightful)

    by kahei ( 466208 ) on Friday March 12, 2004 @07:34AM (#8541835) Homepage

    I know a dozen other people have probably already said this, but if you think that question measures whether someone is an effective C++ programmer then the problem is with you.

    It's a neat trick and the last bit (where default params are resolved based on static type while method calls are resolved based on dynamic type) fooled me. But it has nothing whatever to do with a software engineer's job, unless that job is writing C++ compilers.

    Put away your book of trick questions and hire a C++ programmer who understands patterns, algorithms, project management, requirements, and important standards and protocols.

  • Re:c is dead... (Score:3, Insightful)

    by Erik Hensema ( 12898 ) on Friday March 12, 2004 @07:38AM (#8541855) Homepage

    I have to agree. C is not suitable for general application development any more. 'back in the day' we were forced to use C because of performance reasons, but now computers have more than enough horsepower to run higher-level languages smoothly.

    You can already see this with web applications: almost nobody writes them in C. They use PHP or Perl. There languages are just far better suited for web development than C.

    It may well be that Mono/C# is becoming more suited for general application development than C. Or maybe Python. Or Perl.

    I think that in the not-so-distant future C will only be used at places where performance really counts, hidden deep away in libraries and the operating system.

    The advantage of replacing C with a higher level language: programmers will be able to concentrate more on the application they're writing and less on the low-level things like coding linked lists, hash tables, etc. This will improve the quality of the applications. Or make applications more complex with constant quality.

    An advantage of C#: developers will be able to distribute just one binary version of their application, it'll run on any platform. Not very important in the world of Open Source, but still a nice thing to have.

  • Re:Miguel is dead! (Score:4, Insightful)

    by RisingSon ( 107571 ) on Friday March 12, 2004 @07:54AM (#8541931)
    Interesting points.

    That link is a good puzzle but I don't know how well its going to help you find good developers in an interview. I remember I was about a year out of college when I discovered such details of C++. I was like, "WTF? I'mn not overloading that one...why am I here?". About 5 minutes and 1 small program resembling the one in your link I had my answer and moved on.

    So was it that one year of experience you would be seeking? Or would it be my problem solving skills that when my code doesn't work I'll find the answer quickly and consistently? When I interview, I try and discover one's problem solving abilities, not one's specific knowledge. It obviously all depends on what role you need filled.

    A C/Java world with no C++? Most of the software I've written in the past few years has been C++ with lots of C influence. Lots of functions, few objects. I probably have more structs in cvs than classes. Its really nice to have my function/struct style code and my message/class style code coexist freely.

    For example, I have a system I wrote that the backend database is all in shared memory. I played with classes in shmem and I put some templates there, too, with the Allocator. In the end, I chose structs because I was able to exploit their fixed size to make things quite speedy.

    But now I have a Phd physicist that needs to do some serious matlab-style maxtrix maninpulation of my struct-based data. And he can 'kind-of' code. It was nice wrapping up access with some matrix classes so it all looked more like matlab to him.

    I think there is still value in having all that in one language, even though it can make it an ugly one.

  • by curne ( 133623 ) <curne&curnomatic,dk> on Friday March 12, 2004 @08:20AM (#8542044) Homepage
    Before you go ripping me about my opinions on Java, ask yourself: Can you program in Perl or Python?

    I code C, Ruby, Perl (when I have to), Java, on a daily basis and I still disagree with you. Before you go making uninformed statements, ask yourself: Have you actually any foundation to make claims about Java?
  • Re:Or... (Score:3, Insightful)

    by ClosedSource ( 238333 ) on Friday March 12, 2004 @09:54AM (#8542525)
    So why did he define an overloaded '+' for strings?
  • Re:.NET (Score:3, Insightful)

    by Cthefuture ( 665326 ) on Friday March 12, 2004 @10:00AM (#8542557)
    C# does have some nice things that, say, Java lacks.

    Add one more to your list:

    In C# it is insanely easy to use external C-based libraries because you just have to "import" the function and away you go. This is much easier than the convoluted Java JNI stuff.
  • by Latent Heat ( 558884 ) on Friday March 12, 2004 @10:17AM (#8542673)
    I am starting to get sold on Python as an alternative to Java, C#, VB, and whatever as a way of developing GUI apps. I see at as the best attempt at bringing a Lisp-like setup (functions assignable to variables, dynamic typing) and I suppose I can live with the warts (white-space delimited -- it makes it readable, but it stumbles when you switch editors with different ideas on tabs and spaces).

    My concern is that Python is still a work in progress as a Java replacement. Notable lacking is an array type (list of elements of all the same type making it more efficient than the list-of-objects approach in both memory and speed). How is a person supposed to do graphics by computing rasters without a good array type? I believe Lisp was originally everything-is-a-tree-data-structure, but they must have added proper array types in the Lisp machine days.

    But what about Numeric? Well yes, you can use C extensions to define whatever kind of Python container object to serve as a proper array, but that container object becomes this atomistic entity that requires copying all the elements in and out to Python lists to interface with just about everything else. And Numeric is a work-in-progress because it is being replaces with NumArray which is in some state of beta test. And are these things standardized enough that you can say (like in Matlab), here is an array of pixels I have created, plot them as a bitmap image?

  • Re:and of course (Score:2, Insightful)

    by Javagator ( 679604 ) on Friday March 12, 2004 @10:47AM (#8542900)
    I agree. C++ is a powerful and expressive language. Mature programmers will use that power to create clear, elegant, easy to understand programs. Immature programmers will use it to create programs that nobody can figure out.
  • BFD. (Score:3, Insightful)

    by Wolfier ( 94144 ) on Friday March 12, 2004 @10:59AM (#8543008)
    Recall this article [slashdot.org]?

    It's just Another effort to make Gnome "multiple programming language friendly" than "user friendly". Geez aren't they obsessed.

    Time can be better spent elsewhere, for example, using network transparancy of CORBA, adding back features deleted from Gnome 1.4 in the name of "simplicity" (sorry, it is not defined that way), creating a better open file dialog box, and fixing bugs.

    I completely agree with this previous story and think Miguel is leading Gnome to a wrong direction. I'll stay with the other favorite desktop.

  • by Rob Riggs ( 6418 ) on Friday March 12, 2004 @11:42AM (#8543372) Homepage Journal
    Performance is the least interesting characteristic of running a language like Python on the .NET CLR. The most damning problem in the ActiveState report is that the CLR cannot directly support a number of Python's language features. You will note that IronPython is not yet passing enough of Python's regression tests to work on many interesting language problems. Once it gets to that point, then I'll be interested.

    But, I think that if anyone can pull this off, Jim can. The concern I have is whether he can keep the language alive. Development on his Jython project seems to have ground to a halt since the release of Jython-2.2a1 last summer.

  • by Anonymous Coward on Friday March 12, 2004 @12:23PM (#8543722)
    I think the implication is that, if you trust Microsoft to set the standards, you'll spend all your time and effort playing catch-up to them when they change to a new standard.

    Yes! This is the biggest problem I have with any Microsoft standard. They have done this since they started; create/coopt a standard, change the standard with every release and deliberately break compatibility with any previous version. It allows them to "churn" all their competition, tying them up with changes just to make existing stuff keep working while Microsoft "innovates".

    Mod me as Troll if you must, but the biggest problem with .NET is not in any technical merits/demerits, it's in the fact that it is Microsoft's!
  • by cgilbert ( 761664 ) on Friday March 12, 2004 @01:35PM (#8544639)
    It is almost ironic, that while both Mono and DotGNU aim to support .NET on Linux and various platforms, Miguel claims that "C is dead" while the folks over at DotGNU [dotgnu.org] have been working on the C compiler portion of pnet. In my opinion, it's much more advantageous to support multiple languages and platforms, as to bring in developer support and a wide userbase, than to narrow yourself to a few platforms (I read about Mono just getting ported to Sparc64, while DotGNU's pnet has ran on it for some time, among many many other platforms. Ranging from the Playstation 2, to the iPaq.) and trying to depreciate (In verbal statements or otherwise) other languages. Sone of the major points of the IL platform in general, are it's ability to run the same binary on multiple platforms and operating environments, and also the ability to compile multiple, and completely different languages to it. It seems like Mono is sort of missing the boat on both of these to a certian extent. Regards, Chris Gilbert (Neovanglist)
  • Re:Miguel is dead! (Score:2, Insightful)

    by Random Hacker ( 748151 ) on Saturday March 13, 2004 @12:05AM (#8549807)
    I would prefer to hire a C++ who did *not* know the answers to those questions. Why? Because a good C++ programmer would never write the sort of ugly code where it would even be necessary to know the anwers to those "language lawyer" type questions.
  • Re:Miguel is dead! (Score:2, Insightful)

    by GenSolo ( 444636 ) on Monday March 15, 2004 @12:18AM (#8565645)
    But I think the main reason it is a higher level language is because java code can run on any machine.
    ANSI/ISO standard C++ code runs on any machine with a C++ compiler just like Java code runs on any machine with a JVM. Note that I'm assuming that you're using C++ for its C++ features and not for some of the ultra-low-level C features like embedded assembly language and what not.

    It is my opinion that jobs are simply human economic slavery (stop rolling your eyes ;) ).
    I am a conservative, but I also agree with you for the most part. Most people do a job that they hate because they have to pay the bills. I wish they could/would do a job that they like instead.

    Therefore, I don't know how you can honestly call for the vast majority of programmers to be fired. If the vast majority of programmers should be fired because they are "bad", then the same should apply to police officers, doctors, scientists, sanitation workers, and so forth.
    Well, I think if they're not good at their job, they should be fired. If you can't handle the job and aren't qualified, then you have no business doing the job. You may think this makes no sense, but I don't think people with no skill should be doing skilled jobs. It's not in the employer's best interest to employ people who suck at their job. I don't think you should develop languages so that bad programmers can make bad software. You should develop languages so that good programmers can make great software. I'd even be ok with allowing mediocre programmers to make good software, but I feel that a lot of the new languages are dumbing things down so that bad programmers can make bad-but-not-terrible software. Yes, C++ allows a bad programmer to make catastrophic software, but they have no business making software at all.

    You seem to create a totally efficient world where humans are operating at 100%. Unforutnately for you, it isn'g going to happen. You literally have to replace humans with robots for that to happen.
    I don't really want 100% efficiency. Sure, it'd be great because 100% efficiency would pretty much mean that humans can sit around and do as much or as little as they want, and everything would "magically" appear like in Star Trek. In our current system though, I just think you should get the best person for the job and develop tools to allow them to work better instead of developing tools to allow unqualified people to work somewhat less dangerously but in other ways more dangerously. (I assert that software should work perfectly, fail gracefully, or fail catastrophicly. Software written in "high level" hand-holding languages by bad programmers will often fail silently, continue running, and break important things due to logic errors. At least C++ will usually cause the problem to dump core due to a memory error before it smashes things up too bad.)

    I expect bad programmers in India just like in USA. In any case, jobs are being outsourced for financial reasons--not quality.
    Perhaps I wasn't clear enough. What I meant was that in my experienced it's bad programmers who get outsourced because you can get better-or-equal performance for a lot less money. Good programmers don't tend to get outsourced because they're cost effective. That is to say, I don't think bad programmers in the US deserve the same salary as good ones.
  • Re:Miguel is dead! (Score:2, Insightful)

    by GenSolo ( 444636 ) on Monday March 15, 2004 @11:42PM (#8575442)
    I don't know THAT much about languages but I don't think C++, even written to ANSI specs, would be machine compatible across platforms. Wouldn't things like 'little endian vs big endian' cause problems? I am assuming those problems don't exist in C# since it uses a VM (that's my impression). In any case, most people don't write ANSI standardized code.
    It's source-portable, not binary portable. Java and C# aren't machine portable anyway. They're bytecode portable and interpreted by the VM into machine code at runtime. That's why I said it's portable as long as you have a compiler, but non-standard C++ isn't C++. Non-standard Java isn't Java, and non-standard C# isn't C#. The standard defines the language.

    Only a minority of people are good (in the sense that they do the work, perform well at school, etc). Yet you cannot only have schools for these good people. You need schools for everyone.
    You can fail them until they learn the material, or you can make the school teach them how to do things in a way that they can learn.

    But that is never the intention. I am sure that the computer scientists who create new languages never have the intention of building a language for bad programmers.
    I'm sure that they don't, but if a language hinders good programmers while enhancing the performance of bad programmers, I think it's a bad language. That's all.

Kleeneness is next to Godelness.

Working...