views:

3595

answers:

42

What are some fun programming languages to learn and work with? I'm asking this for absolutely no practical purpose other than just to learn something new. So, what are some fun languages?

I already know Python and C# so those don't count (although Python would probably be the first language I'd recommend). I've spent some time with Ruby, but I don't really see anything that's a whole lot different from Python.

(and no, I'm not going to learn Intercal or Brainf*ck before you mention it)

+3  A: 

REBOL:

http://www.rebol.com

BobbyShaftoe
Ellery Newcomer
I'm a big fan of REBOL and am strongly looking forward to R3.
Gregory Higley
+12  A: 

Redcode: A language for a game about programming. More info here.

Jim Nelson
+3  A: 

how about ruby, it's fun and easy to learn.

http://www.ruby-lang.org/en/ http://jpz-log.info/archives/2007/10/11/ruby-fun-with-rinda/ http://www.dr-chuck.com/csev-blog/000355.html http://en.wikipedia.org/wiki/Ruby_(programming_language)

melaos
He has already tried ruby!
+5  A: 

It's going to depend on what kind of work you do, but I think RobotBASIC is a fun language to learn. It's really more for simulations than for serious work.

If you want something that you can have fun with and you might do some work with I suggest you take a look at Processing.

Bill the Lizard
It's really not for anything in particular. I just wanted to get some new things to try out for the sheer heck of it.
Jason Baker
+1 for Processing
walkytalky
+14  A: 

I always thought Prolog was fun. At least it's different.

Guge
Prolog is very different and very fun.
Kaleb Brasee
Fun as in "How many prolog programmers does it take to change a lightbulb?" (http://stackoverflow.com/questions/234075/what-is-your-best-programmer-joke/234457#234457)
Anax
While working for a major company, I once wrote a sizeable *non-AI* program in Prolog as a proof-of-concept (a business application associated with making sure all the steps were complete and in order in a workflow). It was an odd experience; in fact, it was one of my first professional programming jobs. Prolog actually turned out to be quite a good language for the task. The main thing that hampered it going forward was the general lack of software modularity in the Prolog systems at the time.
TechNeilogy
+24  A: 

Lua because it is fun, simple, has great data structures, good string processing, and you can master the entire language and libraries. Nice interactive interpreter will have you started in minutes.

Haskell because it is chock-full of great language ideas that are so powerful and mind-stretching it will make your head explode. Also has interactive interpreter and great native-code compiler as well.

You can get started in Lua just with what's on the web site and especially Roberto's book on Programming In Lua. Getting started in Haskell is harder but I recommend the web site, the #haskell IRC channel, and a paper by John Hughes called Why Functional Programming Matters.

Norman Ramsey
+1, lua never gets enough consideration
RCIX
+1 for Haskell.
outis
+1, haskell AND lua are GREAT WONDERFULL languages =)
Alessandro Stamatto
I'm not sure you'll find Lua a significantly different experience from Python or Ruby. Haskell, on the other hand...
Owen S.
Don't forget http://learnyouahaskell.com/, which I'm working my way through right now.
theIV
+19  A: 

Common Lisp, because enlightenment is fun. ;oP

Svante
Getting started in CL can be tough, but once you get the environment up and running, it's a blast. Get as far as being able to read Paul Graham's _On Lisp_ and I think you'll be a very happy camper.
Owen S.
+7  A: 

For maximum fun, pick something very different from what you know. For example, a functional language. I recommend Clojure.

Brian Carper
+15  A: 

Javascript! The king of programming languages!

Pablo Marambio
isn't that a scripting language?
Pim Jager
oh no its not...javascript is a Programming Language
Andreas Grech
Pim: scripting languages are a subset of programming languages
Jimmy
JavaScript is a lot of things. It can be used to make fun programs. The language itself is not what I would call fun, though. Thats just my opinion.
TokenMacGuy
@TokenMacGuy, I'd say that browser implementations are not fun, especially the DOM API. Not the language itself.
Ionuț G. Stan
very fun language, functional programming facilities make javascript development enjoyable.
Alexandre C.
jQuery is, actually, really fun :)
Erik Escobedo
+48  A: 

LOLCODE. How can you not love a language which has the following Hello World:

HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE

It's really hilarious. Technically it's just another procedural language (JAPL?), but I think any developer will laugh his hat (ahem :) ) off as he delves deeper into the language.

There's even Lolcode.Net!

