views:

1075

answers:

33

What is your favorite programming language? This is not the one you use at work, but the one you tend to use for personal projects... the one that you first go to because it most matches your way of thinking / programming style, etc...

List the reasons for it, too.

+15  A: 
Claudiu
+9  A: 

I use Java and Python at work, but I can't get away from the straight-up "enough rope" appeal of C

Draemon
+13  A: 

I've been loving Ruby lately for a lot of the same reasons you said you like Python (mainly the dynamic typing).

Chris Bunch
+3  A: 

Perl if I want to write something rapidly. C if I need speed, but it's usually much longuer to code.

stephanea
+3  A: 

I love to use prolog - the way it's been built and the idea of solving puzzles with logic expressions and chaining data staes is just fantastic - it really represents a challenge in terms of changing your approach into solving problems.

At work I use C# and lots of different frameworks and they seem just like food recipes to me (I mean, is the challenge just finding a recipe and following it through? Where is the fun in that?)

rshimoda
I'm looking forward to learning Prolog later in this semester. Our final project will be implementing a Prolog interpreter in Scheme. I hear it's the hardest four lines of code you'll ever have to write at my university =).
Claudiu
+1  A: 

Depends on what I plan to do. If I'm doing low-level systems stuff, I really like C. However, I'm turning more and more to Python, especially in instances where I'd normally use C (but don't really have to). Python maps easily to a lot of Unix/C stdlib functions, and I prefer to use Python when doing stuff where I don't really have to have low-level machine access.

I've also been using Ruby more and more for shell-scripting stuff, and I really like it, too.

mipadi
+3  A: 

My personal favorite is Boo. Targets .NET Framework and has a Python feel to it. Pretty mature for a "newer" open source language.

