PDA

View Full Version : Is C++ essential for employment opportunities



West201
November 12th, 2011, 07:19 PM
I've been learning about software development on my own, and know each language has it's own flavor. But is C++ good for employment ? C# ? C ? I'm leaning more towards C++, but what are your thoughts ? Is C++ a dead language ?

Any help would be greatly appreciated ?

West201
November 12th, 2011, 07:30 PM
I've been learning about software development on my own, and know each language has it's own flavor. But is C++ good for employment ? C# ? C ? I'm leaning more towards C++, but what are your thoughts ? Is C++ a dead language ?

Any help would be greatly appreciated ?

jonkiribati
November 12th, 2011, 07:38 PM
I've learned C++ when I was interested in Qt that helped me alot to learn C++.

oldos2er
November 12th, 2011, 08:00 PM
Not an Ubuntu support question; moved to Community Cafe.

t1497f35
November 12th, 2011, 08:04 PM
If you're a good/professional programmer you're unlikely to have issues being hired since all the languages you mentioned are relevant. The employers are looking for people who're really good with a given language, rather than just mediocre programmers who happen to know the given language.

scottbomb
November 12th, 2011, 08:05 PM
I've googled this myself and the answers are all over the board. It seems to me that it depends on what you want to do in the long run. I don't think you can go wrong with C++ as it seems to dominate PC applications in both Windows and Linux. On the other hand, if you want to write mobile apps, you'll need Java for Android or Objective C for iOS. C# and Java have a lot in common, and both are based on C++ which, of course, is based on old-school C (used to write the Linux kernel). Just about all computers can run C++ native compiles (which is platform-specific) and they all have some sort of Java VM installed (platform-independent). C# and Virtual Basic will need CLI run-times which are only common on Windows machine if I'm not mistaken.

I'm currently learning Java, C++, and C# as well although at the moment, my main focus is Java.