maayank
+1, especially because Lolcode is actually a full-fledged language.
Michael Stum
ROTLMAO! Wow ...
BobbyShaftoe
I love LOLCODE! +1
Pim Jager
I saw a proof of LOLCODE working as a BRAINFUCK interpreter, proving that it is a fully turing complete language, since it can parse and run programs written in another obscure complete language.
Karl
I've even seen debugging support in Visual Studio :-)
Joey
+3  A: 

I spent a little time over Thanksgiving re-familiarizing myself with Haskell, and it was surprisingly fun. Each little function is like a puzzle, and picking which functions to write is another layer of puzzle. Great stuff.

Rich
+1  A: 

I am in a similar situation as I use C# and Ruby most frequently. I've decided to learn a functional language in 2009 (as others have recommended). My flavor is Erlang.

Jamal Hansen
+6  A: 

Perl 6

Many of the features of Perl, only better designed.

Brad Gilbert
I've always wanted to learn a stillborn language!
Jason Whitehorn
There has actually been a lot of work that has gone into Perl 6 http://stackoverflow.com/questions/1572704/The-future-of-Perl-Perl-6-employability
Brad Gilbert
O lot of work has been put into Duke Nukem Forever too...
Decio Lira
+6  A: 

If you're looking to get out of your comfort zone, but want to learn something that has some practical value, consider learning Haskell, Forth, or a hardware description language such as Verilog or VHDL.

Haskell for a pure functional language with modern syntax. It eliminates the sometimes-annoying parentheses of LISP syntax, gives you a lot more modern functional programming language features, but it also allows no side effects -- thus enabling lazy evaluation.

Forth for one of the only really successful low-level/embedded-systems programming languages after C and assembly languages. Which can express very high level ideas concisely, but usually with arcane trickery.

Verilog/VHDL for a taste of languages that model inherently parallel processes. See http://www.fpga4fun.com/ for some starting points. (The common use of such things is to create designs implemented in FPGAs or ASICs.)

A little closer to your comfort zone: Have you spent much time with C or C++? (I'd recommend C++ and judicious use of the STL, even if you're not going for highly-OOP design, because it's nice to have some useful, well-tested container classes on hand.)

mmagin
+1 - Someone actually mentioned Forth! I found learning Forth useful in understanding stack math.
sheepsimulator
+3  A: 

Whitespace, making the often ignored important (e.g. spaces, tabs and newlines)

Ken I.
+1  A: 

Played around with Rhino today. I am glad I spent the time.

Nathan Powell
Rhino is a JavaScript/EcmaScript implementation in Java.
fortran
+8  A: 

Logo!!, I think this was my first programming language. I sucked at it, lol.Gee, it was about 15 year ago. Want to try it again sometimes,though.
Currrently lots of implementation, ucblogo,aucblogo, elica just to name a few.

mhd
+5  A: 

Don't forget Brainfuck!

sli
+1  A: 

D. (At least compared to java)

Ellery Newcomer
+1  A: 

I'm sure a lot of people will disagree with me here, but I really like working with PHP.

One of the reasons I find PHP so enjoyable is not only is it free and connects very easily with MySQL, there are a ton of different projects (PHPBB, MediaWiki, SugarCRM) and code samples out there that people have created.

But I think the funnest language to spend time with is JavaScript as it's everywhere and is the default language for the web.

Ryan Smith
+2  A: 

How about a few Domain Specific Languages that, in fact, are powerful enough to be considered also General Purpouse Languages?

  • R, it seems a very beautiful object oriented language, with algebraic types (there are rings, fields, etc.).
  • Octave or Scilab, if you think everything is a matrix, then that's your language!
  • Maxima, a symbolic language implemented on top of Lisp.

Each one of those is focused in a specefic field of mathematics (statistics, numerical analisis and symbolical algebra respectively), so are very useful in many real situations.

(If some purist argue that those are not strictly languages but software packages with a scripting language bundled, please forgive me).

fortran
+3  A: 

I suggest you LambdaMOO. It's an object oriented language built on top of a object oriented database. The fun comes by the fact that LambdaMOO is a MOO, so you can actually program and let people play a text-based virtual reality system

Stefano Borini
A: 

I've recently been having a decent amount of fun with OCaml. Sure it has its warts, but it's actually a pretty good language overall.

Jason Baker
If you want a wart-less OCaml, try F#
RCIX
+3  A: 

I'm having lots of fun with J, an APL-inspired language. It's one of the most foreign-looking languages you'll ever see (disregarding languages which aren't meant for real use like Malbolge).