JTA
I've actually wanted to look at Boo for a while... it looks interesting.
Claudiu
It really is nice. Comes standard with the SharpDevelop (#develop) IDE.
JTA
+10  A: 

Scheme. It is extremely expressive, austere and--dare I say--beautiful. Its multi-paradigm approach doesn't force you into any single style of programming. If i need a stream-based solution, I cna build it. If it needs to be more java OO, that option is available to me as well. Hell, if needed, I could use a purely functional OO approach.

What I love most about my particular implementation (Gambit Scheme) Is that I can get as low level, or as high level as I like. I can drop into C if I need to, but then jump right back up to scheme.

Jonathan Arkell
Most schemes have pretty good ffi's, which means that you can drop to C all you want. (Hey, sounds like a hip-hop verse or something). Personally I like plt-scheme better for its all-roundedness and general momentum.
troelskn
I love gambit scheme as well.
Cervo
+3  A: 

C++ mostly because it's the language I'm most familiar with.

+5  A: 

Scala

Partly because I'm still learning, but mostly because it so easy to code in. As a Java developer it's a small step from what I know from work, but a big step in productivity and fun.

John Nilsson
+5  A: 

Javascript, hands down. It's fun, it's concise, it's powerful, and it's misunderstood. I'm the kind of person who loves the underdog, especially when the underdog is awesome.

eyelidlessness
You lost me on the "it's fun" bit. Do you find having teeth pulled out fun too? LOL.
David Arno
Well, it's the most fun I've had writing code. JS gets a bad rep because the DOM sucks, and because interop between DOM implementations sucks more, but that's not the language, that's an API entirely separate from JS.
eyelidlessness
Javascript itself (not the DOM) is kind of cool. Functions are really first class objects. And the fact that I can access object attributes as an associate array is also useful. I'm finding Javascript to be very LISPy.
Cervo
Amusingly, the two things I can think of that have clued the most people into how cool JS can be are both DOM libraries (Proto/jQ), but they make working with the DOM more *JS-like*.
eyelidlessness
+3  A: 

No one's mentioned PHP lately, and I gotta say, that's one that I've enjoyed. Want OO? You've got it. Don't want OO? You can go that way too. Data is fairly easy to deal with from the basic numbers up to complicated strClass and Objects. It talks with just about every database under the sun, and most web hosts provide it out of the box. You can make a little PHP, you can make a big PHP, or you can start with a number of frameworks or CMS (cakePHP, Drupal, etc) to allow you to create a large website easily.

John Fiala
+3  A: 

I've used a significant number of languages over the years on everything from microcontrollers to mainframes and in general favour the C-derivatives. I've been more than happy using C# for the past 8 years and it continues to be my language of choice. I use it at home as well as at work because I develop my personal projects to the same standards.

Steve Morgan
+3  A: 

In my work I use C#, but for having fun in home, I really like F#, Haskell and JavaScript...

Now I'll give a try to Nemerle, seems very interesting...

CMS
+7  A: 

Haskell. (Oh, wait, is it non-esoteric?)

Justice
It's pretty unknown, hehe... but I do believe it's not esoteric.
Claudiu
@Claudiu It's rather the other way around.
troelskn
Haskell is getting more known as I am seeing it pop up. I don't know much about it although it is being talked about more and more on digg, slashdot, etc.. I first heard about it when looking into PUGs, so that definitely helps its fame...
Cervo
A: 

I wish it was Python, but I always seem to fall back to C++, as it's the language I know best.

Chris Jefferson
+1  A: 

SISAL: (Streams and Iterations, Single Assignment Language)

The compiler out generates the parallelism inherit in the language and automatically exploits ALL the parallelism available to the processor. Very cool when you have 1K+ processors available.

Martin York
+9  A: 

Perhaps I will be the only one to say Digital Mars D.

It's like C++, but with all the frustrations removed, and lessons from C# and Java, but only the good lessons. And it compiles to byte code.

I've written a number of programs in it for my personal projects. And I've whipped them up so quickly I was scared about them. But it turned out they had hardly any bugs.

Walter Bright, the man behind the architecture of the language, wanted a language as powerful and performant as c, with object orientation, and was trivial to write compilers for. To me it seems he really succeeded. The Gnu D compiler was written very quickly, and is feature complete. Yet the code I can write feels in no way constrained relative to eg. c++, and people are still writing buggy compilers for that.

Max Howell
I've been experimenting with D lately, and I must admit that I agree with you. Once you get something compiled and working it works really well.
The Wicked Flea
+1 for D. Actually getting it to compile can be tricky at times, but it's definitely one of my favorite languages.
Ellery Newcomer
+6  A: 

If Common LISP counts as esoteric then I pick Python. I started playing with Perl maybe 6 or 7 years ago. I like most things about Perl except the object system (when creating my own objects, using objects is simple enough) and the fact that sometimes it can be hard to reread my own code. Python is much easier for me to read and understand even months later. The white space thing still bugs me from time to time. And it kept me from using the language at all at first. But compared to the strengths it is a minor annoyance at worst. The python object system is also much easier to use. And the support for runtime querying objects, getting/setting attributes, and calling methods is great and saves huge amounts of code.

If Common LISP is not esoteric. Then imagine garbage collector, ability to dynamically create new programming language constructs, and nearly the speed of C for compiled code all wrapped in one language. The more I use it the more I like it. I am still a newbie. But wow Lamda is all powerful. Local variables can be mimiced with lamda and delayed execution as in a stream can be done with lamda. Just wow..... It also includes hash tables (associative arrays), arrays, lists of course, etc. just like a scripting language.

Cervo
I don't think that Common LISP counts as esoteric at all. It hasn't been the dominant language at any point in history but the sheer genius of the language has always kept a fair number of people involved.
Mark Brittingham
+3  A: 

LISP. Any flavor. The syntax is so incredibly simple (some would say non-existent) that you can learn the fundamentals in a matter of minutes, but it has a depth that is just astonishing.

Although, to be honest, I've been picking up Python lately have been very pleased with it.

Ferruccio
A: 

C++. Sometimes Perl.

Paul Nathan
A: 

C++, 'cause it doesn't limit anything :-)

It doesn't let you extend the syntax of the language beyond simple text substitutions so easily. But I know what you mean by no limits.
Cervo
+3  A: 

Perl is my favorite "Getting Things Done" language. However, I'm now trying to transition to Groovy. Groovy is the dynamically typed language for Java programmers that runs on the JVM, and it integrates with all my legacy Java. An additional plus is Grails, which is the "Rails" framework for it.

