views:

125

answers:

7

I was reading a lot here at SO lately and I'm kinda in the same situation as this guy here:

http://stackoverflow.com/questions/1464144/should-i-have-a-working-knowledge-of-a-language-before-learning-something-else

One thing I would like to discuss further from that question is this part:

If so, which one would be best for me?

I'm definitely not asking what is the best language.

I guess I'm a bit paranoid as a student and don't want to make mistakes in my learning curve (if there's such a thing). I'm mainly choosing right now if I should go with lower level (like C or C++) or be proficient in a higher level one (like Java, C#).

One thing that worries me about the higher level choice are those articles about "Perils of Java school" and I really don't want to be in that kind of a situation. Would having a working knowledge of a lower level language benefit me in the future?

+1  A: 

Would having a working knowledge of a lower level language benefit me in the future?

Of course. Lower level languages, especially C, teach you more about how the computer hardware works; they are "closer to the metal." That will always translate into better programs when writing in higher level languages, because you will understand more deeply the tradeoffs involved in programming in those languages.

Robert Harvey
+1  A: 

I found that having practiced C and C++ (in university), it is important to understand the underlying building blocks of programming languages.

However in the work force business applications tend to be built in higher level languages such as C# and Java.

It is important to have the knowledge of a lower level language, to understand how the higher level languages are working and to help make efficient running applications. However to increase your chances of employment (probably the reason for your studies), it can be important to be able to use higher level languages (obviously depending on the employment type you are after).

Russell
+1  A: 

If you are learning Java, then get proficient in that language first,mainly to help with your studies.

Once you understand that language, then start to learn C, as it is a different type of programming, and you will struggle with pointers, most likely, but, it will give you a great deal of flexibility.

Get good at programming, but most important, understand good design and design patterns. Once you understand those, then learning languages is just details.

James Black
+1  A: 

I will dare to approach this question from a different angle. I suggest that you learn to produce something asap. Then work your way into whatever really interests you. With this in mind, you can be the most productive with the fastest path to instant gratification by learning javascript. I know, I said it. However, if you think about it, there are many benefits. A 'c' like syntax with java like constructs. Flexible and productive with a internet full of support and examples. Once you get comfortable hacking through javascript, then start from the beginning at a computer science school and learn traditional data structures, computing basics, machine language, circuits, etc.

randy melder
A: 

Languages will come and go but core computer science concepts will stay for a long time. You can learn as many languages as you want and even be very good in more than one. However what is important is that you should have a clear understanding of the idioms and constructs used by a particular language.

More important then programming syntax is good interface design (api), design patterns, OO design and just how to structure code properly using the programming languages constructs. These things will help you grasp languages of similar paradigms easily and also understand differences between other types of languages.

rohit.arondekar
+1  A: 

Yes, learning a lower level language will almost certainly benefit you in the future (even indirectly). Learn a new programming language regularly, perhaps one every year.

Greg Hewgill
A: 

Don't worry about those Java schools that you were mentioning about. As long as you don't JUST study Java and work on a lot of different concepts, you are going to be fine. Go with what interests you and everything shall follow.

Coding District