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 :)"

107 of 817 comments (clear)

  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 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.
    5. 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.

    6. 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.
    7. 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
    8. 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?

    9. 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
    10. 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.

    11. 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.
    12. 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.
    13. 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
    14. 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.

    15. 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.

    16. 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.
    17. Re:Just Pick One and Learn it Well by BorgCopyeditor · · Score: 2, Insightful
      --
      Shop as usual. And avoid panic buying.
    18. 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.

    19. 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.

    20. 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
    21. 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?

    22. 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
    23. 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.

    24. 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

    25. 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.
  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 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
    2. 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.

    3. 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.)

    4. 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...

    5. 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.)

  3. 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/
  4. 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.

  5. 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 breckinshire · · Score: 5, Funny

      Has more ladies! Oww!

    2. 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).

    3. 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
  6. 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 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.
    2. 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.

    3. 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.

    4. 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/
    5. 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
    6. 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

    7. 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.

  7. 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.

  8. 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.

  9. 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).

  10. 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 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.
    2. 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.
    3. 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.

    4. 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.

  11. Python by Anonymous Coward · · Score: 2, Interesting

    Learn Python, take whatever crap they teach at your college...

  12. 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?

  13. 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
  14. 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#.

  15. 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.

  16. 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).

  17. 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.

  18. 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.

  19. 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.

  20. 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.
  21. 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!
  22. 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.

  23. 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!
  24. 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.

  25. 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
  26. 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.)

  27. 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.

  28. 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.

  29. 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

  30. 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.

  31. 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
  32. 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.

  33. 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

  34. try learning Hindi instead by justdrew · · Score: 2, Funny

    languages are so passe, how are your powerpoint skills?

  35. 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.

  36. emacs! by heson · · Score: 3, Funny

    Choose whatever language you like as long as you use emacs.

  37. 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.
  38. 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.
  39. 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#.

  40. 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 ..."
  41. 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
  42. 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.

  43. 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. :-)

  44. 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.

  45. 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.
  46. 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.

  47. 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
  48. 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.

  49. 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!
  50. 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.

  51. 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(!)

  52. 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.

  53. 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

  54. 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 ...

  55. 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...
  56. 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.....

  57. 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.

  58. .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.

  59. 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
  60. 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