ephemient
It's also great for winning code golf.
outis
+1  A: 

If you want something new, which is completely different than python, C/C++, Java, etc... I recommend you Haskell which is a functional programming language.

http://www.haskell.org/

Phong
It's Haskell, not Haskel.
trinithis
@trinithis: thx, corrected
Phong
+4  A: 

Scala is fun. It has enough functional constructs to guide you into programming functionally, but also provides a great OO background as well. It's actually more OO than Java, since it uses no primitives.

Kaleb Brasee
+1  A: 

You might look at this a different way as well. Perhaps you might simply want to try some new programming challenges like http://projecteuler.net or http://topcoder.com. Do a couple in your language of comfort then, try hitting it with a functional one.

project euler especially will teach you how much less memory primitives types take than auto boxed ones. I found this out trying to do some groovy work, which was treating some of my variables as bigdecimals (my fault)

To directly answer the question

groovy: http://groovy.codehaus.org/

scala: http://www.scala-lang.org

Nathan Feger
+3  A: 

Err....I really like F#. It's like OCaml with nice editor support(VisualStudio)....plus, you may end up actually end up using it for work!

That and/or Common Lisp, I suppose. Compilers written as CL macros are pretty mindblowing.

Michael Kohout
+2  A: 

SmallBasic. Has a lot of features to make simple things fun! Has things like Flickr access, a LOGO turtle, and lots more!

RCIX
+3  A: 

I don't know what fun is supposed to mean, but haXe can be fun programming in. http://haxe.org

Cristi Băluță
A: 

My usual recommendation for this sort of query is Icon (or Unicon - this is a superset of the language that adds things like POSIX calls, ODBC and quite a few other things). The official Icon documentation has an excellent tutorial in it.

Some of the beauty of Icon/Unicon is the goal-directed evaluation, the success-failure model and the pervasive generators. If you are familiar with them in Python, you can get to see the language that inspired them!

staticsan
A: 

Fun and humorous are not the same. That would rule out LOLCODE and other jokes. I think programming was mostly about fun... used to be. Now it's more about a search for the holy grail and that's not fun at all. At least that's what it turned out for me. I hope this thread will help put me back on the "right" track, as I am looking for fun too.

rolfen
http://xkcd.com/353/
Wayne Werner
A: 

The IO language:

http://ozone.wordpress.com/2006/03/15/blame-it-on-io/

Erik
+4  A: 

If you're only interested in the actual language, Haskell or Lisp have already been suggested and offer a different way of thinking. But it might be worth considering something where the language isn't really different but the context is, such as Arduino -- C, more or less, but specifically tailored for programming the Arduino microcontroller board.

Writing code that actually does real physical stuff in the world can definitely be a fun change from the sometimes arid experience of working entirely inside a PC.

