views:

128

answers:

2

Duplicate

“Every language was created for a specific purpose”

I come from a web programming background (PHP, Perl, HTML, CSS, Javascript and Actionscript).

But I have an interest in programming generally. And I was wondering how do people conceptually break down the technological soup that's out there?

What languages are out there, but more importantly WHY are they out there? What domain problems do they attempt to solve? I would be curious to hear peoples thoughts on this subject.

For example, if you were talking to someone interested in programming who had never heard of Haskell, what would you say, in a few sentences, about it and why it is important? Same goes for Python, Ruby, C, ObjC, C++, C#, HaXe, Lisp, Scheme, Java, etc.

What languages are you using and what specific problems are they solving for you? Feel free to include important frameworks or libraries in the discussion as appropriate. But I would like to keep this mostly about languages themselves and their relative strengths and weaknesses. Although I certainly recognize it is difficult to talk about stuff like Javascript without also talking about AJAX, jQuery, Rico, and all the various frameworks that make it fun and useful.

Bonus points for obscurity and interesting use cases.

+5  A: 

My three favorite languages are Haskell, C++, and Python. Conveniently, those break up nicely into rather distinct groups.

  • I use Haskell when I feel like I want to program in a very mathematically rigorous sense --- the functional programming helps, as does the strong type-checker. I am quite interested in algorithms, and at least personally I find it much easier to look at a functional algorithm rather than an imperative one, once I wade through all the map/folds/lambdas etc. I think this holds true for many functional languages in general, though Lisp adds on that extra layer of "holy crap my code is my data", which can help or hinder.

  • I use C++ as the counterpart to Haskell. Rather than feeling mathematically vigorous, if I want to feel like I'm total control of the program flow, I use C++. Defining all the various built-in operators for a new class gives me a warm fuzzy feeling, what can I say. It has never really come up, but if I desperately need a fast program I would turn to C++. As mathematical control is to Haskell, so is system control to C++? May be a bit hackneyed analogy, but hey. Of course, C++ compiler does a whole lot of magic, but its the psychological effect I'm going for.

  • I use python for "casual" programming. If I want to produce test data, or scan through some strange file, I'd use python (I don't know perl). It is just a very nice, easy-to-use language. Like any scripting language, I suppose, though this one's code is actually readable. Believe it or not, I would use Python second for making readable algorithms, because of that readability.

As a final disclaimer, this is what I think of those languages, not necessarily what they're actually designed for.

Agor
Thank you for this response. This is the kind of response I was looking for.
Gordon Potter
Oh hey, my pleasure.
Agor
+1  A: 

VBA is a special-purpose language for MS Office Development.

It's very good at manipulating Office objects.

It's weak in that it doesn't have a large enough library.

Lance Roberts