• 13
• 18
• 19
• 27
• 10

# I'm looking to learn a new language - something "different"

This topic is 3758 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Hi, I come from a background that started with some BASIC languages, and has been predominantly C, C++ and C# for the past 3 years. Recently I've been dabbling in Python and really like this language and it's dynamism, and it's made me think that I really need to start looking in to other programming languages and paradigms. At the moment SmallTalk is really taking me, but I haven't started any work with it yet. I did a reasonable amount of work with Objective-C (4-5 months; enough to get a nice feel for the language) and really liked it. However, Objective-C seems based on SmallTalk - so I'm not sure I'll get much from learning SmallTalk as well. I've seen a lot of interest around Erlang and Haskell recently, and haven't touched either of these languages. Does anyone have any suggestions? Look forward to hearing what you suggest!

##### Share on other sites
Haskell is gorgeous (although monads mess with my mind, at least, and the information on them is spread fairly thin).

I think it's improved my programming considerably.

##### Share on other sites
Erlang or Ruby.

Erlang- functional, cool concurrency, pragmatic
Ruby - smalltalk-y, encourages meta-programming

##### Share on other sites
Interesting to see Ruby there, I thought of it as just another python-copy language. How wrong am I it seems :) I will look into Ruby more (more than just that poignent guide, that is).

Thanks for the feedback about Haskell too - I've heard about the pains of monads... learning them is going to be fun :P

##### Share on other sites
Monads are no harder to understand than pointers, or recursive functions, or any other programming concept. They are just "different" - exactly what you are looking for!

I tried learning haskell several times, each time giving up, before finally actually getting that "aha" moment that people talk about, the moment where something switches in your mind and changes the way you think about programming. I had been programming in various languages for several years, but in that moment I was hit with the understanding that programming can be so different! That there is this huge world of programming ideas that 99% of programmers aren't even aware of. I felt the same kind of excitement that I felt the first time I programmed in qbasic and made a pixel animate across the screen.

Haskell is the most powerful language there is
• . It is also one of the simplest, with only a handfull of keywords, and no builtin types. It's syntax is elegant and readable. It's my favorite language.

By the way, you can do lots of interesting things in haskell, without using monads!

• Apart from the more extreme academic languages, which aren't yet "practical"

##### Share on other sites
I'll throw in a vote for Erlang, especially if you're working on applications which require a lot of concurrency or network stuff. For these types of applications I'd not consider using anything else anymore - Erlang is just too awesome.

##### Share on other sites
Assembly!

Yeah baby :P

FlyingIsFun1217

##### Share on other sites
APL, J, or K. J is probably easiest for you to get your hands on.

Loopless programming is going to blow your mind much, much more than 'monads'. And tacit programming? Yikes.

Example:
quicksort=: (($:@(<#[) , (=#[) ,$:@(>#[)) ({~ ?@#)) ^: (1<#)

Exactly.

But if not, then I would go with Erlang or Ruby. I have always enjoyed Ruby's meta programming abilities, though it truly is horribly slow. Erlang is nice, if you don't already know another functional language. If you do, then just learn Erlang's message passing structure. Learning the actual syntax probably isn't as important, IMHO.

##### Share on other sites
I vote for a functional programming language too. I only used Standard ML and OCaml (wich are very similar) so perhaps there are better/nicer alternatives out there. I add that I didn't liked them much (I wouldn't like a job that asked me to use them, nor I would use them for my personal projects, unless they really were the better choice) but being forced to use recursion everywhere is a good training. I suppose that they improved my programming a lot.

##### Share on other sites
Quote:
 Original post by visageAPL, J, or K. J is probably easiest for you to get your hands on.Loopless programming is going to blow your mind much, much more than 'monads'. And tacit programming? Yikes.Example:quicksort=: (($:@(<#[) , (=#[) ,$:@(>#[)) ({~ ?@#)) ^: (1<#)Exactly.
Bugger that! Talk about cruel and unusual punishment!

Well if you want to broaden your paradigms experience then you almost certainly have to jump into using Prolog, or even Mercury.