walkytalky
My first experience with making my code affect the "real world" was programming for a [FIRST robotics](http://en.wikipedia.org/wiki/FIRST_Robotics_Competition). I had a lot of trouble getting it at first, but at some point something clicked—and it was one of the coolest experiences. It's definitely a subfield of programming I wish I knew more about. +1
Antal S-Z
+1  A: 

Oh darn someone beat me to LOLCODE :P

Well, if you like Python and you're interested in LOLCODE, my favorite implementation of it is LOLPython :D

http://www.dalkescientific.com/writings/diary/archive/2007/06/01/lolpython.html

Another language I'd recommend is Smalltalk. The granddaddy of OO. :D

townsean
A: 

I had a lot of fun with Forth back in the day. It's at least different.

David Thornley
+4  A: 
I like [Chef][1] as well because it looks awesome. E.g:

Hello, world! Souffle.

   Ingredients.
   72 g haricot beans
   101 eggs
   108 g lard
   111 cups oil
   32 zucchinis
   119 ml water
   114 g red salmon
   100 g dijon mustard
   33 potatoes

   Method.
   Put potatoes into the mixing bowl.
   Put dijon mustard into the mixing bowl.
   Put lard into the mixing bowl. 
   Put red salmon into the mixing bowl.
   Put oil into the mixing bowl.
   Put water into the mixing bowl.
   Put zucchinis into the mixing bowl.
   Put oil into the mixing bowl.
   Put lard into the mixing bowl.
   Put lard into the mixing bowl.
   Put eggs into the mixing bowl.
   Put haricot beans into the mixing bowl.
   Liquefy contents of the mixing bowl.
   Pour contents of the mixing bowl into the baking dish.

   Serves 1.

And for the same reason: Shakespeare:

The Infamous Hello, world! Program.

Romeo, a young man with a remarkable patience.
Juliet, a likewise young woman of remarkable grace.
Ophelia, a remarkable woman much in dispute with Hamlet.
Hamlet, the flatterer of Andersen Insulting A/S.


                   Act I: Hamlet's insults and flattery.

                   Scene I: The insulting of Romeo.

[Enter Hamlet and Romeo]

Hamlet:
 You lying stupid fatherless big smelly half-witted coward!
 You are as stupid as the difference between a handsome rich brave
 hero and thyself! Speak your mind!

 You are as brave as the sum of your fat little stuffed misused dusty
 old rotten codpiece and a beautiful fair warm peaceful sunny summer's
 day. You are as healthy as the difference between the sum of the
 sweetest reddest rose and my father and yourself! Speak your mind! 

 You are as cowardly as the sum of yourself and the difference
 between a big mighty proud kingdom and a horse. Speak your mind.

 Speak your mind!

[Exit Romeo]

                   Scene II: The praising of Juliet.

[Enter Juliet]

Hamlet:
 Thou art as sweet as the sum of the sum of Romeo and his horse and his
 black cat! Speak thy mind!

[Exit Juliet]

                   Scene III: The praising of Ophelia.

[Enter Ophelia]

Hamlet:
 Thou art as lovely as the product of a large rural town and my amazing
 bottomless embroidered purse. Speak thy mind!

 Thou art as loving as the product of the bluest clearest sweetest sky
 and the sum of a squirrel and a white horse. Thou art as beautiful as
 the difference between Juliet and thyself. Speak thy mind!

[Exeunt Ophelia and Hamlet]


                   Act II: Behind Hamlet's back.

                   Scene I: Romeo and Juliet's conversation.

[Enter Romeo and Juliet]

Romeo:
 Speak your mind. You are as worried as the sum of yourself and the
 difference between my small smooth hamster and my nose. Speak your
 mind!

Juliet:
 Speak YOUR mind! You are as bad as Hamlet! You are as small as the
 difference between the square of the difference between my little pony
 and your big hairy hound and the cube of your sorry little
 codpiece. Speak your mind!

[Exit Romeo]

                   Scene II: Juliet and Ophelia's conversation.

[Enter Ophelia]

Juliet:
 Thou art as good as the quotient between Romeo and the sum of a small
 furry animal and a leech. Speak your mind!

Ophelia:
 Thou art as disgusting as the quotient between Romeo and twice the
 difference between a mistletoe and an oozing infected blister! Speak
 your mind!

[Exeunt]
Roflcoptr
Oops, you beat me to it with Shakespeare!
Mark Peters
+1  A: 

QBASIC

It's good stuff. :-D

Brad
A: 

Both have already been mentioned, but I'd go with F# and/or Forth. Both will force you to think about old patterns and solutions in new ways. F# is probably more useful and convenient if you work with a .NET-based system. Forth is kind of fun because, once you learn a bit about it, its core is simple enough that you can write your own forth interpreter using C# or some other language.

TechNeilogy
A: 

Well, if you want fun (and an awesome language), you can learn Python. If you want fun (imported from python) and funny, try Like, Python:

 #!usr/bin/python
 uh from sys import exit

 # Grab the user's name. 
 ok so like name = raw_input("yo! what's your name?" ) right

 # Make sure they entered something, then say hi.
 if name.strip() is actually like "":
     toootally just exit()
 else:
     um yeah
     print like "Hi %s, nice to meet you." % name
Wayne Werner
A: 

Befunge: http://en.wikipedia.org/wiki/Befunge

trinithis
A: 

Ignoring joke languages like LOLCODE and (my personal favorite) INTERCAL, I'm a big fan of paradigm languages, ie languages that are about as pure for their paradigm as you can get, and still be moderately useful...

So, I really enjoyed learning smalltalk. (it doesn't have an if-statement!) and Scheme is a lovely dialect of lisp. (Clojure may be better now adays, i'm woefully out of date...)

Basically any language that won't LET you program in the same way that you're used to, so it forces you to think in a new way.

Brian Postow