• Coding
  • What language should I pursue next?

So I've been practicing Java for 6 months now, it's a wonderful programming language, all the rules enforced by the compiler help maintain a more robust code and the programming structure is very clear. As a Computer Science student I'm planning on mastering at least 4 different languages before graduating.

Which language should I pursuit next? I'm looking for a language that is more low-level then java(hence faster), and would help me find a job in the future. I looked into both C++ and C# so far, C++ is just too messy for me, C# is familiar to me since it has a lot of the logic in java, what about the other mainstream languages?
it's a wonderful programming language
Java and wonderful? They don't fit together :P

Anyway, if I were you I'll go with one of the following: Python, Lua or Ruby.
m0ei wrote
it's a wonderful programming language
Java and wonderful? They don't fit together :P

Anyway, if I were you I'll go with one of the following: Python, Lua or Ruby.
What's wrong with java? :P I found ruby pretty interesting, it has more demand than c++ or c# according to statistics from job vacancies in 2013
mmk92 wroteI'm planning on mastering at least 4 different languages before graduating.
That's a very good goal! It's important that you're taking the initiative to learn things on your own, and the experience that gives you will definitely come in handy later on.

Languages come and go (except FORTRAN, that's forever, dude) so don't base your learning decisions on job ads, just try to learn the things that interest you.

You said you wanted to learn something lower level than Java. You can't go wrong with C. You'll learn about how the computer works and you'll bump into some... let's say interesting debugging opportunities. C isn't C++, it's not complicated, but you can do a lot with it and it's easy to learn the whole language quickly. I'll leave it to someone else to recommend a good learning path for C. (rahmu?)

I also want to note that a language being "fast" is not necessarily the most important aspect of developing software with it until you run into those (almost rare now) cases where you need to optimize for speed. So don't worry too much about how fast the language you're learning is, instead worry about the new ideas that it can teach you. For C, pointers are gonna give you that "aha!" moment once you grok them.
saeidw wrote I also want to note that a language being "fast" is not necessarily the most important aspect of developing software with it until you run into those (almost rare now) cases where you need to optimize for speed.
Where everyone will go Wise words saeidw, I absolutely see what you did there!.
mmk92 wrote Which language should I pursuit next?
You have the opportunity to study whatever language you like. Once you enter the professional world, it won't be the case anymore. Employers usually don't like programmers to learn and experiment with new languages "3ala 7sebon".
Is there a language you are drawn to? Curious about? Now is the time.
mmk92 wrote I'm looking for a language that is more low-level
(...)
C++ is just too messy for me,
I think maybe these two things go together? Anyway, code is as messy as you make it, in whatever language, so what exactly do you mean when you say "it is messy"?
mmk92 wrote and would help me find a job in the future.
That would be good academic records, recommendations from your teachers, and maybe one language... the English language :) but you got that one covered already, it seems.
I suggest learning about programming languages in general by reading a book or following an online course(such as the one on coursera). I think learning the fundamentals of programming languages is what would enable you to pick up and work with any language later on much easily in the future.

A programming languages course won't teach you all the details of every language it goes through(usually 2 or 3) but it focuses on teaching you core concepts. Furthermore it introduces different programming paradigms to you through the different languages it discusses and focuses on certain features in them that convey the concept they're trying to teach.

I think that is much more rewarding than going for C# or Php or whatever language right now, I think I should have done that too a couple of years ago.

And if you still want to learn a single language then either choose a lower level one like C or one with a non imperative paradigm such as a functional language(F#,Lisp,Haskell etc...)

Being a student, you have great room to learn cool stuff rather than tie yourself to market demanded languages that don't have anything that special(such as Php).
Several good ideas in this thread.

You're still at school
You should learn more languages, but don't focus on job offers. Learning Java will make you good at being a Java programmers. There are other languages that will teach you how to be a good programmer, in any language.

You're still at school means you still have the luxury of time to learn these languages. Once you start working, finding this time is going to be difficult (albeit not impossible).

PHP or C# (and yes, FORTRAN, but please don't do this) are excellent examples of languages you should learn according to current job offers. But given you already know Java, they're not going to teach you much in terms of programming features.

Don't think in terms of languages
You should think in terms of concepts. What are you interested in? Although all (not really) languages are equivalent in terms of computing power (anything you can do in one, you can do in the other), try to pick a language based on your interst.

Certain languages are more suited for the web, other languages will teach you a lot about how computers work, while others can teach you a ton about algorithms. It all depends on what you're interested in.

Finally, try to be as language-independent as you can. I always do my best to avoid being labeled as a "Python programmer". I'm a programmer, I just happen to know Python better than other languages.

My suggestions
  • C: Learn C (not C++) if you're interested in understanding how your computer works, or if you want to manipulate hardware and robots. To learn it, get this book. Period. Keep in mind that C is more tedious than what you know in Java. Doing anything will take a lot of efforts (at first) but it will give you a great sense of accomplishment when you succeed.
  • Scheme: Scheme is a minimal language that will teach you, among other things, how to build programming languages. If you want to understand advanced concepts of progarmming this is for you. This is the book you want to get. There's a common saying that you should learn Lisp/Scheme because it will make you a better programmer even if you never end up using it professionally in your life.
  • JavaScript: JavaScript is not a toy language. It packs several features that will seem unintuitive to you coming from Java. It will force you to bend your mind in ways you're not used to, and it will introduce you to the wonderful world of the Web.
  • Python: Python is amazing. It's a language that is very easy to pick up, very powerful, beginner-and-expert-friendly alike. It will make you highly productive, it has a lot of great tools available, have production-ready libs for anything you can imagine.
  • Ruby: It's only fair to mention Ruby. It's very similar to Python and shares many of its benefits. It doesn't matter if you pick Ruby or Python, just pick at least one of them.
Don't learn C++
Disclaimer: I hate C++.

Trying to be objective, I feel C++ is not made for beginners. It packs such complex concepts at all time, you're probably better off not touching it for the next few years. After you've played with several languages, give C++ a try. Maybe you'll like it. Some great programmers have built their whole carreers around this one language. You might be one of them.

If you want to maximize the benefits you take from C++, wait till you become a better programmer. After all, C++ is notoriously "expert-friendly".

Other things

While these aren't exactly programming languages, these things will make you a better programmer:
  • Learn Unix: Get your hands on a Linux distro and start playing with it. Now.
  • Use a good editor: A text editor is a programmer's best friend. You should learn to use a powerful one. The classics are vi or emacs. Pick one.
  • Master English: Rolf is spot on! Mastery of English will make you a better programmer. Our job is about communication. Keep this in mind.
EWD once wrote:
Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer.