• Welcome to Overclockers Forums! Join us to reply in threads, receive reduced ads, and to customize your site experience!

Little bit of career adivce...

Overclockers is supported by our readers. When you click a link to make a purchase, we may earn a commission. Learn More.

asusradeon

Member
Joined
Oct 25, 2004
Location
127.0.0.1
Hi, i want to go into software development and currently program in C#. Should i be learning C++ would this be more appropriate for going into the industry ? what are your thoughts ?

thanks
 
IMO, the more the better. Additionally, most languages are more or less the same (same concept of for loops, procedures, etc etc), the main difference being the characters used and the standard libraries available. So once you've got a good handle on one language, it's not hard to pick up others.

I can program "fluently" (for lack of a better word) in C/C++, Pascal/Delphi, assembler (x86, and to a lesser degree PPC, SPARC, and AVR), Fortran, and PHP; typically I use all of these languages in any given week. I'm slightly less fluent in Java/Javascript, C#, and VB/VBA (the latter usually requiring exceptional circumstances or a gun to my head before I'll use it) since I don't use them as often. Mainly the problem comes in trying to remember library function names, etc, though the auto-procedure-dropdown-things help a lot with this. Finally, I can usually hack up something that does sort of what I want it to do in BASH, PERL and MATLAB but usually with much gnashing of teeth and referring to the help files.

Most of these I've picked up in the last 6 years or so - prior to that I almost exclusively used Pascal/Delphi and assembler. Once you have a programmer mindset, most mainstream languages pretty much look the same (except for stuff like Prolog and Haskell, which are based on a completely different principles) and can be picked up to a large degree in a matter of weeks.

As for what's used in "the industry", it depends on what industry you're talking about. Most scientific places use Fortran, most enterprise backend stuff uses Java (for reasons I've never figured out), a lot of web stuff is done with ASP or PHP, general applications use all sorts of things (and C# is starting to move up here), embedded stuff uses C and assembler, etc etc. In general, though, C++ is more widely used than C#. Additionally, knowing C or C++ indicates that you actually understand how a computer works (and what your code is doing) to a much larger degree than if you only knew C#.
 
C# is growing. In my opinion, anyone developing windows software should be using it instead of C++ because it avoids many common causes of bugs and security holes. That said, a lot of companies are stuck using C++ because they have an existing code base. C++ was the reigning king for so long that it will take a very long time for it to go away. You shouldn't worry about the market for it going away. And like emboss said, having C++ on your resume means that you actually have some sense how things like resource management and type safty works.

I think the question should come down to domain. Each language has strength in different domains. This is partially because the tools are set up that way. You can get perl working on a web page a lot easier than C++, but its a lot harder to develop a desktop application in perl. This is also a cultural thing. So, think about what you want to do and then look into the languages people are using to do it.

Web on unix/linux systems: Perl, Python, Ruby
Web on windows systems: ASP, vbScript, JavaScript
Cross platform Web Apps: Java
Hardware interface: Assembly, C, C++
Desktop apps on unix/linux: C, C++, Java
Desktop apps on windows: C++, C#, VB

New companies that don't have to worry about an existing code base will tend to use the newer langauges, while older companies will be stuck with the older languages. If you target Ruby or C# you will likely work on new projects, but if you target Perl or C you may end up working on a long established project.

And you really need to learn multiple languages in your career, or you will suffer from the blub paradox.
 
Last edited:
C++ is a wild mustang. You should only learn it if you can devote enough time to learn a very complex (not complicated) language very well. Almost all people will require 20 hours a week to do so, permanently.

C++ doesn't really add any idioms that C# does not have. It just allows you to do things "tighter", in lack of a better word.

C++ will be interesting if you like to work on any kind of high-performance problem such as software engines, scientific computing or you have a general interest in algorithms and are comfortable in C++.

If those are not given, I would recommend that you learn a language that has drastically different paradigms from C#. Examples would be Python, Ruby, or more powerful languages like Common Lisp. Use them to explore capabilities that you can later reuse in any language but that you will never learn in those languages. You could also do a drastic step to improve your awareness and learn a much more different language like Haskell, SML or Prolog.

In general, I recommend that you expand your actual programming capabilities, instead of collecting buzzwords for your resume. Nobody believes the list of languages on resumes anyway and buzzwords only make you end up in jobs that get outsourced to wherever.
 
emboss said:
Except the whole memory management and pointers thing ... :)

That is not a new programming idiom. It is just a complication. A new programming idiom is something like functional programming, logic programming etc.

My point is that learning complications is not really doing much good for your overall programming capability. You will be forced to learn the complications when you are forced to use that language, but if you ending up not using that language it was a wasted effort. Learning new idioms, which is greatly accelerated by using a language that suits it, permanently enhances your programming ability, no matter what language you use in the end.

Or in other words: don't bother learning a language's complications that have no meaning in other languages. Learn new programming languages to learn lessons that you use everywhere afterwards.
 
uOpt said:
That is not a new programming idiom. It is just a complication. A new programming idiom is something like functional programming, logic programming etc.

True, "explicit memory management" itself is not striclty an idiom. But it does encompass/imply a number of other idioms not found in garbage-collected environments. Such as object (and resource) ownership, reference counting, lifetime wrt scopes, stack objects, etc etc.

uOpt said:
Or in other words: don't bother learning a language's complications that have no meaning in other languages.

OTOH, there are some things like expression templates which, although confined to C++, are such works of art in syntax abuse that even alone they make learning C++ worth the effort :)
 
Back