F# (aka F-Sharp, now part of VS2010) has a lot of features you may find worth looking at. Taking a quote from the F# At Microsoft Research page:
F# developed as a research programming
language to provide the much
sought-after combination of type
safety, succinctness, performance,
expresivity and scripting, with all
the advantages of running on a
high-quality, well-supported modern
runtime system. This combination has
been so successful that the language
is now being transitioned towards a
fully supported language on the .NET
platform. Some of the reasons for this
move are that F# gives you:
- succinct, type-inferred functional programming,
- interactive scripting like Python and other languages,
- the foundations for an interactive data visualization environment,
- the combination of type inference and safety, like that of ML,
- a cross-compiling core shared with the popular OCaml language,
- a performance profile like that of C#,
- easy access to the entire range of powerful .NET libraries and database
tools,
- a foundational simplicity with similar roots to Scheme,
- the option of a top-rate Visual Studio integration, which is usable
with the freely available Visual
Studio 2008 Shell
- the experience of a first-class team of language researchers with a track
record of delivering high-quality
implementations,
- the speed of native code execution on the concurrent, portable, and
distributed .NET Framework.
The only language to provide a
combination like this is F#
(pronounced FSharp) - a
scripted/functional/imperative/object-oriented
programming language that is a
fantastic basis for many practical
programming tasks.
Some of the things you may find interesting include:
- It can infer types, which means you need to specify type information very infrequently so it looks like script, but the resulting code ends up typesafe and fast.
- It automatically detects when it can generate "generic" code to operate over multiple datatypes.
- It does not require everything to be in a class - stand alone functions are well supported.
- It has both a command-line REPL and integration with Dev Studio which allows selecting snippets of code and executing them in a hosted REPL.
- Many concepts can be expressed very succently, due in part to higher-order functions like filter, map, and reduce for lists and sequences.
- VSLab, an interactive graphing plug-in for VS2008 (with VS2010 soon), similar to MATLAB and Mathematica.
Once you get over the "it's not C" syntax, you can write code pretty darn quickly and with typically fewer bugs (less code + type inference + higher order functions = fewer bugs).
The syntax is not as forgiving as, say, JavaScript (in fact, sometimes it can be frustrating, as can any language). But, for most simple things its rather straight forward.
let a = 1 // bind 1 to identifier a
let b = a + 1 // bind function which adds 1 and a to b
let s = "Simple add" // bind string to identifier s
printf "%s: %i %i" s a (b 1)
It has higher-order functions, pipelining, and lambdas, which means data transformations on sequences are a breeze:
[ 1; 2; 3; 4; 5; 6 ]
|> List.map (fun a -> a + 1) // add +1 to every item in the list
|> List.reduce_left (fun a b -> a * b) // Multiply all the elements together
Or, when you get good, write it even more succently:
[ 1; 2; 3; 4; 5; 6 ]
|> List.map ((+) 1)
|> List.reduce_left (*)