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
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
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.
...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 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?
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.
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.
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).
No. No you should not.
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.
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.
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.
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.
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!
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 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!
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
The exact opposite, actually. .NET has an excellent framework for web services.
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.
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
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.
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!
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
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
languages are so passe, how are your powerpoint skills?
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.
Choose whatever language you like as long as you use emacs.
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.
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.
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#.
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
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.
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.
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.
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.
"Computer Science is a subset of Math."
You must be new here. Math is a subset of Computer Science.
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
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.
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!
If all the complaints here about outsourcing are correct, rather than Java or C# you should learn Hindi.
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(!)
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.
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 ...
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...
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.
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.
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
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