Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

As an opposite of Which programming language do you really hate?, whats your favorite programming language to work with? What is the one programming language that you get somewhat excited for if a new project comes up that uses it?

Before you say "The best language for the task", thats not what I meant. We all like a language, this is simply asking for that. This is not about what task it would be used for


I can't believe this hasn't been asked before

share|improve this question
5  
Poll questions work better in this system if they're community wiki. – David Thornley Sep 23 '10 at 22:03
1  
@David: No, not really. meta.programmers.stackexchange.com/questions/8/… – TheLQ Sep 23 '10 at 22:04
4  
If there were ever a question that's too subjective, even for Programmers, this would be it. I'm rather disgusted that someone has earned 200 rep points just for posting "C#" and a generic placeholder comment about how great it is (one that could easily be substituted for any other language.) – Aaronaught Sep 24 '10 at 14:22
8  
The reason for CW for poll questions is to cut down on the rep-whore abuse that can happen. Polls in this system work best if one person gives one answer ("LOLCODE!") and other people vote it up. Without CW, that one person stands to rake in a lot of rep just for being the first with the popular choice, while others are tempted to post their own identical answers rather than upvote somebody else's. – David Thornley Sep 24 '10 at 14:50
1  
@Nick: That is incorrect. No one earns reputation on questions that were started as CW. Already-submitted answers only become CW if a moderator converts the entire beast. And is it any surprise that the answerers aren't rushing to convert their answers to CW? – Aaronaught Sep 25 '10 at 13:38
show 8 more comments

closed as not constructive by ChrisF Dec 28 '10 at 14:35

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or specific expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, see the FAQ for guidance.

44 Answers

1 2

Python

A great scripting and prototyping language.

