# The Best Programming Language Ever

**URL:** <https://boards.straightdope.com/t/the-best-programming-language-ever/514212>\
**Category:** In My Humble Opinion\
**Created:** [October 18, 2009, 11:16am UTC](https://boards.straightdope.com/t/the-best-programming-language-ever/514212 "2009-10-18T11:16:41Z")\
**Posts on this page:** 20\
**Page:** 3

<div class="post-metadata">

**Author:** ![The\_Bith\_Shuffle](https://avatars.discourse-cdn.com/v4/letter/t/ce73a5/32.png) [@The\_Bith\_Shuffle](https://boards.straightdope.com/u/The_Bith_Shuffle)\
**Post date:** [October 19, 2009, 2:29am UTC](https://boards.straightdope.com/t/the-best-programming-language-ever/514212/41 "2009-10-19T02:29:57Z")

</div>

The correct answer is Java.

---

<div class="post-metadata">

**Author:** ![infinitii](https://avatars.discourse-cdn.com/v4/letter/i/e8c25b/32.png) [@infinitii](https://boards.straightdope.com/u/infinitii)\
**Post date:** [October 19, 2009, 2:45am UTC](https://boards.straightdope.com/t/the-best-programming-language-ever/514212/42 "2009-10-19T02:45:36Z")

</div>

Piet, of course.

> **[99 Bottles of Beer | Language Piet](http://99-bottles-of-beer.net/language-piet-1269.html)**
>
> The song '99 bottles of beer' programmed in more than 600 different programming languages, from APL to BASIC, to Brainfuck, INTERCAL, FORTRAN, C++ or Java... This project is similiar to the Rosetta stone

---

<div class="post-metadata">

**Author:** ![friedo](https://avatars.discourse-cdn.com/v4/letter/f/8edcca/32.png) [@friedo](https://boards.straightdope.com/u/friedo)\
**Post date:** [October 19, 2009, 3:04am UTC](https://boards.straightdope.com/t/the-best-programming-language-ever/514212/43 "2009-10-19T03:04:35Z")

</div>

> [@Alex\_Dubinsky](#):
>
> (Interesting thing you may not have known either: Microsoft invented a new way to do command-line interfaces where the data returned and sent to command is not text on stdout/in, but entire fracking objects. Objects full of structured data. Objects that can be formatted as text if you want to. Objects that can be interpreted and manipulated in a way that is not AWKward. And yeah, it also uses .NET)

Microsoft did not invent object serialization. Processes on Unix-like environments have been piping structured data to each other for eons.

Powershell is still pretty cool, though.

---

<div class="post-metadata">

**Author:** ![Red\_Skeezix](https://avatars.discourse-cdn.com/v4/letter/r/aca169/32.png) [@Red\_Skeezix](https://boards.straightdope.com/u/Red_Skeezix)\
**Post date:** [October 19, 2009, 3:16am UTC](https://boards.straightdope.com/t/the-best-programming-language-ever/514212/44 "2009-10-19T03:16:09Z")

</div>

For os scripting: bash + sed + awk. I would pick perl but too often I work on systems where code dependencies and imported modules create problems, so it’s just not reliable or friendly to set up.

For problem solving, analysis and design: scheme (more powerful & less restrictive imo than python). Especially for putting together simple domain specific languages, and recording structures and plans.

For fast ms windows development: C# (.Net) It’s edging out Java in my toolbox simply for the sake of Visual Studio & extension methods. It does put alot of stress on Enumerables and it encourages developers to use them even when they aren’t the right choice (LINQ anyone?). I hate it however for server side development, but that might be a Java bias.

For enterprise applications: Java + ant + J2EE (Preferred Container: JBoss). It’s flexible, multi-modeled, efficient by default, and easy to manage & maintain. Also if it doesn’t do something the way you want it to, you implement an interface and change an xml file and bam, now it does. C# .Net pretends to do this, and then fails horribly. Also I find the J2EE model for handling requests to be far far superior, I don’t understand why MS wouldn’t use a decorator model for request handling, it seems dumb to me.

---

<div class="post-metadata">

**Author:** ![Derleth](https://avatars.discourse-cdn.com/v4/letter/d/b9e5f3/32.png) [@Derleth](https://boards.straightdope.com/u/Derleth)\
**Post date:** [October 19, 2009, 3:24am UTC](https://boards.straightdope.com/t/the-best-programming-language-ever/514212/45 "2009-10-19T03:24:02Z")

</div>

This evening it’s Common Lisp. Tomorrow or next week it might be Haskell. Maybe in a few months it will be Prolog or Smalltalk, if I can ever get around to learning those languages like I want to.

---

<div class="post-metadata">

**Author:** ![Sage\_Rat](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/sage_rat/32/399_2.png) [@Sage\_Rat](https://boards.straightdope.com/u/Sage_Rat)\
**Post date:** [October 19, 2009, 3:58am UTC](https://boards.straightdope.com/t/the-best-programming-language-ever/514212/46 "2009-10-19T03:58:14Z")

</div>

> [@Alex\_Dubinsky](#):
>
> (Interesting thing you may not have known either: Microsoft invented a new way to do command-line interfaces where the data returned and sent to command is not text on stdout/in, but entire fracking objects. Objects full of structured data. Objects that can be formatted as text if you want to. Objects that can be interpreted and manipulated in a way that is not AWKward. And yeah, it also uses .NET)

Also known as a struct. 😉

I have no issue with the world standardizing on a single [ABI](http://en.wikipedia.org/wiki/Application_binary_interface). But that would have been as simple as saying, dammit, let’s just settle on an ABI.

---

<div class="post-metadata">

**Author:** ![Tim\_T-Bonham.net](https://avatars.discourse-cdn.com/v4/letter/t/46a35a/32.png) [@Tim\_T-Bonham.net](https://boards.straightdope.com/u/Tim_T-Bonham.net)\
**Post date:** [October 19, 2009, 4:16am UTC](https://boards.straightdope.com/t/the-best-programming-language-ever/514212/47 "2009-10-19T04:16:19Z")

</div>

COBOL.

Much as people don’t like it, it is the language the world runs on. Your electric bill, your car payments, your bank statement, your paycheck, your Social Security forms, your tax forms, your credit card statement, your student loan, your student class reservations, almost anything important & critical to your safety & survival runs through a COBOL program (and probably IMS or DB2 database).

And if you define best the way nature & evolution do (‘survival’), COBOL is best there too. Ii celebrated it’s 50th birthday this summer, and is still going strong. (And some of the first COBOL programs from back then still compile and run – just on a Intel chip under Windows 7, instead of on a UNIVAC II.) A year ago, many of those languages mentioned would have been different ones, but they have all been replaced by more fashionable ones. And a year from now, newer ones will replace them. But COBOL will still be around, still doing the majority of the transactions.

Dinosaurs forever!

---

<div class="post-metadata">

**Author:** ![friedo](https://avatars.discourse-cdn.com/v4/letter/f/8edcca/32.png) [@friedo](https://boards.straightdope.com/u/friedo)\
**Post date:** [October 19, 2009, 4:36am UTC](https://boards.straightdope.com/t/the-best-programming-language-ever/514212/48 "2009-10-19T04:36:38Z")

</div>

I’m extremely skeptical about the supposed ubiquity of COBOL. I know it has its niche, but the idea that _every_ major transactional or batch-job system in the Universe is implemented in ancient COBOL code that was punched on stacks of papyrus by the Pharoah Hopper herself seems to approach urban legend status year after year.

More software has been written in the past ten years than the previous forty combined. There are extant legacy systems in the world, but there are _enormous_ transactional systems that date back just a few years in common use, too. Were these implemented in COBOL? Extremely unlikely. You don’t see many ads for fresh-out-of-college COBOL programmers to work at startups.

---

<div class="post-metadata">

**Author:** ![Alex\_Dubinsky](https://avatars.discourse-cdn.com/v4/letter/a/dbc845/32.png) [@Alex\_Dubinsky](https://boards.straightdope.com/u/Alex_Dubinsky)\
**Post date:** [October 19, 2009, 4:38am UTC](https://boards.straightdope.com/t/the-best-programming-language-ever/514212/49 "2009-10-19T04:38:38Z")

</div>

> [@Sage\_Rat](#):
>
> I have no issue with the world standardizing on a single [ABI](http://en.wikipedia.org/wiki/Application_binary_interface). But that would have been as simple as saying, dammit, let’s just settle on an ABI.

I guess the CTS isn’t doing much that a thoroughly-defined native ABI couldn’t do.

Most of the benefits are all a bit nebulous at the moment, I suppose. Architecture-agnosticism could be fantastic, but isn’t used much. OS-agnosticism could be fantastic (and a native ABI can’t be OS-agnostic), but isn’t used much. An OS that has no context switching (a bytecode can be verified as not referencing anything it shouldn’t) could be fantastically fast, but such OSes are mere research projects.

But… the benefit to vastly simplifying the design of new languages (not having to worry about many compilation details) is useful today, and I think it makes up for a lot.

There’s probably other benefits to the CTS that I’m not thinking of.

---

<div class="post-metadata">

**Author:** ![Alex\_Dubinsky](https://avatars.discourse-cdn.com/v4/letter/a/dbc845/32.png) [@Alex\_Dubinsky](https://boards.straightdope.com/u/Alex_Dubinsky)\
**Post date:** [October 19, 2009, 4:46am UTC](https://boards.straightdope.com/t/the-best-programming-language-ever/514212/50 "2009-10-19T04:46:38Z")

</div>

> [@friedo](#):
>
> Microsoft did not invent object serialization. Processes on Unix-like environments have been piping structured data to each other for eons.
> 
> Powershell is still pretty cool, though.

Well, the point is that when you invoke the command in the shell the structured data is automatically rendered human-readable. And when you pipe that data to a different command, the program doesn’t have to be designed to understand it. (Eg, the ‘sort’ command can work with all kinds of inputs.) That’s really what makes it wholly different.

---

<div class="post-metadata">

**Author:** ![Indistinguishable](https://avatars.discourse-cdn.com/v4/letter/i/90ced4/32.png) [@Indistinguishable](https://boards.straightdope.com/u/Indistinguishable)\
**Post date:** [October 19, 2009, 4:48am UTC](https://boards.straightdope.com/t/the-best-programming-language-ever/514212/51 "2009-10-19T04:48:08Z")

</div>

> [@Capt.Ridley\_s\_Shooting\_Party](#):
>
> Haskell. Everything in the language fits together so well. Type classes are perhaps the single greatest invention in programming language design in the last 20 years, and computing with lazy data is cool. An awful lot of new features in C# have been cribbed from Haskell and other functional languages.

Haskell is mine as well, though I’m not sure I have anything better to say about why.

---

<div class="post-metadata">

**Author:** ![Capt.Ridley\_s\_Shooting\_Party](https://avatars.discourse-cdn.com/v4/letter/c/cc9497/32.png) [@Capt.Ridley\_s\_Shooting\_Party](https://boards.straightdope.com/u/Capt.Ridley_s_Shooting_Party)\
**Post date:** [October 19, 2009, 10:46am UTC](https://boards.straightdope.com/t/the-best-programming-language-ever/514212/52 "2009-10-19T10:46:45Z")

</div>

> [@The\_Bith\_Shuffle](#):
>
> The correct answer is Java.

Java is quite clearly inferior to Haskell, and virtually every other programming language in the world, in every possible sense.

---

<div class="post-metadata">

**Author:** ![Napier](https://avatars.discourse-cdn.com/v4/letter/n/ce73a5/32.png) [@Napier](https://boards.straightdope.com/u/Napier)\
**Post date:** [October 19, 2009, 10:54am UTC](https://boards.straightdope.com/t/the-best-programming-language-ever/514212/53 "2009-10-19T10:54:25Z")

</div>

I like Forth best.

It is by far the simplest, except for Assembly, in the sense of understanding what the computer is doing. There is a book by C. H. Ting about eForth that is about 3/8" thick. The early chapters discuss the language’s foundations, including some Assembly definitions as you would enter them into MASM. The book then shifts to defining additional Forth words, in Forth, based on the earlier foundation. By the end of the book you have the entire Forth system. Following along with the book and your PC, you will have actually created the Forth system, from scratch, without any downloads or disks. You even understand where the components reside in memory for the Forth system. There isn’t anything hidden about any of it.

You can run the Forth system as an application, or you can have Forth run the entire computer as its operating system and command interpreter. There are even a few microprocessors that natively run Forth as their assembly language.

In learning Forth, the classic book “Starting Forth” by Leo Brodie features a two headed Pterodactyl. There’s nothing about any other language I have come across that gives nearly the level of understanding as studying the Forth Outer Interpreter and Inner Interpreter, and the most wonderful and Zenlike moment blossoms inside your head when you discover that the Inner Interpreter is actually just the microprocessor’s opcode for a Return instruction. In fact, Zen is a popular simple version of Forth.

Pygmy is an especially small version that is perfectly workable. It is only 15 kilobytes in size. A bigger version is SwiftForth, a professional system for Windows applications that is supported by an active user community.

Forth is the cleverest thing I think I have ever understood. I am comparing it to APL, Algol, Basic, C, C++, C#, Fortran, Java, Lisp, Mathematica, Modula-2, Pascal, SAS, Scheme, and others.

---

<div class="post-metadata">

**Author:** ![Napier](https://avatars.discourse-cdn.com/v4/letter/n/ce73a5/32.png) [@Napier](https://boards.straightdope.com/u/Napier)\
**Post date:** [October 19, 2009, 11:05am UTC](https://boards.straightdope.com/t/the-best-programming-language-ever/514212/54 "2009-10-19T11:05:00Z")

</div>

By the way, I just don’t get Scheme at all. The whole thing is written in goddam parentheses, which I hear good Scheme programmers learn to ignore. The language was originally created for generating Fibonacci sequences, and since they use this problem as a teaching example in every single book, the language is essentially fully used and exhausted by the time you finish learning it. It’s the more theoretical or abstract counterpart to Lisp, as if Lisp were the nuts-and-bolts general tool everybody grabs first, like the pliers of programming.

---

<div class="post-metadata">

**Author:** ![rbroome](https://avatars.discourse-cdn.com/v4/letter/r/838e76/32.png) [@rbroome](https://boards.straightdope.com/u/rbroome)\
**Post date:** [October 19, 2009, 11:56am UTC](https://boards.straightdope.com/t/the-best-programming-language-ever/514212/55 "2009-10-19T11:56:27Z")

</div>

> [@Nancarrow](#):
>
> Well? What is it?
> 
> Please note, the sensible answer of ‘There is no best, it depends on what you want to do’, is banned on pain of, well, pain. Don’t make me hunt you down and kill you. This is a purely subjective poll (except without the poll functionality, as I don’t want to restrict peeps and there are thousands of languages out there). So, those of you who have used more than one programming language, which is the one you like best. Please also state what you like about it, which other languages you have used and why it’s better, for _your_ brain/needs, than them. Also its shortcomings if you like. And are you a professional programmer, or just someone who uses programming occasionally in your work, or a hobbyist?
> 
> Me, I’m a hobbyist, but will be programming at work when I get a job! Only as a bioinformatician, not a software developer. I’ve used C, various Basics and Perl quite a lot, and used R, Fortran, Java, C++ and J a little. If you count SQL as a programming language, that too. It’s a toughie but on balance I think I like Perl the best. I’ve found myself to be most productive in it, in terms of time between deciding what I want to do, and having a working program for it.
> 
> I like that you don’t have to be quite so finicky with data types as in say C or Java. I like that you don’t necessarily have to tack loads of garbage around the meat of the program (e.g. hello world is just ‘print "hello world  
> ";’ without having to declare a main function or include libraries… Java, C, C++, I’m looking at you). I rather like hashes, regular expressions, and the ease in manipulating strings (C, you’re an arsehole). I like how much you can do in it without thinking in object-oriented terms (Java, jump off a cliff) - not a fan of o.o.p though I understand it’s probably extremely useful when writing huuuuge programs, much bigger and more important than the kind I hack out.
> 
> Having used R and J, I miss the transparent array manipulation when in Perl. And I would like the option of compiling the code into a standalone executable.  
> So, for me, Perl wins.

on paper, C++.  
IRL, Perl!

---

<div class="post-metadata">

**Author:** ![rbroome](https://avatars.discourse-cdn.com/v4/letter/r/838e76/32.png) [@rbroome](https://boards.straightdope.com/u/rbroome)\
**Post date:** [October 19, 2009, 11:57am UTC](https://boards.straightdope.com/t/the-best-programming-language-ever/514212/56 "2009-10-19T11:57:39Z")

</div>

DNA: too hard to read! 🙂

---

<div class="post-metadata">

**Author:** ![Balthisar](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/balthisar/32/2825_2.png) [@Balthisar](https://boards.straightdope.com/u/Balthisar)\
**Post date:** [October 19, 2009, 12:47pm UTC](https://boards.straightdope.com/t/the-best-programming-language-ever/514212/57 "2009-10-19T12:47:28Z")

</div>

Object Pascal, followed by Objective-C of course! Or maybe the other way around. Unfortunately I’ve been using too much PHP and SQL and Python lately, none of which I’m really fond of.

---

<div class="post-metadata">

**Author:** ![Crowbar\_of\_Irony\_3](https://avatars.discourse-cdn.com/v4/letter/c/f08c70/32.png) [@Crowbar\_of\_Irony\_3](https://boards.straightdope.com/u/Crowbar_of_Irony_3)\
**Post date:** [October 19, 2009, 2:12pm UTC](https://boards.straightdope.com/t/the-best-programming-language-ever/514212/58 "2009-10-19T14:12:54Z")

</div>

> [@Napier](#):
>
> By the way, I just don’t get Scheme at all. The whole thing is written in goddam parentheses, which I hear good Scheme programmers learn to ignore.

I concur. Scheme was a nightmare for me. I just don’t get functional languages at all. I guess that one of my weaknesses.

---

<div class="post-metadata">

**Author:** ![UncleRojelio](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/unclerojelio/32/3160_2.png) [@UncleRojelio](https://boards.straightdope.com/u/UncleRojelio)\
**Post date:** [October 19, 2009, 2:16pm UTC](https://boards.straightdope.com/t/the-best-programming-language-ever/514212/59 "2009-10-19T14:16:02Z")

</div>

> [@Indistinguishable](#):
>
> Haskell is mine as well, though I’m not sure I have anything better to say about why.

I would have said Haskell too if, after dicking with it for 20 years now, I could do anything more than “Hello World” with it.

---

<div class="post-metadata">

**Author:** ![Ruminator](https://avatars.discourse-cdn.com/v4/letter/r/b9bd4f/32.png) [@Ruminator](https://boards.straightdope.com/u/Ruminator)\
**Post date:** [October 19, 2009, 5:15pm UTC](https://boards.straightdope.com/t/the-best-programming-language-ever/514212/60 "2009-10-19T17:15:13Z")

</div>

> [@UncleRojelio](#):
>
> I would have said Haskell too if, after dicking with it for 20 years now, I could do anything more than “Hello World” with it.

That’s the problem with Haskell and Lisp. Beautiful and powerful languages but not enough of an ecosystem around them: vast libraries, intelligent IDEs, refactoring tools, etc.

Just yesterday, I wanted to create a menu system for play 24-bit wav files while a background tasks also does frequency analysis with Fourier Transform. Using F# (and C#), leveraging the vast libraries in .NET and Codeplex makes it amost a trivial exercise of gluing components together. In Lisp/Haskell, comparable libraries of functionality are non-existent and I’d have to do many of these things myself.

[Previous page](https://boards.straightdope.com/t/the-best-programming-language-ever/514212.md?page=2)

[Next page](https://boards.straightdope.com/t/the-best-programming-language-ever/514212.md?page=4)
