PDA

View Full Version : Language learning path......?



Immolatus
June 13th, 2008, 10:36 PM
I am a student currently pursuing a degree in software engineering. It seems at the beginning of which that I am stuck with lots of calculus, chemistry and physics in my curriculum so I plan to learn and build on my library of programing languages during this and the next two summers,aside from the courses I will be taking on them in school.

Here's my question: I've started with Java because it seems like a lot of fun and is so far, next I'll be moving to Python. Should I back up a bit and learn C and C++ first? I feel like I should begin at the beginning if you know what I mean. Also should I learn to program in Perl and Ruby in earnest or should I treat them as peripheral interests? I do intend to learn about them as well at some point.

Any thoughts?

bruce89
June 13th, 2008, 10:47 PM
You won't get much of an objective opinion here I'm afraid.

Java's really a C++ done well, so it's somewhat like C syntaxally.

Perl, Ruby and Python are all something else.

I can't see any advantages of any language over another really, just use what you are best with. For instance, I like Vala.

LaRoza
June 13th, 2008, 10:55 PM
First, realise all languages are tools. There is no progression or scale in terms of what language to use. Perl is just as much a language as C. It seems many people think of C and C++ as "real" language when that is not the case. They all are real.

Perhaps my site and wiki would interest you...

bruce89
June 14th, 2008, 01:18 AM
First, realise all languages are tools. There is no progression or scale in terms of what language to use. Perl is just as much a language as C. It seems many people think of C and C++ as "real" language when that is not the case. They all are real.

Thanks for the truth. Good to see objectivity here.

pmasiar
June 14th, 2008, 03:06 AM
Python is excellent for beginners (especially self-taught, without a teacher), and very useful later when you need just to quickly whip code to massage text file to run couple times, when you care about your time, and not about efficiency of the code. So I would recommend learning Python first, even before Java. This is the part bruce89 above considers not objective - because it does not fit to his preferences. Mine preferences is, whatever gives you acceptable solution fastest is the best, but some people rank languages, and consider "scripting" languages inferior.

Java is decent language, even if little boring, no reason to waste time on it, especially if you will have classes on it. C is good as second language, in those rare cases where you do care about efficiency, but never as first choice.

See wiki in my sig for Python links.

Later, instead C++ or C# or Java, learn more radically different languages, like Lisp, Prolog, Forth. They will expand your brains more than "standard" languages. You can always learn Java, C# or C++ later to get a job, but don't become single-language monkey coder. You will learn many different languages, so start with flexible ones first.

descendency
June 14th, 2008, 03:21 AM
C\C++ is used a lot in scientific communities. Java is not.

I recommend C++. I personally dislike java for not being C\C++ (I don't mind the OOP nature as I program in C#/Mono too. One thing that annoys me - although it's off topic - is Java's lack of overloaded operators.). What I don't recommend is becoming mildly fluent in four languages but not being able to write anything in one language.

Immolatus
June 14th, 2008, 08:46 AM
Wow! Thanks for all the replys. So what I think I'm getting from all this is that I should master at least two, but be able to work with a few others as well. Thats kind of what I had planned I just wanted to make sure I wouldn't stunt myself by learning java first instead of C/C++. I guess from what you've all said here it doesn't matter what order I go in.

Thanks :guitar:

shadylookin
June 14th, 2008, 09:05 AM
You'll probably want to learn C/C++ as you'll typically have to program in them for your classes. You may want to get ahold of your adviser and ask him which languages you'll absolutely need to know for your courses.

All languages bring something to the table otherwise they wouldn't exist

assembly for it's speed
C/C++ for it's speed and higher level language
java for it's object orientedness
python for it's ease of use
the list goes on.

LaRoza
June 14th, 2008, 02:33 PM
C\C++ is used a lot in scientific communities. Java is not.


I think pmasiar has personal testimony to the opposite. As I recall, he does work in Java for scientists, or something like that.


Wow! Thanks for all the replys. So what I think I'm getting from all this is that I should master at least two, but be able to work with a few others as well. Thats kind of what I had planned I just wanted to make sure I wouldn't stunt myself by learning java first instead of C/C++. I guess from what you've all said here it doesn't matter what order I go in.


Just so you know, any time a person refers to the language "C/C++", be very wary. That notation is good for certain things, like compiling and running, or refering to syntax, but for learning a language, C and C++ are very, very different.

bruce89
June 14th, 2008, 04:01 PM
Python is excellent for beginners (especially self-taught, without a teacher), and very useful later when you need just to quickly whip code to massage text file to run couple times, when you care about your time, and not about efficiency of the code. So I would recommend learning Python first, even before Java. This is the part bruce89 above considers not objective - because it does not fit to his preferences. Mine preferences is, whatever gives you acceptable solution fastest is the best, but some people rank languages, and consider "scripting" languages inferior.

What I really meant was that here, people will just recommend their favourite, which tends to be Python. I'm always suspicious of recommendations for any language, especially when people say "it's my favourite".

In this case, the OP has experience with Java, so I thought that similar compiled languages would be the most obvious candidates.

geirha
June 14th, 2008, 04:16 PM
You'll probably want to learn C/C++ as you'll typically have to program in them for your classes. You may want to get ahold of your adviser and ask him which languages you'll absolutely need to know for your courses.


I agree with shadylookin here if C or C++ are the programming languages that your classes will use (which I don't believe is a given). Check all the subjects you'll be going through the next few years, and see if they mention or recommend specific programming languages. If they do, I'd learn those first, regardless of which is "best" for given tasks.

pmasiar
June 14th, 2008, 07:34 PM
What I really meant was that here, people will just recommend their favourite, which tends to be Python.

It took long 2 years to get there :-) and still way too many beginners are way too obsessed by speed of C/C++ to even consider very important "implementation speed", and consider "scripting" languages not real programming.

I wary when people recommend the only language they know - how they can compare? And if they cannot compare, how they want to argue with people who can, and do, compare languages based of real-life experience in solving problems with many languages?


I'm always suspicious of recommendations for any language, especially when people say "it's my favourite".

My favorite "cool" language is Forth, but I am not in a position to use it in any work I am paid to do. And I would never recommend it to a beginner, 99% of whom are best served by Python, IMNSHO professional opinion, based on 20+ years of experience in IT.


In this case, the OP has experience with Java, so I thought that similar compiled languages would be the most obvious candidates.

OP was obviously concerned about enlarging his skillset, so adding more different languages is IMNSHO move useful. Any competent programmer can learn basics (syntax) of any language similar to one s/he knows in couple weeks, max. Learning more different languages is a way to do "heavy lifting" - to increase your brain's mental power.