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 :)"
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 :)"
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.
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
It really doesn't make a difference
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
I'd learn Snoo
A feeling of having made the same mistake before: Deja Foobar
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.
I remember hearing somewhere that
...is being taught by a better professor.
Cheers,
b&
All but God can prove this sentence true.
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.
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.
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).
Then I would pick whatever is used for french fry machines.
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.
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...
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.
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. There are several great commercial and open source implementations of java servlet containers. Can C# really say the samr thing?
Java sucks. C# is better. I don't like using either, though; I prefer C.
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
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:
.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#.
http://overholt.ca/wp/index.php?p=11
Basically, GCJ is the future of high level OOP on the linux platform.
Why not learn both? At my university, I learned Java and then C++. They are very similar syntactically (minus pointers and a few other things). I've never learned C# though, so I can't really comment. As to what will be more useful, Cross-platform is good, but I would't think it's as important as one might think (since most, even busnesses, use Windows unless they can afford a very large IT department). And with rumors flying around that Java may have peaked, that adds even more confusion. In your case, I think I'd try to learn one language on my own (Maybe Java since it's similar), and learn another one through classes (which I'm assuming is the reason you can only take one). Then you can put them both on your resume as a language you know, with classroom time spent with the one that may be perhaps most different from what you already know (assuring you can probably code in it).
In undeveloped countries, the consumer controls the market. In capitalist America, the market controls you.
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.
Sun VM for Linux. 'Nuff said.
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.
If you say you prefer Java because it is cross platform, I would say Go-Mono
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.
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, avoid becoming partial to any language. You'll sound as stale as the -1 posts in this very topic.
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.
No Sigs!
No. No you should not.
You should have asked /. before choosing a university. I don't know anyone who's been to a tech school and been happy with what they've gotten.
Give me Classic Slashdot or give me death!
... in a particular language, the program sucks. That's not a high level education, but a technical education to mass produce code monkeys. If you know how to program, then picking up a language like C#, VB, Java, phyton, whatever, should be a matter of two days and good reference on the API and basic libraries. Everything else is pretty much the same. You have a problem, and you need a solution, the language is just a tool to solve that problem. I always laugh so hard at people that say "Oh...I can only program in VB (or whatever)". Those people just know how to use the mouse to click on some wizards in a particular IDE to get some result, and to type from memory some code snippets that they memorized in school. That said, pick whatever you want, the one that you think is more "cool" or whatever. My opinion? Java. Why? Better cross-platform implementations. But there are many more reasons to pick Java (or C#).
please excuse my apathy
Rich.
libguestfs - tools for accessing and modifying virtual machine disk images
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.
Long term, there will be more jobs for C# . Maybe sad to hear
.NET 2.0 is very nice, C#'s
for a Linux fan, but likely true.
Visual Studio 2005 is very nice,
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....
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.
I'd say, take both classes.
-
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.
In all seriousness, make sure you take some accounting and/or business classes and learn to understand and talk to the people that will hold all the power and make your life in the real world a living hell. The coolest code in the world doesn't mean crap to someone who only sees a balance sheet or P&L numbers. Learn to deal with these weasels now before it gets harder to as you get older:)
*** Sigs are a stupid waste of bandwidth.
Personally I would choose Java but perhaps that's because I ahve made a good living from knowing Java. I don't see either Java or C# really having much impact in Linux anytime soon. Java has issues with deployment in almost every distribution and Mono just isn't there yet.
I used to have a better sig but it broke.
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.
If you are at DeVry... Then I would pick whatever is used for french fry machines.
Also, one of the funniest.
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#.
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).
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.
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.
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.
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.
.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.
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
Tired of Political Trolls? Opt Out!
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.
I use both languages on a regular basis. One of the compelling arguments toward Java for me is that the tools are better and cheaper. You can download Eclipse for free, and in my opinion it's the best development environment available, hands down. Lots of free Java servers out there, and the open source community has made a whole lotta great stuff to make your job as a programmer easier. Visual Studio, the best game in town 6 years ago, is pathetic by today's standards.
Is EVERYONE misinterpreting the question? It wasn't "which language should I learn", it was "which language should I use while learning OO". Sheesh.
Ive tried both... I dont like Java, and Im learning to love C#. It has the fewest quirks of the OO languages I have used. And it seems to have learned lessons of the failures of those have come before. Dont hate it just because it came from Microsoft, from what I understand (but im not certain) C# is a more open/free language than Java.
Im not here now... Im out KILLING pepperoni
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!
afaict the differences between them are just in the standard libs and some of the syntaic sugar. So whichever one you learn i'd imagine picking up the other will be pretty easy.
note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
http://www.mono-project.com/Java .NET as well as having Java and .NET object interoperate with each other."
I just tried it out a few minutes ago.
From the URL:
"Mono is able to run Java code side-by-side with
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.
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.
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 huh? I'm not so sure it matters which programming you choose, you already made the wrong decision.
This isnt flamebait - its reality. Ive been in this industry for several years and still havent figured out what the hell DeVry graduates do with their degree.
1. Java is open source: http://mustang.dev.java.net/ :)
2. Use Java IDE for Java development: http://netbeans.org/
3. Try J2EE, J2ME. Profit
No, I'm not kidding. In another 10 years when all of us oldtimers retire, there will be guaranteed jobs for kids that know what the hell it is.
If you just want something 'cool', then i guess either works if you stick with it and become proficient.
---- Booth was a patriot ----
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.
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.
I wish I had mod points right now...
"I'm currently a second-term, CIS major at DeVry University.[...]Which should I take?"
How about classes in a real university instead of wasting your time at a technical college?
If you ask me... choose Java. But here is why that doesn't matter. The key to any degree is if they teach you to think about coding. It is more important that you learn the thought process of OOP first. Anyone who knows a language can write some code that might get the task done. If it runs well that is great. But, can the next developer read your code and quickly understand what it is attempting to accomplish. Each method or class should works a specific way that is easy to understand. When you are working in complied languages, the art is in a simple class that accomplishes a simple task. Then let the driver, a larger class, accomplish the simple task of orchestrating the simple classes. Of course it's even greater when the classes and methods themselves are tied together so that they work together as if cogs in a swiss watch. Overall, think about what and how the program should work. Then worry about in what language.
Instead learn brainfuck!
Java is obviously the much more widely used language, and is more likely to be useful down the road I would think. I've used Java at several different workplaces, while I've never heard C# even mentioned. Granted, Microsoft shops will be quite different in that regard but I tend to avoid Microsoft shops for other reasons anyway.
What's the best : learn to drive a manual gear VW on diesel engine or an automatic chevy on gasoline ? Just learn to drive.
C# = Java
Learning C++ would teach you a lot about memory management but may narrow the possible assignments you may have after your studies.
Java is going down as will C# in a few years. (Search for Gartner curve and you'll understand)
Java is the easiest for learning on linux system. C# is the easiest for MS if you use Visual Studio.
If you're a diehard linux user, I bet you hate MS.So go for java. You'll be able to transfer your OOP knowledge to C# in a few hours if any assignment requires it.
don't they advertize their 6 month programs on the backs of matchbooks? my boss had quickie diploma from that place, but he never had the gall to call it a university...
I would learn java. It runs on more platforms, plus if you learn java you have 95% of c# learned. The job market for java programmers is excellent. Honestly can't think of any compelling reasons to not choose java over c#.
Plus chicks dig java programmers.
Actually, it doesn't matter *that* much which you pick thanks to the plenty of similarities.
.NET) is king.
I learnt Java first as part of a uni course -- early adopters loved Java a lot in 1998. I basically learnt nothing else besides some basic C and assembler there and it was pretty much Java > all. I then learnt C++ with MFC (Microsoft Foundation Classes) at work as an example of Microsoft's dominance in the software development business, and felt Java had helped me tremendously when doing so to get the OOP concepts down. It would've been even easier if it was about going from Java -> C# or vice versa. After that I learnt C# and that wasn't too hard with Java and C++ as a foundation. After all, that merge is in many aspects pretty much what C# is anyway with its support for more C++ constructs than Java along with unsafe code support, while retaining huge amounts of Java high level stuff such as the sandbox model and garbage collection.
So, my suggestion is that don't miss learning C++ if you're going out in the software development business. At least here, if neglecting web / online services, C++ and VB (6 and
As for web service development etc, I guess whether Java or C# is more suitable depends on which company/companies you'll work on, but regardless which one, the other should be easy enough to learn when having learnt the first. They're so similar that it's mostly just about learning the class libraries that will take time, not as much about the languages themselves.
Beware: In C++, your friends can see your privates!
I'm hoping you meant work out the OO design first, then implement it in Java.
I've only recently had to pick up Java professionally - up till now, C/C++(not OO)/Perl/Lisp has been a good fit but I was asked to help out on a project that already had several person-years of Java code in it. So I had a lot of procedural and functional languages in my background but not really much OO.
I spent a fair amount of the first month getting my head into the Java thought process (thanks to Bruce Eckel's "Thinking in Java" and an experienced Java-developer's guidance). The key epiphany was realising that the design for an OO project really should be carefully thought out in terms of object life cycles, object->object interactions and object capabilities. You can code a procedural design in Java and you will eventually end up with spaghetti. Java lends itself to pure OO designs very nicely but gets awkward fast if you stray into procedural designs. The design needs to fit the language if you want to keep it going long term.
Cheers,
Toby Haynes
Anything I post is strictly my own thoughts and doesn't necessarily have anything to do with the opinions of IBM.
Is there really a difference between c# and Java? the syntax for the two is basically identical, and they all have pretty much the same feature set. The only difference is the class library. If you mean learning the language as memorizing the class library, then you should probably just learn how to read the docs. Both Java and .Net have greate docs their respective class libraries. I learned OOP from a langauge agnostic standpoint and I'm better off because of it. I don't think that learning one language over the other will be much of an advantage. Really, if you have the time, do all the assignments in both languages, just to learn both. I don't know why most employers think you need 5 years with a given laguage. If you haven't gotten the syntax and class library down after 2, you're doing something wrong.
Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
Huh? Ever heard of a little thing called ASP.NET?
If you don't know where you are going, you will wind up somewhere else.
...then learn Java according to this BusinessWeek Article. Apparently LAMP (Perl, Python, and PHP) are the languages (fad?) for the 00's (according to the said article).
> This coming term, I will have the choice of studying
.NET for the course, which is not something you'll likely be tempted to use after you finish the course. Yeah, there's mono, but it's not so similar to VS.NET as the somewhat-cross-platform JDK would be. So you won't be focused on the tools. Second, using C# for the course probably means a lot of the assignments will delve into the Win32 API, which has two benefits. On the one hand, as a Linux user, it gives you some insight into the other side of things, which is always advantageous; on the other hand, it means, again, that you'll be less tempted to continue using the stuff after the course. So you won't be focused on the nitty-gritty details of the language and the API. Not focused on the tools, not focused on the language or the API, means you'll be focused on the *concepts*, which is the whole point of the course anyhow.
> either Java or C# for my Object Oriented Programming
> class. Now I'm a diehard Linux user, so I'm slightly
> conflicted here. Which should I take?"
Assuming neither of these is a language that you really want to end up using after you're done with the course, take the C#. First, unless I've missed my guess, it means you'll be using MS Visual Studio
This is all assuming you don't want to build a long-term relationship with either language. If you *do* want to do so, then by all means, go with Java.
Either way, you should, on the side, also expose yourself to another object-oriented language, one with a really good object model. My personal recommendation would be Inform (get the Inform Designer's Manual; it's excellent), but Smalltalk also has its proponents, and there are other options.
Cut that out, or I will ship you to Norilsk in a box.
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.
Click here or a puppy gets stomped!
Alternative answer: both.
Robo-Blogs of the world: UNITE!
Python, Ruby, or Perl (PHP, etc.) If you have only Java and C# as choices, it will likely make no difference. Whenever you hit the job market there will be a bunch of legacy stuff in both, though more in Java due to its age. If you are targetting a job with a smaller newer company, 5 years from now, I am guessing--just guessing, mind you--that the three languages listed above are going to be stronger players.
Sorry, this is just flat out wrong. C#/.NET have very strong support for web services and message composition, especially in .NET 2.0.
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.)
Hexy - a strategy game for iPhone/iPod Touch
Like many others have said, it doesn't really matter which one you learn. I have developed web services and clients in both java and c#. They are almost syntactically identical. The fanboys will rant and rave about their chosen side, but they always do that. There are some gotchas in both that you will run into and figure out how to get around. I wouldn't worry too much about "lock-ins" or "hype" or any of those other words designed to illicit a response. Go for what will be most useful for you right now. You can always pick the other one up later if there is a need for it.
The exact opposite, actually. .NET has an excellent framework for web services.
Java and C# are extremely similar, so from a learning point of view ist shouldn't matter what language you chose. Both will help you understand basic OO concepts.
.Net on Linux. In C# you will always have to rely on mono to keep up with new things in the Microsoft implementation and somtimes mono may lag behind.
.Net stuff if you use java, doing the opposit is also possible but usually requires a lot more coding.
However, as you use Linux I would recommend Java. Not that you can't run C# applications on Linux, you can. The big difference is that Sun, the creator of Java supports it on Linux, while there is no such thing as Microsoft
Using Java EE it is also possible to create web services, so you will not have any problems communicating with
Finally, the development tools are better for java, at least if you run Linux. I'm of course thinking of Eclipse.
God is REAL! Unless explicitly declared INTEGER
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.
- They run in virtual machines
- Thay are statically typed
Therefore, Python and Ruby don't compare. That should eliminate about half of the comments on slashdot.I recommend learning both! Really. They are very similar languages. What you should ask yourself is what frameworks you should learn and what tools you should use. That is where you will find the larger discrepancies. I recommend trying them all and figuring by yourself what you like best.
For rich client apps I suggest using eclipse and monodevelop. Monodevelop is not available on windows, but SharpDevelop is great. As for the GUI libraries... For C# you have GTK# and WinForms. GTK# will give you greater cross compatibility but WinForms will be easier to develop with (visual designers). For JAVA you have Swing and SWT. Swing is more complete but your SWT will feel and run more smoothly.
For the web I suggest ASP.NET for C# and JSF for java. They follow the same approach to building web apps. Some free great tools available are the Microsoft Web Developer Express and the Java Studio Creator.
Cheers, happy hollidays and happy coding,
Adolfo
PS. Whatever you decide to learn always remember to separate everything into layers. Learn MVC and ORM also. And most importantly, remember that projects will ALWAYS take twice as long and cost twice as much than your original estimate.
I have slagged Sun and Java often enough but if forced to pick I'd say take Java since it has a few advantages:
1. It is fairly Open and work on GCJ and GNU Classpath is rapidly making it Free. Plus by making it a native compiled language it will end most of the major limitaions of Java. The language is OK, in a Visual Basic like language for low paygrade codemonkeys sort of way, but the JVM and JIT compiling was a killer.
2. It has a future on non-Windows platforms. Mono is doomed; the second the patent wars start it is going to be the very first casualty. And it starts as soon as they have wrung the last bit of FUD from the SCO v. IBM fiasco; i.e. probably about the time you got through learning it.
Some here claim C# has some advantages due to being able to learn from the mistakes of Java. While this is true to some extent it is also true that they aren't enough to make up for the practical reasons I just cited.
Democrat delenda est
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
Personally, I perfer C# to Java any day. I am already taking a java course, so any C# has to be done on the side.That said, I still believe Java is the better choice here
.Net. This is a Bad Thing(tm), but probably will happen. Same goes for Java if you attempt to use gcj, or any other language you attempt using an implrementation of anyone save for the languages' creator.
Mono, despite opening up *everyone* (even those such as myself with obscure platforms like linux/ppc and linux/sparc) to the world of C#, cannot yet handle every MS lib out there. Java, on the other hand, is absolutely universal (on the platforms it supports). I have little doubt that any teacher of a C# course will use the MS implementation, and probably touch on some of the libraries onle used in the 'official'
Mono is very nice, yes, but not fully there yet. Java's official implementation is actually supported on different platforms, making the use of linux in the class a possibility.
~You laugh because I'm different, I laugh because I'm insane~
It all depends who you talk to. I always try to answer that question with the fact it depends more on the programmer, than on the programming language. Do you really think Napster or Kazaa or MySpace have really great, elegantly written functions and well-maintained code when they were started? Probably not, but it was the idea of what to do with the programming language that made it great. You'll find a much bigger gap between the innovative minds of two programmers than the difference between two programming languages. Just pick one or the other and go with it.
Be sure to remember the Programmers Prayer
The choice of language is irrelevant to how good a programmer you are, but a lot of employers aren't going to understand how fundamentally similar the languages are, and hire whoever knows the language they need for their project.
If you're at DeVry you're planning to get a job, not an advanced degree. So my advice would be Java, based on my extremely limited survey of the jobs market. Then go home and buy a book on C#, spend a few weeks with it, and put both languages on your resume.
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.
The main difference (IMO) comes from the APIs. Unless you happen to be one of those people who write command-line apps for their desktop computing fibonacci numbers, you will need to understand a billion APIs - XML, SOA, GUI, and god-only-knows what. And good-luck trying to master both ...
( putting on fireproof vest). C# today seems to be more popular for "desktop" and "GUI" kind of applications. Java OTOH seems to be more popular with "server" kind of applications. So your choice finally boils down to - what kind of applications do you see yourself developing.
Denial is not a river in Egypt
If you want to work professionally on a Linux platform, Java is a better choice. C# is getting to be a nice environment on Linux, but nearly all of the professional work done with it is on Windows. And Novell is a fine company, but they've made a lot of losing bets. For lots of reasons, C# and Mono may be another one.
Anyhow, when I left the financial sector I had more free time so I taught myself C language, which I knew a little of but didn't know well. And actually, that is still my "programming" language. I've been writing PERL and PHP scripts recently, but that is just hacks, the C programs I write I do in a serious, "Code Complete" way. I have seen myself become better by following the Code Complete rules, which I guess most experienced programmers think are common sense but they're new to me. Short functions - trying to keep local variables to six or seven. Trying to keep global variables as few as possible. And that sort of thing. So since 2001 I have just been increasing my skill in C, and have had no need or desire to move onto the next step.
One thing I wanted to do was read "The Art of Computer Programming" and do stuff in assembler and learn that hardcore stuff, but right now I barely have time to improve my C, which has some practical and immediate uses, so that will be postponed until I can do it. So putting aside assembler and that stuff to really understand what's going on with the machine, I guess my next step once I feel I know C well enough is C++. After that I guess I'm in the same boat you're in. Since I, of course, hate Microsoft, I guess that gives me a little bit of a push towards Java. But there isn't any good Java for my Debian either - Kaffe and all of those just don't cut it yet. So I use a non-free port. And to me, that is bringing me into the same realm as C# and Microsoft - except Sun is the big, evil corporation instead. Hopefully by the time I know C, C++ and possibly assembler well enough to move onto C# or Java, there will be a GOOD free version of one of them (hopefully Java).
Ask around and pick the one with the best professor. Or, heck, the most convenient hour. Or the one your friends are going to. Or the one whose textbook has the prettiest color.
You're trying to get an education, not vocational training.
They're both modern, popular, widely-used languages with C-like syntax and perhaps 80%-pure object-orientation. They are both in substantial real-world use today, but that's not very important. You may well see job ads mentioning those languages, but when it's time to interview it's just as likely that they'll want something unfashionable... or three years experience in a language that's only two years old.
Java and C# are Coke and Pepsi. Just be sure you that somewhere along the line you get a chance to use some wildly different languages with completely different styles and base assumptions.
Be sure you've also tried the computer language equivalents of kvass, chocolate milk, and Campari.
"How to Do Nothing," kids activities, back in print!
Red pill or blue pill? Hopefully the next on will be: 'Emacs vs vi' or 'KDE vs Gnome.'
:)
It's good to know some things never change.
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!
Forget Java or C#, the best first programming language to learn is APL.
It's always been my experience that you program C or C++ when you're at home, and Java/C# at work. Some folks use Java at home, and I've never heard of anyone recreationally programming C#. They're both pretty much resume builders.
So I'd say a good data point would be to look at monster.com and careerbuilder and see which one has more jobs listed. I've found it to be about 60/40 in favor of MS/C#. But I learned Java anyways. =)
Weaselmancer
rediculous.
Both languages are *so* similar, if you learn one you'll pick the other up in no time. I learnt C# in a week on a live project after being parachuted in to help out a project that was slipping.
Pick initially whichever is more convenient - which do you have a compiler and development tools for?
I kid, I kid.
Employability-wise it seems C# is in slightly higher demand currently and will probably remain that way for a while.
Java is stronger at the cross-platform stuff. For a Linux nerd, I'd go with Java.
The reason being that regardless of which language you pick up you will still learn how to program (in the long run) and with Java you will suit your short term interests. If 5 years from now some obscure language becomes dominant you'll be able to pick it up within a few hours. They're just changes in a few details -- the bigger picture will be familiar once you know one language.
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.
.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.
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
Pick one and go for it. Either way, you're still a tech school rubber-stamper. *stamp* Graduated! *stamp* Graduated! *stamp* Graduated! What? You haven't a clue about computers? *stamp* Graduated!
C# was built to beat Java. Then again, as you mentioned Java just works about everywhere. .NET is a new platform comparative to J2EE (and much more). I would choose C# and .NET instantly. The reason is that it seems the jobs are in the future swinging that way. A lot of the companies starting new development are hopping into .NET bandwagon (with any of the languages) and even some Java shops are going that way too. 60% of the new projects are already there. Figure the rest out yourself.
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
Coming from Java I was able to pick up C# in a five day training session. .Net has some pretty slick methods to talk to Windows that to do the same thing in Java is a real nightmare (AD authentication anyone?). If you are doing a lot of GUI stuff I would strongly recommend learning SWT in favor of Swing because Swing is just slow (shut up, you know it's true). What I like most about C# and dispise about java is deloyability. If I want to make a utility with a small form it compiles to a 33k executable file that someone can double click on. In Java I have to hope and pray there's even a JVM on their machine. Cross platform is great but automatically hitting 80% of all platforms isn't bad. I've had to walk so many people though a JVM install after I wrote a small java app for them, shaking my head everytime.
The main things I don't like about c# are the fact that it actually has too many features. Unsafe code blocks, out parameters, pass by reference, all of those things are nice yes but they will distract you from learning what you should really learn about OO which is how to write well designed reusable code. Java will keep you focused on just that. In addition, MSDN documentation seems very hard to follow. It's documentation by example rather than by specification. Java's API documentation reads very scientifically and I choose that word carefully because it's not necessiarialy easy to read, just very precise and consistant.
Learn Java first unless you have a .Net job lined up. The lack of syntatical sugar that C# provides will have you thinking more about your architecture and less about how to pass your parameters.
Ever done a `man` on `top` ?
since you're allready a die-hard linux user, and you're taking the class to learn stuff, take the subject that you know the least about. Spend some time coding in MS land and confirm or dispel your preconceptions.
The underlying concepts of OO coding are pretty much the same whatever language and OS you use, but the broader your experience the better equiped you'll be for solving whatever problems you come across in your career.
He nails the issue perfectly. C# may be a better language than Java, but -- mono being a sideshow -- it's a lock-in to Microsoft Hell. The small advantages C# provide are far outweighed by the massive disadvantage of it being a gruesomely proprietary language.
I agree completely with those who say to learn one and learn it well.
But if I had my pick of languages (and I do currently), I would learn Ruby through and through, and then the Rails framework.
I have been studying both of late (just a few days in, and I am quite impressed). They both have "The Right Stuff!".
Yours,
Jordan
questions? 2 dozen? 8 dozen?
What's wrong, not enough material to steal from digg today?
First of all I will mention that I don't know either particularly well, but based on what I've seen in other programs I'd say go with Java.
:-)
Why?
* You can write standalone programs or Web-based applets (some programs can do both, eg the Java port of Frozen Bubble).
* Java natively runs on Linux, stuff like Mono or Wine can be unreliable because it's never 100% accurate emulation. Maybe I'm wrong here but either way I'd rather have a natively-supported platform.
* Java is free.
* And most importantly, my favorite game ever (Puzzle Pirates) is a Java app.
Oh, and despite what some people say about Java it can run quickly if the program is well written. My 133MHz laptop with 80MB RAM runs Puzzle Pirates rather nicely, even though it's a 100MB+ application. In fact, a lot of non-Java programs are slower to load on the machine, which is kind of interesting.
Creative misinterpretation is your friend.
languages are so passe, how are your powerpoint skills?
You should use Objective C of course!
go to salary.com and see which pays more.
hint:It will be Java.
The Kruger Dunning explains most post on
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.
Totally agree. I practically posted the exact same thing before I read this.
Ever done a `man` on `top` ?
The languages and libraries are - intentionally - very similar. Once you know one of them well, you can pick up the other in an afternoon.
And using Eclipse while writing Java code takes a lot more drudgery out than does using MS's Visual Studio for C# - they have a rudimentary "method completion" for VS, but almost everything else that Eclipse helps you with is lacking. The people who say that they're similarly helpful are obviously not using Eclipse to its potential.
I'd say it's very useful to know both, however - my company's actually using both on the same project right now. Despite the comparative paucity of libraries, many companies (and in my case, a part of the government) seem intent on using C# on the client-side even when talking to java on the server.
I say learn C++ then c# will come natural to you. It's like c++ whitout the mess.
C++should be FIRST, second Java, then C#! Now with that said let *Attempt* me back that up. I work currently in all 3, I would say about 60% of my time is in JAVA, 30% in C# and 10% in C/C++. I am also not a typical Slashdot user as I don't HATE Windows and just love linux. To be honest I love and hate both of them and use each of them for what they are good at. So ...
C++ first: So why C++ first, isn't it OLD and outdated? Well Yes to some extent and No to another. C++ is like learning how to bake a cake from scratch u learn the lowest of the low in details. Why things work and all the different ways they work and why things were designed the way they were in Java and C#. C++ is a beautiful and ugly language at the same time but also has an ENOURMOUS amount of power in the right hands. I equate learning C++ to learning how to bake a cake, You don't use the duncen hines mix the first time, u actually use all the basic ingredients like flower, etc. This gives u an understanding of what exactly does what in the cake.
Java Second: Why Java second? FIrst because it's easier to learn in a more CORRECT manor that C#. NOw let me clarify that before I get flamed. I don't care who u are or what u know but Sun's Java Docs whip the ass of microsoft documentation. THis little ignored but yet so important thing means a LOT when it comest to learning a language. Now I've been programming for many years and when I learned C# tracking down what the [] operator does for each different MS class was a total BITCH. Java is also proably the most popular language right now and is not goign anywhere. Anyone that says it is knows nothing abotu server programming. There is not MAJOR financial bank that does the bulk of it's trading on Windows or C# backends, it's all either UNIX or LINUX with JAVA or C++ and at some of the older banks, COBOL. Windows is not great for servers, it has many drawbacks... but that is a debate for another time.
C# third: C# is Java, anyone that says it's not does not know both. But what C# has is the ability to integrate easy with Windows, and this means a lot. This to me is it's only Advantage, as I like to use windows as my primary desktop. As for a language, it's OK, I personally like java Better, but it's a 6 half a dozzen split to be honest. My pet peeve though is the [] operator and the delegate/event mechanisms, I truely don't like those, but that's just personal. I think those lead to bad programming and less OO design. As for MONO, I hope is succeeds and does well, but for now it's just a joke, u can't use it in an enterprise environment, they just don't have it workign well enough unfortunatly.
So in closing I would learn in that order, I like all three, I use all three. My personal favorite is Java but that might have more to do with IntelliJ than anything else. Visual Studio is a piece of shit in comparison. I hope they get it right the next time, I here the new one is slightly better than the 2003 version I use.
Hope that Helps!
My Web Site - www.ocean-liners.com
Choose whatever language you like as long as you use emacs.
Learn the concepts, a language is pure syntax, a concept is vivid longer than the usualy 10 years language cycle.
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.
Despite the old saying that there are no dumb questions, the question "which should I learn" always strikes me as dumb, . Learn one, then learn the other. If the question is "which one should I learn in school," then as others have said, learn the one being taught by the better professor.
The most important thing is to learn the concepts - algorithms, data structures, object-orientedness. Which language you learn them in shouldn't matter too much, especially for languages as similar as Java and C#. If you are a self-proclaimed "Linux zealot" then I don't see why you'd even consider learning a language created by Microsoft, it seems like you'd just be setting yourself up to get pissed off.
In the end, knowing more things will only help you, so learn both.
rooooar
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.
I don't know C#, because I'm also 100% focused on Linux and OSS things. Sometimes I feel that's a pity, it makes me a bit one sided, but I don't have the time to dive into that Windows stuff. Now that you have the option, why not learn something about how the Windows side does it?
The advantage of Java is that you can use it in your home setup, but if you're going to use it as a hobby, surely you can learn it as a hobby as well. It won't be that hard once you know C#, probably.
I believe posters are recognized by their sig. So I made one.
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#.
Python.
Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
Speaking as a professional software architect, I have found that many companies are moving or have moved to C# and .NET for most of their application development. Demand and pay for C# developers is good, and getting better.
.NET especially 2.0, offer a very easy to understand, consistent platform for developing applications both on the web and for thick client interfaces. The MSDN documentation is outstanding and 2.0 offers serious enhancements to using system ports which ups the ability to interface with embedded systems. As an example, it took me three hours to write a web *and* win forms interface to control a model train set using the new DCC locomotives. In my book, this has a pretty high geek factor.
.NET's biggest boost is in developer productivity. It takes consistently less time to get up and running with C# and .NET. On the web simple (but difficult) tasks such as validation, error handling and state management are easy.
C# and
C#, ASP.NET and
The bottom line is that you will spend more time writing cool new features to your app rather than looking up error messages, debugging code or downloading the latest version of library xyz that doesn't have that undocumented feature that you just discovered in it.
My 2c. Good luck but more importantly, have fun.
Obviously you're going to DeVry not because of your passion for mathmatics and computer science but because you want to learn how to program and try and get a job being a programmer. For this reason alone I would pick up C# as there is a ton of market opportunities for C# programmers right now.
Really it doesn't matter. Anyone I would hire I would expect to be able to pick up a language and be good with it in a few weeks, including the general libraries, etc.
"If you are a dreamer, a wisher, a liar, A hope-er, a pray-er, a magic bean buyer
1. Simplier than JAVA, this will let you concentrate on more important aspects like the OOP paradigm, abstraction etc. 2. Even if you are a Linux Die Hard you will finish your projects faster in C# and in Windows, let the linux programming for a bit later, maybe you are going to use another language anyway. 3. You can allways use MONO if you like. 4. C# its newer so less people will have X years of experience than you. 5. Java will never, never be open source (ok at least in the next 6 months). 6. See the previous topic about Java losing momentum. 7. You can allways use MONO if you like. Allways remember: Languages are over rated, learn the foundation.
As someone who graduated from DeVry with a degree in CIS four years ago I'll add my two cents. Java and C# are close enough that it would be wise to take the language that is taught by the better professor (the slave driver type, if possible). If you know one, it won't be too tough moving to another. For instance, I know Perl pretty well. When I wanted to learn Ruby, it only took me a few hours to translate a 500 line Perl program to Ruby. I can't imagine the Java/C# situation is radically different.
If you're serious about programming after you graduate then my advice is to expose yourself to as many different programming languages as you can and becoming as close to an expert as possible in at least one. OCaml is a great language to learn but the learning curve is pretty steep. Lisp is also worth learning, for reasons that Eric Raymond has already stated. And then learning Perl, Python or Ruby is great when you want to write a short program quickly. So since you'll probably be looking for a job after you graduate, one idea is to take a class in Java/C# from the better professor, learn it well, and check out the languages mentioned above.
Also remember that once you're on the job you're going to be putting in a lot of hours on a single language, so you'll want to get as much breadth as you can now because you'll be getting the depth later.
But purely answering the posed question: Don't learn either... learn both. They are so incredibly similar that knowing one is like knowing the other.
a) It doesn't matter too much which you start out with. What will matter down the road is which you get documentated experience with. Projects and jobs on your resume will count towards your "X years experience with _____ technology" qualification for jobs.
.net will get you in a lot of doors in Las Vegas, but your enterprise Java experience will be nearly useless.
b) Your choice of which tech to specialize in may have an impact on where you live down the road. For example,
"This wound is beyond my ability to heal. We need Elvis medicine!"
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?
.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.
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
Only to idiots, are orders laws.
-- Henning von Tresckow
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.
Personally, for learning OOP, I would choose Python, neither Java or C#, as I find both of the syntaxes to be slightly unwieldy, but then again, with Java, it seems easy to quickly move your code around, show it to friends, get other people to debug it, etc. My personal choice is to give both a wide berth, and stick to prototyping things quickly in Python, then transfer it to C/C++ and compile the binaries on the necessary platforms, or just distibute code :)
If I had to choose, I would go for Java. But before hand, read a few Python tutorials (esp. How to think like a computer scientist Python version) and get OOP concepts down, using a simple syntax, then transfer it across to _Java_/C#.
but as soon as you have 'mastered' that, go onto something more enjoyable like Ruby. Your brain will thank you for it.
I don't know what state that guy live in, but if he lived around here (the bay area), I know he'd be nuts not to attended a state university with accredited professors, cheeper tuition, as well as the ability to accommodate a working adult.
"Things are more moderner than before- bigger, and yet smaller- it's computers-- San Dimas High School football RULES!"
C# was invented for one reason: locking sytems into a windows deployment.
How does this shit get moderated up? The poster is clueless. If C# was invented for that one reason, why did MS release Rotor for FreeBSD? Why did it bother to get C# implemented as an ECMA standard? Why does it help, instead of try and crush Mono? Why does the API include Oracle functionality?
In contrast, Java is currently a closed platform with Sun's fingers firmly around its neck.
As it has been said many times throughout, both languages are similar enough to each other that once you've learned one, the other is a breeze to pick up. However, I found that when developing project assignments in C, I had to reboot the computer into Windows and develop there, as most professors do not run Linux. With Java, I never had to reboot, because if the app ran on my Linux box it would run on their Windows box. Also, as previously stated, there are many free development tools out there for Java, but you have to pay for what you need to study C#, and when you're in college money is scarce, and noone wants to spend hours in a lab when you can do it at home. The reality is that in the long run you will most likely end up learning BOTH, so don't fret over the decision as it is only a question of which one to learn FIRST. Go for which you believe will be easier in the short term and worry about the other later. I think both would be equally hard to learn in the long run. I learned C++ first, but picked up the Java technique in a weekend afterwards. Good Luck.
My software never has bugs.
It just develops random features.
... at least on language merit, which is almost certainly likely to be bias.
Which might prove more useful on a CV (and PHBs don't necessarily care if you can do one you can do any)?
If you learn OO, then Java vs. C# is largely irrelevant. There's some minor syntax differences and a whole host of library issues but nothing that's as important to knowing the underlying concepts.
Which class has more women in it? (Okay, a joke but if the distinction is that slight you may as well use something to decide. And g/more/any/, etc.)
Learn OO and go from there. And if you know enough to understand co-variance then you'll get a job if I interviewed you - lots of people claim to be "OO-experts" but crumble when challenged with anything more demanding that the first few pages of any language book.
And, finally, when looking at books - particular the non-academic language specific ones - go for anything that describes how concept X works, not how language Y implements concept Y. E.g. interface vs. implementation inheritance is a core OO idea. It's not language specific. Java and C# are more similar than they are different. (With apologies to Z-fanboys wanting to suggest either r0x0r, etc.)
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.
First off, as others have mentioned, they are both fine languages. It is not like you are choosing between Basic and C++. I should note that I don't know C# (never looked into it). My understanding is that C# will be the new OO language for introduction to OO and programming, and that you will learn Java later (the Business Programming class that is VB.Net now will move to Java, I think). So you'll end up seeing them both.
Which to choose? I would go with C#. Everyone after you will be taking it, and DeVry is very MS centric so having that early .Net learning may make your life a little easier later. You can go with Java, but you will be a last of your breed (untill they decided to switch again in 5 years or whatever). Personally I like Java better than I think I'd like C#, but it is partially choice. Also as one of the first C#ers, they may be very interested in getting you to work in the ASC if you would be interested in that (providing you are good, etc). You can start as soon as your second term.
On the Java plus side, there will already be many students who know the language and will be able to help you (like in the Acedemic Support Center). Java is still a big language that "everyone" wants (seems like most job descriptions want you to know Java these days).
If there is more I can do to answer your question, just reply. In short, I would say C# but it really is a toss-up in my mind and not a clear answer.
Comment forecast: Bits of genius surrounded by a sea of mediocrity.
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.
The exact opposite, actually. .NET has an excellent framework for web services.
Not on Mono, it doesnt. And I'm assuming this would be used, as that was the framework mentioned in the actual question.
~You laugh because I'm different, I laugh because I'm insane~
really, learn both they're extremely similar. Much of the learning process is factorized so really it's worth it. Or just learn java and when you need C# learning it will be a snap.
\u262D = \u5350
It doesn't matter. As a DeVry student he gets a free software bundle that includes:
.NET
Windows 2000 (or was it 2k3?)
Windows XP Pro
Microsoft Office Pro
Microsoft Visio
Microsoft Visual Studio
and something else.
Price is not an issue in this.
Comment forecast: Bits of genius surrounded by a sea of mediocrity.
Really it doesn't. I have used both (on linux), but get paid to use Java. They are similar languages. The object (as was once told to me) it to learn to think in code. Every language I have ever used has given me tools that extrapolate across all languages. As far as being in school goes...listen to the other posters who are saying "pick the one with the better teacher". All things being equal, being a Linux man, I would go with Java.
"He was a wise man who invented beer." - Plato
I am currently working in C# so biased towards it. I would say go for any language, but that's not the end of it. Use the language as a tool. There are several things you will need to learn in order to be a better programmer/software engineer/corporate person. ...
1. You need to know OOP concepts.
2. You need to know non-OOP concepts so as to know whether and when to use them.
3. You need to know design patterns.
4. You need to be able to come with solutions quickly because problems keep arising all the time in software development. In these cases, language will not matter. Your company may have already chosen a language or it may not have. Perhaps your solution will cause them to change the language.
5. You need to be able to come up with good solution quickly. What is good will only be defined by the needs.
Also, the choice of a language depends upon what you want to do. If you want to do corporate programming (following methodologies, creating audit trails, following procedures, and then doing programming) then either C# or Java is good for you. However, if you want to do programming for pleasure, C and C++ will be good.
C++ is a world waiting to be explored. Java and C# are tame animals. Everyday you will find something new and unexpected in C++. Compared to C# or Java, C++ takes longer to master. This means that once you have climbed the mountain of C++, other languages will be minor obstacles.
Why teach any programming? Is it because most universities have completely abandoned the fundamental roots of Computer Science, and have begun teaching computer programming instead? Some, even, as a slap in the face to both departments, have moved from Mathematics departments into Engineering departments. Computer Science is a subset of Math. "Software Engineering," a misnomer, is a product of marketing.... Just what do they think they are engineering??! Electrons? Magnetic Fields?
For those that have forgotten what Computer Science is, here is a decent definition:
[google.com]The systematic study of computing systems and computation. The body of knowledge resulting from this discipline contains theories for understanding computing systems and methods; design methodology, algorithms, and tools; methods for the testing of concepts; methods of analysis and verification; and knowledge representation and implementation.
And lets also not forget that one does not need a computer to do real Computer Science (i.e. not computer programming).
The Admin and the Engineer
I used mainly Java and C++ in college but got a job in C# and was fluent with it in matter of weeks. Both are free to learn and develop with, considering you have Windows machine for C#. In the long run as long as you grasp OOP, it does not matter which one you choose.
I have programmed in both Java and C#, but I primarly work in VB.NET. So you should know up front that I like working in Windows. I really like the .NET framework. I can say that using Visual Studio and the .NET framework has made writing code really fun. I would reccomend learning C# if all else is equal, and yes mono does seem to be really popular.
.NET framework just seem to be a little bit ahead of the Linux alternatives, and Visual Studio 2005 is an excellent IDE.
Also, I think that we'll be seeing much more language development in C#. In my opinion, the LINQ (Language Integrated Query) project is the coolest language advancement since OOP. C#, ASP.NET, and the
Bottom line though, learn about Object Orient Programming and Design. Learning Patterns is an excellent way to see how to really use OOD. Check out the book Design Patterns: Elements of Reusable Object-Oriented Softwareby the "gang of four (gof)" listed under Erich Gamma.
Good Luck, and stick with it, it gets easier, and a good IDE really helps.
If Java's sold as being free (as in beer, because of the Eclipse IDE), then there's not necessarily an immediate advantage over C#. There's Visual Studio Express editions of VB and C# which are similarly free. (And presumably your Uni will have this and/or the full version.)
"Computer Science is a subset of Math."
You must be new here. Math is a subset of Computer Science.
For the most part I agree, but if you ask me, being able to have a method that takes a variable amount of arguments is the *definition* of awkward...
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
The point is that you should learn Object Oriented thinking. Java and C# are just ways to express it. Once you learn one the other is VERY similar.
use fortran and just stfu! =p
The languages are almost exactly the same. If you know one, you basically know the other. Java with generics is more complicated right now, so I'd say you should learn that.
Also, while there are C# implementations on Linux, you won't get Microsoft's custom API, while you will get Sun's standard API if you use java on Linux. So your Java programs will work both on Linux and Windows (and any other OS). That's the great strength of Java over C#
So basically, the languages are the same, it only depends on what API you want to use, and Sun's JRE is much, much more portable. (you definitely won't be working with the mono libraries in your C# class)
autopr0n is like, down and stuff.
You know what? Waste your mod points on this because I have no problem wasting my karma on it - this article is an insult to the readers. Get a life...
You are two years into an education, pick one and learn it. Better still, learn the basic concepts of programming. This way, it will not matter the langauge as you grow into a career. One day, you can join the opionated programing crowd with the triumphat shout "My is the best". I'll tell you a little secret though, they all suck, they are all great, they all serve a purpose. What is in today, may be out tomorrow, but if you hang your hat on just one with all your might then you better pray to God or the speghettti monster that it will stay around. My path? Ratfor>FORTRAN>RPG>COBOL>Transact>VB>ASP>What ever keeps me employed.
Do not be a die-hard anything, but embrace the options that surround you. beyond that, remember to live life first.
Life is a great ride, the vehicle doesn't matter
when I was out on my last job search (about a year ago) it was almost ALL java this and java that. I, being most c and c++ (mostly c) was at a disadvantage. even though java wasn't the best tool for the problem, it was almost always being used. AND ASKED FOR.
;)
not one single job that I looked at (networking and netmgt) was mickeysoft-based. no c# at all - but again, I did prefer the unix shops over peecee shops.
a friend of mine even suggested I add the word 'java' to my resume JUST so that resumix (etc) would at least get a hit to my text. something like:
"java: I consume several cups a day of this stuff"
which is true - and I'm not lying about knowing the programming language, yet I don't get completely excluded from job searches, either
so learn it or drink it - but list it, at the very least. (half serious)
--
"It is now safe to switch off your computer."
Or Hindu?
Better learn the language of the country where your job goes.
Fight Frist Psoting!
Browse Slashdot with 'Newest First'!
Not really... GNU Classpath and friends are much more mature than the Mono runtime at this point.
Throw the bums out!
One thing you might want to consider is how much ease/trouble you have setting up toolchains. I have some mates who have had difficulty getting C# up and running on linux. Try setting them both up and getting hello world programs running and see how you go with that. Then try creating a simple UI with each, or deploying to a webserver (ie: tomcat) and writing a hello world there. I'm not familiar with C# myself but have spoken to friends who have tried to get up and running under debian (some months ago now). I suspect you'll have a better time of java.
Believe with me, my saplings.
The company I work for had a hell of a time hiring a C# developer with any experience.
Not to mention all the good programmers who had a hell of time getting hired as C# developers because they didn't have any experience in it yet. You'd think that these two issues would connect up, but evidently not.
OMG
You could be right!
er... I mean... Right could be you! (I learn fast, no?)
The Admin and the Engineer
In all reality, it matters not what language you choose. Your goal should be to understand the concepts of programming and to think like a programmer. The languages in use today are just tools to let you manipulate 1s and 0s. Better to understand the algorithms than syntax. Syntax changes and there are a million references for each language. ALogorithms generally don't change. Employers like thinkers... not "Java guys" or "C# guys." Start thinking on a broader scale and don't be tied into specific languages 'cause, truth be told, the language something is implemented in rarely truly matters.
What is your penile percentile?
As we stroll down Biased Blvd. let us remember which crowd you are addressing...
That said, let's drive through. Java is a far more mature language for achieving complex work, with enough source code examples and cookbooks to fill those Jolt Cola and Cheeto's nights for longer than a human animal can stay awake. The free (as in beer) IDE's such as Eclipse are easy to use and offer plugins galore. Java can suffer from some implementations in that most coders are focused on implementing the application's business rules and managing data sets, rather than the user interface. Java is the closest language one can get to in the "code once - run anywhere" metaphor. Java supports just about any design pattern or framework you want to throw at it. Java may be the most popular and business prolific language in use today, and is driven by Sun Microsystems.
C# will currently only run on M$ platforms, which in my unapologetic opinion, does not stand up to the reliability and sustainability of *nix. C# can produce some "glitsyer" UI's and it does support some decent back end work. To my knowledge (I gave up M$ Enterprise Architect Virtual Studio a couple years ago) C# is entirely supported by the M$ framework and does not lend itself to the same scalable applications that Java cleanly supports. C# is driven by M$ and in the business world has substantially smaller pockets of acceptance.
Oh, and C# is the work of Satan!
Good luck!
And disregarding everything else, I would pick Java. I have been programming in Java for several years, and now I am programming in C#, since the company that I work for is a MS shop. In terms of syntax they are very similar: if you learn one of them *well*, you can pick the other in a day or two; it will only take time to get familiar with the class libraries. C# is not a bad language, but in terms of language design Java feels better. Take the UI part for example: some argue that Swing is slow, but it is a real joy to use: Layout Managers, Decorators (for borders), Pluggable Look and Feel, among others. Windows Forms feel as just a thin layer over the old MS GUI stuff: I can write a full blown application in swing without specifying widget sizes; try to do that in WinForms. Version 2.0 partially addresses those issues, but the solution just seems to be a hack: instead of properly implementing layout managers, they just welded them to the Panel classes, and they just provide two layout options.
My cellphone ringtone is a ring tone.
Like most of the people reply, I would pick Java, because of the maturity of the community and the value of the open source products built with it. The most valuable thing about Java is that you will have access to a vast amount of quality code, OO frameworks, design patterns and different project organisation schemes. This exposure to the work of highly skilled professionals will be your benefit and your advantage if you pick Java. I don't say that it does not exist for C#, only I haven't seen a lot, unless it were ports of Java-first projects, or look-a-likes.
If you're smart, you will detect the discipline behind a project, and learn that too.
Besides Java, any OO language - used for a lot of active open source projects - is a valid choice if your goal is learning. As some of the posters pointed out, jumping from one OO language to another surely isn't the hardest part of the job.
--------
* Sigh *
C# was invented for one reason: locking sytems into a windows deployment. There are some attempts to port C#, but those efforts don't have 10% of the current momentum that java has from a large community of both corporations and volunteer open source contributors.
... but I hope that the C#/.Net porting effort gains momentum. Firstly because it will might acutally make at least some applications applications targeted at Microsoft Windows and implemented in C# portable to other OS'es which in turn will hurt the Microsoft monopoly. Secondly I hope .NET will take off on non Microsoft platforms because despite all it's advantages Java needs competition. Thirdly C# really isn't all that crappy a language to write in, especially if you resist the temptation of using Microsofts development tools although don't mind using their compiler. Of course if the Open source community would come up with a third non proprietary cross platform development environment to truly compete with .NET and Java in the way the LINUX/Apache combo competes with (and hurts the sales of) the Windows 2003/Microsoft IIS....
Only to idiots, are orders laws.
-- Henning von Tresckow
According to this article in business week, Java is losing momentum.
I teach Object Oriented Programming to engineering students in a university here and our class is still taught using C++. What was said in a former post about learning any OO language will enable you to easily cross over to other languages is true. But, from my experience as a teacher, students will actually only go from hard languages to easier languages. The C++ syntax is such a bitch sometimes that I can't really picture any student going from Java or C# to C++. But, then again, I don't believe any of my students read ./
So my advice to you is this: read the article, then choose either one, and get a good book for the other.
Let's get the basics down;
Sun is Evil, Microsoft is the Devil.
C# is Java for Windows, Windows is Very Evil.
Both C# and Java are Pure Evil.
The Lesser Evil, I guess, would be Java.
Please point out to your professors that you shouldn't be taking courses on programming languages, but programming paradigms. I learnt three languages my first year, and, in fact, I learnt Ruby just yesterday. Sure, mastering the language can take a few years (or a lifetime, depending on the degree of mastery), but once you know the basics of the paradigm, you can learn the conventions of a language in an afternoon.
No growth, no interest that I can see...
f twareDejanews.png
http://www.realmeme.com/roller/images/meme/monoso
Nobody has to check "if an integer is really an int" in Java because it is strongly typed. It's either an integer or it is not. parseInt is for strings that may or may not be integers.
From the viewpoint of padding your resume, I think C#/.Net is more likely to land you a job.
From the viewpoint of eligance, there are things that C# automates, such as events, iterators, and GUI programming. Choosing Java will allow you to get a better idea of how things work "under the hood".
From the viewpoint of a former student, get the broadest perspective possible. You should learn to be flexible in your choice of language. Because both languages are similar, choose the language that you're least likely to use in the long-term.
No, I will not work for your startup
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.
... Java may be the exclusive language used on a wider variety of platforms, and opens up those platforms to you for development.
Conversely, while C# might be an asset to you for some employers, I imagine that you will rarely be in a situation where C++ won't serve just as well.
Dan.
This perl based python interpreter imbedded in a java environment with C# syntax is all the rage.
After that, learn jerlthon sharp on rails with AJAX. You'll be the darling of any MBA
-Nuke the moon
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.
.NET is not a real technical barrier; just a cultural one.
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.
Please mod this post only if you think others should/n't read this. I have enough ego^H^H^Hkarma. Thanks!
Good Grief! Holy sucky programming languages, Batman! What a choice...
Why are so many people suggesting Java because of eclipse, or c# because of visual studio. If you are rating the language on the IDE then you obviously don't know the language adequately.
.start()... in c# you make a method into the thread... It's a little different to think about since you can make more than one thread object of a single class, perhaps this can lead to bad design since you will need to lock a single member object that is common to the class as one thread may clobber another.
Learn to write in Java or C# using a no-thrills plain text editor, such as emacs or nvi (or gvim). Also, get a few books on the subject, there's plenty on Amazon, they're really worth a hundred lecture hours.
It's not odd that you are stuck on a choice between c# and java, they're very similar. I do prefer Java, just because of the way threads are handled, you simply implement Runnable, and make the class a new Thread object, and call
Why UNIX?
If all the complaints here about outsourcing are correct, rather than Java or C# you should learn Hindi.
I've held off learning C#, mainly because I felt it was a M$ rip-off of Java. However, it is very easy to learn. Java feels like c++ does to C; that it has had lots of stuff bolted on over the years. I use c#/java to write guis mainly, and, with .net studio, c# is a heck of a lot easier to learn and use, especially if you've used visual c++.
So, I suppose it depends on your background.!
My web domain.
If C# was invented for that one reason, why did MS release Rotor for FreeBSD?
To check off a box in a brochure, of course. It's not like anyone deploying an app on BSD would be using C#.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
"I would second this, only in this respect. Microsoft included a lot of "syntactic sugar" in C#. This is a much maligned phrase as I think there is harm that comes with syntactic sugar. It may make things look prettier, take less characters, etc. but it tends to make code less verbose. And that's one of the HUGE strengths of Java. It's very verbose."
The Carpel Tunnel Industry recommends Java.
They dont prepare you well for development, but are more suited for webapps and little servelets. C or C++ would be much better.
Pretty much, I dont consider someone with out C experience to be a developer.
Yeah C# rules! I love being tied in to Microsofts OS!!!
And yes I know about Mono but I also know that Novell has cut much of their Mono staff recently and is planning on continuing to do so in the future in the hopes that Mono will be carried on by the Open Source community alone. Have fun with that. This isn't even to mention the simple fact that Mono is nowhere close to mature, stable or complete. Also, Java has tens of thousands more open source libraries that have been extremely well tested.
I love the people that bash Microsoft constantly and then go ahead and tie themselves into a technology that is completely governed by them.
If we presume you know C pretty well, I'd recommend Something Completely Different, such as Scheme, Smalltalk or Ada95. The reason is that too many similar languages don't really add that much to your underlying knowledge. As has been pointed out, both Java and C# are similar Object-Oriented languages, and aren't all that different from C++, if you know that. Scheme, or any of the Lisp dialects provide a substantially different programming paradigm.
Another alternative, although Politically Incorrect, is Ada95. Three things make Ada95 significantly different: First it's strongly typed, and there are substantial advantages to learning how to make use of type models. Second, Ada provides a separation of program modularity (via packages) from class heirarchy, and it's interesting to see how this separation can be used. Third, Ada95 provides a very rich set of facilities for concurrency, and learning good concurrent programming is a very valuable skill.
Smalltalk provides yet another view of OO programming, and it's definitely worth concentrating on the Model-View-Controller paradigm.
But it all boils down to the conflict between education and training. Both Java and C# are good for near-term employment prospects. But if you're after education, learning to think in another programming paradigm is well worth your time in the long run. Languages come and go, but programming skills stay. And, by learning a substantially different language now, you'll increase your ability to learn the Next Big Thing language when it arrives.
Oh, and as someone who has interviewed a fair number of software engineers, I -never- hire someone who knows only 1 language, and in that regard I do not "give credit" for C and C++ as sufficiently different. (Way too many people code C++ as bad C...) In some cases, I've sent people back to school to learn another language, because they had talent that needed additional education. But then, I don't hire people solely for "cranking out code," even though that seems to be the pattern in much of the industry these days. (Bad coders => bad code => bad software, and the kinds of things I work on value quality much more than time-to-market, because people's lives tend to depend on them... Your job may vary.)
dave
learn both.
(hey, if you expect only one for answer, you should've written: C# XOR Java)
Wow
I guess the 90+ Java job openings my main customer has is just a fad...
If you want to write Linux desktop apps, C# is the obvious choice between those two. Beagle, F-Stop, and a number of other important Gnome apps are written in it. C# has full bindings to Gtk+, has a full-features open source implementation (Mono), and it's also a well-designed programming language.
If you know how to program in C#, you essentially will know how to program in Java anyway--Java is pretty much a subset of C#--so, in terms of education, you don't lose anything.
Java
I personally prefer C#, at least as a toy language, for the following reasons:
*It has some features that make it more compact, like operator overloading.
*It is integrated into windows so you can make GUIs that look like other applications
*It is faster
*Visual studio is a better IDE than many of the Java ones
*All microsoft development tools are free to students.
Now all of these are explicitly whimsical arguments. In the real world, none of this matters, because the language you use in a given project will almost never be determined by pure aesthetics. But if you are going to spend a semester working with a language you never use again, I would rather spend it with C# than Java. And, as many have already said, they are so similar that you can pick up the other very quickly.
The advantage of Java in my mind is that it can be used in a Linux environment
Java's integration into the Linux environment is lousy: getting at Linux kernel or desktop APIs is a lot of work. Furthermore, the only really usable Java implementations are proprietary and don't even ship on many Linux systems.
If the choice comes down to Java and C#, then C# is clearly the better choice in my opinion for anybody who cares about Linux programming: Mono is an open source C# implementation that runs on all major Linux distributions and provides full access to Linux and Gnome APIs.
If other languages are an option, then I'd suggest getting started with Python--it is probably a better language for learning programming than either Java or C#.
Companies tend to use either one or the other, so it only matters what they use at the company you work at. Fundamentally, either one is only commercially useful for dynamic generation of web pages with slight differences between the libraries. Although desktop application development is supported in both langugages, it is not common to use either language for application development. For application development, I'd have to say that C++ (and Delphi to a lesser extent) are probably the best choices from a commercial perspective. Try not to be too infantile in your decision, because either Windows or Linux is useful commercially, although college kids tend to talk negatively about Microsoft, because they are poor and want everything for free. Once you get a job though, you'll want to get paid for your work too and then what ever tool is most productive for you will make you the most money. Visual Studio is a much better IDE than anything on Java, but you get what you pay for. If you want to be cheap and use tools that are created for free than Java is for you. If you want to use the latest and greatest, than .NET is probably a better choice, since Microsoft makes most of the enhancements in XML and such, because they hirer whoever's the best in their field for a project and like I said before you get better tools from people who spend more time and money developing them. From a commercial perspective .NET allowed companies to leverage the skill sets that people have in whatever language they used to program in, rather than forcing them to use only 1 language. This allowed programmers to work together for a common cause, rather than segrating them. Microsoft is also pretty responsive about fixing problems. Who knows where you'll be with java considering the financial health of Sun: http://finance.yahoo.com/q/bc?s=SUNW&t=5y. I am very concerned about putting time and money into Java when Sun is in danger of going under. I have the same concerns about putting time into Delphi, altough Borland manages to keep cranking out new updates, since there is so many production databases done in Delphi. I suppose there is also IBM who is doing Eclipse, so maybe Java is safe.
Java on the other hand is more flexible. Until MS starts integrating with highend servers (which they anounced recently), Java seems to be the best HTML generator to setup on a highend server. Therefore you see companies like Ebay using Java for their website. Perhaps with Novell behind Mono (cross-platform port of .NET) we will soon have a commerically viable method for using .NET on Linux.
In general if Java adds a new feature, than Microsoft adds it and vice versa. Being tied to a platform is not a concern as most people seem to think, since you are dynamically generating web pages. I find that clients in warehouses seem to prefer Windows and clients in more technical IT fields seem to prefer Linux, if they have a large enough IT staff. Either way, your application will be platform neutral (depending on how you formulate your HTML). I write C# commercially and did Java in the past. I just got a new Java book, though, because I like to stay educated. Anyway in the long term you should learn both, but choose which ever one now that you have the best access too. Java might be easier if you don't have access to an MSDN subscription, which will let you get all the essentials like Visual Studio, SQL Server, and Reporting Services. Altough I guess MS has some free express versions.
Strongly disagree. C++ last. Why? The language is poorly designed and poorly defined. You're much better off learning a language where you can argue about correctness of programs, i.e. "If this is legal code in the langage, then I -know- what it will do", than worrying about "Oh, what will this compiler or that compiler do with this code sniglet." And C++ is very unforgiving of mistakes. It doesn't catch much at compile-time, so you spend much more time in runtime debugging (which is always a bad thing).
Much better to learn good techniques early with tool support, and then if you want to juggle chainsaws, you'll at least have a solid grounding in the concepts.
dave
A bit of a disclaimer, I've done much more development with Java than with C#. That said, I would recommend Java primarily because it's much more versetile. C# may be useful if your using ASP.NET (as much as I loath to admit it, there are some things I, as a PHP developer, really like about ASP.NET/C#), but for Java you can do web development with JSP, plus you're much more likely to find devices like cell phones, pdas, etc. that run Java.
All that said, as other posters have pointed out- the real goal is to begin to understand Object Oriented programming, GUI development and, if you are at DeVry, it will be your first actual programming class. Learn the ideas behind these and you should be able to pick up either language fairly easily.
Famous Last Words: "hmm...wikipedia says it's edible"
Java on the other hand is a cross platform environment supported by multiple competing vendors.
All conforming Java implementations are licensed derivatives of Sun's implementation, so there is really only one implementation.
It is useful that that one implementation has been ported to many platforms, but because Sun controls it, if it hasn't been ported to a platform you need, you're stuck. Also, platform integration (kernel APIs, system libraries, Gnome desktop) is very hard to achieve with Java.
There are some attempts to port C#, but those efforts don't have 10% of the current momentum that java has from a large community of both corporations and volunteer open source contributors.
Quite to the contrary: Mono is more and more becoming an integral part of the Gnome desktop; Java, on the other hand, is essentially dead on the Linux desktop.
Why did it bother to get C# implemented as an ECMA standard?
Government work requires that the language used is a standardized one.
Why does it help, instead of try and crush Mono?
In the eyes of MS, Mono is a toy to be tolerated until C# is entrenched in the market place and has a clear numerical superiority over Java. They can always kill it later.
Why does the API include Oracle functionality?
Because Oracle is a staple in the bussiness IT diet. Not to include it would hamper their efforts to replace Java.
I would say Java. As far as learning OOP, it doesn't matter too much which language you use. C# and Java in particular will be very similar because they are both based on C syntax. I have two major issues with C#: 1) you will have to learn a lot of MS specific cruft right off the bat. This will have a severe impact on delivering good OOP skills when you are most trainable (before yuo get bad habits). Java is quite "pure" in that way. 2) MS skills have a very short (2-3 year) shelf life. Maybe C# is the exception but I would look at some of MS's historical technologies before betting 8 months of your life on this tech.
The "but" is what are employers in your area hiring for. If you are just looking for what will get you a job now and the employers in your area are looking for more C# than Java, you might want to go for C#. The flip side of that is that you would be lockng yourself into working for an MS shop and all that entails. Even if it is slightly harder to find a LAMP/Java shop, you might be happier working there. As a bonus, you could then spend your time and tuition gaining new skills instead of replacing the old ones.
Using language as the sole or even main criteria probably isn't as useful as one might think.
.NET has a better enforced security/licensing framework if you're selling software components.
.NET world, but some haven't. Also, Java's maturity means googling may be a little more fruitful.
.NET cross-platform is a mirage. IIRC, Mono doesn't support the same UI classes as C#/Windows. Also IIRC, for some classes, like System.GC, some methods are part of the standardized spec, some aren't (q.v. .NET Standard Library Annotated Reference?). Certainly you can transfer lan
FYI my recent background, I spent two years doing C# (.NET 1.1), and the two years prior to that in Java (1.4), and some Java 1.5 most recently. In all cases it's mostly server-side stuff (messaging, database, etc.) - can't stand the vagarities of UI subjectiveness.
It's probably more interesting what industry you're targeting. e.g. I see a lot more Java used for heavy duty stuff than C#, in financial software; but
I've also noticed that Java has more interesting 3rd party stuff (due to maturity? popularity?) that you can learn good ideas from or leverage: e.g. Hibernate, all of Apache's stuff, JBoss, Spring, Struts, etc. A lot of these are (being?) ported over to the
From a tools perspective, I must regretfully insist that Eclipse still has the edge over VS. Even if I accepted that VS2005 finally caught up last month when it was released (I haven't explored it thoroughly), Eclipse's plugin architecture and maturity mean that there's a lot of very useful add-ons for Eclipse.
For UI, I'd have to give it to C# (on Windows). People have expectations of what UI's supposed to be like, and that's Windows. C#'s UI API closely aligns with Win32, whereas Java's Swing... SWT looks nice, never used it, no idea how much work it is.
If language must be discussed...
Java has the "feel" of a precise, theoretically correct, and somewhat obstinate authour. Some things are tedious to do, but there's an overall consistency - there's a certain exacting style, and if it's inconvenient, that's a small price for consistency/"purity".
C#, OTOH, has a feel of pragmatism, and occasionally a little bit of hurry (or parallel development without enough collaboration?). Sometimes the APIs aren't quite consistent (I like comparing C# collections to Java collections for this), and there are a lot of convenience features/concessions. C#'s more modern, so there's built-in support for commonly accepted notions like Properties, Events, and function pointers.
In an effort to be useful, I'll try to make some recommendations. Given the contextual void, these recommendations are suspect, but anyway...
For strictly academic, go Java, then C#. Java's maturity means a larger knowledge base, and Java will probably teach you better style, and you'll appreciate the conveniences that C# gives whilst having learned to avoid abusing it. It's like knowing some of the pain of memory allocation in C to appreciate a GC, and understand memory well enough to know the GC's limitations.
For front-end heavy apps, or pretty apps, or very custom apps, go C# (on Windows). C# generates better looking UIs, and if you're going to do a lot of custom work, you may as well do it in a convenient language. VS's excellent support for "drag/drop of components" style of development is very useful here.
For server-side heavy software or bigger projects, go Java. In my experience, I've found the less UI or business flow, and the more processing-centric the problem, the better I can leverage libraries, and the more net value I get, despite the overhead cost of using other people's software. Bigger projects also means you might want to buy/get more software targeted at development or deployment, for which Java has a larger # of players (e.g. development tools, middleware platforms, etc.).
For cross-platform, go Java. I'm not familiar with Mono, but I think
Quit DeVry. Both languages suck ass. Any school that requires that you study one or the other likewise sucks ass.
I think you shouldn't be worried about learning either Java or C#, what should really concern you is if you are going to keep wasting your time at Devry or go to a real school.
The language on the website is slightly confusing. If you download an express edition it doesn't stop working in 365 days. It just means that a year from now Microsoft *may* stop offering it for free download.
Think of it as "if you download within the next year, it's absolutely free!".
Neil
For many important reasons, I would agree that C#/.NET is the better choice. I know both Java and C# and if I had to learn just one, it would be C# without any question whatsoever. Yes, the languages are generally comparable. But as someone who has really worked deeply in both (and I think many respondents really haven't done much C#), the honest truth, IMO is that Microsoft obtained significant second-mover advantages. In both technical and commercial ways, the C#/.NET platform really crushes Java.
.NET has good integration with many things you need to use, from SQL Server to Direct X on XP. If you're making applications that you want to look world-class, you need to use the native toolsets (read the style guidelines for Windows Vista, for example. You don't see many translucent applications getting built in Java). The Microsoft toolchain is excellent - on my last project I used both Eclipse and Visual Studio 2005 and VS2005 really dominated. .NET is a great framework, and MS looks to be very committed to living in it for a long time (unlike COM, which blew).
.NET jobs pay better and are in greater demand. The world is full of Java people - they churned them out during the dot-com era. While some are really great, a lot of them aren't and you don't want to be grouped in with the average ones. If you do learn Java, try to learn C++ too so you can put both on a resume; it shows a recruiter that you're more competitive. Microsoft's developer support is excellent, which detractors often overlook. They train you, invite you to events, give you software, and generally work very hard to make you competitive.
.NET is definitely firmly on Windows, so it's not nearly the cross-platform language that Java is. On Linux, C# is really a second-tier language.
.NET; there's a lot of very good stuff there.
For one thing, C# is significantly faster. Microsoft's JIT compiler is better and they are really pretty aggressive about improving performance in all aspects of the framework. This really is a big deal in all kinds of applications; time and again I've seen teams choose C++ over Java because of performance, where C# would now be a viable choice for them. If you develop on Microsoft platforms (and sooner or later you probably will),
On the commercial side, I've found that
On the down sides: While there is Mono, the cutting edge of
I think many Open Source partisans dismiss Microsoft technologies. That's not a good idea; it really hurts the state of Open Source - play with Eclipse and Visual Studio 2005 for a while and you'll really wish the Eclipse people spent more time in Visual Studio! Miguel de Icaza was right to plunge into
.....and as student you should master C++(ANSI) not Microshit's managed C++.
"This is of course coming from a recently graduated CS major, so take it for what it's worth."
OK..."ShatteredDream".
Is this just dumb, or is it the most ineffective troll ever?
The important thing while you're in school is to learn the concepts. No matter which route you take the concepts will be more or less portable across multiple languages. The syntax and mechanics of the language may be a little different but the ideas remain the same.
All of these languages have different strengths and weaknesses. A good developer considers what his program needs to do and selects a language that will make his job easiest and produce code that meets requirements.
This all said I highly recommend Java in this case based on your comments. Main reason is it's Linux friendly. C# has the Novel port but I think the amount of community support you'd get will be minimal if you get into trouble.
Second reason is Java is a little simpler. The differences between C# and Java fromm a language syntax standpoint are a pretty fine line but C# makes some more C++ like functionality available that makes it a lot easier to hang yourself.
Some might argue another reason is Java is also free. However you can download a 1 year version of Visual C# express right now for free (which easily covers your coursework) and the basic .NET tools (compiler etc) are also free if you don't want a fancy IDE. So I don't consider price a viable argument for your current situation if you just take the course and quit programming. Long haul Java is a cheaper choice and Eclipse is pretty darn cool if you're going to program beyond your coursework.
My two cents.
Before you hit that preview button, you may want to license Patent 6,708,221. It's already too late for me.
( could ( be right 'you ) ) or something.
Shop as usual. And avoid panic buying.
I agree completely.
.NET for example, has a robust, fully developed design guideline to ensure that library developers are writing compatible code that extends the framework.
There is even a utility called FXCop available that can scan through your solution to make sure that your code is complying with the guidelines. Visual Studio 2005 has this functionality builtin by default.
C# is a useless copy of Java. It is disgusting how MS just changed the names and capitalization of Java. What a joke. You will benefit by using Java due to it's huge codebase and users. C# will die as soon as MS abandons it.
I had quite the opposite recently when I had to do interviews for a new programmer. About 75% of our resumes were way too overqualified, and most had extensive C# experience.
I recommend Java, it is not M$-centric and is more mature than C#. But no matter what OOP language you learn, I think every programmer must have some basic understanding of C and Assembly (you don't know what you really do when you program a computer unless you have seen C and Assembly in action). Other interesting languages are LISP or Scheme, Perl, PHP, PROLOG, and Python. and, by the way, VB is a RAD, not a programming language. I believe the main working languages for GNU+Linux users should be Perl, PHP, Python, C, C++, Java , with that order (switch PHP for C++ if you do systems programming).
When it comes down to it, Java is a much better teaching tool. Knowning Java today is equilivant to knowing C ten years ago. It doesn't take anyone long to see that most journals, text books, etc. use Java as a language that everyone is assumed to know. As an example Tannumbuam recently updated his "Computer Organization" to use Java for examples. Dr. Dobbs frequently seems to use Java unless talking about a specific programming language, etc.
.NET is nice and all, but Mono is far from being on par with the Micosoft CRE. .NET ties you to Microsoft, and it is noticablly slower than Java in a lot of applications. .NET limits you to Vista, and that's betting a lot on a new OS release by Microsoft that many people don't seem to be in a hurry to adopt. Don't forget that while threre are already java runtimes for GNU systems, GCC supports native compilation of Java, and projects like GNU Classpath are much further along than Mono.
The nice part about learning Java is that, assuming you have a decent instructor, you'll learn how to think in terms of objects because in Java you have no choice. Other languages, even though they say they're object oriented, tend to hide details just enough to let people slide through without learning oop at all. Sure Python is a great object oriented language, but you can use it without ever being exposed to objects and classes. In Java, everything is very literal, and there is little guess work.
Implimentation wise, Java runs on everything. You can use Java for writing servers, applications, dynamic websites, and there are even a nice assortment of microcontrolers like the JStamp that use Java bytecode dirrectly. For this reason most engineers today learn Java.
After you know Java, C++, C#, etc. will come to you very easilly. The same can't be said about learning C# which teaches little about programming. If Sun continues on their current path, Java might be opened up soon.
Last time I looked (a while ago, but still), that was how the documentation of C# came along. Java documentation is HTML and PDF.
You choose...
Grab the JDK 1.5, grab a book or a tutorial, and install a good IDE (Netbeans, Eclipse) or just use a plain old text editor to keep it simple and you are set.
If you're a hacker, you can quickly pick up the other, but it makes sense to choose the first of the two on an informed basis, so kudos for the question.
Decide which language offers the most enjoyable job opportunities. For me it's Java hands down.
-I like my women like I like my tea: green-
C# is all the interesting things about Java plus a couple more interesting features. Microsoft had a quite a while to learn from the lessons learned with Java so this is quite understandable.
.NET not the actual languages. Both markets are likely saturated with vocational school graduates so I don't think learning either is going to give you and special advantage.
If you care about learning an interesting language that will give you a broader perspective on programming, go with C#. If you care about getting marketable skills, I honestly believe they are both equivalent. There are probably more Java jobs out there right now but C# is catching up. Keep in mind, these jobs are really about either J2EE or
If you like the MS development environment, go with C#. If, instead, you prefer things like Eclipse, go with Java.
Although I like a lot of new C# constructs, I would recommend Java. I'm a hard time Java user, but I also did a course on C#. Problem with C# is that it already has way more features than Java, and that is not always a plus. Furthermore, it tends to be less OO friendly. E.g.: you can choose methods to be virtual or not in C#. In OO design you would want your methods to be virtual. In C# they aren't, by default!
.NET J#, add some Windows forms (GUI) stuff and you are set. And it is way easier to install as .NET as well, runs under Linux no problem. And no reboots (although Java JDK sometimes asks for it, simply ignore :).
In C# you have things like operator overloading and properties to worry about. Both can be usefull at times, but they can also obscure what happens underneath pretty easily. Same goes for aliases. Delegations. Precompiler statements. Split source files. Same goes for keywords, the number of keywords in C# is already growing, as is the language specification. For instance you can now embed SQL like statements; nice but can be confusing. Lots of stuff you don't want to know about (yet).
If I were you, I would start off with Java. Take the latest, free Java 1.5 JDK from Sun, the latest, free Eclipse development environment from eclipse.org and set your compiler settings for 1.4.2 compliance. Except for serious, deep, GUI-stuff you can then always load your source files into
"But oh wait, you mean they ought to give it to you for free while you can make money out of it? Nice one, there."
:)
Those who went to the launch event got the standard edition, sql server, msdn, and a coupon for biztalk.*
*And yes I plan on making a living off all of this...eventually.
--
Programming Asp.net: 3rd edition covers VS 2005 and C# 2.0 as well as ASP.net 2.0.
Take one and learn it well. Make sure you understand OO , learn design patterns, uniform your coding. Don't get stuck into a 'simple' webpage or quick winforms. Try to set out some goals and mile stones that you want to reach in your coding skills. Make sure you don't neglect your (project) management and communication skills as well.
When you know Java or C# well, it's not that hard to switch over to the other. It's just syntax.
Yeah I know open source free blablabla.
I'm not paying the Visual Studio license, my employer is, so I actually don't care. Other competition is also asking money for it. Even Sun!! Although they tend to put the extra cost in their hardware. I simply love the one stop shop solution(s) that MS offers.
And the 2000$ Visual Studio license cost every two years. It's peanuts compared to the 24x month salary, social security, dental, hardware etc that my employer has to pay / buy me.
"But it all boils down to the conflict between education and training. Both Java and C# are good for near-term employment prospects. But if you're after education, learning to think in another programming paradigm is well worth your time in the long run"
I couldn't have said it better.
Actually maybe I could have. To really get a different paradigm, try Modula 2/3 or Oberon.
Then try to learn SMALLTALK.
You're ignoring (or just don't realize) the fact that C# can be used with managed C++, which in effect means that most libraries written in C++ can be used with C#.
Where I work (financial technology for a big 3 brokerage firm) we're moving our front office development into C# over the next year. This is moving from using Excel as a development platform (its strange but true - with the right set of technologies running =underneath= Excel, it makes for a very workable enviroment in which to build financial models, with the main win being very short develop-test-release cycles). The way our system works is with three layers, on the bottom you've got tibco at the transport level, our custom built libraries on top of that which provide the services and which in turn get called by the application(s) running on top of that.
Since the middle layer is all C++, and since we use MS on the brokers' desks, it made perfect sence for us to move into C# as the requests we're getting are going beyond what we're capable of doing in Excel (and believe me, we're doing things right now that MS has claimed are 'impossible').
From what the senior dev's on my team (and we're talking about global enterprise networks type of development, valued in the $100mils), no one loves C++ because its a bitch of a bitch to use well, and (like with C) its easy to make mistakes and write very ugly code. Java seems to be rapidly falling out of fashion, its just got a lot of software written in it right now - I can't speak for the rest of the world, but I do know that the one set of software which consistently causes problems for the users are the ones written in Java. I make no claim that either of those are representitive, just the way that I'm seeing things right now.
From my own experience in learnina Java while at school, and C# now while working, I've found that I significantly prefer C# to Java.
Java to me always felt quite constrictive and overly verbose, and I always felt as though I had to jump through hoops compared to C. On the other hand I find using C# a breath of fresh air. It feels like a well designed language which feature which, although aren't innovative, are well polished - and to be honest Visual Studio is one hell of a powerful tool. I've used Eclipse in the past and enjoyed it, but VS, to me at least, just feels a little bit more intuitive and easier to use. Just like C# feels a little bit more intuative and easier to use than Java ever did to me.
"There is no spoon."
-Mike
Do Java.
C# is just Microsoft's own version of Java anyway. They just ripped-off Sun's ideas in order to do their usual 'make their own version of an existing standard' thing.
Anyway C# will only be cool until Microsoft come up with another 'next big thing' becuase the only way their business model can survive is if they keep selling new licences for the same old crap under a different name each time.
I'm reading a lot of comments that say that the two are very syntactically similar (which is very true), but keep in mind that the main battle of being able to say that you actually know a language in the mind of an employer isn't knowing the syntax, it's having a working familiarity with the API. Can you really say that you know Java if you don't know how to change a JTable to look a particular way with checkboxes inside of it? Do you know .NET if you have no idea what something like the Dataset can get you? Know the APIs, my friend! They are what enables you to quickly develop once you can immediately say "TableCellRenderer!" and "Oh, an in-memory database so I never have to write SQL queries!" If you can't really do this, then you can easily get burned on an interview.
.NET in a heartbeat. If you want to do lots of server-side or backend stuff, definitely Java.
.NET's easy GUI-building capabilities are worthless if you're writing back-end code.
I also think a lot of the decision should have to do with what sort of programs you want to develop. If you're looking to do GUI-related application work, I'd go with
It just depends on what you want to do, so give some thought on that front. Be weary of what you place importance on; Java portability most likely won't matter if you want to do desktop applications since the majority of business desktops are using Windows. Likewise,
If you're not really sure what you'd like to be doing, I'd do Java. I've been developing on C# for a few years now and am learning to really like the API, but I think Java's is a bit "tougher" in some areas (Swing's nuances) and you'll get more out of it. YMMV.
it has many benefits that far outweigh any other language. For example, ... with a VB manual on your dashboard, you can park in handicap spaces.
But with a Java LRM on your dash, the store will bring you a wheelchair.
Clearly, Java is the winner, hands down.
No. No you should not.
Java is the slowest, junkiest language around.
what the fuck does that mean?
Thanks a bunch. +5, Informative, indeed.
Shop as usual. And avoid panic buying.
Once you learned all that you can pick up any language and a matter of a few days (just learn its particular syntax and associated libraries).
I for one am getting sick and tired of folks who claim to know Java/C#/Whatever, but who are trapped in the specifics of that particular language and have no understanding about the underlying concepts.
C# is designed for programmers, means, whatever language you know (if it is supported by .net framework) go with it and do your coding. So over the period of time a programmer may become a GURU of using his/her language of choice without worrying much about the language which may become obsolete at some day. While Java is a matured language with lots of momentum (it's around here for more than 10 yrs); but still, philosophy behind C# is better, means, you do not have to change your tools to do things in a better way.
However, I would prefer Java to teach/learn OO concept. Its a great teaching/learning tool for programming.
Well now my suggestion, do not plan to have a software engineering/developer career, if you want to work in USA, it is good time to think about it.
Like you cannot find a goods in US mall which is not labeled with "Made in China", within few years, you won't find a programmer who is not from India or Chaina or rarely from east europe.
Both these languages are somewhat encumbered, as other comments have already pointed out, and there's plenty of OO langauges out there.
If you have to choose, choose the language you can get the best professor for, but don't let your schooling get in the way of your education!
I know both and I must say that C# has a vastly superior library. Java is free and more pure, but the .NET framework compared to the java one... well, .net is just plain comprehensive.
It has methods included for everything. It includes nearly every type of data structure and design pattern already immplemented, comes with several sorts built in, a great math library, and tons of user interface functionality.
While both languages are theroretically capable of anything... it's nice when you are working in C# to just be able to know that pretty much any idea you could want to express has a function ready to do it. It truly exists on a one-concept=one-line-of-code kind of model. I found Java's framework lacking in that respect.
That's cool! But don't forget that most schools that teach programming languages are also members of the MSDN, allowing students to get free copies of Windows and Visual Studio (plus some other MS software)
The more important question is, does it run on Wine or CXOffice??
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.
.NET (afaik).
.NET, and they like the framework.
/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.
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
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
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
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(!)
It all depends on what you're doing, but you asked, so I'll tell you: C#.
.NET CLR, on the other hand, coded by the boys at Redmond is... really, really, really fast. I mean it's optimized to the point where things like garbage collection and memory management are faster than C. I mean really, really fast. And C# scales well. I've seen enterprise applications that are millions upon millions of lines that compile in minutes and are quick and responsive. And then there's the Java-based grade system we use up at school that... well... let's just say that some days entire tables disappear from the database and it's almost a weekly ordeal to re-enter all the grades from all the students in the entire school. Now a lot of that is poor development on the part of our friends at Chancery (www.chancery.com), but I'm confident that at least some of it can be blamed on Sun's Windows VM.
On the whole, Java is a proof-of-concept language. It's beautiful, the syntax is elegant, it's clean, and it has everything you could possibly need for textbook OO programming. Also, it runs like absolute crap in the real world.
Don't get me wrong, Java is a great idea, and honestly I think that in the University world it should and will go a lot farther than C#. It's simply a better-designed language. But the three runtimes people actually use (SunWinx86, GNU's *Nix implementation, and the one used on mobile phones), well, they suck. They're memory hogs, slow, and they never seem to optimize anything properly.
Microsoft, on the other hand, took a far different approach. They tried to design a language that people would actually use in the real world. Therefore, they made some design compromises. Yes, C#'s properties are a hack. A property is a variable that acts like a method--you can write and read from it, but it performs a behind-the-scenes method on each access. Is that cheating? Yes. Can I live without it? Absolutely not. I use properties on an hourly basis. They work incredibly well for input validation, checking for security flaws, etc. etc. Java doesn't have anything like properties because they are a poor design choice and it doesn't look good on paper to the design team. It's just not as simple as it could be--it's most definately a hack. But it works, it's fast, and it saves me time. Who cares?
Microsoft painstakingly tweaked the runtime to be lightning-fast. It's painfully obvious to me that Sun has no idea how to write a runtime for Windows. Maybe their runtime runs well on Solaris, I've never bothered to check. I know it runs moderately well on Linux. But windows? Yuck. The
My $.02
Bullshit hkb, the only ways you could ignore the history of bill gates protection services Inc. and what they will do are 1) you are very inexperienced and don't know their blackhearted history 2) you are some kind of astroturf shill for bill.
It's an abomination what billy bathgates has done to IT with his throbbing monopoly, aided and abetted by the un or misinformed, but I guess you don't care.
I'm a veteran Windows programmer who had to make the same decision a couple years ago. I decided to take my career in a Java direction, and I'm certain now that I made the right choice. Aside from the language itself being great, the Java community is amazing. You can find free open-source code for ANYTHING you need, and the class library and package naming system makes it simple to use third party code with your code. Bottom line, you can do anything you want with Java without ever having to pay a dime. Plus, of course, there's the whole platform-independence thing. Eclipse is pretty good free Java IDE. (JBuilder is better IDE, but it's not free. There is a free version of it, but it doesn't include a lot of the features for doing enterprise development.)
1. Learn neither language.
2. Pretend you know both languages (it's all in the jargon)
3. ???
4. Profit!
Register the editry.
It's like the difference a parts installer and a mechanic. Real mechanics make their own parts. Parts installers integrate and replace canned components.
Since both languages are p-type scripting languages, and you are a DeVry student, you are training to become a parts installer. That's a good thing, because it means you will probably be employed when you graduate.
I know this is /., and the fangs have to come out for anything with Microsoft in the name, but folks PLEASE PLEASE do your homework for not researching the criticism on C#. C# runs VERY well on Linux under Mono , and several good cheap compilers (even free, as in beer) for C# exist, including forms based programming (YES in Linux). Not to hammer the point home softly, we should NOT disregard technologies out of some deference to amorphous ideologies that may or may not be deserved. It's simply not fair to people who have to actually BE the whole subclass of programmers to give advice on technologies, particularly language selection, that is so narrowly biased on comments read here. In other words, 600 lemmings saying 'Microsoft SuXors!' with no justification not only sends the wrong message to a would-be coder, but starts to make what is basically emotional opinions seem like facts.
.NET framework has now reached maturity and is certainly usable. It was, I understand, actually framed as a language by the team that built Delphi for Borland, a language many folks here love and defend, while criticizing C# (a fact which makes absoltely no sense to me at ALL). It integrates well with database backends, works pretty damn effeciently with threading and server models, is inherently typesafe, and is quite simple to find commercial docs and free code snippets for (Books!).
/rant off.
C# is a wonderful framework to work with. I'm saying this as a code architect from a company that has actually produced a commercial product in it, start to finish (with SQL Server and Oracle). Of note, the
To say using C# is caving to a MS p0wned world is unfair, and untrue. It's a box of bricks people, what house you build (and on what platform) is still completely your choice.
Sheesh
--chitlenz
Imagination is the silver lining of Intelligence.
I notice reading this that, as always on Slashdot, there is a lot of misinformed zealotry, and since this is slashdot, a lot of it is directed against C#. Personally, I think that for most of the applications I've seen, C# and Java are almost equal. There are minor differences between the two and how they handle different things differntly, but I've said it before and I'll say it again. A good programmer will write good code in any language and a bad programmer will right bad code in any language.
My tips:
Do your own research, people will lie and pretend to be informed to defend their ideals!!
Get Eclipse and C# Express Edition 2005, figure out which IDE you like best. Sure, it's good to code in notepad, but why bother?
Pick your classes based on the reputation of the proffessor, not the language, become a good programmer, not a Java\C# zealot.
Learn as many languages as you can, especially ones that use a different paradigm. Learn at least a little of the following: Python, Perl, Java, C#, C++, Ruby, PHP, and Lisp.
Most importantly, code as much as you can. When you can work harder or code something to work for you, pick the latter. Find some open source project and contribute. Even if all you do is read through the code and fix some minor bugs, you'll be learning more about the process.
note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't regist
C++
I agree with the parent. The professor will make a bigger difference in your education than what language is being taught. Once you become a professional, you'll be able to program in any language so it won't really matter which ones you took in school.
Linux is loaded with goto. The goto is one of the more popular control
statements in fact. The resulting code is beautiful. The kernel itself
mostly uses goto for error handling. The old mkdep.c file, part of the
build process until removed for unrelated reasons, used goto as part of
an extremely fast and readable parser.
The main problem with unsigned types in C is that they "win" in
mixed-type expressions. Probably such expressions should promote
to the next larger signed type, or be refused if there is no
larger type. A better fix would be to have the programmer specify
desired ranges instead of named types.
...can generally be programmed with java. smart cards too.
;-)
also: desktop applications, enterprise applications, clustered supermassive financial applications.
oh, and you get to learn and love the code at jakarta.apache.org.
Java is simply more fun than C#.
C#, because you are a Linux type. If you said you were a Microsoft type, I'd say Java. The OO skills you hopefully will learn will cary from one to the other, so from that sense it doesn't really matter.
But if the point is to learn, then you will learn more by pushing yourself more, and that means not only in techincal ways, but 'religious' ways. People who don't know anything about X but talk about how much better Y is than X have very little credibility. You're better off being the person who can discuss when/why/how Y is better than X, and X better than Y.
Spend your time on human languages,
you'll need to spend time talking with your employers more than
you'll need to talk to your machines.
It's not like there is going to be many software jobs in the USA in 2012...
1. GNU Classpath has nothing to do with runtimes, it's a GNU replacement for the standard Java libraries.
2. You must not keep up with Mono development, which admittedly is sometimes going a bit too fast to keep track of. In any case Mono is essentially feature-complete at this point, while Classpath still has a ways to go. It's not used by many (any?) serious development outfits.
Comment sniper attack:
It makes you fat, gives you diabetes and rots your teeth.
Uh, no.
Sugar does not give you diabetes. Being fat gives you diabetes.
Go check monster.com to look at jobs in your local area?
Mono doesn't work that well and nothing beyond hello world programs have ever been portable between win32 and linux. Its controlled by patents and microsoft can yank the right to use it at anytime. Its a no win solution if your using anything besides windows. It will always be behind windows and its a way to create Microsoft lockin.
Java is improving and no longer sucks compared to c# which is what fueled Mono.
http://saveie6.com/
Well, my only point was that there are a bunch of free, open source libraries available for java. As for all the other stuff that you said, I shouldn't speak to it since I don't have C# experience. Well, I do have experience using Visual Studio and Eclipse, but this isn't really an IDE conversation. I have done some C and C++ in the past and have looked for similar libraries to do what I have done in java and just haven't found a whole lot free ones. I know that boost has a bunch of free libraries, and the ones I've used have been great. I guess I just wish that there were more free libraries out there for C++. I know I should get off my ass and start writing them, but there are just so many that I would want. The amount of time that people have put into some really good java libraries is amazing. In fact, I think there was a story here on slashdot about how java has now surpassed C++ in the number of projects on sourceforge. If I'm wrong, and there are a bunch of really great C++ libraries out there and I just didn't find them, please, somebody enlighten me. I want to use them.
Stick that in your compiler and debug it!
I guess he'll just go with Python.
Sadly, neither one is a good choice.
As usual, it's more fun for /.ers to have a religious debate about the relative merits of Java vs. C# rather than answer the actual question being asked. So the idea is to choose between them for the purposes of learning object-oriented programming, you say?
Either one will do almost equally well for a basic OO programming course, though you should be aware that despite all of the zealotism and hyperbole in the discussion here, they are *both* relatively poor choices for learning OOP. Both are designed to improve on the many shortcomings of C++ and C for large-scale development. As such, they are quite similar, and are roughly equivalently mediocre for erudition purposes. Furthermore, because they are meant as enterprise-class development langages, they have many features and formalisms (namespaces, assemblies, and particularly strong typing) which are designed to manage complexity and prevent errors for the 500,000 line code build. And if you're going to pursue a career in software engineering you're eventually going to want and need those things. But these same features simply get in the way and obfuscate when you're building a 200-line program to demonstrate an OO concept for a class. As the author of the Boo language (which compiles to the CLI) says in the Boo Manifesto, '"public static void main", that was a good one!'
A good choice for such a course would be Python or Ruby. Elegant, compact, forgiving, relatively pure (especially Ruby) and weakly typed, they are a pleasure to use. Ruby is so beautiful at times that you could weep. An even purer choice would be something like Smalltalk, but I think Ruby makes a better tool for teaching because it is also pragmatic enought to incorporate things like functional programming elements and idioms, which can sometimes throw light on the OO concepts and approaches by juxtaposition, and allow you to develop an understanding of when OO helps you get things done and when it gets in the way.
This doesn't solve your original problem, of course, because presumably you may choose only C# or Java. But do yourself a favor and try to bang out a few homework problems in Python or Ruby just to kick the tires. You'll be floored at how much more compact and lucid it is, and how flexible. Plus you will find in the long run that a feel for how you would implement something in a pure OO language actually greatly informs and improves your designs in languages like C# and Java, which will ultimately make you a much more skilled programmer. Which is, after all, the point.
Pick Ada, then you can get an interesting job in aerospace, instead of a boring job writing shitty web applets.
Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
"I see this a lot in MS on the web, i.e. "Our last product sucked, but this new one is great!""
"200...1...2...3...4...5 is going to be the year for desktop Linux"
People who live in glass houses shouldn't throw stones.
I just finished my masters in Geophysics and have had very limited experience with C#. The place i got a job with uses an all Microsoft environment. I was upfront with them about using all open source languages for my thesis work and the software i developed for my lab. During my interview i was able to demonstrate that i knew the fundamentals of OOP and the code that i provided as an example did so also. My point is that in the long run dosen't matter, as long as you know what you are doing and understand the underlying fundamentals of the trade. Howerver, i personally use java because the development environments are free (Eclipse) and their online documentation (search any class name using google and Site:java.sun.com) is very good. Also, the newest versions of eclipse are supporting openGl and direct GPU acesss.
About 30 seconds after you enter your first job, the 2nd language you learned at University will mean nothing compared to the on-the-job experience you have.
On the other hand, your GPA will follow you around forever.
If you know enough of one already to be confident (but not so over confident as to be cocky, cut corners and get poor grades), pick that one.
The advice others have given, about choosing the best prof, also holds true. The better prof will help you learn more and thus get better grades too. On the flip side though, they're helping others learn more and thus any grade curves will be harsher.
I hate to be so mercenary about it but, honestly, that's what University is really about. Forget all the foolish notions of learning, noble pursuits of knowledge, bettering yourself, etc. University is about getting out the far end, doing whatever you have to do to cope with crazy instructors, team projects where everyone else refuses to work, and all the other things people call "unfair." Of course it's unfair, it's supposed to be.
Your GPA isn't a measure of how well you've learned a bunch of exciting courses like Advanced Navel Lint Statistics 427 - it's a guide to employers about how well you can deal with such ridiculous situations because, trust me, it's only going to get more ridiculous in the working world.
So, focus on what gets you the best wins on your GPA and don't worry about the specifics of how you got it - as, trust me, that won't matter from the moment you land your first job.
What? You want to know why? because I said so.
Not enough???
1. A huge wealth of Java information is readily available via google.
2. It is pretty darn free.
3. The core language is mature.
4. The language is well made overall (go Gosling)
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.
How is this modded informative? The parent posts no links or arguments to backup his assertion. There must be a lot of M$ employees loitering around here.
If you can program object oriented code you can program both. OOP concepts are more important than lanuage specifics. If you are looking for job possibilities after graduating you would be best to have both on your resume plus having knowledge PERL, PHP, and VB.NET(oh the horror) would be wise as well. If you want to do business programming learn SQL as well. C++ for comercial software.
I wish I had mod points. I'm glad to see someone here that seems to understand programming as a true skill and not just some career path. If you are a really good programmer then you can get your own job by starting a company or selling a product - you don't need to learn nasty languages.
Learn lisp today!
C# and Java suck. Learn F# instead! ;-)
-- "I never gave these stories much credence." - HAL 9000
I tried java back in 98 for a school project. I hated it and it was awkward and slow. Swing still sucks but with swt in eclipse its better and java 5 is alot better with many new Object oriented features and basics like enumerators.
Thank god for C#.net. It made Sun improve java and I feel the language has been maturing and its easy to write code. It can do mostly everything c# can do as of right now... until c# 2.0 comes out.
http://saveie6.com/
When I took computer science in high school a couple of years ago, my teacher was able to secure free visual studio because the school was part of some MSDN Academic Alliance. We learned J# out of Java books and then moved to C# the next year. The languages are extremely similar and can easily be learned either direction. One cool thing about C# is that when you do things like web services, you can write a web service using C# and then write clients for it using VB or something else like that. All the languages under the Visual Studio .NET can communicate, which makes it really nice to learn. If you're future company has an existin app that it doesn't want to scrap, you can write code that uses it in whatever .NET language you want.
Also, I think the future is going to be in mobile technology, PDA's and smart phones. C# is amazing for writing your own apps on those. .NET even has built in support for PDA and phone emulation so you can test you're projects. To compile them onto the device itself, just sync and compile. If you want to learn mobile programming, learn C#.
"How does this shit get moderated up? The poster is clueless."
.Net for FreeBSD? Where it is today? Does M$ actively supports it as of today? i guess no, since a quick google only shows 2002 articles...
.Net Conventions...
you just took the word from my mouth...
"why did MS release Rotor for FreeBSD?"
Why should i care for a 2002 demo of
"Why did it bother to get C# implemented as an ECMA standard?"
For the same reason they released rotor: good marketing. To show they are playing nice, that they are compromised with standards. Standards my ass! Once they are the dominant force, they make the standards... and drop features originally intended to play nice, like rotor...
"Why does it help, instead of try and crush Mono?"
Help?! Last time i heard, they didn't let the mono guys get into the latest of their
"Why does the API include Oracle functionality?"
Because, M$ like it or not, many of their users prefer Oracle over M$SQLServer...
"In contrast, Java is currently a closed platform with Sun's fingers firmly around its neck."
There are tons of great open-source tools built around java technologies that are absolutely vital to the daily java developer -- like Eclipse, Hibernate or Ant. There are quite a few different implementations of the JVM from the proprietary and open-source worlds.
I believe java owes to a lot more people than just the Sun guys...
I don't feel like it...
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
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 ...
Its modded informative because its true. My assertion that .NET has excellent support for developing web services corrects the parent post, and therefore is informative.
You want a link? http://msdn.microsoft.com/webservices/
You can develop the skeleton of a web service using a dozen lines of code in .NET using both C# and VB .NET (although I still don't understand why MS decided to keep that antiquated language around). Creating and consuming data from web services is a snap, and is actually one of the major considerations when Microsoft developed the .NET platform. If you can get past all the marketing mumbo jumbo, check it out.
http://www.microsoft.com/net/default.mspx
Learn Python, instead.
.NET CLR ( IronPython implementation ) and the JVM ( Jython implementation ).
.net objects from it...
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
Yes, you'll be able to transparently handle java or
Programming in C# or java feels like programming in assembly, comparatively...
I don't feel like it...
I have to use Java. It is the biggest, most complete and usable language that I can use on my Windows workstation, my Mac OS X laptop, or my Linux / UNIX servers with no problems. Perl, etc are not quite robust enough for serious OO development, in my experience (Python might be making it, but not quite for me).
If you just want to get a job, they are both pretty good, but I would bet that C# will land more jobs now than Java. However, what is important is that job 10, 15 years from now. You need to develop more long term skills. Programming languages are just a tool.
Most of the posts suggest learning either language will teach similar concepts. While that may be true, the important part of the parent post was:
.Net programmers is much higher than Java programmers.
As far as post-college job opportunities, corporations use both (but each corporation tends to focus on one or the other). Perhaps you should do a little local research to see which language/class library is in more demand where you live. I have plenty of consulting friends in the Minneapolis/St. Paul area that focus on each and who are all gainfully under contract (although C# experts are in slightly more demand and can get higher bill rates, unless you're a J2EE expert).
In the Philadelphia area, a good Java programmer bills higher than any MS technologist, but the demand for
Very few employers (maybe none) realize programming skills transfer between languages. The job requirement says "3 years of C#", and nobody with 10 years of Java but no C# will be considered.
Learn C# if you want to be hired directly from college. You will have a job until MS changes its languages. A MS language is good for about 6 years, and C# is still new.
Learn Java if you want to learn a stable language with higher potential earnings but less opportunities. You can make twice what the MS techies make, but you will have to look longer and harder to have any job.
==
My opinion is pick the language that fits your personality.
MS is "easy". It allows many programming concepts that violate what the theorists say is good, making it easy to write really poor software. Even if you write good code, the other team members usually believe "It worked, so it must be good", regardless of the actual quality. My objection is you rarely know if a bug is your code, or just a MS flaw. One reason employers insist you know THIS language is because much of programming MS is knowing the workarounds for flaws in the platform.
Java requires more thought about design. The software must follow good practices. You can read deeper into the code to understand what is causing a bug. Most bugs are your fault because you did not understand how the platform was designed. The planned usage expects good design, and learning what was expected raises your awareness of side-effects, improving your ability and the software. This annoys many programmers because they must deal with every possible Exception. It produces better software, but it may not fit your personality. (That said, a recent Java project had a lead developer who managed to create spahetti code using Java/WebSphere/J2EE. It was the worst mess I have seen in any programming language. Picking Java does not guarantee better programmers, but it does improve the odds.)
I spend my life entertaining my brain.
Sun's license isn't just "rather restrictive", it's viral: if you download the source code, you will not be able to work on any open source Java project again. That is worse than "closed".
If you can't learn to program on your own, get loss. You're not a real coder. Real coders don't need hand holding to learn how to code. Just go read the abundant OSS Java code out there and compare it to the C# code out there. There's already enough posers idiots who think they can code in the work place making life hell for those who actually are coders.
You think you can learn C# without learning .NET? Well, it's true, Mono gives you an alternative set of APIs... Until MS sues them and (according to the SCO model) you...
I challenge you to make a legal argument by which Microsoft could sue me over writing a Gnome application in C#.
You can't. All you do is spread FUD.
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.....
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.
Each language has its strengths and weaknesses in the market. As other posters have mentioned, it also depends on which one you want to be on your resume.
I too am a CIS major, and the mentors I've had at my college spent a lot of energy pounding in the idea that "language doesn't matter." Now, that might seem absurd and impractical in the real world, but sometimes even the work place will demand that you pick up a programming project in an odd language that you've never seen before. In this case, it really helps to develop critical programming skills that are language-agnostic. For me, they didn't care what languages I knew at all, but what kind code I could write regardless. Sometimes they would, "That's good a good C program. Now write it in ada."
When you look at the big picture, you can't go wrong either way.
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.
Both Java and C# are perfectly acceptable languages in my book. The tools for developing in them are a different story.
Visual Studio is a beautiful thing for C#. It is massively ahead of any java development tool and will save you loads of time. With the build in documentation and autocomplete, you will be writing impressive applications in no time. The only downside is that you will need that free time to earn enough money to pay for it. So if you afford it, C# and visual studio get my vote. Otherwise, I guess you are stuck with java and some inferior development suite.
Hikery.net - The best hiking site ever. Made by yours truly.
I would encourage you to pursue Java:
1) It is hardware independant.
2) It uses virtual machine technology.
3) You can use any OS to study it.
Finally, it represents the future of security protocols.
None of these things are equivalent when discussing C# except when talking about Windows.
All of the major research in software engineering and OS design will be in Open Source. If it is not, it is probably due to the fact it is esoteric and worthless to 99% of computing problems, will be patented and you will have to sign a license to understand it.
(i.e. worthless)
Java has a very active community that is building equivalent structures that are more effective than the Sun model of Java, and you get too look at the source code. (Open Virtual machines and native compilation libraries if your not interested in a VM to run your code.)
So it is a win win situation.
-Hack
Got Geometrodynamics? Awe, too hard to figure out? Too bad.
If you're on windows, use C# and .Net and all the MS goodness. However, don't expect to create cross platform programs.
In all other cases, I repeat, in ALL other cases, use Java.
I've been using java for three years or so now. Trust me, you'll love the Java API. With it, before you write anything check whether it's already a part of the API. As far as I know, C# doesn't have anything like it. Plus with java, you get much more open source code and examples. Especially useful for things like MySQL / ODBC / JDBC connectivity open source.
And if you need native code for speed, you can usually compile it with visual J#.
It's been a while since I've seen somebody trot out the old ridiculous "I don't need garbage collection because I'm so smart I don't make mistakes" argument. I guess you also use your hand instead of toilet tissue because your shit doesn't stink, huh?
-Don
Take a look and feel free: http://www.PieMenu.com
You say their competition isn't a business, but I really don't see how that matters.
If a "nonbusiness" takes my customers, how isn't that competition?
That's a very naive definition of "competition" you're using. It's not one business people with any savvy really adopt.
Objective-C
Lars T.
To the guy who modded me down from perfect to terrible Karma - Apple haters still suck
One of the problems of rapidly increasing complexity of applications, particularly Java/C#/C++ and other object oriented languages, is that performance is critically destroyed by design, and it's nearly impossible to recover it without re-writing the core of the application procedurally.
... small amount of active useful data per cache line, and high overhead in data structures and useless data faulted in. This quickly applies at the page level as well, as locality remain poor between pages of bloated applications working set.
... in fact, just makes it worse.
... needed are very large fully associated caches, and those are not cheap to build.
... and it's past time to start looking at programming tools that optimize performance by design, not destroy it.
The problem here is that small dynamically allocated objects with heavy pointer threading flush even large caches quickly and yeild very low locality combined with very low efficiency of cache line memory faults
CPU performance scales, even L1/L2 performance scales reasonably well, but raw memory perforance is two orders of magnitude slower than processors and quickly becoming three orders of magnitude slower. It's nearly impossible to constrain page level working sets of OO programs to scale performance.
When more than 20% of your memory hits fault to raw memory, performance just crawls, and a faster machine, with lots more raw memory doesn't help,
Direct mapped caches, and small set associate caches do not work well with today's OO programming
It's time to realize that for the last 5-10 years memory performace hasn't hardly (in comparison) improved at all
What good is a 4GHz processor, that runs at 100mHz memory speeds when it's all said and done because of poor cache line usage for every word or two referenced.
Common. Why am I the guy who has to post the OSX/Cocoa bait?
Objective-C rocks. Best OO language ever.
>> Even the source of Sun's VM is available (though not under the GPL, at least you can read it, see what's going on in the VM, and fix bugs)
You can check out SSCLI [a.k.a Rotor] which is a free [shared source licensing] implementation of the CLR. In other words, you too can see what's going on in the VM and fix bugs. You can also build it on FreeBSD and MacOS X.
I'm a high school student in a small boarding school. They don't offer any courses in computer science at my school.
I want to learn a programming language, but I have no clue where to start.
In my old school, we had toyed around with NetLogo, Scheme, and Python. We only got a small amount of each.
Also, in my space time, I have done a lot of fooling around with BASH scripting. I believe I have gotten pretty good with this.
Anyway, I have no real foundation in any formal languages, and I wanted to get started (even if you all think I should start with something a little more basic than C, C++, C#, or Java).
So, what does everyone recommend as a FIRST (at least, formal) language? Also, can any of you recommend any really good books?
PS: If you don't know what you're talking about, please don't speak. I'd rather not get confused.
Try Google, MSDN, or the Mono site for all sorts of examples. It takes about 60 seconds to find an example. /. posts aren't research papers and if the information is easily obtainable (and widley known by those of us who aren't uninformed) then the poster does not need to site sources. This is not a wild claim that needs all sorts of proof.
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).
;-) ), you learn the principles of computer science, then it's relatively trivial to learn new languages and APIs.
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"
So you should really focus on the core concepts like data structures and algorithms. Use whatever language the course uses.
-tom
Otherwise if you choose c#, the ony decent ide is visual studio which will cost you a fortune.
.Net on Win 98 computers is an added benefit for those of our students with, shall we say, Legacy equipment?
We've used SharpDevelop http://sharpdevelop.com/ at our school for the past couple of years in our C# classes, and have found it to work out quite well. Having a program that can develop
I haven't had a chance to do any real work with Mono http://www.monodevelop.com/Main_Page, but I hear from some students that it works well.
We've found that C# from a visual perspective works as a good transition language in our Pre-AP classes, and gets the students well acclimated for our AP class in Java.
Keep in mind this isn't a small program. Our school has between six and eight classes in Computer Science (both Pre-AP, AP Year 1, and AP Year 2) annually.
Why don't you use true object oriented languages?
I mean at least Java is only partly object oriented. Both languages have the problem that they are awfully slow, but aren't that great. Essentially what you get with C# and Java are the disadvantages of an interpreted language with the disadvantages of a compiled language.
Learn Ruby or Smalltalk, those will be _real_ object oriented languages. There you can also learn what it means to have an objects. Essentially there you don't call objects, but you only send messages to objects which themselves execute their methods.
Hi,
:)
As someone who has done development in both languages. I find that the issue here is not which language to learn but learning of Object-Oriented concepts.
Putting prejudices which both communities have against each other aside. The best which you can do is choose the course that teaches you Object Oriented concepts the best and not go into language specific details.
In the end, its the concepts that you want to grasp. Later on in life, should you choose to develop in either language, you are able to apply those concepts.
i.e. Python, Ruby, Smalltalk, Simula also have Object Oriented concepts.
The thing is, most people don't care about performance. They have more CPU cycles than they know what to do with, and if their routine completes in 5ms instead 1ms on their 4GHz P4, they won't even notice it. What they will notice is whether it took 8 weeks to write and debug the application or 2 weeks. In short: developer time is expensive, CPU cycles are cheap.
What good is a 4GHz processor, that runs at 100mHz memory speeds when it's all said and done because of poor cache line usage for every word or two referenced
Hmm, that leads me to a question: when thread/process A causes a cache miss and is waiting for the data to be retrieved from RAM, can thread/process B run in the meantime? Or does the CPU simply "idle" and do nothing while waiting for the memory system to respond?
I don't care if it's 90,000 hectares. That lake was not my doing.
Your knowledge about programming languages will be incomplete unless you learn the following languages:
> Any language significantly different from a C/C++/Java-like language can't be supported efficiently.
.NET is a terrible platform for dynamic languages" article. He ended up writing IronPython - Python for .net, after finding out that .NET has better support for dynamic languages. And then Microsoft hired him, to work on IronPython and to improve dynamic language support in .NET, so they're dedicated to the concept.
Not so.
Jim Hugunin, creator of Jython, wanted to write a "Why
I stopped reading at "DeVry University."
I know both languages, I'm not a genius but they are so closed. I bought two books on C#, play around, choose a pet project to explore its features and voilà.
Some people seems to reduce the choice by either Visual studio or by Eclipse. Let me tell you that I can simply use notepad, Kwrite to start coding. Runtime environments are free to be downloaded for both. For java, I'm using other tool than Eclipse at work.
What really matters is to learn Object oriented programming. You learn faster when you have fun.
So what does the student like? Designing desktop application? Or does he prefer Server based application running on *nix OS? Does he want to join a sourceforge project? Working on a 3D video game? Developping a smartphone application? does he own a Blackberry or a Windows based smartphone? And so on.
He should choose a project, his own pet project, whatever this project could be and then he should choose the language.
There are as many demands for C# coders and for Java coders AFAIK. if you want to follow the hype, you get lost. Simply learn the language that you need. If you are a good programmer learning a new language is a matter of months (even weeks for some of us) not years.
Olivier
both java and c# are good and since it is just an intro course it really doesn't matter. If you plan on sticking arround the computer industry you will end up learning "a little" of both languages. Both of them are here to stay and both have good and bad features. Despite that you are a linux fan you cannot avoid writing code for windows and MS is pushing c# really hard. Yes there are ways to use .net with c++ as well but the lengths to which you have to go make it a very bad choice. Anyway if I were you I'd start with Java and maybe then go onto c# if you feel the need to. Plus c# is actually a mixture of c++ and java so you will find it to be an easy transition. That is once you learn how to use the .net framework.
If there's one thing that's very original, even moreso on Slashdot, it's Windows/Microsoft bashing.
Visual Studio != C#. When you consume a Web Service, VS writes the necessary code for you.
In my humble opinion, this question primarily boils down to Performance VS. "true" cross-platform. To sum things up, you can easily say:
1.) If you have no problem targetting the windows platform only, then go for C# as it offers better performance, and most importantly you can share your code with C++.net and VB.net programmers without having to rewrite anything in a different language.
That being said
2.) If cross platform is more important, then you should stick to Java. I have a bone to pick with Java myself, as I am a die-hard C++ guy, and because I am not at all impressed with its performance, even on cutting-edge machines (see ORACLE for example). However, if you MUST support more than one platform (I know you mentioned Linux), then you should deal with Java and prefer it over C#.
I hope that helps
Learn Hindi.
Your arguments for picking one over the other, ie, the existence of Mono for C# meaning accessibility to non Windows, and being #1 in Sourceforge over C++ for Java have nothing to do with their intrinsic strengths or weaknesses. I would not frame the choice in those terms.
I hate mediocrity, and I mujst admit that C# and Linux are good peers in that regard. Java is only so slightly better in terms of tooling (as far as I know, there's no Eclipse for C# and everything microsoft visual-whatever-net sucks almost by definition).
In short, you're asking the wrong question. The better one:
Should I pick Ruby, Smalltalk, Python, Lisp, PHP?
Java and C# will suffer the fate of Ford's Model T: populare at one time, falling into oblivion the next day.
What will you be programming in 10 years from now? Odds are against both of them.
> As far as I know, C# doesn't have anything like it.
Never heard of Microsoft's Dotnet framework? Microsoft is hyping Dotnet so much that people's brains turn off automatically when they hear it. Dotnet contains APIs, and many people say they're good. (I never tasted them.)
Both Java and C# are over-hyped and non-free, just toss a coin if you must decide. My advice though, is to run.
Try the current (January 2006) special number of the german IT magazine iX ("Programmieren mit .Net 2.0") - it comes along with 3 CDs & 1 DVD with full (english) versions of Visual Web Developer 2005 Express, Visual C# 2005 Express and Visual Basic 2005 Express...
I lag
Both language deserve attention solely because an army of badly educated programmers use them or because programmers are forced to use them based on curcumstances like vendor lock it.
But when it comes to how these languages are designed and what properties they have, both are very dated and both have a lot of flaws. If you want to learn a well-designed language that will teach you what is possible, when you want to grasp how different and easy programming can be if the language actually supports you with avoiding runtime errors and giving you the ability to use modern programming concepts, then look at OCAML.
C## and Java will both teach you how to hassle with badly designed object-orientedness, a worsly designed type system and other limitations of all kinds. If you want to do real projects, circumstances will probably force you to be knowledgable about exactly that and like so many other programmers, you will not even know what *would* be possible.
Only three things are certain; death, taxes, and apocryphal quotations - Ben Franklin.
All Visual Studio does is provide a GUI to exposing/consuming web services: writing the code "automagically". That doesn't mean the code isn't already there -- you can type out the code in Notepad if you want and compile it with any number of MS command line compilers (all free, I may add; Google for where to get them and the syntax).
.NET (and C#) has much much better support for web services than Java. I could consume a service with a few lines of code on .NET -- it may require dozens in Java. .NET was built around the time when web services were starting to take off; Java was written before, so a lot of this stuff was tacked on afterwards.
And the OP was right. Comparitively,
Y2K proved that COBOL programs aren't going away any time soon. Yet COBOL programmers are a dying breed, literally.
Of course you're giving up any chance of working in a cutting edge environment, for iron clad job security.
You could of course simply use a C# plugin with Eclipse.
http://www.gotmono.com/docs/ide/eclipse.html
Python is probably the worst language to learn OOP in. Here is just another Python guy trying to hype the language. So otehr Python guys can point at it and hype it even more.
Visual Studio has had most of these features for ages. Be it inline documentation or database integartion or the plug-in ability.
Just because it's not done entirely like in eclipse or you didn't bother to find out how doesn't make it so. It just makes you a troll. I can more or less refure any point on that list, but then again, I'm actually a certified developer and have actually worked up some knowledge on the product I'm talking about. Totally unlike you.
The only valid point you have is that is your are a OSS zealot, Exclipse is actually free as in speech and that Eclipse is designed for many languges while Visual Studio .NET is designed for the .NET framework (big surprise there, ey?). People like you make the OSS seem like ignorant and zealous morons. Do the OSS community a favour and shut up.
Not Buzzword 2.0 compliant. Please speak english.
There is a C# plugin for Eclipse that will allow you to develop on it.
.NET
http://www.improve-technologies.com/alpha/esharp/
Not that I'm a big fan of eclipse, I find the UI slow and cluttered compared to VS
The originalposter mentiones being in the second term. Possibly it would be good advice not to qworry about the job market just yet. For one things may change, secondly someone who knows programming well, would be able to quickly adapt to another language.
Have you read the Sun Community Source License? I don't exactly like its terms compared to other licenses but I would hardly call it viral. Sun definitely owns whatever you do to Java, but it doesn't encumber other work you do. Look, I'm an open source hippy too, but no need to get carried away with things.
Well if you choose Java, then you can use free Eclipse IDE which is excellent.
That might be one reason but it isn't the strongest.
Just list which OSes and platforms are supported by each. Portability of your code is only unimportant if you code for one.
But one comment about C#, it is bastardized C++.
Note that C/C++ is the OS/system language of choice because it produces relatively tight fast code when compared to Java/C#. If you learn C#, learn the C/C++ FIRST as so to know the differences.
This reminds me of a story of one hot shot talker that got canned recently. They wrote this very functional application in Java, a client piece and a server piece. The business people were in heat and wanted to roll it out to 3000 users immediately! After about 10-20 users hit the system they called us in as performance and reliability tanked.
What I found is that the server piece was one VM instance per user at about a 250MB footprint, 80 for the VM and the balance for data. On a 2GB RAM server it started to thrash at 10, unstable at 20. So I suggested a rewrite of the server component, as 300 servers would be needed otherwise. Management balked and got someone else, cost them $50K and got the same answer. Months later they are still trying to rewrite it, although they will eventually succeed the costs and delays are hurting them.
The moral here is use the right tool for the right place keeping the end use in mind. Avoid vendor hype and be rational in the choices. Architect your software, don't just hack it and make it look pretty for one if it has to scale.
Which also means if you are a professional software developer you will need to know more than one language. In order, I prefer C/C++, Java, UNIX shells and utilities myself. Languages like C# and J# are too narrow in portability and scalability for what I do.
"And exactly that was the problem of the guy you replied to in an arrogant way. MS is just taking never ever giving back. and of course this is the way companies are working."
They're "giving back". What you meant to say is that they're not "giving back" what you feel they should give back. A very important distinction. That applies to Sun's Java as it does MS (hence the bitching about Java not being GPL free).
"Have you heared of Open Source lately?"
I've also heard of it's "issues", but that's a discussion for another day.
Is it also true that Java does not have a webservices framework as implied by the post?
Lasers Controlled Games!
For what it's worth, and I doubt it's worth much. But I'm a Senior at Penn State and during my Junior year I was finally exposed to OOP and the language they taught us was JAVA. At the time I wasn't too in the know about C#.
Well, I just decided to start learning it my self in preperation for having it as a course next semester. Anyways, long story short, once I learned one language and used it heavilly [JAVA] , C# became really easy to pick up.
So I guess what I'm trying to get at here, is this. You really can't make the wrong choice, when you pickup the one just learn the other later. They are soo close minus some syntax changes and libraries. And for what it's worth, I really think I like C# more, it's the way the compiling is done and it just seems like C# has some nice libraries. Hope that helps
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.
o ry_was_made_today
I'm not entirely sure how you measure enthusiasm, but:
http://www.jroller.com/page/matsh?entry=java_hist
"Today Java overtook C++ as the language with most projects on SourceForge".
and
www.dice.com (jobs)
Java: 13,000
C#: 3900
mono: 9
Does a few people being very enthusiastic outweigh thousands being slighly enthusiastic?
or is this sort of statement just wishful thinking?
holy cow
you're all terribly misinformed and petty and so overly detail oriented that you can't see the trees for the forest, and yet are so inflexible that you cling to the old as fuck unix toolkit for dev stuff. C (maybe perl, but it's not a REAL language) FOR EVERYTHING!
This happens ALL THE TIME>
fuck you slashdot posters
seriously. Fuck You.
The parent post was not talking about Visual Studio. It was talking about the free version of Visual C# Express which is what the entire conversation thus far has been about. The parent poster was asked to give examples of why Visual C# Express does not compare to Eclipse and he gave an extensive list that is completely accurate. He even mentioned several times that his complaints are not valid against Visual Studio as it includes many of those features. This is about free IDE's not IDE's that cost hundreds of dollars.
Maybe you should spend less time playing with Visual Studio and more time learning to read you fucking moron.
P.S. By your logic instead of comparing two freely available IDE's we should compare a free IDE with one that costs hundreds of dollars simply because Microsofts free IDE is severely lacking. Retard.
Either your reading comprehension or deductive reasoning skills are astonishingly poor, which is it?
If only I can mod you one. I think the main sentiment on /. is simply "Microsoft Sucks, .NET Sucks, Java rocks, Ruby and Python all the way". I make a living in C# development since the earliest of betas. I've only recently startd Java development but after spending years on .NET and still learning things about it, just getting started in Java is a daunting task. In the end, I think they are both serious contenders but Microsoft really has the ease-of-use thing down to an art.
In any case, one isn't better than the other, IMO. Just that whichever you learn, you'll be more productive in, naturally. But as far as the Eclipse v. VS.NET, I think the whole anti-microsoft attitude is detrimental to OSS as a whole. Sure, they only know how to play catchup and follow-the-leader, but in doing so, there's so much they miss and refuse to learn from which can make their own offerings even better.
I say, learn which ever one you want and look for work doing it. Be happy. The happiest programmers I know are the most productive and inspirational. I hate working with unhappy programmers because they are so de-motivating.
Thanks,
Leabre
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
C# is an extension of C++, is an extension of C. Most major applications now available, including Java,Linux and Windows, are written in one of the first two iterations. C# is too new a variation to yet register on the scale set by C and C++. Forget about your 'committed to Linux' statement unless you plan to use your studies to either work exclusively with small server shops and, perhaps, supporting the minimal user base of Linux desktop software. Learn C++ and the rest is easy. Once familiar with that, you can go forward or back as circumstances require and apply your skills to the humungous user base of C style applications. Once C++ skills are learned, Java becomes just another C variant with some niceties thrown in.
You're "a certified developer"! WOW! Only a complete retard would brag about something like that. Everyone knows that any dumb monkey, such as you, can get certified. If you go for certification and you fail you're completely incompetent. So I guess you're not completely incompetent, just incredibly close. Let me guess you're also an MCSE?
How about you refute some of the parent posts points instead of just talking about an entirely different product and sounding like a complete fucking idiot? I know this may come as a surprise to someone as astoundingly stupid as you, but Visual Studio is not the same product as Visual C# Express (which is what this thread has been about all along).
You might need to get "certified" in reading comprehension.
Take the one with the better teacher and learn OO programming first, but in the end learn both. That will make your resume look better than just one of the languages alone. Since Java is much more mature, it may be a good idea to learn Java first since MS copied most of the features from Java and called it J#/C# (they really both look like Java). Also since you like Linux, .NET won't do you much good.
In fact Sun had a e-Gast Station concept that used JAVA enabled microcontrollers for the dispensers... just Google for JAVA microcontroller and you will find plenty of references.
From a learning point perspective, one would probably think of Java as being a more "pure" OO language. On the other hand, it misses a couple important features of modern OO languages, namedly "properties", which C# has. My advice? Learn both.
:)
Forget Microsoft for a minute here. C# is a modern language, developed by a bright team (including Anders Hejlsberg of Delphi fame) with really improved and rich syntax. Java is older but proven. So why not take the chance and learn both?
If you're taking computer sciences, be prepared to learn a couple languages outside school. You can learn one at school and others on yourself, which will make you a much better programmer by developing your ideas in terms concepts and generic programming methods instead of a specific language. Also, learning both at the same time allows you to discover different approaches to the same problems, will boost your skills and make you a much better programmer (and eventually, a better software developer).
"I don't mind God, it's his fan club I can't stand!" E8
Wow, the root post could not be more wrong. Not even more wrong than a 400lb woman in a 2 piece bikini. C# (actually, the .NET Framework) was built from the ground up to support Web Services. Get a clue.
No.
GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
Java and C# will rot your brain. Find a school that will give you something cool that will help you find some joy and power in programming like Python or Ruby. At the very least be very sure to learn these languages on your own. if you have to choose between Java and C# though then definitely go with Java. C#, except for Mono, fits you for nothing but being a minion of the Evil Empire. Just say no.
C# is a better system, technically, but Java is more popular. By that I mean the C# language is a bit more advanced. This may change. But I like the way C# handles array arguments and class-versioning. That is, when you're superclass changes on you it's a lot less likely to bite you in the butt.
In any case they'll send your job to India and invite you to work as a software tester. A CS/SE degree by itself isn't worth too much. Get another degree in something else to go with it. Math or business or genetic engineering or physics or something.
When you graduate, the interviewers may ask you if you tested anything. Lie and say no, just my unit tests. This way you avoid jobs as a software tester. Say "I just never got the hang of testing -- wrong psychology". "The other folks on the team did the testing". Or any other bull that comes to mind.
Learn lisp. It was officially declared obsolete years before you were born but that turned out to be a mistake.
Learn APL. It's so weird it will open your mind.
Do not learn PL\1.
Learn smalltalk. It's the mother of a lot.
If you want to be a software engineer/coder/hacker learn assembler. It will teach you about the machine.
I18N == Intergalacticization
Since it isn't at all clear from my post, I should probably point out that I am well aware of J2EE and I was trying to make a point that the post was wrong. I probably didn't do a very good job of that.
Lasers Controlled Games!
I did not see that he mentioned his school offering the language, but never mind, thank you for such useful suggestion.
Fucking zealots.
IANAL but write like a drunk one.
That would give an aproximate idea to the poster about where the wind is blowing.
My 2 centavos: I have worked for several big companies in several industries and Java is still king in companies that matter. It is a technology well understood and standarized. Mature in one word.
If you want to increase your employability and your prospects of a higher salary learn Java technologies to the rot. People that need a good Java programmer recognize one when they see him.
People pretending to know C# in the other hand are a dime a dozen, and the technology is not mature. Mono is nice and all, but many companies are thinking how to deliver internal applications to Web browsers, that makes many server side application development teams naturally reluctant to use C# since they know the lock in is always a disaster witing to happen, with Java that is less of a concern and one reason of several why people feel more comfortable working with it.
IANAL but write like a drunk one.
I would definitly use Java because of it's cross-platform abilities and ability to develop on the best open-source platforms like Eclipse. Micrsoft is slowly learning that they must adjust themselves to open standards or they will lose in the end.
You can always pick up C# with a strong Java background as well.
Thank you captain obvious! There are about a dozen runtimes that can use GNU classpath, vs. about 2 that can use the Mono libs. So the free Java camp wins in either case.
Yes, actually I follow both quite closely. The mono classlibs are decently compatible with DotNet 1.1, and terrible in comparison to 2.0. The Winforms implementation kind of pretends to be close to 1.1, but generally is unusable for real applications.
With Classpath, they have very close to completley compatilibity with 1.4 (many real-world Java apps will work with no recompiles) and their Swing support is in a similar situation to the SWF implementation in Mono.
Unfortunately, the Mono runtime itself is still fairly immature.
As far as I know, neither has strong support commercially at this point.
Throw the bums out!