Question About the BestLanguage to Learn

Started by
8 comments, last by LikwidSteel 15 years ago
So, I plan on going throughout highschool and taking all the programming courses that they offer, which will probably be 3, including an IB course (as long as there's enough interest). All of these classes teach java, so I plan on learning java, obviously, and from that my I should be able to write in C++ competently, correct? So I don't need to learn C++ nor java, I know basic VB6. What do you recommend for my next language. I've been working with python, but the IDLE crashes constantly(just got a new one, but I don't know if it will work). Do you advise that I continue with python, or work on something else?
Advertisement
What is your goal? If you just want to say you know a bunch of languages then sure try something else. If you want to be a good programmer then I'd recommend you stick with a language and really learn it and do something with it. Learning the syntax of a new language is nothing and isn't worth much, most programmers can do that relatively quickly. What matters is having a strong grasp of programming and the advanced concepts, patterns and practices at the more advanced level. Also being able to manage a larger project.

As to languages themselves, both Java and C++ you name would be good choices to go more advanced with, you could even stick with Python. The language isn't all that important until you find it limits your goals.
"The general thanks you!" - Quote from a call I took at work.
Learning multiple languages is good -- the skilled programmer will know (at a solid level of proficiency) many. But trying to spread yourself too thin too early on in your development as a program will do more harm than good.

It's not really enough to dabble in a language for a week or two and claim you 'know' it. The version of 'know' you'd be using there is a different one from what somebody would be expecting during, say, an interview, which is more along the lines of 'having completed a nontrivial project or two' in that language and being familiar with many of the intermediate-level idioms that may surround that language's culture.

You should pick one, maybe two, languages to study right now. It sounds like Java is basically being chosen for you, so there's that. Python would be a good second choice since it differs a fair bit syntactically and in terms of the mindset you settle into when approaching problems.
Quote:What do you recommend for my next language.

Just pick one; and then another one, etc. C++, Java, Python, and C# are all fine languages. As Yaz said, you should complete projects so as to stick to the language and become competent. Then learning new languages will be easier. Edit: Josh's 1st paragraph eloquently states what I was getting at. Good advice.

Quote:I've been working with python, but the IDLE crashes constantly(just got a new one, but I don't know if it will work).

I use Eclipse as my Python IDE [with the PyDev Plugin] and so far it works fine for me. There are other IDEs, so maybe you can look around; but, IDLE never really excited me.
By the way, knowing Java is not enough to know C++. There are significant differences, particularly with memory management. If they were similar enough that any Java programmer could program in C++, then they'd be the same language. :)

That said, they have similar syntaxes, and if you know Java you should be able to read most C++.
Jetblade: an open-source 2D platforming game in the style of Metroid and Castlevania, with procedurally-generated levels
You know...the most suitable answer to this question seems to be the least helpful sounding one...

The language you should learn is the one you intend to use.

It seems pretty pointless to learn a language you won't use in any way... Just saying...
A good language to learn is one that uses different paradigms from the ones you are used to. Functional languages, logic languages, object oriented languages, procedural languages, dynamically typed languages, statically typed language, languages with manual or automated memory management, etc - being fluent with a number of these will broaden your mind as a programmer.

Quote:
It seems pretty pointless to learn a language you won't use in any way...

Latin is still a real language one can learn, despite the fact that it isn't spoken any more. Is learning Latin pointless?

Sometimes, the change in perspective is what you need, even if you don't end up using the new language. You can often map the important concepts into languages you are using frequently.

Consider that you can write object oriented software in C, although the language will not help you. You can write functional-esque software in C++.
Quote:Original post by LikwidSteel
All of these classes teach java, so I plan on learning java, obviously, and from that my I should be able to write in C++ competently, correct?

Incorrect.

Quote:So I don't need to learn C++ nor java, I know basic VB6.

Also incorrect.

As to the former: while Java and C++ share many superficial syntactic and even semantic similarities, the nuances differ wildly - and the idioms even more. You don't know a programming language until you understand its idioms, much like you don't know a natural language until you can intentionally leverage idioms to utter witticisms and intentionally crack bad jokes.