sffvba[e0rt
November 12th, 2011, 08:10 PM
Threads merged.

One thread for the same topic/issue please.


404

JDShu
November 12th, 2011, 08:18 PM
No programming language is essential for employment opportunities as long as you know at least one. Of course it's always better to know a bunch of languages, as that will help you be a better developer in general.

In terms of the industry, it seems that C++ is used mostly in legacy systems and certain performance critical software like games. Personally, I wouldn't invest too much into C++ as I find it pretty ugly, but it really depends on what you want to do.The current industry standard is Java, and with the popularity of Android, it'll probably last a while - that is if you really wanted a job immediately, learn Java. On the other hand, lately there appears to be a shift to Python and Ruby as web applications become more popular. So if you're learning for the future, you can't go wrong with those either.

3Miro
November 12th, 2011, 09:45 PM
This can turn into a long theological discussion. Some people like Python, others like Java, however, both Python and Java are written in C/C++. If you are serious about making a career in Computer Science, you should know C/C++. As for it being essential, you can get a job without it, but look at it this way: C/C++ is much harder than other languages, however, if you know C/C++ you can learn any other language pretty quickly (with the possible exception of the Lisp family).

West201
November 12th, 2011, 09:55 PM
In terms of the industry, it seems that C++ is used mostly in legacy systems and certain performance critical software like games. Personally, I wouldn't invest too much into C++ as I find it pretty ugly, but it really depends on what you want to do.The current industry standard is Java, and with the popularity of Android, it'll probably last a while - that is if you really wanted a job immediately, learn Java.

I have a degree, but it's not related to computer science. My goal is be work in the software development industry. I asked this question on yahoo answers, and was mainly told that C++ and Java dying. Rather I should learn a .NET language lol.

Thewhistlingwind
November 12th, 2011, 10:54 PM
JAVA dying??!! LOL, that's a good one.

Honestly, if you really understand the fundamentals your problem will be learning frameworks not languages, language syntax is easy to learn if you already know the concepts it represents.

It's important not to fall into the "I can write FORTRAN in any language" trap at the same time.

3Miro
November 12th, 2011, 10:58 PM
I have a degree, but it's not related to computer science. My goal is be work in the software development industry. I asked this question on yahoo answers, and was mainly told that C++ and Java dying. Rather I should learn a .NET language lol.

Anyone who tells you C++ is dying is flat out wrong. Several years ago, C++ had no competition and it was THE language. Not things are more diverse, but C++ isn't going anywhere. Put it like this, Windows, MacOSX and Linux are written in C and currently no other language can do that.

Java isn't going anywhere either. With Droid being mostly based on Java as well as many apps, Java is here to stay at lest in foreseeable future.

Ironically .Net is the only thing that can go away. It is entirely under the control of MS and at any point of time they can decide to either ditch it or they may lose to a competitor. C++ and Java are not dependent on any single organization.

There are jobs for any language out there, whatever you decide to learn may depend on the situation that you are interested in. Could you tell us what you degree is in and what type of software would you like to develop.

mustang
November 13th, 2011, 01:41 AM
It depends on the type of employment opportunity you're aiming for. In general, for a run of the mill software development job, no it is not essential. These days, knowing Java or C# is enough.

forrestcupp
November 13th, 2011, 04:12 AM
C++ is far from dead, but I'd say the majority of dev jobs won't use it in the business world, unless the company's purpose is to develop software. Other types of companies are wanting devs for things like Java, C#, Visual Basic, SQL, PHP, and ASP. Either that, or specialized software.

C++ is definitely not useless, though. It's my main language that I use for my personal stuff.

yanom
November 13th, 2011, 05:05 AM
I've picked up a smattering of almost every major programming language (except Perl), and they're all starting to blur together. Things you learn in one language apply to another.

Ji Ruo
November 13th, 2011, 01:54 PM
Can I be pedantic and point out, C and C++ are not the same language. C++ contains most of the C language, however that functionality is included along with many other things. And most C++ programmers would use those instead.

F.G.
November 13th, 2011, 01:55 PM
ok, so this thread might be of use to you:

http://ubuntuforums.org/showthread.php?t=1853823

i would say c++ is not dead dying or even in decline, in fact another version of c++ is to be released later this month. from what i can tell c++ is used in more hard core programming environments, as it can be made more efficient than languages like ruby or python.

my suggestion would be not to really worry about what the best language is, and just get coding. i really like c++ and would recommend it both professionally and for getting a good understanding of the higher and lower level aspects of programming. by contrast C is pretty easy to learn, but most of the jobs that use it require it's use to be intensely complex, and while it's a good learning ground, if you're not planning on writing os's or drivers, or embedded systems then it probably won't help you professionally.

otherwise if you wanted to go for a higher level language Python and Ruby are both good. python c and c++ can all be used natively on ubuntu. a particular benefit of using Ruby (which you will have to install) is that it comes as a whole package with almost all the functions you'll ever need inbuilt, so you don't have to worry about dependencies.

i don't think learning c++ would be a waste of time at all (why don't you try looking up some IT jobs and see what they're looking for).

interestingly i just did a cs degree and one of my teachers said that java was dying (too many developers and not enough community development making it golden hammer-esque, but not actually ideal for many of it's uses).

ps i wonder why this thread was moved from 'programming talk'?

t1497f35
November 13th, 2011, 05:01 PM
I have a degree, but it's not related to computer science. My goal is be work in the software development industry. I asked this question on yahoo answers, and was mainly told that C++ and Java dying. Rather I should learn a .NET language lol.
The notion of C++ dying is absurd since recently C++11 has been approved which brings a slew of long awaited features (all major compilers are working to implement it). Most tripple A games are written in C++ and a lot of stuff like KDE/Qt are also in C++.

Java & Net are mostly for stuff that doesn't need quick startup and doesn't mind the fact that each time you start the app there's quite a bunch of extra CPU cycles lost due to JIT compilation, not to mention bringing up the VM, that's why both Java & Net are mostly used on the server side. Android isn't quite using Java unless you're a lawyer and know what you're talking about since Java has a lot of meanings (technology, brand, VM, language, you name it).

I'm a Java dev for like 10 years and I myself can't stand Java apps on the desktop cause they're slower to start up, eat a lot more memory, pure Java apps can't integrate properly with the desktop OS, etc.

Thewhistlingwind
November 13th, 2011, 05:59 PM
a particular benefit of using Ruby (which you will have to install) is that it comes as a whole package with almost all the functions you'll ever need inbuilt, so you don't have to worry about dependencies.



Ruby comes by default on Ubuntu distros. (At least it does on mine)

MG&TL
November 13th, 2011, 06:11 PM
I'm currently developing an app in python, and occasionally find that I've inadvertently put semi-colons after every statement. So C-based and Python-based can't be all that different. I do find Java takes a really long time to learn, though, as it seems to be so different to other languages.

F.G.
November 13th, 2011, 06:19 PM
Ruby comes by default on Ubuntu distros. (At least it does on mine)
interesting, i'm pretty sure i had to install it on mine.

regarding c and python etc. yeah, i think there's a fair bit of c you can use if you like, like the 'sizeof' operator.

1clue
November 13th, 2011, 06:32 PM
Which language to learn is a tactical question, not a strategic one.

Figure out what sort of programming you want to do, and see what they use there. Alternatively, take a look at a bunch of different languages and see what you're most capable of.

There are a large number of ways you can categorize a language. Each characteristic makes the language more or less suitable for some particular task.

C and C++ compile code to run straight on the hardware. They also give you a whole lot of control which makes them good for writing kernels, drivers and other operating system and application level software.

Perl and similar are interpreted languages and work well in scripting.

Java is a strongly typed language similar to C++ (which isn't quite so strongly typed) but it also runs on a virtual machine. That VM has advantages and disadvantages. Advantages in that whatever is running on the VM has a harder time affecting the OS itself, it can run essentially unchanged on any platform. Disadvantages in that in any VM there is an overhead which may or may not harm performance of any particular app, there's a memory requirement for the VM and you're stuck with the limitations of that VM whatever your hardware.

Groovy is a loosely typed language which runs in the Java virtual machine. It has most of the advantages of Java but is better for rapid development and for code maintainability, because it gets rid of a huge amount of boiler-plate.

Grails runs with Groovy, it's a web framework that makes it insanely simple to make a web application which runs on any platform which supports Java and Tomcat. This is what I do.

Last I checked, there were over 200 actively developed languages which run on the Java virtual machine. That was a couple years back so it's probably bigger now.

The guys who say Java and C++ are dying are probably Microsoft oriented. The guys you're talking to here are probably mostly UNIX oriented. Each will have a different view.

Believe it or not, there is still a market for FORTRAN and COBOL programmers.

I would suggest you learn some interpreted languages, some compiled languages, some object-oriented languages, some low-level languages, some high-level languages and pretty much anything you can gobble up. Some languages specialize in string manipulation and suck at everything else, some specialize in math and suck at everything else. Some try to be all for everyone, and tend to be decent at most things and excellent at none.

Learn how interpreters work. Learn how compilers work. Learn how virtual machines work. Learn why some tasks want strong typing and some want loose typing. Practice setting up a server using whatever seems popular, and compare them so you have some idea what one might be better once you get that job.

3Miro
November 13th, 2011, 07:48 PM
The guys who say Java and C++ are dying are probably Microsoft oriented. The guys you're talking to here are probably mostly UNIX oriented. Each will have a different view.


I don't think this is Unix vs Windows question, I think that even now most Windows apps are written in C++ (especially games). Windows itself is written in C. People that claim C++ and Java are dying are a subset of the windows users, i.e. the DotNet people.

F.G.
November 13th, 2011, 08:40 PM
@1clue what's the difference between 'tactical' and 'strategic'?

yeah, so i don't think that there is anything really windows/unix differentiated in this stuff (apart from .net v java).

phrostbyte
November 13th, 2011, 09:09 PM
I'm going getting paid writing TCL code full time, so w/h. Really, who uses TCL anymore? :)

There is a general shortage of software developers in the world so if you learn anything well the chances of you getting a job are high. So just pick what you like the most.

West201
November 13th, 2011, 09:43 PM
Thanks for all the answers :) .

I'll start looking for beginners tutorials to learn C / C++

forrestcupp
November 13th, 2011, 10:31 PM
I do find Java takes a really long time to learn, though, as it seems to be so different to other languages.That's kind of funny. I'm primarily a C++ programmer. When I started learning Java, my thoughts were that the syntax is almost exactly like C++. With a C++ base, I easily learned everything about Java, excluding Swing, in one or two days.


Which language to learn is a tactical question, not a strategic one.

Figure out what sort of programming you want to do, and see what they use there. Alternatively, take a look at a bunch of different languages and see what you're most capable of.

Good point. Before you invest that much of your life learning something, you need to figure out what your goal is. Do you want to program games, business or productivity apps, networking and databases, internet based sites or apps? You have to figure out what you want to do, then decide what's the best tool to get you there. Also, you need to keep in mind that there may not be a huge market for what you want to do. So you need to decide whether you want to struggle trying to get into what you like, or do you want to just see what the market needs, which may not be exactly what your dream is, and have a better shot.

Whatever you do, you need to figure out your goal before dedicating to one certain language. But keep in mind that good programmers don't just know one language. A professional developer gets the hang of how programming works and how to come up with algorithms, and it becomes easier to learn multiple languages. That will make your chances of actually earning a living much better.

Also, know that most companies won't hire you off the street without a degree or certification. You can do what my wife did and work your way up from an entry level position to being a dev. But you're not going to hire right on into that kind of position without a degree or certification.

1clue
November 14th, 2011, 01:10 AM
Tactics vs strategy:

You have a goal. You want to be a software developer. You want a job doing that.

Strategy: Find out where the market is (what sort of programming is needed in your area, whatever) and decide if you can learn that on your own or not. Go to school, or try to learn things on your own.

Tactics: You figured out that there's a lot of C programming in your area, so you're going to buy a book, bone up on it and then see if you can test out of the course next time it comes up in your university.

IMO there are a lot of companies that will hire a programmer without a degree. They tend to be smaller companies who have a need and are willing to take a risk on a promising developer.

MG&TL
November 14th, 2011, 01:08 PM
That's kind of funny. I'm primarily a C++ programmer. When I started learning Java, my thoughts were that the syntax is almost exactly like C++. With a C++ base, I easily learned everything about Java, excluding Swing, in one or two days.




I agree, the syntax is the same, but when I look at the source of a C++ app, I think 'aha!', whereas java is more like 'oh dear, I don't really know what I'm doing' - and I think I got off on the wrong foot a bit, as I don't really like the syntax of classes in C++ or Java, and the whole point of Java is classes, whereas you can get away for a while without them in C++. Although of course I use them, otherwise I'd be using C.

forrestcupp
November 14th, 2011, 07:04 PM
I agree, the syntax is the same, but when I look at the source of a C++ app, I think 'aha!', whereas java is more like 'oh dear, I don't really know what I'm doing' - and I think I got off on the wrong foot a bit, as I don't really like the syntax of classes in C++ or Java, and the whole point of Java is classes, whereas you can get away for a while without them in C++. Although of course I use them, otherwise I'd be using C.

Yeah, it sounds like you got off on the wrong foot. You can do C++ without classes, but it's really not the proper way. Sometimes it happens, though. I'm programming a small educational game using SFML. SFML in itself is object-oriented, but my implementation is ending up not using classes at all, and it's driving me crazy. I could figure out ways to use classes in this simple game, but it's really not needed. I feel dirty programming in C++ without using classes. :)

The difference with me is that a long time ago, I came to C++ from C#, which is completely object oriented. I don't know if it's the same now as it was in the beginning, but it wasn't even possible to program in C# without creating a class.

MG&TL
November 14th, 2011, 07:58 PM
I did a C# 'hello world' app, and it was a hello world class. :(

I agree, sometimes I feel as if I should be using C. Maybe I should be a kernel develeoper. :D

forrestcupp
November 16th, 2011, 02:39 PM
I did a C# 'hello world' app, and it was a hello world class. :(

I agree, sometimes I feel as if I should be using C. Maybe I should be a kernel develeoper. :D

It probably wouldn't hurt you to get comfortable with object oriented programming because most modern languages use it. Even Visual Basic and Python are OOP.

For me, it was a pain in the backside to understand at first. I programmed a little with classes, but I didn't really understand what was going on. Then all of the sudden, it just clicked and I wondered why I didn't understand it. I think it's because I haven't found anyone out there who really does a good job teaching it in a simple and clear way. When you're used to procedural programming, sometimes you need a simple explanation of OOP, even though you're an experienced programmer.

AsoSako
November 17th, 2011, 08:10 PM
You should just learn the basic concepts of Computer Science and what actually happens within the computer when you write certain code. Knowing the basic concepts is more valuable in any job then knowing a specific language or two. This is due to the fact that in essence most languages are very similar and you should be able to adapt fast an learn them within a few of days if so needed. Technology and language uses change rapidly but the basic concepts remain the same. In the end off the day you are better off knowing how things work and being able to adapt to them fast, then mindlessly coding in one language you know and love.

Bachstelze
November 18th, 2011, 02:22 AM
I hate the whole "when you know the concepts, you can learn a language in a couple days". That is just not true, unless your definition of "learn" is having a vague idea of how the language works and write programs that woudl make any programmer worth his salt throw up his breakfast.

This is the #1 reason there is so much bad software in the world. Learning a language takes time, and mastering it takes even more. Until you have really learned a language, you can only write bad code with it. You don't write a novel in a language you have been learning for only one year.

3Miro
November 18th, 2011, 03:54 AM
I hate the whole "when you know the concepts, you can learn a language in a couple days". That is just not true, unless your definition of "learn" is having a vague idea of how the language works and write programs that woudl make any programmer worth his salt throw up his breakfast.

This is the #1 reason there is so much bad software in the world. Learning a language takes time, and mastering it takes even more. Until you have really learned a language, you can only write bad code with it. You don't write a novel in a language you have been learning for only one year.

Except computer languages aren't the same as human languages. You have heard of pseudo-code, right? You can write down the logic of a program that is language independent. To build the logic, you need to know programming, then you need to translate the logic into a specific language. However, the translation is nothing like a human language, the translation follows very strict mathematical rules. For most languages, it would be trivial to write a program to translate code from one language into the other, all you need is a good parser for the first language.

There are tricks and quirks that may take some time to master, but you can learn how to write good code in a new language fairly quickly.

PS: there is a ton of bad code out there, but the vast majority of all code (good or bad) is written 4 - 5 major languages. That is only 4 - 5 languages to learn, it is now like someone is learning a completely new language just to write a program in it.

Bachstelze
November 18th, 2011, 04:04 AM
Except computer languages aren't the same as human languages. You have heard of pseudo-code, right? You can write down the logic of a program that is language independent. To build the logic, you need to know programming, then you need to translate the logic into a specific language. However, the translation is nothing like a human language, the translation follows very strict mathematical rules. For most languages, it would be trivial to write a program to translate code from one language into the other, all you need is a good parser for the first language.

There are tricks and quirks that may take some time to master, but you can learn how to write good code in a new language fairly quickly.

PS: there is a ton of bad code out there, but the vast majority of all code (good or bad) is written 4 - 5 major languages. That is only 4 - 5 languages to learn, it is now like someone is learning a completely new language just to write a program in it.

You are wrong. Very wrong. Writing pseudo-code will not help you do your memory management right when you implement it in C, for example. Hello, buffer overflows!

AsoSako
November 18th, 2011, 04:09 AM
Except computer languages aren't the same as human languages. You have heard of pseudo-code, right? You can write down the logic of a program that is language independent. To build the logic, you need to know programming, then you need to translate the logic into a specific language. However, the translation is nothing like a human language, the translation follows very strict mathematical rules. For most languages, it would be trivial to write a program to translate code from one language into the other, all you need is a good parser for the first language.

There are tricks and quirks that may take some time to master, but you can learn how to write good code in a new language fairly quickly.

PS: there is a ton of bad code out there, but the vast majority of all code (good or bad) is written 4 - 5 major languages. That is only 4 - 5 languages to learn, it is now like someone is learning a completely new language just to write a program in it.

Exactly. Years ago when I first started programing I used to think the same way as Bachstelze. I attempted to find the best languages to learn which at that time were Java and C and master them. Later though I found that it wasn't really such a challenge mastering them as understanding what happens underneath when the code is translated to assembly/bitecode... Once I learned the concepts and learned them well I found that when a new language was thrown at me I would learn it extremely fast. Because I already knew how to do the pseudocode and all I needed were the correct words which in most cases were either the same or very similar...

Now don't get me wrong it is hard to learn a new Type of language but not a new language of the same type even if you know the basic concepts. What I mean is if you understand what to do but Only know Functional languages you'd have trouble with logical and object oriented. Or if you know only OO you will have trouble with the logical/functional... And so on.


You are wrong. Very wrong. Writing pseudo-code will not help you do your memory management right when you implement it in C, for example. Hello, buffer overflows!
If you have done at least a bit of assembly you should have no problem understanding the basic concepts behind memory management in a new language.

Bachstelze
November 18th, 2011, 04:23 AM
If you have done at least a bit of assembly you should have no problem understanding the basic concepts behind memory management in a new language.

That's not true, because a lot of languages are so abstracted from machine code that it becomes pretty much irrelevant... Face it, you can't write good code in a language you don't master, unless you are doing something really trivial.

EDIT: Emphasis on "good". Code that was mechanically translated from another language would probably not be considered good code by any serious programmer of the target language.

AsoSako
November 18th, 2011, 04:25 AM
Thing is in languages such as that you generally don't need to worry terribly much about memory management other then perhaps trying to use the most memory efficient algorithms which again can be done in pseudo code then translated. I agree memory management in lower level languages such as C is tough if you haven't coded a descent amount in them but once you understand low level concepts such as those in assembly those translate nearly directly to those lower level languages, or you use some similar library function.

JDShu
November 18th, 2011, 04:35 AM
The disagreement seems to be regarding how much "language specific knowledge" you really need for a job. People like Bachstelze argue that you really need to know the various ins and outs of a certain language before you can really write "good code" in that language. For example in Python, there are certain conventions that a good python programmer would follow (http://python.net/%7Egoodger/projects/pycon/2007/idiomatic/handout.html) that you really wouldn't know just from a general knowledge of computing concepts because they are somewhat arbitrary and specific to Python. And of course, if you don't follow those conventions, you are probably going to cause a lot of pain for the people who have to clean up after you.

On the other hand, how bad is bad code, and when is it good or good enough code? In particular if you being to work on an existing project (as opposed to starting one from scratch) you'd probably learn to adopt the current practices for that project quite quickly. and that is arguably what is most important.

AsoSako
November 18th, 2011, 04:42 AM
The disagreement seems to be regarding how much "language specific knowledge" you really need for a job. People like Bachstelze argue that you really need to know the various ins and outs of a certain language before you can really write "good code" in that language. For example in Python, there are certain conventions that a good python programmer would follow (http://python.net/%7Egoodger/projects/pycon/2007/idiomatic/handout.html) that you really wouldn't know just from a general knowledge of computing concepts because they are somewhat arbitrary and specific to Python. And of course, if you don't follow those conventions, you are probably going to cause a lot of pain for the people who have to clean up after you.

On the other hand, how bad is bad code, and when is it good or good enough code? In particular if you being to work on an existing project (as opposed to starting one from scratch) you'd probably learn to adopt the current practices for that project quite quickly. and that is arguably what is most important.

In most working places however the rest of the staff would teach you and have you use their own convention. In reality there is no one specific correct coding convention... That is really work specific. One of your bosses may have you code one way and if you get a different job your new boss may have you code another way. That should really not be something tough to do but it takes some getting used to.

JDShu
November 18th, 2011, 04:57 AM
In most working places however the rest of the staff would teach you and have you use their own convention. In reality there is no one specific correct coding convention... That is really work specific. One of your bosses may have you code one way and if you get a different job your new boss may have you code another way. That should really not be something tough to do but it takes some getting used to.

Yes, that was my point in the second paragraph.

On the other other hand, many software shops, particularly start-ups and sometimes plain bad companies, don't or can't supervise you very much, and if you don't have any knowledge of good practices with your particular language, then things will probably go south quite quickly.

3Miro
November 18th, 2011, 01:32 PM
You are wrong. Very wrong. Writing pseudo-code will not help you do your memory management right when you implement it in C, for example. Hello, buffer overflows!

That is why people should always learn C and C++ as a starting point. Once you know C/C++, then going to a new language is easy. On the other hand, if you start with Python or Java, then going to C++ isn't easy.

Memory management adds a layer of difficulty in the implementation and it is something that takes some time to master. However, algorithm and general idea of what you are doing, remain language independent. Also, people that get buffer overflow issues are good C programmers, nobody comes from pure Java or Python background to start writing memory management code in a week.

forrestcupp
November 18th, 2011, 03:18 PM
That is why people should always learn C and C++ as a starting point. Once you know C/C++, then going to a new language is easy. On the other hand, if you start with Python or Java, then going to C++ isn't easy.

My thoughts are that you should start off with something easy like Python or C#. That will help you to more easily learn the basic concepts of OOP and creating algorithms, yet still be quickly rewarded to keep you from wanting to give up. Then from there, move to C++, where you can start to learn memory management and more low level stuff.

Those first steps take time, but from there, you can learn about any language quickly. Of course it depends on who you are and how you learn. Some people take more time to learn things than others, and that doesn't make them any less of a person.

As for pseudo-code, my opinion is that unless you are required to do it as a school assignment, it's a great big pile of horse dung, and a great waste of time. I'm all for creating a planned structure beforehand, but actually writing out pseudo-code is a complete waste of time. When I'm programming in C++, I think in C++. Coming up with pseudo-code is like me being a native English speaker, writing out an entire conversation in Pidgin, only to translate it back to English. I once ported one of my old apps from Python to C#. Why do I need to translate it to a middle man, just to translate it again to my destination?

3Miro
November 18th, 2011, 03:29 PM
My thoughts are that you should start off with something easy like Python or C#. That will help you to more easily learn the basic concepts of OOP and creating algorithms, yet still be quickly rewarded to keep you from wanting to give up. Then from there, move to C++, where you can start to learn memory management and more low level stuff.

Those first steps take time, but from there, you can learn about any language quickly. Of course it depends on who you are and how you learn. Some people take more time to learn things than others, and that doesn't make them any less of a person.


I guess that is one of the two approaches. Some people prefer to take thing one step at a time starting with "easy" languages, however, I prefer to jump to the hard part first and have things get progressively easier. Ultimately both approaches works, when you apply them properly. I have seen people come out with degrees and knowing Java, but having no idea how to do proper memory management.



As for pseudo-code, my opinion is that unless you are required to do it as a school assignment, it's a great big pile of horse dung, and a great waste of time. I'm all for creating a planned structure beforehand, but actually writing out pseudo-code is a complete waste of time. When I'm programming in C++, I think in C++. Coming up with pseudo-code is like me being a native English speaker, writing out an entire conversation in Pidgin, only to translate it back to English. I once ported one of my old apps from Python to C#. Why do I need to translate it to a middle man, just to translate it again to my destination?

pseudo-code is useful to describe an algorithm in a language agnostic way. Most of my time I develop algorithms as opposed to coding in a specific language, so I do use pseudo-code. I would see that most people don't need to do that. Here I am talking about pseudo-code as a proof-of-concept that programming is language independent.

forrestcupp
November 18th, 2011, 06:12 PM
pseudo-code is useful to describe an algorithm in a language agnostic way. Most of my time I develop algorithms as opposed to coding in a specific language, so I do use pseudo-code.

I guess if you're not actually doing any programming, and you need to give examples in a way that programmers of different languages can understand, it could be useful. I'm never really in that situation, though.

I agree with the notion that most languages have a lot of likenesses. Like the basic syntax of Java and C++ is almost exactly the same. It's just that their purposes and implementations are different. It was pretty easy going from Python to C# to C++ to Java because they all work alike with a few differences.

There are a few little used languages that are completely different, though.