Sign in to follow this  
VanillaSnake21

4th language ?

Recommended Posts

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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
@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?

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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 javascript/ActionScript which is multi-paradigm but supports functional concepts like higher-order functions, lambdas, closures, currying and since javascript 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.

Share this post


Link to post
Share on other sites
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?

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
Thanks a lot for all the advices [smile]
Quote:
by eedok
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.
I was definitely planning on learning SQL, besides the fact that its sought for in the professional industry it also seems pretty useful for game file formats.

Quote:
by Harry Hunt Heck, you could even learn javascript/ActionScript which is multi-paradigm but supports functional concepts like higher-order functions, lambdas, closures, currying and since javascript 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.


I'm actually a little familiar with javascript since my Java course covered javascript/HTML for the it's last two months, i was never aware that JS contained functional elements. I'll look into Smalltalk, just to see how it's related to new OOP languages. Thanks

Looks like I'm going with Haskell and SQL. Thanks for helping :]

Share this post


Link to post
Share on other sites
Quote:
Original post by Rebooted
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?


There is no global state, there are no function calls, all operations are done through messages, and everything is a process (tens, even hundreds of thousand per processor are no problem), despite that, there are no synchronization primitives, and no multi-threaded programming issues.

Share this post


Link to post
Share on other sites
Quote:
Original post by Antheus
Quote:
Original post by Rebooted
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?


There is no global state, there are no function calls, all operations are done through messages, and everything is a process (tens, even hundreds of thousand per processor are no problem), despite that, there are no synchronization primitives, and no multi-threaded programming issues.

That's not quite true; Erlang has functions (it is a functional language after all). Data structures and functions in Erlang are not proccesses.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this