Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Learning Java or C# as a Next Language?

Cliff posted more than 8 years ago | from the decisions-decisions dept.

Programming 817

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

cancel ×

817 comments

Sorry! There are no comments related to the filter you selected.

Diehard Linux user? (-1, Troll)

Anonymous Coward | more than 8 years ago | (#14328805)

If you're a "diehard Linux user," shouldn't you already know Java?

Re:Diehard Linux user? (5, Insightful)

Anonymous Coward | more than 8 years ago | (#14328910)

If you're a "diehard Linux user," shouldn't you already know Java?

No. No you should not.

MOD PARENT +100 FUCKIN' RIGHT!!! (0)

Anonymous Coward | more than 8 years ago | (#14329044)

I wish I had mod points right now...

Just Pick One and Learn it Well (5, Interesting)

byteCoder (205266) | more than 8 years ago | (#14328806)

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.

Re:Just Pick One and Learn it Well (5, Informative)

theGeekDude (905574) | more than 8 years ago | (#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.

Re:Just Pick One and Learn it Well (4, Insightful)

iced_773 (857608) | more than 8 years ago | (#14328881)


visual studio which will cost you a fortune

Come again? [microsoft.com]

Re:Just Pick One and Learn it Well (4, Insightful)

moro_666 (414422) | more than 8 years ago | (#14329031)

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 ?

Re:Just Pick One and Learn it Well (1)

Nataku564 (668188) | more than 8 years ago | (#14329038)

Temporarily free.

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

Re:Just Pick One and Learn it Well (2, Informative)

PPGMD (679725) | more than 8 years ago | (#14328912)

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.

Re:Just Pick One and Learn it Well (1)

fyrie (604735) | more than 8 years ago | (#14328916)

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

Re:Just Pick One and Learn it Well (1)

Rycross (836649) | more than 8 years ago | (#14328938)

Come [icsharpcode.net] again? [microsoft.com]

Less FUD please, thanks. :)

Re:Just Pick One and Learn it Well (1)

sedrules (643301) | more than 8 years ago | (#14328986)

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

Re:Just Pick One and Learn it Well (1)

Armour Hotdog (922576) | more than 8 years ago | (#14328989)

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

Huh?

Re:Just Pick One and Learn it Well (0)

Anonymous Coward | more than 8 years ago | (#14329013)

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

Re:Just Pick One and Learn it Well (1)

mabinogi (74033) | more than 8 years ago | (#14329022)

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

Neither! (-1, Troll)

nb caffeine (448698) | more than 8 years ago | (#14328807)

I dont have a suggestion, but c#/java? Im not a fan of either

Re:Neither! (1)

Richard W.M. Jones (591125) | more than 8 years ago | (#14328924)

Damn right. I recommend Objective Caml [ocaml-tutorial.org] instead. A functional/object/imperative language which is type safe, practical and very very fast.

Rich.

Re:Neither! (1)

Catskul (323619) | more than 8 years ago | (#14329006)

Ive tried both... I dont like Java, and Im learning to love C#. It has the fewest quirks of the OO languages I have used. And it seems to have learned lessons of the failures of those have come before. Dont hate it just because it came from Microsoft, from what I understand (but im not certain) C# is a more open/free language than Java.

Java - Duh. (2, Insightful)

sbaker (47485) | more than 8 years ago | (#14328808)

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. (1)

eargang (935892) | more than 8 years ago | (#14328848)

C# a work of the devil? Uhm. Mono [mono-project.com] anyone?

Re:Java - Duh. (3, Insightful)

ackthpt (218170) | more than 8 years ago | (#14328883)

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.

Re:Java - Duh. (1)

slavemowgli (585321) | more than 8 years ago | (#14328904)

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

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

Re:Java - Duh. (3, Insightful)

0xABADC0DA (867955) | more than 8 years ago | (#14328957)

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.

Re:Java - Duh. (0)

Anonymous Coward | more than 8 years ago | (#14329021)

Let loose the flaming trolls!!


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

(Incidentally, I'm baffled that people can think "loser" is spelled "looser", but no one on Slashdot seems to misspell "lose" as "loose.)

which to choose (1, Insightful)

Anonymous Coward | more than 8 years ago | (#14328815)

It really doesn't make a difference

Re:which to choose (1)

rovingeyes (575063) | more than 8 years ago | (#14328951)

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

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

Re:which to choose (0)

Anonymous Coward | more than 8 years ago | (#14329037)

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

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

As someone who has taken both... (3, Interesting)

TheSpoom (715771) | more than 8 years ago | (#14328816)

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.

Re:As someone who has taken both... (4, Insightful)

gcnaddict (841664) | more than 8 years ago | (#14329005)

C# != MSJava;

J# == MSJava;

lol (-1, Offtopic)

Anonymous Coward | more than 8 years ago | (#14328830)

lol DeVry lol

I'd learn (1)

ackthpt (218170) | more than 8 years ago | (#14328836)


I'd learn Snoo

Re:I'd learn (0)

Anonymous Coward | more than 8 years ago | (#14328937)

I'd learn Snoo

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

both -- then more -- it's fun! (4, Insightful)

Anonymous Coward | more than 8 years ago | (#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.

Go Java (0, Troll)

iced_773 (857608) | more than 8 years ago | (#14328841)


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

Re:Go Java (1)

DCstewieG (824956) | more than 8 years ago | (#14328896)

Hey look I can do that too!

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

Take whichever one... (5, Insightful)

TrumpetPower! (190615) | more than 8 years ago | (#14328843)

...is being taught by a better professor.

Cheers,

b&

Re:Take whichever one... (1)

allelopath (577474) | more than 8 years ago | (#14328880)

good advice

Re:Take whichever one... (5, Funny)

breckinshire (891764) | more than 8 years ago | (#14328908)

Has more ladies! Oww!

Re:Take whichever one... (1)

mvfranz (258949) | more than 8 years ago | (#14328931)

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

Re:Take whichever one... (1, Funny)

Anonymous Coward | more than 8 years ago | (#14328941)

Which is neither, because he's at DeVry.

Java. (5, Insightful)

dan_sdot (721837) | more than 8 years ago | (#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.

Re:Java. (1)

MathFox (686808) | more than 8 years ago | (#14328932)

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. (5, Interesting)

b17bmbr (608864) | more than 8 years ago | (#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.

Either will be fine... (2, Insightful)

tenchiken (22661) | more than 8 years ago | (#14328845)

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.

Java -- move on to C++ (2, Insightful)

middlemen (765373) | more than 8 years ago | (#14328847)

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.

It doesn't matter too much (4, Informative)

RailGunner (554645) | more than 8 years ago | (#14328850)

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

If you are at DeVry (4, Funny)

Anonymous Coward | more than 8 years ago | (#14328856)

Then I would pick whatever is used for french fry machines.

Cruelest Post Ever (0)

Anonymous Coward | more than 8 years ago | (#14328966)

If you are at DeVry... Then I would pick whatever is used for french fry machines.

Also, one of the funniest.

Why not... (1)

Daleks (226923) | more than 8 years ago | (#14328857)

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.

Re:Why not... (1)

pdbogen (596723) | more than 8 years ago | (#14328982)

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

Both (0)

Anonymous Coward | more than 8 years ago | (#14328858)

Well, both languages have very similar syntax, so learning both at the same time should not be a problem. Remember that your goal is not to learn a particular programming language - learn the concept...

Just learn an OO language (0)

Anonymous Coward | more than 8 years ago | (#14328859)

My advice...Pick one.
The goal is to learn an OO language. At that point, you should be able to program in any OO language.
C# will likely be the dominant language since it was created in response to Java and is the best of C+ and Java combined.

Python (2, Interesting)

Anonymous Coward | more than 8 years ago | (#14328860)

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

Java is more credible as a cross platform language (2, Interesting)

cryfreedomlove (929828) | more than 8 years ago | (#14328864)

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?

Re:Java is more credible as a cross platform langu (2, Interesting)

ntijerino (306851) | more than 8 years ago | (#14329007)

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.

Learn C# (0)

kinghajj (941068) | more than 8 years ago | (#14328865)

Java sucks. C# is better. I don't like using either, though; I prefer C.

Instructors Are What Matters (5, Insightful)

moehoward (668736) | more than 8 years ago | (#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 (2, Interesting)

Anonymous Coward | more than 8 years ago | (#14328870)

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

Java.. (-1, Flamebait)

Anonymous Coward | more than 8 years ago | (#14328871)

I would Say Java...

Java you can do web services. There is mountains of supports behind java as a web development language (javaforge, O'reilly, Jboss, java.net, etc etc). Also w/Java you can still do full blown client programming too. (w/ SWT, or swing+sninlnf).

C# AFAIK has no web services components anywhere near Java's... If you were interested in client programming on windows, I'd say C#. However, since you say you're linux, I can tell you right now mono sucks butt as for as cross-platform compatibility, there's a whole lot of GDI dll and other blah issues that make it a real pain in the arse to port windows programs to work cross-platform.

Hard decicision..... (1)

ShyGuy91284 (701108) | more than 8 years ago | (#14328872)

Why not learn both? At my university, I learned Java and then C++. They are very similar syntactically (minus pointers and a few other things). I've never learned C# though, so I can't really comment. As to what will be more useful, Cross-platform is good, but I would't think it's as important as one might think (since most, even busnesses, use Windows unless they can afford a very large IT department). And with rumors flying around that Java may have peaked, that adds even more confusion. In your case, I think I'd try to learn one language on my own (Maybe Java since it's similar), and learn another one through classes (which I'm assuming is the reason you can only take one). Then you can put them both on your resume as a language you know, with classroom time spent with the one that may be perhaps most different from what you already know (assuring you can probably code in it).

Target? (1)

gmuslera (3436) | more than 8 years ago | (#14328882)

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.

Java (0)

rteunissen (740645) | more than 8 years ago | (#14328892)

Sun VM for Linux. 'Nuff said.

Java in school C# at work (1)

black_shadow201 (863778) | more than 8 years ago | (#14328893)

At my college, Java was the intro level language. So, every CS major learned JAVA. Like many of the others have stated, Learn one OO Language you will know them all. Once I got done with school, I got a job as a C#.Net programmer. It took me a week or two to pick up the difference between the two.

My suggestion is thus, if by taking the C# class you get a free copy of VS.Net, take it and then pickup JAVA on the side. If not, take the JAVA class. (Especially if you are LINUX hardcore) In the long run it won't make any difference what so ever.

Re:Java in school C# at work (1)

pdbogen (596723) | more than 8 years ago | (#14328999)

What's with the caps? Java and Linux are names, not acronyms.

I say C# (0, Redundant)

dotnetNihat (936394) | more than 8 years ago | (#14328894)

If you say you prefer Java because it is cross platform, I would say Go-Mono

Irrelevant. (1)

sheetsda (230887) | more than 8 years ago | (#14328895)

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.

Learning a programming language. (3, Insightful)

HellYeahAutomaton (815542) | more than 8 years ago | (#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.

For you, special price! (1)

mugnyte (203225) | more than 8 years ago | (#14328906)


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

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

And for god's sake man, avoid becoming partial to any language. You'll sound as stale as the -1 posts in this very topic.

EIther is fine (4, Interesting)

Rycross (836649) | more than 8 years ago | (#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).

I would definitly choose Java, but..... (1, Troll)

ChrisGilliard (913445) | more than 8 years ago | (#14328909)

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.

Ask Slashdot (0)

Hatta (162192) | more than 8 years ago | (#14328918)

You should have asked /. before choosing a university. I don't know anyone who's been to a tech school and been happy with what they've gotten.

If they are teaching you to "program" ... (0, Flamebait)

malraid (592373) | more than 8 years ago | (#14328923)

... in a particular language, the program sucks. That's not a high level education, but a technical education to mass produce code monkeys. If you know how to program, then picking up a language like C#, VB, Java, phyton, whatever, should be a matter of two days and good reference on the API and basic libraries. Everything else is pretty much the same. You have a problem, and you need a solution, the language is just a tool to solve that problem. I always laugh so hard at people that say "Oh...I can only program in VB (or whatever)". Those people just know how to use the mouse to click on some wizards in a particular IDE to get some result, and to type from memory some code snippets that they memorized in school. That said, pick whatever you want, the one that you think is more "cool" or whatever. My opinion? Java. Why? Better cross-platform implementations. But there are many more reasons to pick Java (or C#).

That's no choice, the two are so similar (-1)

Anonymous Coward | more than 8 years ago | (#14328925)

It doesn't matter since, to all intents and purposes the Java and C# languages are the same. Sure the libraries are different, but that doesn't really matter since knowledge of libraries falls into the "knowledge has a half-life of 3 years" category.


If you want a significant choice, consider Java/C# vs Lisp or Prolog or Haskell or Smalltalk.

Learn the concepts not the Language. (2, Informative)

MikeBeck (592081) | more than 8 years ago | (#14328926)

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.

Get a Job (0)

Anonymous Coward | more than 8 years ago | (#14328934)

Long term, there will be more jobs for C# . Maybe sad to hear
for a Linux fan, but likely true.

  Visual Studio 2005 is very nice, .NET 2.0 is very nice, C#'s
new features are great. The overall environment / language/
libraries are more **coherent** than Java + the J2EE grabbag
(whatever that contains as of today).

  I'd say put your open source urges behind improving Mono....

it all comes down to the resume (3, Insightful)

fanblade (863089) | more than 8 years ago | (#14328953)

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.

Take Both Classes (0)

Anonymous Coward | more than 8 years ago | (#14328955)

I'd say, take both classes.

-

C# and java are indeed supported on GNU/Linux (1)

outer0rb (515735) | more than 8 years ago | (#14328956)

Both C# and java are well-supported on GNU/Linux (the mono and gcj efforts respectively). However, your professor will probably only asign platform-independent tasks, so you should have no problem writing your code on a free system.

However, if you want be unique, you could duplicate all of your assignments in either Python or LISP. And if you really want to make a statement, you could help your professor create a new course with propper languages.

Learn "PHB" or other "Business-speak" language (1)

bADlOGIN (133391) | more than 8 years ago | (#14328959)

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

Tough choice (1)

squoozer (730327) | more than 8 years ago | (#14328960)

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. (2, Insightful)

Inoshiro (71693) | more than 8 years ago | (#14328964)

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.

The IDE is the key (0)

Anonymous Coward | more than 8 years ago | (#14328967)

You will have a lot easier time finding development tools for Java that run on Linux (netbeans and eclipse for starters) than you will for C#.

Java is used more in open source (1)

Lovebug2000 (195893) | more than 8 years ago | (#14328970)

I'd say learn java if you're a linux freak. If you check out freshmeat.net, you'll see that java is used in 4000 projects while c# is used in 300. So if you want to get on board with an open source project, java is the way to go. Also, since there's a vm for java on linux, it'll make your homework easier to do (if you only use linux boxes).

Both! (1)

bean123456789 (938830) | more than 8 years ago | (#14328977)

As a developer I can't stress how important it is to know multiple mainstream languagues. Java and C# are very similar syntactically so that is a big bonus for you! I don't know about your neck of the woods, but there are many more development jobs in my area for doing .Net development than linux, but I have done both and I have been equally satisfied with either platform.

It would behoove you to know the major languages on each side of the fence so as not to limit your potential jobs in the future. (sidenote: I know that both languagues are used in both windows and linux and more for java, but the message here is not to be language dependent)

Once you are firmly entrenched in one of the platforms I would look to specialize, but as a graduate you have no hope of competing against people who have been in the field for many years. Your best bet is to be flexable for the time being and see where opportunities the take you.

Start with Java, then learn C# (0)

Anonymous Coward | more than 8 years ago | (#14328978)

7 years ago, while at University I was taught Java. It was the best language to learn OO in (rather than ADA). Recently it took me less than 6 months to become proficient in C#.

I find it is easier to develop other good methods and patterns in Java than in C#. Unfortunatly ASP.NET and Visual Studio can lead (because its easier) to less re-usable code. I prefer Java because you have to work slightly harder, but there are some cracking mature frameworks available.

Learn Smalltalk (1, Insightful)

Anonymous Coward | more than 8 years ago | (#14328979)

Go to the start of it all and really learn objects and messages in a full object system. Download a version of Smalltalk for free from http://www.smalltalk.org/versions [smalltalk.org] .

Java. (2, Insightful)

Concern (819622) | more than 8 years ago | (#14328990)

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.

Only Java if it's Java 5 (2, Insightful)

iabervon (1971) | more than 8 years ago | (#14328995)

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.

Java tools are free (1)

jodonn (516010) | more than 8 years ago | (#14328996)

I use both languages on a regular basis. One of the compelling arguments toward Java for me is that the tools are better and cheaper. You can download Eclipse [eclipse.org] for free, and in my opinion it's the best development environment available, hands down. Lots of free Java servers out there, and the open source community has made a whole lotta great stuff to make your job as a programmer easier. Visual Studio, the best game in town 6 years ago, is pathetic by today's standards.

Answer the question! (0)

Anonymous Coward | more than 8 years ago | (#14329000)

Is EVERYONE misinterpreting the question? It wasn't "which language should I learn", it was "which language should I use while learning OO". Sheesh.

it doesn't really matter. (1)

petermgreen (876956) | more than 8 years ago | (#14329009)

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.

how Java, Gtk# and Mono? (1)

file cabinet (773149) | more than 8 years ago | (#14329011)

http://www.mono-project.com/Java [mono-project.com]
I just tried it out a few minutes ago.
From the URL:
"Mono is able to run Java code side-by-side with .NET as well as having Java and .NET object interoperate with each other."

Java is cross-platform so go with that (1)

dtjohnson (102237) | more than 8 years ago | (#14329016)

Java is cross-platform while C# isn't. 'Cross-platform doesn't mean that your java app will run on Windows and Linux, athough it would of course. No...what it means is that your cool new java app will run on the platform you are using right now and also the platform you will be using in 10 years. THAT is cross-platform and it is true with Java and it will NEVER be true with .NET. And that is why Java will still be used long after Bill Gates has retired. So, learning either one would be good but Java is likely be around longer and be more valuable to large companies who lean pretty strongly to Java for that reason so...go with Java.

Hit a nostalgic nerve. (1)

Stan Vassilev (939229) | more than 8 years ago | (#14329017)

Reminds me of the nostalgic times waaay long time ago, when things were moving slow enough that you "learn" something and you're set for life.

Well, meet computer technology. You learn something today, which is obsolete tommorow and you have to learn again.

So whatever you learn, know you can't be either too right or too wrong, instead try to pick the common ideas and themes between all those languages/protocols/technologies, so you can make learning the next thing easier for you.

that depends (1)

phntm (723283) | more than 8 years ago | (#14329026)

java is better for structure based projects because it's more popular with the big boys, and C# is better for desktop utilities because it's lighter.

DeVry?? (1, Funny)

Anonymous Coward | more than 8 years ago | (#14329032)

DeVry huh? I'm not so sure it matters which programming you choose, you already made the wrong decision.

This isnt flamebait - its reality. Ive been in this industry for several years and still havent figured out what the hell DeVry graduates do with their degree.

Java rocks (0)

Anonymous Coward | more than 8 years ago | (#14329036)

1. Java is open source: http://mustang.dev.java.net/ [java.net]
2. Use Java IDE for Java development: http://netbeans.org/ [netbeans.org]
3. Try J2EE, J2ME. Profit :)

COBOL (1)

nurb432 (527695) | more than 8 years ago | (#14329039)

No, I'm not kidding. In another 10 years when all of us oldtimers retire, there will be guaranteed jobs for kids that know what the hell it is.

If you just want something 'cool', then i guess either works if you stick with it and become proficient.

Who do you trust? (0)

Anonymous Coward | more than 8 years ago | (#14329040)

Microsoft (guys in charge of C#) or Sun/IBM/Apple/Oracle/Google (guys in charge of Java)?

Also, while learning the syntax of either language will take you at most a couple of weeks, learning their APIs can take years. Therefore, switching back and forth is less of an option than you'd think.

Client or server side software? (2, Insightful)

kjeldahl (65177) | more than 8 years ago | (#14329041)

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.
Load More Comments
Slashdot Login

Need an Account?

Forgot your password?

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>