As to the latter: strictly speaking, you don't "need" to learn any programming languages. You just won't be a programmer. But since you decided you wish to be a programmer, then learning one language does not obviate the need to learn another. Languages are distinct, and each express a specific subset of the concepts available in "programming." We learn multiple languages not just to get jobs, but because the architectural decisions made by the language designer lead to more compact/efficient expression of certain ideas and solutions that rely on certain programmatic concepts - we learn them to expand our ways of thinking about and solving problems.

As to which language you pick, it really doesn't matter. Pick a language and stick with it long enough to write non-trivial programs. Survey-level knowledge isn't very useful in practice.
>> (Durakken) It seems pretty pointless to learn a language you won't use in any way..

It depends on what your goal is. If you truly want to grow as a programmer (as opposed to briefly hacking on a pre written program or making a mod), you would value learning new languages. Learning new languages helps expand your knowledge. Your approach to program design is influenced by the semantical tools and syntax of the languages you know, at the very least. So even if you aren't using a language directly for your program, you do use the experience you have with it. Don't be so hasty to write off languages as useless.

jpetrie pointed out what I would have said. But I have a few more things to add.

>> (LikwidSteel) so I plan on learning java, obviously, and from that my I should be able to write in C++ competently, correct?

With experience in Java, you would take less time to learn C++. You would recognize familiar semantical structures and syntax. But that recognition is not a substitute for actual competence. If you had to sit down and write a C++ program, you could not with Java knowledge and limited C++ exposure write a non-trivial C++ program.

> So I don't need to learn C++ nor java, I know basic VB6.

And likewise, VB6 experience won't translate to competence with Java or C++. You'll still need to sit down and read and practice with Java if you want to pass the programming courses.

> What do you recommend for my next language...Do you advise that I continue with python, or work on something else?

You need to learn Java. That's not something debatable because it's chosen for you. If you do have additional time left over, you should make the decision whether you will spend that time on Java or on Python in parallel. You might not be able to make this decision until you start your courses, and can make the decision after seeing the pacing of the course.
Quote:Original post by oler1s
>> (Durakken) It seems pretty pointless to learn a language you won't use in any way..

It depends on what your goal is. If you truly want to grow as a programmer (as opposed to briefly hacking on a pre written program or making a mod), you would value learning new languages. Learning new languages helps expand your knowledge. Your approach to program design is influenced by the semantical tools and syntax of the languages you know, at the very least. So even if you aren't using a language directly for your program, you do use the experience you have with it. Don't be so hasty to write off languages as useless.

jpetrie pointed out what I would have said. But I have a few more things to add.

>> (LikwidSteel) so I plan on learning java, obviously, and from that my I should be able to write in C++ competently, correct?

With experience in Java, you would take less time to learn C++. You would recognize familiar semantical structures and syntax. But that recognition is not a substitute for actual competence. If you had to sit down and write a C++ program, you could not with Java knowledge and limited C++ exposure write a non-trivial C++ program.

> So I don't need to learn C++ nor java, I know basic VB6.

And likewise, VB6 experience won't translate to competence with Java or C++. You'll still need to sit down and read and practice with Java if you want to pass the programming courses.

> What do you recommend for my next language...Do you advise that I continue with python, or work on something else?

You need to learn Java. That's not something debatable because it's chosen for you. If you do have additional time left over, you should make the decision whether you will spend that time on Java or on Python in parallel. You might not be able to make this decision until you start your courses, and can make the decision after seeing the pacing of the course.


Wow, lots of replies. Thanks everybody.

I guess I should stop listening to my teachers... lol

Anyway, as for not being able to pass the Java courses, I don't think that will be a problem. At all...

Okay, so I don't know how to use any of my IDEs for any language except for VB6. So I think that I'm going to try and learn python, because most of you say java will help with C++, so I'll wait until I get java syntax down, then learn, or still wait for C++. Does that sound alright?

This topic is closed to new replies.

Advertisement