views:

686

answers:

16

I was reading the post Why Language is Important (Why I prefer C#) from 'Dot Net Thoughts' and the first paragraph of the article ends with this statement:

...every language was created for a specific purpose.

This got me thinking about exactly "why" certain languages exist...ie what is their specific reason of their existence.

My goal from this question is to list as many programming languages as possible and their main reason of why they exist...why they are used; and this will help people on deciding on what language to use for specific tasks.

Languages such as C#, VB, Haskell, Eiffel, Perl, Python, Java etc; procedural languages, functional languages, object-oriented languages etc...

+2  A: 

I think JAVA is the only language that was advertised with its purpose:

write once, run anywhere

soulmerge
Write once, spend forever running it
Rich Bradshaw
Why should this be most obvious?
Cecil Has a Name
@Cecil: Added link to answer
soulmerge
I thought it was write once, debug everywhere?
Andre Miller
My company uses Java. I can debug on my Windows box a problem with a batch running on a Unix server, test the fix by running the batch on my Windows box, and then push the jar with the fix on a Unix server. Zero problems with that.
quant_dev
+1  A: 

INTERCAL: To raise the perceived intelligence of developers by making their code so confusing no one else understands it. =:)

Simon P Stevens
+10  A: 

Brainfuck exists to show you can write a compiler for a Turing complete language in under 200 bytes :)

Paul Dixon
+1  A: 

Well the most obvious one is COBOL: Common Business Oriented Language And you can see it by reading the sourcecode, too. Python had mainly multi Paradigms and clear simplicity in mind (however one can always argue about that I'd agree).

Daff
+10  A: 

Just my opinions:

C# - Microsoft wanted their own Java

Haskell - research of pure functional languages

Perl - text manipulation

Python - readable scripting language

Procedural languages - easy to compile for Von Neumann style architectures

LISP & Functional languages - help with bottom-up software design

Ruby - OO-Perl

Lua - Embeddable scripting language

C - Portable assembler

C++ - Portable assembler with objects

Emacs Lisp - Scheme or CL didn't have enough performance at that time

Pascal - Teaching programming. For some perverted reason people insisted using it for production software too.

Assembly languages - Writing machine language and resolving JMP addresses manually on paper is tedious. (I've tried it)

Power shell - replace BAT scripting

PHP - for making internets

Javascript - for making internets 2.0

APL - to make obfuscated coding contests obsolete

abababa22
+1 for explaining the purpose of APL :)
Brian Rasmussen
I think the bit about C++ is v. obsolete. C++ has ceased to be "C with objects" a long time ago.
quant_dev
but it is how C++ was created originally, so he's technically right.
jalf
Javascript was made wayyy before any ideas for "internets 2.0"
TM
I'm pretty sure Javascript's reason for being is that HTML didn't include a mechanism for validating forms client-side, especially in the early days when it was common for forms to use a mailto action that invoked the user's mail client.
Zak
+5  A: 
  • Perl, because developers should learn to appreciate pain
  • C++, because 5 people on the planet should be able to create Operational Systems and embedded systems and because D was too far into the alphabet
  • C, because B needed a successor
  • D, because C needed a "real" successor
  • Python, because writing angle brackets are bad to your health
  • Java, because C++ was too difficult and Gosling thought (falsely) that we needed a language without Multiple Inheritance
  • VB, because Bill Gates' children needed "VB inheritance"
  • C#, because Java started stealing market shares from "Visual C++"

But I guess that list might be controversial for some ... ;)

Thomas Hansen
"Gosling thought (falsely) that we needed a language without Multiple Inheritance"I think Java interfaces are what multiple inheritance in C++ should have been.
quant_dev
@quant_dev - Sorry to disappoint you, but you're wrong. MI is a beautiful concept and that both Java and C# lacks them makes those languages inferior in regards to inheritance...
Thomas Hansen
Well it may be a beatiful concept, but causes a lot of grief to many people.
quant_dev
You seem to be repeating stuff others like e.g. Gosling have said about MI without thought for whether or not it's true. Have it caused grief to you or someone you know...?For me it has only created flexibility and made me able to create even more concise and beautiful code...Do you have a reference to that it "has caused grief"...?Now according to; http://en.wikipedia.org/wiki/Multiple_inheritance MI have some "official criticism", and I can agree on those. But Java Interfaces is not what "MI should have been"...
Thomas Hansen
Well OK, I did not see it first-hand. OTOH, Java interfaces are very convenient and useful. They almost completely remove any need for MI. This I can say based on my experience.
quant_dev
Java Interfaces are cool, and yes they solve a lot of the problem from MI, but MI is really cool if you know how and when to use it, and you are a little bit careful. It can seriously reduce the amount of coding needed. But both C# and Java (note that I am a "C# dude") takes a lot of criticism because of lack of MI. I would love to see MI in C#. And C# also have "Java Interfaces"...
Thomas Hansen
+2  A: 

