Forgot your password?
typodupeerror
Programming Technology

Learning Java or C# as a Next Language? 817

Posted by Cliff
from the decisions-decisions dept.
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 :)"
This discussion has been archived. No new comments can be posted.

Learning Java or C# as a Next Language?

Comments Filter:
  • by byteCoder (205266) * on Friday December 23, 2005 @04:30PM (#14328806) Homepage
    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.
    • by theGeekDude (905574) on Friday December 23, 2005 @04:33PM (#14328833)
      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.
      • by iced_773 (857608) <`ten.yevadnai' `ta' `nai'> on Friday December 23, 2005 @04:37PM (#14328881)

        visual studio which will cost you a fortune

        Come again? [microsoft.com]
        • by moro_666 (414422) <`kulminaator' `at' `gmail.com'> on Friday December 23, 2005 @04:57PM (#14329031) Homepage
          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 ?
          • by LordEd (840443) on Friday December 23, 2005 @05:44PM (#14329365)
            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 [sun.com]?
            • 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.
          • by Trepalium (109107) on Friday December 23, 2005 @05:57PM (#14329446)
            Yes, you were just lazy. They're called assemblies in C#, and you can dynamically load them via the System.Reflection.Assembly.Load() [microsoft.com] 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 [msdn.com] 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 [wikipedia.org] 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).

        • by MBCook (132727) <foobarsoft@foobarsoft.com> on Friday December 23, 2005 @05:41PM (#14329346) Homepage
          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.
      • 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. [microsoft.com] You can also get SQL 2005 Express Edition on the same page.

        • 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.
      • Come [icsharpcode.net] again? [microsoft.com]

        Less FUD please, thanks. :)
      • by Durrik (80651) <pwright.ryksyll@com> on Friday December 23, 2005 @05:29PM (#14329262) Homepage
        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.
    • by ShatteredDream (636520) on Friday December 23, 2005 @05:04PM (#14329100) Homepage
      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.
      • It's good advice... (Score:5, Interesting)

        by Da VinMan (7669) on Friday December 23, 2005 @06:27PM (#14329588)
        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.
      • by tyler_larson (558763) on Saturday December 24, 2005 @02:29AM (#14331318) Homepage
        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.

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

  • Java - Duh. (Score:2, Insightful)

    by sbaker (47485) *
    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.
    • Re:Java - Duh. (Score:3, Insightful)

      by ackthpt (218170) *
      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 f

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

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

    • Re:Java - Duh. (Score:3, Insightful)

      by 0xABADC0DA (867955)
      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 co
    • emacs! (Score:3, Funny)

      by heson (915298)
      Choose whatever language you like as long as you use emacs.
  • 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.
  • by Anonymous Coward on Friday December 23, 2005 @04:33PM (#14328839)
    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.
  • by TrumpetPower! (190615) <ben@trumpetpower.com> on Friday December 23, 2005 @04:33PM (#14328843) Homepage
    ...is being taught by a better professor.

    Cheers,

    b&
  • Java. (Score:5, Insightful)

    by dan_sdot (721837) on Friday December 23, 2005 @04:33PM (#14328844)
    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.
    • Seconded. The differences between java and C# are relatively small, but java fits better in a Linux environment. If you want to become a serious software engineer you should spend some time to learn one or two other programming languages too, to broaden your view.
    • Re:Java. (Score:5, Interesting)

      by b17bmbr (608864) on Friday December 23, 2005 @04:43PM (#14328944)
      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.
  • by tenchiken (22661)
    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.
  • 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.
  • by RailGunner (554645) * on Friday December 23, 2005 @04:34PM (#14328850) Journal
    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).

  • by Anonymous Coward on Friday December 23, 2005 @04:35PM (#14328856)
    Then I would pick whatever is used for french fry machines.
    • by StarWreck (695075) on Friday December 23, 2005 @09:44PM (#14330416) Homepage Journal
      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 [comcast.net]

      Oh yeah, I did this entire project at DeVry.
      • >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.
  • Learn both? Nothing is precluding you from taking both courses, or taking one course and learning the second language on your own time. You'll have a greater sense of both languages should you take the time to see the ins and outs of both.
    • If his coursework is anything like mine, it's just one class and they tell you "choose Java or C#"- personally, I'd choose C++ given that choice. ;)
  • Python (Score:2, Interesting)

    by Anonymous Coward
    Learn Python, take whatever crap they teach at your college...
  • 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.
    • 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.
    • My two cents... (Score:5, Interesting)

      by Savage-Rabbit (308260) on Friday December 23, 2005 @05:33PM (#14329295)
      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.
  • by moehoward (668736) on Friday December 23, 2005 @04:36PM (#14328867)

    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.
  • Definitely Java (Score:2, Interesting)

    by Anonymous Coward
    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 [overholt.ca]

    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#.
  • Why not learn both? At my university, I learned Java and then C++. They are very similar syntactically (minus pointers and a few other things). I've never learned C# though, so I can't really comment. As to what will be more useful, Cross-platform is good, but I would't think it's as important as one might think (since most, even busnesses, use Windows unless they can afford a very large IT department). And with rumors flying around that Java may have peaked, that adds even more confusion. In your cas
  • Other question you can make yourself is... for what kind of applications? Im pretty comfortable with perl for system administration, or php for small but very useful web apps. Going for desktop, embedded, web, mainly for one or another OS, etc apps could change what is the "best" language you should pick. If well languages are somewhat "converging" in features and semantics, still your pick could depend on your target.
  • What language you learn is irrelevant. There will be occasions where you can use either in the future, and learning more languages of the same class (logic, imperative, functional, et al) once you know one becomes almost trivial. What is important are the concepts set forth in the class. Heredity, data hiding, motivation for using OO, etc... are the importants concepts to take away from the class. An Object Oriented Programming class is for studying OO, not languages.
  • by HellYeahAutomaton (815542) on Friday December 23, 2005 @04:39PM (#14328903)

    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.


  • Learn the one which you have access to the most resources right now. You'd want to be able to ramp quickly with a good tutor, intersting project and common crowd. In the future, you can cut your own way, given the company you want to work for.

    Interesting companies in all sectors are hiring both types of programmers, so ignore the scare of vendor lock. Rather than product, try to know either one *deeply* right now. Both platforms are intricate and demand quite a bit of ramp.

    And for god's sake man
  • EIther is fine (Score:5, Interesting)

    by Rycross (836649) on Friday December 23, 2005 @04:40PM (#14328907)
    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).
  • Instead of C#, I would reccomend learning C/C++ on Linux since you said you were a Linux fan. The main point of C# is to lock you into proprietary extras that Microsoft adds into the mix. I'd reccomend not getting hooked on any of those. Instead stick with free opensource libraries. This will not only make it so that you can avoid paying for high end server software, but you will probably get better quality software and more supported software as well.
  • 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.
  • by fanblade (863089) on Friday December 23, 2005 @04:44PM (#14328953) Journal
    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.
  • In all seriousness, make sure you take some accounting and/or business classes and learn to understand and talk to the people that will hold all the power and make your life in the real world a living hell. The coolest code in the world doesn't mean crap to someone who only sees a balance sheet or P&L numbers. Learn to deal with these weasels now before it gets harder to as you get older:)
  • Personally I would choose Java but perhaps that's because I ahve made a good living from knowing Java. I don't see either Java or C# really having much impact in Linux anytime soon. Java has issues with deployment in almost every distribution and Mono just isn't there yet.

  • It doesn't matter. (Score:3, Insightful)

    by Inoshiro (71693) on Friday December 23, 2005 @04:47PM (#14328964) Homepage
    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.
  • Java. (Score:2, Insightful)

    by Concern (819622) *
    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, not
    • Re:Java. (Score:3, 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.
  • by iabervon (1971) on Friday December 23, 2005 @04:52PM (#14328995) Homepage Journal
    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.
  • afaict the differences between them are just in the standard libs and some of the syntaic sugar. So whichever one you learn i'd imagine picking up the other will be pretty easy.

  • Java is cross-platform while C# isn't. 'Cross-platform doesn't mean that your java app will run on Windows and Linux, athough it would of course. No...what it means is that your cool new java app will run on the platform you are using right now and also the platform you will be using in 10 years. THAT is cross-platform and it is true with Java and it will NEVER be true with .NET. And that is why Java will still be used long after Bill Gates has retired. So, learning either one would be good but Java is li
  • by BigZaphod (12942) on Friday December 23, 2005 @05:07PM (#14329113) Homepage
    What you really should be learning is the up-coming trend of Transport Oriented Languages [bigzaphod.org]. 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.)
  • by defile (1059) on Friday December 23, 2005 @05:09PM (#14329132) Homepage Journal

    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

  • Obviously learn Java (Score:3, Informative)

    by kebes (861706) on Friday December 23, 2005 @05:13PM (#14329164) Journal
    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!
    • 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
  • C# (Score:5, Insightful)

    by Unnngh! (731758) on Friday December 23, 2005 @05:21PM (#14329225)
    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.
    • Re:C# (Score:4, Interesting)

      by leabre (304234) on Saturday December 24, 2005 @06:18PM (#14333805)
      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
  • by advocate_one (662832) on Friday December 23, 2005 @05:29PM (#14329270)
    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 [mmu.ac.uk] on my OOP course
  • Java at Job Fare (Score:5, Interesting)

    by chiok (858005) on Friday December 23, 2005 @05:31PM (#14329281)
    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#.
  • It's Obvious (Score:3, Insightful)

    by nate nice (672391) on Friday December 23, 2005 @05:32PM (#14329287) Journal
    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.

  • by belmolis (702863) <billposer&alum,mit,edu> on Friday December 23, 2005 @06:35PM (#14329623) Homepage

    If all the complaints here about outsourcing are correct, rather than Java or C# you should learn Hindi.

  • by scarlac (768893) on Friday December 23, 2005 @08:27PM (#14330177) Homepage
    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(!)
  • Language? (Score:4, Insightful)

    by Mybrid (410232) on Friday December 23, 2005 @10:10PM (#14330524)
    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.

  • by namekuseijin (604504) on Friday December 23, 2005 @11:11PM (#14330760)
    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...
  • by merith (941119) on Saturday December 24, 2005 @12:01AM (#14330939)
    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.....
  • by Pentomino (129125) on Saturday December 24, 2005 @12:07AM (#14330953) Homepage Journal
    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.

Genius is ten percent inspiration and fifty percent capital gains.

Working...