As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 12 years ago.
I have a pretty good non-OOP background. I've done lots of Visual Basic coding, and a little SQL.
I want to widen my skillset and be more marketable. Most of my experience has been working with scientific companies, and I've been supporting scientists a lot.
I want to take some online classes from my local community college. Should I take Java or C++ programming? My goal is to be more marketable. Some more background information: I've had a little bit of experience with .NET, and I am assuming that since I know C# a bit, it may be worthwhile for me to get into C++?
Should I learn Java or C++?
I beg you please don't close this question. Give me 10 minutes to see everyone's input.
C# is a lot more similar to Java than to C++.
I am a recent Computer Science graduate and from my job search I have to say that there are many more people wanting Java programmers than C++. I also saw a great deal of people looking for C# programmers. C++ is not being used as much outside of the academic and scientific field right now.
Java and C# are also similar languages so once you understand one you should be able to go to the other.
If you do want to do C++ that is fine. If you can learn C++ and then master C then you will be in a good position for those few places that need incredibly skilled C programmers. C++ and C are able to reach to a lower level (closer to the hardware) more easily than Java and C# can. That is why they are used mostly in the areas that are dealing with specific and custom hardware.
I want to widen my skillset and be more marketable
That's a reasonable goal, but the information you've provided doesn't help us guide you.
What do you want to do with your career?
Where do you want to market your skills?
What kinds of programming interests you?
What companies interest you?
Do you just want to learn something similar, or try a different paradigm altogether?
For example, Java would be a poor choice if you want to hack on the Linux kernel. C would be better. If you're interested in programming languages, maybe you should look into learning a functional language. OTOH, C++ would be a poor choice if you don't want to learn about memory management, and Java might be easier to get a head start writing webservers (not that both aren't well equipped for that).
You can learn any language, just for the hell of it. But it's more important to use a language that helps you accomplish your real goals. The language is only a tool.
I would also say if you want to support scientific computing invest some time into learning F#. There's even a book with all the right words in the title =).
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 12 years ago.
In the corporate world, Is it better to be knowledgeable(by knowledgeable I mean not a expert or novice but with some coding experience) about multiple languages.
or
is it better to be an expert in one language(say c++ or java) but having just basic knowledge on others.
I ask this question because what I feel is languages can be differentiated based on the features they provide like Garbage collection etc..but this can be implemented in other languages...and why do people prefer one language over the other?
What is the general point of view on this board?
I'd say learn a couple of languages really well, but keep expanding your knowledge by studying other languages. Not for the languages themselves necessarily, but for the concepts and paradigms they implement and encourage. This'll make you a better programmer overall and better suited for finding the right tool for a larger set of problems.
I think it is more important to be able to learn new technologies, languages, paradigms, etc. etc. on the fly than to be an all out expert in just one of them. You can dedicate all your time, effort, blood, sweat, and tears to learning Java, but what are you going to do in the eventuality that it is no longer in wide spread use. This can happen to any language to be perfectly honest. Your base knowledge in the general principles of programming and programming practices and your WILLINGNESS to learn a new language are what will help you to advance in a corporate environment. If your boss comes to you and says "I need this done in C" and you reply either "I don't know C nor do I like it. How about Java or Python?" or "Sure, but C is not really suited for that task and will take additional effort. How about Java or Python?", that will be remembered next time layoffs or promotions come along.
be an expert in one language like C++ then if you want to be very good in PHP it would take you ~3-5 weeks instead of 3-5 years (C++), next - if you want to be very good in C# that will take you another 3-5 weeks, and after that you can learn everything else, like .NET/ASP/J#/VB/ very fast. i find it that only ASM is harder to learn, might take more time - 2-3 months, if you have the right books.
everything depends on passion / how much hours a day you read/write/test code...
but if you want to be an expert in any of these languages, experience is what you need, learning is not enough.
IMO - You must be Master of one, in order to have the capacity to learn multiple languages faster. so "Jack of all trades" but also Master of ONE.
Learn what you need
why learn ten languages if your only every going to use two? though you should still know what else is available, and what its good points are (and its bad points too), so if in the future you run into a problem you can't solve with what you know, you know where to look for something that can help.
If your looking for a job, it might help to know more languages, as it 'inflates' your CV, but being a jack of all trades probably won't get you hired.
Read this: http://www.paulgraham.com/avg.html It is not exactly what you wanted, but can give you another point of view.
One famous man said: "Person becomes real software development specialist only when he or she becomes an expert in more than one programming language".
So if you want to be a good programmer in Java or C learn Java or C deeply and completely.
If you want to become high qualified software developer not dependent on language and ready for changes in programming world - learn both of them and better not only them! :)
First expert in one one language. Then know more languages. (Pick a language per paradigm)
I believe it depends on your career aspirations. If you're looking long-term at being a consultant or maybe evening being an indepedent analyst, becoming and expert in your technology area is critical. You'll need to focus a lot of time mastering technology in your given area, and you don't have the spare time to become e generalist unless you choose not to sleep. I don't recommend that for the long-run.
Then again I cannot recall how many times I've seen an organization dump a perfectly good code base just to upgrade to the "next-thing" due to the career aspirations of project managers. So maybe it is out of our control?
In the end, I honestly feel that domain-critical knowledge is more important than technology skills. But that is maybe because I'm not only the front lines these days. I'm all for a general lemma that says you should know more than one programming language, but I seriously question those who claim to proficient in ten languages and ten frameworks and ten different operating systems.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I've been using C/C++ and Python, but I now I see that a lot of new programming books use Java or C# as examples.
I don't think I'll use Java or C# for the time being, but I guess I have to study one of the languages (or both of them) in order to read/understand the books.
How similar Java and C#? If I learn Java, is learning C# almost free? Or vice versa?
If I have to choose only one of the two languages, which would be better? Which has wider coverage in terms of programming language?
You are asking several questions at once. Let me address them separately:
How similar Java and C#?
Both C# and Java drew from C/C++ (and Objective C, and others) to define their syntax. And both of them are compiled to an intermediate language.
This common origin makes the languages look similar in many levels, to the point that code in either language can be confused with the other by beginners; and also makes the runtime environment somewhat comparable. However, there are substantial differences in both design principles and how each language evolved that make working with each quite different; here are the most prominent ones:
On the syntax level, Java was influenced by Smalltalk, while C# tried to stay closer to C/C++ (eg: compare Java's extends and implements with C#'s : notation) and took a vague inspiration from VB on those concepts that weren't mappable to C/C++ (example: property syntax).
On the features level, C# 1 was definitely close to Java. Among the few differences they had, I'd highlight C#'s support for "unsafe" code (including pointers) and for delegates; and Java's controversial throws. This makes sense, since one of the goals of C# was to become an alternative to Java.
Many language features differ heavily on implementation details. For example, enums are very C'ish on C#, but are full objects in Java; or generics are implemented on the IL-level in C#, but in Java are dealt with via type erasure (neither is really close to C++'s templates besides syntax).
On the API level, they are worlds apart. C# relies on the .Net Framework, which was built on Microsoft's experience with the Visual Studio family of products (and thus is significantly Windows-oriented), while Java's Class Library was built, IIRC, from scratch, and heavily evolved over time (on these Swing days, does anyone remember AWT? I do).
Finally, it's worth mentioning that each of the languages has its own idioms, and its own community of supporters behind it.
If I learn Java, is learning C# almost
free? Or vice versa?
Neither. The key similarity is the basic syntax (semicolons, curly braces, array indexing, case-sensitiveness, etc), and you already have that from C/C++.
If I have to choose only one of the two languages, which would be better?
Short answer: flip a coin.
Long answer: it depends on your coding style and on what aspects of the language you value most. My best advise is to start by trying to learn both, until you feel that one of the languages pulls you more strongly than the other.
Alternatively, you can take a look at http://en.wikipedia.org/wiki/Comparison_of_Java_and_C_Sharp.
Which has wider coverage in terms of programming language?
If you mean language built-in features, I'd say C# wins for a narrow margin. Most of the features that C# has and Java lacks are syntax sugar (although they together make a significant difference on the learning curve and on the way the language is used). I value really high C#'s operator overload and extension methods. Also, LINQ is quite an interesting concept, but it is essentially a declarative syntax for loops.
Hope this helps.
The libraries are very different, and the approach to documentation is very different. I find the C# approach to easier.
To illustrate what I mean, in either language some object that you want to deal with may be implemented by inheriting from "object" to "generic object" to "specific object." In Java, if you want to find out about a property of the "generic object" you have to go to the doc for that, whereas in C# documentation, all the properties are listed for the "specific object."
At least that's the way it seemed to me back a few years ago when I did some Java.
If you want a brutally subjective answer.
I have just finished a degree in Computer Science in England, I chose a university that taught C# as opposed to Java.........reason being, so I could easily walk straight into a highly paid job as a software developer with a company that simply only wants people who know the "new" technologies.
These are companies such as Investment Banks, tech startups, IT Consulting firms.
So if you want to pick one to learn......
Think about the end goal.....if it's cash and modern knowledge...follow C#.
....and if it's anything else, follow C#
P.S. Java is terrible - I had to say it.
Not a 1:1 mapping since C# 1.0. C# has added lots of stuff (LINQ, closures,etc.) that have no analog in Java.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 13 years ago.
C# is owned by Microsoft and Java is owned by Sun/Oracle. What dangers does that really expose to the users of these languages? Has anyone felt their code was "owned"? Do projects like Mono help keep the "owners" honest?
Please do not make this a holy war of languages. I just want to know if it's rational to avoid such languages or if that's just paranoia. An interview with the inventor of C++ got me thinking, but I also want to balance his thoughts with the thoughts of the community as a whole.
As compared to what? Since you put it in these terms, the original C and C++ languages are "owned" by Bell Labs.
Java is not "Owned", it is open source. If you find a bug in it that you absolutely cannot deal with, you CAN fix it. (There are both open source and closed source implementations, however)
I don't know if you can get the source code to C#, but since Mono copied it there IS an open source for that as well.
I don't know if there is a second source for the .net libraries.
As for the actual "Dangers" (Which was your real question, after all), it would be that the company decides not to release updates any longer--if they do, will the language wither and die or will it take off on it's own? Java is in the process of transition from one of these states to another. Sorry, don't know about C#.
There is also the (Perceived) danger I mentioned earlier about--can you fix it if you hundred-million dollar company absolutely needs it fixed in order to continue.
This was a more significant problem twenty years ago, these days the fact is that if it's a good stable language, this isn't something you ever need to worry about.
No such danger for C# language. It is an ISO standard. Formally it is owned by a committee. But Java is a trademark
Getting up in the morning is risky, but that doesn't keep the world under the covers.
I feel like this is one of those acceptable risks. In Java's case, companies have used it for the last 15 years or so to their benefit.
What's the alternative? Developing and maintaining your own language so you own it? That's what SAP did. It seems to have worked out for them, but it'd be interesting to calculate the cost they've incurred.
Bjarne Stroustrup is a brilliant man, but let's not forget that he has biases. He isn't happy that Java eclipsed C++ as the primary object-oriented language when it came out. He's attributed it to Sun's marketing, not conceding that it might have improved on C++.
It's a good practice to try and spot biases on the part of any speaker to make sure you're not swallowing someone's view whole. This is one of those cases.
If there are not two independent implementations, language is "Owned" and you are at the mercy of the vendor should he raise prices or can the product.
I don't like that.
EDIT: As often as not, you can count legally forkable codebases as two (the second is yourself).
Aren't all languages owned by a person/company/standards body. The only way I can think of where it isn't really owned by anybody is if the person who made it is anonymous and also public domain
hmm, well Xbox only supports C# for indie games, and no other platform supports it.
obviously the danger is that if you want to do multi platform code, you want the language supported by the most platforms, the more "owned" language is probably going to be supported by less platforms.
the only issue I have is support for the language, and how hard it is to convert from one to the other, for instance I would say c++ to c# is easier than the other way because of memory management.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 14 years ago.
What do you see as benefits for one over the other? As far as I know, it's just preference. I have way more experience with C# than I do with Visual Basic and was wondering if I should dabble in Visual Basic for certain types of projects?
VB4 was my first language, with VB6 being the last time I touched it. I have moved to c# and wouldnt consider going back. VB just feels too fat and fluffy for me (preference).
All the .NET languages compile to IL though...
Note: c# is "closer" to java...
I personally prefer C#, I love the syntax and I feel really comfortable with the language.
Some say that C# programmers are paid better than VB programmers, but I think you should try both languages and see on which you fell better.
Top 10 reasons C# is better than VB.NET
Top 10 reasons VB.NET is better than C#
If you plan on doing any SSIS you will need to know VB. This one of few areas that I am aware of in which it truly matters which language you choose as SSIS only supports VB for any "integrated" code you write for it.
You are correct in saying that it is a preference as all .NET languages are compiled to IL. So choose the one you are most comfortable with and don't worry too much about it.
Coming from a curly-braces background I find c# to be a lot easier to read and write. I find VB.Net to be too verbose and some of the syntax (I'm looking at you, arrays) makes my eyes water.
I also get frustrated by the background compilation in VB.Net, especially on large projects where it can make the IDE unresponsive.
The only advantage VB.Net has over C# in my opinion is optional parameters. These make certain interop tasks a lot easier but I think c# is due to get them in 4.0.
VB.NET
In my opinion, C# was created only for marketing reasons to bring Java developers to .NET.
There are many more developer jobs in the job marketplace for C# over VB. Visual Basic got a bad wrap from the get go because it was an interpreted language. Back in the early days of computers, interpreted was bad and slow.
In the beginning, Microsoft built VB mostly for consultants to be able to quickly and effectively write internal software.
I cringe when I see C#, but these days, I write in JavaScript more than any other language and I love it.
VB's language keywords makes more sense to me over C#'s such as Imports vs Using. With declarations, I do not like having object type coming before the variable's name. And it seems that C# has many hidden rules with parenthesis and what not that a developer must know just to even read C#. Whereas VB is straight to the point and flows very nicely without crazy syntaxes.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I'm starting my 2nd class in C# programming through Kaplan online school. I have some limited interaction with the professor and the class online, but nothing like in an actual school. I'm about to go through "Modern Software Development Using C#.NET" by Richard Wiener. It seems the book as a extremely heavy focus on UML (which I don't even really know what that is right now!)
You experinced Csharpers.... any tips to keep in mind as I go through this to keep in perspective how the modern software engineer works outside the classroom?
Any perspectives to share as I start understanding UML and intermediate C# programming?
Some companies will use UML everywhere. Some use it nowhere. I'm not a big fan myself - I prefer ad-hoc diagrams and plenty of other communication (notes on the diagram, actual talking etc).
The good thing about an ad-hoc approach is that you can leave it as vague as you like or make it really detailed. The bad thing about it is you can't generate any code from it - but I've never really liked generating code from UML. (Others swear by it, mind.)
You certainly don't need to know UML to learn C#.
UML would come very close to the end of the list of things that gave me insight into the complex world of programming. I find it very distracting when trying to design something, and too time consuming for real system descriptions. I have always thought it is important and tried to start my project with UML diagram, but it wasn't ever worth it.
The bigger the projects you are working in the more you need a language to speak with, known by all members of the project team - a common language like UML! But you need not to start learning C# with UML.