PHP Originally stood for "Personal Home Pages" which says it all I think.

APL Stands for "A Programming Language" and was created for "teaching and analysis of topics related to the application of computers"

TCL Pronounced "Tickle" was "born out of frustration" by John Ousterhout and was meant to be embedded in other applications

Applescript Was a progression from Hypertalk for Appels HyperCard application and was, like TCL, designed to be embedded in other applications to facilitate scripting.

That's all. My Programming Language history isn't great.

gargantaun
I always thought PHP stood for *Php Hypertext Processor* in the GNU-style naming convention.
tj111
The PHP acronym change happened around the v3 release back in 1997 or 1998, I forget which without having to look it up.
scragar
+1  A: 

I think it's better stated to say that, "every language is best-suited for a specific purpose." Not every language was created with specific purpose, but there are usually a handful of domains in which it excels.

For example, "Scala is a general purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way." C and C++ are more common general purpose languages.

And now for a list of languages and what they're actually used for instead of just what people think about them:

PHP, ASP, JSP, Ruby, Python: Web apps (Haskell is starting to be considered here too [thanks Reddit])

Javascript: AJAX, DOM manipulation

BASIC, VB: Rapid prototyping, teaching

AWK: Text processing

C & co.: System (OS's, etc), application software, device drivers, embedded systems, server/client applications, etc/

Objective C: iPhone

Lisp, Prolog: AI

Erlang: Multi-threaded, parallel, fault-tolerant programming.

Scala, Haskell: Couldn't find any one clear thing, they both seem pretty general (I use neither).

Pascal: Teaching

Eiffel: Finance, aerospace, health, games and teaching (apparently).

R: Statistical computing and graphics.

Justin Johnson
Should be - Objective C: Developed to have an object oriented C for Next computers before C++ was invented/adopted. Pre-dates iPhones by well over 20 years.
CMPalmer
Python also makes for a pretty good scripting language. Where I work, we redid our build process, and instead of rewriting the existing batch files, we wrote Python scripts to do the job.
RobH
@CMPalmer "And now for a list of languages and what they're actually used for instead of just what people think about them"
Justin Johnson
+1  A: 

Perl - The glue language for system administrators which has now grown to a general purpose programming language.

Alan Haggai Alavi
+2  A: 

Fortran - to run numerical calculations as fast as possible.

quant_dev
+3  A: 

I don't think that this is a useful statement. There are general purpose languages, and some languages that initially served a specific purpose have since grown to being rather general (e.g. Perl). Some languages are also perceived as being special purpose, even though they were general from the start (Lisp).

That article also shows a really narrow view of the programming language landscape.

Svante
+1  A: 
MatrixFrog
Wow....that's pretty out there
Justin Johnson
A: 

J

J is particularly strong in the mathematical, statistical, and logical analysis of data. It is a powerful tool in building new and better solutions to old problems and even better at finding solutions where the problem is not already well understood.

Andreas Grech
+1  A: 

R language

For statistical computing.

Jeff Meatball Yang
+1  A: 

Python: A programming language that is easy to read and use.

APL: A language that is extremely good at solving mathematical problems.

J and K: Both are trying to make APL usable to people with qwerty keyboards.

Java: Made as a better C++, with focus on using a single codebase.

C++: Made as a better C with Object-Orientation.

(Qt: Whilst it is not a programming language, it does extend C++ that it's worth mentioning. Qt is a GUI toolkit, a database abstracter and many, many more things. It's also cross-platform.)

C: A better B (Seriously)

Objective-C: Apple trying to make a better C with Object-Orientation.

Perl: A language build to process text, but is now a widely used "scripting" language. It also builds on the idea of "there should be more than one way to do it."

Haskell: Experiment to make a completely pure functional language, with big emphasis on the functionality.

Lisp: Originally named List Processor. Today it's a language that pioneered many of the techniques that modern languages has. Lisp is a standard and not an actual language. Sometimes called "the programmable programming language".

Common Lisp: A common implementation of Lisp. It has many features that modern languages got, but also many features that modern languages haven't got.

Scheme: Designed to be the most pure language in existence. It's mostly used as research.

JavaScript: A scripting language based on some stuff that might be Java. Apart from the name, it has nothing to do with Java. It's used nearly exclusively as the scripting language of the web. JavaScript is based on the standard ECMAScript.

Lua: A scripting language with the goal of being a good scripting language. Useless for virtually everything else.

XML: Designed to be a way to make uniform data formats, primarily for exchange of data between platforms. Highly extendible, for example XHTML (web page) can embed SVG (Vector graphics) and MathML (Guess what) documents, giving XHTML near infinite possibilities.

CSS: Designed to style HTML and XHTML documents.

Esoteric Programming Languages: Languages designed to be confusing and hard to use.

Now, I can't really name any other languages, I hope it was useful :)

henrikh
A: 

Ada - Designed by the Department of Defense for safety-critical embedded/real-time systems.

KeyserSoze