4th language ?

Started by
11 comments, last by Rebooted 16 years, 8 months ago
Hi, I was wondering which language to learn next, i know c++ very well, i've taken a full year course on Java and know it pretty well. I learned assembly not long ago, and it gave me a completely different view of the programming world, i'm not gonna say im really good in it, but i understand how to read it and wrote a couple of i/o apps with it. Which language should I learn next? I want to know something useful, I've though about C# and I have a pretty fat "Professional C#" book, but It looks very similar to Java and C++ combined, so It just gets boring re-reading the same stuff. Which languages can help me if I'm planning to persue game dev? Maybe BASIC? Any suggestions/opinions welcomed, thanks.

You didn't come into this world. You came out of it, like a wave from the ocean. You are not a stranger here. -Alan Watts

Advertisement
If you know Java, you know C#.

Learn a functional language. Lambda, Lisp, Haskell, ... Or at very least Ruby or Python.

Learning yet another procedural/OO language won't teach you anything beyond minor syntactical differences. But functional concepts are becoming increasingly useful for concurrent and asynchronous programming (networking).

BASIC isn't really worth learning. VB.Net is all .Net, the language is mostly irrelevant, so it doesn't add any real value to expanding programming methodology experience.
Well, firstly you might re-evaluate whether you actually know C++ all that well. I've been programming in general for 13 years now, C for roughly 5 years and C++ for 4 and I have little illusion that I know all there is to know about C++. Besides, there is a ton to know about it even outside the syntax itself: patterns and general methodologies, caveats, etc...

That said, if you're looking for something that will change your fundamental view of programming I would look into a functional language like Haskell or the other Lambda-calculus-based languages. There are basically 3 major paradigms in programming: Object-Oriented, Procedural and Functional. C/C++, various BASICs, Java, C# and most popular languages are of the OO/Procedural variety -- they share essentially the same (or very similar) mindset, and are basically syntactic and feature-set differences. Functional languages are very much a different mindset altogether.

Some of the distinguishing features of functional languages include: Functions which are much closer in structure to mathematical functions and often defined in mathematical or math-like terms. Purely functional languages (Haskell) use functions which have no side-effects -- functions are specified solely by passed-in arguments and its effects are conveyed strictly by its direct output. Functions are also first-order data types (can be passed as parameters) and recursion is often fairly prominent in defining functions.

throw table_exception("(? ???)? ? ???");

I'd learn a functional programming language. Doing so makes you a better programmer in pretty much everything else.
@Antheus & ravyne2001 , thanks i like the idea of being able to express functions as mathematical terms, that would make the algorithm creation much easier to understand.
Quote:
Well, firstly you might re-evaluate whether you actually know C++ all that well. I've been programming in general for 13 years now, C for roughly 5 years and C++ for 4 and I have little illusion that I know all there is to know about C++. Besides, there is a ton to know about it even outside the syntax itself: patterns and general methodologies, caveats, etc...

Yea thats true, I'm trying to go beyond just knowing the syntax, but I feel pretty comfortable with techniques behind it too. I'm obviously lacking professional experience, but I'm trying to improve, i used to believe books like Code Complete are pretty boring since they have little physical code, but now that i'm actually involved in a project its become invaluable.

So it seems like it's Lisp vs Haskell, on Wikip. it says that Lisp is used for AI programming which sounds pretty cool, but Haskell like you guys said is purely functional, which one of these is used more?

EDIT: btw is python worth anything? or functional langs are more important?

You didn't come into this world. You came out of it, like a wave from the ocean. You are not a stranger here. -Alan Watts

Quote:Original post by VanillaSnake21
EDIT: btw is python worth anything? or functional langs are more important?


Actually, Erlang is another interesting alternative. It has proven to be unsurpassed with regard to concurrent performance. Another interesting aspect is that it has no shared state and no stack - which makes for quite interesting programming.

For a light-weight version you can try stackless python which offers similar functionality, but still provides the asynchronous benefits.
I would also recommend learning a functional language. Haskell is pretty interesting (actually any functional language will do, because it's the concept that counts and not so much the syntax. Heck, you could even learn &#106avascript/ActionScript which is multi-paradigm but supports functional concepts like higher-order functions, lambdas, closures, currying and since &#106avascript 1.7 also stuff like continuations). Also, you might want to look into logic programming languages like Prolog. And you might want to check out Smalltalk which is the mother of all object oriented programming languages and also supports a lot of functional concepts.
Quote:Original post by Antheus
Actually, Erlang is another interesting alternative. It has proven to be unsurpassed with regard to concurrent performance. Another interesting aspect is that it has no shared state and no stack - which makes for quite interesting programming.
What do you mean by that?
I would say SQL would most likely give you the most complimentary skills as you can use it with all of the languages you already know.
A functional programming language, or meta-programming-y language like Ruby (or lisp). Ruby is awsome. Doing Ruby on Rails applications is a pretty good way to learn how to use it well. It will give you new ideas and make you a better programmer in other languages as well.

This topic is closed to new replies.

Advertisement