views:

216

answers:

8

I'm thinking about going back to school in a year and turning my CompSci minor into a major. I feel that in the meantime I should keep learning, but I'm not sure what to learn. In school we mostly worked with Java, so I'm most comfortable with it, but obviously there's plenty more for me to learn--for example, I'm not that familiar with making GUIs in Java. On the other hand, I could try to learn a completely new language like C++ or Python.

I mainly want to be able to find an internship (whether or not it's paid) if I go back to school. If I should learn a new language, which one?

+2  A: 

Push yourself and learn a different paradigm - something that will expand your mind, not just the number of languages.

Haskell is a pure functional language - hard to learn and understand if you come from OOP.

Oded
If he gets into CS, I bet he'll see Haskell at some point.
quantumSoup
@Aircule - possibly, depending on school. And this would be good preparation for that anyways.
Oded
+1  A: 

While I would personally recommend learning at least two languages, just so you can appreciate the differences and will be able to choose the right tool for the job, there's also something to be said for specializing in one and being able to whip up a complete application

kander
A: 

If you plan on finishing a Computer Science minor (making it a major), then you're bound to come across plenty of new languages to learn. The best part is you will be lectured on them rather than having to read tutorials.

That in my opinion is better than just saying "Hmmm.. what language should I learn?"

But still, taking these computer sciences courses will probably limit you to core languages (ie Operating Systems and such.) If it's web apps you're looking into making, then yeah... stick with Java, make it your hobby and learn to make Java Applets. If you find Java isn't your favorite thing, then move onto something like PHP.

You can always practice another language (at your leisure) while you're learning in school.

Zane Edward Dockery
I would stay away from PHP if I were him. Really.
quantumSoup
PHP: No. Java Applets: No. Lisp, Haskell, Ruby, Scala or some other interesting language: Fuck yeah.
Tom Morris
Why stay away from PHP? It's just as useful as any other language; and it has a very low learning curve.
Zane Edward Dockery
Probably because PHP is incredibly bad. It's a templating language gone wrong.People should stay away from it except for studying how language design, development and evolution went haywire.If you plan to design a new programming language you should absolutely check PHP. If you have a feature in your new language and only PHP has it too, you made a mistake.
soc
+1  A: 

If you are looking into getting an internship, I suggest you study algorithms, data structures, and other CS concepts that are language agnostic. Because when the interviews come up, the languages you partially know won't be as important an hiring factor as how you approach a problem and your understanding of fundamentals in programming.

quantumSoup
+3  A: 

Every programmer should learn at least a couple of languages. What you mustn't forget is that once you have the logic figured out that's already 90% of the battle. Ultimately all programming languages can, in one way or another, achieve the same goal*. Some languages make it easier, some languages make it faster, some languages care about types, and some don't. Being able to adapt to syntactical changes each language may enforce is an immense strength for a programmer to harbour.

One think you must not do is learn an absolute mass of different programming languages just to say you have. Get the absolute best you can with Java (if you feel that's a language you enjoy), then start looking into other languages. There is usually a programming language best suited for a particular task. Sometimes people are forced to learn new ones based on these tasks, and that's not a bad thing.

* Yes it's debatable.

injekt
"Ultimately all programming languages can achieve the same goal" If the languages are Turing complete, then theoretically yes.
quantumSoup
+1  A: 

It is good to learn new languages, it is better to familiarize yourself with a new paradigm. I suggest learning functional programming. There are good functional languages for the JVM. Examples are Clojure and SISC. It is also nice to take a fresh look at OOP with languages that provide true meta-programming facilities and extreme dynamism. For instance, have a look at Smalltalk, CLOS, Io (or Ioke, Io for the JVM) etc. Also see this article by Peter Norvig.

Vijay Mathew
+1  A: 

Before you migrate away to another language I would try focusing on the different aspects of the software development lifecycle which are language independent. For example a solid understanding of version control and how to use it to maximise your own/team productivity is worth gold.

Cyberroadie
A: 

Hi.

I think you should maybe do/find the thing you like most in Computer Science. This is a very large ground with big possibilities. You can do many, many things, like GUIs, web development, databases, data mining, software engineering, network administration, algorithms, bio-med, etc. etc.

If you find out what you like, then you can test what programming languages would be best for you. Knowing Java very good is really valuable, but I think it's also good practice to discover something else. To compare and evolve yourself. Then you will know that some things can be made simple and faster in one technology and other things in other technology. You can also start thinking out of the box.

I would advice to learn pure C, can be ANSI, to know some quite low level programming. You can compare the speed of programs written in C and Java.

I can tell you that if you know one programming language very good, then learning new one is quite simple. They taught me that when you know C, you also know other languages (well in real it's not so obvious).

Main thing is to stick to what you like most. To enjoy it :) Yes, enjoy it!

So I would suggest to learn functional language like C.

Best regards, ventus

ps. sorry for not perfect English ;)

Ventus
C, a functional language? What? You had me at learning C but you lost me there.
Jeff M
Well, I meant C is procedural, but I missed that word :P
Ventus