share|improve this answer
4  
I don't particularly care for Python. It always seems to get in the way of me getting things done. – Paul Nathan Sep 23 '10 at 22:18
15  
Fighting whitespace indentation, immutable types having to be indexes into dicts, inflexible importing structures, everything being references, loops cloning references in lists, lack of enum type - I could go on. But those are the ones off the top of my head. – Paul Nathan Sep 23 '10 at 22:47
2  
The best of the dynamic scripting language family, but I'm more of a static typing fan. – romkyns Sep 23 '10 at 22:50
4  
@Paul: Don't know what you'd fight, I indent all my other languages like I would in Python (maybe that's just me). What's inflexible about importing (just don't understand this one)? "Loops cloning references" (no idea what you mean)? Use unpacking (A, B, C = range(3)) or other ways (such as import itertools; next_id = itertools.count().next; A = next_id(); B = next_id(); C = next_id()) for enums. – Roger Pate Sep 27 '10 at 12:38
2  
I've never learned python, but I've modified and extended python scripts about a dozen times. There is a lot to say about a language that is productive for someone who doesn't really know the language and is just guessing on what should work to change something. – sal Nov 19 '10 at 21:23
show 3 more comments

C#

I have enjoyed programming since I was little, but I genuinely believe that ever since I know C#, it has become even more fun, and going back to anything inferior now would be painful.

share|improve this answer
11  
I would enjoy C# fine if it weren't for blasted Visual Studio. – Jon Purdy Sep 23 '10 at 21:38
42  
@Jon I mainly enjoy C# because of the wonderful Visual Studio. – romkyns Sep 23 '10 at 21:50
6  
@this.Daniel: I can deny that. VS is painful to work with because it's missing so many features, both in the editor and the debugger, that I tend to take for granted and rely on in Delphi. – Mason Wheeler Sep 23 '10 at 22:21
9  
@this.Daniel: I'm serious, though I'm the opposite of @Mason Wheeler. Give me a console and a plain old editor with syntax highlighting and I'm happy. Huge development environments with loads of features may be great for a lot of people, but I've learned that it's best for my psychological well-being if I avoid fighting an editor that wants to do more things for me than there are options I can disable. – Jon Purdy Sep 23 '10 at 22:33
8  
And lambdas/LINQ/the whole functional bit is my favourite part of C#. – Callum Rogers Sep 23 '10 at 23:42
show 31 more comments

C++

The most flexible language for multiple abstraction levels ranging from bit-level drivers to large-scale software systems.


I am enjoying watching the votes go up and down here.

share|improve this answer
12  
The most dangerous language in the world, and the greatest progress-stopper. – Timwi Sep 23 '10 at 21:51
7  
C/C++ is such a bluntly portable language. You can create a codebase that can compile anywhere for anything provided the hardware can stand it. Not like Java where there's the promise of automatic portability but filled with exclusions. – Schnapple Sep 23 '10 at 22:38
4  
@Schnapple anyone who has really tried to do what you describe knows it's not at all as trivial as you seem to be implying. It requires massive expertise - so much in fact that most people's only chance is using proven portability layers. – romkyns Sep 23 '10 at 22:42
10  
@Timwi But C++ never made any promise of safety, portability, or of a great programming experience. Java did all those, and now college students learn a language that requires you to use anonymous classes in place of function pointers. The fact that most serious programmer's first language is a language that embraces OO and nothing else (and that has the wrong kind of language support for threading, synchronized I'm looking at you), if "progress" can be defined as trying new things and succeeding, is certainly making Java more worthy of the title "progress stopper" than C++. – zneak Sep 27 '10 at 20:15
11  
C++. All the advantages of a highly expressive language, with all the disadvantages of a highly expressive language. It's dangerous, but awesome. Every time I program in another language, I end up wishing for something from C++. – Kaz Dragon Oct 6 '10 at 15:41
show 11 more comments

Delphi

It's the standard, imperative, object-oriented paradigm that most coders are familiar with, but it gets all the little details right that the C family always gets wrong. Plus the more recent versions have started to add support for mixing in functional programming concepts, without running into the ugly abstraction inversions that typically come with functional languages.

For all these reasons too.

share|improve this answer
7  
Can you give an example of such an abstraction inversion? (No, I'm not trolling.) – Frank Shearar Sep 24 '10 at 11:30
9  
@Frank: Wow, where to start? OK, in Haskell, doing things as fundamental as IO and state management, the entire point of using a computer at all, requires the use of monads, horribly complicated abstraction inversions that nobody understands. That's probably the most infamous example, but really, anywhere and everywhere an abstraction exists that you cannot get underneath of when needed. How many functional languages offer access to the power of inline assembly, for example? How many allow you to control the lifespan of your objects deterministically? – Mason Wheeler Sep 24 '10 at 13:07
8  
Delphi also admits a lot of low-level fun for those who like that. For instance, you can play as you wish with pointers, play around with the heap manually, use the native Windows API, and inline ASM code and write pure ASM functions/procedures. – Andreas Rejbrand Sep 24 '10 at 21:38
14  
6  
So, this has got to be the awesomest community ever. Can't wait till someone asks "Is Delphi Dead?" and the dam bursts on 'em. – Peter Turner Oct 6 '10 at 4:08
show 15 more comments

Java

anyone?

share|improve this answer
9  
Yes. I like it quite a bit, and "stability and availability of libraries for just about everything" counts for something in my book, as does "really works just about everywhere". – Dean J Sep 24 '10 at 3:39
1  
I wouldn't expect many upvotes on this one. It's not trendy enough to catch the interest of the facebook/twitter generation. – haploid Sep 27 '10 at 1:19
5  
Excellent choice for the large Enterprise style apps that I'm doing these days. Run on all kinds of platforms, drop thick-client code right into web apps, etc. Big fan of it and truly appreciate the write once run anywhere that really does work. Back when I was writing smaller, more trivial apps, I wouldn't have been able to appreciate it like I do now. – Brian Knoblauch Sep 27 '10 at 17:56
2  
It is nice that everything in the runtime library is specified to details. Not much guessing how things work. – user1249 Oct 23 '10 at 10:17
2  
+1, actually i like java because of eclipse – tactoth Oct 28 '10 at 5:46
show 5 more comments

C

(not C++)

Just simple and elegant, but still powerful. C++ is just a mess.

share|improve this answer
10  
I would like to upvote C, but I don't because of the attached C++ rant. – Lorenzo Nov 19 '10 at 19:34

Lisp

The classic language family for handling the most complex abstractions we know of. Most influential language for modern dynamic languages.

share|improve this answer
1  
And now the obligatory xkcd.com/297 . Lisp does have though an interesting way to look at syntax – TheLQ Sep 23 '10 at 21:57
2  
@Joel: The LOOP construct would like to chat... out back. – Paul Nathan Sep 24 '10 at 16:49
1  
@Leonardo: Yes, well, Wall's taste in code appearance produced Perl, so I don't think there's a lot of room for dogmaticism there unless one really likes variables named $/. :-) – Paul Nathan Jan 28 '11 at 17:08
show 2 more comments

Haskell

It's so elegant.

When I first started to learn it, it broke my brain. As I've continued to learn it, rebuilding my brain to work with Haskell has been a great amount of fun.

Functional programming is a great tool to add to my set, and Haskell's type inference system makes thinking about how to write functions a dream.

Currying, list comprehensions, infix operators, etc., (when I finally get monads, them too!) there's so much to like about it.

It's my first real introduction to functional programming and I can't get enough of it.

share|improve this answer
show 4 more comments

JavaScript

You can do some really fun things JavaScript, and the language itself it pretty brilliant. The whole prototype system, where you can alter how functions work at run time makes the possibilities endless.

share|improve this answer
4  
Pretty simple and powerful, yet I'm unhappy whenever I'm forced to use it. – Brian Knoblauch Sep 27 '10 at 17:58
1  
Really powerful and flexible, I enjoy programming with it. – ncardeli Oct 16 '10 at 17:43
show 1 more comment

Ruby (1.9)

I'm just starting to learn it, but it is the most interesting language I have ever worked with. (In the past, I have used FORTRAN, SNOBOL4, PL/I, C, Lisp, Pascal, C++, Perl, PHP, Java, Delphi, JavaScript and C# in pretty much that order.)

share|improve this answer
5  
Why the version number? Is 1.9 so magnificently better than the previous versions? – Rene Saarsoo Sep 24 '10 at 12:32
2  
Not a big fan of Ruby. It just doesn't have the fun factor that other languages have for me. The fact that I don't really like Rails (the way I work it feels kind of clunky bouncing around between so many source files all the time) surely impacts my feelings about Ruby too. – Brian Knoblauch Sep 27 '10 at 17:54
show 8 more comments

PHP

It's a love/hate relationship. Overall PHP is loosly typed, quick and dirty language. I like it because it's quick to learn, easy to put something out, and if a decent framework or coding convention is used it can be easy enough to maintain. Plus PHP web servers are cheap.

PHP is also widly hated

share|improve this answer
1  
I'd also add the one thing that PHP has going for it, despite it's flaws, is it's ubiquity these days. There are a ton of libraries & frameworks available in the language, and a lot of jobs out there for it. If you work it web development, I think it's a must-have tool to have in your arsenal, even if it's not your best one – GSto Oct 6 '10 at 13:02
show 1 more comment

My favorite programming language is Scala - Pure awesomeness!

alt text


Reasons:

  • Elegant and seamless unification of object-oriented paradigm and functional paradigm.
  • Seamless Java interoperability. You can access any Java library easily from a Scala program in a fairly straightforward way.
  • Pure OO. No more primitives and statics.
  • Powerful type inference.
  • Lambda expressions.
  • case classes. Boilerplate is yesterday's news now!
  • Properties. Like in C#, just a bit better.
  • Mixin composition, made possible by cool class-like devices called traits.
  • Self-type annotations. (No more 3rd party frameworks for DI!)
  • Uber-powerful static type system.
  • Ease of creating internal DSLs. (thanks to the extremely flexible syntax of the language)
  • Ease of creating external DSLs. (thanks to the beautiful parser combinator library)
  • Type-classes, an ad hoc polymorphism device from the world of Haskell.
  • Pattern matching.

... the list goes on and on!

I just can't stress enough how goddamn awesome this language is!!! :-)

share|improve this answer
show 1 more comment

Perl

The classic Unix sysadmin tool. Works great. Has the greatest potential for compiling correctly when your cat sits on the keyboard of any known language besides J.

share|improve this answer
3  
Provided that the last key the cat types is a semicolon... – mouviciel Sep 24 '10 at 11:17
1  
@ Mark C: If I understand it correctly. They've named a file monitoring.sh, and .sh a file extension commonly associated with bash. However, bash scripts (when run on Linux) use whichever interpreter is specified by the hash bang statement at the top of the script, which in this case is perl. – Matt Ellen Oct 12 '10 at 13:47
show 3 more comments

D

I don't use it on actual projects. Strictly on technical issues, features, syntax, semantics, etc. D is the best for me.

share|improve this answer
2  
+1 for D. The C++ done right! :-) – missingfaktor Oct 17 '10 at 6:37
show 1 more comment

I can't believe no one has said this yet...

LOLCODE

share|improve this answer
8  
IM UPPIN YR VOTE KTHXBYE – Dan Moulding Oct 23 '10 at 0:46
show 7 more comments

Scheme

An alternative Lisp. My preferred implementation is Guile.

share|improve this answer

Go

For systems programming. It's especially good for concurrent software system.

share|improve this answer

PROLOG

  • Code as data, data as code.
  • Multi-use procedures (*).
  • Head/tail recursion.

No other language stretched my mind more.

(*) The same procedure - say, append/3 may be used in multiple ways: "append [1,2] and [3,4]", or "what list, appended with [3,4], gives, [1,2,3,4]", or "what ways are there to append two lists to give [1,2,3,4]?" or "does [1,2] appended to [3,4], give [1,2,3,4]?"

share|improve this answer
2  
It certainly made me work harder than any other language. I think Prolog's why I never had that "Aha!" moment that ESR promised I'd get from learning Lisp. I've had many minor epiphanies, like "object = struct + closures", but nothing earth-shattering like I had with Prolog. – Frank Shearar Sep 28 '10 at 6:17
show 2 more comments

F#

I'm new to the language but it's already my favorite programming language. I like functional languages and have used a few before, like Erlang, Haskell and Standard ML. F# is a new language with many modern features. Interesting features are asynchronous workflows and reactive GUI programming together with WPF. Before, functional languages hasn't had great GUI frameworks and libraries but F# has the .NET Framework, and Silverlight is also supported.

share|improve this answer
show 1 more comment

Smalltalk

  • Trivial, uniform syntax.
  • A few concepts taken pretty much as far as they can go. "Objects all the way down."
  • Extremely malleable.
  • Everything's available all the time: want to extend the syntax? Change the compiler.
share|improve this answer
1  
I've always had an interest in it, but just can't really get into it. – Brian Knoblauch Sep 27 '10 at 17:58
show 1 more comment

Objective-C

Because of the categories, dynamic typing and protocols. Inheritance isn't everything OOP is about!

share|improve this answer
3  
The type system of Obj-C is really interesting, I just can't stand [the syntax]; – fish Sep 24 '10 at 12:09
2  
[the syntax] is part of what makes Obj-C so interesting, though! It's literally the first language I've ever used that can be completely comment-free, because the API itself is so expressive. I would NOT want to tackle it in an IDE that doesn't auto-complete, though! – Dan Ray Sep 24 '10 at 12:13
1  
@ Tamás Heh, the syntax is one of the things I like about objc. First, everything inside the []s is Smalltalk syntax (yay!) and second, those []s serve as a nice visual reminder of whether you're in "C land" or "Smalltalk land". – Frank Shearar Sep 27 '10 at 5:56
show 7 more comments

Erlang/OTP

Mature, scaleable, concurrent, robust ...

share|improve this answer

Ada

For those times when you actually care whether the program works right, and will keep on working right, because lives depend on it working right.

Yes, Ada is a royal pain to use, if you're a wild-eyed cowboy hacker fresh out of school. I've seen (and had to modify and maintain) enough of the code produced by such people that Ada being a royal pain for them is a Good Thing. It makes them learn How To Do It Right.

share|improve this answer
show 3 more comments

Whatever has the best debugger

I think this criteria is different from "The best language for the task" enough that it warrants a mention.

My choice languages are whatever languages have a good debugger.

I find myself spending a lot more time debugging rather than writing code.

For that reason, I pick C# because of Visual Studio, and Python because of the ipython interpreter.

share|improve this answer
show 1 more comment

Forth

Because it is so malleable, it facilitates implementing domain specific languages.

Forth love if honk then

share|improve this answer
1  
+1, Factor seems nicer though. – missingfaktor Oct 17 '10 at 6:40

MATLAB

Enables me to think of what should I do, instead of how should I do it. Has a bunchload of functions so I pretty much don't have to write anything common, just expand on the already defined ones. And produces beautiful plots, which are the second most important thing in my line of work.

Apart from that, Fortran. And I was always fond of Perl - don't ask why; I just like the simplicity of it.

share|improve this answer
1  
+1 for MATLAB; certain tasks are such that it would take eons longer to do them in anything other than MATLAB. – romkyns Sep 23 '10 at 22:48
show 4 more comments

Brainf*ck

Minimalistic and with a name that says it all (actually the name applies to most languages I know, sometimes your just stare at the code wondering why it doesn't work or why it does works).

As it's a Turing-complete language, it is (with enough memory) capable of computing any computable function or simulating any other computational model.

It's not a practical language, but for academic exercises it's great.

share|improve this answer
3  
Are you sure your not talking about C? It sounds awfully like it... – Joe D Oct 24 '10 at 12:52

C# and Python

(Hear me out)

It totally depends on what I'm doing. For quick and dirty sites, Django or Google App Engine (Python) are both super quick to develop in and deploy. Python is extremely easy to learn and develop with.

When I need to build something a little more robust, I go with C#. With compile-time checking and the ability to more easily build in concepts like IoC and unit tests (although they are obviously available in other languages as well), it just feels more solid. C# also has the concept of Interfaces which Python doesn't, which makes unit testing (for me) easier.

FWIW, neither C# nor Python have really amazing communities like Ruby has managed to build. They're both mature and reliable languages, but they could stand to learn something from the Ruby community.

Bottom line - it doesn't matter. Use whatever gets the job done the best!

share|improve this answer

Groovy

It's extremely approachable and intuitive for a Java programmer, and with Grails, you can create and modify a web application extremely easily.

share|improve this answer

7Basic

7Basic is a cross-platform, strongly-typed, object-oriented language. It's eventual goal is to be able to compile code into native Win32 PE and ELF executables.

More details.

share|improve this answer
1 2

Not the answer you're looking for? Browse other questions tagged or ask your own question.