views:

291

answers:

12

Duplicate of:

http://stackoverflow.com/questions/362226/whats-your-next-programming-language-and-why http://stackoverflow.com/questions/6396/which-programming-language-should-i-learn


I can program in PHP, Perl, Python, and Ruby, but I want to learn a new language. However, I don't which non-scripting language to choose. What should I choose?

+6  A: 

Common Lisp.

You may never program in it, but in terms of raw knowledge, it provides the best programming knowledge (and history) you'll ever get. You will definitely become a better C,C++,C#,PHP,Perl,Python, or Ruby programmer with a background in Common Lisp

+2  A: 

Are you already proficient in OOP? If so, perhaps you should begin to explore the .NET world. I would suggest C#. Especially if your motivation is career-oriented.

Jonathan Sampson
+1  A: 

C/C++
Java

Ishmael
+3  A: 

assembly language

master that, and the machine is your toy

Steven A. Lowe
Ugh... ASM?*A* machine might be your toy, but it'll be useless on alternative hardware.In the end, Assembly is abysmally difficult to get anything complicated done in, very hardware dependent, and basically useless for learning to code in new languages (or getting a job).
Depends on what job, and what platform. I know of more than a few people who make their living being masters of a particular assembly language working in the embedded world.
Robert P
@cmartin: I don't agree. If you get the hang of assembly on one architecture, you'll be able to quickly pick it up on others. You'll also learn programming fundamentals that are highly relevant to compiled languages, even ones that run on a virtual machine like JVM and .NET.
Parappa
@[cmartin]: the OP only knows scripting languages. Time to get serious and close to the metal, to see some deeper patterns. And the different machines are not all that different at the opcode level.
Steven A. Lowe
+1  A: 
  • C/++ - Blazing fast, incredibly powerful, and will make you a REAL man.
  • Lua - Fast, especially useful if you know C/C++ (great for an embeddable scripting language). Plus it's elegant.
  • Python. Really powerful, widely used, and has a rediculous API.
  • Lisp. 'nuff said.
Sean Edwards
hmmmm. what's that about a REAL man? kinda liked that... :)
xtofl
While you're on the xkcd kick - you missed one - http://xkcd.com/378/
Eclipse
+4  A: 

I'd say some variant of LISP or Haskell for really getting an understanding of functional programming - it'll change how you approach problems everywhere. LISP macros are also something really worth learning.

C++ to learn about how memory management really works, as well as learning how to mix multiple paradigms in one language (functional, imperative, object oriented, and others all squished together in an obscene mixture that turns out to be quite useful in large-scale projects).

Java C# (or SmallTalk if you're feeling adventurous) to learn OOP.

Learn something like Erlang to learn about parallel processing techniques - this is something that will really pay off in the coming multi-core world.

Eclipse
+6  A: 

C and Scheme.

All of the languages that you know already are implemented using C. Your operating system is probably written in C. C is the foundation upon which much of the modern computing world is built. Even if you don't do much original development in C, you will need to debug C programs from time to time.

Scheme with SICP. Scheme is small and simple and embodies the very essence of computation. What you learn in Scheme will help you wherever you go.

Glomek
+2  A: 

C

C. Dragon 76
A: 

Think about learning C. Your current languages are all based on C and you could use the knowledge to gain some speed in scripting projects or to help out fixing bugs in these scripting languages.

stesch
+1  A: 

I go for Klingon next.

John Nolan
A: 

Depends on what you want to learn actually... if you want just another language, any one will do (C is missing in your list, and that will teach you few tricks). If you want to learn more about functional programming, Lisp, F# or Scala are good candidates. Prolog for logic programming. Haskell for functional programming, concurrency and parallelism.

Here is list of various categories of programming languages, together with links: http://en.wikipedia.org/wiki/List_of_programming_languages_by_category

Better yet: learn concepts behind languages.

Peter Štibraný
A: 

I'd find an interesting project to work on first, then pick a language to implement that project.

Better to know the job then pick the tool to do the job. If tool you learn is a hammer and the project turns out to be a screw...

Jim C