I would recommend that any Java, C#, or C++ programmer learn Python, Ruby, Perl or Groovy. Any one of these languages will greatly improve your productivity. If you have time, learn a second so you don't become too religious about any one of them.

+2  A: 

I having a lot of fun with C# (at works and at home). Like it for personal project because it's fast for many project (little console application to winform or web) with the same language. I love it!

Daok
+1  A: 

Delphi

It has a syntax and semantics that seem to be from one mold. Other OO languages feel different in their OO part then in their procedural part (you can tell where K&R stopp and Soustroup starts). Or they have curly braces (they are special characters on the Swiss German keyboard using the Alt Gr key). Or they need to install a runtime interpreter (or whatever they call it). Or they have large runtime libraries in different versions.

Delphi is easy to learn, features a great IDE, generates fast and optimized code, doesn't trade speed for (most of the time not used nor usefull) portability, has a great component library and some great third party component providers.

With the newest version, modern language features have been included. And there is a community that is well alive.

Ralph Rickenbach
A: 

Python... I programmed primarily in C/C++ at work, with some Perl to facilitate the build process. Once I learned Python I haven't had as much use for Perl. I'm playing a bit with Ruby, as it has so much momentum for some good reasons.

Unless you're really held to a particular language, I'd recommend at least running though a tutorial on Python and Ruby.. they both have tutorials, and lots of free documentation online.

MattG
A: 

Python - Batteries are included. It's the only language where I actually feel comfortable trying something without delving deep into the documentation. It makes sense to me. I know it's been said before, but Python doesn't get in my way when I want to just code something up. I use IPython's shell and find myself doing all sorts of quick scripting from the interpreter as well as writing more complicated web scripts for the sites that I admin.

chauncey
A: 

I personally like Ruby

+1  A: 

What language I use for personal projects depends on the context. If it's a web project, Groovy/Grails (like Ruby/Rails, but without the constant breaking or spelunking into the innards of the framework). Perl still dominates in the world of system administration and command-line interfaces (Ruby sacrificed in this respect to be a more application-friendly language). For knocking out a programmatic demonstration of a mathematical or programming idea, I still use OCaml (implied static typing is awesome, and keeps me from having to write a million unit tests to make sure I didn't do typoes).

Of the three, OCaml matches my way of thinking the best: I had my mind warped by OCaml and never really recovered. Notably, I started my career doing C++ and Lisp (emacs hacking), yet it took OCaml for me to really grok functional programming. Also notable is that my undergraduate degree is in math, so OCaml's syntax was a lay-up for me.

Robert Fischer
A: 

For my dabbling I like working in Python and sometimes even awk (when I have a lot of record processing to accomplish) and wrapping it all up in a shell script.

Michael McCarty
+1  A: 

Io visit e.g http://www.iolanguage.com/

But I'm lucky I can choose whatever I like.

Regards Friedrich

Friedrich
A: 

When I really need to get something done, get it done NOW!, and not do it again any time soon, I will always fall back to shell+awk+sed or Perl. I don't really consider it programming, but it is how I tend to automate things. BTW, I'm a Mac OSX user with a long background in BSD.

If I am really going to be writing a utility that is somewhat complex (if I have to think about it), then I will probably be using Python these days. I have a number of reasons for my recent love of Python:

  • "Batteries Included" mentality - see python.org for more information about that one
  • Intuitive interpreter - "what methods are built into the string class?" -> "dir(str)" or "dir('')" or even "help(str)"
  • Introspection and how it is built into the language and environment. This is really my biggest reason for loving the language so much.

And if it is something that I might think about distributing to other geeks, then I will always fallback to C++ for a number of reasons:

  • "lingua franca" at least of my day ;)
  • Surprisingly portable for many things - no I don't do much GUI work
  • I know it very well and use it nearly every day
D.Shawley
A: 

Common Lisp and Haskell. I started playing with CL sometime back, but after a decade and a half of C, I found that I was still writing procedural code - thinking in C but writing in lisp syntax (damn that loop macro). So, I have started playing with Haskell to burn some FP into me ! If that doesn't do it, I don't know what will...

Gautham Ganapathy