Slashdot Mirror


Learning Java or C# as a Next Language?

AlexDV asks: "I'm currently a second-term, CIS major at DeVry University. This coming term, I will have the choice of studying either Java or C# for my Object Oriented Programming class. Now I'm a diehard Linux user, so I'm slightly conflicted here. Which should I take?" "I know C#.NET is primarily a Microsoft language, but, with Mono gaining momentum, it could very well become a major development platform for Linux as well. Novell has really been pushing it lately, and there seems to be a lot of very cool Linux apps being developed with it.

Java, on the other hand, is inherently more Linux-friendly due to its intentional cross-platform nature, but at the same time it doesn't really seem to be inspiring the same kind of developer enthusiasm as Mono. However, it's clearly not an insignificant OSS development language, with the recent news that Java has surpassed C++ as the #1 language for SourceForge projects.

Anyway, I though I'd toss that out there and get some opinions from other Slashdot readers. Any thoughts, advice, and/or rants are appreciated :)"

817 comments

  1. Just Pick One and Learn it Well by byteCoder · · Score: 5, Interesting

    For an object-oriented programming language, either C# or Java will be fine. Once you learn the language of one well, you'll be able to quickly learn the simple syntactical differences and nuances when you transfer to the other. The harder (in a relative sense) thing is to learn the class libraries and how to make use of the classes and methods to write your programs. Fortunately, again, there are similarities between the two. When coupled with a good intellisense-style editor, you'll be able to move from one to the other fairly readily, I would think. My advice is to just pick one and learn it well--learning the other at a future time should be a snap. As far as post-college job opportunities, corporations use both (but each corporation tends to focus on one or the other). Perhaps you should do a little local research to see which language/class library is in more demand where you live. I have plenty of consulting friends in the Minneapolis/St. Paul area that focus on each and who are all gainfully under contract (although C# experts are in slightly more demand and can get higher bill rates, unless you're a J2EE expert). For the long term, technologies will change and evolve. Learn the commonalities and the differences between the two and continually re-apply what you know when confronted with new technologies. Be adapable.

    1. Re:Just Pick One and Learn it Well by theGeekDude · · Score: 5, Informative

      Well if you choose Java, then you can use free Eclipse IDE which is excellent. Otherwise if you choose c#, the ony decent ide is visual studio which will cost you a fortune.

      --
      Dont waste you time reading stupid sigs like this.
    2. Re:Just Pick One and Learn it Well by iced_773 · · Score: 4, Insightful


      visual studio which will cost you a fortune

      Come again?

    3. Re:Just Pick One and Learn it Well by PPGMD · · Score: 2, Informative
      Bzzt Wrong, Visual C# Express Edition is free currently. Microsoft has announced in a year that it will be a pay product at $50.

      You can download them for free here. You can also get SQL 2005 Express Edition on the same page.

    4. Re:Just Pick One and Learn it Well by fyrie · · Score: 1

      A fortune if you mean a one year free trial version that has a $50 price tag at the end of one year.

    5. Re:Just Pick One and Learn it Well by Rycross · · Score: 1

      Come again?

      Less FUD please, thanks. :)

    6. Re:Just Pick One and Learn it Well by sedrules · · Score: 0

      Isn't the command line compiler for C# free?

    7. Re:Just Pick One and Learn it Well by Armour+Hotdog · · Score: 1

      C# experts are in slightly more demand and can get higher bill rates, unless you're a J2EE expert

      Huh?

    8. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      He's saying that an "average" level coder in c# makes more than an "average" level coder in Java, but a J2EE "expert" would make more than either.....

    9. Re:Just Pick One and Learn it Well by mabinogi · · Score: 1

      Actually, at our company we use both at once.
      Server side code is written in Java, and the Windows UI code is written in C#.

      --
      Advanced users are users too!
    10. Re:Just Pick One and Learn it Well by moro_666 · · Score: 4, Insightful

      wow, visual studio for free for one year man ... what should i do after 366 days ?

        and did you forget that i have to buy an entire worthless operating system just to run this damn visual studio ? and if i wanna be up to date after 3 years i'd have to buy another bloody version of windows and get another licence for visual studio ... "dam this is cheap ..."

        i'd go with java, but not because of the cost, but because java will be the same after 3 years whereas the next versions of C# will probably blow the current version away. C# is far from being a mature language. your java knowledge today is still valid after 3 years from now. but the C# you learn today may be worth less than my posting here on slashdot.

        i just recently reviewd mono on my ubuntu box, and i'm sad to say that c# doesn't impress me much. i mean it's ok but expected something much more. if it doesn't really offer anything fascinating that java already has, where's the point ?

        ps. was i just lazy while reading the c# api or did i really not spot the dynamic classloaders which open a totally another dimension in java ?

      --

      I'd tell you the chances of this story being a dupe, but you wouldn't like it.
    11. Re:Just Pick One and Learn it Well by Nataku564 · · Score: 1

      Temporarily free.

      Eclipse comes with no restrictions, and is the better IDE IMO. If you use source control on large projects, Visual Studio gets way too chunky. It takes 15 minutes to open one of the apps I maintain.

    12. Re:Just Pick One and Learn it Well by mrRay720 · · Score: 1

      Wrong, actually. If you download and register it before next November it is free for life - it's not an expiring trial edition.

      In addition you can get enormous student discounts of VStudio if you really need the extra features.

      There is also sharpdev as mentioned earlier.

    13. Re:Just Pick One and Learn it Well by Michalson · · Score: 1, Insightful

      Your reading comprehension is rather low (though the fact that you can't even capitalize is a hint). If you could read, you'd realize that it is free to download for 1 year. If you download it for free, you keep it for free, for as long as you like. After 1 year, Microsoft (may) start charging a small amount for it, about the cost of 1 game.

    14. Re:Just Pick One and Learn it Well by Armour+Hotdog · · Score: 3, Informative

      Yes, the command line c# compiler (csc.exe) is part of the free .Net SDK, as are the VB.Net compiler (vbc.exe) and JScript compiler (jsc.exe). There's actually a lot of cool stuff bundled in there, including a debugger and an IL assembler and disassembler.

    15. Re:Just Pick One and Learn it Well by Nataku564 · · Score: 1

      Yeah, but if you have ever noticed just how many flags visual studio puts on there to make the code generate properly, you will know that the command line compiler isn't really an option for larger projects.

    16. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      And Mirosoft Visual Studio Express is not even alpha quality. MS is using the public to test it for them. This steaming piece of ... will not even usccessfully install on many Windows systems. I had one system that it wrecked. On another system it started to install and was nearly finished when it rolled it self back and uninstalled. This is on Windows XP SP2 systems that are clean. You can see further examples at the Microsoft VS Express blog.

    17. Re:Just Pick One and Learn it Well by itomato · · Score: 1

      Java is also a good choice if you want to buy http://www.apple.com/macosx/features/java/>some hardware that comes with a free* IDE.

    18. Re:Just Pick One and Learn it Well by Simon+Brooke · · Score: 2, Informative

      I agree.

      I've been using Java since 1996, and it's served me well. But Sun are being way to proprietary about lots of bits of the language and libraries, and it isn't really an open source system. Same is true of C#, no better, not significantly worse. It's also really wrong to think of these as two different languages - they're /much/ more similar than dialects of LISP, for example.

      --
      I'm old enough to remember when discussions on Slashdot were well informed.
    19. Re:Just Pick One and Learn it Well by Armour+Hotdog · · Score: 1

      That would make sense, but he explicitly said "C# experts".

    20. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      I believe the main costs are incurred here.

    21. Re:Just Pick One and Learn it Well by Gravis+Zero · · Score: 1

      umm... id like to point out that java server at work peaks out an eight CPU unix server and crashes(the server app, not the server) daily if not more. while i realize this is a fault in the program from those damn developers, it the ONLY thing to peak the server. all the other stuff running may have a bunch of bugs but they never go nuts like java. also, my brother's cell phone which runs fully on java, crashes. yes, he has to reboot his phone. it seems java is not good with resources. i also agree with the opinion that java is a dying language. as for me, ill stick to c++. i do my own memory managment because i KNOW what the program is doing and not just hoping.

      --
      Anons need not reply. Questions end with a question mark.
    22. Re:Just Pick One and Learn it Well by Pxtl · · Score: 1

      Agreed. C# vs Java is Coke vs. Pepsi right now.

    23. Re:Just Pick One and Learn it Well by mdman · · Score: 1

      " and did you forget that i have to buy an entire worthless operating system just to run this damn visual studio ?" Like you dont already own 5 copies of windows already! LOL..

    24. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      Yes, it's about functionality and suitability given the requirements, rather than 'fashion' as seems to be the meme here on slashdot ...

    25. Re:Just Pick One and Learn it Well by blueskies · · Score: 1

      In what way do they cripple it to make no one buy their real product?

    26. Re:Just Pick One and Learn it Well by Durrik · · Score: 4, Informative

      I have to agree to Eclipse. I had some co-workers who had to learn Java for various courses they wanted to take, mainly for continuing education. They both came back with the same comment, Eclipse made programming fun again. Just because of that I would promote Java over C#. Most IDEs get in the way of programming, Eclipse actually helps, especially for new Java programmers. My experience with Visual Studio is limited to 5 and 6, and I never could get my head around it properly and always found myself frustrated with it, always going back to emacs.

      The biggest problem with leaning Java is the class libraries. Eclipse makes it easy to learn them, especially with the ctrl-space completion.

      --
      Software Engineer & Writer of Military Science Fiction and Fantasy Blog: petermwright.com Twitter: WrightPeterM
    27. Re:Just Pick One and Learn it Well by geekoid · · Score: 1

      you got some other problem. It shouldn't take you 15 minutes to open an app.

      Yes it is bloated, and has problems, but I have used it with different Source control products and never seen anything that bad.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    28. Re:Just Pick One and Learn it Well by Jezza · · Score: 1

      Err... Mono?

      Head over to Novell and follow the Mono links (Mono doesn't care if you run Windows, Linux or Mac OS X - more than can be said for anyone around here!)

      Choosing C# doesn't mean choosing Visual Studio. On the other hand there are more Java programmers about (hence more help).

      Given a "free choice" of OOP I'd choose Squeak - it too works everywhere, take a look at squeak.org. If you already know C then Objective C would be "learnable" over a couple of days (borrow a Mac over the weekend). If you really love it, but can't quite kick the Linux habit take a look at gnustep.org.

    29. Re:Just Pick One and Learn it Well by LordEd · · Score: 4, Insightful

      and did you forget that i have to buy an entire worthless operating system just to run this damn visual studio ?

      The majority of the world is using that particular worthless operating system. If you program for that platform, you may want it available for testing.

      i'd go with java, but not because of the cost, but because java will be the same after 3 years whereas the next versions of C# will probably blow the current version away.

      Are you sure that Java never changes?

    30. Re:Just Pick One and Learn it Well by geekoid · · Score: 4, Informative

      And your reading cmomprehension is also pretty low. It is for the express version; For practical reasons, it is useless for the professional evironment.

      Also, it won't work whjen the comeout of the next .net framwork, and you will have to buy in order to continue development that includes the newest framework.

      Express editions are NOT compatible with different .net versions. so when you want to clients that may have upgraded, and some that haven't, you will need to keep a different branch of code, and a separate version of VS express, for each .net version.

      So, the first hit is free.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    31. Re:Just Pick One and Learn it Well by geekoid · · Score: 1

      also, I need to hit the preview button more often. Be warned, that's the kind of spelling you get when talking on the phone, waiting for tech. support to return my IM and typing on slashdot.

      Sorry about the butchering that I call spelling.
      But, my spelling will always be better then anything Aaron puts out.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    32. Re:Just Pick One and Learn it Well by metlin · · Score: 4, Insightful

      He's learning the language, not using it for writing enterprise scale apps. There is a difference.

      If you are writing enterprise scale apps, you'd be an idiot to use the express version. If you want to write enterprise scale apps, buy it from MS - what's wrong in MS demanding that you pay them for it when after all, you are trying to make money out of it?

      *shakes head*

      Free for the first hit? Your comparison is ridiculous - they've made it free so that you can use it for educational and non-commercial purposes. If you want to do commercial development, pay them. I see nothing wrong in that - it's the way businesses work.

      But oh wait, you mean they ought to give it to you for free while you can make money out of it? Nice one, there.

    33. Re:Just Pick One and Learn it Well by autopr0n · · Score: 2, Interesting

      The majority of the world is using that particular worthless operating system. If you program for that platform, you may want it available for testing.

      Even more people are running Java capable OSs. In fact, it's a strict superset.

      --
      autopr0n is like, down and stuff.
    34. Re:Just Pick One and Learn it Well by Trepalium · · Score: 5, Informative
      Yes, you were just lazy. They're called assemblies in C#, and you can dynamically load them via the System.Reflection.Assembly.Load() method. It'd be pretty silly to be missing something like dlopen or LoadLibrary in C#, wouldn't it? You typically have to combine that with an application domain so you can unload the assemblies.

      .Net's reflection capabilities are quite a bit more extensive than Java's (there is native support for outputting byte-code and even entire classes at run time). If you want to pick on C#/.Net, pick on it's limited exception handling (unchecked exception handling only makes 'black box' use of objects more difficult), or simply the fact that C#'s feature set is obviously derived from Java.

      As for features that C# offers that Java doesn't... Wikipedia has a list and links to other sites with more. Whether or not you find these features useful or painful is a matter of taste, though. Many of the features of C# were created to make Visual Basic-style GUI creation easy and painless. C# offers operator overloading, true multidimensional arrays, delegates and unsigned types. Unless you have the pleasure of running in an entirely Java/managed environment, those unsigned types are a life saver (or at least a sanity saver). Delegates (multicast function pointers) make wiring up event-based GUIs a little easier. True multidimensional arrays are either invaluable or useless, depending on the kind of software you write. Operator overloading can also be useful, provided it's used carefully (and can cause no end of confusion if it's not).

      --
      I used up all my sick days, so I'm calling in dead.
    35. Re:Just Pick One and Learn it Well by ForumTroll · · Score: 2, Insightful

      I downloaded Visual C# Express just to check it out and it's safe to say that it isn't anywhere near the same level as Eclipse or Netbeans. Furthermore, if there's something that Eclipse or Netbeans doesn't do that you would like it to, there's most likely already a plug-in available that does just that. If not plug-ins for both IDE's are extremely simple to make.

      If you're planning on paying money for an IDE I would recommend IntelliJ IDEA as it beats them all hands down.

      --
      "A Lisp programmer knows the value of everything, but the cost of nothing." - Alan Perlis
    36. Re:Just Pick One and Learn it Well by Axe · · Score: 1

      Compared to IntelliJ, Eclipse is a pile of stinking poo.

      --
      <^>_<(ô ô)>_<^>
    37. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      Well, the Visual C# Express edition simply pales to Eclipse when compared in features and usability. For example, the C# Express edition has 2 refactoring options as Eclipse has 19. Eclipse is extremely customizable (perspectives are wonderful), has integrated JUnit, CVS support etc. in single download. Eclipse also has far superior help system.

      Eclipse is also full of these intelligent little tricks (that you discover more and more over the time) that are mostly non-existant in VC# Express like automatic compiling when you save a file, CamelHumps recognition etc. etc.

      Eclipse is available for Win, MacOS, Linux, Solaris as VS is Win only.

      To hit the nail on the coffin there are more plugins for Eclipse than there probably are for any other IDE, and the best thing is that most of them are completely free. And it's very easy to write a plugin for yourself (nowadays you can even create OpenGL views for Eclipse).

      Now I have no experience of the commercial VS versions but Eclipse beats the VS Express hands-down.

    38. Re:Just Pick One and Learn it Well by rwhamann · · Score: 1

      How do mod something - "last post"? I don't think there's anything to add -- this was an excellent post.

      --
      seg fault
    39. Re:Just Pick One and Learn it Well by iced_773 · · Score: 1


      Well, I must admit that VC++ Express doesn't have a resource file editor, but this is not about C++, it's C# vs Java.

    40. Re:Just Pick One and Learn it Well by cduffy · · Score: 4, Insightful

      But oh wait, you mean they ought to give it to you for free while you can make money out of it?

      That's what their competition is doing.

    41. Re:Just Pick One and Learn it Well by Ravatar · · Score: 1

      A quick browse through that wikipedia page will show you the "philosophical differences" were obviously written by a java developer.

    42. Re:Just Pick One and Learn it Well by metlin · · Score: 1


      Their competition isn't a business (i.e. the OSS community).

    43. Re:Just Pick One and Learn it Well by wwwillem · · Score: 1

      I strongly agree with the parent and the news is even better, because there are two solid and free IDE environments: You can also use NetBeans. A while back I finally gave up CLI based development and installed NetBeans. I had expected a steep learning curve before being productive, but in a few hours I had a fully functional JSP/Servlet application (incl. authentication and session managment) running on the bundled Tomcat server. OK, I had experience with other sw development IDE's (for C) but still, this was pretty painless and impressive.

      --
      Browsers shouldn't have a back button!! It's all about going forward...
    44. Re:Just Pick One and Learn it Well by duffahtolla · · Score: 2, Insightful
      One of the girls that works for me can't drive a damn. She drives a BMW X3, and when I'm a passenger in it I feel that I could die at any moment. But I don't go around stating that there is something wrong with BMWs.

      If java were as bad as you think, it simply wouldn't be used. Not with MS trying to usurp and/or kill it at every opurtunity.

      It's clear that whatever is going on with your server has everything to do with the code and not the language.

    45. Re:Just Pick One and Learn it Well by blueskies · · Score: 1

      Errr. I mean how do they cripple it so people will buy their real product?

    46. Re:Just Pick One and Learn it Well by Ravatar · · Score: 1

      Sure it is, you can simply make a batch file to compile your source files.

    47. Re:Just Pick One and Learn it Well by StarvingSE · · Score: 1

      Most educational institutions will offer legitimate free versions of visual studio .net for students. I'm not saying you can run your business using it, but you can learn with it.

      If your school doesn't have this program, there are a number of places to go on the web to get discounted software if you're a student. Just do a google search for it, you'll find plenty of places to go.

      --
      I got nothin'
    48. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      I'm not sure c# has edit and continue yet. If it does it wins hands down. Nothing better than edit and continue when you are learning.

    49. Re:Just Pick One and Learn it Well by belroth · · Score: 2, Insightful

      You mean Sun isn't a business?
      I know they do some funny things but still...

      --
      I hereby inform you that I have NOT been required to provide any decryption keys.
    50. Re:Just Pick One and Learn it Well by fzammett · · Score: 1, Flamebait

      ctrl-space is NOT learning the class libraries. It is using the crutch that Eclipse (or any IDE for that matter) is.

      There is nothing worse than a programmer who can only use an IDE. I always recommend people use a straigh text editor to learn. Yes, it'll be tougher going, but what you get at the end is someone that actually UNDERSTANDS what they are doing. At *that* point it's OK to move to an IDE because then it becomes what it should be: a tool.

      I personally do all my work in UltraEdit, and am *more* effective than many of the developers I know. That partially has to do with the fact that I type damned fast :) But moreso it's because I don't have to get out of the flow of what I'm doing to run through some wizard who's output code I'm going to have to massage anyway.

      Oh yeah, and for the actual question of the thread: I'd lean towards Java, but I don't think it matters a whole lot, they are close enough that the basic concepts will get learned, as long as the IDE isn't doing all the heavy lifting for you!

      --
      If a pion (n-) collides with a proton in the woods & noone is there to hear it, does lamdba decay into the source pa
    51. Re:Just Pick One and Learn it Well by BorgCopyeditor · · Score: 2, Insightful
      --
      Shop as usual. And avoid panic buying.
    52. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0
      Most educational institutions will offer legitimate free versions of visual studio .net for students. I'm not saying you can run your business using it, but you can learn with it.

      My university had this and it's a very nice perk. Free Windows XP Pro, free Office 2003 Pro, free Visual Studio 2003, etc. Now, technically it's not "free" since the university pays a big chunk of change to Microsoft for this, but they're going to do it whether or not I grab my goodies so I might as well leech at the teet of Microsoft and my university for awhile.

    53. Re:Just Pick One and Learn it Well by BorgCopyeditor · · Score: 1
      C# vs Java is Coke vs. Pepsi right now.

      Given the way that turned out, I think it's the other way around.

      And, a propos of nothing ... *sings*
      You see me now a veteran
      of a thousand cola wars.

      --
      Shop as usual. And avoid panic buying.
    54. Re:Just Pick One and Learn it Well by metlin · · Score: 1

      That's not Sun's primary business - they are a hardware vendor first, and a services provider second. Ergo, it is okay for them to give away products.

      Microsoft is primarily a product development company - it does not make business sense for them to give away their products.

      Your comparison fails because both are different companies with different objectives. MS is trying to sell a product for its platform, Sun is trying to give away a product for all platform, and hoping to make money on services. Sun's foray into products was minimal before Java, likewise, MS is only now seriously entering into the services industry.

      Then again, we all know how well the businesses of Sun and Microsoft are doing in comparison, right?

    55. Re:Just Pick One and Learn it Well by metlin · · Score: 1


      Look at my response to the other poster - it's not Apple's primary business, either. Then again, I do not even know what xcode is, and nor had I heard of it - while am sure that's certainly true for .Net/C#.

    56. Re:Just Pick One and Learn it Well by PPGMD · · Score: 1
      I downloaded Visual C# Express just to check it out and it's safe to say that it isn't anywhere near the same level as Eclipse or Netbeans.

      Examples please, I haven't used Express, since I am an MSDN subscriber. I have been using 2005 since it was released and am very happy with it.

    57. Re:Just Pick One and Learn it Well by metlin · · Score: 1

      But, my spelling will always be better then anything Aaron puts out.

      Indeed. =)

    58. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      haha, go back to the stone age where you belong.

    59. Re:Just Pick One and Learn it Well by blair1q · · Score: 1

      They've made it free because eclipse is about to kick their ass off the IDE map.

      Soon, even the "enterprise" IDEs will be free or nearly so.

    60. Re:Just Pick One and Learn it Well by samkass · · Score: 1

      "There is nothing worse than a programmer who can only use an IDE."

      There are a LOT of things worse than a programmer who can only use an IDE. In fact, that's a triviality compared to everything else about programmers that can cause problems in an organization. And although I can use emacs and such fairly fluently, I still think anyone who's not more productive in a parsing IDE just hasn't taken the time to learn the IDE very well. In addition, I find that developers who use the IDEs tend to produce more correct, maintainable code because of the IDE's assistance. I'm referring especially to IDE's like IntelliJ IDEA, but also Eclipse.

      --
      E pluribus unum
    61. Re:Just Pick One and Learn it Well by joetainment · · Score: 1

      Why shouldn't they give it to me for free? GNU, and the tidal wave of GPL software available does, and they give me the source code too. Frankly, programming with GNU stuff has always been more productive anyway, and less likely to keep you "locked in" in the future.

    62. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      Actually all he did was correct somebody's missapprehension that MSVS was cheap. Nobody is disputing MS's right to charge what the market will bear for the professional edition. It doesn't seem to make sense to buy a crippleware C# IDE when they can get a professional Java IDE for free?

    63. Re:Just Pick One and Learn it Well by Geoffreyerffoeg · · Score: 3, Insightful

      And your reading cmomprehension is also pretty low. It is for the express version; For practical reasons, it is useless for the professional evironment.

      So? I'll learn C# off the Express version, and Java off Sun's compiler. If the company wants to use Java, good for them. If the company wants me to use Visual, let them pay for the real version, and good for them too.

      I'm not seeing the problem. It's intentionally an Express version so people can learn from it for free. In a corporate environment, you pay for a proper version of Visual with better features, more optimization, real support, etc.

    64. Re:Just Pick One and Learn it Well by Geoffreyerffoeg · · Score: 1

      What about just the SDK, as opposed to the Express version (which seems time-limited or something)? I personally develop with GVim for Windows, so the IDEs don't bother me.

    65. Re:Just Pick One and Learn it Well by Javagator · · Score: 1

      I have both the C# and C++ 2005 Express versions. Not a single problem with installation or operation. I also like the IDE. The big plus for me is the excellent EMACS emulation, and the ability to customize the IDE. I really don't like an IDE that hogs the whole screen. I can set the miscellaneous windows to auto-hide and have all editor window on the screen.

    66. Re:Just Pick One and Learn it Well by clearcache · · Score: 1

      From MS's FAQ:

      4. Can I use Express Editions for commercial use?
        Yes, there are no licensing restrictions for applications built using the Express Editions.

      I agree you'd be silly to use it for commerical use, but it seems to me that you can.

    67. Re:Just Pick One and Learn it Well by BasilBrush · · Score: 1

      Your comparison is ridiculous - they've made it free so that you can use it for educational and non-commercial purposes.

      For "educational purposes", other that casual self-education, one year is useless. An institution can't do a course on the basis of a one year lifespan. It genuinely is a "first hit is free" approach.

    68. Re:Just Pick One and Learn it Well by Not+The+Real+Me · · Score: 1

      Based on the notion that the express versions are approx 50 megs and the enterprise versions pack in at 250megs++, you can count on missing documentation, missing help files, missing APIs, missing source libraries, missing interfaces, crippled database connectivity, missing redistribution components, etc. Some of this can be gotten from the MSDN CDs, and some of it can be had by digging around on http://msdn.microsoft.com/

      For a beginner learning OOP, buying an intermediate book from O'Reilly on C# would probably fill in the missing pieces since Microsoft's MSDN has sucked donkey balls since VS6.

    69. Re:Just Pick One and Learn it Well by BasilBrush · · Score: 2, Insightful

      But the question isn't one of whether Microsoft is right to charge for C#. It's one of given the choice of something to learn, which do you pick. The one that's free forever, or the one that's free for a year. The one that has future cost imlications would have to be significatly superior to justify that. Now I'm fairly agnostic on that, my platform of choice these days is Python. But one thisng Java has going for it is that it is truly platform independant. C#, despite the best efforts of monad to fill all the gaps that aren't Windows, isn't. It's a proprietary platform for a single system.

      On balance if I had to go for one, and really couldn't use Python, I'd learn Java.

    70. Re:Just Pick One and Learn it Well by goonerw · · Score: 1

      they've made it free so that you can use it for educational and non-commercial purposes

      The Express editions are also free for commercial use as well.

      --
      LOAD ".SIG"
      PRESS PLAY ON TAPE
    71. Re:Just Pick One and Learn it Well by ForumTroll · · Score: 4, Informative
      I use Eclipse more than Netbeans so let me give a few examples from an Eclipse developer's point of view. Note that some of these issues may have been addressed as it was a while ago when I looked at Visual C# Express. Also, remember I'm talking only about the *free* Visual C# Express and not Visual Studio.
      • Obviously, unlike Visual C# Express, Eclipse is free and comes with no restrictions.
      • Eclipse is open source, so it's far easier for developers to customize and build a platform around.
      • Due to the way Eclipse is structured it's very easy to write plug-ins and because of that Eclipse has a very long list of available plug-ins. Plug-ins exist for practically everything a programmer would normally require. Not only does Visual C# Express not have plug-ins but it doesn't even have macro capabilities.
      • Eclipse has far better refactoring capabilities. It makes it very easy to restructure your code, and it can handle the vast majority of the details (renaming, extracting interfaces, encapsulating fields etc.) itself with no worries.
      • If you're programming in Java, Eclipse's code assist can be linked to the source code and the documentation for not just the standard library but ANY library that the project uses. IIRC, you can do this with Visual C# Express but it's a pain in the ass and it makes you jump through hoops for everything other than the standard library. In Eclipse, this feature is also available for other languages through plug-ins. Another thing that sucked about Visual C# Express was that the code assist would only show one option at a time so you would have to scroll through the list one by one.
      • Eclipse also has a wonderful Javadoc engine which can make writing good Javadocs extremely simple and less time consuming.
      • The code formatter in Visual C# Express sucks and it's not consistent enough that it can be used on large projects. I like to check out my project from SVN and use the code formatter to make the code appear in the style I would prefer. Then before checking the project back in, use another code formatter template to make sure the code that enters the repository in one uniform style. Not only is the Eclipse formatter extremely consistent but it's also is very easy to switch between templates and has nice simple hot keys.
      • Regardless of the language, it's much easier to change compilers/interpreters with Eclipse and it supports many more compilers/interpreters.
      • Eclipse has built in CVS AND SVN support while Visual C# Express has no source control integration built in.
      • I can use Eclipse with a large number of different languages and still continue to use many of the features.
      • Eclipse can be used for building, testing and running Web applications with a number of different server architectures.
      • Eclipse uses ant as the standard for building projects. It also has nice configuration utilities for monitoring the execution of a build file, and for creating/modifying a build files.
      • Eclipse has excellent JUnit integration which makes testing your code easier, while Visual C# Express has no unit testing integration at all.
      • Eclipse has very nice database integration plug-ins available. Including plug-ins that generate diagrams, UML etc.
      • Eclipse has good support for Hibernate/Spring/Struts/JSF and a variety of other popular frameworks.
      • Eclipse has superior debugging support for a wide array of debuggers. Note that I said "support for a wide array of debuggers". Debugging in Visual C# Express, from what I saw in my brief experience with it, is actually very well done and maybe on par (or even possibly better) than Eclipse.
      • Eclipse has better hot keys. Simple refactoring operations almost always have convenient "what you would expect" hot keys.
      • Eclipse has navigational hyperlinks that I can use without touching the mouse.
      • Visual C# Express doesn't have any support for re
      --
      "A Lisp programmer knows the value of everything, but the cost of nothing." - Alan Perlis
    72. Re:Just Pick One and Learn it Well by Mr.+Shiny+And+New · · Score: 2, Insightful

      I guess I'm not exactly clear on how using an IDE that auto-completes stuff means the programmer understands less. I've coded tons in IDEs that did squat, and in text editors, and you'll have to pry my copy of Eclipse out of my cold dead fingers. There's no way I'd want to go back to having to remember every single method of every class again, considering that in a class library as large as Java's, plus all the third-party libs, there's bound to be methods that don't conform to naming conventions. I don't need to remember if the Foo class has a getId or getID method; Eclipse will tell me. But I do need to know what that method does.

      Also, Eclipse provides support for automating repetitive tasks, such as renaming things or moving classes into new packages. These tasks are conceptually simple, yet you'd have me do them in a text editor, making perhaps hundreds of changes by hand. Eclipse can do it automatically, and it's basically flawless, since the change is made through knowledge of the compiled strucutre, so it has to be correct.

      Also, Eclipse can tell me if there are syntax errors in my file as I type them. That saves a lot of time because I can fix things as I go. It's not like MS Word's spell-check-as-you-go... in a programming language if the syntax-check-as-you-go says it's wrong, it's wrong.

      As for wizards, I rarely use them, but every tool has its place. Do you also code your own RMI stubs or have you given in to using the code generator for that?

    73. Re:Just Pick One and Learn it Well by JacobO · · Score: 1

      I agree that Eclipse is awesome, and doesn't really compare with Visual C# Express Edition, but what you are essentially saying is that the product doesn't do things the way you are used to. Developers coming from a Microsoft toolset background will likely find things to their liking, for better or worse. Additionally, some of the differences you cite are more related to the needs and features of the underlying platforms.

      Merry Christmas!

    74. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      Next time you give posters a 5, make sure they know what they are talking about.

      First of all, this guy thinks he knows .NET from using the Mono, a poorly implemented, incomplete stepchild to .NET.

      Second, he is making a BIG assertion about C#'s maturity with no evidence to support it. Although it is a blatant rip off of Java, C# is next-gen Java. Just like Java was next-gen C++. C# is "better" than Java because it is a complete reworking of Java without any of Java's baggage or flaws.

      -billg

    75. Re:Just Pick One and Learn it Well by Debiant · · Score: 2, Insightful

      Well, there allkinds of IDE's and my opionions one good should suffice for all. I use Eclipse and hope it developes to be that one.

      Real problem is that many IDE's are itself buggy or just not intuitive at all. And many make dramatic changes between versions.
      Just image you're doing J2EE application on two or three application serves, and each of them have their own IDE that it is integrated to it. Then imagine you need to do bits PHP, C++ and .NET, and each of those you need second set of editors. Soon you're owner of many editors, which each excel something other doesn't. And a guinea pig for new versions of IDE's from the software vendors or programmers.

      In one project, great problem what a buggy IDE version on all team members computers, that caused allkinds of confusion that slowed us down and frustated us.

      And I do agree that when learning things, use text editos first.
      And I do agree that I wouldn't like to do everything by hand, like writing all XML settings to some application servers Enterprise bean's description file.

      But, one shouldn't be dependant of IDE, it just should help to do faster things you already know how to do, not replace the knowledge. If IDE stops working, then you know what to do, one shouldn't be dependant on IDE in any case.

      --
      Nobody knows the trouble I've seen, nobody knows has the trouble seen me, even I sometimes wonder why I write these line
    76. Re:Just Pick One and Learn it Well by Digital11 · · Score: 1

      Or Nant...

      Our developers use VS.Net for local build and testing, then our daily build is run with a combination of FinalBuilder running nant scripts. Nant is a cake to configure.

      --
      I am a leaf on the wind. Watch how I soar.
    77. Re:Just Pick One and Learn it Well by sproketboy · · Score: 1

      "It'd be pretty silly to be missing something like dlopen or LoadLibrary..." Just like missing checked exceptions? Yeah that would be silly.

    78. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      there are FREE IDE's for c# development borland has one, and there's a open source version called shard develop

    79. Re:Just Pick One and Learn it Well by metlin · · Score: 1

      I agree with you. My point was this - the OP was comparing MS giving away C# for free with drug use, and making some ridiculous comparisons.

      But MS is a product development company. So, they charge you for using their product, which btw, is their primary business initiative (i.e. not services, but products). On the other hand, other competing companies have different business models (Sun's primary source of income is not selling software products).

      So, to expect MS to give away their products for free is pointless. Will they eventually give in? Who knows, maybe when the bell tolls, they just might. But that's not the issue - the issue is that when you are using their products for commercial purposes, there is nothing wrong in them demanding that you pay for the same.

      I'm not a big fan of MS (not that I'm a big fan of Sun or OSS), but like everything else, the use has to be suited to the task and issue at hand. MS does what it should given the circumstances and their business model. Whether or not you choose to accept it is entirely up to you. Like everything else, it has its advantages and pitfalls.

      For all those who scream Java, Java is not truly platform independent, either. And Sun still controls the community process development around Java, and it has its own set of problems. While it is certainly better than MS in some ways, using MS stuff on their platform is usually a wiser idea for businesses.

      Either way, MS is free to charge for using their stuff for commercial development - and yes, I would go in for Java, too, but that was not the issue here, that's all! :)

      (actually, I'd go in for C++ with STL, and if that were not an option, Java, but that's another issue altogether)

    80. Re:Just Pick One and Learn it Well by Foofoobar · · Score: 0, Flamebait

      The majority of the world is using that particular worthless operating system.

      Yes and 80% of the world are morons. What's your excuse?

      Where do you want to point and click today?

      --
      This is my sig. There are many like it but this one is mine.
    81. Re:Just Pick One and Learn it Well by fm6 · · Score: 1
      Free for the first hit? Your comparison is ridiculous - they've made it free so that you can use it for educational and non-commercial purposes. If you want to do commercial development, pay them. I see nothing wrong in that - it's the way businesses work.
      In particular, it's the way IDE vendors work. All of them provide free or cheap versions for academic and open-source development, and expensive versions for enterprise development. That includes IBM, which for all practical purposes still owns Eclipse. True, they've transformed the basic Eclipse product into a freeware, open-source project. But that doesn't stop them from building various "Enterprise Studio" products on it — some of which sell for $10K a seat!
    82. Re:Just Pick One and Learn it Well by nule.org · · Score: 1

      What if you are trying to learn how to write enterprise scale apps? Something that's great about NetBeans/JBoss is that any schmoe can download it and learn J2EE programming writing simple hello world/todo style apps and be using the the same technology that the big girls and boys use. It's nice of them to provide some limited version free, but this is a role for free enterprise-class development environments in learning.

    83. Re:Just Pick One and Learn it Well by goonerw · · Score: 1

      For "educational purposes", other that casual self-education, one year is useless. An institution can't do a course on the basis of a one year lifespan. It genuinely is a "first hit is free" approach.

      FFS. The Express editions are a ONCE-OFF download. There is no ongoing subscription. Currently, you can download it for free. In a year's time, you will have to pay MS for the once-off download. Repeat: There is no ongoing subscription costs associated with the express editions.

      --
      LOAD ".SIG"
      PRESS PLAY ON TAPE
    84. Re:Just Pick One and Learn it Well by kwelch · · Score: 1

      Actually there is a great IDE for both C# and VB.NET available that is free - SharpDevelop http://www.icsharpcode.net/OpenSource/SD/. Until recently it was licensed under the GPL but the latest build of the upcoming release just switched to LGPL. Still, it free and it's source is freely available. Don't know if it runs on Linux under Mono though...

    85. Re:Just Pick One and Learn it Well by Farrell · · Score: 1

      As it says, it's free to download for a year, free to use for life. And the debate is for a single person, so either way, it works.

      --
      I want you to assume that all spelling and grammar errors are intentional. Thank You.
    86. Re:Just Pick One and Learn it Well by PPGMD · · Score: 1
      A number of your comments are on features are ones that Microsoft makes available for it's commercial product. One thing you got to compare is that the Express products is not made for a commercial coding environment.

      Others I have not had any issues with, integrating other libraries and such.

    87. Re:Just Pick One and Learn it Well by m00nun1t · · Score: 1

      It is free for a year, not free for only a year. I agree, MS was pretty confusing about this, you certainly aren't the only one to get mixed up. In other words, get it in the next year and it's free for ever, get it after a year, and you may have to pay for it.

    88. Re:Just Pick One and Learn it Well by nwk · · Score: 1

      Also, download the JDK source code and point Eclipse at the source code archive and you'll get the documentation from the comments embedded with the code for said completion.

    89. Re:Just Pick One and Learn it Well by pilot1 · · Score: 1

      Not completely true, there's also X-Develop.
      It's cross platform, has a GUI designer which works with both Windows.Forms and GTK, and costs less than VS.

      Monodevelop is also coming along nicely. It's not perfect, but it's improving rapidly.

    90. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      Quote from the third sentence of the post you're responding to. Also, remember I'm talking only about the *free* Visual C# Express and not Visual Studio.

      Read much?

    91. Re:Just Pick One and Learn it Well by LordEd · · Score: 1

      Yes and 80% of the world are morons

      Excellent statistic. I believe i will add that to my test of the '4 out of 5 statistics are made up' theory.

      Where do you want to point and click today?

      are you trying to say that you can't point or click in a Linux environment?

    92. Re:Just Pick One and Learn it Well by revengance · · Score: 1

      There is a difference between Eclipse as an IDE and Eclipse as a rich client

    93. Re:Just Pick One and Learn it Well by edy_42 · · Score: 1

      Eclipse is bloated as hell. It is better just to use an editor like emacs or vi.

    94. Re:Just Pick One and Learn it Well by edy_42 · · Score: 1

      Eclipse is bloated as hell. It is better to use a text editor like emacs than a massive ide like Eclipse. As far as what language to learn, it really doesn't matter either way, as a programmer is able to learn new programming languages easily, so you will likely learn both eventually. I've never done any C# programming, but Java programmign is a lot of fun (there is a huge, rich api to use), so I would personally recommend it.

    95. Re:Just Pick One and Learn it Well by EvanED · · Score: 2, Informative

      I hold that Java development in Eclipse is better than any other IDE I've used for any other language, but there's nothing I dislike more than unfair comparisons (okay, that's not true; there's a lot I like less, like, say, wars, but let's stay on topic), so let's remove a couple things from the list.

      If you're programming in Java, Eclipse's code assist can be linked to the source code and the documentation for not just the standard library but ANY library that the project uses. IIRC, you can do this with Visual C# Express but it's a pain in the ass and it makes you jump through hoops for everything other than the standard library.

      I must say that I'm talking out of my ass here, but I can't see this as being true. You need to include the library in the project in Eclipse to get it to give you code assist (or run), and I can't see it taking much more in VC#. But I could be wrong because I don't have any 3rd party libraries to test...

      Eclipse also has a wonderful Javadoc engine which can make writing good Javadocs extremely simple and less time consuming.

      I don't remember exactly what all Eclipse has, but Visual C# does the couple things I tested. (Specifically, if you're writing a function int foo(int i) it will insert the returns and param lines for you.)

      That said, after a quick experimentation can't figure out how to get from the generated XML files (which aren't generated by default) to something like a webpage, but I'm sure there's a way.

      And while I'm at it, let me add that the project configuration is completely different in VC# and VC++. Why is that?

      Eclipse has very nice database integration plug-ins available. Including plug-ins that generate diagrams, UML etc.

      At least the professional versions of VS will generate class diagrams for you. Don't know how close they are to being fully UML compliant (but they look pretty good), how easy it is to use, etc. The help files indicate that the ability SHOULD be in the Express editions, but I can't find it.

      (BTW, I found this when looking for how to refactor stuff in C++, since they are trumping that as a big feature. Turns out it's pretty limited, but you can rename things from the class diagram.)

      In any case, VC++ Express will give you call graphs. (Though not very nice ones; they're set up just using a standard tree control. But it works)

      Finally, I have one gripe about the Eclipse UI. This is based off of 3.0 I think, so it's possible it's been fixed in 3.1. But for things where you right click and do something to an entitiy, say right click - refactor - rename or right click - find references, the basis for what the action is done to is not what you clicked on but the text cursor location. This is a pretty minor thing in comparison to most of the benefits, but it's still maddening.

      Also (okay, I lied about the finally before), Eclipse is decidedly less snappy in terms of response than the Visual Studio Express editions. It's not a big thing, but the computers I've used it on (which are aged but still more than fine for most things) have ever-so-slight delays when opening menus and whatnot.

    96. Re:Just Pick One and Learn it Well by consonant · · Score: 0

      wow, visual studio for free for one year man ... what should i do after 366 days ?

      Microsoft's response, from the FAQ:

      Do customers who acquire the Visual Studio Express products during the free promotional pricing period have to pay after the first year if they want to continue to use them?

      No, as long as you download Visual Studio Express on or before November 7th 2006, you will not have to pay for it.

    97. Re:Just Pick One and Learn it Well by revengance · · Score: 1

      "There is nothing worse than a programmer who can only use an IDE"

      An IDE actually helps and speed up the learning process. I would see learning as a n attitude rather than anything else. With eclipse, I learned about String.split (ok. syntaxically wrong) while I would not have known if I have not take the time to go through the methods that the String class has. A lot of my peers who started from notepad are using StringTokenizer. By really going through what the String.split does, I learn about regular expression in java. My peers are also still using StringTokenizer.

    98. Re:Just Pick One and Learn it Well by ForumTroll · · Score: 1

      "I must say that I'm talking out of my ass here, but I can't see this as being true. You need to include the library in the project in Eclipse to get it to give you code assist (or run), and I can't see it taking much more in VC#. But I could be wrong because I don't have any 3rd party libraries to test..."

      I wasn't referring to just getting code assist working, that's trivial in both IDE's. Perhaps, I could have been clearer. What I meant was this; in Eclipse it's very simple to have the code assist working and this is also very simple in Visual C# Express. However, where Eclipse shines is that the code assist can also be linked to the documentation and the source code of that particular library. With a few simple keystrokes I can be looking at the Javadocs in another window or even in a separate web browser. Even the code assist drop down box in Eclipse can be set to include Javadocs explaining the methods, parameters etc. of that particular class/method/interface etc. So basically I have the source code of the library (if available) and the Javadocs, all with very easy navigational hyperlinks. This cannot be done in Visual C# Express.

      "At least the professional versions of VS will generate class diagrams for you."

      I tried to be clear in my original post that I was only referring to Visual C# Express. A number of my complaints are not valid when talking about the full version of Visual Studio\Visual C# etc.

      Cheers.

      --
      "A Lisp programmer knows the value of everything, but the cost of nothing." - Alan Perlis
    99. Re:Just Pick One and Learn it Well by WaterBreath · · Score: 3, Insightful

      "It'd be pretty silly to be missing something like dlopen or LoadLibrary..." Just like missing checked exceptions? Yeah that would be silly.

      I'm pretty sure dynamic class loading has been around longer than Java, or even unchecked exceptions. So I say it would be sillier to be missing a way to dynamically load classes.

      Out of curiosity, how many "major" languages have checked exceptions? Java is the only one I can think of off the top of my head.

      It's been a while since I worked with Java, and I'm far from an expert. But when I was dinking around with it, I found it extremely annoying that I had to label every function that could possibly throw an exception. The compiler needed to be smart enough to detect whether a function might throw an exception, in order to tell me that I had forgotten to label it... So if the compiler can tell this without me telling it so explicitly, that pretty much relegates the label to syntax-enforced documentation.

      Not to mention people got so sick of being required to write pointless code to handle pointless exceptions, that they figured out a ways to hack around it, making the checking useless:
      http://www.oreillynet.com/pub/wlg/5559

      All of that seems silly to me. But that's just MHO.

      Or maybe it's not just mine. This guy, and many others, seem to agree that checked exceptions in general are kind of silly:
      http://www.mindview.net/Etc/Discussions/CheckedExc eptions

    100. Re:Just Pick One and Learn it Well by psu_whammy · · Score: 1

      The competition is not a business trying to make money. Apples are not oranges.

    101. Re:Just Pick One and Learn it Well by EvanED · · Score: 1

      However, where Eclipse shines is that the code assist can also be linked to the documentation and the source code of that particular library. With a few simple keystrokes I can be looking at the Javadocs in another window or even in a separate web browser. Even the code assist drop down box in Eclipse can be set to include Javadocs explaining the methods, parameters etc. of that particular class/method/interface etc. So basically I have the source code of the library (if available) and the Javadocs, all with very easy navigational hyperlinks.

      Ah, okay. Gotcha.

      I tried to be clear in my original post that I was only referring to Visual C# Express. A number of my complaints are not valid when talking about the full version of Visual Studio\Visual C# etc.

      Well, I'm not entirely convinced that it's not in Express. There's talk of how to do stuff with the class designer in the help files, which are explicitly marked for the express editions, and there's no mention that things like that are valid only for the full version. So I'm not sure if I just didn't find it or if it's not there and there was either a miscommunication, late decision, or just no effort on the part of the help people to specialize it for the express editions.

    102. Re:Just Pick One and Learn it Well by Foofoobar · · Score: 1

      It follows the '90% of everything is crap' principle. 90% of poetry, music, books, tv, movies, software, users, etc. are all crap. If you don't believe it, it's only because you are a consumer of crap.

      Genius is less than 10% of the population and as such, only 10% of produced goods can possibly be of an exceptional quality. This goes for art, music, software, etc.

      The principle is unarguable and your reply exemplifies this.

      --
      This is my sig. There are many like it but this one is mine.
    103. Re:Just Pick One and Learn it Well by vijayphilo · · Score: 1

      If a person wants to program on Linux, then Java is probably a better option than C#. Will Mono continue to give all the features available in C# .NET? With all programs be 100% compatible between the two platforms? I doubt it.

    104. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0
      "But oh wait, you mean they ought to give it to you for free while you can make money out of it? Nice one, there."
      Actually, Microsoft only pulls this shit because they can. Apple's got some very fine developer tools in XCode and Interface Builder, for instance, and the Cocoa framework rocks... and it's free, bundled with the OS. For a minority player like Apple, more developers mean more apps, and more apps mean bigger sales for Apple.

      Same goes for Microsoft, but because they already own such a large market share, they don't worry about charging for admission; they know developers will come knocking on their door no matter what they do. Microsoft could give away the developer tools, but feel no incentive to do so. Nothing you do is going to help Microsoft increase their market share substantially, so they can treat you like crap if it suits them.

      Would Apple do things differently were the roles reversed? Maybe, maybe not; odds are, we'll never know. But we know that Microsoft is happy to make a fast buck off developers, and as developers we can rightly criticize them for their greed.
    105. Re:Just Pick One and Learn it Well by akeyes · · Score: 1

      Please tell me that this is nothing like FrontPage Express.

    106. Re:Just Pick One and Learn it Well by fzammett · · Score: 1

      Geez, pardon me, forgot for just a moment where I was posting. This is Slashdot, home of people who cannot or will not actually READ things.

      What I said was "There is nothing worse than a programmer who can only use an IDE". Notice the word ONLY in there? No, sorry, that would mean you actually READ *and* COMPREHENDED.

      There are developers in this world that cannot write a program unless they have an IDE filling in all the blanks. They simply do not know enough to do it on their own. THIS IS BAD!!! If you don't think so, you should find a new career, you don't belong in the IT field.

      There is *nothing* wrong with a developer who knows their stuff and uses an IDE to make them more effective. That means the IDE is serving the purpose its supposed to: BEING A TOOL.

      Do I give a compound miter saw to someone that doesn't know angles and couldn't do the same thing, albeit less efficiently, with a protractor and pencil? No! It's stupid! You have to understand what the tool is doing for you or you will ultimately be just about worthless.

      As for *learning* with an IDE, which is a different topic, I believe it turns out programmers who don't know their stuff because it hides many of the details. Well, I guess to be precise, it hides the *why*. IBM's Java IDE from years ago who's name escapes me for example, had this neato little GUI editor... draw some shapes on the screen, draw some lines to denote interactions, click a button, and out came gobblygock Swing code. Some say that's more efficient because you can do it in five minutes and don't have to actually understand Swing. I saw that's a load of crap because what happens when it doesn't work quite like it's supposed to (not exactly unusual for an IBM product) and you have to go fix it by hand? Guess what? Many developers can't because all they learned was how to push some buttons in a fancy IDE. The situation is only made worse because the generated code was done pretty poorly to begin with, but even if it was perrfect the point would still stand.

      IDEs are tools. They should *not* be a substitute for a good developer. A good developer should only be made *better* by an IDE.

      And as for the stone age comment... grow up. If you don't understand that people work at their peak efficiency in various ways, you need to get out of this industry too. IDEs can very much get in the way sometimes, and some of us have determined that none of them (currently) make us better. And if I'm in the stone age, fine, I'll stay here because I make a damned good living in it and I know for sure that I know what I'm doing, I'm not hiding behind something that does half the thinking for me. I'll pit my skills against almost anyone, and if I don't come out on top it won't be because I'm using UltraEdit and their using Eclipse, it'll be because they are actually better and would beat me if we were using the exact same tools, which is as it should be. But, I'll tell you this: I'll clobber many people that bring their big, fancy IDEs to the party, no question in my mind about it.

      --
      If a pion (n-) collides with a proton in the woods & noone is there to hear it, does lamdba decay into the source pa
    107. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      A nonprofit, nonbusiness organization that successfully convinces your prospective customers not to buy your product is your competition whether you want to believe it or not, whether they qualify as "a business" or not.

      Entrepreneurs who don't grok this won't last very long.

    108. Re:Just Pick One and Learn it Well by size1one · · Score: 1
      Many of the "features" you mentioned are only available in eclipse from plugins. I've tried using eclipse but I prefer intelliJ because the things you mention are actually part of the IDE instead of barely working plugins.

      Don't get me wrong though I'm compeletely for open source and think eclipse is a great project i just see major issues:

      • plugins don't integrate well
      • configuration is a pain
      • not very intuitive at all

      This is to be expected with any large OS project. You have lots of features being developed by many different people. Without organization between the various programmers there isnt consistency between the features. Give it time and eventually the mess will get sorted out. Unfortunatly an IDE is the most important tool to a developer and we have to use the tools that are out there now. Commercial products will always be ahead of OS for features.

      JFYI our shop develops only OS products and we prefer workers to use OS products (eat your own dogfood) but we also want them to be effective and happy. As a test we had new hires with no experience try both intelliJ and Eclipse. Eclipse took considerably longer to configure, if they could get it working at all. Jetbrains offer free licenses for opensource projects so there is no additional cost to us for more efficient workers.

    109. Re:Just Pick One and Learn it Well by metlin · · Score: 1

      But see, it does not matter - as long as you use their stuff, they are free to charge/not charge. And if you develop commercial applications, there is nothing wrong for them to charge, since they are charging the company, not the developers - a business making a profit is a different issue in comparison to an individual.

      That's entirely up to them, and as someone with with a couple of businesses, I see nothing wrong in it, that's all.

    110. Re:Just Pick One and Learn it Well by Drysh · · Score: 1

      I think you missed the point about Free Software. You may sell it! Specially if you are a programmer hired to create a software. You just have to sell all of it, not a license to use it but not look into it.

      What they made is a trap! You learn Visual Studio and after that, you will have to pay for the real thing. Hail the all-mighty monopoly! They are good at it... Unfortunately they are very good at it. :-(

    111. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      You're exactly right, you can't argue with nonsense.

    112. Re:Just Pick One and Learn it Well by LordEd · · Score: 1

      The principle is unarguable and your reply exemplifies this.

      "Crap" is subjective and is not quantifiable. Perhaps 90% of everything is crap in your opinion, in which case it is unarguable because you can believe whatever you want.

      Your post originally claimed 80% morons. Your reply claims that 10% in the world are geniuses. That means that only 10% of the world is 'normal'. Care to make up any more statistics?

    113. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0
      Possibly at the risk of answering flamebait (is it possible to have "anti-microsoft" flamebait on /. ?), I would like to point out that you are comparing to the Express edition. This in itself is fine.

      What makes your comments so stupidly biased is that most of these features are avaliable in Visual Studio 2005, the *enterprise* development tool. A person learning C# for the first time would not need these features, and when they do themselves move to developing full applications, may purchase (for a reasonable price, I might add) VS 2005 (Think CVS/SVN).

      Just because you say

      Also, remember I'm talking only about the *free* Visual C# Express and not Visual Studio.

      does not mean that your points are any more valid.

      Essentially, we all don't like Microsoft, but I really doubt that you personally have used Visual Studio for any length of time. It really is the best IDE out there by a far margin. Remove the Microsoft Logo and change .NET to java, and you'd all be running over each other to praise its usefullness and ease of use.
    114. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      Are you sure that Java never changes

      Deprecation only means you *shouldn't* use those methods, because they are buggy or because better ones are available. You can still use them if you want. Sun haven't removed stuff from 1.0 that was deprecated in 1.1 (for instance deadlock prone thread methods), so it is doubtful they ever will. I wish they would though, it would make the VM smaller and beginner learning easier.

    115. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      check out MS Visual Studio Express C# for FREE
      http://msdn.microsoft.com/vstudio/express/default. aspx

    116. Re:Just Pick One and Learn it Well by Foofoobar · · Score: 0

      Like I said, you obviously belong in the 90%. Again, your attempt to negate this law of nature by calling it into question proves your inability to comprehend this inevitable truth. If you belong to the 90%, you will never see this. True it is subjective but one can argue that everything is subjective. It still won't change that this still holds true and you are the only one arguing it proving even further your placement within the majority.

      --
      This is my sig. There are many like it but this one is mine.
    117. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      The lack of checked exceptions are one of the reasons I favor C# over Java. Checked exceptions were created by people who have a fundamentally flawed view of exception handling and what it's supposed to be.

    118. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0
      Genius is less than 10% of the population and as such, only 10% of produced goods can possibly be of an exceptional quality. This goes for art, music, software, etc.


      That's assuming that genius produces at the same rate as everyone else. I mean, if the crappy artists work isn't bought, they may end up quitting and working at a coffee shop. Then again, it isn't inconcieveable that the crappy producer of X doesn't whip their crap out at a much higher rate than the genius. Who knows...
    119. Re:Just Pick One and Learn it Well by metlin · · Score: 1


      If you are a business, it makes little difference. Microsoft does not care about smaller developers, their target is big business. While licensing costs maybe a pain, it comes with the added benefit of customer dependence (i.e. you are dependent on MS and in turn, your customers are dependent on you), which drives business. Also, a customer would trust me more if I suggested a Microsoft platform than if I did an Open Source one (hard truth). In fact, most would not even know about OSS, so that's another issue. Besides, if they want Microsoft stuff, I'm just going to pass on the added cost to the customer, which is fine by me. There are some obvious benefits (and pitfalls, of course) to being a Microsoft shop.

      So, from a business perspective, MS makes sense. Sure, as a single developer, hack around as much as you want - but as a commercial entity, associating yourself with a company usually works better in the long run (be it MS, Sun, IBM whoever). Definitely beats OSS, unless you are willing to run the risk (and if time does not mean a thing to you - OSS is nice if your time is not money).

      Is what MS doing helping a monopoly? Yup. But does it work? Also yes. Does it help businesses make money? Yes, sir! So, there you go. That's the bottomline.

    120. Re:Just Pick One and Learn it Well by SanityInAnarchy · · Score: 1

      One fundamental flaw in your argument:

      You're assuming that enterprise scale apps are always for-profit and proprietary.

      They aren't.

      --
      Don't thank God, thank a doctor!
    121. Re:Just Pick One and Learn it Well by metlin · · Score: 1

      Well, I did mention this later in my comment:

      If you want to do commercial development, pay them. I see nothing wrong in that - it's the way businesses work.

      Quite obviously, I was talking about commercial enterprise development. I should have thought it was obvious what I was talking about?

    122. Re:Just Pick One and Learn it Well by anonymo · · Score: 1

      "But oh wait, you mean they ought to give it to you for free while you can make money out of it? Nice one, there."

      Well, actually MS is making money by every 3rd party application: the more applications the more dominating OS = more buyers for their products.
      Of course MS has never heard of sharing.

      BTW I see in the header of your comment that you're using Wikipedia as a free advertisement and homepage fo yourself.
      Nice one there. Really Cheap!
      *shakes head*

    123. Re:Just Pick One and Learn it Well by deaddrunk · · Score: 1

      Some of the contributors to the competition are indeed businesses trying to make money.

      --
      Does a Christian soccer team even need a goalkeeper?
    124. Re:Just Pick One and Learn it Well by metlin · · Score: 1

      MS is a business - they have no reason to share, they exist to enhance *their* shareholder value. What's your point? They're not on a mission of goodwill, they are a profit making corporation. If you're looking for sharing, go look at a Church or a charity.

      And oh, that's my Wikipedia profile page - hardly a home page, it contains a list of contributions that I've made to Wikipedia. Most Wikipedia contributors have such pages.

      *shakes head on the ignorance of people*

      Then again, I'm sure attacking me makes more sense to you than attacking my points.

    125. Re:Just Pick One and Learn it Well by cyberon22 · · Score: 1

      Since this is a substantive post, let me add my own thoughts in the event someone reads down this far:

      Java is exceptionally useful for getting things done. It makes it easy to throw a variety of software services together and link them with an easy GUI. I recently developed some recording software (fetch data from microphone, automate file creation and storage) which took a few hours to put together in Java and cost nothing. A cheap recording studio. This would have taken significantly more money and time to develop on a Microsoft platform.

      The problem is that if you want to sell software you can't really ask users to download the JRE and manually invoke programs. So the issue is really whether the submitter wants to be able to produce commercial applications for the Windows environment.

      So my suggestion is java, java, java.... unless you need to produce software for sale to end-users on the Windows platform, in which case it very difficult to distribute java apps commercially.

    126. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      Of course you think you belong to the 10%?

    127. Re:Just Pick One and Learn it Well by jsoderba · · Score: 1

      I don't see what this has to do with Visual C# Express. There is no time limit for it.

    128. Re:Just Pick One and Learn it Well by anonymo · · Score: 1

      Sorry, this is going a bit Off-topic:

      "MS is a business - they have no reason to share, they exist to enhance *their* shareholder value"
      And exactly that was the problem of the guy you replied to in an arrogant way. MS is just taking never ever giving back. and of course this is the way companies are working.
      And that is the reason why this company-centris way of life sucks.

      "If you're looking for sharing, go look at a Church or a charity"
      Have you heared of Open Source lately?

      "Most Wikipedia contributors have such pages."
      IMHO another stupid feature of Wikipedia. Just like Jim making himself sound better than he is. A collaborative rating system would be much more democratic than this anarchy were the loudest wins.

      "Then again, I'm sure attacking me makes more sense to you than attacking my points"
      *shakes head on the ignorance of people*

    129. Re:Just Pick One and Learn it Well by zootm · · Score: 1

      That's what their competition is doing.

      And yet, somehow, they're still around. God forbid that more than one business model exist.

    130. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0
      java will be the same after 3 years

      You think so?

    131. Re:Just Pick One and Learn it Well by Cederic · · Score: 1


      On the whole I think you gave a balanced view. A couple of points

      >> Unless you have the pleasure of running in an entirely Java/managed environment, those unsigned types are a life saver (or at least a sanity saver).

      I've never yet had a problem with the lack of unsigned types in Java.

      >> Operator overloading can also be useful, provided it's used carefully (and can cause no end of confusion if it's not).

      This is why I hate it. There are too many utter muppets out there writing code, and given a tool that lets them completely bollocks up they'll take full advantage. Sure, they may write code that works - but I want code that's maintainable.

      But as the top rated comment in the article says - pick either, and learn it well.

    132. Re:Just Pick One and Learn it Well by Cederic · · Score: 1


      >> what's wrong in MS demanding that you pay them for it when after all, you are trying to make money out of it?

      It's their choice. But when I'm about to write software that'll cost companies a six digit sum in database, OS and other software licences to run, would you rather I wrote that software for your OS, your database, or your competitors'?

      Just on that basis alone, Java has a massive head start. Free to get into, free to get a world class IDE, free for the OS to run it, free for the enterprise class application servers if you need them.

      Of course, there are also commercial alternatives for all of them. Choice in the marketplace? Great joy.

      >> But oh wait, you mean they ought to give it to you for free while you can make money out of it? Nice one, there.

      I'm not going to pay them money to write software that by default generates them far more money. Especially when it's not (yet) a better solution choice.

    133. Re:Just Pick One and Learn it Well by chrome · · Score: 1

      I really hate it when someone counters everything with a "But, Apple do it!" ... in any case ... here goes:

      But oh wait, you mean they ought to give it to you for free while you can make money out of it? Nice one, there.

      But, Apple do it! (sigh, *embarrassed*)

      We have not seen whether or not this business model is successful ... they seem to be enjoying moderate growth but nothing anyone would call fantastic. However, maybe in a situation where you are not the monopoly (ie, not Microsoft), you have no choice but to give your development tools away for free to encourage support for your platform.

      So, getting to the point, there is nothing wrong with any company requiring you to pay for their development tools per se, however it is symptomatic of the kind of vendor lock-in that one should (in my opinion) strenuously avoid if you ultimately intend to write software for profit.

    134. Re:Just Pick One and Learn it Well by sproketboy · · Score: 1
      Yeah and other people disagree.

    135. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      NetBeans is better, but, the Programmers who have picked JAVA are BETTER PROGRAMMERS.

      For Example: I've come across a how army of C# programmers who think it's a GREAT IDEA to code STATIC Classes.
      - Not Scalable, because they cannot access instance data in the class.
      ( You can't cache data in the class for efficiency and use static classes )

      Microsoft programmers fall into two catagories:
      - The EXTREMELY BAD/LAZY
      - Some Genius's

      You don't find many Very Good C# programmers.

      In JAVA you find a Lot of Very Good Programmers.
      Your first language should be JAVA and you should try to be Very Strong in OOP concepts.
      In the Micorsoft world, they de-emphisize OOP concepts for short cut coding practicies.

      Summary:
      Go C# and Learn to be a BAD Coder.
      Go Java and you will code well on Both Platforms.

    136. Re:Just Pick One and Learn it Well by trezor · · Score: 2, Insightful

      That's a grudge with developers, not the language. And that argument goes for any language. Give a lousy developer a tool and he will abuse it to no end.

      Personally... I've coded both Java and C#, and to be honest.. I prefer C#. I think it's all the goods of Java plus a little nice extras.

      --
      Not Buzzword 2.0 compliant. Please speak english.
    137. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      MS is only confusing about this if you lack the ability to read. They've answered this question quite succinctly in the Express edition FAQ ever since the product first launched and the announcement was made:

      http://msdn.microsoft.com/vstudio/express/support/ faq/#pricing

      12. Do customers who acquire the Visual Studio Express products during the free promotional pricing period have to pay after the first year if they want to continue to use them?

      No, as long as you download Visual Studio Express on or before November 7th 2006, you will not have to pay for it.

    138. Re:Just Pick One and Learn it Well by GamerGeek · · Score: 1

      It's interesting that you dislike checked exceptions. Unchecked exceptions was one of my most frustrating complaints with C#. With unchecked exceptions you never know when something will go wrong or how it will go wrong. My best example was a library I was using to connect to an FTP server. I was able to quickly write my code to connect and do the job that needed to be done. Nowhere was I informed as to what exceptions could be thrown. So when I finally threw this program out into the whiled firewalls started blocking it and connections kept dropping I had no way of catching the exceptions and doing something intelligent. Catching the generic exception was not informative enough. I had to run it, MAKE the exception happen then find out the class name and THEN I could catch them and do something intelligent about the error. Even then I couldn't MAKE the all the exceptions happen and had to wait for people to find them threw use. Even if there was nice documentation that explained what exception were thrown there is no programmatic contract for letting me know what the hell is going on. If something changes and a new exception is thrown in later version you have no recourse. It might just make the program crash.

      I agree with the Java designers, exceptions are part of the methods public definition. It's like not specifying the number of parameters to a method, or if the method returns a value. ( And yes I know there are languages which do not even requite you do these things.)

      The only reason to use only unchecked exception is if you have no interest in actually handling errors. You just punt and log the error. In which case I see how a try catch block around the start of a program would save you the keystrokes in ALL those methods that throw those annoying exceptions. I just don't see how you can write a robust program doing that. How could you ever recover from anything?

    139. Re:Just Pick One and Learn it Well by washley · · Score: 1

      The trolling for this story is pretty bad even by Slashdot standards. Express editions are free for whatever the heck you want to do with them. You could write the next killer app that runs Microsoft out of business and makes you rich enough to personally pay off the national debt. This is perfectly OK. Projects in Express editions are *COMPLETELY* compatable with the other versions of Visual Studio. Sure you don't get some of the diagram editors, but you can certainly work on the same code base as others using the paid versions.

    140. Re:Just Pick One and Learn it Well by WaterBreath · · Score: 1
      Nowhere was I informed as to what exceptions could be thrown.

      Having been weaned on C++, I always assume anything could through an exception of any sort. But that doesn't mean the only way of handling the things is a try-catch block in the "main" function. The only thing worse than assuming you know exactly what your own code will do is assuming you know exactly what someone else's code will do.

      Anticipating code segments that are subject to critical failures, taping off sections of code that can recover from a failure, and handling unexpected errors in the appropriate locations and ways to allow such recovery, is practically programming 101. Checked exceptions are only one method of getting this done. I prefer not to be "forced" to do it the way the Java designers thought was best. There were plenty of scenarios where it was just a big pain in the butt. You know, "one size never fits all", and all that.

      I do understand the concern, and the reasoning behind the feature. It makes a certain intuitive sense that an exception, which is technically a special type of "output" of a function, should be part of the function's contract. But I see two big problems...

      1) It can provide a false sense of security. Just because all the exception accounting balances out doesn't mean there are no problems, or that there won't be unexpected failures, or even that the handling that is satisfying the checking is correct. It seems to me, again, that it's better to just assume a function could fail in any possible way. Specifying the exceptions that can be thrown seems similar to specifying, in the function signature, the range of numbers allowed for an Integer argument. Yeah, it makes the contract stronger. But the same checking can be done in the code, if necessary, and can be left out altogether in the many cases that it's totally overkill.

      2) Having to list all the types of exceptions that my function can throw can get to be a supreme pain in the butt. Especially if I'm just hacking or playing around, when I really don't care if an exception causes my program to crash out. If I'm just messing around, I really don't want to have to put in dummy code all over the place to appease the compiler gods.

      I am not a fan of languages that attempt to protect programmers from themselves. Java seems to be doing that in this instance. That's probably the biggest reason I don't like the feature. Just give us the tools (exceptions) to do the job right and we'll figure out, as a community, what are the best ways of using the tools. There's no need to chain us to "the right tools".

    141. Re:Just Pick One and Learn it Well by FatherOfONe · · Score: 1

      I believe what the point of the poster is this.

      If you use Java you can use a variety of FREE and open source enterprise level tools. If you use .NET/C# you have no REAL option except visual studio and that will cost you money eventually. A few would argue that it will cost you a lot of money, but that is relative. It appears in the case of Microsoft, that it will cost you money in 365 days AND you will have to buy Windows. You may not think this is an issue, but some do, and they don't want to be tied to the whim of a proprietary vendor and locked in to one solution.

      So to give a specific example. He could use Eclipse and run it on just about any platform for free forever OR he could use visual studio and eventually have to pay Microsoft for both Windows and visual studio.

      Your make a point to say that it isn't right for this guy to make money on a product and get an IDE for free, but in this marketplace that is exactly what he can and should do. You seem to indicate that he should spend money when he doesn't have to.

      Now as far as what language he should pick? Well if he truely does love Linux then he should pick c++, then Java then .Net. C++ will work great on Linux then Java and then supposedly c# will run. It seems simple to me. Any of those languages will give you a good foundation and two of the three will allow him to develop enterprise level applcations for multiple operating systems.

      --
      The more I learn about science, the more my faith in God increases.
    142. Re:Just Pick One and Learn it Well by lpricci49 · · Score: 1

      Programmers seem to move effortlessly from Java to C# and back, so I do not think you are in a life or death situation here. I think you will find C# has three advantages: A) the mobile/embedded version of .NET(The Compact Framework) has a commercial model much more developer friendly than the nearest equivalent for J2ME. As 'monkeyman' says "Developers, Developers, Developers!" B) Visual Studio- This is a very serious IDE- SQL is part of it now. C) C#- even with the automatic 'garbage collection' seems to run in real time applications remarkably well. My experience is pretty much limited to mobile and embedded devices (like this PXA270 http://www.applieddata.net/products_PXA270_XScale. asp ) but this may be the 'growth' application area in the future. Lawrence Ricci

    143. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      Just pick the one which is lectured by a better proffesor.

    144. Re:Just Pick One and Learn it Well by kohsuke · · Score: 1

      I agree with you that Eclipse (or for that matter IntelliJ or even NetBeans) beats the VC# Express Edition easily, but one has to admit that Visual Studio in general, not just VC# Express Edition, launchs much faster.

      Of 3 Java IDEs that I mentioned, IntelliJ probably starts most quickly, but still it takes an order of 10 seconds or so on my system, whereas VC# Express Edition is just a few seconds.

      I also feel that VC# Express Edition (again for that matter Visual Studio in general) is using much less memory, but perhaps that's only because my Java IDEs have a lot more large projects in it.

    145. Re:Just Pick One and Learn it Well by metlin · · Score: 1

      Thank you - that was exactly my point. :)

      Basically, it does not matter whether or not foobar company/organization/people give it for free, that does not mean MS should.

      Whether or not they should is completely their decision and while you may not like it, there is nothing wrong in them charging a fine penny or two.

    146. Re:Just Pick One and Learn it Well by metlin · · Score: 1

      The other poster made the points for me - MS is indeed giving back, just not the way you want them to. And of course you can completely ignore the benefits of company-centric ways and say that it sucks because it does not conform to your idea of how things should be.

      Umm, Open Source does not exist to pay people's livelihood - while a few maybe able to make a living out of it, that is not its primary purpose. If MS were to go down under tomorrow, economies, jobs and several other things would be affected. Badly.

      And I'm not even going to bother about your Wikipedia comment - you're just being a troll.

    147. Re:Just Pick One and Learn it Well by Cu · · Score: 1

      What should you do after 366 days? Continue to use it for free. They're giving away perpetual licenses for one year. The license remains valid after the year.

      Second, you probably aren't buying MS windows just to develop. In fact, you've probably already got it. If you're developing with VS, you've likely already got access to a MS windows box.

      Finally, Java isn't a mature language either, and c#'s rate of change isn't really a problem for many of us. Sometimes adaptation is an advantage.

      --
      I'm Abram Bender. You're not.
    148. Re:Just Pick One and Learn it Well by juiceCake · · Score: 1
      Yes and 80% of the world are morons. What's your excuse?

      Of all the users I know of various operating systems, including Linux, OS X, Windows, Solaris, etc. I cannot honestly say that one group stands out as morons. I know many intelligent Windows users. I know many intelligent Linux users. I also know some who are less than intelligent on any of these platforms.

      Judging intelligence by the person's OS of choice shows a surprising lack of intelligence on your part. Perhaps you're a Windows user as well then? Blanket statements. They're wonderful aren't they?

      Can you provide some statistical analysis and studies that clearly display that if user X chooses Windows, they are, most likely, morons? I'd be surprised if this is the case rather than they want to use a computer for a few things. Much like people use appliances.

      The point that many people use Windows was not made to say that therefore, Windows is not problematic. The point was, in context of the ongoing discussion, only that it is and continues to be useful to people (regardless of the problems it has and even it is not useful to yourself) and that it's marketshare is rather large and may be a bit of a factor in getting paid programming work in future.

      But hey, let's have a discussion about how bad Windows is instead. That is really what the question is about I suppose isn't it. Windows sucks. Windows is useless. Wow! How unfathomnably observant and persuasive. We have an orginal thinker here!

      Where was the love for MS when they gave IE away for free!

    149. Re:Just Pick One and Learn it Well by Decaff · · Score: 1

      I'm pretty sure dynamic class loading has been around longer than Java, or even unchecked exceptions. So I say it would be sillier to be missing a way to dynamically load classes.

      Dynamic class loading as an established central part of the language is - as far as I know - pretty much new with Java. The other thing that is central to Java is dynamic class loading with security and bytecode validation. It is about security.

      It's been a while since I worked with Java, and I'm far from an expert. But when I was dinking around with it, I found it extremely annoying that I had to label every function that could possibly throw an exception. The compiler needed to be smart enough to detect whether a function might throw an exception, in order to tell me that I had forgotten to label it... So if the compiler can tell this without me telling it so explicitly, that pretty much relegates the label to syntax-enforced documentation.

      Not really. The exception you wish to add to the signature of the method may not the same exception that the compiler detects is not handled. For example, it may be a superclass of it. This is why it has to be explicit.

      Out of curiosity, how many "major" languages have checked exceptions? Java is the only one I can think of off the top of my head.

      OCaml, although this depends on your definition of 'major'!

      This guy, and many others, seem to agree that checked exceptions in general are kind of silly:

      Plenty of others think they aren't. It is an interesting matter of strong debate at the moment.

    150. Re:Just Pick One and Learn it Well by Foofoobar · · Score: 0

      Thank you. That's very kind of you to say. :)

      --
      This is my sig. There are many like it but this one is mine.
    151. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      And the parent is saying that's an unfair comparison. Do YOU read much?

      Whether it is or not depends on your view, so I'm not going to get into the merits of either side.

    152. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0
      wow, visual studio for free for one year man ... what should i do after 366 days ?

      It's free to download for the next year, after that they will beging selling it for 49.95.

      The free download you can get now does not "expire" when they start charging for it.

      AC

    153. Re:Just Pick One and Learn it Well by shumacher · · Score: 1

      Nice. Flame war. I'm staying out of it, except to say that you can skip the registration by downloading the disc images Microsoft provides, rather than using the standard install tool, which requires an internet connection to download the components. You also get to keep the tools should Microsoft pull the online portion of the install files at a future date.

      http://msdn.microsoft.com/vstudio/express/support/ install/

    154. Re:Just Pick One and Learn it Well by Gravis+Zero · · Score: 1

      it's true that it's the app and not the language like it's the girl and not the car. however, in comparison, this is like if the girl got in a fender-bender, the car exploded. other apps may need restarting but they dont take down the daemons it's using, or screw up the module for the executable format too. there are other apps with a bunch more bugs and memory leaks but they dont do the damage that java does.

      --
      Anons need not reply. Questions end with a question mark.
    155. Re:Just Pick One and Learn it Well by x0n · · Score: 1

      > wow, visual studio for free for one year man ... what should i do after 366 days ?

      well, you continue to use it. You misinterpret the language: it's free _forever_, as long as you download/register it in the first year. This is an understandable misunderstanding (!) as we're all paranoid of the immense legalese that accompanies many ms products.

      - Oisin

      --

      PGP KeyId: 0x08D63965
    156. Re:Just Pick One and Learn it Well by duffahtolla · · Score: 1
      but they dont take down the daemons it's using, or screw up the module for the executable format too. there are other apps with a bunch more bugs and memory leaks but they dont do the damage that java does.

      I've heard a lot of commnets about Java, both positive and negative. But I've never heard anyone suggest that it, an interpreted language, can cause a Unix system to become unstable. Is that what you are trying to say?

    157. Re:Just Pick One and Learn it Well by marcello_dl · · Score: 1

      Free for the first hit? Your comparison is ridiculous - they've made it free so that you can use it for educational and non-commercial purposes. If you want to do commercial development, pay them. I see nothing wrong in that - it's the way businesses work.

      It's the way business work when the competition is strong. Let trusted computing or similar evil schemes get rid of free software, then you will see how much a dev tools vendor cares if you want to develop for money or for fun. It'll be like the not so good old days: pay or else.

      --
      ---- MISSING MISCELLANEOUS DATA SEGMENT --- [sigdash] trolololol
    158. Re:Just Pick One and Learn it Well by metallic · · Score: 1

      That's also true for Visual Studio. I work on projects written in both ASP.NET 1.1 and ASP.NET 2.0 at work. I have to have Visual Studio .NET 2003 and Visual Studio 2005 installed side-by-side.

      --
      Karma: Positive. Mostly effected by cowbell.
    159. Re:Just Pick One and Learn it Well by Darby · · Score: 1

      Free for the first hit? Your comparison is ridiculous -....

      Well, his comparison isn't exactly good or anything, but it's far from ridiculous.

      Odds are that Microsoft makes far more from your choice to use their product that you ever will from selling yours.
      Network effects, platform entrenchment and the like are far and away the biggest money makers for MS.

    160. Re:Just Pick One and Learn it Well by Darby · · Score: 1

      Yes and 80% of the world are morons

      Excellent statistic. I believe i will add that to my test of the '4 out of 5 statistics are made up' theory.


      Well, 4 out of 5 *is* 80 % ;-)

    161. Re:Just Pick One and Learn it Well by j-pimp · · Score: 1

      It's not a fair comparison. The java sdk is just a suite of command line tools. The .NET express edition is an IDE. It has a damn good editor/gui builder with a bunch of other components. The .NET sdk with command line compilers is a better comparison to the java SDK, That being said I think sun has a free as in speech IDE. I personally do alot of my java editing in vi, well used to when I did alot of java programming.

      --
      --- Justin Dearing http://www.justaprogrammer.net/ We're just programmers.
    162. Re:Just Pick One and Learn it Well by Gravis+Zero · · Score: 1

      no, no. *Ukrainian accent* Unix is STRONG! Ok... well it's the "java server" that goes down. It really should be called a daemon, as that is what it is. in anycase, as i tried to articulate previously, the daemon bites the dusk.

      --
      Anons need not reply. Questions end with a question mark.
    163. Re:Just Pick One and Learn it Well by alljava · · Score: 1

      The world did not need C#. MS needed C#.

      Regarding "The first hit is free..." I choose not to drink (learn) from that well.

    164. Re:Just Pick One and Learn it Well by Drysh · · Score: 1

      The first point I disagree is that "a customer will trust me more if I suggested a Microsoft platform". From what I've seen, selling a solution based on BSD or Linux has strong marketing points: you "look" more an expert suggesting a different alternative, you may reduce hardware costs by tunning the application exactly to what they need, you certainly keeps than free from hidden taxes in their software. For me it was just how to sell it. Saying to your clients that you will give all the documentation of your software to them, and that they are able to change to someone else in case they are not happy with your service sometimes make a huge difference. The great problem is that people don't want to see *nix systems: yhey want the desktop to be windows, because they think linux or BSD are too hard for their employers to learn. And they are right, since 99% of the work force knows how to use windows, and only a few ever tried linux (not to say BSD), they are protected from the need of trainning people to use their software. Back-ends linux solutions sell.

      I don't think closed source makes sense for business in the long run. At least not if you aren't selling software, but solutions. Trying to reach the end user with OSS is almost impossible, but for back-ends it makes a lot of sense. But you need to change your job from programer to IT consultant. Sometimes you don't even need to sell software (or program anything), you need to find them the right tool to use, and since you are not making money from software, but by finding them a solution to their problem, you still make money.

      Time vs money. Time is money for everyone. But how do I save more money? Using a closed source that makes them pay for updates, or a web-based development team that is working for free? Right now I'm working (only studying so far) on a solution that uses phpGroupware. By using that I know I won't have to worry with every aspect of the program, because there are others trying to improve it there. Then I may focus on what my clients need to improve in the package, and implement only that (and of course give that improvements back to the community). The biggest problem I'm finding is to reach a critical mass where my development may be payed for several customers.

      The way I see OS is that people who wants something pays someone to take a project to that direction. And that's what I'm trying to do for my clients: develop what they need to be included in software that is already being developed by the community; and (hopefuly) make those take a life of their own where others will continue my development, to the direction my clients want.

      MS is not helping a monopoly, they are selling a illusion. They are selling nothing and calling it a product -- not that their development is nothing (it's excelent in some cases), but they are not selling you the development, but only a right to use their product. That's stealing from their customers. Once you sell something, your customer should adquire it, not a part of it. What's the agregated value to the world of selling millions of copies of the same software? NOTHING! All the value is on the first copy. After that they are not creating value.

      Tumbnail of my huge post:
      -Close source locks the client to the developer, open source lets them choose.
      -Selling software creates more software (usefull? I don't know). Selling solutions creates money (to your client (and to you)).
      -The OSS developer may save time by counting on the community to develop the non-critical parts of the system (non-critical to you).
      -It is the OSS Solution Saler dutty to promote the developments that will help your clients.
      -Selling software copies doesn't help the world (doesn't create value). Selling solutions do.

    165. Re:Just Pick One and Learn it Well by etrnl · · Score: 1

      unless you need to produce software for sale to end-users on the Windows platform, in which case it very difficult to distribute java apps commercially.

      I don't personally follow this logic. Just make your installer check for Java, if it isn't installed, install it. IIRC, that's what LimeWire does...

      There are enough Windows installer apps that you don't need (or really want) to write a Java-based installer, so this seems like it would solve the problem easily enough, no?

    166. Re:Just Pick One and Learn it Well by HillaryWBush · · Score: 1
      I'll pit my skills against almost anyone, and if I don't come out on top it won't be because I'm using UltraEdit and their using Eclipse, it'll be because they are actually better and would beat me if we were using the exact same tools, which is as it should be. But, I'll tell you this: I'll clobber many people that bring their big, fancy IDEs to the party, no question in my mind about it.

      So don't call me fat!

      :-)

    167. Re:Just Pick One and Learn it Well by WaterBreath · · Score: 1

      Plenty of others think they aren't. It is an interesting matter of strong debate at the moment. I understand. I was just expressing my opinion, my personal preference, not trying to put opposers down. I think there are very good arguments on both sides, and I certainly understand why people like them. I expect that there will continue to be major languages long into the future that fall on both sides of the debate.

    168. Re:Just Pick One and Learn it Well by fredrik70 · · Score: 1

      I respectfully disagree, I started doind c# last june and the number of times i had my apps silently crashing for no apparent reason and then debugging just to find there was an exception thrown at some place where I didn't expect it, yeah I could check the docs and all that but I prefer the compiler to tell me: 'hey, you must be prepared to catch exeption Foo here', if you use IDE's like IntelliJ (and exclipse? never really used it) you'll get a lot of help from the editor to deal with the drudgery of filling in stuff like this automagically, so it no a problem really.
      Then whgen it comes to which language to pick, I'd say any would do, they both very nice langauges, both with their quirks and joys. Wont take long to migrate from one to a nother if need be.

      --
      if (!signature) { throw std::runtime_error("No sig!"); }
    169. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      oh, sure! the IDE is the main point when learning a language!

      come on

    170. Re:Just Pick One and Learn it Well by GamerGeek · · Score: 1

      There's no need to chain us to "the right tools".

      There is no need to chain YOU to the right tools. Your arguments have been eloquent and educated. I prefer to be explicit, because not everyone I work with has that same intuitive sense. I need to be able to tell them specifically what I intend with this or that method. If I throw a SomeImportantExecption and they decide to implement it's catch with a blank block, well, it's not may fault, I told them this can happen. If the compiler didn't force that on them then the blame would be on me for "why did your method fail, fix it". A defense of "why didn't they read the comments/documentation it tells them this can happen" just doesn't cut it. I have worked with a lot of people who focus on just hacking in the current bug fix/enhancement with no regard to the code they are actually writing. Java lets me make them work to ignore important things.

      I understand your point about Java not being hacking around friendly. Even the author of Java admitted that Java wasn't designed for smaller programs. For me it's a small price to pay to be able to be able to point the finger when something goes wrong, or to take responsibility.

      I learned my lesson with C# and now must be diligent about catching as many reliant exceptions as possible.

    171. Re:Just Pick One and Learn it Well by Chabil+Ha' · · Score: 1

      Not true. If your school is appart of the Microsoft Software Academic Alliance, then you can get Visual Studio for the same cost as Eclipse. Plus, you can download the new Visual Studio Express directly from Microsoft's website (even if you're not apart of the AA program) for the same cost. Plus, you can download the express version of SQL Server 2005 for the same cost. So, all in all it'll cost the same, except your dignity when you hang out with the Linux FUD crowd.

      --
      We're all hypocrites. We all have hidden parts, it's the contrast between them that make us more a hypocrite than others
    172. Re:Just Pick One and Learn it Well by pthisis · · Score: 1

      That's a grudge with developers, not the language. And that argument goes for any language. Give a lousy developer a tool and he will abuse it to no end.

      But some tools are easier to abuse, and the culture of some languages promotes abuse. For instance, I've seen some beautiful Perl code, and I've seen some hideous Python code. But, overall, "average" Python developers tend to write code that's much more readable and maintainable than "average" Perl developers. Certainly good programmers will write good code in either, and bad coders will write bad code. But in the margins, one of them leads to better-looking code that's easier for others to jump in, read, understand, and modify.

      Not having much experience in C#, I can't comment on whether its features tend to promote uglier code than Java or vice-versa, but claiming that it's all in the developers and that the language doesn't play a fairly strong role just doesn't fit with real-world experience IMO.

      --
      rage, rage against the dying of the light
    173. Re:Just Pick One and Learn it Well by will_die · · Score: 1

      wow, visual studio for free for one year man ... what should i do after 366 days ?
      Answered in thie FAQ. What happens in 365 from the date they announced that the software would be free microsoft will be pulling it off thier site. Any software coved by this will be free forever.
      Come day 366 you will have to pay $49 for the versions of the software they are making available currently for free.

    174. Re:Just Pick One and Learn it Well by uncledrax · · Score: 1

      Well if you choose Java, then you can use free Eclipse IDE which is excellent. Otherwise if you choose c#, the ony decent ide is visual studio which will cost you a fortune.
      Oh.. the wonderful thing about something like Eclipse (an expandable IDE), is that there plenty of plug-ins for all sorts of non-java languages:
      I've used the PHP plugin a bit, but can't say I've used a C# plugin much.
      Google is your friend

      --
      ----- The internet has given everyone the ability to have their voice heard equally as loud.. even if they shouldn't be
    175. Re:Just Pick One and Learn it Well by Anonymous Coward · · Score: 0

      >>>Obviously, unlike Visual C# Express, Eclipse is free and comes with no restrictions.
      Express editions are free perpetual licenses with no restrictions - not sure what is obvious to you

      >>Eclipse is open source, so it's far easier for developers to customize and build a platform around.
      There is a Visual Studio SDK to customize the IDE. Having a solid and stable platform is a benefit for most developers

      Due to the way Eclipse is structured it's very easy to write plug-ins and because of that Eclipse has a very long list of available plug-ins. Plug-ins exist for practically everything a programmer would normally require.
      >> There are over 230 VSIP partners building all kinds of professional plug-ins for Visual Studio.

      Not only does Visual C# Express not have plug-ins but it doesn't even have macro capabilities.
      >> True, but if you are a professional developer I hope you can pay about $100 for the Standard edition

      >>>Eclipse has far better refactoring capabilities....
      And I can tell you about a hundred things that Visual Studio does better, no tool is perfect

      >> The code formatter ....
      obviously you are not familiar with Visual Studio Team Foundation

      >>> Regardless of the language, it's much easier to change compilers/interpreters with Eclipse and it supports many more compilers/interpreters.
      Since when it is a benefit to be able to work with dozens of compliers? Do you really need to program in over two dozen languages? Even the official Sonyt compiler for PS2 is a plug-in for Visual Studio

      >> Eclipse has built in CVS AND SVN support while Visual C# Express has no source control...
      Duh! C# Express is meant for hobbyists and students, not for professional developers. The source control and workflow capabilities of Visual Studio Team System are unparalleled even by commercial tools like Rationsl

      >> I can use Eclipse with a large number of different languages and still continue to use many of the features.
      Eclipse can be used for building, testing and running Web applications with a number of different server architectures.
      The tradeoff is using a generic tool for almost any patform versus a tool that is tightly coupled with the platform (.NET 2.0) which has many benefits. After all the majority of large enterprises use .NET (according to multiple developer surveys and analyst reports - IDC, garnter, etc)

      The next points are dumbn because compare Eclipse versus the Free hobbyst express editions, which are quite powerful. If you compare VSTS to Eclipse, the latter would come bahind in most instances.

      >> Eclipse doesn't ask me to register or sign up for anything.
      You don't have to sign up for anything if you opt to register your copy of express (you can opt-out of all subscriptions) and CD-based versions do not require registrations. However if you complete registration you get complete, free, downloadable PDF books, clip art, icons, and more.

      >> Eclipse is not made by Microsoft.
      Just proof that this comment was made by someone who is biased and makes (like most of us) emotional decisions and then justifies them rationally. If you hate Microsoft it is fine, don't use any of its products - just don't claim to offer a reasonable comparison of your favorite products versus that of a company you hate.

    176. Re:Just Pick One and Learn it Well by LeonardsLiver · · Score: 1
      I'm a fan of the SharpDevelop .NET IDE for Windows. It's open source & quite nice.

      Check it out

    177. Re:Just Pick One and Learn it Well by Trepalium · · Score: 1
      Frankly, I'd prefer if C# and friends supported checked exceptions as a warning condition rather than error as it is in Java. If you want to hack something out quick, then feel free to ignore the warnings or turn them off. If you want to make a real production app, then you ought to make sure your exception handling is proper. In this way, checked exceptions would be a tool to use to get your error handling working properly, rather than being surprised when a bit of code throws an exception you weren't expecting. While writing a program to do a one-off task could skip building this infrastructure altogether.

      While Java's exception handling system isn't great, neither is C#'s. Java's exception handling can feel like a straitjacket, while it's all too easy to miss exceptions that you need to handle in C#.

      --
      I used up all my sick days, so I'm calling in dead.
  2. Java - Duh. by sbaker · · Score: 2, Insightful

    Cool! Language Wars. Let loose the flaming trolls!!

    If you are a Linux nut (as well you should be) then it's
    gotta be Java since C# is a work of the devil.

    In the end, once you know one OOP language, you know 95%
    of what you need to work in any OOP language - so if you
    learned Java - but needed to pick up C# or C++ or something
    in the future, it wouldn't be that hard.

    I guess you could do the course in C# and teach yourself
    Java in parallel on your Linux box...but that's more work.

    --
    www.sjbaker.org
    1. Re:Java - Duh. by eargang · · Score: 1

      C# a work of the devil? Uhm. Mono anyone?

    2. Re:Java - Duh. by ackthpt · · Score: 3, Insightful
      In the end, once you know one OOP language, you know 95% of what you need to work in any OOP language

      Exactly. And if you've intelligence greater than that of a gnat you pick the right language for the job.

      Unfortunately there are the questions of support and "shop language", which will often overrule the most well reasoned case for using the best tool. I fought it a few times, ultimately losing in one costly case (costly because we eventually had to scrap the alternative and go back to what I'd argued for in the first place.)

      When it's your own box, choose wisely, not fasionably.

      --

      A feeling of having made the same mistake before: Deja Foobar
    3. Re:Java - Duh. by slavemowgli · · Score: 1

      In the end, once you know one OOP language, you know 95% of what you need to work in any OOP language

      Not quite. The basic concepts are the same throughout all OO languages, of course, but the fact that Java and C# (and, to a lesser extent, C++) are so similar is - basically - that they all have a common ancestor in C, and that they also build upon each other to some extent. Other OO languages are different, though - if you have ever programmed in Smalltalk-80, for example, you'll know what I mean. (Beautiful language, BTW, and much better than Java - it's a pity it's not one of the available choices for the OP.)

      --
      quidquid latine dictum sit altum videtur.
    4. Re:Java - Duh. by 0xABADC0DA · · Score: 3, Insightful

      It's much easier to learn object-oriented design from Java. Sun is basically an engineering company, and they make nice clean hardware and software from a theoretical standpoint. You'll see examples throughout the API and language, often with explanations why the design was chosen (for example why the collections are designed the way they are). You can read the discussions at the Java Community Process and find out why changes were made and what lesser designs were considered.

      If you want to write okay code that works, VB-style, go with C#/.NET. Microsoft tends to slap together code in any way that works, without much thought to good design... or rather they just don't know good design (they have no sense of taste). You'll see a lot of marketing-inspired APIs and code that behaves strangely because it is tied to their old Win32 apis. But, your results will work better on Windows.

    5. Re:Java - Duh. by Anonymous Coward · · Score: 0
      Let loose the flaming trolls!!


      Won't that make us loosers though? :) (Sorry... this is probably the first time I've seen the double-o word used correctly on Slashdot. You've made my day.)

      (Incidentally, I'm baffled that people can think "loser" is spelled "looser", but no one on Slashdot seems to misspell "lose" as "loose.)
    6. Re:Java - Duh. by TrekCycling · · Score: 1

      Sarcasm, anyone?

    7. Re:Java - Duh. by Nataku564 · · Score: 1

      Perl's OO is also different. I like it, but I seem to be in the minority.

    8. Re:Java - Duh. by Anonymous Coward · · Score: 0

      As far as languages and class libraries go, you're way off on your assessment of C# (VB-style, slapped together). You might want to actually check out the language. It's very nice.

    9. Re:Java - Duh. by TrekCycling · · Score: 1

      I would second this, only in this respect. Microsoft included a lot of "syntactic sugar" in C#. This is a much maligned phrase as I think there is harm that comes with syntactic sugar. It may make things look prettier, take less characters, etc. but it tends to make code less verbose. And that's one of the HUGE strengths of Java. It's very verbose. So learning it as an OO language is a good way to go. Find a good book (Learning Java, etc.) for the 1.4.x version of the JDK and start there.

      Alternatively, consider Ruby. I know, I know I was just yesterday saying Rails and Ruby were overhyped. The reason I suggest this is because if you get a good book that doesn't focus heavily on the syntactic sugar, Ruby, as a language, is completely OO. In other words the following doesn't work in Java....

      float i = 3.54;
      i.intValue(); ...whereas in Ruby you can do something like...

      $i = 3.54
      $i.round

      Or checking if an integer is really an int in Java...

      try {
            int i2 = Integer.parseInt(i1);
      } catch { // etc;
      }

      Something like that. vs. this in Ruby...

      $i1.integer

      Not a huge difference? Well, if you're wanting to learn a language to learn OO Ruby is pure OO if you don't abuse the syntactic sugar. On the other hand Java is kind of the de-facto standard and there are jobs out there, so it depends on your reason for learning the language.

      I would also note that C# also is more pure OO in that sense, so I guess by that criteria you could lump it with Ruby as a good starter language. But if you're shooting for a language on which you can easily run and get lots of stuff done on Linux, I think C# is a second class citizen.

    10. Re:Java - Duh. by squoozer · · Score: 1

      Linux version of the Devil maybe?

      --
      I used to have a better sig but it broke.
    11. Re:Java - Duh. by Anonymous Coward · · Score: 0

      Repruhsent it, brother!

    12. Re:Java - Duh. by Anonymous Coward · · Score: 0

      As a programmer who started out on Java, because it was (or has been) cool in my time, I would recommend learning something a little more educational. You see, Java encourages you to use all the class libraries to get the job done, which is straightforward but you have no clue of what's going on in the machine. How many Java programmers have the (perhaps) esoteric skill to really keep track of which objects are in scope at any one time? And in other words, how much memory they're actually using? Well, you say, RAM is cheap now, so what does it matter? OK, so take the (incredibly interesting) emerging field of music production in software - when you're doing nasty DSP algorithms in realtime, you can't afford to have some cantankerous garbage collector wake up halfway between two sample frames - C(++) or assembler is the only way to go. Yes, Java is a great way to learn OO concepts (and admittedly is probably fine for most commercial software projects), but at some point early on you really must learn how the machine works.

    13. Re:Java - Duh. by baadger · · Score: 1

      Wouldn't the closest thing to that be BSD? ..:)

    14. Re:Java - Duh. by Anonymous Coward · · Score: 0

      > In the end, once you know one OOP language, you know 95%
      > of what you need to work in any OOP language - so if you
      > learned Java - but needed to pick up C# or C++ or something
      > in the future, it wouldn't be that hard.

      Just be careful going from C#/Java to C++ because there are a whole load of issues connected with security and memory management that you just don't have to deal with in the C#/Java, but which can really bite you in the ass in C++. If you're already happy with these things in C then going to C++ will be fine. Otherwise, read up on them.

    15. Re:Java - Duh. by jsight · · Score: 1

      As someone who has read the JSF specification (and a few others), I can thoroughly disagree that Sun is better at clean APIs and architectures. :) I generally prefer the architecture behind ASP.NET and the .Net libraries, unfortunately.

      Having said that, it is nice that formal specifications are available for the Java APIs, and that the process is transparent. It's much easier to learn from that (even from the mistakes) than it is to learn the details in the MS world.

      Also, if you want to do Linux development, Java is the way to go. Mono is nice, but you're very unlikely to find many real-world jobs deploying it in production right now.

    16. Re:Java - Duh. by EvanED · · Score: 2, Interesting

      Sun is basically an engineering company, and they make nice clean hardware and software from a theoretical standpoint.

      OTOH, there are also a lot of rough edges. Like how you access the number of elements in a Collection with the size() method, the number of elements in an array with the length property, and the number of characters in a String with the length() method. Oh, and that length property? Essentially unique; it's the only place in the language with a read only property.

      Or how JFrame.add() used to universally throw an exception telling you to call JFrame.getContentPane().add() instead. ("Fixed" in 1.5 by just calling that method directly.) And while we're on that subject, the whole idea that the API has classes with (and condones implementing interfaces with, as is the case with the Collection interfaces) methods that always throw is smelly. If a method isn't supported, it shouldn't be there in the first place. Moving it out of the class/interface moves error detection from runtime to compile time -- and this is a good thing. (IMO the "proper" way to do this would be to have instead of Collection, have two interfaces. Collection would have only accessors. MutibleCollection would add the add(), remove(), etc. methods that change it.)

      Or the fact that Java literature doesn't talk about pointers. They're called references in Java. Except for NullPointerException. Why not NullReferenceException?

      Or the fact that String types are in a world of their own. They are more priviledged than user classes because they have operator+ defined on them, but less priviledged than the build-in types because (among other things) you can't use them in switch statements.

      I could go on with just small, little details that I think make the statement that Java is a nice clean piece of work from a theoretical sense silly. (I could also go on with things I think are substantial omissions from the language/library, but that's off topic.)

    17. Re:Java - Duh. by autopr0n · · Score: 1

      In the end, once you know one OOP language, you know 95% of what you need to work in any OOP language - so if you That might not be true of like, scheme and Haskell, but it's definitely true of Java and C#. The syntax is almost exactly the same, and the APIs are very similar too (just with different names, basically)

      --
      autopr0n is like, down and stuff.
    18. Re:Java - Duh. by Bastard+of+Subhumani · · Score: 0
      no one on Slashdot seems to misspell "lose" as "loose"
      Yoou're, jooking, right?
      --
      Only three things are certain; death, taxes, and apocryphal quotations - Ben Franklin.
    19. Re:Java - Duh. by Bastard+of+Subhumani · · Score: 0
      Microsoft included a lot of "syntactic sugar" in C#. This is a much maligned phrase as I think there is harm that comes with syntactic sugar.
      The expression is accurate. Sugar in food is usually there to either hide a bad taste or to make up for a lack of taste. It makes you fat, gives you diabetes and rots your teeth.

      Not sure how a phrase can be maligned anyway. I suspect you're using the word without knowing what it means.

      --
      Only three things are certain; death, taxes, and apocryphal quotations - Ben Franklin.
    20. Re:Java - Duh. by HappyHead · · Score: 1

      not be true of like, scheme and Haskell, but it's definitely true of Java and C#
      Scheme and Haskell aren't OOP languages, they're functional languages - knowing the OOP paradigm won't help you at all for them.

    21. Re:Java - Duh. by BorgCopyeditor · · Score: 1

      Good points all ... or at least most. What, however, is the benefit of distinguish mutable and immutable classes? I run into this in Apple's Cocoa frameworks, and it drives me nuts to have to constantly turn mutable into immutable strings and back for various purposes. I know your comments were about language design, but could you give a practical reason why that's better? Thanks.

      --
      Shop as usual. And avoid panic buying.
    22. Re:Java - Duh. by BorgCopyeditor · · Score: 1
      Sugar in food is usually there to either hide a bad taste or to make up for a lack of taste. It makes you fat, gives you diabetes and rots your teeth.

      You must be fun at parties. Sugar in the form of glucose is also what runs every one of your much maligned cells.

      --
      Shop as usual. And avoid panic buying.
    23. Re:Java - Duh. by Krusty+Da+Klown · · Score: 1

      Exactly. And if you've intelligence greater than that of a gnat you pick the right language for the job.

      Ahh gnat. Now that was a compiler.

    24. Re:Java - Duh. by Ravatar · · Score: 2, Informative

      If you want to write okay code that works, VB-style, go with C#/.NET. Microsoft tends to slap together code in any way that works, without much thought to good design...

      It's funny you say that, given the sprawling .NET framework design guideline...

    25. Re:Java - Duh. by EvanED · · Score: 2, Informative

      This is a bit long-winded and I fear not totally coherent, but here you go:

      The reason is that currently immutable collection classes must either forsake using the Collection interface (thus giving up compatibility with existing objects that demand a Collection, such as Collections.binarySearch() (okay, the latter takes a List, but same idea)) or must provide dummy implementations of functions such as add() and remove(). The latter functions can do nothing (so just public void add(Object o) { } essentially) or throw an exception. (Okay, so there are other options too, but those are probably the most appealing ones, and, in fact, the Java API says that "The 'destructive' [mutating] methods contained in this interface ... are specified to throw UnsupportedOperationException if this collection does not support the operation.")

      The reason that it's important that the objects throw an exception in these methods is that if you call a method that calls, say, add(), that method probably depends on add() succeeding. If add() doesn't succeed and doesn't signal its failure, the calling method might break, enter an infinite loop, etc.

      However, this leads us into the situation of having a method that always throws an exception. My claim is that this is a bad state to be in, and that that method would be better off implemented. The reason is that if the method isn't present then the compiler can detect the problem. If I write someImmutableCollection.add(foo), the compiler will yell and say "ImmutableCollection doesn't have a method add." But if I write someCollection.add(foo) where someCollection is a type that implements add() as a throw-only method, the compiler will happily accept it. (At least probably; in this case it's possible to detect it statically. However, in the following case it isn't.) Note that it's still a bug; if that line runs the app will break.

      But it gets worse. Because if a method bar() takes a Collection as a parameter, it might call add(). In that case, you can't call bar() with an immutable collection. But the compiler will let you. And, unlike in the last case, it's essentially completely impractical for a compiler to try to detect this.

      What this all comes down to is that something that the compiler could tell you easily with a better design has been moved so that it won't be detected until you either run the code (and maybe not always -- perhaps it's a transient bug!) or review it, and neither of those are guranteed to happen. (It's the same reason programs such as Lint have been developed, and why compilers give you warnings.)

      (One other comment I have goes back to the JFrame.add() method that originally brought this up. I was working on a program and ran into that design issue. But problem was that it works in 1.5, which is what I was using to develop with. But 1.5 binaries are backward compatible with the JRE 1.4 runtime, so I sent out the binary to other people in my group who then hit the bug. They still would have hit it if it were a compile-time thing because they would have probably had to recompile, but it goes back to a sure thing vs. a not sure thing. Stuff like the library incompatibilities decrease the chance, however small, that these bugs will be found.)

      Finally is just the documentation aspect. If I call a method that takes an ImmutableCollection, I *KNOW* it won't add anything to the collection. I know that there isn't a bug in the method that will add something; I know that the documentation in that regard is up-to-date because the documentation IS The code, etc.

      (I'll also point out that the particular case I'm talking about could also be rectified by providing something akin to C++'s const. Then ImmutableCollection becomes const Collection, size() and the other non-mutating functions are marked const, add() and the other mutating functions are not marked const, and voila. However, there are still other places where this principal can be applied. There are places where the cost of applying them is prohibitive compared to the benefits though.)

    26. Re:Java - Duh. by EvanED · · Score: 1

      Please correct a small but important typo:

      However, this leads us into the situation of having a method that always throws an exception. My claim is that this is a bad state to be in, and that that method would be better off unimplemented

    27. Re:Java - Duh. by Anonymous Coward · · Score: 0

      I think that in many respects C# is cleaner than Java. Someone already mentioned the size()/length/length() difference and also mentioned the String + operator. I want to add another comment about this, then something else.

      A clean design would be to not have String +, or to allow any classes to overload operators. Each is clean in a separate way. Another solution would be to make String a primitive type.

      Another respect C# is cleaner is that primitive types have methods and properties. You can say someInt.ToString() in the same manner you would say someObject.toString() in Java.

    28. Re:Java - Duh. by maraist · · Score: 1

      Your examples of number manipulation is contrived and very scripting-language centric.. As a VB, Perl (Ruby), Python user, one would be very familiar with "opaque" data types.. And in fact, the process of manipulating said opaque types is half of the power of the system.

      Perl easily converts between raw UNIX data structures (passed in and out of c-functions) to strings to integers and back.. You can increment file-names for goodness sakes.

      Such practice is so wrought with potential error. In Perl for example. there are rare cases when you have to perform the following:

      sub foo
      { ...
      return $res . "";
      }

      To make sure that you've removed all the magic from the scalar.

      The process of converting back and forth between strings and integers is far too prevalent in these languages.. But the very nature of Perl is "Practical EXTRACTION and REPORT Language" and thus is warranted.

      Java, on the other hand treats inputs like inputs and outputs like outputs. You perform explicit filtration in both directions. And there are very clear operations that differentiate themselves.

      InputStream, Reader, InputSource (horribly named XML-input-stream), Writer, ObjectWriter, OutputStream, NumberFormat, DateFormat, MessageFormat.

      Whenever you're performing conversions, these are the tools of the trade (as far as J2SE is concerned). Integer.parseInt(String) is loosely deprecated.. NumberFormat is strongly prefered since it is far more flexible.

      When using the Formatter classes, you get i18n almost for free (most libraries that use them wrap some sort of ResourceBundle).

      Larry Wall famously said that similar things should look similar and different things should look different.

      When you're performing arithmetic, you shouldn't have to worry about accidently changing from a short to an int to a long to a double to a string to a ref to a magic token and back. But in perl, passing a scalar around can do just that (as the object is muteable), and become a nightmare in complicated routines.

      In Java, numerics and strings are immuteable on purpose.. It is focused 1'st and foremost on processing; input/output only secondarily. Nothing wrong with the perl-and-friends focus; that's their main job.

      Just to make sure we're on the same page.. Java 1.5 provides behind the scene conversion between primative and Number objects. So
      Integer i;
      int j;

      j = i + j + 1;
      works just fine. Though it's really just syntactic sugar for:

      j = i.intValue() + j + 1;

      Next, you may have an argument as to whether the entire Math and Random library should have been built in to Number.

      Thereby facilitating obscure stuff like:

      int i;
      i.nextGausian();

      I think it's perfectly acceptible to pass a Number into a Math or Random library, since they really are conceptually separate entities.. Number should only contain material relevant to the identification of a particular number. The processing of that number is the job of some other entity.

      i.add(j) is just too annoying to me.

      Complex c1,c2;

      c1 = ComplexMath.mult(c1,c2);

      Suites me just fine.

      --
      -Michael
    29. Re:Java - Duh. by petermgreen · · Score: 1

      an immutable string is safe to pass arround in the knowlage that some other bit of code won't mutate it behind your back.

      with mutable strings you either need to trust the code that passed it to you (which is generally bad design due to mistakes even if all the code is in some sense trusted) not to touch the string or copy it as soon as you are passed it (which can be expensive).

      however for some stuff mutable strings are nessacery to avoid huge ammounts of copying when actually doing heavy processing on the data.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    30. Re:Java - Duh. by EvanED · · Score: 1

      It's more than that though, and that's not really what I'm addressing. You're talking about the [im]mutability of a specific object, I'm talking about the mutability of an entire class, and, even more generally, having always-throw methods. The mutability issues are somewhat independent, and both are completely independent from the always-throw problm.

      For instance, look at the String class. The same could be said for the Integer, Double, etc. classes. In this case the class itself is immutable. (More precisely, every String object is immutable.) There aren't any methods to change it. Contrast this with a TreeMap, which has add and remove methods. This is the sort of immutability I'm talking about.

      What you're saying doesn't require this distinction. For instance, if Java had const, a method could take, for example, a const TreeMap. That object would be immutable from the view of that method, but the overall class isn't.

      But more generally, the whole issue of mutability isn't really what I'm talking about; it's just the best vehicle I've found for talking about the always-throw function. (And I submit that they are to be avoided when possible as they reduce the checking that the compiler can [reasonably] do.)

    31. Re:Java - Duh. by Anonymous Coward · · Score: 0

      More:

      "According to the API doc, the Class class "represent classes and interfaces in a running Java application". Confused? If not, you've likely been around Java for a while. What we're actually saying here is that an instance of Class represents a class or an interface. That's like calling the Collections class Lists, or the JComponent class JButton"

      "StringBuilder / StringBuffer

      "Hands up who can tell me the difference without looking at the API documentation. No, not you Billy - you can go and sit in the corner. No, not that one. The dark, damp one. With the rats.

      "The difference is that StringBuffer is synchronised, whereas StringBuilder is not. Of course! It's so obvious!"


      "Boolean

      "The next syntax issue is a small one with a long name - boolean. It's irritating to write boolean every time you need one. Why not bool as chosen by C# and, prior to that, C++? (and prior to that?) Maybe it's just me, but "boolean" seems to be one of those harder words to type on a QWERTY [^] because of the spread of the letters.

      "And it's not as if you have to type integer every time you want one. You just type int."

      All from http://kentb.blogspot.com/2005_08_01_kentb_archive .html

    32. Re:Java - Duh. by xouumalperxe · · Score: 1

      Objective C would be a wonder then. Strict superset of C (unlike C++), and its OO layer grabs a lot fro smalltalk, from what I've heard.

    33. Re:Java - Duh. by TrekCycling · · Score: 1

      It was a typo. Or a brain fart or something. I meant to that there's been a backlash against calling C# features "syntactic sugar" in some books/articles I've read. The Rubyists especially seem to like syntactic sugar.

  3. which to choose by Anonymous Coward · · Score: 1, Insightful

    It really doesn't make a difference

    1. Re:which to choose by rovingeyes · · Score: 1
      Probably this would get you started. Try to answer these questions with confidence:
      • How good are you in OOP?
      • Do you believe OOP is the right solution for every application?
      • What are the different types of programming techniques (OOP is one of them, not the only one)? Do you know you can achieve OOP with procedural languages?
      • Is your goal to get in to systems programming or application programming or completely different like systems architect?
      • What if you end up working for Google where you are assigned a Python coding project? What if Linux Trovalds decides to give you a shot and you don't know C++?
      • ...

      Hopefully you get the idea. Doesn't matter what programming language you use of even which platform. Sure you'll be favorite on /. if you say you use Linux. But those accolades don't give you a career nor put food on the table. There is nothing wrong in working for Microsoft. Its better to get paid than rant of slashdot without a job. Bottom line wise up and start working for your goal. Programming language is just a medium. Its called "language" for a reason - you tell computer what to do. If you can do that very effectively in French, no body gives a shit.

    2. Re:which to choose by Anonymous Coward · · Score: 0

      Correct. You can learn either Java or C#, you're still a DeVry student.

      But seriously, learn Java, learn C#, learn Scheme, Ruby, Haskell, Python, Lisp, Perl, Prolog, Smalltalk, learn everything you can. That's what college is for.

    3. Re:which to choose by ultrabot · · Score: 1

      It really doesn't make a difference
      Quite true.

      The main difference is the different class libraries of the two languages. Both will get every school project done with roughly equal pain. However, you shouldn't waste your precious free time (yes, I know this is slashdot) programming in either. You ought to pick something more agile, say, Python for your own home Linux projects.

      --
      Save your wrists today - switch to Dvorak
  4. As someone who has taken both... by TheSpoom · · Score: 3, Interesting

    C# == MS Java.

    At least, on a basic level. Personally, I'd say if you're aiming for broadness on your resume, Java will get you a lot further than C#. But then, it really depends on the type of company you're aiming at.

    --
    It's better to vote for what you want and not get it than to vote for what you don't want and get it.
    - E. Debs
    1. Re:As someone who has taken both... by gcnaddict · · Score: 4, Insightful

      C# != MSJava;

      J# == MSJava;

      --
      Viable Slashdot alternatives: https://pipedot.org/ and http://soylentnews.org/
    2. Re:As someone who has taken both... by cmay · · Score: 0, Troll

      Unlike Java... there are lots of people looking for C# developers

    3. Re:As someone who has taken both... by Anonymous Coward · · Score: 1, Insightful

      It also depends whether they are really teaching C# (the language) or .NET (the framework). I took a "GUI programming with C++" class years ago, and basically all it involved was learning how to use the Visual C++ 4.0 GUI and memorising the MFC class structure. There was little discussion of basic GUI principles, and no discussion of alternatives to MFC.

      So, if you are really learning C#, then that is fine. However, if you are learning all about how to use the Visual Studio UI, and memorising the WinForms class structure, then it is not such an appealing option.

    4. Re:As someone who has taken both... by duffahtolla · · Score: 1
      Well, I'm looking for three JSP developers in the Miami area. My problem is I can't find anyone who can REALLY program. They all choke when I test them.

      Found one swedish guy who was really good, but the H1s are already filled till next year.

    5. Re:As someone who has taken both... by Anonymous Coward · · Score: 0

      Well, I'm looking for three JSP developers in the Miami area. My problem is I can't find anyone who can REALLY program. They all choke when I test them.

      How do you know you need exactly three?

      And you can't need them that badly, if you can afford to be so picky. If any of them are bright, you can show them what they need to know pretty quick. Think about it, on-the-job training for a couple of weeks vs. not finding anyone for 6 months. Which one gets you results faster?

    6. Re:As someone who has taken both... by ClosedSource · · Score: 1

      "I took a "GUI programming with C++" class years ago, and basically all it involved was learning how to use the Visual C++ 4.0 GUI and memorising the MFC class structure."

      Sounds like another case of the myth that "C++ on Windows == MFC". MFC was convenient for certain types of applications, but for many others C++ and the Windows API was a more appropriate choice.

    7. Re:As someone who has taken both... by TheSpoom · · Score: 1

      About five seconds after I posted the original comment, I knew someone would say that.

      Problem is, I haven't heard of anyone using J# in at least a few years. Perhaps I just haven't been looking. Or perhaps it's because Microsoft's JVM has been sued out of existance and discontinued? Who knows...

      --
      It's better to vote for what you want and not get it than to vote for what you don't want and get it.
      - E. Debs
    8. Re:As someone who has taken both... by Anonymous Coward · · Score: 0

      You obviously haven't used either. C# is MSJava. J# is just bait used to lure Java users over to MS.

    9. Re:As someone who has taken both... by Anonymous Coward · · Score: 0

      Java will get you a lot further than C#.

      Yah, ok.

      That's just a stupid comment - and pretty much what I was expecting from the linux/M$ hater here.

      Neither is particularly better than the other - and I'd be willing to debate which will 'take you further'. C# has pretty much got M$ totally behind it. And there is one thing M$ is better at than anyone else - reving it til it works. Never underestimate them. IMHO, Sun still doesn't know what to do with Java.

      You want an honest answer? Skim the want ads for jobs where you want to work and see what's there. Figure out what sort of work you WANT to do. Java is going to be mostly web work/server side. C# is going to be spread out, but probably more on the clientside - but even that's not really the case (ASP.NET can be C#). Do you want to work in windows or Linux? There IS no easy answer for the question. Anyone providing one is doing you a GRAVE disservice as well as pretty much lying to you. The windows people aren't looking at the big picture and the linux/java crowd (most) are too anti-m$ to give a straight answer.

      Myself, I work in windows. Why? For me and my situation (where I live, etc) it is MUCH easier to find a job being a windows person. Do I think windows is better than Linux? I don't really care. It's where I make quite a bit of money. You need to a) find the one you LIKE doing (VERY important) and b) the one that will let you get a job DOING what you like. Easy, aye? Obviously not - but that's about all there is to say.

    10. Re:As someone who has taken both... by duffahtolla · · Score: 1
      How do you know you need exactly three?

      That's what our budget allows. What kind of question is this?

      And you can't need them that badly, if you can afford to be so picky.

      Thats true. We need more people, but we are not desparate. These are additions not replacements.

      If any of them are bright, you can show them what they need to know pretty quick. Think about it, on-the-job training for a couple of weeks vs. not finding anyone for 6 months. Which one gets you results faster?

      I know this, but who wants to have a life long student hanging on my arm. If they can't think for themselves, I don't want them.

  5. I'd learn by ackthpt · · Score: 1


    I'd learn Snoo

    --

    A feeling of having made the same mistake before: Deja Foobar
    1. Re:I'd learn by Anonymous Coward · · Score: 0
      I'd learn Snoo

      That joke is so old that it was first seen chiseled on a cue-rock for the David Letterstone show.

    2. Re:I'd learn by PatSand · · Score: 1
      For all you Futurama fans, I'd prefer to program in Snoo-Snoo...

      Much more like real life in the corporate world...Think about it...

      --
      Supreme Granter of Doctor of Obviology Letters ("A FIRM Command of the Obvious")
  6. both -- then more -- it's fun! by Anonymous Coward · · Score: 4, Insightful

    just pick one, and then learn the other on your own. don't fool yourself into thinking that one will be more important by the time you graduate.

    the field changes very quickly so if you learn to be flexible, you'll be more ready for the new languages and systems that are around a year or two after you start working too

    remember -- languages and programming is fun! if it's not fun for you then you are in the wrong field and you should seriously think about that early on.

  7. Go Java by iced_773 · · Score: 0, Troll


    I remember hearing somewhere that .Net was a mistake and that MS will end support for it. Therefore, in a few years, C# won't matter.

    1. Re:Go Java by DCstewieG · · Score: 1

      Hey look I can do that too!

      I remember hearing somewhere that Java was a mistake and that Sun will end support for it. Therefore, in a few years, Java won't matter.

  8. Take whichever one... by TrumpetPower! · · Score: 5, Insightful

    ...is being taught by a better professor.

    Cheers,

    b&

    --
    All but God can prove this sentence true.
    1. Re:Take whichever one... by allelopath · · Score: 1

      good advice

    2. Re:Take whichever one... by breckinshire · · Score: 5, Funny

      Has more ladies! Oww!

    3. Re:Take whichever one... by mvfranz · · Score: 1

      I would agree with this. If your professor doesn't know the language, you will not learn anything useful. I could go on, but I won't (have to protect the innocent).

    4. Re:Take whichever one... by Anonymous Coward · · Score: 1, Funny

      Which is neither, because he's at DeVry.

    5. Re:Take whichever one... by TheGreatOrangePeel · · Score: 2, Interesting

      I'll second this and add, "...beware the preverbial 'THAT' professor." The one that will push back all your due dates and give you (quite literally) impossible assignments until nothing is due or everyone is failing respectivly and as a result, you pass for just showing up everyday.

      I learned OOD the old fashoned way: C++. When I took the job I'm currently at they had me go through some mock developer training in which they put me in a position of a team lead. I can tell you right now that the best OOP programmers I had in my team had studied C++ first. Why? Pointers. C++ FORCES you to get all the astrisks and ampersands in the right place. Java certinly dosn't make you do that at ALL (note to nitpickers: Yes. 'References' not 'Pointers' *blinks* I don't care. Close enough.) and from what I remember of the little bit of C# I had, C# dosn't make you do that either.

      I would suggest that you learn as MUCH C++ as you can over the holiday break. Bruce Eckel has an EXCELLENT excellent excellent book called "Thinking in C++" (he also has one called "Thinking in Java" that is very much the same, so if you take the Java course, DEFINATLY get that book).

    6. Re:Take whichever one... by WhatsAProGingrass · · Score: 2, Interesting

      Getting the right professor is much better than choosing the langauge.. I took a course called Advanced C++ back in the day and my professor worked for Lockheed Martin and only taught on the side. This guy new the field very very welland taught us industry standards etc...I have never had a CSC professor as good as this one. I to this day go by what he has taught in class. Make sure when you ask, "Which professor is better", they don't just give you the answer to this question "Which professor is easier"...because you don't want easy, you want better. I personally do not like the "easy" professors for I don't thnk I get my money's worth for school. And sadly, I do not program much at all. But from the C++ that i've learned, every other language that I sometimes fiddle with, comes very easily.

      --
      Mark
    7. Re:Take whichever one... by Anonymous Coward · · Score: 0

      Then he'd have to drop out of Devry and go to a real school ;)

    8. Re:Take whichever one... by prtsoft · · Score: 0

      Yes! Bruce Eckel's book is the best book on C++, there are two volumes, both are very well written.

    9. Re:Take whichever one... by TheGreatOrangePeel · · Score: 1

      OH! Yes! I nearly forgot! Electronic copies are available for free!

      http://mindview.net/Books/DownloadSites
    10. Re:Take whichever one... by Combas · · Score: 0

      What made Luke a better Jedi than his father? Luke was primarily taught by Yoda, whereas Anakin was taught by Obiwan. Having a better teacher can make all the difference in the world ;)

    11. Re:Take whichever one... by phasm42 · · Score: 1

      That is the most practical and insightful suggestion yet. There are a lot of similarities between the two languages, and if you're taught well, it will be easy to move between them.

      As for how to determine which has the better teacher(s), that's a different matter :-]

      --
      "No one likes working in a hamster wheel, and your shop smells of cedar shavings from here." - TaleSpinner
    12. Re:Take whichever one... by Anonymous Coward · · Score: 0

      Has a lady!

      Fixed that.

    13. Re:Take whichever one... by rinkjustice · · Score: 1

      Bad idea. I've been in classes where there are hot women and it becomes difficult to even concentrate on the lesson.

    14. Re:Take whichever one... by jcr · · Score: 1

      You may be right, I wouldn't know since I've never met a DeVry instructor. In my experience, good programming instructors are exceedingly rare, and the ones I've found, I've found on the job.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
  9. Java. by dan_sdot · · Score: 5, Insightful

    Learn Java. And try to use it in the Linux environment. Basically, what is important here is not the fact that you are going to learn a certain language, but that you will learn how to write object oriented code. Once you learn that, you can pick up c#, c++, etc.
    The advantage of Java in my mind is that it can be used in a Linux environment where you will be forced to understand the "application creation" process from top to bottom, as opposed to a Window environment where you just write the code and let the OS and the tools provided do all the other work for you.
    Learning a new language is trivial. Make sure that you understand the CONCEPTS of coding.

    1. Re:Java. by MathFox · · Score: 1

      Seconded. The differences between java and C# are relatively small, but java fits better in a Linux environment. If you want to become a serious software engineer you should spend some time to learn one or two other programming languages too, to broaden your view.

      --
      extern warranty;
      main()
      {
      (void)warranty;
      }
    2. Re:Java. by b17bmbr · · Score: 5, Interesting

      I teach the AP comp sci class at my high school. I stress repeatedly that they need to learn to program first, then do it in java second. I always show them examples with python, perl, php, even c, for comparison. Learning good programming techniques is entirely different from "learning (programming language)". It's like the debate over editors, ide's, whatever, it's the best tool for the job. Me, I like java for lots of things. But I also do alot with LAMP and the same concepts apply. Whether its branching, security, speed, or features, I always design first, code second. I can never emphasize that enough with my class.

      --
      My problem? I was perfectly gruntled, until some numbnuts came by and dissed me.
    3. Re:Java. by Anonymous Coward · · Score: 1, Funny

      True story: My software development teacher explained the different development models (waterfall, spiral, etc...) over the course of a semester. On the first day of class she said "Now the first model I would like to cover is the 'Code-and-fix' model." At that point, everyone in the class cheered. She responded by rolling her eyes.

      My point is: no matter how popular or tempting it is to be a code-and-fix developer, listen to parent!!!

    4. Re:Java. by geekoid · · Score: 1

      the best tool for the job is a cop-out in this case.

      Both of these tools can do the same job.
      The question is: Which pays more?

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    5. Re:Java. by TheDauthi · · Score: 1

      If my mod points hadn't expired yesterday, I'd mod the parent up, even though he sounds a little more bitter than I do about it. I _like_ C#, a lot. Honestly, I think it's the better of the two languages. However, I simply don't trust Microsoft, and think that Mono would probably be legally encumbered if it ever became a huge success... so I write as much as possible in Java.

    6. Re:Java. by StrawberryFrog · · Score: 1

      C# people claim their language is "better." I've used both - C# is not better enough to justify...

      Is that still true with C# 2.0? How about with C# 3.0? Bruce Eckel recently said
      "C# 3.0 may be too forward-thinking for Java to catch up to."

      such as their pointless and absurd practice of mixing VM and non-VM code at every opportunity

      Who is "they"? - if it's C# programmers in general, I don't see any evidence of that in the code that I've worked with. If it is the .net class library implementers, I'd say that the equivalent classes in the java runtime are probably written in C++ not java at all so the point is moot.

      Either way I'm a bit surprised to see this old saw come up again, and I'd like to see some example, references or other justifications for saying it.

      Any language significantly different from a C/C++/Java-like language can't be supported efficiently.

      Again, what is your reason for saying that so categorically? There is evidence that suggest that the true situation may be otherwise.

      I don't expect Mono to succeed even in its modest promises, although if they do, they may wish they didn't.

      Ah, wondeful pessimism.

      --

      My Karma: ran over your Dogma
      StrawberryFrog

    7. Re:Java. by acm · · Score: 1, Insightful
      There is no future in C#, because it's Microsoft's toy, and it will always be Microsoft's toy. If they want they can take it and go home.

      C# is an official ECMA standard, Java is not. So tell me again who can more easily take their toys and go home?

    8. Re:Java. by Anonymous Coward · · Score: 0
      Ah, wondeful pessimism.

      Not so, mono is gonna be in trouble if it takes off, Microsoft aren't stupid. If there was a BSD or GPL'd JVM, Java would become the de-facto language for free software. Hint to IBM but Sun really should do the decent thing.

    9. Re:Java. by TheSkyIsPurple · · Score: 1

      Eep There are different approaches to solving a problem that need to be understood before you can even begin to apply a language to it. Are you going to approach it in a functional sense? OO? Procedural? Hybrid? Lambda? It sounds like you're showing them something in one method, and then teaching a different method... seems a little confusing to me. Though one of the more interesting classes I took was a study in languages, in which we took a language from each of the major paradigms (they were C, LISP, Prolog, and something else I can't remember), and did the same three projects in each of them. It extremely painful, but really fun... Doing something AI-ish in C, doing something functional in Prolog, etc... really drove home the differences between conceptual approaches.

    10. Re:Java. by Concern · · Score: 1

      Bruce Eckel recently said
      "C# 3.0 may be too forward-thinking for Java to catch up to."


      Don't believe the hype.

      Who is "they"?

      Microsoft themselves, in their own developer literature.

      "The Microsoft .NET Framework promotes interaction with COM components, COM+ services, external type libraries, and many operating system services..."

      link

      That's just the first reference I found. I've seen position papers where they go even further to sell the ease of use of their unmanaged interop like a feature... so have you probably.

      Old saw indeed. What's so surprising about it? The interop and unmanaged code features get big billing... why do you think that is? So no one will use them?

      Again, what is your reason for saying that so categorically?

      I'm surprised you would ask considering how thoroughly the "commonness" of the CLR has been debunked on /. (reference)

      The fact that Python has been ported to JVM and .NET doesn't really speak to the point I'm trying to make here.

      Ah, wondeful pessimism.

      So I guess you just ignored the statements afterwards explaining the reasons for this pessimism?

      --
      Tired of Political Trolls? Opt Out!
    11. Re:Java. by Concern · · Score: 1

      C# is a standard. .NET is not.

      So you write your .NET programs in C# and guess what? You're locked into MS's proprietary API's (not to mention all of the native calls you're probably making)...

      Java has standardized and created a spec and compatibility tests for their entire system end to end. .NET has no such thing. They standardized the steering wheel and the brake pedals so that they can sucker you into getting locked into the rest of the car.

      This is why there are many JVM's, including a FS/OS one which is nearly complete (and certainly farther along than Mono is and may ever be) - and why the same isn't true for .NET.

      --
      Tired of Political Trolls? Opt Out!
    12. Re:Java. by penguin-collective · · Score: 2, Insightful

      C# people claim their language is "better." I've used both - C# is not better enough to justify the baggage of being locked into the world's most notorious vendor.

      How does using Mono and Gnome lock me into Microsoft?

      The lock-in that has caused problems for me is lock-in into Java: Sun's J2SE implementation has caused me numerous problems, there is no sensible alternative, Sun's willingness to fix bugs has been poor, and since it's closed source, there is no way of fixing it.

    13. Re:Java. by Concern · · Score: 1

      How does using Mono and Gnome lock me into Microsoft?

      That is C#, not .NET.

      Mono has claimed they want to be .NET compatible. I don't think they ever can, because unlike the language, the platform is proprietary and heavily patented.

      So as I say, they might someday be .NET compatible, but I doubt it. Or you might end up writing "dirty .NET" - C# in Mono... which is fun until MS sues you.

      I thought this would be clear already from what I wrote, but I figure I'll reiterate anyway, just in case...

      Sun's J2SE implementation has caused me numerous problems,

      Yeah, any VM, from any vendor has bugs... fortunately...

      there is no sensible alternative

      I can't believe you'd have the audacity or the ignorance to say this... There are a number of alternatives from FS/OS to IBM and BEA...

      Sun's willingness to fix bugs has been poor,

      Can't argue with that, I've had some nasty bugs that hurt me in the VM go unfixed for years too... but...

      and since it's closed source

      Wrong...

      there is no way of fixing it.

      Wrong.

      Switch to another VM, or fix it yourself.

      And don't cry about how things aren't really compatible from one VM to another, since A) it's not often as bad as some people say, and B) I think you're talking about .NET as an alternative...

      --
      Tired of Political Trolls? Opt Out!
    14. Re:Java. by Dr_Barnowl · · Score: 1
      The interop and unmanaged code features get big billing... why do you think that is?

      Aside from the angle of OS lock-in, which the interop features do, of course, promote, the MS coder base has a large number of individuals who are used to hitting the Windows API, even from VB6. For those individuals, having to learn a nice shiny new managed API only to find out that it doesn't support the advanced techniques they are used to might be a bit much.

      Don't forget that Microsoft engineers are largely just, well, engineers. The same as you. The difference is that the rest of us have to look at them through a thick layer of asshat-glass erected by MS PHBs. To create a product that had no access to the underlying OS would be as unthinkable as removing the same features to call out to binary libraries from Java.

    15. Re:Java. by Anonymous Coward · · Score: 0

      The advantage of Java in my mind is that it can be used in a Linux environment where you will be forced to understand the "application creation" process from top to bottom, as opposed to a Window environment where you just write the code and let the OS and the tools provided do all the other work for you.

      why is writing java code on linux any different than writing it on windows?
      the whole point is that it's the exact same code that runs [essentially] the exact same way regardless of platform.

      if you're implying that it's a good idea to use linux to get a feel for how to write apps, then that's not correct. a major reason why so much buggy, buffer-overflow-ridden software exists is that it's written in C/C++/[insert other non-managed language here], which are brain-dead choices for anything other than kernels, real-time systems, mobile devices, or device drivers.

      there's one big reason to run java specifically on unix, and that's if you need to have a high-availability appserver that needs all the performance you can squeeze out of the machine [which, for someone learning java, is irrelevant].

      i'm not trying to slam the parent poster here, it's just that i'm sick of seeing so many people on slashdot comment wrongly on java/other managed languages when they don't know much about them.

    16. Re:Java. by Valar · · Score: 1

      Who says C# has to target .NET? It could just as easily target all those java vms you are talking about. Heck, you could even make native code with it. Modern languages are seperate from their host platforms. That's why we have ironpython, jpython, java to natice code compilation, and gcc which can target many different instruction sets with many different languages.

    17. Re:Java. by Valar · · Score: 1

      Also, sorry for the double post, but it is worth noting that the CLI is, a standard. That's right, the bytecode is protected similarly to C#. So they standardized the wheel, pedals, engine, frame, gas tank, seats, and everything else... to sucker you into getting locked into one namespace which is essentially the air conditioner.

      Diabolical.

    18. Re:Java. by Valar · · Score: 2, Informative

      Please know what you are talking about before posting.

      In summary, it is indeed patented, but also standardized. As a result, licenses must be given on a reasonable and nondiscriminatory manner. That means they can't decide who gets to have a license and the license terms have to be the same for everyone. Furthermore, they have to follow ISO and ECMA's licensing rules, which prevents overly constrictive licensing. Furthermore, the companies involved have agreed to provide the licenses on a royalty free basis. That's right, they can't even charge a billion dollars for it.

      Actually, this places it in almost the _exact same_ legal position as Java. Java is a standard, but Sun holds many patents on java technology. They've agreed to let anybody have a license, and not to charge royalties on people who build their own VMs.

    19. Re:Java. by Concern · · Score: 1

      If Java "standardized" the langauge and the VM, but not the API, then it would be equivalent to .NET. Fortunately they made their whole platform a standard, unlike MS.

      Why try to confuse people about it?

      --
      Tired of Political Trolls? Opt Out!
    20. Re:Java. by Anonymous Coward · · Score: 0

      [How does using Mono and Gnome lock me into Microsoft?] That is C#, not .NET.

      Yes, and if you were paying attention, you would have noticed that the question was about learning C#, not .NET.

      I can't believe you'd have the audacity or the ignorance to say this...

      Well, your posting is typical of the lies and misrepresentations Java zealots are using; there isn't even point in rebutting you.

    21. Re:Java. by Valar · · Score: 1

      You don't have to standardize the API. The API is just a library of commonly used classes, etc. Microsoft holds the patents on very few of the processes embodied in the API (and the vast majority of those live in the Microsoft namespace and are rarely touched). You can't patent something like an array, or converting from one character representation to the other. So, microsoft's patent portfolio would be useless to block, for example, mono development. They aren't using microsoft's copyrighted code. The only trademarked namespace is the above mentioned one (because it is the company's name). So what IP, exactly, would enable Microsoft to block further development of something like mono? I'm sure novell's lawyers thought about it long and hard, and they happen to have degrees in this sort of thing.

      Furthermore, permitting interoperability is an exception in the current patent and DMCA regime.

    22. Re:Java. by Praxx · · Score: 2, Informative
      If they want they can take it and go home. When MS decides its time to stop, as they did for many of their other much vaunted initiatives, then that's it, your party is over.
      My company, along with many others, are switching to a practically 100% .NET development environment. ASP.NET is 100% reliant on .NET. Microsoft would be absolutely insane to even think about dropping .NET - it's not even a remote possibility.

      Java is well specified and unencumbered.
      The C# language is very well defined. Unencumbered? What, pray tell, is encumbering about C#? It's almost exactly like Java. Sure, there are probably a few more keywords to throw around, but all of them have a pretty well-defined place. I find the language quite the opposite of cumbersome.

      Based purely on raw numbers of job offers, if you're looking to make money off this skill you would be flipping crazy to learn C#...
      What numbers are you looking at? In Dallas at least, there is extremely high demand for C#/.NET developers.

      ... C# is not better enough to justify the baggage of being locked into the world's most notorious vendor. In many cases the supposed advantages of C# are a wash or even bad ideas - such as their pointless and absurd practice of mixing VM and non-VM code at every opportunity, and allowing unsafe code to be mixed in...
      By default, you can't even use unsafe code without explicitly telling the compiler to allow it. Unsafe code is rarely used throughout the actual framework itself, but when it is, it's primary purpose is performance. I suppose that they should have bit the bullet and used a slower method, so you could complain about performance instead?

      C# people claim their runtime is language agnostic. It is not. It's C* agnostic. Any language significantly different from a C/C++/Java-like language can't be supported efficiently. No surprise there.
      This may be somewhat true for any non-object oriented language, but their claim does hold: the runtime can, theoretically, support any language -- it all compiles to what basically amounts to assembler code. But, I'd rather the runtime support a language style that is highly used than anchor the thing down because want their [insert obscure programming language here] to compile just as efficiently. In light of that, the efficiency of the compiler is probably more related to how much work is put into making it efficient in IL code. C may be a better language, but code written in BASIC will run faster if the C compiler sucks. Not surprisingly, people are more interested in optimizing C code.

      I don't expect Mono to succeed even in its modest promises, although if they do, they may wish they didn't. Perhaps their best path will be to stop trying to be compatible and diverge into a kind of "dirty .NET"...

      Which is unfortunate, I've had occasion to want to use Mono, and I'd love to run ASP.NET 2.0 code on a linux box (I still think Apache > IIS).
      --
      http://www.policystew.com/
    23. Re:Java. by Debiant · · Score: 2, Interesting

      Here is my 5 cents.

      I'm bit surprised that what I replied got 5 and 'insightful' and the general hostiliness towards .NET & C#.

      In work I use LAMP. I keep up Linux server for a hobby, which runs Debian. I've learned to program first with C, then with C++(OO), Visual C++ and Java. Most advanced learning in school and own time I've done with Java and J2EE. This all just to show I've not tied my fortune or past what MS does. .NET is in my non-scholar opinion elegant architechture. Can't see why I would write in Windows enviroment something with plain C++ for example, or would advocate it's general use over .NET. Far as I know, .NET tries to fix common problems windows programming has had. Maybe it presents something new problems that are far worst than current, but that's still to be seen. To my knowledge, .NET doesn't take account what abstraction level is used(programming language) but it is possible(atleast in theory) to do it with Perl too.

      Sure, I still wouldn't do my enterprise level software with .NET and/or C#. Neither would I'd like to use MS server software to use .NET. BUT, .NET is an intresting idea and shouldn't be overlooked so much just because it's Microsoft that is pushing it.

      I also feel personally that C# is more intuitive to program than with Java. Java has lot of good points, but it is clumsy. In a way that's both strength and weakness of Java. Good when learning it, but becames a drag for us more advanced.

      --
      Nobody knows the trouble I've seen, nobody knows has the trouble seen me, even I sometimes wonder why I write these line
    24. Re:Java. by 1110110001 · · Score: 2, Informative

      Mono has claimed they want to be .NET compatible. I don't think they ever can, because unlike the language, the platform is proprietary and heavily patented.

      So ... what? That's just one point of Mono. Look at the new apps in Gnome and how many of them are written in C#. And how much faster they were written and how easier they are to read.

      The .NET part is one thing that would be nice because you could take Windows software and run it under Linux. Still you don't need to and there are enough APIs that are not part of .NET to make Mono a useful project.

      Just because you hate Microsoft doesn't mean everything they do is bad. Maybe in twenty years we would even like them as much as IBM today.

      b4n

    25. Re:Java. by bhav2007 · · Score: 1

      God, I wish you worked at my school. Can you believe I am the only person in AP Computer Science AB? It is a private school but there were 8 guys in my class last year; however, the last teacher never really got around to teaching, so everybody else flunked the AP exam (I got a 5 :). Now I just sit in the back of the first year class and finish the silly little projects, and the new teacher (who might actually know stuff but couldn't teach a monkey to climb a tree) never even talks to me. The upside is that, since I'm one of maybe 3 guys within a mile who can explain what an object is, everybody seems to think I'm some kind of prodigy.

      Just thought I would complain to somebody who might commiserate, wish there were more teachers who knew their stuff.

    26. Re:Java. by nule.org · · Score: 1

      It's been pointed out elsewhere in the thread, but you can download the Java source yourself from http://java.sun.com/j2se/1.5.0/download.jsp It's a rather restrictive license, so I wouldn't go so far as to call it 'open source', but it's certainly not 'closed'.

    27. Re:Java. by amliebsch · · Score: 1
      I'd love to run ASP.NET 2.0 code on a linux box

      I've done it. It works. It was pretty awesome, actually - I would edit the code on Visual studio, but the project lived on the Linux box, so changes happened live.

      --
      If you don't know where you are going, you will wind up somewhere else.
    28. Re:Java. by labratuk · · Score: 1
      With Java you can take your code anywhere...
      ...that Sun wants you to.
      --
      Malike Bamiyi wanted my assistance.
    29. Re:Java. by Concern · · Score: 1

      You don't have to standardize the API.

      Yes, you do.

      It's rather obvious, since any application of any consequence is written against it.

      And to think, people complain about portability on Java, where the platform actually is standardized...

      But I guess that's your point here - to fool people into thinking they're not being locked into a Microsoft proprietary system when they write against .NET? By willfully obfuscating the difference between C#/CLR and the .NET platform APIs they will actually use to write their apps?

      Mono will either clone .NET to the point where they are vulnerable (and patent law makes no special provision for interoperability that I'm aware of), or they won't. Have you seen their patent portfolio? It's not a casual operation. Why take this risk?

      Furthermore, permitting interoperability is an exception in the current patent and DMCA regime.

      Even just looking at the DMCA, it's carefully crafted to appear to allow interoperability, whil always providing the pretext for an expensive civil, if not criminal, proceeding every time anyone interoperates anyway... which is exactly what happens almost every time... As you well know, unless you don't follow the news.

      --
      Tired of Political Trolls? Opt Out!
    30. Re:Java. by Concern · · Score: 1

      Yes, and if you were paying attention, you would have noticed that the question was about learning C#, not .NET

      Zealotry... is pretending you can do the equivalent of standardizing the C language but then making half of /usr/include patented and proprietary...

      There is a reason that K&R is as much concerned with functions as it is with syntax... and there's a reason most of what you need to know as a C programmer isn't even in K&R, since what you spend the most time dealing with are your APIs...

      You think you can learn C# without learning .NET? Well, it's true, Mono gives you an alternative set of APIs... Until MS sues them and (according to the SCO model) you...

      --
      Tired of Political Trolls? Opt Out!
    31. Re:Java. by Concern · · Score: 1

      ...This is just another iteration of the same deception... standardize part of the platform but keep part proprietary (in this case, the APIs) and maybe you can fool some people (like this person) into thinking they're not trapped.

      --
      Tired of Political Trolls? Opt Out!
    32. Re:Java. by Concern · · Score: 1

      You realize this comment is both senseless, wrong, and deceptive, right?

      --
      Tired of Political Trolls? Opt Out!
    33. Re:Java. by penguin-collective · · Score: 1

      maybe you can fool some people (like this person) into thinking they're not trapped.

      The fools are people like you; Java is far worse than even .NET in terms of patents.

      standardize part of the platform but keep part proprietary (in this case, the APIs)

      I don't care, I don't use the .NET APIs.

    34. Re:Java. by Concern · · Score: 1

      Microsoft would be absolutely insane to even think about dropping .NET

      Just like they'd be crazy to break backwards compatibility with VB?

      What, pray tell, is encumbering about C#? It's almost exactly like Java.

      I don't get it. Why does nobody understand this?

      Java is a language, and a runtime, and an API.

      The standardized portions of .NET are the language and the runtime.

      Notice the critical missing piece?

      What do you think happens when you want to leave MS?

      I can just picture the post now. "Hey ECMA said it's a standard but strangely when I tried to leave MS I got all these errors about missing classes? I don't understand."

      You didn't write an app to add numbers forever without doing input or output. You wrote an actual app that uses the API. And now you can't leave. You are locked in.

      What do you think MS does when they've got you locked in? What they always do. What any vendor that gets you locked in does. They bend you over a barrel.

      You will be stuck watching Java people migrate from machine to machine, OS to OS, VM to VM, App Server to App Server... taking advantage of actual marketplaces full of innovation and competition... while you stagnate in MS's walled garden.

      What numbers are you looking at? In Dallas at least, there is extremely high demand for C#/.NET developers.

      I never refuse to provide sources, but I can't believe you have the audacity to ask me this.

      Have you even picked up a newspaper?

      The picture is abundantly clear... I doubt it's even that different in Dallas (although it's possible I suppose)...

      (Reference 1) (Reference 2)

      Unsafe code is rarely used throughout the actual framework itself, but when it is, it's primary purpose is performance.

      I've already produced references for others to prove Microsoft itself actively promotes the use of interop and unmanaged code.

      Of course, people may recognize that it's a bad feature and not use it... Not exactly a badge of honor for .NET though.

      I've already made my rather obvious point about why this is bad... now you have the same loss of guarantees and stability of native, with all the overhead of the VM... so this begs the question...

      I suppose that they should have bit the bullet and used a slower method, so you could complain about performance instead? ...why use the VM?

      the runtime can, theoretically, support any language

      Theoretically has nothing to do with practicality; if you read me, I am speaking about performance. I have no doubt you can shoehorn a shitty implementation of anything you want onto CLR or the JVM for that matter...

      Not surprisingly, people are more interested in optimizing C code.

      So you apparently concede the point that CLR is not as flexible in terms of practical support for other languages that significantly different from C/C++/Java as its proponents sometimes claim...?

      Which is unfortunate, I've had occasion to want to use Mono, and I'd love to run ASP.NET 2.0 code on a linux box (I still think Apache > IIS).

      It comes down to pure, hardboiled obstinancy.

      If Microsoft wanted to beat the crap out of Java all they'd need to do would be to put down the patent gun, open up their sources, and let .NET embrace cross platform. They could perhaps out-Java Java.

      We both know very well they wont. It's because .NET is not designed to win the language wars or be the best language. It is designed to stop the bleeding from developers breaking out of MS's jail, by providing a new way of locking developers (and their code) into the proprietary Microsoft platform.

      --
      Tired of Political Trolls? Opt Out!
    35. Re:Java. by Concern · · Score: 1

      The fools are people like you; Java is far worse than even .NET in terms of patents.

      So... now that you've dropped this bombshell...

      Have anything to back it up?

      Or are you just "spreading FUD?"

      --
      Tired of Political Trolls? Opt Out!
    36. Re:Java. by Concern · · Score: 1

      So what?

      That's so what.

      You have to read the fine print.

      --
      Tired of Political Trolls? Opt Out!
    37. Re:Java. by KrispyKringle · · Score: 2, Insightful

      Good thing you haven't got mod points, then. As at least one other poster noted, C# is an ECMA standard, while Java is not. C# has fully open implementations (Mono being the most common, but not the only). It would be legally impossible for MS to attack anyone who implements their open standard--they simply don't own C# or .NET IL.

      If the name "Microsoft" leaves too much of a bad taste in your mouth for you to actually consider what's a better choice, you're not an engineer--you're a zealot.

    38. Re:Java. by TheSpoom · · Score: 1

      Holy shit, I wish I had you back in high school. My Java course(s) would have been SO much more useful (not that they weren't already, but it really sounds like you knew what you were doing, whereas my teacher was actively researching the language as he taught).

      --
      It's better to vote for what you want and not get it than to vote for what you don't want and get it.
      - E. Debs
    39. Re:Java. by RoLi · · Score: 1
      There is no future in C#, because it's Microsoft's toy, and it will always be Microsoft's toy. If they want they can take it and go home. When MS decides its time to stop, as they did for many of their other much vaunted initiatives, then that's it, your party is over.

      Exactly. They did the same with Visual Basic (which got replaced by "Visual Basic.NET" which has only the name in common) and they will do it again because they NEED reasons for people to upgrade.

    40. Re:Java. by RoLi · · Score: 1
      You don't have to standardize the API.

      The whole point of an API is to be able to replace the parts on both ends. Without standardization, it doesn't make any sense.

    41. Re:Java. by penguin-collective · · Score: 1

      Have anything to back it up?

      Yes: look on uspto.gov for "Sun" and "Java". You'll see that, among other things, parts of the byte code verification process required by the Java specification are patented.

    42. Re:Java. by StrawberryFrog · · Score: 1

      Don't believe the hype.

      Again, I'm asking for a specific reason why you should or should not believe the hype. Consider from whence it comes - Mr Eckel is not a MS shill, so why it it hype not expert opinion? Do you like the C#3 features? Why do you think they aren't a threat to Java?

      The interop and unmanaged code features get big billing... why do you think that is?

      Yes .NET does interop well - it gets billing because it tickles the manager's comfort zones - the new does not mean throwing away the old completely. That would be a frankly insane design fom MS to contemplate at this stage of it's installed base. That should be obvious. You said "practice of mixing VM and non-VM code at every opportunity" which is much more than having documentation on easy ways of interop, it means overuse of the feature, partularly the old "unsafe code" slur. That is not shown at all.

      The fact that Python has been ported to JVM and .NET doesn't really speak to the point I'm trying to make here.

      No, it doesn't. But I draw your attention to the second paragraph: "Iron Python on the Microsoft implementation of .NET was only a few percent slower than Python 2.3 overall". Now, the point you were trying to make was "Any language significantly different from a C/C++/Java-like language can't be supported efficiently." This is a direct contradiction. Explain it if you can.

      So I guess you just ignored the statements afterwards explaining the reasons for this pessimism?

      I am rather sceptical of them yes. I don't think there's as strong a case, or as evil a plan as you like to think. How exactly have the mono team managed to break patents despite being aware of the issue, and how does it benefit MS to shut them down?

      --

      My Karma: ran over your Dogma
      StrawberryFrog

    43. Re:Java. by Praxx · · Score: 1
      I've done it. It works. It was pretty awesome, actually - I would edit the code on Visual studio, but the project lived on the Linux box, so changes happened live.
      When I tried it, Mono only supported the C# 1.0 spec and framework - I had alot of C# 2.0 specific things in my code, so I had to abandon the idea. If it supported to C# 2.0, and enough of the asp.net framework - running my stuff on a linux box would work out very nicely.
      --
      http://www.policystew.com/
    44. Re:Java. by sriramv_iyer · · Score: 1

      I dont think Python belongs to the category of C* languages. Check out IronPython (http://www.ironpython.com/). I believe python is a good language to start programming compared to Java or C#. since your University may not have that in the syllabus, it may be a good idea to choose C#, unless you are paranoid of locking into Microsoft technologies.

    45. Re:Java. by Praxx · · Score: 1

      What do you think happens when you want to leave MS?

      The same thing that happens when you want to leave any other development platform in existence. Better not use any commercial vendors; you might want to leave them one day.

      You will be stuck watching Java people migrate from machine to machine, OS to OS, VM to VM, App Server to App Server... taking advantage of actual marketplaces full of innovation and competition... while you stagnate in MS's walled garden.

      That sounds all very ideal, but in the real world (or at least the subset of it that I work with), I have very little desire or need to be migrating. Even the probability that we would *need* to migrate is so low, that I would rather take advantage of the development productivity gained by using the products we use, and accept the miniscule risk that we *may* have to rewrite some code should we choose to migrate.

      Ironically enough, the market we deal in typically uses quite a bit of proprietary database systems built on Linux boxes. We make our money precisely because there is a lack of innovation in this market, using almost exclusively Microsoft products. Not that our solutions aren't possible using a non-MS solution, because they most certainly our - it is just our preference.

      The picture is abundantly clear... I doubt it's even that different in Dallas (although it's possible I suppose)...

      I don't disagree with your references; the demand for Java overall is clearly higher. Even a quick search on Monster agrees with it, there are 350 java positions and only 208 .NET. I have observed a sharp increase in the demand for .NET developers over the last couple of years, and I don't expect that it will go away. This is partly due to the fact that using .NET is orders of magnitude easier to use than Microsoft's previous attempts at application frameworks (like MFC.) Even my own company is increasing its staff of .Net developers (know any? Send resumes!). IMO, I don't think it would be a terrible choice to learn either language. In time, I'd say it's pretty reasonable there will be equal demand sometime in the near future.

      Theoretically has nothing to do with practicality; if you read me, I am speaking about performance. I have no doubt you can shoehorn a shitty implementation of anything you want onto CLR or the JVM for that matter...

      If you are in need of that much performance, then your choice of VM, be it CLR or JVM is irrelevant. Chances are you've already chosen the wrong place to start. I believe the intent of the "language-agnostic" API was to unify the development efforts between the flagship languages used on Windows machines, like C# and VB.NET. They have succeeded in this effort and I will prove it to you: People view VB.NET as a professional development language. I say this half jokingly, but it's true. I can't stand VB, but the performance argument against it is gone because in the end, the IL produced is practically the same.

      So you apparently concede the point that CLR is not as flexible in terms of practical support for other languages that significantly different from C/C++/Java as its proponents sometimes claim...?

      That could be a yes or a no, depending on your definition of "practical support." I am not a CLR guru, so my opinion is meaningless, but given that IL is pretty much a generic assembler with some extensions for calling virtual methods and the like, I don't think it would make a significant difference what language you did use -- It would depend on the compiler. There are some features in the CLR that don't translate exactly to other languages, and there are plenty of examples of this in VB.NET. That is to say, you'd pretty much have to make ".NET" versions of whatever language, but to me, that appears to be

      --
      http://www.policystew.com/
    46. Re:Java. by Anonymous Coward · · Score: 0

      "C# people claim their runtime is language agnostic. It is not. It's C* agnostic. Any language significantly different from a C/C++/Java-like language can't be supported efficiently. No surprise there."

      Except for IronPython, a (fairly complete) .NET Python implementation that manages to be faster than the cpython interpreter. You can't claim that Python is a C/C++ like language.

    47. Re:Java. by AnotherDaveB · · Score: 1
      "Basically, what is important here is not the fact that you are going to learn a certain language, but that you will learn how to write object oriented code."

      You may want to consider what books/software are available.

      Objects first with Java has uniformly good reviews on Amazon, a supporting website, and of course the designed-for-education BlueJ IDE

    48. Re:Java. by njyoder · · Score: 1

      There is no future in C#, because it's Microsoft's toy, and it will always be Microsoft's toy.

      Wild, rampant and unsupported speculation.

      If they want they can take it and go home.

      Sun can do this to an even greater extent, since they control who is allowed to implement VMs. Their standards are 100% proprietary and closely controlled. They also protect themselves with patents. Strangely, Microsoft actually has open standards, giving it a distinct advantage. Sun is in a much better position to lock Java down and prevent people from using it.

      With Java you can take your code anywhere.

      Same with C#.

      Basically this adds up critical mass. The language is never going away.

      Sort of like Sun's constantly changing GUI APIs which become very popular then have support for them dropped, right?

      Basically this adds up critical mass. The language is never going away.

      Like COBOL and Fortran, right? Because we know how popular and well supported those languages are today despite being extremely popular in their heyday.

      Java is well specified and unencumbered. Even the source of Sun's VM is available (though not under the GPL, at least you can read it, see what's going on in the VM, and fix bugs),

      C#/.NET is also well specified and even more unencumbered. Java uses completely closed standards. You keep whining that only 2 of 3 parts of C#/.NET are part of open standards, but Java has 0 open standards. C#/.NET wins hands down.

      And Sun's VM is not open source. Have fun with that, especially when reading means that you can't take the risk of coding your own VM, because of potential copyright infringement.

      there are Gnu implementations that are farther along already than Mono - and I doubt Mono will catch up.

      No, it's quite the opposite, the GNU classpath implementations have only recently come to a half-decent level of completeness. We also know that the open source attempts at VMs have been abysmal. Hell, even commercial alternatives to Java's tend to be a pain to set up and suck donkey balls.

      What's that thing called? Oh yeah, evidence. When you make bold claims, you better back them up.

      Based purely on raw numbers of job offers, if you're looking to make money off this skill you would be flipping crazy to learn C#... although OTOH once you know one, the other won't be too difficult.

      Let's see these numbers then. Evidence.

      In many cases the supposed advantages of C# are a wash or even bad ideas - such as their pointless and absurd practice of mixing VM and non-VM code at every opportunity, and allowing unsafe code to be mixed in...

      Unsafe code mixing is RARE and requires you specifically telling the compiler to allow it. But hey, don't let things like facts get in your way.

      C# people claim their runtime is language agnostic. It is not. It's C* agnostic. Any language significantly different from a C/C++/Java-like language can't be supported efficiently.

      What's this hypothesis based on? Evidence helps, it's that thing you keep refusing to provide. So please tell me why Lisp couldn't be implemented effeciently in it. Do you even know how the runtimes worked? They were designed specifically to be LANGUAGE agnostic, not C* agnostic. That's why they are stack based instead of register based. If they just wanted to work as effeciently as possible for C* languages, it would have been made register based, since that would be more effecient and easier to implement.

      Perhaps their best path will be to stop trying to be compatible and diverge into a kind of "dirty .NET"... All fun and games until MS sues them.

      Sun has already sued people, including Microsoft, for making altered versions of their APIs. So far, Microsoft has sued no one for that. I guess MS wins.

      And if you dismiss this as a conspiracy theory... and go to embrace the patented, "standardized" platform

    49. Re:Java. by jack_csk · · Score: 1

      Basically, what is important here is not the fact that you are going to learn a certain language, but that you will learn how to write object oriented code.
      I concur, but tell this to those HR people - as the primary question is job related.

    50. Re:Java. by Concern · · Score: 1

      So where do you get far worse?

      Sun has a program for certifying people who clone their platform. MS wont even promise not to sue people who clone .net.

      There is even a cloud over MS' C# and CLR RAND terms...

      So basically, you're exactly wrong and you've now as much as admitted it. But hey, no skin off my back. You think the risk is worth it? Go commit some projects to that platform and see what happens. :D

      --
      Tired of Political Trolls? Opt Out!
    51. Re:Java. by Concern · · Score: 1

      Again, I'm asking for a specific reason why you should or should not believe the hype

      I'd put it the other way around. I've laid out massive problems with .NET. What's so special about C# that could overcome them?

      the new does not mean throwing away the old completely. That would be a frankly insane design fom MS to contemplate at this stage of it's installed base.

      If you want to make a VM that adds all of the associated overhead and headaches... and doesn't throw away the old ways of doing things, so is just as unsafe, then that is basically stupid, as far as I can tell.

      You said "practice of mixing VM and non-VM code at every opportunity" which is much more than having documentation on easy ways of interop, it means overuse of the feature, partularly the old "unsafe code" slur. That is not shown at all.

      I have indeed shown that MS promotes exactly this bizarre approach to application development - within MSDN and around the documentation for this feature.

      Explain it if you can.

      Oh that's easy. I don't consider Python to be sufficiently different.

      I don't think there's as strong a case, or as evil a plan as you like to think.

      You're a trusting soul, considering they're already bankrolling SCO.

      How exactly have the mono team managed to break patents despite being aware of the issue, and how does it benefit MS to shut them down?

      Simple. Even the standardized portions of the platform, C# and the CLR, are patented and the standards body only requires RAND licensing which may be incompatible with the GPL. MS has conspicuously arranged it this way and refuse to say they won't do so.

      In other words... it doesn't look good.

      If you can seriously even ask what benefit MS thinks they get from hurting their competitors, free and otherwise, I guess I'll stop here. I don't think you're serious anymore.

      --
      Tired of Political Trolls? Opt Out!
    52. Re:Java. by Concern · · Score: 1

      The same thing that happens when you want to leave any other development platform in existence.

      Wow. You really don't understand this?

      If the platform is based on a standard (rather than just parts of it), then you can leave without much penalty to anyone else who implements the same standard.

      I have very little desire or need to be migrating.

      Trust me, it happens.

      Perfect example. We use a Java servlet container. One day we discover it has a bug. We go to the vendor. The vendor refusese to fix the bug. We switch to another container. Presto. The bug is gone.

      Imagine, too, that if there is only one vendor and you are locked into them, they no longer care so much about fixing bugs or keeping you happy at all, because they have a monopoly, and they act like it. And I've had exactly this problem with MS. I catch IIS blowing up? I debug it with MS support, who actually talk to me because the client is fortune 50, and what do they say when we catch them red-handed? "Sorry, we know about that bug. It's marked WONTFIX."

      Imagine never having to hear that kind of thing again, because now you have a market instead of a monopoly. That's what standards do. That's what scares MS to death.

      accept the miniscule risk that we *may* have to rewrite some code should we choose to migrate.

      As you get more experience, you realize this no longer sounds so good when you have 400,000 lines to worry about.

      In time, I'd say it's pretty reasonable there will be equal demand sometime in the near future.

      Man just listen to yourself. That's a pretty contrived way of admitting that there is greater demand for Java than C#.

      And by the way, if you really think C# will equal Java for job demand in the near future, I would take that bet, depending on when you think that is. Within 5 years? 10?

      If you are in need of that much performance,

      In the enterprise the term is "scalability."

      I don't think it would make a significant difference what language you did use -- It would depend on the compiler.

      Unfortunately this isn't actually true. The topic has been covered extensively.

      You know, I don't actually see a lot of what you like in .NET that isn't also in Java. Form editors for GUI work? Java has them. Attributes? Java. Reflection? Java. ADO? Java's Hibernate is a great persistence mechanism... Remoting? Java has it. In fact I did some Java to .NET remoting the other day with glue. It took about 5 minutes to get going.

      I find Java development tools like Intellij Idea significantly superior to anything available for C#/.NET. I would go so far as to say it basically defines the state of the art in development tools. I've never seen code-as-structured-DB, effortless search and refactoring integrated so completely in anything before. You should seriously check it out. (As it happens the Jetbrains guys have ported some of their refactoring tools to C# - I think the product is called Resharper, worth checking out out as well...)

      The vastly greater number of people doing Java development, and its many-year lead in the space have resulted in a rich ecosystem of vendors, open source, and free software projects that are totally unmatched in the .NET world. The result is that there is a lot of great code out there to use (even BSD licensed) and a lot of interesting research going on in the space...

      --
      Tired of Political Trolls? Opt Out!
    53. Re:Java. by Anonymous Coward · · Score: 0

      I dont think Python belongs to the category of C* languages.

      It's not all that different.

    54. Re:Java. by Concern · · Score: 1

      Wow.

      I think you win an award.

      In some paragraphs you have an egregious error in almost every sentence.

      Sun can do this to an even greater extent, since they control who is allowed to implement VMs.

      No, they do not. They control who can call their Java VM's "Java compliant."

      Their standards are 100% proprietary and closely controlled.

      No, they are not "closely controlled" - they collaborate extensively through the JCP, and indeed much of Java 5 was defined that way. OS developers like the Apache Group are behind many of the new parts of the spec...

      They also protect themselves with patents.

      Which their license explicitly grants you the use of, when implementing JVMs...

      Microsoft actually has open standards

      Unlike MS, who has the option of potentially GPL-incompatible RAND licensing for C# and the CLR, and doesn't standardize the rest of .NET APIs at all... what are you smoking, really?

      You are basically saying you can take your .NET app to some other server? Or ever will be able to, at some point in the future? Lies this obvious just make you look foolish.

      Sun is in a much better position to lock Java down and prevent people from using it.

      So as you can see, this is wrong.

      Same with C#.

      Except all those class not found errors.... Oops, your API didn't come with you... I guess you don't mind rewriting everything?

      Sort of like Sun's constantly changing GUI APIs which become very popular then have support for them dropped, right?

      What are you smoking? Seriously? No APIs have been dropped yet. They have added new, never removed the old...

      Like COBOL and Fortran, right?

      I notice you ignored the point about the spec and the standard and the VM. Not surprising.

      C#/.NET is also well specified and even more unencumbered.

      So you are aware this is a blatant lie, right?

      Oh it's OK. Just point me to the other vendor that implements .NET. Not C#, not the CLR. .NET... Oh wait, you can't! Bzzzzzzzzzzzzt.

      And Sun's VM is not open source

      Poor reading comprehension. The source is available. Not the same as open source. As I pointed out, it is not FSF or OSI compliant.

      GNU classpath implementations have only recently come to a half-decent level of completeness.

      The compiler and VM are done for some time. They are doing the entire API, and that is also pretty far along now. Mono is nowhere near this, and you probably even know it.

      Hell, even commercial alternatives to Java's tend to be a pain to set up and suck donkey balls.

      I had no problem with IBM's system. Actually I didn't have too much trouble with BEA's either. Perhaps you're just bad at it?

      What's that thing called? Oh yeah, evidence. When you make bold claims, you better back them up.

      I don't think you would recognize evidence if a worm delivered it to your IIS server's homepage. You've certainly overlooked everything I've provided thus far.

      Let's see these numbers then. Evidence.

      Duh OK. The fact that you don't already know this, though, is by itself basically proof that you're an ignorant fanboy kid who likes to shoot their mouth off without having any idea what you're saying... If you did, you would try to change the subject rather than dig your hole this much deeper: Reference 1. Reference 2.

      Unsafe code mixing is RARE and requires you specifically telling the compiler to allow it. But hey, don't let things like facts get in your way.

      You say "RARE" and make a childish insult. However I point to Microsoft promoting the practice

      --
      Tired of Political Trolls? Opt Out!
    55. Re:Java. by KrispyKringle · · Score: 1

      If the rest of your comment weren't so vitriol-filled and pointless, I might bother to read it. As is, there are two odd errors that, I think, typify your weird bias:

      1) Your link shows Microsoft explaining the practice of mixing code, not promoting it. They say ".NET promotes this" to mean ".NET makes this practice easy," as in, "this is one more option if you must do it." I don't understand what your point here is--is it that this practice should not be allowed, or that the feature should be shipped but not the documentation explaining it?

      2) Your TIOBE link has nothing to do with job offerings, and your Dedasys link only incidentally does. Good methodology there, buddy (not to mention that it doesn't compare things like salary or desirability, or attempt to compensate for the derivatives of job offerings--there may be few, but they may be high paying, for instance, or there may be few, but they may be growing, while Java offerings may be shrinking).

      Feel free to foe list me, as well. In fact, I suspect anyone who disagrees with you is a troll.

    56. Re:Java. by njyoder · · Score: 1

      No, they do not. They control who can call their Java VM's "Java compliant."

      Right, so you can't actually call it Java, you have to come up with some other name for it, which is stupid. Even if it's backwards compatible with Java, you can't call it "Java compliant," which is stupid. Strangely, Microsoft doesn't place this restriction on .NET. Looks like Microsoft is more leanient.

      No, they are not "closely controlled" - they collaborate extensively through the JCP, and indeed much of Java 5 was defined that way. OS developers like the Apache Group are behind many of the new parts of the spec...

      JCP is a joke. Sun has the ultimate and final say and they have so many purists working for them that they refuse to listen to anything that's not in line with their personal views. It took many years of *numerous* complaints before they finally implemented template (generics) support. So the lesson is: you don't get large changes in it until so many people start complaining that they risk losing market share if they don't. .NET, on the other hand, is constantly being improved. With 2.0 out and 3.0 coming out in a few years, they're very open to improvement.

      Microsoft actually listens to customer demands because they want to people to use their technology. They don't have a joke like JCP that feigns interest in what their customers say.

      Which their license explicitly grants you the use of, when implementing JVMs...

      Same goes for Microsoft's license, what's your point? You were *just* whining about microsoft granting royalty free licenses, this is just plain hypocritical.

      Unlike MS, who has the option of potentially GPL-incompatible RAND licensing for C# and the CLR, and doesn't standardize the rest of .NET APIs at all... what are you smoking, really?

      They *are* standardized, you are just flat out lying now. A proprietary standard is still a standard. MSDN details the full standard. And there's no more reason to believe RAND licensing is incompatible with the GPL than Java's is. Thank Mr. Internets legal expert. As I said: Microsoft has sued ZERO people over .NET, Sun has sued several over JAva. Who do we trust not to bring lawsuits?

      Now, let's ignore the fact that, AS YOU IGNORED, Sun has released ZERO open standards. They are all closed. Swing and miss.

      You are basically saying you can take your .NET app to some other server? Or ever will be able to, at some point in the future? Lies this obvious just make you look foolish.

      Yes, of course. Given the numerous people who have done this without problem, your argument holds no water.

      Except all those class not found errors.... Oops, your API didn't come with you... I guess you don't mind rewriting everything?

      WTF are you smoking? If you wrote for .NET 1.0, it will work on any other .NET 1.0 system. And newer versions are backwards compatible. This isn't any different with Java. If I write something that uses Java 1.5 features and APIs, it will break on a 1.4 or earlier system.

      What are you smoking? Seriously? No APIs have been dropped yet. They have added new, never removed the old...

      I said dropped *support*. They won't bother updating them or providing any help with them anymore. Microsoft hasn't dropped any APIs in .NET either.

      I notice you ignored the point about the spec and the standard and the VM. Not surprising.

      What about them? The specifications for Fortran and COBOL have been around for eons. That didn't prevent them from being phased out though.

      Oh and following your own logic, Java isn't standardized, because their standards aren't open. Non-open standards aren't standards in your mind.

      So you are aware this is a blatant lie, right?

      Oh it's OK. Just point me to the other vendor that implements

    57. Re:Java. by toriver · · Score: 1
      Right, so you can't actually call it Java, you have to come up with some other name for it, which is stupid. Even if it's backwards compatible with Java, you can't call it "Java compliant," which is stupid. Strangely, Microsoft doesn't place this restriction on .NET. Looks like Microsoft is more leanient.

      Are you against trademarks and their protection? And unlike your uninformed guess, Microsoft do not let you call things .Net
      Do not use "Microsoft .NET" or ".NET" in the name of your products, services, or devices.


      Sun has the ultimate and final say and they have so many purists working for them that they refuse to listen to anything that's not in line with their personal views.

      Sun has already had to give in to other members of the JCP over technology. Again you show yourself to be uninformed.

      Sun has released ZERO open standards

      Unless you count RFCs like 1014 (XDR), 1057 (RPC), 1094/1813 (NFS), UltraSparc... If by "open standards" you mean submitted to one of those bureaucracies of a standard organization, not much good comes of that: Witness Microsoft's non-compliance to the C++ specification when it comes to writing Windows apps in Visual Studio for instance.

      If you wrote for .NET 1.0, it will work on any other .NET 1.0 system.

      But that's the point, isn't it? What does consistute a .Net 1.0 system? The standards cover only a part of it, the rest you have to skim off Microsoft's API documentation.

      Why don't you addres the fact that Java has ZERO open standards?

      What is less open about the JCP than ECMA? ECMA is just a rubber-stamp organization, there is no spec development going on there - that all happens at Microsoft and it's associates like HP.

      Given the massive API documentation available for free on the MSDN website, it's hard to argue that it's not standardized.

      So now suddenly vendor-provided API documentation is enough to make something standardized? What happened to the requirements you leveled at Sun and the JCP?

      Then you proceeded to ignore the fact that Sun has sued, and Microsoft hasn't.

      Of course they sued! Microsoft broke a CONTRACT! They had SIGNED a CONTRACT saying they should NOT make incompatible changes to their implementation and they DID! What does that have to do with Java vs. C#?
    58. Re:Java. by njyoder · · Score: 1

      Are you against trademarks and their protection? And unlike your uninformed guess, Microsoft do not let you call things .Net

      You misread that page, it's saying you can't name your product something.NET. It's not saying you can't say your product is .NET compliant, which is something Sun forbids with Java. In fact, that very page gives recommendations of how to say that your product uses .NET.

      Note that Mono calls itself a .NET implementation, even adding its own APIs, and Microsoft has no problem with that because they don't name themselves Mono.NET. Not that Microsoft enforces that anyway, there are a million products that use .NET in their name and to my knowlege, not one has been sued.

      Sun has already had to give in to other members of the JCP over technology. Again you show yourself to be uninformed.

      When? Over what?

      Unless you count RFCs like 1014 (XDR), 1057 (RPC), 1094/1813 (NFS), UltraSparc...

      Way to take my statement out of context. I was talking about _Java related_ standards. Microsoft has C# and the CLR as open standards. No parts of Java are part of an open standard.

      Witness Microsoft's non-compliance to the C++ specification when it comes to writing Windows apps in Visual Studio for instance.

      Uh, have you even used Visual Studio? Are you talking about compiler specific additions? Because all compilers do that, including the ever popular gcc. In fact, there's a de facto standard directive (#pragma) for compiler specific flags even.

      If you're referring to slightly imperfect compliance, well there are no compilers that are that good. Comeau and EDG had the earliest compilers that implemented most of the C++ standard. Those were pretty much the only two that could have been considered 'mostly compliant' around 1998 when the final standard was released.

      gcc itself didn't support most of it until it was into the 3.x series. 2.95.x had serious compliance problems. Visual Studio had good support since 7.0, as compared to 6.0 which was released before the C++ standard was even finalized.

      What is less open about the JCP than ECMA? ECMA is just a rubber-stamp organization, there is no spec development going on there - that all happens at Microsoft and it's associates like HP.

      Perhaps that the JCP is run by Sun and EMCA isn't affiliated with any organization (including Microsoft)? It's nice to see that you acknowledge that it's a collaborative effort with other organizations and that it's not just closed off like Sun. oh wait, you didn't know that open standards are usually developed by representatives of large corporations? Maybe you should take a look through the authors of RFCs.

      So now suddenly vendor-provided API documentation is enough to make something standardized? What happened to the requirements you leveled at Sun and the JCP?

      Of course it is. I don't think you know what "standard" means. Having something well documented and specified makes it standardized. I never said Sun didn't have standards, I just said they were CLOSED standards. Try working on that reading comprehension.

      Of course they sued! Microsoft broke a CONTRACT! They had SIGNED a CONTRACT saying they should NOT make incompatible changes to their implementation and they DID! What does that have to do with Java vs. C#?

      What contract did they sign? You don't understand; it's a legal mandate by Sun. You don't have to sign anything. If I wrote my own Microsoft-like implementation and it became popular, Sun would sue my ass too, despite me not signing any contract.

      And what does this have to do with Java vs. C#? Well maybe you should ask the guy who I'm replying to which started this all. He was asserting that C# was bad because Microsoft would probably sue people. Since Microsoft has sued ZERO and Sun has sued SEVERAL, I'd say that argument holds no water.

    59. Re:Java. by toriver · · Score: 1

      No parts of Java are part of an open standard.

      What is not open about something you can freely download? It's easier for someone to become a member of the JCP than whatever organization does C#/CLR development. Because that's not ECMA - they just rubber-stamp whatever Microsoft and co-sponsor HP sends them.

      What contract did they sign?

      This one. It was settled out of court though - like practically all of Microsoft's cases.

      It should be noted that Netscape also violated their license, and were duly beaten around the ears for it.

    60. Re:Java. by njyoder · · Score: 1

      Right, because we all know how effective JCP is at addressing consumer comlaints. Let's ignore how many eons it took to get generics implemented in Java. Java still doesn't have operator overloading to this day, despite furious insistence.

      And Microsoft may have signed a contract, but that doesn't change the fact that Sun will sue anyone regardless of whether or not they signed it. Their licensing agreement (which no one actually signs) forbids anyone from doing what Microsoft did.

    61. Re:Java. by Concern · · Score: 1

      If the rest of your comment weren't so vitriol-filled and pointless

      Let's talk about what makes a good troll.

      Lots of people make mistakes, especially me. But over the years I've noticed that a few people don't just make mistakes. Rather, they make a post or series of posts that is beyond simple error - it's outrageous and silly. Like njoyder here. Practically every sentence he wrote was wrong or deceptive in some way. Add in childish and obnoxious rhetoric and (forgive me for correctly predicting him) a complete refusal to bend to facts, evidence, or subsequent rational discussion, and you have... well, a troll in my opinion anyway.

      The label isn't important. The point is that he's not only wildly wrong, but nothing productive is going to come from talking to him, either.

      Now take you, for example. You passed over that outrageous post, and your criticism is for me - merely pointing out the errors and responding in a way that is more than justified. You speak of bias, not in the most biased (and frankly ridiculous) post in the whole discussion, but of my corrections to it.

      You do not actually rebut most these corrections, and you slyly try to imply you don't need to, even though it's obvious you're not defending almost all of his errors - and we both know this is why you haven't tried.

      Now let's look at what you did write.

      You say you don't understand my point about the problems with unmanaged code and pervasive native interop. Let me repeat myself, since apparently you simply didn't read my earlier posts: "Thus eliminating the boundaries on the well-defined, well-tested native stack and ruining most of the advantages of a VM while keeping most of its disadvantages." Please let me help you - what part of this are you unable to understand?

      And then you dispute that Microsoft promotes the practice.

      I point out an MSDN link where Microsoft literally says .NET "promotes" this practice. Your way of arguing it is to say that when they say "promotes" they really don't mean "promotes?"

      Humorous.

      However, sadly, you have demonstrated ignorance of Microsoft's literature on the subject.

      Ironically, even within Microsoft, there is awareness of security, reliability, and performance (see headers in linked doc) issues related to interop. ("Calling unmanaged code presents a major security risk.") ("When you use any type of interop technology, your code might not be as reliable or robust as pure managed code.") ("Every interop call introduces some overhead. Depending on how often these calls occur and the significance of the work happening inside the method implementation, the per-call overhead can range from negligible to very noticeable.") ("It is suggested that, whenever possible, you use .NET Framework functionality instead of calling unmanaged APIs.")... If you were smarter or more knowledgeable I would have expected you to cite this.

      Someone inside MS is obviously aware of the issues you claim not to understand. Unfortunately MS contradicts itself in its own literature (references) and, sadly, you are wrong, despite knowing better, they really do promote the nonsensical mixing of VM and native code in a way that almost defeats the purpose of having a VM. For instance, in this "best practices" document, in the section titled "Interoperability vs. Migration":

      The first thing to consider in terms of a migration is whether to migrate the code at all. The COM interoperability features of the .NET Framework are very powerful and, in nearly all cases, allow you to continue to use your existing code without migrating it to managed code. As you develop new parts of your application or reuse components of your application from newer managed code applic

      --
      Tired of Political Trolls? Opt Out!
    62. Re:Java. by KrispyKringle · · Score: 1

      Wow. Just, wow. Don't you have a job or something? I suppose it didn't occur to you that I simply didn't find the rest of your post interesting (as I said before, it was just filled with vitriol) and that's why I didn't bother to read it closely or reply.

      So again, I'm going to reply to the excerpts from your super-long post that I think are kind of ridiculous.

      "Let's talk about what makes a good troll."

      Let's not. I don't care.

      "[Lots of stuff about how mixing managed and unmanaged code is bad and how Microsoft knows it is bad]..."

      You quote MS yourself, however, as they explain why there are advantages to being able to do this mixing--for some users, migrating code is undesirable or not an option. This is not an oversight or an accident that you can do this mixing, but by design. Now, MS, and myself, are aware of the downsides to doing so. MS says that the platform "promotes" the practice--by which, in context, they clearly mean something like "makes it easily possible," not "encourages one to do so unnecessarily or against his better judgement," as you seem to believe--but they do warn about the possible downsides. I don't see what your problem with this is--you appear to think it's better to not give the user that option, which, while a valid position to take (especially in favor of high-minded language purity) isn't really a hit out of the ballpark in your favor, so to speak.

      In other words, the ability to do code mixing is a powerful tool that, while undoubtedly useful to some, may allow others to shoot themselves in the foot. Unfortunately, I see it as likely a necessary evil to promote .NET adoption; there is a segment of users who simply won't migrate to things that require a rewrite of their legacy code (Java's particular disappointments should make that clear).

      I never claimed there were more jobs available to .NET programmers, merely that the raw number of available jobs is not a great indicator of whether the original poster would find the one or the other more useful. I pointed out other factors to consider that you had not dug up appropriate data on, and, this time around, I might suggest you spend some time researching that--as I would be interested to see your conclusions--rather than writing another rant in reply to my (hopefully short) post.

      Anyway, you appear to be the one incapable of understanding me, since maybe half of your arguments above were straw men. So I suggest, this time around, you read again what I wrote and, this time, try to remember that I'm not the same guy as that original poster you were lambasting. I'm someone else. And I don't have to defend his positions. Get it? Good.

    63. Re:Java. by Concern · · Score: 1
      My goodness. Your degree of obnoxiousness and audacity is simply stunning.

      I will keep it very short and simple since reading the things (and people) you snipe at seems to fatigue you. Will bullet points do?

      • You brought up bias and vitriol. You talk about who should be labeled troll and who shouldn't. But then you don't actually want to talk about it once you realize you'll have to (gasp) support your vacant insults with argument. OK, fine, you lose.
      • You continue to not really see (or admit to seeing) the problems with a VM platform where app developers are encouraged to misuse native interop. I've made this abundantly clear with references etc. but you have now conclusively demonstrated your impenetrability on the subject. Go ahead, the next VM segfault is on me.
      • You claimed that MS does not "promote" the practice, and now two references into proving that they do, you have not apologized or even ceased repeating yourself. You're so busted it's not funny.
      • There are many, many, many more jobs for Java developers than .NET developers - a "small" consideration given the parent article. This seems to bug both you and njyoder; he humorously asks for "evidence" and you have a goofy attempt to change the subject with nitpicking about "incidental-ness" and specious (and unsourced) rambling about salaries or desirability. You could go ahead and have the balls to bluntly claim what you're obviously dreaming, which is that "soon" there will be more .NET jobs than Java jobs, but you didn't. Too bad.
      • You claim "maybe half" my arguments were "straw men." Which half?
      • You jumped in to defend the goofiest troll I met in the whole discussion, but you don't actually have to defend him. Don't worry about it, you can't defend yourself.
      --
      Tired of Political Trolls? Opt Out!
    64. Re:Java. by KrispyKringle · · Score: 1

      You'll note that I'm not responding to some of your bullet points, not because I can't, but because, as noted before, they're simply personal attacks. My degree of audacity isn't really the issue here, after all.

      2) No, I don't see the problem with that. If developers will not embrace a platform that does not allow them to use legacy code, they're not going to embrace a platform that doesn't allow them to use legacy code. Since you haven't answered my question as to what you'd propose instead (force them to rewrite everything? Allow them to link to legacy code but not "promote" the practice by documenting it?), I don't know what to say. Sure, I see the problems. So does Microsoft. I never said I didn't. But while there are problems, there are also problems with many other compromises we accept every day--blindly repeating the inherent problems in using unmanaged code doesn't win your argument (though it does make you sound like a Java bigot--one who doesn't simply prefer a certain platform, but is unable to have a rational discussion about its downsides).

      Rational people can disagree, of course (that doesn't mean we can). There are valid arguments for avoiding unmanaged code altogether, just as there are valid arguments for using it when forced. Ultimately, it's the circumstances of the particular implementation that decide this, which is why having the option, while allowing bad developers to shoot themselves in the foot, can also be very empowering.

      Yet you don't ever say that developers shouldn't be allowed to do this, exactly. You seem to be focussed only on the "encouraging" of misuse. In other words, unless I'm misreading, your problem with .NET is not that it allows the use of unmanaged code, but that, in your mind, the documentation says it's OK to do that.

      3) I don't believe I ever wrote "incidental-ness." I did say that the original poster was asking whether he should learn this language for career reasons, and that the number of jobs offered is not the sole consideration (for instance, the number of jobs offered for OCaml developers is incredibly small--far, far smaller than those offered for either C# or Java developers--yet I was recently offered a relatively lucrative position doing OCaml precisely because I had OCaml experience, unlike most other applicants).

      5) The half in this post I didn't bother answer. Well, that's not fair--they're not straw men; they're just pointless.

    65. Re:Java. by Concern · · Score: 1

      You'll note that I'm not responding to some of your bullet points...

      It's quite obvious you don't respond because you don't feel like admitting your mistakes.

      If developers will not embrace a platform that does not allow them to use legacy code, they're not going to embrace a platform that doesn't allow them to use legacy code.

      Of course Java allows them to.

      Since you haven't answered my question as to what you'd propose instead

      The question is an awkward since it's a very basic one, and out of incredulity I hesitated to embarass you by answering directly. Almost every single Java application converses with non-Java applications. Since you persist, Java (which is vastly more widely adopted than .NET despite not implementing and encouraging native interop the way .NET does - already categorically proving you wrong, but let's humor you) works with legacy code the way most distinct systems do: through network sockets (using any protocol you like), database APIs, file APIs, and at the outer limits, rarely, the Runtime APIs... which invoke external programs in the host in a separate process, without exposing them to the VM's address space.

      The bare fact is that you have it backwards. Why write anything in Java in the first place? There are many tradeoffs to the VM, as you (might?) know. Some of the big reasons to go that way are the guarantees of safety/reliability and security the VM gives you. If you mix unsafe code into the VM all those upsides disappear, but you keep all of the downsides plus you pay performance penalties and there are other problems as well, these are just the big issues. And this is where I see I am repeating myself yet again... honestly if you haven't gotten it by now, I'm not sure why I'm still trying, but...

      Imagine, on /. all you need to bring is a bad idea and an obnoxious attitude, and you get a free education. What a country.

      Yet you don't ever say that developers shouldn't be allowed to do this, exactly.

      I don't ever say it, period.

      your problem with .NET is not that it allows the use of unmanaged code, but that, in your mind, the documentation says it's OK to do that.

      It's more than that "it's OK." Users are bluntly encouraged to misuse the feature. It's "promoted" as a long-term solution.

      I've not only shown that MS promotes and encourages interop misuse, but I've illustrated (quite vividly) how even they understand the problem, and their published best practices are contradicted by their own MSDN documents.

      Microsoft promotes this practice for two reasons; first because they know you can win over some less experienced or skilled developers with sugary misfeatures like this ("look how easy and fun it is to do this stupid thing! those java guys never let me have any fun..."), and second because they know encouraging pervasive native interop locks code into their platform.

      My first link shows they promote it, my second does too, and there is even more out there, and you either know it already, because you're familiar with .NET and realize they had a marketing campaign that sold the platform with this "feature," or you're not really that familiar with .NET...

      I don't believe I ever wrote "incidental-ness."

      Of course you didn't. I hope you take my meaning, though?

      yet I was recently offered a relatively lucrative position doing OCaml precisely because I had OCaml experience, unlike most other applicants

      So your theory is, don't learn what's in demand. Learn something that's not.

      Got it.

      I mean, if you really love .NET, by all means, become an .NET developer and damn the consequences. But... if you're asking, hey, I don't have a preference... should I learn .NET or Java? Don't say ".NET, cause those fewer jobs you can get might pay better, (when you can

      --
      Tired of Political Trolls? Opt Out!
    66. Re:Java. by KrispyKringle · · Score: 1

      For what it's worth, I started out with the assumption that you were simply a zealot who was over-eager to apply the label of troll.

      I'm having doubts. Either you're a troll--and a troll dumb enough to pay for super-wonderful-extra-good-Slashdot-membership--or your zealotry is really just beyond the pale. In any case, thank you for reminding me why I stopped coming to Slashdot (hint: it wasn't, as I'm sure you're likely to reply, because I couldn't stand to have my frequent and elementary errors corrected).

      As a final suggestion--though I'm sure this will fall on deaf ears--you might want to consider this: if people (in the far-more-than-two sense) often tell you you're wrong, it may not merely be that many people are stupid and unqualified. You might, in fact, be wrong.

    67. Re:Java. by Concern · · Score: 1

      You made a bunch of mistakes in your posts, were obnoxious about it, and got amply busted for it.

      What do you expect people to believe? That you're really a delicate genius who just hasn't been able to find the time to explain why your ridiculous posts actually make sense?

      For what it's worth I don't even think you're a zealot; you're too ignorant about it to fit the mold. I think you just don't have the balls to admit when you're wrong.

      I guess this is your version of an apology. That's hilarious.

      --
      Tired of Political Trolls? Opt Out!
    68. Re:Java. by KrispyKringle · · Score: 1

      OK, now what I said was that there is nothing inherently wrong with mixing code. That's it. Now, that's certainly a subjective viewpoint--"wrong" is subjective--but it's one shared by myself and thousands of other developers and architects, notably those at Microsoft (not to mention those at INRIA--the guys who make OCaml--those behind CPython, those behind GHC (the popular Haskell compiler--though since Haskell is purely functional, this is a slightly more complex situation)...). I don't see how that becomes "a bunch of mistakes" or "ridiculous posts," but I'm sure you'll be more than happy to explain it to me. (If I really am wrong--factually, not ideologically--go right ahead and point it out. I'm just not interested in your ideological debate.)

      Sure, this being Slashdot, we all hate MS. But while we can debate the merits of their decisions, saying "it's OK to allow bytecode to call native (not bounds- or type-checked) code" is not, like you would like me to believe, Just Plain Wrong. I did say a few other things (one being that your "proof" that there are more Java jobs than .NET jobs was just bad evidence--which you seemingly admitted, later), but that was the thrust of my main point and the one we seem to have spent the most time debating (other than which one of us is the stupider zealot).

      I was responding to you, initially, because I thought you were bullying someone else over a point which you didn't really have clear--your opinion about mixing managed and unmanaged code is fine, but it's not a fact, and it's ridiculous to assert that this isn't something reasonable people can disagree on. I lost interest in this discussion posts ago because it's just you and I going at each other's throats, and you clearly have no interest in actually discussing anything (sure, I was a bit snarky, too, and sure, you and I probably deserved each other's treatment).

      So, sure, I'm sorry if I hurt your feelings. I'm sorry if I didn't have the time to write multi-page treatises on this debate (it's not one I find terribly interesting). And I'm certainly sorry I started revisiting Slashdot a few weeks ago when I had a lot of free time, because now I'm just wasting it.

      I might regret even this reply, though it takes but a few minutes and I am, perhaps optimistically, starting to believe (after reading a few of your other posts on Slashdot) that you might be a sane person who just got himself a little worked up in this discussion. But my counsel to you, before replying, is to reread what I said, see what you actually take issue with, see what evidence you can present that backs your opinion, leave out the vitriol and ad hominems, and then reply.

      And try to keep your posts on the brief side of ginormous, OK? Thanks.

    69. Re:Java. by Concern · · Score: 1

      If I really am wrong--factually, not ideologically--go right ahead and point it out. I'm just not interested in your ideological debate.

      The problem with you is that I already have.

      In painful detail.

      Sorry if all this isn't interesting enough for you to be fully engaged. If only I had been more interesting, I'm sure you would be able to write a treatise to explain yourself, instead of being brief and ill-mannered (and now - humorously - attempting to condescend) and could have avoided some embarrassment.

      --
      Tired of Political Trolls? Opt Out!
    70. Re:Java. by Concern · · Score: 1

      If I really am wrong--factually, not ideologically--go right ahead and point it out. I'm just not interested in your ideological debate.

      I already did.

      In painful detail.

      You didn't get it, I guess that's why you're still blustering and condescending. I'm sorry all this isn't interesting enough to you - perhaps if these details had only been more interesting you might have engaged more fully and could have written a treatise and avoided some embarrassment.

      --
      Tired of Political Trolls? Opt Out!
    71. Re:Java. by Concern · · Score: 1

      Sorry for the double-post; slashdot did something I've never seen before. It said "comment submitted" but didn't display the reply immediately, so I mistakenly thought the first was lost.

      --
      Tired of Political Trolls? Opt Out!
  10. Either will be fine... by tenchiken · · Score: 2, Insightful

    But C# and .NET might open more doors for you. Java has done a good job catching up to new features in C#, so learning C# will help you with Java as well. There is a fairly strong market (trying to hire someone right now) for good C# people, and not a lot of canidates.

    1. Re:Either will be fine... by Anonymous Coward · · Score: 0

      There is a fairly strong market (trying to hire someone right now) for good C# people, and not a lot of canidates.

      At least not with the required 10 years of experience!

  11. Java -- move on to C++ by middlemen · · Score: 2, Insightful

    Well, I would suggest learning Java and the basic concepts of OOP. Once you are comfortable, I would suggest learning C++ and doing the memory management/Garbage collection work yourself, if your intentions are for knowledge rather than just a shortcut to a fat paycheck.

    1. Re:Java -- move on to C++ by David's+Boy+Toy · · Score: 1

      Not that you have to do manual memory management in C++. If you use smart pointers and STL containers its likely your code will not need to contain a single 'delete' or 'free'. Of course interfacing with legacy code may require some memory management, but this can be in a wrapper class.

  12. It doesn't matter too much by RailGunner · · Score: 4, Informative
    Syntactically, C# and Java are extremely similar, so it doesn't matter too much which one you take - you'll be able to pick up the other one fairly quickly. My advice: Learn the OO concepts, as the underlying language is less important. For example: Learn why derivation is a good thing, learn inheritance, object re-use, etc.

    The language (whether C# or Java) is just how you express what it is you're trying to accomplish.

    Now - With all that said: I'd take Java, for one simple reason: It's been around longer and there are more free resources out there to help you with it.

    But remember - as much as 90% of what you learn in Java will apply to C# and vice versa, as long as you focus on the base language (and not API's like SWT, Swing, or WinForms).

    1. Re:It doesn't matter too much by 0WaitState · · Score: 1

      Learn why derivation is a good thing, learn inheritance,

      Uh, better yet, learn why you should prefer composition over inheritance.

      --

      Remain calm! All is well!
    2. Re:It doesn't matter too much by Rew190 · · Score: 1

      Syntactically, C# and Java are extremely similar, so it doesn't matter too much which one you take - you'll be able to pick up the other one fairly quickly.

      Syntactically, yes, but that's not the brunt of the work of really knowing a language; it's the APIs. Don't think that you can say that you know Java just because you're fluent with C# and know that the syntax is almost identical. You don't. The APIs are tools that are absolutely essential if you want to be able to truthfully say that you know the language on a resume. Don't downplay them. I know RailGunner wasn't implying that APIs aren't important and agree with everything that he's saying, just pointing out that you cannot really know Java or C#/.NET until you're familiar with the tools that they give you.

    3. Re:It doesn't matter too much by strider44 · · Score: 1

      Bloody hell I absolutely hate the people who always say "Never use inheritance only use composition". Almost nothing is ever that black and white.

      They are different. Both have their uses and both are most powerful in different contexts. Most particularly, with composition you cannot use virtual functions so it's not as easy to modularise the code to implement new objects that can be substituted in. In inheritence it's a lot harder to have a clear understanding of the full class as the class definition is in effect split up all over the code.
      For example, I'm currently whipping up a simple GUI library for one of my opengl projects, and in this case I'm using inheritence by having a basic widget class with virtual functions (perhaps Render(), MouseClick() etc) and they are then put in a linked list where for each event I just go through the loop calling the function. With composition you can't do that.

    4. Re:It doesn't matter too much by 0WaitState · · Score: 1

      Sigh. Please toss the straw man off your bandwagon. I recall saying "prefer", not "never". Inheritance has its uses, but over-application of inheritance is the most common mistake programmers make in their first five years out of school.

      The point of inheritance is to express the author's intent in the class hierarchy, to express the Is-A relationship. The Uses, or Is-Very-Similar-To-In-Behavior relations are not Is-A. Repeat after me, "Implementation Inheritance is a four-letter word, Implementation Inheritance is a four-letter word..." Rookies don't even understand why superclasses should almost always be abstract, even in Java.

      (Not picking on your gui project, insufficient detail to criticize usefully. If in java, I hope you're using interfaces to express the required subclass implementation).

      --

      Remain calm! All is well!
  13. If you are at DeVry by Anonymous Coward · · Score: 4, Funny

    Then I would pick whatever is used for french fry machines.

    1. Re:If you are at DeVry by lastchance_000 · · Score: 1

      Why not learn the binary language of moisture vaporators? And maybe pick up Bocce on the side?

    2. Re:If you are at DeVry by kpwoodr · · Score: 2, Funny

      True story, my 3rd day working for SBC in the IT arena, I was diciplined for my conduct on a conference call. It was very brief, but we were going around the rooms and telling our name and where we went to school. A 40 year old guy anounced that he had just graduated from DeVry, and I laughed out loud. I caught myself reasonably quick, but still had to write a letter of appology to the douche bag, as well as the director that was holding the call.

      Nothing against DeVry, but they had just finished telling us how we were the cream of the crop (standard corporate BS), and he was one of the first people to talk.

      --
      This sig has been removed pending an investigation.
    3. Re:If you are at DeVry by jefu · · Score: 1

      Sounds like a vote for C# to me.

    4. Re:If you are at DeVry by Anonymous Coward · · Score: 0

      I think you meant "practice breathing though your nose". Nose-breathers are much more sophisticated than mouth-breeders.

    5. Re:If you are at DeVry by Rudeboy777 · · Score: 1

      Yes, but then again grandparent graduated from DeVry...

      --

      From hell's heart I fstab at /dev/hdc

    6. Re:If you are at DeVry by Anonymous Coward · · Score: 0

      You graduated from DeVry, and it shows!

      Your post is hilariously ironic. You exhibited great self control, yourself. Thanks for the laugh! Does DeVry even cover grammar?

      Woosh ... over your head, nothing but net!

    7. Re:If you are at DeVry by Duhavid · · Score: 1
      Woosh ... over your head, nothing but net!


      I think you meant

      Woosh ... over your head, nothing but .net!
      --
      emt 377 emt 4
    8. Re:If you are at DeVry by phasm42 · · Score: 1
      Nose-breathers are much more sophisticated than mouth-breeders.
      FYI, you can't actually breed that way.
      --
      "No one likes working in a hamster wheel, and your shop smells of cedar shavings from here." - TaleSpinner
    9. Re:If you are at DeVry by StarWreck · · Score: 5, Interesting
      Then I would pick whatever is used for french fry machines.
      CIS majors don't deal with embedded microprocessor programming. CET and EET majors deal with that type of programming. You can use a variety of languages to program the microcontroller in a french fry machine depending on which microcontroller you use and which development platform you use to load your program onto the processor; whether its Motorola/Freescale, Zialog, Intel, or PIC.

      For example, when I added a complete computer control system to an RC Car with a 20% Nitro, 80% gasoline combustion engine I used a Motorola 6808 with 4K of RAM and programmed it entirely in C++ when I decided that it was taking to long to program in assembly.

      You can view the entire project, including all code here: http://home.comcast.net/~starwreck/FinalReport.pdf

      Oh yeah, I did this entire project at DeVry.
      --
      ... and in the DRM, bind them.
    10. Re:If you are at DeVry by addaon · · Score: 1

      Cool project. What kind of stuff did you do the second week?

      --

      I've had this sig for three days.
    11. Re:If you are at DeVry by Your+Pal+Dave · · Score: 1

      But it's great fun trying!

    12. Re:If you are at DeVry by Anonymous Coward · · Score: 0

      Im not sure if I'd be bragging about that code - you do know that Java is an OO language, right? The generous use of globals screams DeVry though, so you did manage to drive the point home of several of the previous posters...

    13. Re:If you are at DeVry by Anonymous Coward · · Score: 0
      Nose-breathers are much more sophisticated than mouth-breeders.
      FYI, you can't actually breed that way.


      But I KEEP TRYING!!1!!1!
    14. Re:If you are at DeVry by Geoffreyerffoeg · · Score: 2, Informative

      >Then I would pick whatever is used for french fry machines.

      CIS majors don't deal with embedded microprocessor programming.


      That's brilliant. You completely defeated the insult. Well done.

    15. Re:If you are at DeVry by StarWreck · · Score: 1
      you do know that Java is an OO language, right?
      You know that is C++, right?
      --
      ... and in the DRM, bind them.
    16. Re:If you are at DeVry by Anonymous Coward · · Score: 0

      Have you looked at your own project (or at least what your linking to)? Yeah there is C++ in there, but:

      import java.net.*;
      import java.io.*;

      sure as hell looks like Java to me...

    17. Re:If you are at DeVry by Anonymous Coward · · Score: 2, Interesting

      When I took physics in college, one of the famous older professors (Nobel prize winner) rolled up his sleaves and helped out in the freshmen labs. My partner and I were doing some experiment to indirectly measure the speed of light, and got more and more excited as the numbers were coming out "right". The old professor came over and had a stern talk with us about error. "What's the error in your measurement? How does it propogate in the calculation?" The professor is dead now but I'm passing on that stern talk to you. Don't ever use calculator notation like "6.78167252e-6 seconds". Figure out the number of significant digits, and use them with standard metric units. For example "6.8 microseconds". Clear technical writing is critically important, and this is the first step.

    18. Re:If you are at DeVry by ForemastJack · · Score: 1

      That was nicely played. I was going to mod the parent down, but a well-turned reply is better than a harsh mod any day.

      C.S. is wonderful, but a four-year degree isn't the Golden Path to brilliance. I work in the utility industry and we've got both types of graduates in our organization. It's fun to watch the college snobs get their nose pushed in by a tech school grad.

      Frankly, it's even better when everyone gets past the bullshit and end up at a point of mutual respect. Parochialism is beyond useless in the real world.

    19. Re:If you are at DeVry by StarWreck · · Score: 1

      Learn how to read. There's not a single line of code of Java used on the micro-controller. The Java is code being used on a Pentium 4, Windows XP Laptop.

      --
      ... and in the DRM, bind them.
    20. Re:If you are at DeVry by John+Harrison · · Score: 1

      So who wrote that java code?

      In any case it looks like a fun project.

    21. Re:If you are at DeVry by Anonymous Coward · · Score: 0

      Yes, "cream of the crop" and "best and brightest" are standard corporate sloganeering. And so, you quickly removed yourself from the "brightest" category. An employee's perceived value to a company goes far beyond what they know in a technical arena.

      An example. I once worked with a network engineer. A true Double E, as he liked to point out. He was an extremely bright person with an encylopaedic knowledge of networking arcanum. He had authored or co-authored several books on networking topics and the clients loved him. He commanded three times the hourly rate that I did and made about double. But he refused to fly. He insisted on driving everywhere. He had just bought a new car when he started working with us and already had 80,000 miles on it at the end of his first year. That made him only able to work with one, maybe two clients per week. Scheduling him was a nightmare because the sales people would always have to factor his travel time in days instead of hours. To be fair, he traveled a lot in his own time, after hours and on weekends. But by the time he made back to the office, he was a a bit testy. When the eventual corporate reshuffle came, he was gone because his perceived value was less than mine, or any of the other engineers who would fly.

      The point is, people can learn new things, new facts, new skills, new languages. But when you are an asshole, you generally stay that way.

    22. Re:If you are at DeVry by metallic · · Score: 0, Troll

      Do you ever feel like you are standing at the end of a runway? Because that joke just flew completely over your head...

      --
      Karma: Positive. Mostly effected by cowbell.
    23. Re:If you are at DeVry by Just+Another+Poster · · Score: 1
      But when you are an asshole, you generally stay that way.

      There are many legitimate, and glaringly obvious reasons why a person would not want to so much as step foot inside a major airport, let alone fly on a commercial jet.

      Calling him an "asshole" for it is unwarranted.

    24. Re:If you are at DeVry by StarWreck · · Score: 1

      My lab partner, not me.

      --
      ... and in the DRM, bind them.
  14. Why not... by Daleks · · Score: 1

    Learn both? Nothing is precluding you from taking both courses, or taking one course and learning the second language on your own time. You'll have a greater sense of both languages should you take the time to see the ins and outs of both.

    1. Re:Why not... by pdbogen · · Score: 1

      If his coursework is anything like mine, it's just one class and they tell you "choose Java or C#"- personally, I'd choose C++ given that choice. ;)

    2. Re:Why not... by Nataku564 · · Score: 1

      I would choose Perl. It would be OO and run, but they wouldn't understand how :)

  15. Both by Anonymous Coward · · Score: 0

    Well, both languages have very similar syntax, so learning both at the same time should not be a problem. Remember that your goal is not to learn a particular programming language - learn the concept...

  16. Just learn an OO language by Anonymous Coward · · Score: 0

    My advice...Pick one.
    The goal is to learn an OO language. At that point, you should be able to program in any OO language.
    C# will likely be the dominant language since it was created in response to Java and is the best of C+ and Java combined.

  17. Python by Anonymous Coward · · Score: 2, Interesting

    Learn Python, take whatever crap they teach at your college...

    1. Re:Python by Anonymous Coward · · Score: 0

      I second that advice.
      Python is being used by top notch hackers everywhere, specially there where people know something about programming, like Google.
      Reasons for choosing python:

      - Its much more productive, easy, clear and fun than anything else (ruby comes close, though)
      - It runs unmodified everywhere, all the platforms and even in your cell-phone.
      - It runs on Java, .Net and Mono.
      - And soon, very soon, it will have a peformance and speed like any other statically typed language thanks to the Pypy project (although this is not the only project aiming at improve its performance).
      - By the way, once Pypy is complete, it would be a snap to port python to any othet platform or virtual machine that may come up in the future.

      But the best reason for choosing it is because it's fun!

    2. Re:Python by Anonymous Coward · · Score: 0

      yeah kill java and c# write on python !!!

    3. Re:Python by MindDelay · · Score: 0

      Python is by far the most fun language to program in. I agree with everything you said, just wanted to emphasize the fun and the speed at which you can get things done.

      --
      Spiral out. Keep going...
    4. Re:Python by NewbieProgrammerMan · · Score: 1

      My primary reason for choosing Python is that it "stays the hell out of my way" better than other languages - it just seems that it doesn't demand so much from me to accomplish common tasks. As others have said, it seems to fit my brain a lot better than any other programming language I've ever tried.

      That said, I get uneasy about the "peformance and speed" hopes people are starting to pile on PyPy. If you look at their mission statement, speed/performance isn't in there. Yes, the PyPy folks are a sharp group of people, and they may come up with some fantastic performance improvements, but that doesn't appear to be high on the list of priorities.

      --
      [b.belong('us') for b in bases if b.owner() == 'you']
    5. Re:Python by ClosedSource · · Score: 1

      "Python is being used by top notch hackers everywhere, specially there where people know something about programming, like Google."

      Well, I'm glad you listed some other reasons later in your post. The fact that "top notch hackers" and Google use isn't too convincing. There's a lot of people at Google that received good grades in school and are clever at puzzles, but I don't see much evidence that Google knows more about programming than the average software company.

    6. Re:Python by pthisis · · Score: 1

      In fact, performance is very much on their radar. One of the main developers is Armin Rigo, the author of psyco (specializing Python JIT that speeds up some kinds of python by a factor of 100 or so). Another is Christian Tismer, the author of Stackless Python and many pretty cool performance enhancements for the stackless Python interpreter.

      Their approach was to get a correct implementation first, then begin work on optimization. In July or so they finally got an implementation that passes almost all of the Python test cases (and those that it fails on are actually testing implementation details of the CPython interpreter, not language features). At the time it was about 200x slower than the standard CPython interpreter.

      However, the whole reason for the design they've picked is to allow for easy optimization. After July, the optimization effort began in earnest. Even without attacking the JIT/psyco-style stuff, they've already narrowed the gap to where it's now less than 7x slower than CPython. My guess is that within 6 months it'll be at least twice as fast as CPython for standard code.

      Armin has an interesting overview of how the JIT stuff will fit in in the IRC logs at http://tismerysoft.de/pypy/irc-logs/pypy/%23pypy.l og.20051213.

      The best part is that with the RPython approach they've taken, many of the speedups will apply not only to python but to other language front ends (e.g. there is an RPython implementation of a Javascript interpreter that should take advantage of all the optimization work they're doing).

      --
      rage, rage against the dying of the light
  18. Java is more credible as a cross platform language by cryfreedomlove · · Score: 2, Interesting

    C# was invented for one reason: locking sytems into a windows deployment. There are some attempts to port C#, but those efforts don't have 10% of the current momentum that java has from a large community of both corporations and volunteer open source contributors.

    Java on the other hand is a cross platform environment supported by multiple competing vendors. That will leave you more nimble to develop and deploy on a wide variety of systems. There are great JVM's available from Sun, BEA, IBM and others. There are several great commercial and open source implementations of java servlet containers. Can C# really say the samr thing?

  19. Learn C# by kinghajj · · Score: 0

    Java sucks. C# is better. I don't like using either, though; I prefer C.

  20. Instructors Are What Matters by moehoward · · Score: 5, Insightful


    What are the instructors like? That should matter more.

    A class at that level is supposed to be about some "concept". Either OOP, or databases, or design, or algorithms... If the class is JUST about the language/platform, then don't even bother taking the class. Unless you have some industry/job specific need to learn a language, then I would avoid it.

    Some instructors end up getting bogged down in platform specific issues. For example, ADO when the course should instead be about databases.

    So, I'd figure out which instructor will offer the most conceptual learning. Language doesn't matter... unless the FCC is involved. Learn concepts, theory, good practices, etc.

    --
    "If you want to improve, be content to be thought foolish and stupid." - Epictetus
    1. Re:Instructors Are What Matters by GigsVT · · Score: 1

      I don't know how much conceptual learning you can get at any class at DeVry. I think it's pretty much a vo-tech school.

      --
      I've had enough abrasive sigs. Kittens are cute and fuzzy.
    2. Re:Instructors Are What Matters by geekoid · · Score: 1

      Igt's a tech school that likes to have it's graduates have hands on experience with job market skills. Java and C# happen to be the widest piece of the overall programmer market at this time.

      Really, if you want to learn OO in a high level language, they should teach C++. IT forces proper OO on you, and you can gt a lower look at how things like indirection can kill performance.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  21. Definitely Java by Anonymous Coward · · Score: 2, Interesting

    Mono is a complete non-starter. Check out how RedHat engineers now have a natively compiled Eclipse running, that also has stubs into Glade development. Check out this demo:

    http://overholt.ca/wp/index.php?p=11

    Basically, GCJ is the future of high level OOP on the linux platform. .NET is fine for Web development, but it's essentially a better VB and ASP, so if you were never drawn to those, forget about c#.

  22. Hard decicision..... by ShyGuy91284 · · Score: 1

    Why not learn both? At my university, I learned Java and then C++. They are very similar syntactically (minus pointers and a few other things). I've never learned C# though, so I can't really comment. As to what will be more useful, Cross-platform is good, but I would't think it's as important as one might think (since most, even busnesses, use Windows unless they can afford a very large IT department). And with rumors flying around that Java may have peaked, that adds even more confusion. In your case, I think I'd try to learn one language on my own (Maybe Java since it's similar), and learn another one through classes (which I'm assuming is the reason you can only take one). Then you can put them both on your resume as a language you know, with classroom time spent with the one that may be perhaps most different from what you already know (assuring you can probably code in it).

    --
    In undeveloped countries, the consumer controls the market. In capitalist America, the market controls you.
  23. Target? by gmuslera · · Score: 1

    Other question you can make yourself is... for what kind of applications? Im pretty comfortable with perl for system administration, or php for small but very useful web apps. Going for desktop, embedded, web, mainly for one or another OS, etc apps could change what is the "best" language you should pick. If well languages are somewhat "converging" in features and semantics, still your pick could depend on your target.

  24. Java by rteunissen · · Score: 0

    Sun VM for Linux. 'Nuff said.

    1. Re:Java by Anonymous Coward · · Score: 0

      You're an idiot. C# naming conventions takes after C. It's Java that didn't stick with the rules. As for C# being useless, have you even used it? I can tell you there are distinct improvements on Java. Even if M$ abandons C#, seeing as it is an ECMA standard anyone can produce a compliant version of their own. The same can not be said of Java.

  25. Java in school C# at work by black_shadow201 · · Score: 1

    At my college, Java was the intro level language. So, every CS major learned JAVA. Like many of the others have stated, Learn one OO Language you will know them all. Once I got done with school, I got a job as a C#.Net programmer. It took me a week or two to pick up the difference between the two.

    My suggestion is thus, if by taking the C# class you get a free copy of VS.Net, take it and then pickup JAVA on the side. If not, take the JAVA class. (Especially if you are LINUX hardcore) In the long run it won't make any difference what so ever.

    1. Re:Java in school C# at work by pdbogen · · Score: 1

      What's with the caps? Java and Linux are names, not acronyms.

    2. Re:Java in school C# at work by black_shadow201 · · Score: 1

      Your right, my bad. What I like best is my inconsistency with it to. :)

  26. I say C# by dotnetNihat · · Score: 0, Redundant

    If you say you prefer Java because it is cross platform, I would say Go-Mono

  27. Irrelevant. by sheetsda · · Score: 1

    What language you learn is irrelevant. There will be occasions where you can use either in the future, and learning more languages of the same class (logic, imperative, functional, et al) once you know one becomes almost trivial. What is important are the concepts set forth in the class. Heredity, data hiding, motivation for using OO, etc... are the importants concepts to take away from the class. An Object Oriented Programming class is for studying OO, not languages.

  28. Learning a programming language. by HellYeahAutomaton · · Score: 3, Insightful

    You can learn the latest fad programming language and keep it on your resume' for a 10+, (Java),20+ (C, C++), or 50 (COBOL) year lifespan, but why must it be one-or-the-other?

    Every program in a programming language has its purpose; to get system to behave in a certain way in a finite number of steps. School is there to teach you the fundamentals; that you can use as a basis to expand your knowledge with new knowledge, and get a feel for the idioms and syntax. Ask not what language to learn, but what can you do with the language.

  29. For you, special price! by mugnyte · · Score: 1


      Learn the one which you have access to the most resources right now. You'd want to be able to ramp quickly with a good tutor, intersting project and common crowd. In the future, you can cut your own way, given the company you want to work for.

    Interesting companies in all sectors are hiring both types of programmers, so ignore the scare of vendor lock. Rather than product, try to know either one *deeply* right now. Both platforms are intricate and demand quite a bit of ramp.

    And for god's sake man, avoid becoming partial to any language. You'll sound as stale as the -1 posts in this very topic.

  30. EIther is fine by Rycross · · Score: 4, Interesting

    I learned Java my freshman year of college. Once I graduated, I worked with C# professionally and found the switch fairly easy. I found the transition from C# back to Java for a recent project fairly easy too. They have very similar syntaxes, and both have ample documentation for their standard libraries, so learning one will make learning the other easier.

    I think Java has more penetration in the market right now, but C# is certainly catching up. In my last job search, there seemed to be a lot of interest for C#/.Net jobs and very few Java related jobs (although most of my experience is in C#, so YMMV).

  31. I would definitly choose Java, but..... by ChrisGilliard · · Score: 1, Troll

    Instead of C#, I would reccomend learning C/C++ on Linux since you said you were a Linux fan. The main point of C# is to lock you into proprietary extras that Microsoft adds into the mix. I'd reccomend not getting hooked on any of those. Instead stick with free opensource libraries. This will not only make it so that you can avoid paying for high end server software, but you will probably get better quality software and more supported software as well.

    --
    No Sigs!
  32. Re:Diehard Linux user? by Anonymous Coward · · Score: 5, Insightful
    If you're a "diehard Linux user," shouldn't you already know Java?

    No. No you should not.

  33. Ask Slashdot by Hatta · · Score: 0

    You should have asked /. before choosing a university. I don't know anyone who's been to a tech school and been happy with what they've gotten.

    --
    Give me Classic Slashdot or give me death!
  34. If they are teaching you to "program" ... by malraid · · Score: 0, Flamebait

    ... in a particular language, the program sucks. That's not a high level education, but a technical education to mass produce code monkeys. If you know how to program, then picking up a language like C#, VB, Java, phyton, whatever, should be a matter of two days and good reference on the API and basic libraries. Everything else is pretty much the same. You have a problem, and you need a solution, the language is just a tool to solve that problem. I always laugh so hard at people that say "Oh...I can only program in VB (or whatever)". Those people just know how to use the mouse to click on some wizards in a particular IDE to get some result, and to type from memory some code snippets that they memorized in school. That said, pick whatever you want, the one that you think is more "cool" or whatever. My opinion? Java. Why? Better cross-platform implementations. But there are many more reasons to pick Java (or C#).

    --
    please excuse my apathy
    1. Re:If they are teaching you to "program" ... by Control+Group · · Score: 1

      Well, yes...but it's easier to teach how to program if the students actually get a chance to, you know, program. Which means using a programming language.

      SO

      Given that you're going to learn to program and learn a programming language in the process, there's no harm in choosing a programming language that you think you might want to know later on.

      --

      Reality has a conservative bias: it conserves mass, energy, momentum...
    2. Re:If they are teaching you to "program" ... by ceoyoyo · · Score: 1

      He's going to DeVry. DeVry is a tech school. So yes, they're producing code monkeys.

    3. Re:If they are teaching you to "program" ... by malraid · · Score: 1

      Sure, they have to program. But there's huge difference between programming, and using an IDE. Have you ever seen a student program with this really cool UI? but then you notice that none of the widgets do anything, then you notice that the "programmer" hasn't written a single line of code. An IDE can be of great help, but is not the silver bullet!! I've been asked to help people "debug" this kind of "programs". One "peer" asked me to help him fix his program, the program didn't do anything. I start looking over the source (it didn't even compile), and he says that he wants me to help him put in a spinning logo and whatnot. I find this pathetic, call me flamebait if you want, but my opinion is that it should be taught from the bottom to the top, for example doing basic non gui stuff with a simple editor, without any codegen. When you know how the grind, you can use IDE tools to improve your game.

      --
      please excuse my apathy
  35. Re:Neither! by Richard+W.M.+Jones · · Score: 1
    Damn right. I recommend Objective Caml instead. A functional/object/imperative language which is type safe, practical and very very fast.

    Rich.

  36. Learn the concepts not the Language. by MikeBeck · · Score: 2, Informative

    As I learned Java I would naturally say Java. But don't concentrate on the language, concentrate on the concepts of OOP. Too often the emphasis is on the language. You can look up the syntax of a language in a book. Be a scientist not a technician. The scientist is more flexible than the technician.

  37. Get a Job by Anonymous Coward · · Score: 0

    Long term, there will be more jobs for C# . Maybe sad to hear
    for a Linux fan, but likely true.

      Visual Studio 2005 is very nice, .NET 2.0 is very nice, C#'s
    new features are great. The overall environment / language/
    libraries are more **coherent** than Java + the J2EE grabbag
    (whatever that contains as of today).

      I'd say put your open source urges behind improving Mono....

  38. it all comes down to the resume by fanblade · · Score: 3, Insightful

    You're going to learn the same programming concepts in either course? Then at the risk of sounding a bit cynical, pick the one you would rather have on your resume. That's really the only difference here.

  39. Take Both Classes by Anonymous Coward · · Score: 0

    I'd say, take both classes.

    -

  40. C# and java are indeed supported on GNU/Linux by outer0rb · · Score: 1

    Both C# and java are well-supported on GNU/Linux (the mono and gcj efforts respectively). However, your professor will probably only asign platform-independent tasks, so you should have no problem writing your code on a free system.

    However, if you want be unique, you could duplicate all of your assignments in either Python or LISP. And if you really want to make a statement, you could help your professor create a new course with propper languages.

  41. Learn "PHB" or other "Business-speak" language by bADlOGIN · · Score: 1

    In all seriousness, make sure you take some accounting and/or business classes and learn to understand and talk to the people that will hold all the power and make your life in the real world a living hell. The coolest code in the world doesn't mean crap to someone who only sees a balance sheet or P&L numbers. Learn to deal with these weasels now before it gets harder to as you get older:)

    --
    *** Sigs are a stupid waste of bandwidth.
  42. Tough choice by squoozer · · Score: 1

    Personally I would choose Java but perhaps that's because I ahve made a good living from knowing Java. I don't see either Java or C# really having much impact in Linux anytime soon. Java has issues with deployment in almost every distribution and Mono just isn't there yet.

    --
    I used to have a better sig but it broke.
  43. It doesn't matter. by Inoshiro · · Score: 2, Insightful

    The only thing that matters are the concepts. Take it in Modula-2 or C++ or Delphi or Eiffel, but learn the object concepts.

    Languages mean nothing. If you're still stuck on only knowing some languages, you have a lot more to learn than OO concepts.

    --
    --
    Internet Explorer (n): Another bug -- that is, a feature that can't be turned off -- in Windows.
  44. Cruelest Post Ever by Anonymous Coward · · Score: 0

    If you are at DeVry... Then I would pick whatever is used for french fry machines.

    Also, one of the funniest.

  45. The IDE is the key by Anonymous Coward · · Score: 0

    You will have a lot easier time finding development tools for Java that run on Linux (netbeans and eclipse for starters) than you will for C#.

  46. Java is used more in open source by Lovebug2000 · · Score: 1

    I'd say learn java if you're a linux freak. If you check out freshmeat.net, you'll see that java is used in 4000 projects while c# is used in 300. So if you want to get on board with an open source project, java is the way to go. Also, since there's a vm for java on linux, it'll make your homework easier to do (if you only use linux boxes).

  47. Both! by bean123456789 · · Score: 1

    As a developer I can't stress how important it is to know multiple mainstream languagues. Java and C# are very similar syntactically so that is a big bonus for you! I don't know about your neck of the woods, but there are many more development jobs in my area for doing .Net development than linux, but I have done both and I have been equally satisfied with either platform.

    It would behoove you to know the major languages on each side of the fence so as not to limit your potential jobs in the future. (sidenote: I know that both languagues are used in both windows and linux and more for java, but the message here is not to be language dependent)

    Once you are firmly entrenched in one of the platforms I would look to specialize, but as a graduate you have no hope of competing against people who have been in the field for many years. Your best bet is to be flexable for the time being and see where opportunities the take you.

  48. Start with Java, then learn C# by Anonymous Coward · · Score: 0

    7 years ago, while at University I was taught Java. It was the best language to learn OO in (rather than ADA). Recently it took me less than 6 months to become proficient in C#.

    I find it is easier to develop other good methods and patterns in Java than in C#. Unfortunatly ASP.NET and Visual Studio can lead (because its easier) to less re-usable code. I prefer Java because you have to work slightly harder, but there are some cracking mature frameworks available.

  49. Learn Smalltalk by Anonymous Coward · · Score: 1, Insightful

    Go to the start of it all and really learn objects and messages in a full object system. Download a version of Smalltalk for free from http://www.smalltalk.org/versions.

    1. Re:Learn Smalltalk by ceoyoyo · · Score: 1

      No! Don't do that! If you use a real OOP language and then try to learn something like C# or Java you'll just spend all your time swearing. Better not to expose yourself to what could be. ;)

    2. Re:Learn Smalltalk by Anonymous Coward · · Score: 0

      Smalltalk is the truly OO language :-)
      Besides, I said "learn", not "use it in a real app"

    3. Re:Learn Smalltalk by ceoyoyo · · Score: 1

      Whoops, said use when I meant learn. If you learn a nice OO language (like Smalltalk) you'll be eternally frustrated by the world that forces you to actually USE abominations like Java and C# (or, shudder, C++).

      On the other hand, if you DO learn a real OO language then you can join the revolution. ;)

    4. Re:Learn Smalltalk by Art+Tatum · · Score: 1
      No! Don't do that! If you use a real OOP language and then try to learn something like C# or Java you'll just spend all your time swearing.

      Boy, is that ever true. Objective-C and OpenStep was my first OOP environment (still not quite as pure as Smalltalk, but a helluva lot closer than C++ or C#). Now, I'm learning .NET for a job I'm on. It's better than Delphi and C++, but I'm continually disgusted with how roundabout and inconsistent the whole thing is.

    5. Re:Learn Smalltalk by ceoyoyo · · Score: 1

      I code in mostly a tag team of Python and Objective-C these days, with a touch of assembly and ARB fragment for good measure. There's a lot of teeth gnashing when I have to look at C++ code.

  50. Java. by Concern · · Score: 2, Insightful

    There is no future in C#, because it's Microsoft's toy, and it will always be Microsoft's toy. If they want they can take it and go home. When MS decides its time to stop, as they did for many of their other much vaunted initiatives, then that's it, your party is over. Yes, I know about Mono. It doesn't matter.

    With Java you can take your code anywhere. As the first widely adopted VM standard, Java is now taught in universities instead of C++ (and certainly C# isn't **widely** used in academia - MS nuts, notice the asterisks before flaming). Basically this adds up critical mass. The language is never going away. And because of its unique properties I predict it will have more staying power than most other languages. People will be porting that VM when we're all dead.

    Java is well specified and unencumbered. Even the source of Sun's VM is available (though not under the GPL, at least you can read it, see what's going on in the VM, and fix bugs), and there are Gnu implementations that are farther along already than Mono - and I doubt Mono will catch up.

    Based purely on raw numbers of job offers, if you're looking to make money off this skill you would be flipping crazy to learn C#... although OTOH once you know one, the other won't be too difficult.

    C# people claim their language is "better." I've used both - C# is not better enough to justify the baggage of being locked into the world's most notorious vendor. In many cases the supposed advantages of C# are a wash or even bad ideas - such as their pointless and absurd practice of mixing VM and non-VM code at every opportunity, and allowing unsafe code to be mixed in... Thus eliminating the boundaries on the well-defined, well-tested native stack and ruining most of the advantages of a VM while keeping most of its disadvantages.

    C# people claim their runtime is language agnostic. It is not. It's C* agnostic. Any language significantly different from a C/C++/Java-like language can't be supported efficiently. No surprise there.

    I don't expect Mono to succeed even in its modest promises, although if they do, they may wish they didn't. Perhaps their best path will be to stop trying to be compatible and diverge into a kind of "dirty .NET"... All fun and games until MS sues them. And if you dismiss this as a conspiracy theory... and go to embrace the patented, "standardized" platform of the people who financed SCO anyway... you will certainly get what's coming to you, eventually.

    --
    Tired of Political Trolls? Opt Out!
  51. Only Java if it's Java 5 by iabervon · · Score: 2, Insightful

    The language changes in Java 5 are sufficiently significant that they eliminate most of the ways Java was awkward up to that point. Actually using the earlier versions involves a whole lot of annoying kludges which make it unnecessarily hard to learn and use. I think that Java is a better design overall, but they're similar enough that you may as well learn whichever has a more expressive version being taught at your school.

  52. Java tools are free by jodonn · · Score: 1

    I use both languages on a regular basis. One of the compelling arguments toward Java for me is that the tools are better and cheaper. You can download Eclipse for free, and in my opinion it's the best development environment available, hands down. Lots of free Java servers out there, and the open source community has made a whole lotta great stuff to make your job as a programmer easier. Visual Studio, the best game in town 6 years ago, is pathetic by today's standards.

  53. Answer the question! by Anonymous Coward · · Score: 0

    Is EVERYONE misinterpreting the question? It wasn't "which language should I learn", it was "which language should I use while learning OO". Sheesh.

  54. Re:Neither! by Catskul · · Score: 1

    Ive tried both... I dont like Java, and Im learning to love C#. It has the fewest quirks of the OO languages I have used. And it seems to have learned lessons of the failures of those have come before. Dont hate it just because it came from Microsoft, from what I understand (but im not certain) C# is a more open/free language than Java.

    --

    Im not here now... Im out KILLING pepperoni
  55. Re:Java is more credible as a cross platform langu by ntijerino · · Score: 2, Interesting

    Another thing to consider is the availability of useful libraries. I don't use C#, so I can't speak to the libraries that are available for that language, but there are many freely available libraries for java that do all kinds of useful things so that you don't have to reinvent the wheel.

    --
    Stick that in your compiler and debug it!
  56. it doesn't really matter. by petermgreen · · Score: 1

    afaict the differences between them are just in the standard libs and some of the syntaic sugar. So whichever one you learn i'd imagine picking up the other will be pretty easy.

    --
    note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
  57. how Java, Gtk# and Mono? by file+cabinet · · Score: 1

    http://www.mono-project.com/Java
    I just tried it out a few minutes ago.
    From the URL:
    "Mono is able to run Java code side-by-side with .NET as well as having Java and .NET object interoperate with each other."

  58. Java is cross-platform so go with that by dtjohnson · · Score: 1

    Java is cross-platform while C# isn't. 'Cross-platform doesn't mean that your java app will run on Windows and Linux, athough it would of course. No...what it means is that your cool new java app will run on the platform you are using right now and also the platform you will be using in 10 years. THAT is cross-platform and it is true with Java and it will NEVER be true with .NET. And that is why Java will still be used long after Bill Gates has retired. So, learning either one would be good but Java is likely be around longer and be more valuable to large companies who lean pretty strongly to Java for that reason so...go with Java.

  59. Hit a nostalgic nerve. by Stan+Vassilev · · Score: 1

    Reminds me of the nostalgic times waaay long time ago, when things were moving slow enough that you "learn" something and you're set for life.

    Well, meet computer technology. You learn something today, which is obsolete tommorow and you have to learn again.

    So whatever you learn, know you can't be either too right or too wrong, instead try to pick the common ideas and themes between all those languages/protocols/technologies, so you can make learning the next thing easier for you.

  60. that depends by phntm · · Score: 1

    java is better for structure based projects because it's more popular with the big boys, and C# is better for desktop utilities because it's lighter.

  61. DeVry?? by Anonymous Coward · · Score: 1, Funny

    DeVry huh? I'm not so sure it matters which programming you choose, you already made the wrong decision.

    This isnt flamebait - its reality. Ive been in this industry for several years and still havent figured out what the hell DeVry graduates do with their degree.

    1. Re:DeVry?? by Anonymous Coward · · Score: 0

      I agree! Do not put DeVry, ITT or alike on your resume. It's a show stopper. When I see those type of "Schools" on a resume I think to myself "This person didn't have enough of what it takes to make it in a community college let alone the real world."

      You better have an excellent resume of working code to show if you plan to get a job or keep the resume of the shredder.

    2. Re:DeVry?? by Anonymous Coward · · Score: 0

      Hmmm, I wonder where you work. You're missing out on quite a bit of talent. I am a DeVry grad (about 10 years ago) started out working at sun. About two years ago I left sun to work for google. I am a programmer. If you judge a person simply by their college, or lack thereof, you'll be missing out on some great people.

      My personal reason for going to DeVry was that I thought it was easy (which it really wasn't) and I would graduate sooner (3 years for a bachelors instead of 4). I could have been a great programmer without college, but a bachelors is a requirement so I got the easiest and shortest degree I could to get by.

    3. Re:DeVry?? by Anonymous Coward · · Score: 0

      I'll call bullshit on this. At google we dont have anyone who went to DeVry. I just looked it up.
      Mike in HR @ google.

    4. Re:DeVry?? by Anonymous Coward · · Score: 0

      Uh, I call bullshit on you "Mike". I do actually work at google and Steven Kovacs in operations is in fact a DeVry grad. But has a masters from stanford and PHD from berkeley.

    5. Re:DeVry?? by Anonymous Coward · · Score: 0

      Geek Squad geeks have to come from somewhere. Luckily, I'm one of but a handful of DeVry students that avoided that trap. I work as an intern database programmer at a public utility (Salt River Project).

    6. Re:DeVry?? by John+Harrison · · Score: 1

      Nice of you to out someone else while remaining anonymous yourself...

  62. Java rocks by Anonymous Coward · · Score: 0

    1. Java is open source: http://mustang.dev.java.net/
    2. Use Java IDE for Java development: http://netbeans.org/
    3. Try J2EE, J2ME. Profit :)

  63. COBOL by nurb432 · · Score: 1

    No, I'm not kidding. In another 10 years when all of us oldtimers retire, there will be guaranteed jobs for kids that know what the hell it is.

    If you just want something 'cool', then i guess either works if you stick with it and become proficient.

    --
    ---- Booth was a patriot ----
    1. Re:COBOL by MBCook · · Score: 1
      COBOL is not an introduction-to-object-oriented-programming kinda language.

      That said, depending on your area, DeVry does teach COBOL (at the higher levels) because the local companies that use COBOL want competent programmers without having to train them in it themselves.

      --
      Comment forecast: Bits of genius surrounded by a sea of mediocrity.
    2. Re:COBOL by Anonymous Coward · · Score: 0

      Don't get sucked into COBOL, its not worth the lose of Sanity/IQ points!

      Really, you also need to ask yourself about the state/culture of any organization that has gotten itself into this position. ...umm, I'ld also query the mental state of anyone working there who was not looking for the door/gold watch.

      Gnoll110
      COBOL/DB2 programmer (20yrs next month and looking for that door!)

  64. Who do you trust? by Anonymous Coward · · Score: 0

    Microsoft (guys in charge of C#) or Sun/IBM/Apple/Oracle/Google (guys in charge of Java)?

    Also, while learning the syntax of either language will take you at most a couple of weeks, learning their APIs can take years. Therefore, switching back and forth is less of an option than you'd think.

  65. Client or server side software? by kjeldahl · · Score: 2, Insightful

    Depending on what kind of software you want to write, and for which platform, you might want to factor in whether you are going to develop client-side or server-side software. My personal opinion is that very few Java based client application feel native to any environment. A java client application looks "java" like. So if you are aiming for Windows client side applications, C# is probably a better choice for the future. If you're aiming server side, and you are already "invested" in Linux/Unix server systems, Java is probably a better choice right now.

  66. MOD PARENT +100 FUCKIN' RIGHT!!! by Anonymous Coward · · Score: 0

    I wish I had mod points right now...

    1. Re:MOD PARENT +100 FUCKIN' RIGHT!!! by Anonymous Coward · · Score: 0

      yup, never got 'em when you need 'em!

  67. Which should you take? by Anonymous Coward · · Score: 0

    "I'm currently a second-term, CIS major at DeVry University.[...]Which should I take?"

    How about classes in a real university instead of wasting your time at a technical college?

  68. Learn to program/think first... code last. by bigmike_f · · Score: 1

    If you ask me... choose Java. But here is why that doesn't matter. The key to any degree is if they teach you to think about coding. It is more important that you learn the thought process of OOP first. Anyone who knows a language can write some code that might get the task done. If it runs well that is great. But, can the next developer read your code and quickly understand what it is attempting to accomplish. Each method or class should works a specific way that is easy to understand. When you are working in complied languages, the art is in a simple class that accomplishes a simple task. Then let the driver, a larger class, accomplish the simple task of orchestrating the simple classes. Of course it's even greater when the classes and methods themselves are tied together so that they work together as if cogs in a swiss watch. Overall, think about what and how the program should work. Then worry about in what language.

  69. Neither!! by Anonymous Coward · · Score: 0

    Instead learn brainfuck!

  70. Java, if you have a choice by shawnmchorse · · Score: 1

    Java is obviously the much more widely used language, and is more likely to be useful down the road I would think. I've used Java at several different workplaces, while I've never heard C# even mentioned. Granted, Microsoft shops will be quite different in that regard but I tend to avoid Microsoft shops for other reasons anyway.

  71. Just OOP Knowledge by Anonymous Coward · · Score: 0

    What's the best : learn to drive a manual gear VW on diesel engine or an automatic chevy on gasoline ? Just learn to drive.
    C# = Java
    Learning C++ would teach you a lot about memory management but may narrow the possible assignments you may have after your studies.
    Java is going down as will C# in a few years. (Search for Gartner curve and you'll understand)
    Java is the easiest for learning on linux system. C# is the easiest for MS if you use Visual Studio.

    If you're a diehard linux user, I bet you hate MS.So go for java. You'll be able to transfer your OOP knowledge to C# in a few hours if any assignment requires it.

  72. Devry a university? by Anonymous Coward · · Score: 0

    don't they advertize their 6 month programs on the backs of matchbooks? my boss had quickie diploma from that place, but he never had the gall to call it a university...

  73. Vote Java by bigdadro · · Score: 1

    I would learn java. It runs on more platforms, plus if you learn java you have 95% of c# learned. The job market for java programmers is excellent. Honestly can't think of any compelling reasons to not choose java over c#.

    Plus chicks dig java programmers.

  74. My background and thoughts on this by Jugalator · · Score: 1

    Actually, it doesn't matter *that* much which you pick thanks to the plenty of similarities.

    I learnt Java first as part of a uni course -- early adopters loved Java a lot in 1998. I basically learnt nothing else besides some basic C and assembler there and it was pretty much Java > all. I then learnt C++ with MFC (Microsoft Foundation Classes) at work as an example of Microsoft's dominance in the software development business, and felt Java had helped me tremendously when doing so to get the OOP concepts down. It would've been even easier if it was about going from Java -> C# or vice versa. After that I learnt C# and that wasn't too hard with Java and C++ as a foundation. After all, that merge is in many aspects pretty much what C# is anyway with its support for more C++ constructs than Java along with unsafe code support, while retaining huge amounts of Java high level stuff such as the sandbox model and garbage collection.

    So, my suggestion is that don't miss learning C++ if you're going out in the software development business. At least here, if neglecting web / online services, C++ and VB (6 and .NET) is king.

    As for web service development etc, I guess whether Java or C# is more suitable depends on which company/companies you'll work on, but regardless which one, the other should be easy enough to learn when having learnt the first. They're so similar that it's mostly just about learning the class libraries that will take time, not as much about the languages themselves.

    --
    Beware: In C++, your friends can see your privates!
  75. Applying procedural ideas to OO? by tjwhaynes · · Score: 1
    I teach the AP comp sci class at my high school. I stress repeatedly that they need to learn to program first, then do it in java second.

    I'm hoping you meant work out the OO design first, then implement it in Java.

    I've only recently had to pick up Java professionally - up till now, C/C++(not OO)/Perl/Lisp has been a good fit but I was asked to help out on a project that already had several person-years of Java code in it. So I had a lot of procedural and functional languages in my background but not really much OO.

    I spent a fair amount of the first month getting my head into the Java thought process (thanks to Bruce Eckel's "Thinking in Java" and an experienced Java-developer's guidance). The key epiphany was realising that the design for an OO project really should be carefully thought out in terms of object life cycles, object->object interactions and object capabilities. You can code a procedural design in Java and you will eventually end up with spaghetti. Java lends itself to pure OO designs very nicely but gets awkward fast if you stray into procedural designs. The design needs to fit the language if you want to keep it going long term.

    Cheers,
    Toby Haynes

    --
    Anything I post is strictly my own thoughts and doesn't necessarily have anything to do with the opinions of IBM.
    1. Re:Applying procedural ideas to OO? by mrchaotica · · Score: 1

      He's teaching a beginning Computer Science class. I certainly hope they're learning about algorithms and flow control first, and not confusing themselves with OO!

      As an aside, my first programming class (in college; my high school didn't offer AP CS) was based on Scheme, and IMHO that worked out much better than just about any other language, because the functional paradigm, garbage collection, dynamic typing, etc. let us focus solely on the algorithm instead of worrying about syntax and pointers and such.

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

  76. Is there a Difference by CastrTroy · · Score: 1

    Is there really a difference between c# and Java? the syntax for the two is basically identical, and they all have pretty much the same feature set. The only difference is the class library. If you mean learning the language as memorizing the class library, then you should probably just learn how to read the docs. Both Java and .Net have greate docs their respective class libraries. I learned OOP from a langauge agnostic standpoint and I'm better off because of it. I don't think that learning one language over the other will be much of an advantage. Really, if you have the time, do all the assignments in both languages, just to learn both. I don't know why most employers think you need 5 years with a given laguage. If you haven't gotten the syntax and class library down after 2, you're doing something wrong.

    --

    Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
  77. Re:Java.. by amliebsch · · Score: 1
    C# AFAIK has no web services components anywhere near Java's...

    Huh? Ever heard of a little thing called ASP.NET?

    --
    If you don't know where you are going, you will wind up somewhere else.
  78. Well, if you want to get stuck in the 90's... by cyclocommuter · · Score: 1

    ...then learn Java according to this BusinessWeek Article. Apparently LAMP (Perl, Python, and PHP) are the languages (fad?) for the 00's (according to the said article).

    1. Re:Well, if you want to get stuck in the 90's... by Anonymous Coward · · Score: 0

      I think that Python will be replacing Perl. Take a look at O'Rielly's list of books sales by language. Perl is sucking muck off the bottom while PHP, Python and C# are fast movers up. http://radar.oreilly.com/archives/2005/04/book_sal es_as_a.html

    2. Re:Well, if you want to get stuck in the 90's... by pato+perez · · Score: 1

      And Ruby (and Ruby on Rails) is replacing Python.

  79. Take C# for the class; study another on the side by jonadab · · Score: 1

    > This coming term, I will have the choice of studying
    > either Java or C# for my Object Oriented Programming
    > class. Now I'm a diehard Linux user, so I'm slightly
    > conflicted here. Which should I take?"

    Assuming neither of these is a language that you really want to end up using after you're done with the course, take the C#. First, unless I've missed my guess, it means you'll be using MS Visual Studio .NET for the course, which is not something you'll likely be tempted to use after you finish the course. Yeah, there's mono, but it's not so similar to VS.NET as the somewhat-cross-platform JDK would be. So you won't be focused on the tools. Second, using C# for the course probably means a lot of the assignments will delve into the Win32 API, which has two benefits. On the one hand, as a Linux user, it gives you some insight into the other side of things, which is always advantageous; on the other hand, it means, again, that you'll be less tempted to continue using the stuff after the course. So you won't be focused on the nitty-gritty details of the language and the API. Not focused on the tools, not focused on the language or the API, means you'll be focused on the *concepts*, which is the whole point of the course anyhow.

    This is all assuming you don't want to build a long-term relationship with either language. If you *do* want to do so, then by all means, go with Java.

    Either way, you should, on the side, also expose yourself to another object-oriented language, one with a really good object model. My personal recommendation would be Inform (get the Inform Designer's Manual; it's excellent), but Smalltalk also has its proponents, and there are other options.

    --
    Cut that out, or I will ship you to Norilsk in a box.
  80. Definitely know your job market!! by ShatteredDream · · Score: 5, Insightful

    I know Java and am fairly comfortable with C# as well, yet I put 90% of my effort into Java and C because my job market, Northern Virginia, relies heavily on federal contract work which is almost always standardized on J2EE. Be practical. If your area is very pro-Microsoft, don't waste your time with Java because it will make you less marketable. Focus your time instead on learning good OOP practices, take a few CS courses on things like data structures and algorithms and you'll be set.

    This is of course coming from a recently graduated CS major, so take it for what it's worth.

    1. Re:Definitely know your job market!! by tyler_larson · · Score: 4, Interesting
      Where I'm from, the Java market is nearly nil. The only reason I bothered to learn it was for development of cellphone games with J2ME. On the other hand, I didn't at all like the idea of learning .NET; I had thought that it was all a gimmick that would pass. But I had to learn because of the market demand.

      Now the .NET adoption hasn't gone quite as quick as Msft would have liked, but the fact remains that they're throwing their full weight behind this platform. They're not letting up like I had originally thought, but are rather pushing it even more furiously than before. The next generation of all of Msft's major (non-server) products are going to be .NET based; office already is, as is visual studio. Whether we like it or not, .NET experience is going to eventually become as in-demand as Win32 experience. Certainly not this year, not next year, but it's coming.

      Microsoft isn't giving up on this one, and it's been independantly argued that moving to this type of architecture is actually going to be better for the rest of us anyway. I don't know if I agree with all the hype, but it's pretty clear that .NET is here to stay.

      All of that aside, it's worth pointing out that C# is a very well designed language. This isn't something that was cobbled together by a couple of guys in a garage. The creators of this language did some fairly extensive research of the existing languages (including Java), and brought in the help of some of the foremost minds on the subject.

      So, is it as good as they claim it is? Probably not. However, after only half a year of C# programming, I've gone back on my original stance and decided to use it as my primary rapid-application-development platform under Windows (with Python being used for all other OSes).

      If you've got to learn one or the other, I'd go with .NET in the classroom. With it you can learn all the important concepts that you need to learn. Then, if you're any good at all as a programmer, you should be able to make the jump from C# to Java in just a few weeks at the most.

      --
      "With sufficient thrust, pigs fly just fine. However, this is not necessarily a good idea...."
      RFC 1925
    2. Re:Definitely know your job market!! by slickwillie · · Score: 1

      What ever happened to Ada for DoD work?

  81. Ruby On Rails! by feelyoda · · Score: 1

    Alternative answer: both.

    --

    Robo-Blogs of the world: UNITE!
    1. Re:Ruby On Rails! by sogod · · Score: 1

      Totally agree
        My path: C/Perl --> C++ --> Java --> C# --> Ruby on Rails

    2. Re:Ruby On Rails! by Trejkaz · · Score: 1

      Indeed. Start with C, then learn Java to discover how much C sucked. Then learn C# to discover how much C# sucks. Then learn Ruby to discover how much all the above sucked. Some would argue that you then learn LISP to discover how much Ruby sucks, (but ((I don't) (buy) it.))

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
  82. Other Options by umbrellasd · · Score: 1

    Python, Ruby, or Perl (PHP, etc.) If you have only Java and C# as choices, it will likely make no difference. Whenever you hit the job market there will be a bunch of legacy stuff in both, though more in Java due to its age. If you are targetting a job with a smaller newer company, 5 years from now, I am guessing--just guessing, mind you--that the three languages listed above are going to be stronger players.

    1. Re:Other Options by Kosgrove · · Score: 1

      This is an absolutely ridiculous statement. You think that in 5 years Python, Ruby, and Perl, primarily Linux-based languages with no underlying framework (like the .NET framework/Mono and J2EE) are going to be the majority of new development? Maybe on *nix environments, but Windows is far more widely used on client machines. That's not going to change in the next 5 years unless Linux takes a major change of direction towards a unified object model, which is frankly contrary to the entire Linux philosophy.

      Keep in mind that I'm not trying to disparage the languages. I would actually recommend the kid learn them instead of Java or C# because the languages you listed are much more different from C++ than Java or C# and will give him a much different perspective on how to solve problems. There's not really that much to learn with C# from C++ in terms of the language. The syntax is mostly trivial. The thing that would be valuable to employers would be learning the object framework, either .NET/mono or J2EE.

  83. Re:Java.. by Anonymous Coward · · Score: 0

    Sorry, this is just flat out wrong. C#/.NET have very strong support for web services and message composition, especially in .NET 2.0.

  84. OO is overrated. by BigZaphod · · Score: 3, Funny

    What you really should be learning is the up-coming trend of Transport Oriented Languages. They're all the rage at leading universities and businesses as the paradigm is an exciting new way to streamline your development synergies! (Note: Previous sentence is not true.)

    1. Re:OO is overrated. by rolfwind · · Score: 1

      I think the original submitter of the story and you both need to read a few Paul Graham essays and perhaps learn lisp:

      http://www.paulgraham.com/articles.html

      Even if you don't use it (though one can with a bit of investigating the possibilities) because it's such an eye opening experience. He also seems to dislike OO (I do too, but he explains his position better), but basically any paradigm in programming, such as the one you suggest Transport Oriented, is good in one situation but not another - it's not a fix all band-aid.

      Lisp, otoh, can be built up via macros, to fit the problem. It's a functional language, but it has a good optional OO system (CLOS) if that is what one desires. And it can be easily adapted to fit the other models without feeling like a kludge (like Cplusplus)

      Disclaimer: Former C and C++ programmer who looked at Java/C# to only see more of the same in a slightly different language. Currently learning lisp and impressed with the differences.

    2. Re:OO is overrated. by BigZaphod · · Score: 1

      I appreciate your concern, but my previous comment was intended as a joke. If you had clicked on the link I provided I would hope it would have been obvious. No harm done, though. Just FYI.

    3. Re:OO is overrated. by rolfwind · · Score: 1

      Oh, I got the sarcasm the first time around:-) I thought that the frustration (?) it might have been borne from was caused by having a new programming methods or approaches (aspect-oriented, structural, extreme programming, etcetera) promoted each month and shoved down people's throats by PHBs or 'Gurus'. My only message is that Lisp is a high-level language that can be built up via Macros for the problem you are tackling^_^

  85. Doesn't really matter by Anonymous Coward · · Score: 0

    Like many others have said, it doesn't really matter which one you learn. I have developed web services and clients in both java and c#. They are almost syntactically identical. The fanboys will rant and rave about their chosen side, but they always do that. There are some gotchas in both that you will run into and figure out how to get around. I wouldn't worry too much about "lock-ins" or "hype" or any of those other words designed to illicit a response. Go for what will be most useful for you right now. You can always pick the other one up later if there is a need for it.

  86. Re:Java.. by defkkon · · Score: 4, Informative
    C# AFAIK has no web services components anywhere near Java's

    The exact opposite, actually. .NET has an excellent framework for web services.

  87. I would go for Java by unoengborg · · Score: 1

    Java and C# are extremely similar, so from a learning point of view ist shouldn't matter what language you chose. Both will help you understand basic OO concepts.

    However, as you use Linux I would recommend Java. Not that you can't run C# applications on Linux, you can. The big difference is that Sun, the creator of Java supports it on Linux, while there is no such thing as Microsoft .Net on Linux. In C# you will always have to rely on mono to keep up with new things in the Microsoft implementation and somtimes mono may lag behind.

    Using Java EE it is also possible to create web services, so you will not have any problems communicating with .Net stuff if you use java, doing the opposit is also possible but usually requires a lot more coding.

    Finally, the development tools are better for java, at least if you run Linux. I'm of course thinking of Eclipse.

    --
    God is REAL! Unless explicitly declared INTEGER
  88. Re:Neither! by M.+D.+Nahas · · Score: 2, Interesting

    The cleanest languages I've used are C, Java, and OCaml. By "clean", I mean the language has a few concepts that can be completely memorized, which results in less "gotchas" and manual reading. For these languages, you'll see small manuals (e.g., K&R's book for C) which cover the complete language and then lots of pages devoted to the libraries that come with the language. I'd definitely recommend Java (or C, or OCaml) over C# for this reason. C# seems to have combined every feature of C++, Java, and VBA into a single language. It is very complex and has a ton of concepts, for which I could never memorize the whole language. I have a feeling that most programmers will use the subset of C# that is closest to the language they understand, whether it is C++, Java or VBA. You might as well learn Java's style of programming, and then, if needed, switch to C# using its Java-like features.

  89. Choices choices choices... by adolfojp · · Score: 1
    This is slashdot and you wrote that you will be using non open source languages. Prepare for the ensuing flamewar and the insults. Nevertheless, to make your troll filtering easier, you should remember that the languages that you chose have the following characteristics:
    • They run in virtual machines
    • Thay are statically typed
    Therefore, Python and Ruby don't compare. That should eliminate about half of the comments on slashdot.

    I recommend learning both! Really. They are very similar languages. What you should ask yourself is what frameworks you should learn and what tools you should use. That is where you will find the larger discrepancies. I recommend trying them all and figuring by yourself what you like best.

    For rich client apps I suggest using eclipse and monodevelop. Monodevelop is not available on windows, but SharpDevelop is great. As for the GUI libraries... For C# you have GTK# and WinForms. GTK# will give you greater cross compatibility but WinForms will be easier to develop with (visual designers). For JAVA you have Swing and SWT. Swing is more complete but your SWT will feel and run more smoothly.

    For the web I suggest ASP.NET for C# and JSF for java. They follow the same approach to building web apps. Some free great tools available are the Microsoft Web Developer Express and the Java Studio Creator.

    Cheers, happy hollidays and happy coding,

    Adolfo

    PS. Whatever you decide to learn always remember to separate everything into layers. Learn MVC and ORM also. And most importantly, remember that projects will ALWAYS take twice as long and cost twice as much than your original estimate. ;-)
  90. Go with Java by jmorris42 · · Score: 1

    I have slagged Sun and Java often enough but if forced to pick I'd say take Java since it has a few advantages:

    1. It is fairly Open and work on GCJ and GNU Classpath is rapidly making it Free. Plus by making it a native compiled language it will end most of the major limitaions of Java. The language is OK, in a Visual Basic like language for low paygrade codemonkeys sort of way, but the JVM and JIT compiling was a killer.

    2. It has a future on non-Windows platforms. Mono is doomed; the second the patent wars start it is going to be the very first casualty. And it starts as soon as they have wrung the last bit of FUD from the SCO v. IBM fiasco; i.e. probably about the time you got through learning it.

    Some here claim C# has some advantages due to being able to learn from the mistakes of Java. While this is true to some extent it is also true that they aren't enough to make up for the practical reasons I just cited.

    --
    Democrat delenda est
    1. Re:Go with Java by maraist · · Score: 1

      Plus by making it a native compiled language it will end most of the major limitaions of Java.

      Don't see how compiling Java to assembly solves any problems dude. In fact it just adds new ones (3rd party library upgrades require recompiling the entire tree).

      If you're talking about client-applications, then either you should move to a backgrounded web-service w/ an HTML front-end, or you're talking about a monolythic application like IntelliJ-IDEA/eclipse where startup speed is a non-factor and normal execution performance is perfectly acceptible (so long as you have 768Meg minimum on the machine).

      --
      -Michael
  91. Wish I got to use C# instead by defile · · Score: 2, Informative

    C# has goto, unsigned data types, all data types treated as objects,

    It already wins in my book.

    Unless I could choose Python instead. :D

    1. Re:Wish I got to use C# instead by owlstead · · Score: 1

      What? The language with a *goto* construct wins? Mod parent down! Besides, current Java has auto boxing / unboxing (automatic switching between objects and basic types). Not completely the same thing, but close enough. And especialy for OO, you won't miss the unsigned data types. Actually, especially with business logic, it makes life easier.

    2. Re:Wish I got to use C# instead by pthisis · · Score: 1

      What? The language with a *goto* construct wins?

      Read D.E. Knuth's "Structured Programming with Go To" (1974) for one paper showing how properly used goto can improve readability, maintainability, and performance.

      Or read " 'Goto Considered Harmful' considered harmful"

      --
      rage, rage against the dying of the light
  92. Java by Eternal_Flame · · Score: 1

    Personally, I perfer C# to Java any day. I am already taking a java course, so any C# has to be done on the side.That said, I still believe Java is the better choice here

    Mono, despite opening up *everyone* (even those such as myself with obscure platforms like linux/ppc and linux/sparc) to the world of C#, cannot yet handle every MS lib out there. Java, on the other hand, is absolutely universal (on the platforms it supports). I have little doubt that any teacher of a C# course will use the MS implementation, and probably touch on some of the libraries onle used in the 'official' .Net. This is a Bad Thing(tm), but probably will happen. Same goes for Java if you attempt to use gcj, or any other language you attempt using an implrementation of anyone save for the languages' creator.

    Mono is very nice, yes, but not fully there yet. Java's official implementation is actually supported on different platforms, making the use of linux in the class a possibility.

    --
    ~You laugh because I'm different, I laugh because I'm insane~
  93. 90% Programmer, 10% Language by PhatboySlim · · Score: 1

    It all depends who you talk to. I always try to answer that question with the fact it depends more on the programmer, than on the programming language. Do you really think Napster or Kazaa or MySpace have really great, elegantly written functions and well-maintained code when they were started? Probably not, but it was the idea of what to do with the programming language that made it great. You'll find a much bigger gap between the innovative minds of two programmers than the difference between two programming languages. Just pick one or the other and go with it.

    --
    Be sure to remember the Programmers Prayer
  94. Not irrelevant to employment opportunities by jfengel · · Score: 1

    The choice of language is irrelevant to how good a programmer you are, but a lot of employers aren't going to understand how fundamentally similar the languages are, and hire whoever knows the language they need for their project.

    If you're at DeVry you're planning to get a job, not an advanced degree. So my advice would be Java, based on my extremely limited survey of the jobs market. Then go home and buy a book on C#, spend a few weeks with it, and put both languages on your resume.

  95. DUHvry by fenderkev · · Score: 2, Insightful

    I'm on my last term at DeVry West Hills on the NCM program. Honestly, my experience with DeVry, I didnt learn anything. I've learned more on my own and in the workplace and getting paid for it rather than paying at least $50k for tuition and not learning anything. The tuition keeps getting raised every semester. When I started 2 1/2 years ago the tuition was at $240 per unit, now its at $460 per unit. The professors there are horrible (except for one teacher whos the only one i respect). My advice: Bail out on DUH-Vry as soon as you can and go to a different school... before they raise tuition again. You're better off taking your programming classes at a junior college.

  96. Consider the APIs that come with the language ... by xqcom · · Score: 1
    From a pure programming language perspective, Java and C# are very comparable. I personally prefer Java. C# put in a lot of effort to remove programming "hassles" like automatic boxing, enums, generics, etc., but Java has caught up in 1.5. And both are very good for learning OO concepts and software design.

    The main difference (IMO) comes from the APIs. Unless you happen to be one of those people who write command-line apps for their desktop computing fibonacci numbers, you will need to understand a billion APIs - XML, SOA, GUI, and god-only-knows what. And good-luck trying to master both ...

    ( putting on fireproof vest). C# today seems to be more popular for "desktop" and "GUI" kind of applications. Java OTOH seems to be more popular with "server" kind of applications. So your choice finally boils down to - what kind of applications do you see yourself developing.

    --
    Denial is not a river in Egypt
  97. For professional work, Java + Linux by Anonymous Coward · · Score: 0

    If you want to work professionally on a Linux platform, Java is a better choice. C# is getting to be a nice environment on Linux, but nearly all of the professional work done with it is on Windows. And Novell is a fine company, but they've made a lot of losing bets. For lots of reasons, C# and Mono may be another one.

  98. What I did myself by br00tus · · Score: 1
    I have been using UNIX and the Internet since I was 16 years old back in 1989. In 1996, I began working as a systems administrator, and did that in dot-bombs until 2000, when I took the summer off and then went to work for the financial sector after the market crashed. I quit that after a year and am still doing sysadmin consulting but am not as focused on big bucks I once was.

    Anyhow, when I left the financial sector I had more free time so I taught myself C language, which I knew a little of but didn't know well. And actually, that is still my "programming" language. I've been writing PERL and PHP scripts recently, but that is just hacks, the C programs I write I do in a serious, "Code Complete" way. I have seen myself become better by following the Code Complete rules, which I guess most experienced programmers think are common sense but they're new to me. Short functions - trying to keep local variables to six or seven. Trying to keep global variables as few as possible. And that sort of thing. So since 2001 I have just been increasing my skill in C, and have had no need or desire to move onto the next step.

    One thing I wanted to do was read "The Art of Computer Programming" and do stuff in assembler and learn that hardcore stuff, but right now I barely have time to improve my C, which has some practical and immediate uses, so that will be postponed until I can do it. So putting aside assembler and that stuff to really understand what's going on with the machine, I guess my next step once I feel I know C well enough is C++. After that I guess I'm in the same boat you're in. Since I, of course, hate Microsoft, I guess that gives me a little bit of a push towards Java. But there isn't any good Java for my Debian either - Kaffe and all of those just don't cut it yet. So I use a non-free port. And to me, that is bringing me into the same realm as C# and Microsoft - except Sun is the big, evil corporation instead. Hopefully by the time I know C, C++ and possibly assembler well enough to move onto C# or Java, there will be a GOOD free version of one of them (hopefully Java).

    1. Re:What I did myself by Anonymous Coward · · Score: 1, Informative

      Everyone should learn C as their first language. That way you understand memory allocation, stack, heap, pointers and everything important in programming. Most dot-bomb programmers have no idea what they are doing when all they know are scripting languages.

  99. They're the same. Pick the best professor. by dpbsmith · · Score: 1

    Ask around and pick the one with the best professor. Or, heck, the most convenient hour. Or the one your friends are going to. Or the one whose textbook has the prettiest color.

    You're trying to get an education, not vocational training.

    They're both modern, popular, widely-used languages with C-like syntax and perhaps 80%-pure object-orientation. They are both in substantial real-world use today, but that's not very important. You may well see job ads mentioning those languages, but when it's time to interview it's just as likely that they'll want something unfashionable... or three years experience in a language that's only two years old.

    Java and C# are Coke and Pepsi. Just be sure you that somewhere along the line you get a chance to use some wildly different languages with completely different styles and base assumptions.

    Be sure you've also tried the computer language equivalents of kvass, chocolate milk, and Campari.

  100. ahh, a classic "Ask Slashdot" moment! by Tumbleweed · · Score: 1

    Red pill or blue pill? Hopefully the next on will be: 'Emacs vs vi' or 'KDE vs Gnome.'

    It's good to know some things never change. :)

    1. Re:ahh, a classic "Ask Slashdot" moment! by zephc · · Score: 1

      "Dear Slashdot,
      It's Xmas Eve Eve, and I'm bored. I'm going to start a language war. Java to C#: Which is better? Bonus points for mentioning editors and desktop environments.
      Love,
      AlexDV"

      --
      "I would say that 99 per cent of what my father has written about his own life is false." - L. Ron Hubbard Jr.
  101. Obviously learn Java by kebes · · Score: 2, Informative

    Now I'm a diehard Linux user

    I'm assuming you're more productive with Linux than Windows. Since you're a student, it seems obvious to me that you should learn Java. Why? Because it's easier to develop (and compile) Java code on a linux machine than it is to develop (and compile!) C# code on a linux machine. I'm assuming you want to be sitting at a linux box when doing your assignments (whether at home or in the computer lab), since you'll be more productive, and can concentrate on programming rather than on the idiosyncrasies of the OS/GUI you are using.

    Purely to make this learning experience as fruitful as possible, I recommend sticking with Java on Linux. In the future, support for C# coding on Linux may be better... but you need to learn now!

    1. Re:Obviously learn Java by carpe_noctem · · Score: 2, Insightful

      I think if anything, this is a better argument for learning C# on a Windows environment. It's all about diversification, man... if you keep sticking to what you know, you'll put yourself into a corner, and it will make it harder for you to branch out later. And, as a superficial bonus, the more points like this you have on your resumé, the better it will look to a potential hiring officer.

      I also learned to code under unix, starting with c/c++ and eventually picking up bash, perl, etc. In college, I thought linux was the shit, and I was going to focus my career specifically on unix development. I scorned windows-weenies (well, I still do that, heh), and assumed that the unix development environment was god's gift to programmers.
      After graduation, I picked up a job software engineering. The firm I worked for had a variety of clients with different platform and language requirements, and although I assumed I would be doing unix coding, guess what team I ended up on? That's right, a C# project for XP. I spent the first month cursing the Windows programming paradigm, then the second month struggling to re-adjust to OOP. By the third month, I thought C# was pretty cool, and I was about ready to sign my soul over to satan... ok, so I wasn't a .NET fanatic, but still, I think that C# is a more elegantly designed language than Java.

      I quit that job awhile back and now I write audio processing software in C++ for OSX and Windows. Linux is pretty much worththess as far as audio and music applications go (imho), so the closest I get to pure unix programming is busting out the occaisional '#include <unistd.h>' in a carbon application. I still prefer unix development under OSX to visual studio, but after all of the above struggle, I can say that I'm sufficiently comfortable developing and porting under Windows as well.

      So, the point of the story is that when you're in school, it's better to take classes in things that you don't know about, instead of just picking up easy A's in classes that you don't have to sweat as much in. You'll thank yourself later, and even if you don't immediately use the stuff that you learn, it's useful to know how to adapt to foreign development languages and environments. Doing this in college is pretty non-consequential... if you don't get the hang of it right away, then you get a bad grade and a miserable semester. If you don't catch on in the real world, it could mean weeks of lost time, bad reviews, and most importantly, unhappiness at your job.

      And we all know how much that sucks. :)

      --
      "Quoting famous computer scientists out of context is the root of all evil (or at least most of it) in programming." - K
    2. Re:Obviously learn Java by metlin · · Score: 1

      Actually, I'd put it the other way around - since he is familiar with *nix anyway, why not learn his way around Windows?

      He can always learn Java on *nix on his own, but he would never get around doing .Net and C# on his own (since he is not comfortable on the platform). However, this would be a perfect opportunity for that.

      That way, he learns more and his resume looks better, too. Just a thought.

  102. APL by Anonymous Coward · · Score: 0

    Forget Java or C#, the best first programming language to learn is APL.

  103. Both are resume building languages pretty much by Weaselmancer · · Score: 1

    It's always been my experience that you program C or C++ when you're at home, and Java/C# at work. Some folks use Java at home, and I've never heard of anyone recreationally programming C#. They're both pretty much resume builders.

    So I'd say a good data point would be to look at monster.com and careerbuilder and see which one has more jobs listed. I've found it to be about 60/40 in favor of MS/C#. But I learned Java anyways. =)

    --
    Weaselmancer
    rediculous.
  104. This is the Wrong Question by XScB · · Score: 1

    Both languages are *so* similar, if you learn one you'll pick the other up in no time. I learnt C# in a week on a live project after being parachuted in to help out a project that was slipping.

    Pick initially whichever is more convenient - which do you have a compiler and development tools for?

  105. Pseudocode by patonw · · Score: 1

    I kid, I kid.

    Employability-wise it seems C# is in slightly higher demand currently and will probably remain that way for a while.

    Java is stronger at the cross-platform stuff. For a Linux nerd, I'd go with Java.

    The reason being that regardless of which language you pick up you will still learn how to program (in the long run) and with Java you will suit your short term interests. If 5 years from now some obscure language becomes dominant you'll be able to pick it up within a few hours. They're just changes in a few details -- the bigger picture will be familiar once you know one language.

  106. What versions? by An+Elephant · · Score: 2, Interesting

    Java 1.5 is very different from older Java versions. Likewise, C# 2.0 is a lot different from 1.0. Of the two, C# seems to be evolving in much more interesting ways (and saying this pains me, as a Unix and OSS fan). The C# 3 spec drafts (available from MS, and mentioned on Lambda the Ultimate) bring in a lot of functional programming, for example. So, educationally speaking, if you are going to learn the newer versions, I would advocate C#. Note I'm doing so mainly for its non-OO features. As long as you only care about OO (and older versions), C#'s delegates are IMO an advantage, but the difference is not that big.

    If you're asking "which is more fun", though, then you have to remember that you work in an environment, not just a language. Visual Studio .NET 2003 is downright retarded in comparison with any major Java IDE, for any purpose other than GUI programming. I don't know yet about 2005, and I have a feeling that SharpDevelop or MonoDevelop are not better than VS.NET.

  107. Pick one and go with it, rubber-stamper by Anonymous Coward · · Score: 0

    Pick one and go for it. Either way, you're still a tech school rubber-stamper. *stamp* Graduated! *stamp* Graduated! *stamp* Graduated! What? You haven't a clue about computers? *stamp* Graduated!

  108. They will both do by Anonymous Coward · · Score: 0

    C# was built to beat Java. Then again, as you mentioned Java just works about everywhere. .NET is a new platform comparative to J2EE (and much more). I would choose C# and .NET instantly. The reason is that it seems the jobs are in the future swinging that way. A lot of the companies starting new development are hopping into .NET bandwagon (with any of the languages) and even some Java shops are going that way too. 60% of the new projects are already there. Figure the rest out yourself.

  109. Re:Java is more credible as a cross platform langu by MarkNijhof · · Score: 2, Insightful

    Maybe, but Java has been there many yearslonger than C#, just the fact that people start compairing means enough I would say. C# is getting a bigger language.

    -Mark

  110. If it's your first OO Language by jozeph78 · · Score: 1
    I would learn Java first because, at least to me, it is a more pure language.

    Coming from Java I was able to pick up C# in a five day training session. .Net has some pretty slick methods to talk to Windows that to do the same thing in Java is a real nightmare (AD authentication anyone?). If you are doing a lot of GUI stuff I would strongly recommend learning SWT in favor of Swing because Swing is just slow (shut up, you know it's true). What I like most about C# and dispise about java is deloyability. If I want to make a utility with a small form it compiles to a 33k executable file that someone can double click on. In Java I have to hope and pray there's even a JVM on their machine. Cross platform is great but automatically hitting 80% of all platforms isn't bad. I've had to walk so many people though a JVM install after I wrote a small java app for them, shaking my head everytime.

    The main things I don't like about c# are the fact that it actually has too many features. Unsafe code blocks, out parameters, pass by reference, all of those things are nice yes but they will distract you from learning what you should really learn about OO which is how to write well designed reusable code. Java will keep you focused on just that. In addition, MSDN documentation seems very hard to follow. It's documentation by example rather than by specification. Java's API documentation reads very scientifically and I choose that word carefully because it's not necessiarialy easy to read, just very precise and consistant.

    Learn Java first unless you have a .Net job lined up. The lack of syntatical sugar that C# provides will have you thinking more about your architecture and less about how to pass your parameters.

    --
    Ever done a `man` on `top` ?
  111. take the opportunity to open your mind by jonnosan · · Score: 1

    since you're allready a die-hard linux user, and you're taking the class to learn stuff, take the subject that you know the least about. Spend some time coding in MS land and confirm or dispel your preconceptions.

    The underlying concepts of OO coding are pretty much the same whatever language and OS you use, but the broader your experience the better equiped you'll be for solving whatever problems you come across in your career.

  112. For the love of God, MOD PARENT UP by feijai · · Score: 1

    He nails the issue perfectly. C# may be a better language than Java, but -- mono being a sideshow -- it's a lock-in to Microsoft Hell. The small advantages C# provide are far outweighed by the massive disadvantage of it being a gruesomely proprietary language.

  113. Ruby & Rails? by jordandeamattson · · Score: 1

    I agree completely with those who say to learn one and learn it well.

    But if I had my pick of languages (and I do currently), I would learn Ruby through and through, and then the Rails framework.

    I have been studying both of late (just a few days in, and I am quite impressed). They both have "The Right Stuff!".

    Yours,

    Jordan

    1. Re:Ruby & Rails? by AlvySinger · · Score: 1

      What about learn the concepts, and the rest is syntax?

      As a C#, Java and VB developer with no exposure to Ruby and/or Rails what's is there conceptually that would be new?

    2. Re:Ruby & Rails? by jordandeamattson · · Score: 1

      Alvy -

      Ruby is a dynamic OO language in the spirit of Smalltalk, where everything is an object. There are definitely some conceptual differences from C# or Java (which are essentially clones of one another).

      Take a look. You will like what you see.

      Yours,

      Jordan

    3. Re:Ruby & Rails? by AlvySinger · · Score: 1

      Cool - I should had added SmallTalk to my list, which is similar (iteration is object based too). You're right about the two being clones. Will check out RoR as it sounds interesting for this reason (and I imagine a little more popular than SmallTalk at present).

      Thank you.

    4. Re:Ruby & Rails? by jordandeamattson · · Score: 1

      Hi Alvy -

      A lot of folks who have my respect (the Pragmatic Programmer folks) are very excited about both Ruby and Ruby on Rails.

      I am definite that Ruby is going to be my scripting language going forward. I can see so many ways in which it will make my life easier given the combination of the language's expressiveness and the power of the set of standard libraries.

      Rails holds out the promise to build some very powerful web applications really quickly. Java & C# - as Tate outlines in "Beyond Java" - are no longer on the cutting edge. Heck, every year at Java One, they roll out a new Java stack.

      Ruby and Rails are a nice, compact, and very powerful stack for building web applications. It hooks into AJax quite nicely. It is really impressive.

      Yours,

      Jordan

  114. How many times a year does /. have these lame... by Anonymous Coward · · Score: 0

    questions? 2 dozen? 8 dozen?

    What's wrong, not enough material to steal from digg today?

  115. My own 2 cents by martinultima · · Score: 1

    First of all I will mention that I don't know either particularly well, but based on what I've seen in other programs I'd say go with Java.

    Why?

    * You can write standalone programs or Web-based applets (some programs can do both, eg the Java port of Frozen Bubble).

    * Java natively runs on Linux, stuff like Mono or Wine can be unreliable because it's never 100% accurate emulation. Maybe I'm wrong here but either way I'd rather have a natively-supported platform.

    * Java is free.

    * And most importantly, my favorite game ever (Puzzle Pirates) is a Java app. :-)

    Oh, and despite what some people say about Java it can run quickly if the program is well written. My 133MHz laptop with 80MB RAM runs Puzzle Pirates rather nicely, even though it's a 100MB+ application. In fact, a lot of non-Java programs are slower to load on the machine, which is kind of interesting.

    --
    Creative misinterpretation is your friend.
  116. try learning Hindi instead by justdrew · · Score: 2, Funny

    languages are so passe, how are your powerpoint skills?

  117. obj-C by Anonymous Coward · · Score: 0

    You should use Objective C of course!

  118. Simple by geekoid · · Score: 0, Flamebait

    go to salary.com and see which pays more.

    hint:It will be Java.

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    1. Re:simple by merith · · Score: 1

      constructive, happy, real coder, and guts, are all things you need to look up in a dictionary before you post again.....

  119. C# by Unnngh! · · Score: 5, Insightful

    Most people will probably say learn Java, particularly on /.. Java programmers are extremely common. The company I work for had a hell of a time hiring a C# developer with any experience. .NET is the future of development on any MS platform. For an entry level position, if you're looking for jobs, I don't think it will matter, but smaller shops are not going to want to spend the time for you to get familiar with the nuances of whatever language they are using. I think that C# has a larger potential for quick rewards right now since there are so few programmers compared to a rising demand. In the long run, though, I don't think it will make much different and the two are similar in most aspects.

  120. Re:Neither! by jozeph78 · · Score: 1

    Totally agree. I practically posted the exact same thing before I read this.

    --
    Ever done a `man` on `top` ?
  121. Doesn't matter by Gorimek · · Score: 1

    The languages and libraries are - intentionally - very similar. Once you know one of them well, you can pick up the other in an afternoon.

  122. Java, then C# by doinky · · Score: 1
    I use both, and I'd say Java (and I'm a Windows developer). C# is fairly easy to learn coming from Java; and the people who say there's more developer momentum for it are fooling themselves - the amount of code you can look at, borrow, use, or whatever for Java is orders of magnitude more than for C#. A datapoint - I was looking for an open source toolbar replacement (Windows.Form control) for C#, and couldn't find squat. Try the same for Java and you'll find dozens.

    And using Eclipse while writing Java code takes a lot more drudgery out than does using MS's Visual Studio for C# - they have a rudimentary "method completion" for VS, but almost everything else that Eclipse helps you with is lacking. The people who say that they're similarly helpful are obviously not using Eclipse to its potential.

    I'd say it's very useful to know both, however - my company's actually using both on the same project right now. Despite the comparative paucity of libraries, many companies (and in my case, a part of the government) seem intent on using C# on the client-side even when talking to java on the server.

  123. Go Whit C++ by HeavyMS · · Score: 0

    I say learn C++ then c# will come natural to you. It's like c++ whitout the mess.

  124. C++ should be FIRST, Java should be second, thenC# by Hawkeye477 · · Score: 1

    C++should be FIRST, second Java, then C#! Now with that said let *Attempt* me back that up. I work currently in all 3, I would say about 60% of my time is in JAVA, 30% in C# and 10% in C/C++. I am also not a typical Slashdot user as I don't HATE Windows and just love linux. To be honest I love and hate both of them and use each of them for what they are good at. So ...

    C++ first: So why C++ first, isn't it OLD and outdated? Well Yes to some extent and No to another. C++ is like learning how to bake a cake from scratch u learn the lowest of the low in details. Why things work and all the different ways they work and why things were designed the way they were in Java and C#. C++ is a beautiful and ugly language at the same time but also has an ENOURMOUS amount of power in the right hands. I equate learning C++ to learning how to bake a cake, You don't use the duncen hines mix the first time, u actually use all the basic ingredients like flower, etc. This gives u an understanding of what exactly does what in the cake.

    Java Second: Why Java second? FIrst because it's easier to learn in a more CORRECT manor that C#. NOw let me clarify that before I get flamed. I don't care who u are or what u know but Sun's Java Docs whip the ass of microsoft documentation. THis little ignored but yet so important thing means a LOT when it comest to learning a language. Now I've been programming for many years and when I learned C# tracking down what the [] operator does for each different MS class was a total BITCH. Java is also proably the most popular language right now and is not goign anywhere. Anyone that says it is knows nothing abotu server programming. There is not MAJOR financial bank that does the bulk of it's trading on Windows or C# backends, it's all either UNIX or LINUX with JAVA or C++ and at some of the older banks, COBOL. Windows is not great for servers, it has many drawbacks... but that is a debate for another time.

    C# third: C# is Java, anyone that says it's not does not know both. But what C# has is the ability to integrate easy with Windows, and this means a lot. This to me is it's only Advantage, as I like to use windows as my primary desktop. As for a language, it's OK, I personally like java Better, but it's a 6 half a dozzen split to be honest. My pet peeve though is the [] operator and the delegate/event mechanisms, I truely don't like those, but that's just personal. I think those lead to bad programming and less OO design. As for MONO, I hope is succeeds and does well, but for now it's just a joke, u can't use it in an enterprise environment, they just don't have it workign well enough unfortunatly.

    So in closing I would learn in that order, I like all three, I use all three. My personal favorite is Java but that might have more to do with IntelliJ than anything else. Visual Studio is a piece of shit in comparison. I hope they get it right the next time, I here the new one is slightly better than the 2003 version I use.

    Hope that Helps!

    --
    My Web Site - www.ocean-liners.com
  125. emacs! by heson · · Score: 3, Funny

    Choose whatever language you like as long as you use emacs.

  126. Dont learn languages by MemoryDragon · · Score: 1

    Learn the concepts, a language is pure syntax, a concept is vivid longer than the usualy 10 years language cycle.

  127. I don't want to sound facetious... by advocate_one · · Score: 2, Insightful

    but I would pick Python... but if you really have to, then Java... the whole point of this course is not that you are learning a programming language... but that you are learning the fundamentals of Object Oriented Programming. The language is a means to an end... just think yourself lucky... I had to suffer Eiffel on my OOP course

    --
    Donald 'Duck' Dunn: We had a band powerful enough to turn goat piss into gasoline.
  128. Dumb question by Evro · · Score: 1

    Despite the old saying that there are no dumb questions, the question "which should I learn" always strikes me as dumb, . Learn one, then learn the other. If the question is "which one should I learn in school," then as others have said, learn the one being taught by the better professor.

    The most important thing is to learn the concepts - algorithms, data structures, object-orientedness. Which language you learn them in shouldn't matter too much, especially for languages as similar as Java and C#. If you are a self-proclaimed "Linux zealot" then I don't see why you'd even consider learning a language created by Microsoft, it seems like you'd just be setting yourself up to get pissed off.

    In the end, knowing more things will only help you, so learn both.

    --
    rooooar
  129. choice by wzzzzrd · · Score: 2, Informative

    when it comes to really large scale enterprise projects with (REAL) legacy integration, there is no c#, there is no microsoft. especially in the fields of interest, like banking or insurance companies. is there something easy and reliable like JCA for c#? is there something as mature and stable as jms along with the various queueing systems like ibm's mqseries? no, there is not. i know i sound like an evangelist (and i admit i am one, but for very other reasons), so let me tell you this:

    it is not about the language

    imho java 5.0 (or 1.5, whatever you prefer) is the better language, but this does not matter at this point. what matters is the whole environment: the java community process (which btw led us to ejb3.0), some kind of openness (no vendor lock-in, take whatever application server and implementation you like), industry acceptance and a community microsoft does not dare to dream of (remarkable because sun is by a lot of geeks *1 considered "a little bit" evil).

    so learn whatever language you like, but gain experience in the important frameworks/ specs and learn about abstraction, and learn why things like pattern insantity and metametameta-models are a bad thing.

    *1: and in the end of the day, it is geeks that run the whole software development business, tell me what you want ;)

    --
    On second thought, let's not go to Camelot. It is a silly place.
  130. Pick .Net - learn Windows by Scarblac · · Score: 1

    I don't know C#, because I'm also 100% focused on Linux and OSS things. Sometimes I feel that's a pity, it makes me a bit one sided, but I don't have the time to dive into that Windows stuff. Now that you have the option, why not learn something about how the Windows side does it?

    The advantage of Java is that you can use it in your home setup, but if you're going to use it as a hobby, surely you can learn it as a hobby as well. It won't be that hard once you know C#, probably.

    --
    I believe posters are recognized by their sig. So I made one.
  131. Java at Job Fare by chiok · · Score: 5, Interesting

    Last February I was at a job fare without knowing either Java or C# and just about everyone hiring programmers at the booths told me they'd hire me if I had some Java background. No one mentioned C#.

  132. "Which should I take?" by John+Hasler · · Score: 1

    Python.

    --
    Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
  133. C# by Anonymous Coward · · Score: 0

    Speaking as a professional software architect, I have found that many companies are moving or have moved to C# and .NET for most of their application development. Demand and pay for C# developers is good, and getting better.

    C# and .NET especially 2.0, offer a very easy to understand, consistent platform for developing applications both on the web and for thick client interfaces. The MSDN documentation is outstanding and 2.0 offers serious enhancements to using system ports which ups the ability to interface with embedded systems. As an example, it took me three hours to write a web *and* win forms interface to control a model train set using the new DCC locomotives. In my book, this has a pretty high geek factor.

    C#, ASP.NET and .NET's biggest boost is in developer productivity. It takes consistently less time to get up and running with C# and .NET. On the web simple (but difficult) tasks such as validation, error handling and state management are easy.

    The bottom line is that you will spend more time writing cool new features to your app rather than looking up error messages, debugging code or downloading the latest version of library xyz that doesn't have that undocumented feature that you just discovered in it.

    My 2c. Good luck but more importantly, have fun.

  134. It's Obvious by nate+nice · · Score: 2, Insightful

    Obviously you're going to DeVry not because of your passion for mathmatics and computer science but because you want to learn how to program and try and get a job being a programmer. For this reason alone I would pick up C# as there is a ton of market opportunities for C# programmers right now.

    Really it doesn't matter. Anyone I would hire I would expect to be able to pick up a language and be good with it in a few weeks, including the general libraries, etc.

    --
    "If you are a dreamer, a wisher, a liar, A hope-er, a pray-er, a magic bean buyer ..."
    1. Re:It's Obvious by ruyon · · Score: 1
      I don't know about you or your job, but picking up a new language is not always as easy as you may think, especially you need to learn a completely new paradigm.

      For instance, learning Java would take only a few week (if not days) for a seasoned C++ coder, but learing a language based on fundamentally different paradigms, such as Lisp/Haskel/Prolog, would take months.

      I was a 4.0 student at my school and have coded more than a decade (I started coding when I was 12, and I studied BASIC, C/CC++, ASMs for several different CPUs, JAVA, Object-C, and other script languages before), but picking up a functional language (not just syntex, but also "being good with it") took me about two months, while I learned Obj-C and Cocoa framework, and felt comportable with it in a few weeks. You can call me stupid, but I'm quite confident that I'm at least as good as average, if not better.

    2. Re:It's Obvious by nate+nice · · Score: 1

      No doubt. Coming out of school I had to learn COBOL and the Tandem Non-Stop operating system. It's was a bitch trying to pick up a language where everything is global, has no stack etc but I think if you understand the fundamentals of a compiler and basic things like branching, selection, iteration, memory management etc then picking up a language isn't that hard.

      I studied ML and Prolog in school and they were no doubt "strange" but it wasn't impossible. I picked up Objective C and Cocoa as well in my spare time in College and that was definitely more tricky because you're picking up a language with a different type of memory management than I had used and the late late late binding of Obj-C objects was different. But along with this you're picking up the Cocoa API all at once so it is definitely tricky. But, being that it's a typical iterative language it wasn't the worst thing on Earth. It made picking up Python a lot easier anyways in terms of object bindings.

      But I think overall it's not impossibly for a good coder to pick up a language and start writing decent programs in it rather quickly. you figure most libraries do the same things (lists, string manipulation, various data structures, some algorithms like sorting, etc) and you know where to search when you need to do something.

      I mean, when you break programming into data structures and algorithms, it becomes a rather remedial task in any language. It's figuring out how the particular language deals with the above mentioned things (branching, selection, iteration, memory management etc) so you can implement it.

      I have to admit though that since a language like ML relies on recursive functions so much it *makes* you think differently about what you're doing.

      So, in summery I would agree with you. It may take a bit longer for more exotic, noncommercial languages, but I think a fundamental knowledge of computer languages, compilers and type systems, etc make for an easy transition into any language. Any CS degree should allow a student to experiment with imperative, functional and logical languages.

      --
      "If you are a dreamer, a wisher, a liar, A hope-er, a pray-er, a magic bean buyer ..."
  135. C# Its a better option by mariogarcia · · Score: 1

    1. Simplier than JAVA, this will let you concentrate on more important aspects like the OOP paradigm, abstraction etc. 2. Even if you are a Linux Die Hard you will finish your projects faster in C# and in Windows, let the linux programming for a bit later, maybe you are going to use another language anyway. 3. You can allways use MONO if you like. 4. C# its newer so less people will have X years of experience than you. 5. Java will never, never be open source (ok at least in the next 6 months). 6. See the previous topic about Java losing momentum. 7. You can allways use MONO if you like. Allways remember: Languages are over rated, learn the foundation.

  136. Re:Neither! by Anonymous Coward · · Score: 1, Insightful

    As someone who graduated from DeVry with a degree in CIS four years ago I'll add my two cents. Java and C# are close enough that it would be wise to take the language that is taught by the better professor (the slave driver type, if possible). If you know one, it won't be too tough moving to another. For instance, I know Perl pretty well. When I wanted to learn Ruby, it only took me a few hours to translate a 500 line Perl program to Ruby. I can't imagine the Java/C# situation is radically different.

    If you're serious about programming after you graduate then my advice is to expose yourself to as many different programming languages as you can and becoming as close to an expert as possible in at least one. OCaml is a great language to learn but the learning curve is pretty steep. Lisp is also worth learning, for reasons that Eric Raymond has already stated. And then learning Perl, Python or Ruby is great when you want to write a short program quickly. So since you'll probably be looking for a job after you graduate, one idea is to take a class in Java/C# from the better professor, learn it well, and check out the languages mentioned above.

    Also remember that once you're on the job you're going to be putting in a lot of hours on a single language, so you'll want to get as much breadth as you can now because you'll be getting the depth later.

  137. Absolutely correct by ishmalius · · Score: 1
    A good programmer is able to express his logic and algorithms in any language. He should never concentrate on just one, but consider the plethora of languages and infrastructures as the many tools of a toolkit. Each one has its own qualities and drawbacks. Use the best one for the job at hand. It makes you a better craftsman, opens your opportunities and horizons, and looks better on your resume/cv.

    But purely answering the posed question: Don't learn either... learn both. They are so incredibly similar that knowing one is like knowing the other.

  138. It Depends! by duffbeer · · Score: 1

    a) It doesn't matter too much which you start out with. What will matter down the road is which you get documentated experience with. Projects and jobs on your resume will count towards your "X years experience with _____ technology" qualification for jobs.

    b) Your choice of which tech to specialize in may have an impact on where you live down the road. For example, .net will get you in a lot of doors in Las Vegas, but your enterprise Java experience will be nearly useless.

    --
    "This wound is beyond my ability to heal. We need Elvis medicine!"
  139. My two cents... by Savage-Rabbit · · Score: 4, Interesting

    Java on the other hand is a cross platform environment supported by multiple competing vendors. That will leave you more nimble to develop and deploy on a wide variety of systems. There are great JVM's available from Sun, BEA, IBM and others. There are several great commercial and open source implementations of java servlet containers. Can C# really say the samr thing?

    I agree, Java is the only truly cross platfrom alternative despite the fact that C#/.NET is being implemented on non Microsoft platforms, Java will remain the only really usable cross platform alternative for some time to come. That being said there are still white patches in the standard Java class libraries; like RS232 support for example which, surprise, surprise, is still widely used. The last time I looked this was only implemented for Sun and Linux but not Windows, OS.X and other OS'es (you had to install a special third party implementation of the standard RS232 interface from Sun). Although I like C# better than Java for a number of reasons I still wouldn't rely upon C# for cross platform application development which is something I see as an essential capability to have for any future software product that can afford it performance wise. I would only start implementing something in C/C++ if I really needed close control over memory usage, the ability to do heavy duty performance tuning etc. For anything else it really just pays (money wise) to throw hardware at the problem and develop in Java or C#. But since the .NET implementations for the various OS'es will be developed by different parties (Microsoft, Nowell/Ximian etc...) rather than a being largely developed and/or coordinated by one party (Sun) like Java plus I wouldn't put it past Microsoft to use dirty tricks to make sure that .NET will always be more stable on Windows than other platforms.

    --
    Only to idiots, are orders laws.
    -- Henning von Tresckow
    1. Re:My two cents... by DeadMeat+(TM) · · Score: 1
      That being said there are still white patches in the standard Java class libraries; like RS232 support for example which, surprise, surprise, is still widely used. The last time I looked this was only implemented for Sun and Linux but not Windows, OS.X and other OS'es
      See RXTX for all your cross-platform RS232 needs. The compilation process is a little long-in-the-tooth, but you only need to do that once per platform. I've personally used it on Linux, OS X, and Windows CE.
    2. Re:My two cents... by Anonymous Coward · · Score: 0

      Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders

  140. Learn algorithmization well first by BadassJesus · · Score: 2, Informative

    Today students "learn" languages and dont even bother to really understand the logic behind.
    The processing that goes down to cpu is always the same, its all about algorithmization and data management.
    Programming language is only a tool, its like a pen in the hands of a writer.
    You may have various types of pen or nice handy language tools, but that doesnt prevent you from writting lame and inefficient code.

    Good programmer can use any of todays programming languages. The only thing you need to learn is to pickup the syntax of that particular language.
    Object oriented languages like Java, C#, C++ are so similar, and most of the "learning" time you spend
    remembering the common library functions these languages interface with.

    I use C++ on regual basis, I had to write some PHP stuff on the server recently. All I needed was to look up the delarations,
    syntax for condition stataments, pointers and array handling.
    In a hour I was set, and in the next hour the job was done.

    1. Re:Learn algorithmization well first by hammackj · · Score: 1

      wow, someone that understands the language battles. IE Learn how to program(logic, design), then pick a tool(language, ide, etc) to solve the problem. I use java by trade but i can do any lanauge with ease, C++ is my fav tool though.

  141. Java? C#? find something thats easy to learn by Tinned_Tuna · · Score: 1

    Personally, for learning OOP, I would choose Python, neither Java or C#, as I find both of the syntaxes to be slightly unwieldy, but then again, with Java, it seems easy to quickly move your code around, show it to friends, get other people to debug it, etc. My personal choice is to give both a wide berth, and stick to prototyping things quickly in Python, then transfer it to C/C++ and compile the binaries on the necessary platforms, or just distibute code :) If I had to choose, I would go for Java. But before hand, read a few Python tutorials (esp. How to think like a computer scientist Python version) and get OOP concepts down, using a simple syntax, then transfer it across to _Java_/C#.

  142. Out of those two, learn Java by Kickstart70 · · Score: 1

    but as soon as you have 'mastered' that, go onto something more enjoyable like Ruby. Your brain will thank you for it.

  143. dude... he's taking classes at DeVry. by Aqua+OS+X · · Score: 0, Offtopic

    I don't know what state that guy live in, but if he lived around here (the bay area), I know he'd be nuts not to attended a state university with accredited professors, cheeper tuition, as well as the ability to accommodate a working adult.

    --
    "Things are more moderner than before- bigger, and yet smaller- it's computers-- San Dimas High School football RULES!"
  144. Re:Java is more credible as a cross platform langu by hkb · · Score: 0, Flamebait

    C# was invented for one reason: locking sytems into a windows deployment.

    How does this shit get moderated up? The poster is clueless. If C# was invented for that one reason, why did MS release Rotor for FreeBSD? Why did it bother to get C# implemented as an ECMA standard? Why does it help, instead of try and crush Mono? Why does the API include Oracle functionality?

    In contrast, Java is currently a closed platform with Sun's fingers firmly around its neck.

    --
    /* Moderating all non-anonymous trolls up since 2004 */
  145. I vote Java by sabre307 · · Score: 1

    As it has been said many times throughout, both languages are similar enough to each other that once you've learned one, the other is a breeze to pick up. However, I found that when developing project assignments in C, I had to reboot the computer into Windows and develop there, as most professors do not run Linux. With Java, I never had to reboot, because if the app ran on my Linux box it would run on their Windows box. Also, as previously stated, there are many free development tools out there for Java, but you have to pay for what you need to study C#, and when you're in college money is scarce, and noone wants to spend hours in a lab when you can do it at home. The reality is that in the long run you will most likely end up learning BOTH, so don't fret over the decision as it is only a question of which one to learn FIRST. Go for which you believe will be easier in the short term and worry about the other later. I think both would be equally hard to learn in the long run. I learned C++ first, but picked up the Java technique in a weekend afterwards. Good Luck.

    --
    My software never has bugs.
    It just develops random features.
  146. Ignore any one recommends one over the other... by AlvySinger · · Score: 1

    ... at least on language merit, which is almost certainly likely to be bias.

    Which might prove more useful on a CV (and PHBs don't necessarily care if you can do one you can do any)?

    If you learn OO, then Java vs. C# is largely irrelevant. There's some minor syntax differences and a whole host of library issues but nothing that's as important to knowing the underlying concepts.

    Which class has more women in it? (Okay, a joke but if the distinction is that slight you may as well use something to decide. And g/more/any/, etc.)

    Learn OO and go from there. And if you know enough to understand co-variance then you'll get a job if I interviewed you - lots of people claim to be "OO-experts" but crumble when challenged with anything more demanding that the first few pages of any language book.

    And, finally, when looking at books - particular the non-academic language specific ones - go for anything that describes how concept X works, not how language Y implements concept Y. E.g. interface vs. implementation inheritance is a core OO idea. It's not language specific. Java and C# are more similar than they are different. (With apologies to Z-fanboys wanting to suggest either r0x0r, etc.)

  147. Both -- but Java first by Anonymous Coward · · Score: 2, Insightful

    Make yourself more hire-able, learn both. Start with Java though, you can learn it in a familiar environment (linux) easily.

    Really, I'd concentrate on four languages, C++, C#, Java, and a good scripting language (Python, Ruby, try to avoid PHP)

    Also take a parallel/distributed computing class. Having a firm grasp on the concepts of parallel processing, network communication, and distributed processes is key to understanding how a lot of computer systems interact and work together. It is also *very* handy when you are debugging an application because you learn to think in a non-linear fashion and will thus pick up on subtle programming errors more quickly. :-)

  148. My Thoughts (from a DeVry student) by MBCook · · Score: 1
    I have a term left at my local DeVry in CIS. I work part time at the school so I've known about this for a short while.

    First off, as others have mentioned, they are both fine languages. It is not like you are choosing between Basic and C++. I should note that I don't know C# (never looked into it). My understanding is that C# will be the new OO language for introduction to OO and programming, and that you will learn Java later (the Business Programming class that is VB.Net now will move to Java, I think). So you'll end up seeing them both.

    Which to choose? I would go with C#. Everyone after you will be taking it, and DeVry is very MS centric so having that early .Net learning may make your life a little easier later. You can go with Java, but you will be a last of your breed (untill they decided to switch again in 5 years or whatever). Personally I like Java better than I think I'd like C#, but it is partially choice. Also as one of the first C#ers, they may be very interested in getting you to work in the ASC if you would be interested in that (providing you are good, etc). You can start as soon as your second term.

    On the Java plus side, there will already be many students who know the language and will be able to help you (like in the Acedemic Support Center). Java is still a big language that "everyone" wants (seems like most job descriptions want you to know Java these days).

    If there is more I can do to answer your question, just reply. In short, I would say C# but it really is a toss-up in my mind and not a clear answer.

    --
    Comment forecast: Bits of genius surrounded by a sea of mediocrity.
  149. Java has better programming tools by 192_kbps · · Score: 2, Interesting
    The number and quality of programming tools in Java is much greater than in C# and are more likely to be open source and/or free. I find myself writing much more code in C# than I would in Java because of the enormous number of free Java APIs found on the Internet.

    Cases in point, I tried MonoDevelop a few months back but gave up since it contained no integrated debugger. I needed a neural network library and found JOONE for Java but no such equivalent in C#. Both platforms have unit test facilities (JUnit and NUnit), but the number of extensions for JUnit dwarfs that of NUnit.

    Based on the platform maturity criteria Java wins hands down. What are your objectives? I suspect you will need less aspirin completing your academic program in C# than in Java. Once you complete your program in C# you might be able to command a higher price on the job market but that is also a riskier proposition because C# is not entrenched like Java, and therefore the market for C# engineers is less stable than that of Java. Microsoft could pull the plug on C# in the future (and they've done this before with other technologies to force upgrades) and C# would quickly fade away, but Java would survive if Sun dropped support.

    Java and C# are both C++ dialects, and their differences from C++ are largely identical (e.g. intermediate code, single inheritance, interfaces, garbage collection, lack of pointers). As some earlier posts noted, learning one enables you to pick the other up fairly rapidly at a basic level, but the standard Java and .NET libraries vary considerably (not to mention the non-standard libraries). Learning APIs/libaries/frameworks is where you will spend most of your learning efforts once you work professionally.

    1. Re:Java has better programming tools by 192_kbps · · Score: 1

      I should have written "I suspect you will need more aspirin completing your academic program in C# than in Java."

  150. Re:Java.. by Eternal_Flame · · Score: 1

    The exact opposite, actually. .NET has an excellent framework for web services.

    Not on Mono, it doesnt. And I'm assuming this would be used, as that was the framework mentioned in the actual question.

    --
    ~You laugh because I'm different, I laugh because I'm insane~
  151. you can have both for only $1 more... by Arthur+B. · · Score: 1

    really, learn both they're extremely similar. Much of the learning process is factorized so really it's worth it. Or just learn java and when you need C# learning it will be a snap.

    --
    \u262D = \u5350
  152. Visual Studio is Free! by MBCook · · Score: 5, Informative

    It doesn't matter. As a DeVry student he gets a free software bundle that includes:

    Windows 2000 (or was it 2k3?)
    Windows XP Pro
    Microsoft Office Pro
    Microsoft Visio
    Microsoft Visual Studio .NET
    and something else.

    Price is not an issue in this.

    --
    Comment forecast: Bits of genius surrounded by a sea of mediocrity.
    1. Re:Visual Studio is Free! by advocate_one · · Score: 1

      ah but it is... the moment he graduates, he's no longer licensed to use them...

      --
      Donald 'Duck' Dunn: We had a band powerful enough to turn goat piss into gasoline.
    2. Re:Visual Studio is Free! by CableModemSniper · · Score: 1

      Theoretically, by then he's learned the language and is off to get a job, where the job pays for the development environment, whatever it may be.

      --
      Why not fork?
    3. Re:Visual Studio is Free! by metallic · · Score: 1

      If this is the same program that I had at Louisiana Tech as a Computer Science student, he is still licensed to use the software after leaving the university. He just cant reinstall the software after that point, which is not a problem since the company he works for should be paying for that software for him.

      --
      Karma: Positive. Mostly effected by cowbell.
    4. Re:Visual Studio is Free! by ak3ldama · · Score: 1

      that's the way it is at South Dakota State U. as well.

      --
      "but money is the God of Algiers & Mahomet their prophet." - Rich. O'Bryen June 8th 1786
  153. Doesn't matter by lagerbottom · · Score: 1

    Really it doesn't. I have used both (on linux), but get paid to use Java. They are similar languages. The object (as was once told to me) it to learn to think in code. Every language I have ever used has given me tools that extrapolate across all languages. As far as being in school goes...listen to the other posters who are saying "pick the one with the better teacher". All things being equal, being a Linux man, I would go with Java.

    --
    "He was a wise man who invented beer." - Plato
  154. Language is only a tool... by Anonymous Coward · · Score: 1, Insightful

    I am currently working in C# so biased towards it. I would say go for any language, but that's not the end of it. Use the language as a tool. There are several things you will need to learn in order to be a better programmer/software engineer/corporate person.
    1. You need to know OOP concepts.
    2. You need to know non-OOP concepts so as to know whether and when to use them.
    3. You need to know design patterns.
    4. You need to be able to come with solutions quickly because problems keep arising all the time in software development. In these cases, language will not matter. Your company may have already chosen a language or it may not have. Perhaps your solution will cause them to change the language.
    5. You need to be able to come up with good solution quickly. What is good will only be defined by the needs. ...
    Also, the choice of a language depends upon what you want to do. If you want to do corporate programming (following methodologies, creating audit trails, following procedures, and then doing programming) then either C# or Java is good for you. However, if you want to do programming for pleasure, C and C++ will be good.

    C++ is a world waiting to be explored. Java and C# are tame animals. Everyday you will find something new and unexpected in C++. Compared to C# or Java, C++ takes longer to master. This means that once you have climbed the mountain of C++, other languages will be minor obstacles.

  155. Re:Java./ CS ~= computer programming by catmistake · · Score: 1

    Why teach any programming? Is it because most universities have completely abandoned the fundamental roots of Computer Science, and have begun teaching computer programming instead? Some, even, as a slap in the face to both departments, have moved from Mathematics departments into Engineering departments. Computer Science is a subset of Math. "Software Engineering," a misnomer, is a product of marketing.... Just what do they think they are engineering??! Electrons? Magnetic Fields?

    For those that have forgotten what Computer Science is, here is a decent definition:

    [google.com]

    The systematic study of computing systems and computation. The body of knowledge resulting from this discipline contains theories for understanding computing systems and methods; design methodology, algorithms, and tools; methods for the testing of concepts; methods of analysis and verification; and knowledge representation and implementation.

    And lets also not forget that one does not need a computer to do real Computer Science (i.e. not computer programming).

  156. Doesn't matter by LeavenOfMalice · · Score: 1

    I used mainly Java and C++ in college but got a job in C# and was fluent with it in matter of weeks. Both are free to learn and develop with, considering you have Windows machine for C#. In the long run as long as you grasp OOP, it does not matter which one you choose.

  157. C# Is My Choice By Far by ghotiman · · Score: 0

    I have programmed in both Java and C#, but I primarly work in VB.NET. So you should know up front that I like working in Windows. I really like the .NET framework. I can say that using Visual Studio and the .NET framework has made writing code really fun. I would reccomend learning C# if all else is equal, and yes mono does seem to be really popular.

    Also, I think that we'll be seeing much more language development in C#. In my opinion, the LINQ (Language Integrated Query) project is the coolest language advancement since OOP. C#, ASP.NET, and the .NET framework just seem to be a little bit ahead of the Linux alternatives, and Visual Studio 2005 is an excellent IDE.

    Bottom line though, learn about Object Orient Programming and Design. Learning Patterns is an excellent way to see how to really use OOD. Check out the book Design Patterns: Elements of Reusable Object-Oriented Softwareby the "gang of four (gof)" listed under Erich Gamma.

    Good Luck, and stick with it, it gets easier, and a good IDE really helps.

    1. Re:C# Is My Choice By Far by xquark · · Score: 0, Troll

      The fact that you use and form of VB is enough to deminish any value your arguments may have had.

      --
      Arash Partow's Philosophy: Be a person who knows what they don't know, and not a person who doesn't know.
    2. Re:C# Is My Choice By Far by Ravatar · · Score: 1

      Learn how .NET works before making outrageous accusations like that. He said VB.NET,BIG difference from VB6 and lower.

        --- .NET languages (C#/VB.NET as well as more than 24 other languages)
        -- .NET Framework (which compiles the language into IL and eventually JITs it into machine code)
        - Operating System (which reads the machine code and carries out the instructions)

      All .NET languages compile to the same intermediate language (MSIL). There are only a few subtle differences between the languages themselves. VB.net is just about as powerful as C#, which is just about as powerful as C++.net

    3. Re:C# Is My Choice By Far by warb · · Score: 1

      "He said VB.NET,BIG difference from VB6 and lower"

          I see this a lot in MS on the web, i.e. "Our last product sucked, but this new one is great!"

    4. Re:C# Is My Choice By Far by dfjunior · · Score: 1

      I have programmed in both Java and C#
      Same here.

      Visual Studio and the .NET framework has made writing code really fun
      I agree completely; however, before I tried C# I felt that way about Java.
      YMMV

    5. Re:C# Is My Choice By Far by petermgreen · · Score: 1

      doesn't managed C++ have abilities to interact with normal C++ libs that the other .net languages lack? i thought that was the main reason for keeping C++ arround into .net!

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    6. Re:C# Is My Choice By Far by Ravatar · · Score: 1

      You're right, "C++.net" is really just "C++ with .NET Managed Extensions". It is designed to allow C++ developers access to the .NET framework, and even host their own runtime within a C++ app. Sorry if my statement confused anyone :D

  158. FWIW - cost isn't an issue by AlvySinger · · Score: 1

    If Java's sold as being free (as in beer, because of the Eclipse IDE), then there's not necessarily an immediate advantage over C#. There's Visual Studio Express editions of VB and C# which are similarly free. (And presumably your Uni will have this and/or the full version.)

    1. Re:FWIW - cost isn't an issue by Anonymous Coward · · Score: 0

      The difference as pointed out above is that with Eclipse you are getting a real product you could and would use for real work. With C# Express you are getting crippleware that is meant to give you a taste of what it might be like to use the real product (hint: find the Bill Gates Goes to Hell joke).

      As for VB: anybody (and I mean this with all sincerity) who attempts to use VB to teach software development or to develop non-trivial apps should be fired on the spot. If the instructor plans on using VB, that's a red flag to not take their class and possibly to consider another school.

    2. Re:FWIW - cost isn't an issue by AlvySinger · · Score: 1

      As for VB it's not that bad, surely. Anything can be taught badly and teaching C# or Java and then OO in terms of how the language uses it rather than how general OO is and how the language happens to implement stuff would be bad too.

      I wouldn't advocate it but there would be some advances (I'm not necessarily trolling here): it's a reasonable introduction to event based programming. Pre-dotnet syntax is a little inelegant (DIM is an anachronism at best). I'd agree it's not ideal because you'll start learning the IDE rather than the language.

      And in real-life it had its uses. I was involved in a quick two-week project in VB to create a simple management reporting tool because the Java developers quoted six months worth of effort for the same functionality. This isn't dissing Java but sometimes some developers cannot see the wood for the trees. Yes, they'd have an MVC based architecture with lots of abstraction but the VB version was very simple and maintainable. As the saying goes if you just have a hammer, every problem will look like a nail.

  159. Re:Java./ CS ~= computer programming by EMiniShark · · Score: 4, Funny

    "Computer Science is a subset of Math."

    You must be new here. Math is a subset of Computer Science.

  160. Except... by algodon · · Score: 1

    For the most part I agree, but if you ask me, being able to have a method that takes a variable amount of arguments is the *definition* of awkward...

    1. Re:Except... by RetroGeek · · Score: 1

      being able to have a method that takes a variable amount of arguments is the *definition* of awkward

      Amen to that.

      And anyway, you can do this in Java by using a Properties object, naming the keys "k0", "k1", "k2", and so on. The called method simply iterates through the keys until it hits a null, which is the end of the variable amount of arguments.

      --

      - - - - - - - - - - -
      I am a programmer. I am paid to produce syntax not grammar. Deal with it.
    2. Re:Except... by iabervon · · Score: 1

      It's actually just a method that takes as its last argument an array of Object, but it's more convenient to call now, because you can leave out the "new Object[] { ... }" part. The only variability allowed is the length of the array. This enables features like a type-safe printf that's convenient to use.

  161. Re:Java is more credible as a cross platform langu by DaemonTW · · Score: 2, Insightful
    Have you actually tried using Mono and C# at all? It's actually a lot more mature than you think, in fact I was shocked how mature it already is. The other thing is the development rate of it, a lot of work is being done to finish the .NET 2.0 stuff off and a lot of work is being completed on the developer. I'd consider it's current state as "production ready" on both Windows and Linux systems (and probably Sun, but I haven't tested it).

    I've already found it's ability to use libraries from multiple sources very helpful, I've used a DLL written in VS .NET 2003 that had no consideration for Linux yet it works perfectly. Mono also allows you to run Java code in the Mono environment but also allows you to use the .NET stuff (and other code you write in C# etc) in Java! That flexibility to me is very impressive, it's well worth checking out.

    As for the main topic, both C# and Java are just languages. Programming is a lot about knowing how to think about a problem rather than the actual syntax. If you can conceptualise how to tackle a problem in a programmatic way that's half the job of a programmer. Learning the language itself is a secondary task and you can pickup a working knowledge of most languages within a few days.

    Don't limit yourself to just one language to be an expert in, it'll limit your ability to be employed down the track. Looking at C# and Java however are good choices, if you know how to program in C you'll wonder why it took you so long!

    --
    www.techwatch.com.au
  162. JAVA OR C# by Anonymous Coward · · Score: 0

    The point is that you should learn Object Oriented thinking. Java and C# are just ways to express it. Once you learn one the other is VERY similar.

  163. ignore them both by Anonymous Coward · · Score: 0

    use fortran and just stfu! =p

  164. It really dosn't matter by autopr0n · · Score: 1

    The languages are almost exactly the same. If you know one, you basically know the other. Java with generics is more complicated right now, so I'd say you should learn that.

    Also, while there are C# implementations on Linux, you won't get Microsoft's custom API, while you will get Sun's standard API if you use java on Linux. So your Java programs will work both on Linux and Windows (and any other OS). That's the great strength of Java over C#

    So basically, the languages are the same, it only depends on what API you want to use, and Sun's JRE is much, much more portable. (you definitely won't be working with the mono libraries in your C# class)

    --
    autopr0n is like, down and stuff.
  165. Re:MOD ARTICLE TROLL by BarryNorton · · Score: 0, Troll

    You know what? Waste your mod points on this because I have no problem wasting my karma on it - this article is an insult to the readers. Get a life...

  166. Does it matter? by Bucc5062 · · Score: 1

    You are two years into an education, pick one and learn it. Better still, learn the basic concepts of programming. This way, it will not matter the langauge as you grow into a career. One day, you can join the opionated programing crowd with the triumphat shout "My is the best". I'll tell you a little secret though, they all suck, they are all great, they all serve a purpose. What is in today, may be out tomorrow, but if you hang your hat on just one with all your might then you better pray to God or the speghettti monster that it will stay around. My path? Ratfor>FORTRAN>RPG>COBOL>Transact>VB>ASP>What ever keeps me employed.

    Do not be a die-hard anything, but embrace the options that surround you. beyond that, remember to live life first.

    --
    Life is a great ride, the vehicle doesn't matter
  167. java, no question by TheGratefulNet · · Score: 1

    when I was out on my last job search (about a year ago) it was almost ALL java this and java that. I, being most c and c++ (mostly c) was at a disadvantage. even though java wasn't the best tool for the problem, it was almost always being used. AND ASKED FOR.

    not one single job that I looked at (networking and netmgt) was mickeysoft-based. no c# at all - but again, I did prefer the unix shops over peecee shops.

    a friend of mine even suggested I add the word 'java' to my resume JUST so that resumix (etc) would at least get a hit to my text. something like:

    "java: I consume several cups a day of this stuff"

    which is true - and I'm not lying about knowing the programming language, yet I don't get completely excluded from job searches, either ;)

    so learn it or drink it - but list it, at the very least. (half serious)

    --

    --
    "It is now safe to switch off your computer."
  168. How about Chinese? by gomel · · Score: 1

    Or Hindu?

    Better learn the language of the country where your job goes.

    --
    Fight Frist Psoting!
    Browse Slashdot with 'Newest First'!
  169. Re:Java is more credible as a cross platform langu by jsight · · Score: 1

    In contrast, Java is currently a closed platform with Sun's fingers firmly around its neck.


    Not really... GNU Classpath and friends are much more mature than the Mono runtime at this point.
  170. Toolchains by The+OPTiCIAN · · Score: 1

    One thing you might want to consider is how much ease/trouble you have setting up toolchains. I have some mates who have had difficulty getting C# up and running on linux. Try setting them both up and getting hello world programs running and see how you go with that. Then try creating a simple UI with each, or deploying to a webserver (ie: tomcat) and writing a hello world there. I'm not familiar with C# myself but have spoken to friends who have tried to get up and running under debian (some months ago now). I suspect you'll have a better time of java.

    --


    Believe with me, my saplings.
  171. Re:C# by Anonymous Coward · · Score: 1, Interesting

    The company I work for had a hell of a time hiring a C# developer with any experience.

    Not to mention all the good programmers who had a hell of time getting hired as C# developers because they didn't have any experience in it yet. You'd think that these two issues would connect up, but evidently not.

  172. Re:Java./ CS ~= computer programming by catmistake · · Score: 1

    OMG
    You could be right!
    er... I mean... Right could be you! (I learn fast, no?)

  173. Languages are just tools by dustinbarbour · · Score: 1

    In all reality, it matters not what language you choose. Your goal should be to understand the concepts of programming and to think like a programmer. The languages in use today are just tools to let you manipulate 1s and 0s. Better to understand the algorithms than syntax. Syntax changes and there are a million references for each language. ALogorithms generally don't change. Employers like thinkers... not "Java guys" or "C# guys." Start thinking on a broader scale and don't be tied into specific languages 'cause, truth be told, the language something is implemented in rarely truly matters.

  174. Biased Blvd. by slashdot.freak · · Score: 1

    As we stroll down Biased Blvd. let us remember which crowd you are addressing...

    That said, let's drive through. Java is a far more mature language for achieving complex work, with enough source code examples and cookbooks to fill those Jolt Cola and Cheeto's nights for longer than a human animal can stay awake. The free (as in beer) IDE's such as Eclipse are easy to use and offer plugins galore. Java can suffer from some implementations in that most coders are focused on implementing the application's business rules and managing data sets, rather than the user interface. Java is the closest language one can get to in the "code once - run anywhere" metaphor. Java supports just about any design pattern or framework you want to throw at it. Java may be the most popular and business prolific language in use today, and is driven by Sun Microsystems.

    C# will currently only run on M$ platforms, which in my unapologetic opinion, does not stand up to the reliability and sustainability of *nix. C# can produce some "glitsyer" UI's and it does support some decent back end work. To my knowledge (I gave up M$ Enterprise Architect Virtual Studio a couple years ago) C# is entirely supported by the M$ framework and does not lend itself to the same scalable applications that Java cleanly supports. C# is driven by M$ and in the business world has substantially smaller pockets of acceptance.

    Oh, and C# is the work of Satan!

    Good luck!

  175. From the technical standpoint ... by Trikoloko · · Score: 1

    And disregarding everything else, I would pick Java. I have been programming in Java for several years, and now I am programming in C#, since the company that I work for is a MS shop. In terms of syntax they are very similar: if you learn one of them *well*, you can pick the other in a day or two; it will only take time to get familiar with the class libraries. C# is not a bad language, but in terms of language design Java feels better. Take the UI part for example: some argue that Swing is slow, but it is a real joy to use: Layout Managers, Decorators (for borders), Pluggable Look and Feel, among others. Windows Forms feel as just a thin layer over the old MS GUI stuff: I can write a full blown application in swing without specifying widget sizes; try to do that in WinForms. Version 2.0 partially addresses those issues, but the solution just seems to be a hack: instead of properly implementing layout managers, they just welded them to the Panel classes, and they just provide two layout options.

    --
    My cellphone ringtone is a ring tone.
  176. The language is not the issue by stefaanh · · Score: 1

    Like most of the people reply, I would pick Java, because of the maturity of the community and the value of the open source products built with it. The most valuable thing about Java is that you will have access to a vast amount of quality code, OO frameworks, design patterns and different project organisation schemes. This exposure to the work of highly skilled professionals will be your benefit and your advantage if you pick Java. I don't say that it does not exist for C#, only I haven't seen a lot, unless it were ports of Java-first projects, or look-a-likes.
    If you're smart, you will detect the discipline behind a project, and learn that too.
    Besides Java, any OO language - used for a lot of active open source projects - is a valid choice if your goal is learning. As some of the posters pointed out, jumping from one OO language to another surely isn't the hardest part of the job.

    --
    --------
    * Sigh *
  177. I don't want to flame java... by Savage-Rabbit · · Score: 1

    C# was invented for one reason: locking sytems into a windows deployment. There are some attempts to port C#, but those efforts don't have 10% of the current momentum that java has from a large community of both corporations and volunteer open source contributors.

    ... but I hope that the C#/.Net porting effort gains momentum. Firstly because it will might acutally make at least some applications applications targeted at Microsoft Windows and implemented in C# portable to other OS'es which in turn will hurt the Microsoft monopoly. Secondly I hope .NET will take off on non Microsoft platforms because despite all it's advantages Java needs competition. Thirdly C# really isn't all that crappy a language to write in, especially if you resist the temptation of using Microsofts development tools although don't mind using their compiler. Of course if the Open source community would come up with a third non proprietary cross platform development environment to truly compete with .NET and Java in the way the LINUX/Apache combo competes with (and hurts the sales of) the Windows 2003/Microsoft IIS....

    --
    Only to idiots, are orders laws.
    -- Henning von Tresckow
  178. Java is losing momentum... by dstj · · Score: 1

    According to this article in business week, Java is losing momentum.

    I teach Object Oriented Programming to engineering students in a university here and our class is still taught using C++. What was said in a former post about learning any OO language will enable you to easily cross over to other languages is true. But, from my experience as a teacher, students will actually only go from hard languages to easier languages. The C++ syntax is such a bitch sometimes that I can't really picture any student going from Java or C# to C++. But, then again, I don't believe any of my students read ./

    So my advice to you is this: read the article, then choose either one, and get a good book for the other.

  179. Computer Science Satanism 101... by Anonymous Coward · · Score: 0

    Let's get the basics down;
    Sun is Evil, Microsoft is the Devil.
    C# is Java for Windows, Windows is Very Evil.
    Both C# and Java are Pure Evil.

    The Lesser Evil, I guess, would be Java.

    Please point out to your professors that you shouldn't be taking courses on programming languages, but programming paradigms. I learnt three languages my first year, and, in fact, I learnt Ruby just yesterday. Sure, mastering the language can take a few years (or a lifetime, depending on the degree of mastery), but once you know the basics of the paradigm, you can learn the conventions of a language in an afternoon.

  180. Mono is DOA, dude by broward · · Score: 1
    1. Re:Mono is DOA, dude by Ravatar · · Score: 1

      What?

      Novell has adopted it as their .NET runtime, and there was a huge update regarding the future of mono only a month ago, which can be found here. I won't even get started on how Mono 1.1.10 was released only a month and a half ago.

  181. Idiotic by Anonymous Coward · · Score: 0

    Nobody has to check "if an integer is really an int" in Java because it is strongly typed. It's either an integer or it is not. parseInt is for strings that may or may not be integers.

  182. From a professional... by GWBasic · · Score: 1
    Assuming that the professor and assignments are the same no matter what language you choose...

    From the viewpoint of padding your resume, I think C#/.Net is more likely to land you a job.

    From the viewpoint of eligance, there are things that C# automates, such as events, iterators, and GUI programming. Choosing Java will allow you to get a better idea of how things work "under the hood".

    From the viewpoint of a former student, get the broadest perspective possible. You should learn to be flexible in your choice of language. Because both languages are similar, choose the language that you're least likely to use in the long-term.

    ... Thus, unless you're trying to pad your resume, choose Java while you're learning programming and C# after you know more software engineering skills.

  183. Re:Java.. by MikaelC · · Score: 2, Informative

    Web services are excellent supported in C# (much better than anything I know of in Java), and according to the Mono docs they are supported there as well. From http://www.mono-project.com/Webservices_and_GtkSha rp:

    using System;
    using System.Web;
    using System.Web.Services;

    namespace GtkWebservice
    {
            [WebService (Description="Our first web service")]
            public class RemoteWebService : System.Web.Services.WebService
            {
                    [WebMethod (Description="Adds two numbers")]
                    public int Add (int firstNumber, int secondNumber)
                    {
                            return firstNumber + secondNumber;
                    }
            }
    }


    These lines of code will be able to generate all the plumming neccesary to expose a web service (automagically creating WSDL files and such).

    Consuming services is also extremely easy. See http://www.mono-project.com/Web_Services for an example of creating a proxy class from a WSDL file.

  184. From a practical standpoint... by Dan+Posluns · · Score: 1

    ... Java may be the exclusive language used on a wider variety of platforms, and opens up those platforms to you for development.

    Conversely, while C# might be an asset to you for some employers, I imagine that you will rarely be in a situation where C++ won't serve just as well.

    Dan.

  185. Learn jerlthon sharp by snakecoder · · Score: 1


    This perl based python interpreter imbedded in a java environment with C# syntax is all the rage.

    After that, learn jerlthon sharp on rails with AJAX. You'll be the darling of any MBA

    --
    -Nuke the moon
  186. It's good advice... by Da+VinMan · · Score: 4, Interesting

    I've got 8+ years MS tools based experience and 2+ years with Java (and some Python and Ruby thrown in for good measure), and I would totally agree. Neither C# or Java is perfect. They're both strongly typed, proprietary, virtual machine environments. Neither one is true open source (despite the rich set of open source applications developing around both). And neither one is appreciably better or more powerful than the other across the board.

    The question comes down to economics (which one do you know you'll be able to get a job using) and preference (which tool set do you like better Visual Studio 2003 or {Eclipse | JDeveloper | JBuilder | IntelliJ | NetBeans | WSAD | ?}). You have to go with the one that meets those two criteria. Neither choice is bad and no one gets fired for choosing either of the two.

    Oh, and fer-cryin-out-loud: don't choose something because you think it will make someone else happy or make you seem more "uber geeky" or whatever. Just do it for you and the rest will follow. And whatever you may think now, you are NOT married to this choice. That "wall" that everyone seems to imagine between Java vs. .NET is not a real technical barrier; just a cultural one.

    --
    Please mod this post only if you think others should/n't read this. I have enough ego^H^H^Hkarma. Thanks!
  187. Java SUCKS! by Anonymous Coward · · Score: 0

    Good Grief! Holy sucky programming languages, Batman! What a choice...

  188. the language is not the IDE by eneville · · Score: 1

    Why are so many people suggesting Java because of eclipse, or c# because of visual studio. If you are rating the language on the IDE then you obviously don't know the language adequately.

    Learn to write in Java or C# using a no-thrills plain text editor, such as emacs or nvi (or gvim). Also, get a few books on the subject, there's plenty on Amazon, they're really worth a hundred lecture hours.

    It's not odd that you are stuck on a choice between c# and java, they're very similar. I do prefer Java, just because of the way threads are handled, you simply implement Runnable, and make the class a new Thread object, and call .start()... in c# you make a method into the thread... It's a little different to think about since you can make more than one thread object of a single class, perhaps this can lead to bad design since you will need to lock a single member object that is common to the class as one thread may clobber another.

  189. which language? by belmolis · · Score: 5, Funny

    If all the complaints here about outsourcing are correct, rather than Java or C# you should learn Hindi.

    1. Re:which language? by The+Cydonian · · Score: 1

      At least you got the name of the language right, and didn't call it "Hindu" or "Indian" or some shit like that. :-)

  190. Learn both by BigBadBus · · Score: 1
    Heres a suggestion: would it be possible to learn both? If so, you could then post the pros and cons of both languages.

    I've held off learning C#, mainly because I felt it was a M$ rip-off of Java. However, it is very easy to learn. Java feels like c++ does to C; that it has had lots of stuff bolted on over the years. I use c#/java to write guis mainly, and, with .net studio, c# is a heck of a lot easier to learn and use, especially if you've used visual c++.

    So, I suppose it depends on your background.!

  191. Re:Java is more credible as a cross platform langu by jcr · · Score: 1

    If C# was invented for that one reason, why did MS release Rotor for FreeBSD?

    To check off a box in a brochure, of course. It's not like anyone deploying an app on BSD would be using C#.

    -jcr

    --
    The only title of honor that a tyrant can grant is "Enemy of the State."
  192. Java - Duh.-OUCH! by Anonymous Coward · · Score: 0

    "I would second this, only in this respect. Microsoft included a lot of "syntactic sugar" in C#. This is a much maligned phrase as I think there is harm that comes with syntactic sugar. It may make things look prettier, take less characters, etc. but it tends to make code less verbose. And that's one of the HUGE strengths of Java. It's very verbose."

    The Carpel Tunnel Industry recommends Java.

    1. Re:Java - Duh.-OUCH! by TrekCycling · · Score: 1

      #1 - Any Java IDE worth anything cuts down on your typing by a large percentage.

      #2 - Carpal Tunnel was recently debunked as being directly directed to keyboarding, wasn't it?

      #3 - As I understand it, the mouse is one of the biggest causes of carpal tunnel, especially the context switch from keyboard to mouse.

  193. Neither... by drlloyd11 · · Score: 1

    They dont prepare you well for development, but are more suited for webapps and little servelets. C or C++ would be much better.
        Pretty much, I dont consider someone with out C experience to be a developer.

  194. Re:Neither! by Anonymous Coward · · Score: 0

    Yeah C# rules! I love being tied in to Microsofts OS!!!

    And yes I know about Mono but I also know that Novell has cut much of their Mono staff recently and is planning on continuing to do so in the future in the hopes that Mono will be carried on by the Open Source community alone. Have fun with that. This isn't even to mention the simple fact that Mono is nowhere close to mature, stable or complete. Also, Java has tens of thousands more open source libraries that have been extremely well tested.

    I love the people that bash Microsoft constantly and then go ahead and tie themselves into a technology that is completely governed by them.

  195. a Contrarian opinion: Scheme, Smalltalk, Ada95 by david.emery · · Score: 1

    If we presume you know C pretty well, I'd recommend Something Completely Different, such as Scheme, Smalltalk or Ada95. The reason is that too many similar languages don't really add that much to your underlying knowledge. As has been pointed out, both Java and C# are similar Object-Oriented languages, and aren't all that different from C++, if you know that. Scheme, or any of the Lisp dialects provide a substantially different programming paradigm.

    Another alternative, although Politically Incorrect, is Ada95. Three things make Ada95 significantly different: First it's strongly typed, and there are substantial advantages to learning how to make use of type models. Second, Ada provides a separation of program modularity (via packages) from class heirarchy, and it's interesting to see how this separation can be used. Third, Ada95 provides a very rich set of facilities for concurrency, and learning good concurrent programming is a very valuable skill.

    Smalltalk provides yet another view of OO programming, and it's definitely worth concentrating on the Model-View-Controller paradigm.

    But it all boils down to the conflict between education and training. Both Java and C# are good for near-term employment prospects. But if you're after education, learning to think in another programming paradigm is well worth your time in the long run. Languages come and go, but programming skills stay. And, by learning a substantially different language now, you'll increase your ability to learn the Next Big Thing language when it arrives.

    Oh, and as someone who has interviewed a fair number of software engineers, I -never- hire someone who knows only 1 language, and in that regard I do not "give credit" for C and C++ as sufficiently different. (Way too many people code C++ as bad C...) In some cases, I've sent people back to school to learn another language, because they had talent that needed additional education. But then, I don't hire people solely for "cranking out code," even though that seems to be the pattern in much of the industry these days. (Bad coders => bad code => bad software, and the kinds of things I work on value quality much more than time-to-market, because people's lives tend to depend on them... Your job may vary.)

            dave

  196. take both by Anonymous Coward · · Score: 0

    learn both.
    (hey, if you expect only one for answer, you should've written: C# XOR Java)

  197. Re:More important question!!! Why major in C.S. by Anonymous Coward · · Score: 0

    Wow
    I guess the 90+ Java job openings my main customer has is just a fad...

  198. if you want to write Linux desktop apps... by penguin-collective · · Score: 1

    If you want to write Linux desktop apps, C# is the obvious choice between those two. Beagle, F-Stop, and a number of other important Gnome apps are written in it. C# has full bindings to Gtk+, has a full-features open source implementation (Mono), and it's also a well-designed programming language.

    If you know how to program in C#, you essentially will know how to program in Java anyway--Java is pretty much a subset of C#--so, in terms of education, you don't lose anything.

  199. Java by Anonymous Coward · · Score: 0

    Java

  200. C# by kurtkilgor · · Score: 1

    I personally prefer C#, at least as a toy language, for the following reasons:
    *It has some features that make it more compact, like operator overloading.
    *It is integrated into windows so you can make GUIs that look like other applications
    *It is faster
    *Visual studio is a better IDE than many of the Java ones
    *All microsoft development tools are free to students.

    Now all of these are explicitly whimsical arguments. In the real world, none of this matters, because the language you use in a given project will almost never be determined by pure aesthetics. But if you are going to spend a semester working with a language you never use again, I would rather spend it with C# than Java. And, as many have already said, they are so similar that you can pick up the other very quickly.

  201. Java is a PITA on Linux by penguin-collective · · Score: 1

    The advantage of Java in my mind is that it can be used in a Linux environment

    Java's integration into the Linux environment is lousy: getting at Linux kernel or desktop APIs is a lot of work. Furthermore, the only really usable Java implementations are proprietary and don't even ship on many Linux systems.

    If the choice comes down to Java and C#, then C# is clearly the better choice in my opinion for anybody who cares about Linux programming: Mono is an open source C# implementation that runs on all major Linux distributions and provides full access to Linux and Gnome APIs.

    If other languages are an option, then I'd suggest getting started with Python--it is probably a better language for learning programming than either Java or C#.

    1. Re:Java is a PITA on Linux by bckrispi · · Score: 1
      Java's integration into the Linux environment is lousy: getting at Linux kernel or desktop APIs is a lot of work.

      Trying to use Java to do native desktop or kernel development on *any* OS is like using a hammer to bang in a screw: It's the wrong tool for the wrong job.

      Furthermore, the only really usable Java implementations are proprietary and don't even ship on many Linux systems.

      Pardon my vlugarity, but "Big Fucking Deal". How hard is it to grab Sun's JDK off of sun and install it yourself? Two mouse clicks and an `rpm -i`.

      --
      Xenon, where's my money? -Borno
  202. Learn Both by Anonymous Coward · · Score: 0

    Companies tend to use either one or the other, so it only matters what they use at the company you work at. Fundamentally, either one is only commercially useful for dynamic generation of web pages with slight differences between the libraries. Although desktop application development is supported in both langugages, it is not common to use either language for application development. For application development, I'd have to say that C++ (and Delphi to a lesser extent) are probably the best choices from a commercial perspective. Try not to be too infantile in your decision, because either Windows or Linux is useful commercially, although college kids tend to talk negatively about Microsoft, because they are poor and want everything for free. Once you get a job though, you'll want to get paid for your work too and then what ever tool is most productive for you will make you the most money. Visual Studio is a much better IDE than anything on Java, but you get what you pay for. If you want to be cheap and use tools that are created for free than Java is for you. If you want to use the latest and greatest, than .NET is probably a better choice, since Microsoft makes most of the enhancements in XML and such, because they hirer whoever's the best in their field for a project and like I said before you get better tools from people who spend more time and money developing them. From a commercial perspective .NET allowed companies to leverage the skill sets that people have in whatever language they used to program in, rather than forcing them to use only 1 language. This allowed programmers to work together for a common cause, rather than segrating them. Microsoft is also pretty responsive about fixing problems. Who knows where you'll be with java considering the financial health of Sun: http://finance.yahoo.com/q/bc?s=SUNW&t=5y. I am very concerned about putting time and money into Java when Sun is in danger of going under. I have the same concerns about putting time into Delphi, altough Borland manages to keep cranking out new updates, since there is so many production databases done in Delphi. I suppose there is also IBM who is doing Eclipse, so maybe Java is safe. Java on the other hand is more flexible. Until MS starts integrating with highend servers (which they anounced recently), Java seems to be the best HTML generator to setup on a highend server. Therefore you see companies like Ebay using Java for their website. Perhaps with Novell behind Mono (cross-platform port of .NET) we will soon have a commerically viable method for using .NET on Linux. In general if Java adds a new feature, than Microsoft adds it and vice versa. Being tied to a platform is not a concern as most people seem to think, since you are dynamically generating web pages. I find that clients in warehouses seem to prefer Windows and clients in more technical IT fields seem to prefer Linux, if they have a large enough IT staff. Either way, your application will be platform neutral (depending on how you formulate your HTML). I write C# commercially and did Java in the past. I just got a new Java book, though, because I like to stay educated. Anyway in the long term you should learn both, but choose which ever one now that you have the best access too. Java might be easier if you don't have access to an MSDN subscription, which will let you get all the essentials like Visual Studio, SQL Server, and Reporting Services. Altough I guess MS has some free express versions.

  203. Re:C++ should be FIRST, Java should be second, the by david.emery · · Score: 1

    Strongly disagree. C++ last. Why? The language is poorly designed and poorly defined. You're much better off learning a language where you can argue about correctness of programs, i.e. "If this is legal code in the langage, then I -know- what it will do", than worrying about "Oh, what will this compiler or that compiler do with this code sniglet." And C++ is very unforgiving of mistakes. It doesn't catch much at compile-time, so you spend much more time in runtime debugging (which is always a bad thing).

    Much better to learn good techniques early with tool support, and then if you want to juggle chainsaws, you'll at least have a solid grounding in the concepts.

            dave

  204. Target Platform? by miyako · · Score: 1

    A bit of a disclaimer, I've done much more development with Java than with C#. That said, I would recommend Java primarily because it's much more versetile. C# may be useful if your using ASP.NET (as much as I loath to admit it, there are some things I, as a PHP developer, really like about ASP.NET/C#), but for Java you can do web development with JSP, plus you're much more likely to find devices like cell phones, pdas, etc. that run Java.
    All that said, as other posters have pointed out- the real goal is to begin to understand Object Oriented programming, GUI development and, if you are at DeVry, it will be your first actual programming class. Learn the ideas behind these and you should be able to pick up either language fairly easily.

    --
    Famous Last Words: "hmm...wikipedia says it's edible"
  205. Re:Java is more credible as a cross platform langu by penguin-collective · · Score: 1

    Java on the other hand is a cross platform environment supported by multiple competing vendors.

    All conforming Java implementations are licensed derivatives of Sun's implementation, so there is really only one implementation.

    It is useful that that one implementation has been ported to many platforms, but because Sun controls it, if it hasn't been ported to a platform you need, you're stuck. Also, platform integration (kernel APIs, system libraries, Gnome desktop) is very hard to achieve with Java.

    There are some attempts to port C#, but those efforts don't have 10% of the current momentum that java has from a large community of both corporations and volunteer open source contributors.

    Quite to the contrary: Mono is more and more becoming an integral part of the Gnome desktop; Java, on the other hand, is essentially dead on the Linux desktop.

  206. Re:Java is more credible as a cross platform langu by duffahtolla · · Score: 1
    My 2 cents:

    Why did it bother to get C# implemented as an ECMA standard?

    Government work requires that the language used is a standardized one.

    Why does it help, instead of try and crush Mono?

    In the eyes of MS, Mono is a toy to be tolerated until C# is entrenched in the market place and has a clear numerical superiority over Java. They can always kill it later.

    Why does the API include Oracle functionality?

    Because Oracle is a staple in the bussiness IT diet. Not to include it would hamper their efforts to replace Java.

  207. Java but by Anonymous Coward · · Score: 0

    I would say Java. As far as learning OOP, it doesn't matter too much which language you use. C# and Java in particular will be very similar because they are both based on C syntax. I have two major issues with C#: 1) you will have to learn a lot of MS specific cruft right off the bat. This will have a severe impact on delivering good OOP skills when you are most trainable (before yuo get bad habits). Java is quite "pure" in that way. 2) MS skills have a very short (2-3 year) shelf life. Maybe C# is the exception but I would look at some of MS's historical technologies before betting 8 months of your life on this tech.

    The "but" is what are employers in your area hiring for. If you are just looking for what will get you a job now and the employers in your area are looking for more C# than Java, you might want to go for C#. The flip side of that is that you would be lockng yourself into working for an MS shop and all that entails. Even if it is slightly harder to find a LAMP/Java shop, you might be happier working there. As a bonus, you could then spend your time and tuition gaining new skills instead of replacing the old ones.

  208. Look at other criteria by Relgar · · Score: 1

    Using language as the sole or even main criteria probably isn't as useful as one might think.

    FYI my recent background, I spent two years doing C# (.NET 1.1), and the two years prior to that in Java (1.4), and some Java 1.5 most recently. In all cases it's mostly server-side stuff (messaging, database, etc.) - can't stand the vagarities of UI subjectiveness.

    It's probably more interesting what industry you're targeting. e.g. I see a lot more Java used for heavy duty stuff than C#, in financial software; but .NET has a better enforced security/licensing framework if you're selling software components.

    I've also noticed that Java has more interesting 3rd party stuff (due to maturity? popularity?) that you can learn good ideas from or leverage: e.g. Hibernate, all of Apache's stuff, JBoss, Spring, Struts, etc. A lot of these are (being?) ported over to the .NET world, but some haven't. Also, Java's maturity means googling may be a little more fruitful.

    From a tools perspective, I must regretfully insist that Eclipse still has the edge over VS. Even if I accepted that VS2005 finally caught up last month when it was released (I haven't explored it thoroughly), Eclipse's plugin architecture and maturity mean that there's a lot of very useful add-ons for Eclipse.

    For UI, I'd have to give it to C# (on Windows). People have expectations of what UI's supposed to be like, and that's Windows. C#'s UI API closely aligns with Win32, whereas Java's Swing... SWT looks nice, never used it, no idea how much work it is.

    If language must be discussed...

    Java has the "feel" of a precise, theoretically correct, and somewhat obstinate authour. Some things are tedious to do, but there's an overall consistency - there's a certain exacting style, and if it's inconvenient, that's a small price for consistency/"purity".

    C#, OTOH, has a feel of pragmatism, and occasionally a little bit of hurry (or parallel development without enough collaboration?). Sometimes the APIs aren't quite consistent (I like comparing C# collections to Java collections for this), and there are a lot of convenience features/concessions. C#'s more modern, so there's built-in support for commonly accepted notions like Properties, Events, and function pointers.

    In an effort to be useful, I'll try to make some recommendations. Given the contextual void, these recommendations are suspect, but anyway...

    For strictly academic, go Java, then C#. Java's maturity means a larger knowledge base, and Java will probably teach you better style, and you'll appreciate the conveniences that C# gives whilst having learned to avoid abusing it. It's like knowing some of the pain of memory allocation in C to appreciate a GC, and understand memory well enough to know the GC's limitations.

    For front-end heavy apps, or pretty apps, or very custom apps, go C# (on Windows). C# generates better looking UIs, and if you're going to do a lot of custom work, you may as well do it in a convenient language. VS's excellent support for "drag/drop of components" style of development is very useful here.

    For server-side heavy software or bigger projects, go Java. In my experience, I've found the less UI or business flow, and the more processing-centric the problem, the better I can leverage libraries, and the more net value I get, despite the overhead cost of using other people's software. Bigger projects also means you might want to buy/get more software targeted at development or deployment, for which Java has a larger # of players (e.g. development tools, middleware platforms, etc.).

    For cross-platform, go Java. I'm not familiar with Mono, but I think .NET cross-platform is a mirage. IIRC, Mono doesn't support the same UI classes as C#/Windows. Also IIRC, for some classes, like System.GC, some methods are part of the standardized spec, some aren't (q.v. .NET Standard Library Annotated Reference?). Certainly you can transfer lan

  209. Go to a School with a Clue by Anonymous Coward · · Score: 0

    Quit DeVry. Both languages suck ass. Any school that requires that you study one or the other likewise sucks ass.

  210. The bigger picture by Anonymous Coward · · Score: 0

    I think you shouldn't be worried about learning either Java or C#, what should really concern you is if you are going to keep wasting your time at Devry or go to a real school.

  211. It's not temporarily free, it's really free by neile · · Score: 1

    The language on the website is slightly confusing. If you download an express edition it doesn't stop working in 365 days. It just means that a year from now Microsoft *may* stop offering it for free download.

    Think of it as "if you download within the next year, it's absolutely free!".

    Neil

  212. Re:C# by Anonymous Coward · · Score: 0

    For many important reasons, I would agree that C#/.NET is the better choice. I know both Java and C# and if I had to learn just one, it would be C# without any question whatsoever. Yes, the languages are generally comparable. But as someone who has really worked deeply in both (and I think many respondents really haven't done much C#), the honest truth, IMO is that Microsoft obtained significant second-mover advantages. In both technical and commercial ways, the C#/.NET platform really crushes Java.

    For one thing, C# is significantly faster. Microsoft's JIT compiler is better and they are really pretty aggressive about improving performance in all aspects of the framework. This really is a big deal in all kinds of applications; time and again I've seen teams choose C++ over Java because of performance, where C# would now be a viable choice for them. If you develop on Microsoft platforms (and sooner or later you probably will), .NET has good integration with many things you need to use, from SQL Server to Direct X on XP. If you're making applications that you want to look world-class, you need to use the native toolsets (read the style guidelines for Windows Vista, for example. You don't see many translucent applications getting built in Java). The Microsoft toolchain is excellent - on my last project I used both Eclipse and Visual Studio 2005 and VS2005 really dominated. .NET is a great framework, and MS looks to be very committed to living in it for a long time (unlike COM, which blew).

    On the commercial side, I've found that .NET jobs pay better and are in greater demand. The world is full of Java people - they churned them out during the dot-com era. While some are really great, a lot of them aren't and you don't want to be grouped in with the average ones. If you do learn Java, try to learn C++ too so you can put both on a resume; it shows a recruiter that you're more competitive. Microsoft's developer support is excellent, which detractors often overlook. They train you, invite you to events, give you software, and generally work very hard to make you competitive.

    On the down sides: While there is Mono, the cutting edge of .NET is definitely firmly on Windows, so it's not nearly the cross-platform language that Java is. On Linux, C# is really a second-tier language.

    I think many Open Source partisans dismiss Microsoft technologies. That's not a good idea; it really hurts the state of Open Source - play with Eclipse and Visual Studio 2005 for a while and you'll really wish the Eclipse people spent more time in Visual Studio! Miguel de Icaza was right to plunge into .NET; there's a lot of very good stuff there.

  213. Both are equally bad... by managedcode · · Score: 1

    .....and as student you should master C++(ANSI) not Microshit's managed C++.

  214. Definitely know your expectations. by Anonymous Coward · · Score: 0

    "This is of course coming from a recently graduated CS major, so take it for what it's worth."

    OK..."ShatteredDream".

  215. Re:Diehard Linux user? by Eideewt · · Score: 1

    Is this just dumb, or is it the most ineffective troll ever?

  216. Java Now Whatever you Need Later by Bad+Mamba+Jamba · · Score: 1
    I've been developing software for well over 25 years now. I started with basic, moved to assembler, notched up to Pascal, went to C, then C++, then Java, now C#. I've learned a smattering of other languages along the way like Ruby, Perl, Prolog, Lisp, and Ada. So you might say I've seen some different stuff.

    The important thing while you're in school is to learn the concepts. No matter which route you take the concepts will be more or less portable across multiple languages. The syntax and mechanics of the language may be a little different but the ideas remain the same.

    All of these languages have different strengths and weaknesses. A good developer considers what his program needs to do and selects a language that will make his job easiest and produce code that meets requirements.

    This all said I highly recommend Java in this case based on your comments. Main reason is it's Linux friendly. C# has the Novel port but I think the amount of community support you'd get will be minimal if you get into trouble.

    Second reason is Java is a little simpler. The differences between C# and Java fromm a language syntax standpoint are a pretty fine line but C# makes some more C++ like functionality available that makes it a lot easier to hang yourself.

    Some might argue another reason is Java is also free. However you can download a 1 year version of Visual C# express right now for free (which easily covers your coursework) and the basic .NET tools (compiler etc) are also free if you don't want a fancy IDE. So I don't consider price a viable argument for your current situation if you just take the course and quit programming. Long haul Java is a cheaper choice and Eclipse is pretty darn cool if you're going to program beyond your coursework.

    My two cents.

  217. Hitting the preview button... by hackwrench · · Score: 1

    Before you hit that preview button, you may want to license Patent 6,708,221. It's already too late for me.

  218. Re:Java./ CS ~= computer programming by BorgCopyeditor · · Score: 1

    ( could ( be right 'you ) ) or something.

    --
    Shop as usual. And avoid panic buying.
  219. Re:C++ should be FIRST, Java should be second, the by Ravatar · · Score: 1

    I agree completely.

    .NET for example, has a robust, fully developed design guideline to ensure that library developers are writing compatible code that extends the framework.

    There is even a utility called FXCop available that can scan through your solution to make sure that your code is complying with the guidelines. Visual Studio 2005 has this functionality builtin by default.

  220. Java by dcpatton · · Score: 1

    C# is a useless copy of Java. It is disgusting how MS just changed the names and capitalization of Java. What a joke. You will benefit by using Java due to it's huge codebase and users. C# will die as soon as MS abandons it.

  221. Re:C# by PPGMD · · Score: 1
    The company I work for had a hell of a time hiring a C# developer with any experience.

    I had quite the opposite recently when I had to do interviews for a new programmer. About 75% of our resumes were way too overqualified, and most had extensive C# experience.

  222. Java by wikinerd · · Score: 1

    I recommend Java, it is not M$-centric and is more mature than C#. But no matter what OOP language you learn, I think every programmer must have some basic understanding of C and Assembly (you don't know what you really do when you program a computer unless you have seen C and Assembly in action). Other interesting languages are LISP or Scheme, Perl, PHP, PROLOG, and Python. and, by the way, VB is a RAD, not a programming language. I believe the main working languages for GNU+Linux users should be Perl, PHP, Python, C, C++, Java , with that order (switch PHP for C++ if you do systems programming).

  223. Java by rpsoucy · · Score: 1

    When it comes down to it, Java is a much better teaching tool. Knowning Java today is equilivant to knowing C ten years ago. It doesn't take anyone long to see that most journals, text books, etc. use Java as a language that everyone is assumed to know. As an example Tannumbuam recently updated his "Computer Organization" to use Java for examples. Dr. Dobbs frequently seems to use Java unless talking about a specific programming language, etc.

    The nice part about learning Java is that, assuming you have a decent instructor, you'll learn how to think in terms of objects because in Java you have no choice. Other languages, even though they say they're object oriented, tend to hide details just enough to let people slide through without learning oop at all. Sure Python is a great object oriented language, but you can use it without ever being exposed to objects and classes. In Java, everything is very literal, and there is little guess work.

    Implimentation wise, Java runs on everything. You can use Java for writing servers, applications, dynamic websites, and there are even a nice assortment of microcontrolers like the JStamp that use Java bytecode dirrectly. For this reason most engineers today learn Java. .NET is nice and all, but Mono is far from being on par with the Micosoft CRE. .NET ties you to Microsoft, and it is noticablly slower than Java in a lot of applications. .NET limits you to Vista, and that's betting a lot on a new OS release by Microsoft that many people don't seem to be in a hurry to adopt. Don't forget that while threre are already java runtimes for GNU systems, GCC supports native compilation of Java, and projects like GNU Classpath are much further along than Mono.

    After you know Java, C++, C#, etc. will come to you very easilly. The same can't be said about learning C# which teaches little about programming. If Sun continues on their current path, Java might be opened up soon.

  224. Windows Help Files and MS Word Documents by iion_tichy · · Score: 1

    Last time I looked (a while ago, but still), that was how the documentation of C# came along. Java documentation is HTML and PDF.

    You choose...

  225. Java by drgonzo59 · · Score: 1
    Learn java. They are both object-oriented but with java it is easier to get started, there is more information and literature on Java and there are more examples and people who you can ask. Java will run well on any platform (no need to install Windows just for .NET or no need to install Mono or wait until Mono might catch up with the newest version of .NET.

    Grab the JDK 1.5, grab a book or a tutorial, and install a good IDE (Netbeans, Eclipse) or just use a plain old text editor to keep it simple and you are set.

  226. Go with the interesting jobs by aminorex · · Score: 1

    If you're a hacker, you can quickly pick up the other, but it makes sense to choose the first of the two on an informed basis, so kudos for the question.

    Decide which language offers the most enjoyable job opportunities. For me it's Java hands down.

    --
    -I like my women like I like my tea: green-
  227. If you care about theory... by Anthony+Liguori · · Score: 1

    C# is all the interesting things about Java plus a couple more interesting features. Microsoft had a quite a while to learn from the lessons learned with Java so this is quite understandable.

    If you care about learning an interesting language that will give you a broader perspective on programming, go with C#. If you care about getting marketable skills, I honestly believe they are both equivalent. There are probably more Java jobs out there right now but C# is catching up. Keep in mind, these jobs are really about either J2EE or .NET not the actual languages. Both markets are likely saturated with vocational school graduates so I don't think learning either is going to give you and special advantage.

    If you like the MS development environment, go with C#. If, instead, you prefer things like Eclipse, go with Java.

  228. Java, because it is much cleaner by owlstead · · Score: 1

    Although I like a lot of new C# constructs, I would recommend Java. I'm a hard time Java user, but I also did a course on C#. Problem with C# is that it already has way more features than Java, and that is not always a plus. Furthermore, it tends to be less OO friendly. E.g.: you can choose methods to be virtual or not in C#. In OO design you would want your methods to be virtual. In C# they aren't, by default!

    In C# you have things like operator overloading and properties to worry about. Both can be usefull at times, but they can also obscure what happens underneath pretty easily. Same goes for aliases. Delegations. Precompiler statements. Split source files. Same goes for keywords, the number of keywords in C# is already growing, as is the language specification. For instance you can now embed SQL like statements; nice but can be confusing. Lots of stuff you don't want to know about (yet).

    If I were you, I would start off with Java. Take the latest, free Java 1.5 JDK from Sun, the latest, free Eclipse development environment from eclipse.org and set your compiler settings for 1.4.2 compliance. Except for serious, deep, GUI-stuff you can then always load your source files into .NET J#, add some Windows forms (GUI) stuff and you are set. And it is way easier to install as .NET as well, runs under Linux no problem. And no reboots (although Java JDK sometimes asks for it, simply ignore :).

  229. Just Pick One Standard, and Learn it Well by Anonymous Coward · · Score: 0

    "But oh wait, you mean they ought to give it to you for free while you can make money out of it? Nice one, there."

    Those who went to the launch event got the standard edition, sql server, msdn, and a coupon for biztalk.*

    *And yes I plan on making a living off all of this...eventually. :)

    --
    Programming Asp.net: 3rd edition covers VS 2005 and C# 2.0 as well as ASP.net 2.0.

  230. Learn one well. by nekrecart · · Score: 1

    Take one and learn it well. Make sure you understand OO , learn design patterns, uniform your coding. Don't get stuck into a 'simple' webpage or quick winforms. Try to set out some goals and mile stones that you want to reach in your coding skills. Make sure you don't neglect your (project) management and communication skills as well.

    When you know Java or C# well, it's not that hard to switch over to the other. It's just syntax.

    Yeah I know open source free blablabla.
    I'm not paying the Visual Studio license, my employer is, so I actually don't care. Other competition is also asking money for it. Even Sun!! Although they tend to put the extra cost in their hardware. I simply love the one stop shop solution(s) that MS offers.

    And the 2000$ Visual Studio license cost every two years. It's peanuts compared to the 24x month salary, social security, dental, hardware etc that my employer has to pay / buy me.

  231. Re:a Contrarian opinion: MOD PARENT UP by Harmonious+Botch · · Score: 1

    "But it all boils down to the conflict between education and training. Both Java and C# are good for near-term employment prospects. But if you're after education, learning to think in another programming paradigm is well worth your time in the long run"

    I couldn't have said it better.

    Actually maybe I could have. To really get a different paradigm, try Modula 2/3 or Oberon.

  232. Learning OO? by Anonymous Coward · · Score: 0

    Then try to learn SMALLTALK.

  233. Re:Java is more credible as a cross platform langu by elem · · Score: 1

    You're ignoring (or just don't realize) the fact that C# can be used with managed C++, which in effect means that most libraries written in C++ can be used with C#.

    Where I work (financial technology for a big 3 brokerage firm) we're moving our front office development into C# over the next year. This is moving from using Excel as a development platform (its strange but true - with the right set of technologies running =underneath= Excel, it makes for a very workable enviroment in which to build financial models, with the main win being very short develop-test-release cycles). The way our system works is with three layers, on the bottom you've got tibco at the transport level, our custom built libraries on top of that which provide the services and which in turn get called by the application(s) running on top of that.

    Since the middle layer is all C++, and since we use MS on the brokers' desks, it made perfect sence for us to move into C# as the requests we're getting are going beyond what we're capable of doing in Excel (and believe me, we're doing things right now that MS has claimed are 'impossible').

    From what the senior dev's on my team (and we're talking about global enterprise networks type of development, valued in the $100mils), no one loves C++ because its a bitch of a bitch to use well, and (like with C) its easy to make mistakes and write very ugly code. Java seems to be rapidly falling out of fashion, its just got a lot of software written in it right now - I can't speak for the rest of the world, but I do know that the one set of software which consistently causes problems for the users are the ones written in Java. I make no claim that either of those are representitive, just the way that I'm seeing things right now.

    From my own experience in learnina Java while at school, and C# now while working, I've found that I significantly prefer C# to Java.

    Java to me always felt quite constrictive and overly verbose, and I always felt as though I had to jump through hoops compared to C. On the other hand I find using C# a breath of fresh air. It feels like a well designed language which feature which, although aren't innovative, are well polished - and to be honest Visual Studio is one hell of a powerful tool. I've used Eclipse in the past and enjoyed it, but VS, to me at least, just feels a little bit more intuitive and easier to use. Just like C# feels a little bit more intuative and easier to use than Java ever did to me.

  234. just remember... by shummer_mc · · Score: 1

    "There is no spoon."

    -Mike

  235. Java by JustNiz · · Score: 1

    Do Java.

    C# is just Microsoft's own version of Java anyway. They just ripped-off Sun's ideas in order to do their usual 'make their own version of an existing standard' thing.

    Anyway C# will only be cool until Microsoft come up with another 'next big thing' becuase the only way their business model can survive is if they keep selling new licences for the same old crap under a different name each time.

  236. It depends, but know the API! by Rew190 · · Score: 1

    I'm reading a lot of comments that say that the two are very syntactically similar (which is very true), but keep in mind that the main battle of being able to say that you actually know a language in the mind of an employer isn't knowing the syntax, it's having a working familiarity with the API. Can you really say that you know Java if you don't know how to change a JTable to look a particular way with checkboxes inside of it? Do you know .NET if you have no idea what something like the Dataset can get you? Know the APIs, my friend! They are what enables you to quickly develop once you can immediately say "TableCellRenderer!" and "Oh, an in-memory database so I never have to write SQL queries!" If you can't really do this, then you can easily get burned on an interview.

    I also think a lot of the decision should have to do with what sort of programs you want to develop. If you're looking to do GUI-related application work, I'd go with .NET in a heartbeat. If you want to do lots of server-side or backend stuff, definitely Java.

    It just depends on what you want to do, so give some thought on that front. Be weary of what you place importance on; Java portability most likely won't matter if you want to do desktop applications since the majority of business desktops are using Windows. Likewise, .NET's easy GUI-building capabilities are worthless if you're writing back-end code.

    If you're not really sure what you'd like to be doing, I'd do Java. I've been developing on C# for a few years now and am learning to really like the API, but I think Java's is a bit "tougher" in some areas (Swing's nuances) and you'll get more out of it. YMMV.

  237. Java, for certain - by Anonymous Coward · · Score: 0

    it has many benefits that far outweigh any other language. For example, ... with a VB manual on your dashboard, you can park in handicap spaces.
    But with a Java LRM on your dash, the store will bring you a wheelchair.

    Clearly, Java is the winner, hands down.

  238. Re:Diehard Linux user? by slonkak · · Score: 0, Flamebait

    No. No you should not.

    Java is the slowest, junkiest language around.

  239. coke, java, pepsi, c# by Anonymous Coward · · Score: 0

    what the fuck does that mean?

  240. mod parent up by BorgCopyeditor · · Score: 1

    Thanks a bunch. +5, Informative, indeed.

    --
    Shop as usual. And avoid panic buying.
  241. Learn the concepts! by linuxhansl · · Score: 1
    Instead of focussing on a particular form of expression for algorithms, rather learn about the underlying concepts, such as:
    • General Algorithms and Datastructures (hashing, trees, binary search, etc, etc)
    • Polymorphism, Design Patterns, and OO design
    • Functional Programming
    • Concurrent Programming (threads, mutexes, semaphores, monitors, condition variables) and distributed algorithms
    • Complexity Theory (Big O notation)
    • Data Storage methods
    • Networking Algorithms and Protocols and ... the Web.

    Once you learned all that you can pick up any language and a matter of a few days (just learn its particular syntax and associated libraries).

    I for one am getting sick and tired of folks who claim to know Java/C#/Whatever, but who are trapped in the specifics of that particular language and have no understanding about the underlying concepts.

    1. Re:Learn the concepts! by wk633 · · Score: 1

      I for one am getting sick and tired of folks who claim to know Java/C#/Whatever, but who are trapped in the specifics of that particular language and have no understanding about the underlying concepts.

      Who are driven by all the HR people who say "Must have 5+ years of Java/C#/Whatever" because they don't know how to ask for "Can see a factory pattern when it hits them in the face".

  242. C# VS Java by Anonymous Coward · · Score: 0

    C# is designed for programmers, means, whatever language you know (if it is supported by .net framework) go with it and do your coding. So over the period of time a programmer may become a GURU of using his/her language of choice without worrying much about the language which may become obsolete at some day. While Java is a matured language with lots of momentum (it's around here for more than 10 yrs); but still, philosophy behind C# is better, means, you do not have to change your tools to do things in a better way. However, I would prefer Java to teach/learn OO concept. Its a great teaching/learning tool for programming. Well now my suggestion, do not plan to have a software engineering/developer career, if you want to work in USA, it is good time to think about it. Like you cannot find a goods in US mall which is not labeled with "Made in China", within few years, you won't find a programmer who is not from India or Chaina or rarely from east europe.

  243. Try to avoid both, for now by Anonymous Coward · · Score: 0

    Both these languages are somewhat encumbered, as other comments have already pointed out, and there's plenty of OO langauges out there.

    If you have to choose, choose the language you can get the best professor for, but don't let your schooling get in the way of your education!

  244. .Net has better framework by Anonymous Coward · · Score: 0

    I know both and I must say that C# has a vastly superior library. Java is free and more pure, but the .NET framework compared to the java one... well, .net is just plain comprehensive.

    It has methods included for everything. It includes nearly every type of data structure and design pattern already immplemented, comes with several sorts built in, a great math library, and tons of user interface functionality.

    While both languages are theroretically capable of anything... it's nice when you are working in C# to just be able to know that pretty much any idea you could want to express has a function ready to do it. It truly exists on a one-concept=one-line-of-code kind of model. I found Java's framework lacking in that respect.

  245. Free for students by BobPaul · · Score: 1

    That's cool! But don't forget that most schools that teach programming languages are also members of the MSDN, allowing students to get free copies of Windows and Visual Studio (plus some other MS software)

    The more important question is, does it run on Wine or CXOffice??

  246. Go Java, C# is mostly popular because of the IDE by scarlac · · Score: 3, Interesting

    Like many others, I would just clearify on the differences, and un-bloat the comments made by many people that don't really seem to get what they are recommending.

    Java stands for purity. The language of 1.4 is very stripped down and contructs like foreach, generics and boxing/unboxing isn't in. In 1.5 these features were needed to compete with .NET (afaik).
    Most of the IDEs are written in Java (Swing) making their GUI slow and heavy.

    C# stands for impressiveness, "productivity" and _Microsoft_. If you ask people why they like C# many of them would (if they dare) claim that they are more productive and have an easier time developing because of the "smoothness" of the language. This, translated, means that they like the IDE, which is Visual Studio .NET, and they like the framework.

    C# and Java have many the same(/or at least very similar) features. I wouldn't critizise C#/.NET for the un/managed jumps, since they claim it as a strong feature themselves.

    Java is good for educational purposes since it's _a lot_ better documented, accepted and tried.
    C# is well for quick and dirty solutions, since the IDE is quick and the GUI quick and "integrated" (it looks a lot like native windows controls).

    So in short, my experience is that Java is a better language because of so many small things, but /really/ bad because of the lack a solid, fast IDE and an integrated windows look. If Java had just has a smoother windows integration, C# wouldn't have had a real chance.
    C# is going to be the accepted platform for developing windows apps since microsoft is pushing it out and shipping it with new windows versions. they already started developing a lot apps with it themselves.

    For the record: I know both Java and C#.
    My experience is that I was much more productive with C# because of the fast and integrated IDE, generics and the foreach construct - Absolutely nothing else(!)

  247. I vote C# by Anonymous Coward · · Score: 0

    It all depends on what you're doing, but you asked, so I'll tell you: C#.

    On the whole, Java is a proof-of-concept language. It's beautiful, the syntax is elegant, it's clean, and it has everything you could possibly need for textbook OO programming. Also, it runs like absolute crap in the real world.

    Don't get me wrong, Java is a great idea, and honestly I think that in the University world it should and will go a lot farther than C#. It's simply a better-designed language. But the three runtimes people actually use (SunWinx86, GNU's *Nix implementation, and the one used on mobile phones), well, they suck. They're memory hogs, slow, and they never seem to optimize anything properly.

    Microsoft, on the other hand, took a far different approach. They tried to design a language that people would actually use in the real world. Therefore, they made some design compromises. Yes, C#'s properties are a hack. A property is a variable that acts like a method--you can write and read from it, but it performs a behind-the-scenes method on each access. Is that cheating? Yes. Can I live without it? Absolutely not. I use properties on an hourly basis. They work incredibly well for input validation, checking for security flaws, etc. etc. Java doesn't have anything like properties because they are a poor design choice and it doesn't look good on paper to the design team. It's just not as simple as it could be--it's most definately a hack. But it works, it's fast, and it saves me time. Who cares?

    Microsoft painstakingly tweaked the runtime to be lightning-fast. It's painfully obvious to me that Sun has no idea how to write a runtime for Windows. Maybe their runtime runs well on Solaris, I've never bothered to check. I know it runs moderately well on Linux. But windows? Yuck. The .NET CLR, on the other hand, coded by the boys at Redmond is... really, really, really fast. I mean it's optimized to the point where things like garbage collection and memory management are faster than C. I mean really, really fast. And C# scales well. I've seen enterprise applications that are millions upon millions of lines that compile in minutes and are quick and responsive. And then there's the Java-based grade system we use up at school that... well... let's just say that some days entire tables disappear from the database and it's almost a weekly ordeal to re-enter all the grades from all the students in the entire school. Now a lot of that is poor development on the part of our friends at Chancery (www.chancery.com), but I'm confident that at least some of it can be blamed on Sun's Windows VM.

    My $.02

  248. Re:Java is more credible as a cross platform langu by Anonymous Coward · · Score: 0

    Bullshit hkb, the only ways you could ignore the history of bill gates protection services Inc. and what they will do are 1) you are very inexperienced and don't know their blackhearted history 2) you are some kind of astroturf shill for bill.

    It's an abomination what billy bathgates has done to IT with his throbbing monopoly, aided and abetted by the un or misinformed, but I guess you don't care.

  249. Go With Java by E++99 · · Score: 1

    I'm a veteran Windows programmer who had to make the same decision a couple years ago. I decided to take my career in a Java direction, and I'm certain now that I made the right choice. Aside from the language itself being great, the Java community is amazing. You can find free open-source code for ANYTHING you need, and the class library and package naming system makes it simple to use third party code with your code. Bottom line, you can do anything you want with Java without ever having to pay a dime. Plus, of course, there's the whole platform-independence thing. Eclipse is pretty good free Java IDE. (JBuilder is better IDE, but it's not free. There is a free version of it, but it doesn't include a lot of the features for doing enterprise development.)

  250. Here's what you should do by wetfeetl33t · · Score: 0, Troll

    1. Learn neither language.
    2. Pretend you know both languages (it's all in the jargon)
    3. ???
    4. Profit!

    --
    Register the editry.
  251. Niether have pointers, so what does it matter? by Mibblethwarpe · · Score: 1
    You aren't doing real programming unless you deal with memory management.

    It's like the difference a parts installer and a mechanic. Real mechanics make their own parts. Parts installers integrate and replace canned components.

    Since both languages are p-type scripting languages, and you are a DeVry student, you are training to become a parts installer. That's a good thing, because it means you will probably be employed when you graduate.

  252. Just to make a point here. by Chitlenz · · Score: 1

    I know this is /., and the fangs have to come out for anything with Microsoft in the name, but folks PLEASE PLEASE do your homework for not researching the criticism on C#. C# runs VERY well on Linux under Mono , and several good cheap compilers (even free, as in beer) for C# exist, including forms based programming (YES in Linux). Not to hammer the point home softly, we should NOT disregard technologies out of some deference to amorphous ideologies that may or may not be deserved. It's simply not fair to people who have to actually BE the whole subclass of programmers to give advice on technologies, particularly language selection, that is so narrowly biased on comments read here. In other words, 600 lemmings saying 'Microsoft SuXors!' with no justification not only sends the wrong message to a would-be coder, but starts to make what is basically emotional opinions seem like facts.

    C# is a wonderful framework to work with. I'm saying this as a code architect from a company that has actually produced a commercial product in it, start to finish (with SQL Server and Oracle). Of note, the .NET framework has now reached maturity and is certainly usable. It was, I understand, actually framed as a language by the team that built Delphi for Borland, a language many folks here love and defend, while criticizing C# (a fact which makes absoltely no sense to me at ALL). It integrates well with database backends, works pretty damn effeciently with threading and server models, is inherently typesafe, and is quite simple to find commercial docs and free code snippets for (Books!).

    To say using C# is caving to a MS p0wned world is unfair, and untrue. It's a box of bricks people, what house you build (and on what platform) is still completely your choice.

    Sheesh /rant off.

    --chitlenz

    --
    Imagination is the silver lining of Intelligence.
  253. Ignore zealotry by saifatlast · · Score: 1

    I notice reading this that, as always on Slashdot, there is a lot of misinformed zealotry, and since this is slashdot, a lot of it is directed against C#. Personally, I think that for most of the applications I've seen, C# and Java are almost equal. There are minor differences between the two and how they handle different things differntly, but I've said it before and I'll say it again. A good programmer will write good code in any language and a bad programmer will right bad code in any language.

    My tips:

    Do your own research, people will lie and pretend to be informed to defend their ideals!!

    Get Eclipse and C# Express Edition 2005, figure out which IDE you like best. Sure, it's good to code in notepad, but why bother?

    Pick your classes based on the reputation of the proffessor, not the language, become a good programmer, not a Java\C# zealot.

    Learn as many languages as you can, especially ones that use a different paradigm. Learn at least a little of the following: Python, Perl, Java, C#, C++, Ruby, PHP, and Lisp.

    Most importantly, code as much as you can. When you can work harder or code something to work for you, pick the latter. Find some open source project and contribute. Even if all you do is read through the code and fix some minor bugs, you'll be learning more about the process.

    --
    note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't regist
  254. c++ by Anonymous Coward · · Score: 0

    C++

  255. Take the better professor! by sonofagunn · · Score: 1

    I agree with the parent. The professor will make a bigger difference in your education than what language is being taught. Once you become a professional, you'll be able to program in any language so it won't really matter which ones you took in school.

  256. goto and unsigned by r00t · · Score: 1

    Linux is loaded with goto. The goto is one of the more popular control
    statements in fact. The resulting code is beautiful. The kernel itself
    mostly uses goto for error handling. The old mkdep.c file, part of the
    build process until removed for unrelated reasons, used goto as part of
    an extremely fast and readable parser.

    The main problem with unsigned types in C is that they "win" in
    mixed-type expressions. Probably such expressions should promote
    to the next larger signed type, or be refused if there is no
    larger type. A better fix would be to have the programmer specify
    desired ranges instead of named types.

  257. cellphones... by phraud · · Score: 1

    ...can generally be programmed with java. smart cards too.

    also: desktop applications, enterprise applications, clustered supermassive financial applications.

    oh, and you get to learn and love the code at jakarta.apache.org. ;-)

    Java is simply more fun than C#.

  258. Challenge yourself by wk633 · · Score: 1

    C#, because you are a Linux type. If you said you were a Microsoft type, I'd say Java. The OO skills you hopefully will learn will cary from one to the other, so from that sense it doesn't really matter.

    But if the point is to learn, then you will learn more by pushing yourself more, and that means not only in techincal ways, but 'religious' ways. People who don't know anything about X but talk about how much better Y is than X have very little credibility. You're better off being the person who can discuss when/why/how Y is better than X, and X better than Y.

  259. Language: Korean, German, Japanese, Chinese. by Anonymous Coward · · Score: 0

    Spend your time on human languages,
    you'll need to spend time talking with your employers more than
    you'll need to talk to your machines.

    It's not like there is going to be many software jobs in the USA in 2012...

  260. Re:Java is more credible as a cross platform langu by hkb · · Score: 1

    1. GNU Classpath has nothing to do with runtimes, it's a GNU replacement for the standard Java libraries.

    2. You must not keep up with Mono development, which admittedly is sometimes going a bit too fast to keep track of. In any case Mono is essentially feature-complete at this point, while Classpath still has a ways to go. It's not used by many (any?) serious development outfits.

    --
    /* Moderating all non-anonymous trolls up since 2004 */
  261. Comment Sniper Attack! (was Re:Java - Duh.) by Anonymous Coward · · Score: 0

    Comment sniper attack:

    It makes you fat, gives you diabetes and rots your teeth.

    Uh, no.
    Sugar does not give you diabetes. Being fat gives you diabetes.

    1. Re:Comment Sniper Attack! (was Re:Java - Duh.) by Bastard+of+Subhumani · · Score: 0
      Sugar does not give you diabetes. Being fat gives you diabetes.
      Jumping off high buildings doesn't kill you. Hitting the ground very fast does. Please jump off a high building immediately, fucktard.
      --
      Only three things are certain; death, taxes, and apocryphal quotations - Ben Franklin.
  262. Java is where teh jobs are at by Billly+Gates · · Score: 1

    Go check monster.com to look at jobs in your local area?

    Mono doesn't work that well and nothing beyond hello world programs have ever been portable between win32 and linux. Its controlled by patents and microsoft can yank the right to use it at anytime. Its a no win solution if your using anything besides windows. It will always be behind windows and its a way to create Microsoft lockin.

    Java is improving and no longer sucks compared to c# which is what fueled Mono.

  263. Re:Java is more credible as a cross platform langu by ntijerino · · Score: 1

    Well, my only point was that there are a bunch of free, open source libraries available for java. As for all the other stuff that you said, I shouldn't speak to it since I don't have C# experience. Well, I do have experience using Visual Studio and Eclipse, but this isn't really an IDE conversation. I have done some C and C++ in the past and have looked for similar libraries to do what I have done in java and just haven't found a whole lot free ones. I know that boost has a bunch of free libraries, and the ones I've used have been great. I guess I just wish that there were more free libraries out there for C++. I know I should get off my ass and start writing them, but there are just so many that I would want. The amount of time that people have put into some really good java libraries is amazing. In fact, I think there was a story here on slashdot about how java has now surpassed C++ in the number of projects on sourceforge. If I'm wrong, and there are a bunch of really great C++ libraries out there and I just didn't find them, please, somebody enlighten me. I want to use them.

    --
    Stick that in your compiler and debug it!
  264. so... by rolandog · · Score: 1

    I guess he'll just go with Python.

  265. "...for my Object Oriented Programming Class" by dwchapin · · Score: 1

    Sadly, neither one is a good choice.

    As usual, it's more fun for /.ers to have a religious debate about the relative merits of Java vs. C# rather than answer the actual question being asked. So the idea is to choose between them for the purposes of learning object-oriented programming, you say?

    Either one will do almost equally well for a basic OO programming course, though you should be aware that despite all of the zealotism and hyperbole in the discussion here, they are *both* relatively poor choices for learning OOP. Both are designed to improve on the many shortcomings of C++ and C for large-scale development. As such, they are quite similar, and are roughly equivalently mediocre for erudition purposes. Furthermore, because they are meant as enterprise-class development langages, they have many features and formalisms (namespaces, assemblies, and particularly strong typing) which are designed to manage complexity and prevent errors for the 500,000 line code build. And if you're going to pursue a career in software engineering you're eventually going to want and need those things. But these same features simply get in the way and obfuscate when you're building a 200-line program to demonstrate an OO concept for a class. As the author of the Boo language (which compiles to the CLI) says in the Boo Manifesto, '"public static void main", that was a good one!'

    A good choice for such a course would be Python or Ruby. Elegant, compact, forgiving, relatively pure (especially Ruby) and weakly typed, they are a pleasure to use. Ruby is so beautiful at times that you could weep. An even purer choice would be something like Smalltalk, but I think Ruby makes a better tool for teaching because it is also pragmatic enought to incorporate things like functional programming elements and idioms, which can sometimes throw light on the OO concepts and approaches by juxtaposition, and allow you to develop an understanding of when OO helps you get things done and when it gets in the way.

    This doesn't solve your original problem, of course, because presumably you may choose only C# or Java. But do yourself a favor and try to bang out a few homework problems in Python or Ruby just to kick the tires. You'll be floored at how much more compact and lucid it is, and how flexible. Plus you will find in the long run that a feel for how you would implement something in a pure OO language actually greatly informs and improves your designs in languages like C# and Java, which will ultimately make you a much more skilled programmer. Which is, after all, the point.

  266. Actually, don't choose cither... by pnewhook · · Score: 1

    Pick Ada, then you can get an interesting job in aerospace, instead of a boring job writing shitty web applets.

    --
    Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    1. Re:Actually, don't choose cither... by jcr · · Score: 1
      Pick Ada, then you can get an interesting job in aerospace, instead of a boring job writing shitty web applets.

      ..as soon as you build a time machine to take you back to the mid-1980s. :-D

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    2. Re:Actually, don't choose cither... by pnewhook · · Score: 1
      ..as soon as you build a time machine to take you back to the mid-1980s. :-D

      lol - actually most aerospace companies use old technology -its proven and it works.

      Besides the actual language doesn't matter, just the concept. Once you get the 0-0 concept down then you can quickly learn any language you want to after that.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
  267. This Linux year Is My Choice By Far by Anonymous Coward · · Score: 0

    "I see this a lot in MS on the web, i.e. "Our last product sucked, but this new one is great!""

    "200...1...2...3...4...5 is going to be the year for desktop Linux"

    People who live in glass houses shouldn't throw stones.

    1. Re:This Linux year Is My Choice By Far by Anonymous Coward · · Score: 0

      Duh, everyone knows 2006 is the year for dektop Linux. Unless you are reading this message in or around Dec 2006, in that case, I meant to say 2007 is the year for desktop Linux...

      well..unless you're reading this in late 2007, in that case, it was clearly obvious that I meant to say 2008 and that it's your fault that I got confused.

  268. Just demonstrate mastrey of OOP by cspring007 · · Score: 1

    I just finished my masters in Geophysics and have had very limited experience with C#. The place i got a job with uses an all Microsoft environment. I was upfront with them about using all open source languages for my thesis work and the software i developed for my lab. During my interview i was able to demonstrate that i knew the fundamentals of OOP and the code that i provided as an example did so also. My point is that in the long run dosen't matter, as long as you know what you are doing and understand the underlying fundamentals of the trade. Howerver, i personally use java because the development environments are free (Eclipse) and their online documentation (search any class name using google and Site:java.sun.com) is very good. Also, the newest versions of eclipse are supporting openGl and direct GPU acesss.

  269. Whichever You Feel Most Confident With by nick_davison · · Score: 1

    About 30 seconds after you enter your first job, the 2nd language you learned at University will mean nothing compared to the on-the-job experience you have.

    On the other hand, your GPA will follow you around forever.

    If you know enough of one already to be confident (but not so over confident as to be cocky, cut corners and get poor grades), pick that one.

    The advice others have given, about choosing the best prof, also holds true. The better prof will help you learn more and thus get better grades too. On the flip side though, they're helping others learn more and thus any grade curves will be harsher.

    I hate to be so mercenary about it but, honestly, that's what University is really about. Forget all the foolish notions of learning, noble pursuits of knowledge, bettering yourself, etc. University is about getting out the far end, doing whatever you have to do to cope with crazy instructors, team projects where everyone else refuses to work, and all the other things people call "unfair." Of course it's unfair, it's supposed to be.

    Your GPA isn't a measure of how well you've learned a bunch of exciting courses like Advanced Navel Lint Statistics 427 - it's a guide to employers about how well you can deal with such ridiculous situations because, trust me, it's only going to get more ridiculous in the working world.

    So, focus on what gets you the best wins on your GPA and don't worry about the specifics of how you got it - as, trust me, that won't matter from the moment you land your first job.

  270. Java by Anonymous Coward · · Score: 0

    What? You want to know why? because I said so.

    Not enough???

    1. A huge wealth of Java information is readily available via google.
    2. It is pretty darn free.
    3. The core language is mature.
    4. The language is well made overall (go Gosling)

  271. Language? by Mybrid · · Score: 3, Insightful
    Computer languages, unlike human languages, are 100% regular and therefore one should be able to learn a language on a as-needed basis, a few days time after you have enough languages under your belt.

    You should be able to program in any language.

    The right question is to ask what systems you should be learning? What problem solving techniques should you be studying? What software engineering technique is approriate to use?

    You should be able to pick up any language on the fly. Languages are a dime a dozen. Systems such as database systems, operating systems and graphic systems are dramatically different. What language you use to access them is immaterial or should be. If you understand the internal workings of a database you'll be far better served when developing database applications then spending time studying the intricacies of a language. Use what you need. It's silly to become familiar with all aspects of a language when you are only called upon to use 10% or 20% within the scope of a project.

    1. Re:Language? by owlstead · · Score: 1

      The things about it I do like is that, when you are learning IT, you should be made aware of the different language types that are out there. But imperative/OO programming should be the main focus of programming courses. Such languages, together with SQL are by far the most used programming languages. So you need to know the techniques used for those languages.

      Languages are indeed a dime a dozen, and they are not too hard to learn most of the time. The problem is that for imperative/OO languages, the API's are huge. You can switch languages pretty easily, but the program is is that you don't know the structure of the API's by that time, let alone find your way in them. So, yes, feel free to explore languages at study time. Somewhere after studying you need to specialize, otherwise you won't be able to solve proglems in a language quickly and correctly because of the unknown API's. Yes, you need to keep an open mind, but you need to specialize in spite of this.

      To a smaller degree this even goes for the design phase of software engeneering. If you do not know what modules are available for a language environment, it will be hard to specify what needs to be developed and how much time it will take.

    2. Re:Language? by leabre · · Score: 1

      The similarities between Java and C# are really only sking deep, regarding syntax. Beyond that, it'll take more than a couple days time to learn and be good and productive in either "environment". I say that because the .NET namespaces and Java package libraries are not a walk in the park to learn and become proficient in. After 5 years working with .NET (since the earliest of betas) I'm still learning things about the .NET framework (and C#) and I'm very good at what I do. Not a beginner, not a slacker, and definately understand architecture and design.

      Try learning C++. You can learn the syntax in a couple days, but try becoming good at C++ development and it'll take a bit longer than a few days, months at least. Same with Perl and Python. Everyones mileage varies, but I have difficulty with those languages, but then, they serve a different need than the ones I get paid to work on for a living. Perhaps its my motivation to care that causes the difficulty.

      What's true, is that, once you've understood the basics, principles, design and architecture, it shouldn't be too difficult to apply the knowledge in another language, but, in reality, doesn't always work out that way. You still have to learn the intricacies of a platform (.NET/Java/Rails/Etc.) before you can really *do things right*. It takes time. I've only recently started Java programming. I do not find in inherantly different than .NET, but it is drasitically different. Having to forget all the things that .NET makes easy and learn the Java way is driving me bonkers. Java is huge, and whenever I stumble on one way to do something 10 more better ways open up and some worse. There are so many reivent-the-wheel projects in Java that things really do take time to learn.

      Thus, only the syntax will take a few days to learn well. The specific traits and capabilities of the platform/language take months or even years to truly learn and master.

      Thanks,
      Leabre

  272. Re:Java.. by sproketboy · · Score: 1

    How is this modded informative? The parent posts no links or arguments to backup his assertion. There must be a lot of M$ employees loitering around here.

  273. Both by jbplou · · Score: 1

    If you can program object oriented code you can program both. OOP concepts are more important than lanuage specifics. If you are looking for job possibilities after graduating you would be best to have both on your resume plus having knowledge PERL, PHP, and VB.NET(oh the horror) would be wise as well. If you want to do business programming learn SQL as well. C++ for comercial software.

  274. Re:a Contrarian opinion: Scheme, Smalltalk, Ada95 by Qacker · · Score: 0

    I wish I had mod points. I'm glad to see someone here that seems to understand programming as a true skill and not just some career path. If you are a really good programmer then you can get your own job by starting a company or selling a product - you don't need to learn nasty languages.

    --
    Learn lisp today!
  275. C# and Java suck. Learn F# instead! ;-)

    --
    -- "I never gave these stories much credence." - HAL 9000
  276. Java 5 is SWEET by Billly+Gates · · Score: 1

    I tried java back in 98 for a school project. I hated it and it was awkward and slow. Swing still sucks but with swt in eclipse its better and java 5 is alot better with many new Object oriented features and basics like enumerators.

    Thank god for C#.net. It made Sun improve java and I feel the language has been maturing and its easy to write code. It can do mostly everything c# can do as of right now... until c# 2.0 comes out.

    1. Re:Java 5 is SWEET by iabervon · · Score: 1

      The improvements in Java 5 are mostly old JSRs from long before C#; it's possible, however, that C# was responsible for getting Sun to stop endless debating improvements and actually include them.

    2. Re:Java 5 is SWEET by Billly+Gates · · Score: 1

      have you seen java6 mustang? The improvements to swing are enough to make it cool. About time someone fixed the threading where teh whole gui can become unresponsive giving an illusion that java is slow.

    3. Re:Java 5 is SWEET by iabervon · · Score: 1

      I looked at AWT slightly, and Swing even less, and I think I'm going to wait until it is actually cool and the version is official before I look more closely. (I've mainly being using servlets, or, rather, a very little bit of the servlet API and a lot more of my own library, because the servlet API is mostly wrong, but it's barely good enough that you can write something good over it.)

  277. One Cool Thing by sdulin · · Score: 1

    When I took computer science in high school a couple of years ago, my teacher was able to secure free visual studio because the school was part of some MSDN Academic Alliance. We learned J# out of Java books and then moved to C# the next year. The languages are extremely similar and can easily be learned either direction. One cool thing about C# is that when you do things like web services, you can write a web service using C# and then write clients for it using VB or something else like that. All the languages under the Visual Studio .NET can communicate, which makes it really nice to learn. If you're future company has an existin app that it doesn't want to scrap, you can write code that uses it in whatever .NET language you want. Also, I think the future is going to be in mobile technology, PDA's and smart phones. C# is amazing for writing your own apps on those. .NET even has built in support for PDA and phone emulation so you can test you're projects. To compile them onto the device itself, just sync and compile. If you want to learn mobile programming, learn C#.

  278. mod parent down, please by namekuseijin · · Score: 1

    "How does this shit get moderated up? The poster is clueless."

    you just took the word from my mouth...

    "why did MS release Rotor for FreeBSD?"

    Why should i care for a 2002 demo of .Net for FreeBSD? Where it is today? Does M$ actively supports it as of today? i guess no, since a quick google only shows 2002 articles...

    "Why did it bother to get C# implemented as an ECMA standard?"

    For the same reason they released rotor: good marketing. To show they are playing nice, that they are compromised with standards. Standards my ass! Once they are the dominant force, they make the standards... and drop features originally intended to play nice, like rotor...

    "Why does it help, instead of try and crush Mono?"

    Help?! Last time i heard, they didn't let the mono guys get into the latest of their .Net Conventions...

    "Why does the API include Oracle functionality?"

    Because, M$ like it or not, many of their users prefer Oracle over M$SQLServer...

    "In contrast, Java is currently a closed platform with Sun's fingers firmly around its neck."

    There are tons of great open-source tools built around java technologies that are absolutely vital to the daily java developer -- like Eclipse, Hibernate or Ant. There are quite a few different implementations of the JVM from the proprietary and open-source worlds.

    I believe java owes to a lot more people than just the Sun guys...

    --
    I don't feel like it...
    1. Re:mod parent down, please by petermgreen · · Score: 1

      I believe java owes to a lot more people than just the Sun guys...
      indeed but they control the standard implementation of the standard library which leaves a choice between being at suns mercy and dealing with a buggy/incomplete clone (the hugeness of javas standard library makes life rather hard for the cloners).

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
  279. Which is better...1/2'' or 3/8" wrench? by uglyDBA · · Score: 2, Funny

    I think the first reply was the best. The rest seems like two guys arguing over the backyard fence: Guy#1 - My 3/8" wrench wrox! I can lower and raise my daughters bike seat with ease using it!. Guy#2 - Ya but it sucks for anything that needs a 1/2" wrench..how the heck are you going to remove your kids tire with that useless tool? UglyDBA

  280. C# is liked by even a C/Unix programmer by SlashingComments · · Score: 2, Informative
    I was a hard core Unix/C person--basically a Unix whore who can pretty much work on any unix platform without much problem.

    To me language is a Tool only--I have no religion about it (I am pretty religious about OSs though) and to that end this is my liking.

    C - started on it, so natually like it

    C++ - hated it, very complex language

    PERL - great one but it is too similar to C and I have difficulty coding in it.

    Java - too heavy and too much bullshit programmers blaming everything other than their own code and Sun is hoping that they will just spec out the classes and someone else will do the hardwork of coding it while they retain the control--yeaaah right! I hated it

    C# - Very nice language. I wish they did not get rid of "printf" type routines, other than that, this is a very good tool.

    This is just my perception. MSFT may be evil for now, but if being evil does not increase their profit margin, they will come around and be saint! And when that happens, I bet they will smell and look like Linux and the old unix whore will happly work on that ...

    --

    - People who believe other people have no right to live, got no right to live ...

    1. Re:C# is liked by even a C/Unix programmer by Anonymous Coward · · Score: 0

      printf type routines? How exactly is Console.WriteLine() different from printf? It strikes me as exactly the same thing, with a different format for the formatting string, but that's it.

  281. Re:Java.. by defkkon · · Score: 1
    How is this modded informative? The parent posts no links or arguments to backup his assertion. There must be a lot of M$ employees loitering around here.

    Its modded informative because its true. My assertion that .NET has excellent support for developing web services corrects the parent post, and therefore is informative.

    You want a link? http://msdn.microsoft.com/webservices/

    You can develop the skeleton of a web service using a dozen lines of code in .NET using both C# and VB .NET (although I still don't understand why MS decided to keep that antiquated language around). Creating and consuming data from web services is a snap, and is actually one of the major considerations when Microsoft developed the .NET platform. If you can get past all the marketing mumbo jumbo, check it out. http://www.microsoft.com/net/default.mspx

  282. this is better and runs anywhere by namekuseijin · · Score: 3, Interesting

    Learn Python, instead.

    It's a nice dynamically typed OO language with crystal clear syntax, ease of programming, quite a few very handy operators and builtin types, and it runs anywhere. And i mean it: it runs on Linux, Windows, MacInstosh, *BSD and even on the .NET CLR ( IronPython implementation ) and the JVM ( Jython implementation ).

    Yes, you'll be able to transparently handle java or .net objects from it...

    Programming in C# or java feels like programming in assembly, comparatively...

    --
    I don't feel like it...
  283. Java is the only true multiplatform. by vadius · · Score: 1

    I have to use Java. It is the biggest, most complete and usable language that I can use on my Windows workstation, my Mac OS X laptop, or my Linux / UNIX servers with no problems. Perl, etc are not quite robust enough for serious OO development, in my experience (Python might be making it, but not quite for me).

    If you just want to get a job, they are both pretty good, but I would bet that C# will land more jobs now than Java. However, what is important is that job 10, 15 years from now. You need to develop more long term skills. Programming languages are just a tool.

  284. Pick what fits your personality by solprovider · · Score: 1

    Most of the posts suggest learning either language will teach similar concepts. While that may be true, the important part of the parent post was:
    As far as post-college job opportunities, corporations use both (but each corporation tends to focus on one or the other). Perhaps you should do a little local research to see which language/class library is in more demand where you live. I have plenty of consulting friends in the Minneapolis/St. Paul area that focus on each and who are all gainfully under contract (although C# experts are in slightly more demand and can get higher bill rates, unless you're a J2EE expert).

    In the Philadelphia area, a good Java programmer bills higher than any MS technologist, but the demand for .Net programmers is much higher than Java programmers.

    Very few employers (maybe none) realize programming skills transfer between languages. The job requirement says "3 years of C#", and nobody with 10 years of Java but no C# will be considered.

    Learn C# if you want to be hired directly from college. You will have a job until MS changes its languages. A MS language is good for about 6 years, and C# is still new.

    Learn Java if you want to learn a stable language with higher potential earnings but less opportunities. You can make twice what the MS techies make, but you will have to look longer and harder to have any job.

    ==
    My opinion is pick the language that fits your personality.

    MS is "easy". It allows many programming concepts that violate what the theorists say is good, making it easy to write really poor software. Even if you write good code, the other team members usually believe "It worked, so it must be good", regardless of the actual quality. My objection is you rarely know if a bug is your code, or just a MS flaw. One reason employers insist you know THIS language is because much of programming MS is knowing the workarounds for flaws in the platform.

    Java requires more thought about design. The software must follow good practices. You can read deeper into the code to understand what is causing a bug. Most bugs are your fault because you did not understand how the platform was designed. The planned usage expects good design, and learning what was expected raises your awareness of side-effects, improving your ability and the software. This annoys many programmers because they must deal with every possible Exception. It produces better software, but it may not fit your personality. (That said, a recent Java project had a lead developer who managed to create spahetti code using Java/WebSphere/J2EE. It was the worst mess I have seen in any programming language. Picking Java does not guarantee better programmers, but it does improve the odds.)

    --
    I spend my life entertaining my brain.
    1. Re:Pick what fits your personality by petermgreen · · Score: 1

      can't they just use something like

      try { //code that can throw exceptions goes here
      } catch (exception e) {
          if (e instanceof RuntimeException) {
              throw (RuntimeException)e;
          } else {
              throw new RuntimeException(e);
          }
      }

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
  285. do NOT download the sources by penguin-collective · · Score: 1

    Sun's license isn't just "rather restrictive", it's viral: if you download the source code, you will not be able to work on any open source Java project again. That is worse than "closed".

    1. Re:do NOT download the sources by Anonymous Coward · · Score: 0

      And yet better than .NET...

    2. Re:do NOT download the sources by Anonymous Coward · · Score: 0

      The discussion isn't about .NET, it's about C#. But even as far as .NET is concerned, you're wrong.

  286. simple by Anonymous Coward · · Score: 0

    If you can't learn to program on your own, get loss. You're not a real coder. Real coders don't need hand holding to learn how to code. Just go read the abundant OSS Java code out there and compare it to the C# code out there. There's already enough posers idiots who think they can code in the work place making life hell for those who actually are coders.

  287. You think you can learn C# without learning .NET? Well, it's true, Mono gives you an alternative set of APIs... Until MS sues them and (according to the SCO model) you...

    I challenge you to make a legal argument by which Microsoft could sue me over writing a Gnome application in C#.

    You can't. All you do is spread FUD.

    1. Re:FUD by Concern · · Score: 1

      You are completely off your rocker.

      You may have hidden under a rock for the whole discussion, but this is a good summary, if you want to catch up...

      You're actually pretty funny, considering it's actually MS who spreads FUD... with things like the SCO case.

      But if you think C#'s meager sugar is worth the risk... go for it. I'll find it funny to see how it turns out...

      --
      Tired of Political Trolls? Opt Out!
    2. Re:FUD by penguin-collective · · Score: 1

      You may have hidden under a rock for the whole discussion, but this is a good summary, if you want to catch up...

      Seth hasn't come up with any specific patent claims that Mono/Gnome applications actually violate; if he had, then people would have already removed them from Mono. Furthermore, Seth isn't advocating Java instead of C# anyway, so it's not relevant to this discussion.

      But if you think C#'s meager sugar is worth the risk... go for it. I'll find it funny to see how it turns out...

      Where does this bullshit assumption come from that Java is somehow free and open? Sun has dozens of patents on technologies in the Java standard; go look on uspto.gov. Furthermore, you can't even access the official Java specifications without agreeing to a license. And Sun has actually pressured open source Java projects with their intellectual property.

      If you don't want to use C# because Microsoft's patent freaks you out, I can understand that; I don't think it's a serious concern, but to each their own. But advocating the use of Java instead of C# is ridiculous because the intellectual property situation surrounding Java is far worse than that surrounding C#. And if you think that Microsoft is concerned about open source, open source has been killing Sun.

    3. Re:FUD by Concern · · Score: 1

      Your post here is basically redundant, but I can also see you didn't read, or couldn't understand, the link.

      The key is that MS was conspicuously careful that even the standardized parts of .net can be subjected to RAND terms by MS that could lock out free software. Let alone the rest of the platform, which openly locks you in.

      Now compare: "If you read the license that you are granted by the Java specifications, you'll find that they give you an unrestricted blanket grant of all the patents Sun has that might be infringed by Java implementations. " -link

      Everybody builds a portfolio. But do you love operator overloading so much that you'll go with someone who won't make decent arrangements with the community... And by the way who also finances fun stuff like sco? Or maybe it seems like you've just been confused?

      --
      Tired of Political Trolls? Opt Out!
  288. best ide and either c# or java by merith · · Score: 3, Insightful

    Open source ide for c#: windows (sharpdevelop) , on linux (monodevelop), on mac (monodevelop).
    Open source ide for java: for all platforms either eclipse or netbeans.

    Question of c# or java: really there is not much difference between c# and java, just like comparing a brand of apples as opposed to apples and oranges. Really the decision is do you want to be in the microsoft world or not. If not stick to java. If you do stick to microsoft - hope they do not change direction in the future.....

  289. DeVry: it's not the teachers, it's the students. by Pentomino · · Score: 2, Funny

    I'm a DeVry graduate, who took four semesters of COBOL in the mid-90's. And it seems you're asking the wrong question.

    The better course of action is to transfer your credits to a university that has more women attending.

  290. Flip a coin by vga_init · · Score: 1

    Each language has its strengths and weaknesses in the market. As other posters have mentioned, it also depends on which one you want to be on your resume.

    I too am a CIS major, and the mentors I've had at my college spent a lot of energy pounding in the idea that "language doesn't matter." Now, that might seem absurd and impractical in the real world, but sometimes even the work place will demand that you pick up a programming project in an odd language that you've never seen before. In this case, it really helps to develop critical programming skills that are language-agnostic. For me, they didn't care what languages I knew at all, but what kind code I could write regardless. Sometimes they would, "That's good a good C program. Now write it in ada."

    When you look at the big picture, you can't go wrong either way.

  291. .Net Needed by kks · · Score: 2, Insightful

    Between learning C# and Java, I would choose C#. I recuit software engineers and 90% of the positions we are looking for desire experience with C#/.Net. The demand for C# programmers doesn't seem to be slowing down any time soon.

  292. depends by McBeer · · Score: 1

    Both Java and C# are perfectly acceptable languages in my book. The tools for developing in them are a different story.

    Visual Studio is a beautiful thing for C#. It is massively ahead of any java development tool and will save you loads of time. With the build in documentation and autocomplete, you will be writing impressive applications in no time. The only downside is that you will need that free time to earn enough money to pay for it. So if you afford it, C# and visual studio get my vote. Otherwise, I guess you are stuck with java and some inferior development suite.

    --
    Hikery.net - The best hiking site ever. Made by yours truly.
    1. Re:depends by klang · · Score: 1

      Otherwise, I guess you are stuck with java and some inferior development suite. ..such as eclipse, is a very good free development environment for Java. And it runs on any platform that runs java. .. and as it's free, you can use your free time to get better at developing. ;-)

  293. Java vs C# by hackus · · Score: 1

    I would encourage you to pursue Java:

    1) It is hardware independant.

    2) It uses virtual machine technology.

    3) You can use any OS to study it.

    Finally, it represents the future of security protocols.

    None of these things are equivalent when discussing C# except when talking about Windows.

    All of the major research in software engineering and OS design will be in Open Source. If it is not, it is probably due to the fact it is esoteric and worthless to 99% of computing problems, will be patented and you will have to sign a license to understand it.

    (i.e. worthless)

    Java has a very active community that is building equivalent structures that are more effective than the Sun model of Java, and you get too look at the source code. (Open Virtual machines and native compilation libraries if your not interested in a VM to run your code.)

    So it is a win win situation.

    -Hack

    --
    Got Geometrodynamics? Awe, too hard to figure out? Too bad.
  294. Simple by Anonymous Coward · · Score: 0

    If you're on windows, use C# and .Net and all the MS goodness. However, don't expect to create cross platform programs.

    In all other cases, I repeat, in ALL other cases, use Java.

  295. Java by ls+-la · · Score: 1

    I've been using java for three years or so now. Trust me, you'll love the Java API. With it, before you write anything check whether it's already a part of the API. As far as I know, C# doesn't have anything like it. Plus with java, you get much more open source code and examples. Especially useful for things like MySQL / ODBC / JDBC connectivity open source.
     
      And if you need native code for speed, you can usually compile it with visual J#.

  296. Classic stupid argument against GC by SimHacker · · Score: 1

    It's been a while since I've seen somebody trot out the old ridiculous "I don't need garbage collection because I'm so smart I don't make mistakes" argument. I guess you also use your hand instead of toilet tissue because your shit doesn't stink, huh?

    -Don

    --
    Take a look and feel free: http://www.PieMenu.com
    1. Re:Classic stupid argument against GC by Gravis+Zero · · Score: 1

      im not saying im too smart for garbage collection, it's that ive only seen problems when it comes to garbage collection in garbage. hey, if it did it 100% automatically, i would probably think differently but it still depends on the coder to nebulously call it whenever.

      --
      Anons need not reply. Questions end with a question mark.
    2. Re:Classic stupid argument against GC by Gravis+Zero · · Score: 1

      dammit... i mean "problems with garbage collection in java." that was not intentional.

      --
      Anons need not reply. Questions end with a question mark.
  297. I'm sorry, but how does that matter? by Anonymous Coward · · Score: 0

    You say their competition isn't a business, but I really don't see how that matters.

    If a "nonbusiness" takes my customers, how isn't that competition?

    That's a very naive definition of "competition" you're using. It's not one business people with any savvy really adopt.

    1. Re:I'm sorry, but how does that matter? by metlin · · Score: 1


      A business tries making a profit, wherever they can. A non-business entity does not have that as a factor (enhancing shareholder value yada yada yada - you get the idea).

      That brings about several differences in the way a lot of things are handled.

  298. NeXT language? by Lars+T. · · Score: 1

    Objective-C

    --

    Lars T.

    To the guy who modded me down from perfect to terrible Karma - Apple haters still suck

  299. Re:Just Pick One and Learn it Well - or NOT by Totally_Lost · · Score: 1

    One of the problems of rapidly increasing complexity of applications, particularly Java/C#/C++ and other object oriented languages, is that performance is critically destroyed by design, and it's nearly impossible to recover it without re-writing the core of the application procedurally.

    The problem here is that small dynamically allocated objects with heavy pointer threading flush even large caches quickly and yeild very low locality combined with very low efficiency of cache line memory faults ... small amount of active useful data per cache line, and high overhead in data structures and useless data faulted in. This quickly applies at the page level as well, as locality remain poor between pages of bloated applications working set.

    CPU performance scales, even L1/L2 performance scales reasonably well, but raw memory perforance is two orders of magnitude slower than processors and quickly becoming three orders of magnitude slower. It's nearly impossible to constrain page level working sets of OO programs to scale performance.

    When more than 20% of your memory hits fault to raw memory, performance just crawls, and a faster machine, with lots more raw memory doesn't help, ... in fact, just makes it worse.

    Direct mapped caches, and small set associate caches do not work well with today's OO programming ... needed are very large fully associated caches, and those are not cheap to build.

    It's time to realize that for the last 5-10 years memory performace hasn't hardly (in comparison) improved at all ... and it's past time to start looking at programming tools that optimize performance by design, not destroy it.

    What good is a 4GHz processor, that runs at 100mHz memory speeds when it's all said and done because of poor cache line usage for every word or two referenced.

  300. Objective-C by Anonymous Coward · · Score: 0

    Common. Why am I the guy who has to post the OSX/Cocoa bait?

    Objective-C rocks. Best OO language ever.

  301. SSCLI by sharathms · · Score: 1

    >> Even the source of Sun's VM is available (though not under the GPL, at least you can read it, see what's going on in the VM, and fix bugs)

    You can check out SSCLI [a.k.a Rotor] which is a free [shared source licensing] implementation of the CLR. In other words, you too can see what's going on in the VM and fix bugs. You can also build it on FreeBSD and MacOS X.

  302. High School Student by SandManMattSH · · Score: 1

    I'm a high school student in a small boarding school. They don't offer any courses in computer science at my school.
    I want to learn a programming language, but I have no clue where to start.
    In my old school, we had toyed around with NetLogo, Scheme, and Python. We only got a small amount of each.

    Also, in my space time, I have done a lot of fooling around with BASH scripting. I believe I have gotten pretty good with this.

    Anyway, I have no real foundation in any formal languages, and I wanted to get started (even if you all think I should start with something a little more basic than C, C++, C#, or Java).

    So, what does everyone recommend as a FIRST (at least, formal) language? Also, can any of you recommend any really good books?
    PS: If you don't know what you're talking about, please don't speak. I'd rather not get confused.

    1. Re:High School Student by merith · · Score: 1

      Choose an easy ide(Integrated Development Environment) to use that has autolisting of members to make things easy. i.e sharpdevelop (C#) or eclipse (java).
      For java I would recommend the java programmers reference by grant palmer as if you have the question (ie how do I read a file) you can look this up.
      just remember you can always ask the net (i.e type a question into google) if you want to do something. Like how do I use dates in java.
      Other than that if you want the basic totorial sun has one on java online: turorial
      for c# I am sure someone will answer something

    2. Re:High School Student by cdcarter · · Score: 1

      As a high school student as well, I would reccomend Ruby. It is much like Python, but more flexible in my opinion. Try "Why's Poignant Guide To Ruby" and the Pickaxe from Pragmatic Programmer.

      --
      "Love is like a trampoline, first it's like "SWEET!!" then it's like *BLAMM!*"
    3. Re:High School Student by SandManMattSH · · Score: 1

      I looked into it a bit. It seems as though Ruby is sortof a new and emerging language with a very small community. What I am looking for is a good language to start with that has a decent community and is rather well-known so that I can ask questions and not have to search hard for my answers.
      Python, as I have often heard, is a good option for this.

  303. Re:Java.. by Anonymous Coward · · Score: 0

    Try Google, MSDN, or the Mono site for all sorts of examples. It takes about 60 seconds to find an example. /. posts aren't research papers and if the information is easily obtainable (and widley known by those of us who aren't uninformed) then the poster does not need to site sources. This is not a wild claim that needs all sorts of proof.

  304. YES! First learn comp sci concepts, not languages! by cheesy9999 · · Score: 2, Interesting

    Before I really had a clue what programming was about I went to a career day type thing at my high school. There was a guy speaking about computer programming, so I attended it. I asked the guy what he thought about learning to program for Macs vs. Windows (since I was really into Macs at the time).

    He said something along the lines of you don't just "learn to program Macs" or "learn to program Windows" (or "learn to program Linux" ;-) ), you learn the principles of computer science, then it's relatively trivial to learn new languages and APIs.

    So you should really focus on the core concepts like data structures and algorithms. Use whatever language the course uses.

    --
    -tom
  305. SharpDevelop? Mono? by mistapotta · · Score: 1

    Otherwise if you choose c#, the ony decent ide is visual studio which will cost you a fortune.

    We've used SharpDevelop http://sharpdevelop.com/ at our school for the past couple of years in our C# classes, and have found it to work out quite well. Having a program that can develop .Net on Win 98 computers is an added benefit for those of our students with, shall we say, Legacy equipment?

    I haven't had a chance to do any real work with Mono http://www.monodevelop.com/Main_Page, but I hear from some students that it works well.

    We've found that C# from a visual perspective works as a good transition language in our Pre-AP classes, and gets the students well acclimated for our AP class in Java.

    Keep in mind this isn't a small program. Our school has between six and eight classes in Computer Science (both Pre-AP, AP Year 1, and AP Year 2) annually.

  306. Ruby Smalltalk/Squeak etc. by Casandro · · Score: 1

    Why don't you use true object oriented languages?

    I mean at least Java is only partly object oriented. Both languages have the problem that they are awfully slow, but aren't that great. Essentially what you get with C# and Java are the disadvantages of an interpreted language with the disadvantages of a compiled language.

    Learn Ruby or Smalltalk, those will be _real_ object oriented languages. There you can also learn what it means to have an objects. Essentially there you don't call objects, but you only send messages to objects which themselves execute their methods.

  307. Object Oriented Programming by adrian82 · · Score: 1

    Hi,

    As someone who has done development in both languages. I find that the issue here is not which language to learn but learning of Object-Oriented concepts.

    Putting prejudices which both communities have against each other aside. The best which you can do is choose the course that teaches you Object Oriented concepts the best and not go into language specific details.

    In the end, its the concepts that you want to grasp. Later on in life, should you choose to develop in either language, you are able to apply those concepts.

    i.e. Python, Ruby, Smalltalk, Simula also have Object Oriented concepts. :)

  308. Re:Just Pick One and Learn it Well - or NOT by Jeremi · · Score: 1
    and it's past time to start looking at programming tools that optimize performance by design, not destroy it


    The thing is, most people don't care about performance. They have more CPU cycles than they know what to do with, and if their routine completes in 5ms instead 1ms on their 4GHz P4, they won't even notice it. What they will notice is whether it took 8 weeks to write and debug the application or 2 weeks. In short: developer time is expensive, CPU cycles are cheap.


    What good is a 4GHz processor, that runs at 100mHz memory speeds when it's all said and done because of poor cache line usage for every word or two referenced


    Hmm, that leads me to a question: when thread/process A causes a cache miss and is waiting for the data to be retrieved from RAM, can thread/process B run in the meantime? Or does the CPU simply "idle" and do nothing while waiting for the memory system to respond?

    --


    I don't care if it's 90,000 hectares. That lake was not my doing.
  309. Learn both; also ML,Haskell,Smalltalk,Lisp,C++. by master_p · · Score: 1

    Your knowledge about programming languages will be incomplete unless you learn the following languages:

    • ML: useful for learning how type systems work and why they are there. You will come to understand Java/C# Generics and various problems much better.
    • Haskell: it's like ML, although with lazy evaluation. It may seem weird at first, but if you stick with it, it will be like a revelation of programming.
    • Smalltalk: a true object-oriented programming language. You will understand why OO is about message passing and you will feel how messy Java and C# can be.
    • Lisp: you will understand how important is to be able to modify a running program, and how important is the ability to have a good macro system that can be used to make programs really small and very clever.
    • C++: you will understand why Java and C# was invented and what problems of C++ they solve, and what problems they have that C++ have solved.
  310. Non-C* Langages by Anonymous Coward · · Score: 0

    > Any language significantly different from a C/C++/Java-like language can't be supported efficiently.

    Not so.

    Jim Hugunin, creator of Jython, wanted to write a "Why .NET is a terrible platform for dynamic languages" article. He ended up writing IronPython - Python for .net, after finding out that .NET has better support for dynamic languages. And then Microsoft hired him, to work on IronPython and to improve dynamic language support in .NET, so they're dedicated to the concept.

    1. Re:Non-C* Langages by Anonymous Coward · · Score: 0

      I don't get it. Python isn't that different...

  311. heh by Anonymous Coward · · Score: 0

    I stopped reading at "DeVry University."

  312. Java or c# by oliderid · · Score: 1


    I know both languages, I'm not a genius but they are so closed. I bought two books on C#, play around, choose a pet project to explore its features and voilà.

    Some people seems to reduce the choice by either Visual studio or by Eclipse. Let me tell you that I can simply use notepad, Kwrite to start coding. Runtime environments are free to be downloaded for both. For java, I'm using other tool than Eclipse at work.

    What really matters is to learn Object oriented programming. You learn faster when you have fun.

    So what does the student like? Designing desktop application? Or does he prefer Server based application running on *nix OS? Does he want to join a sourceforge project? Working on a 3D video game? Developping a smartphone application? does he own a Blackberry or a Windows based smartphone? And so on.

    He should choose a project, his own pet project, whatever this project could be and then he should choose the language.

    There are as many demands for C# coders and for Java coders AFAIK. if you want to follow the hype, you get lost. Simply learn the language that you need. If you are a good programmer learning a new language is a matter of months (even weeks for some of us) not years.

    Olivier

  313. either one is good by Anonymous Coward · · Score: 0

    both java and c# are good and since it is just an intro course it really doesn't matter. If you plan on sticking arround the computer industry you will end up learning "a little" of both languages. Both of them are here to stay and both have good and bad features. Despite that you are a linux fan you cannot avoid writing code for windows and MS is pushing c# really hard. Yes there are ways to use .net with c++ as well but the lengths to which you have to go make it a very bad choice. Anyway if I were you I'd start with Java and maybe then go onto c# if you feel the need to. Plus c# is actually a mixture of c++ and java so you will find it to be an easy transition. That is once you learn how to use the .net framework.

  314. I just noticed again by Anonymous Coward · · Score: 0

    If there's one thing that's very original, even moreso on Slashdot, it's Windows/Microsoft bashing.

  315. Re:Java.. by anarxia · · Score: 1

    Visual Studio != C#. When you consume a Web Service, VS writes the necessary code for you.

  316. Depend son Platform by Anonymous Coward · · Score: 0

    In my humble opinion, this question primarily boils down to Performance VS. "true" cross-platform. To sum things up, you can easily say:

    1.) If you have no problem targetting the windows platform only, then go for C# as it offers better performance, and most importantly you can share your code with C++.net and VB.net programmers without having to rewrite anything in a different language.

    That being said

    2.) If cross platform is more important, then you should stick to Java. I have a bone to pick with Java myself, as I am a die-hard C++ guy, and because I am not at all impressed with its performance, even on cutting-edge machines (see ORACLE for example). However, if you MUST support more than one platform (I know you mentioned Linux), then you should deal with Java and prefer it over C#.

    I hope that helps

  317. Neither. by Pathetic+Coward · · Score: 1

    Learn Hindi.

  318. Java vs C# ... by verec1961 · · Score: 1

    Your arguments for picking one over the other, ie, the existence of Mono for C# meaning accessibility to non Windows, and being #1 in Sourceforge over C++ for Java have nothing to do with their intrinsic strengths or weaknesses. I would not frame the choice in those terms.

    I hate mediocrity, and I mujst admit that C# and Linux are good peers in that regard. Java is only so slightly better in terms of tooling (as far as I know, there's no Eclipse for C# and everything microsoft visual-whatever-net sucks almost by definition).

    In short, you're asking the wrong question. The better one:
    Should I pick Ruby, Smalltalk, Python, Lisp, PHP?
    Java and C# will suffer the fate of Ford's Model T: populare at one time, falling into oblivion the next day.

    What will you be programming in 10 years from now? Odds are against both of them.

  319. Cool down, jBorg by boomi · · Score: 1

    > As far as I know, C# doesn't have anything like it.

    Never heard of Microsoft's Dotnet framework? Microsoft is hyping Dotnet so much that people's brains turn off automatically when they hear it. Dotnet contains APIs, and many people say they're good. (I never tasted them.)

    Both Java and C# are over-hyped and non-free, just toss a coin if you must decide. My advice though, is to run.

  320. Visual Studio Express 2005 (C# & VB) for 15,-E by stiebing.ja · · Score: 1
    --
    I lag
  321. Both are anachronistic and badly designed by jopet · · Score: 1

    Both language deserve attention solely because an army of badly educated programmers use them or because programmers are forced to use them based on curcumstances like vendor lock it.

    But when it comes to how these languages are designed and what properties they have, both are very dated and both have a lot of flaws. If you want to learn a well-designed language that will teach you what is possible, when you want to grasp how different and easy programming can be if the language actually supports you with avoiding runtime errors and giving you the ability to use modern programming concepts, then look at OCAML.

    C## and Java will both teach you how to hassle with badly designed object-orientedness, a worsly designed type system and other limitations of all kinds. If you want to do real projects, circumstances will probably force you to be knowledgable about exactly that and like so many other programmers, you will not even know what *would* be possible.

  322. Re:Java is more credible as a cross platform langu by Bastard+of+Subhumani · · Score: 0
    Why did it bother to get C# implemented as an ECMA standard?
    I suspect it might be one of the following:

    1. Embrace
    2. Extend
    3. ...
    4. Profit!!!!!
    --
    Only three things are certain; death, taxes, and apocryphal quotations - Ben Franklin.
  323. Re:Java.. by SilentChris · · Score: 1

    All Visual Studio does is provide a GUI to exposing/consuming web services: writing the code "automagically". That doesn't mean the code isn't already there -- you can type out the code in Notepad if you want and compile it with any number of MS command line compilers (all free, I may add; Google for where to get them and the syntax).

    And the OP was right. Comparitively, .NET (and C#) has much much better support for web services than Java. I could consume a service with a few lines of code on .NET -- it may require dozens in Java. .NET was built around the time when web services were starting to take off; Java was written before, so a lot of this stuff was tacked on afterwards.

  324. Choose COBOL by Anonymous Coward · · Score: 0

    Y2K proved that COBOL programs aren't going away any time soon. Yet COBOL programmers are a dying breed, literally.

    Of course you're giving up any chance of working in a cutting edge environment, for iron clad job security.

  325. Exlicpse and c# by Anonymous Coward · · Score: 0

    You could of course simply use a C# plugin with Eclipse.
    http://www.gotmono.com/docs/ide/eclipse.html

  326. Bad advice by Anonymous Coward · · Score: 0

    Python is probably the worst language to learn OOP in. Here is just another Python guy trying to hype the language. So otehr Python guys can point at it and hype it even more.

    1. Re:Bad advice by g0bshiTe · · Score: 1

      I like Python.

      If you can afford to regardless of your course of study, take both.
      There will be no harm in both and you will not back yourself into one corner or the other.
      As for programming learn whatever languages on your own you would like.
      No matter the language most times the theory will carry from one to the other.
      The language however, is a matter of personal preference.

      --
      I am Bennett Haselton! I am Bennett Haselton!
  327. You don't know 1 bit of what you are criticising.. by trezor · · Score: 1

    Visual Studio has had most of these features for ages. Be it inline documentation or database integartion or the plug-in ability.

    Just because it's not done entirely like in eclipse or you didn't bother to find out how doesn't make it so. It just makes you a troll. I can more or less refure any point on that list, but then again, I'm actually a certified developer and have actually worked up some knowledge on the product I'm talking about. Totally unlike you.

    The only valid point you have is that is your are a OSS zealot, Exclipse is actually free as in speech and that Eclipse is designed for many languges while Visual Studio .NET is designed for the .NET framework (big surprise there, ey?). People like you make the OSS seem like ignorant and zealous morons. Do the OSS community a favour and shut up.

    --
    Not Buzzword 2.0 compliant. Please speak english.
  328. C# plugin for Eclipse by kurokaze · · Score: 1

    There is a C# plugin for Eclipse that will allow you to develop on it.

    http://www.improve-technologies.com/alpha/esharp/

    Not that I'm a big fan of eclipse, I find the UI slow and cluttered compared to VS .NET

  329. True but... by Anonymous+MadCoe · · Score: 1

    The originalposter mentiones being in the second term. Possibly it would be good advice not to qworry about the job market just yet. For one things may change, secondly someone who knows programming well, would be able to quickly adapt to another language.

  330. take it easy, there by nule.org · · Score: 1

    Have you read the Sun Community Source License? I don't exactly like its terms compared to other licenses but I would hardly call it viral. Sun definitely owns whatever you do to Java, but it doesn't encumber other work you do. Look, I'm an open source hippy too, but no need to get carried away with things.

  331. Pick more than one by canuck57 · · Score: 1

    Well if you choose Java, then you can use free Eclipse IDE which is excellent.

    That might be one reason but it isn't the strongest.

    Just list which OSes and platforms are supported by each. Portability of your code is only unimportant if you code for one.

    But one comment about C#, it is bastardized C++.

    Note that C/C++ is the OS/system language of choice because it produces relatively tight fast code when compared to Java/C#. If you learn C#, learn the C/C++ FIRST as so to know the differences.

    This reminds me of a story of one hot shot talker that got canned recently. They wrote this very functional application in Java, a client piece and a server piece. The business people were in heat and wanted to roll it out to 3000 users immediately! After about 10-20 users hit the system they called us in as performance and reliability tanked.

    What I found is that the server piece was one VM instance per user at about a 250MB footprint, 80 for the VM and the balance for data. On a 2GB RAM server it started to thrash at 10, unstable at 20. So I suggested a rewrite of the server component, as 300 servers would be needed otherwise. Management balked and got someone else, cost them $50K and got the same answer. Months later they are still trying to rewrite it, although they will eventually succeed the costs and delays are hurting them.

    The moral here is use the right tool for the right place keeping the end use in mind. Avoid vendor hype and be rational in the choices. Architect your software, don't just hack it and make it look pretty for one if it has to scale.

    Which also means if you are a professional software developer you will need to know more than one language. In order, I prefer C/C++, Java, UNIX shells and utilities myself. Languages like C# and J# are too narrow in portability and scalability for what I do.

  332. Just Pick One and Learn it Well-Giving to me. by Anonymous Coward · · Score: 0

    "And exactly that was the problem of the guy you replied to in an arrogant way. MS is just taking never ever giving back. and of course this is the way companies are working."

    They're "giving back". What you meant to say is that they're not "giving back" what you feel they should give back. A very important distinction. That applies to Sun's Java as it does MS (hence the bitching about Java not being GPL free).

    "Have you heared of Open Source lately?"

    I've also heard of it's "issues", but that's a discussion for another day.

  333. Re:Java.. by John+Harrison · · Score: 1

    Is it also true that Java does not have a webservices framework as implied by the post?

  334. Was in your shoes by buk110 · · Score: 1

    For what it's worth, and I doubt it's worth much. But I'm a Senior at Penn State and during my Junior year I was finally exposed to OOP and the language they taught us was JAVA. At the time I wasn't too in the know about C#.
    Well, I just decided to start learning it my self in preperation for having it as a course next semester. Anyways, long story short, once I learned one language and used it heavilly [JAVA] , C# became really easy to pick up.
    So I guess what I'm trying to get at here, is this. You really can't make the wrong choice, when you pickup the one just learn the other later. They are soo close minus some syntax changes and libraries. And for what it's worth, I really think I like C# more, it's the way the compiling is done and it just seems like C# has some nice libraries. Hope that helps

  335. Enthusiasm? by Decaff · · Score: 1

    Java, on the other hand, is inherently more Linux-friendly due to its intentional cross-platform nature, but at the same time it doesn't really seem to be inspiring the same kind of developer enthusiasm as Mono.

    I'm not entirely sure how you measure enthusiasm, but:

    http://www.jroller.com/page/matsh?entry=java_histo ry_was_made_today

    "Today Java overtook C++ as the language with most projects on SourceForge".

    and

    www.dice.com (jobs)

    Java: 13,000
    C#: 3900
    mono: 9

    Does a few people being very enthusiastic outweigh thousands being slighly enthusiastic?

    or is this sort of statement just wishful thinking?

  336. I know this is old but... by Anonymous Coward · · Score: 0

    holy cow

    you're all terribly misinformed and petty and so overly detail oriented that you can't see the trees for the forest, and yet are so inflexible that you cling to the old as fuck unix toolkit for dev stuff. C (maybe perl, but it's not a REAL language) FOR EVERYTHING!

    This happens ALL THE TIME>

    fuck you slashdot posters

    seriously. Fuck You.

  337. Re:You don't know 1 bit of what you are criticisin by Anonymous Coward · · Score: 0

    The parent post was not talking about Visual Studio. It was talking about the free version of Visual C# Express which is what the entire conversation thus far has been about. The parent poster was asked to give examples of why Visual C# Express does not compare to Eclipse and he gave an extensive list that is completely accurate. He even mentioned several times that his complaints are not valid against Visual Studio as it includes many of those features. This is about free IDE's not IDE's that cost hundreds of dollars.

    Maybe you should spend less time playing with Visual Studio and more time learning to read you fucking moron.

    P.S. By your logic instead of comparing two freely available IDE's we should compare a free IDE with one that costs hundreds of dollars simply because Microsofts free IDE is severely lacking. Retard.

  338. Re:You don't know 1 bit of what you are criticisin by Anonymous Coward · · Score: 0

    Either your reading comprehension or deductive reasoning skills are astonishingly poor, which is it?

  339. Re:C# by leabre · · Score: 1

    If only I can mod you one. I think the main sentiment on /. is simply "Microsoft Sucks, .NET Sucks, Java rocks, Ruby and Python all the way". I make a living in C# development since the earliest of betas. I've only recently startd Java development but after spending years on .NET and still learning things about it, just getting started in Java is a daunting task. In the end, I think they are both serious contenders but Microsoft really has the ease-of-use thing down to an art.

    In any case, one isn't better than the other, IMO. Just that whichever you learn, you'll be more productive in, naturally. But as far as the Eclipse v. VS.NET, I think the whole anti-microsoft attitude is detrimental to OSS as a whole. Sure, they only know how to play catchup and follow-the-leader, but in doing so, there's so much they miss and refuse to learn from which can make their own offerings even better.

    I say, learn which ever one you want and look for work doing it. Be happy. The happiest programmers I know are the most productive and inspirational. I hate working with unhappy programmers because they are so de-motivating.

    Thanks,
    Leabre

  340. Re:C# by leabre · · Score: 3, Interesting

    I forgot to say, when it comes to culture, I, by far, prefer working with Microsot programmers (.NET/C++/VB) becuase of their general attitude. In the many places I've worked and consulted, they generally (not as a rule of thumb) want to learn more, be good like that Java guys (there's a weird perception at play here) and are open to new ideas and not generally zealous and anti-linux or anti-oss.

    Working with Java people or Linux zealots, on the other hand, is not for the faint of heart. They are so anti-microsoft, anti-capitolist software market, so friggin' self-righteous, and whatnot that its annoying. Since I'm not in this camp, I prefer the more lax Microsoft sheeple-type culture over the annoying and forceful anti-everying-but-what-I-believe-in camp.

    Thanks,
    Leabre

  341. RE: learning java or C# by solo6 · · Score: 1

    C# is an extension of C++, is an extension of C. Most major applications now available, including Java,Linux and Windows, are written in one of the first two iterations. C# is too new a variation to yet register on the scale set by C and C++. Forget about your 'committed to Linux' statement unless you plan to use your studies to either work exclusively with small server shops and, perhaps, supporting the minimal user base of Linux desktop software. Learn C++ and the rest is easy. Once familiar with that, you can go forward or back as circumstances require and apply your skills to the humungous user base of C style applications. Once C++ skills are learned, Java becomes just another C variant with some niceties thrown in.

  342. Re:You don't know 1 bit of what you are criticisin by Anonymous Coward · · Score: 0

    You're "a certified developer"! WOW! Only a complete retard would brag about something like that. Everyone knows that any dumb monkey, such as you, can get certified. If you go for certification and you fail you're completely incompetent. So I guess you're not completely incompetent, just incredibly close. Let me guess you're also an MCSE?

    How about you refute some of the parent posts points instead of just talking about an entirely different product and sounding like a complete fucking idiot? I know this may come as a surprise to someone as astoundingly stupid as you, but Visual Studio is not the same product as Visual C# Express (which is what this thread has been about all along).

    You might need to get "certified" in reading comprehension.

  343. To sum up all the bullshit by Anonymous Coward · · Score: 0

    Take the one with the better teacher and learn OO programming first, but in the end learn both. That will make your resume look better than just one of the languages alone. Since Java is much more mature, it may be a good idea to learn Java first since MS copied most of the features from Java and called it J#/C# (they really both look like Java). Also since you like Linux, .NET won't do you much good.

  344. JAVA for microcontrollers by maitas · · Score: 1

    In fact Sun had a e-Gast Station concept that used JAVA enabled microcontrollers for the dispensers... just Google for JAVA microcontroller and you will find plenty of references.

  345. Java or C#? Why not both? by Kell_pt · · Score: 1

    From a learning point perspective, one would probably think of Java as being a more "pure" OO language. On the other hand, it misses a couple important features of modern OO languages, namedly "properties", which C# has. My advice? Learn both.

    Forget Microsoft for a minute here. C# is a modern language, developed by a bright team (including Anders Hejlsberg of Delphi fame) with really improved and rich syntax. Java is older but proven. So why not take the chance and learn both?

    If you're taking computer sciences, be prepared to learn a couple languages outside school. You can learn one at school and others on yourself, which will make you a much better programmer by developing your ideas in terms concepts and generic programming methods instead of a specific language. Also, learning both at the same time allows you to discover different approaches to the same problems, will boost your skills and make you a much better programmer (and eventually, a better software developer). :)

    --
    "I don't mind God, it's his fan club I can't stand!" E8
  346. Re:Java.. by kpat154 · · Score: 1

    Wow, the root post could not be more wrong. Not even more wrong than a 400lb woman in a 2 piece bikini. C# (actually, the .NET Framework) was built from the ground up to support Web Services. Get a clue.

  347. Re:Java.. by VGPowerlord · · Score: 1
    Is it also true that Java does not have a webservices framework as implied by the post?

    No.

    --
    GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
  348. None of the above by samantha · · Score: 1

    Java and C# will rot your brain. Find a school that will give you something cool that will help you find some joy and power in programming like Python or Ruby. At the very least be very sure to learn these languages on your own. if you have to choose between Java and C# though then definitely go with Java. C#, except for Mono, fits you for nothing but being a minion of the Evil Empire. Just say no.

  349. Diehard Linux User by oldCoder · · Score: 1
    Don't be a diehard user. Over your career, things will change. If you're a diehard user you'll die hard when things change.

    C# is a better system, technically, but Java is more popular. By that I mean the C# language is a bit more advanced. This may change. But I like the way C# handles array arguments and class-versioning. That is, when you're superclass changes on you it's a lot less likely to bite you in the butt.

    In any case they'll send your job to India and invite you to work as a software tester. A CS/SE degree by itself isn't worth too much. Get another degree in something else to go with it. Math or business or genetic engineering or physics or something.

    When you graduate, the interviewers may ask you if you tested anything. Lie and say no, just my unit tests. This way you avoid jobs as a software tester. Say "I just never got the hang of testing -- wrong psychology". "The other folks on the team did the testing". Or any other bull that comes to mind.

    Learn lisp. It was officially declared obsolete years before you were born but that turned out to be a mistake.

    Learn APL. It's so weird it will open your mind.

    Do not learn PL\1.

    Learn smalltalk. It's the mother of a lot.

    If you want to be a software engineer/coder/hacker learn assembler. It will teach you about the machine.

    --

    I18N == Intergalacticization
  350. Re:Java.. by John+Harrison · · Score: 1

    Since it isn't at all clear from my post, I should probably point out that I am well aware of J2EE and I was trying to make a point that the post was wrong. I probably didn't do a very good job of that.

  351. Yeah Mr Phyton. by jotaeleemeese · · Score: 1

    I did not see that he mentioned his school offering the language, but never mind, thank you for such useful suggestion.

    Fucking zealots.

    --
    IANAL but write like a drunk one.
    1. Re:Yeah Mr Phyton. by namekuseijin · · Score: 1

      This isn't really a matter of languages: this is a Java vs .NET match. In the near future, there'll really be 3 very widespread development platforms: POSIX, java and CLR ( .NET's runtime and WVista's base )... that's what people are concerned about, not a mere superficial syntatic detail like the language addressing such resources...

      But either way python runs on all of them and is far easier and more manageable language than their respective defaults ( C, java, C# )...

      --
      I don't feel like it...
    2. Re:Yeah Mr Phyton. by Anonymous+MadCoe · · Score: 1

      Well it is a matter of languages, since the question was "which language shall I learn?". Python was not an option.

  352. Slahshdot: where is the option to create a poll? by jotaeleemeese · · Score: 1

    That would give an aproximate idea to the poster about where the wind is blowing.

    My 2 centavos: I have worked for several big companies in several industries and Java is still king in companies that matter. It is a technology well understood and standarized. Mature in one word.

    If you want to increase your employability and your prospects of a higher salary learn Java technologies to the rot. People that need a good Java programmer recognize one when they see him.

    People pretending to know C# in the other hand are a dime a dozen, and the technology is not mature. Mono is nice and all, but many companies are thinking how to deliver internal applications to Web browsers, that makes many server side application development teams naturally reluctant to use C# since they know the lock in is always a disaster witing to happen, with Java that is less of a concern and one reason of several why people feel more comfortable working with it.

    --
    IANAL but write like a drunk one.
  353. Java by Anonymous Coward · · Score: 0

    I would definitly use Java because of it's cross-platform abilities and ability to develop on the best open-source platforms like Eclipse. Micrsoft is slowly learning that they must adjust themselves to open standards or they will lose in the end.

    You can always pick up C# with a strong Java background as well.

  354. Re:Java is more credible as a cross platform langu by jsight · · Score: 1

    1. GNU Classpath has nothing to do with runtimes, it's a GNU replacement for the standard Java libraries.


    Thank you captain obvious! There are about a dozen runtimes that can use GNU classpath, vs. about 2 that can use the Mono libs. So the free Java camp wins in either case.


    2. You must not keep up with Mono development, which admittedly is sometimes going a bit too fast to keep track of. In any case Mono is essentially feature-complete at this point, while Classpath still has a ways to go. It's not used by many (any?) serious development outfits.


    Yes, actually I follow both quite closely. The mono classlibs are decently compatible with DotNet 1.1, and terrible in comparison to 2.0. The Winforms implementation kind of pretends to be close to 1.1, but generally is unusable for real applications.

    With Classpath, they have very close to completley compatilibity with 1.4 (many real-world Java apps will work with no recompiles) and their Swing support is in a similar situation to the SWF implementation in Mono.

    Unfortunately, the Mono runtime itself is still fairly immature.

    As far as I know, neither has strong support commercially at this point.