# So how many programming languages do you know?

**URL:** <https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406>\
**Category:** In My Humble Opinion\
**Created:** [October 19, 2009, 10:48pm UTC](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406 "2009-10-19T22:48:41Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![kombatminipig](https://avatars.discourse-cdn.com/v4/letter/k/b5ac83/32.png) [@kombatminipig](https://boards.straightdope.com/u/kombatminipig)\
**Post date:** [October 20, 2009, 7:44am UTC](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406/21 "2009-10-20T07:44:54Z")

</div>

> [@Indistinguishable](#):
>
> 1. C (Is it worth counting this separately from C++? If you’ve learnt the latter, and were then told what to leave out and the few minor changes between how what’s left works, then you know the former. [Yeah, yeah, I’m sure some language lawyers will consider the changes to be more than minor, but (for the point I’m making right now), I don’t]].

They share syntax, and you can use C-specific syntax and libraries in C++, but they are entirely different languages. Different paradigms, in fact. Mastery of one does not imply mastery of the other, IMO.

---

<div class="post-metadata">

**Author:** ![kombatminipig](https://avatars.discourse-cdn.com/v4/letter/k/b5ac83/32.png) [@kombatminipig](https://boards.straightdope.com/u/kombatminipig)\
**Post date:** [October 20, 2009, 7:48am UTC](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406/22 "2009-10-20T07:48:27Z")

</div>

> [@verisimilidude](#):
>
> Is HTML a language? Is CSS? Originally I thought not, and thought the L in HTML was arrogance. Then I started thinking. It is just a type of declarative language, describing what you want the computer to do (lay out a web page in this case) by describing the result of the computation. Is this that much different than other languages like SQL and BASIC that are interpreted?

I think the M has some importance as well 😉 No, it’s not a language. It doesn’t actually order the computer do anything, it’s just a set of notes saying how to draw something up. It’s as little a language as a bitmap. Nowhere is HTML translated into machine code.

---

<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 20, 2009, 8:11am UTC](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406/23 "2009-10-20T08:11:06Z")

</div>

Well, everyone’s taken issue with my “C++ is pretty much a superset of C; if you can write C programs, you can pretty much write them as C++ programs; if you can read C++ programs, you can pretty much read C programs” position, and understandably so, but I stick to it, at least so far as this question is concerned (and, yes, I’ve had extensive experience with each qua itself). Idiomatic C style for certain tasks will certainly differ from idiomatic C++ style, but not to the level that I would consider it a language issue, per se; at least, if we’re going to pay such attention to differences not of fundamental language design decisions but merely of programming style in answering “How many programming languages do you know?”, then one could consider double- and triple-counting a great many other languages, depending on what styles of programming within them one is comfortable with. Of course, such silliness would just augment my point that all these counts involve a huge number of subjective judgements anyway.

---

<div class="post-metadata">

**Author:** ![ShibbOleth](https://avatars.discourse-cdn.com/v4/letter/s/848f3c/32.png) [@ShibbOleth](https://boards.straightdope.com/u/ShibbOleth)\
**Post date:** [October 20, 2009, 8:34am UTC](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406/24 "2009-10-20T08:34:02Z")

</div>

I’ve forgotten how many and I’ve forgotten most of them. Don’t really program anymore, and it seems that the concept of a programming language is also becoming a bit murky.

---

<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 20, 2009, 8:45am UTC](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406/25 "2009-10-20T08:45:18Z")

</div>

For various degrees of “know”:

C  
C++  
Pascal  
Object Pascal (Delphi)  
Visual Basic 6  
Java  
C#  
TCL  
Standard ML (including FreshML)  
O’Caml  
Haskell  
Prolog (including alphaProlog)  
Scheme  
Javascript  
UnrealScript  
x86 Assembly  
Some other assembly that I’ve been forced to teach, but can’t remember the name of the chip (ARM)?  
Matlab  
Various markup languages (LaTeX, HTML, CSS)

Also have a passing acquaintance with Maple, Mercury, and some more that I’ve forgotten :smack:

---

<div class="post-metadata">

**Author:** ![ultrafilter](https://avatars.discourse-cdn.com/v4/letter/u/3d9bf3/32.png) [@ultrafilter](https://boards.straightdope.com/u/ultrafilter)\
**Post date:** [October 20, 2009, 12:28pm UTC](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406/26 "2009-10-20T12:28:17Z")

</div>

> [@kombatminipig](#):
>
> Nowhere is HTML translated into machine code.

Nor is Perl.

---

<div class="post-metadata">

**Author:** ![Redwing](https://avatars.discourse-cdn.com/v4/letter/r/dfb087/32.png) [@Redwing](https://boards.straightdope.com/u/Redwing)\
**Post date:** [October 20, 2009, 1:03pm UTC](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406/27 "2009-10-20T13:03:40Z")

</div>

bash/ksh/sh… I’m a sys admin, I can script.  
C  
PASCAL  
FORTRAN (5 & 77)  
COBOL  
AOS/VS cli (damn it, I can’t remember the name, it was a scripting language for DG MV15000s but we just called it cli)  
Perl  
BASIC

---

<div class="post-metadata">

**Author:** ![kombatminipig](https://avatars.discourse-cdn.com/v4/letter/k/b5ac83/32.png) [@kombatminipig](https://boards.straightdope.com/u/kombatminipig)\
**Post date:** [October 20, 2009, 5:16pm UTC](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406/28 "2009-10-20T17:16:27Z")

</div>

> [@ultrafilter](#):
>
> Nor is Perl.

Sure it is. It’s interpreted on the fly, and all your pretty instructions are fed into the processor. Same as JAVA (though via a couple of abstraction layers).

---

<div class="post-metadata">

**Author:** ![Stealth\_Potato](https://avatars.discourse-cdn.com/v4/letter/s/d78d45/32.png) [@Stealth\_Potato](https://boards.straightdope.com/u/Stealth_Potato)\
**Post date:** [October 20, 2009, 5:23pm UTC](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406/29 "2009-10-20T17:23:37Z")

</div>

> [@kombatminipig](#):
>
> I think the M has some importance as well 😉 No, it’s not a language. It doesn’t actually order the computer do anything, it’s just a set of notes saying how to draw something up. It’s as little a language as a bitmap. Nowhere is HTML translated into machine code.

HTML is every bit as much a language as C++ is. It’s a set of strings over a specific alphabet that are derivable by a formal grammar. That makes it a formal language. It’s not a _programming_ language for reasons discussed above, but it is still a language.

> [@kombatminipig](#):
>
> Sure it is. It’s interpreted on the fly, and all your pretty instructions are fed into the processor. Same as JAVA (though via a couple of abstraction layers).

Well, in that case, same as HTML: every element of description eventually gets interpreted and fed into the processor when a document is rendered. But it doesn’t matter where the instructions or other language elements go; a Java program is still a Java program if it’s never compiled, interpreted, or run, even it’s just written in pencil on paper and never gets anywhere near a computer. What matters in deciding whether something is a _programming_ language is whether strings in the language semantically describe _computation_ or something else.

---

<div class="post-metadata">

**Author:** ![Superfluous\_Parentheses](https://avatars.discourse-cdn.com/v4/letter/s/8edcca/32.png) [@Superfluous\_Parentheses](https://boards.straightdope.com/u/Superfluous_Parentheses)\
**Post date:** [October 20, 2009, 5:45pm UTC](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406/30 "2009-10-20T17:45:44Z")

</div>

> [@kombatminipig](#):
>
> Sure it is. It’s interpreted on the fly, and all your pretty instructions are fed into the processor. Same as JAVA (though via a couple of abstraction layers).

So is HTML. It’s not a useful definition. XSLT is an example of an XML based programming language. HTML isn’t.

---

<div class="post-metadata">

**Author:** ![Swords\_to\_Plowshares](https://avatars.discourse-cdn.com/v4/letter/s/b38774/32.png) [@Swords\_to\_Plowshares](https://boards.straightdope.com/u/Swords_to_Plowshares)\
**Post date:** [October 20, 2009, 5:59pm UTC](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406/31 "2009-10-20T17:59:09Z")

</div>

Java, C#, Ocaml, and Matlab. Also a bit of Verilog, if that counts.

---

<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 20, 2009, 6:20pm UTC](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406/32 "2009-10-20T18:20:35Z")

</div>

> [@kombatminipig](#):
>
> Sure it is. It’s interpreted on the fly, and all your pretty instructions are fed into the processor. Same as JAVA (though via a couple of abstraction layers).

I believe the intention of the OP is about [Turing Complete](http://en.wikipedia.org/wiki/Turing_complete) type of programming languages.

Using that criteria, HTML is not included.

If we include HTML, we may as well include “email addresses” ([RFC 5321](http://tools.ietf.org/html/rfc5321)) as a “programming language” because the tokens separated by “at” @ “dot” (.) is parsed and fed as instructions to DNS computer chips across the continent to route SMTP mail packets to the correct target.

---

<div class="post-metadata">

**Author:** ![Shot\_From\_Guns](https://avatars.discourse-cdn.com/v4/letter/s/ccd318/32.png) [@Shot\_From\_Guns](https://boards.straightdope.com/u/Shot_From_Guns)\
**Post date:** [October 20, 2009, 6:25pm UTC](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406/33 "2009-10-20T18:25:13Z")

</div>

All of these are pretty rusty, but I could probably pick them back up again with a little practice.

Most proficient:  
Java  
C

Some experience:  
FORTRAN 77  
Perl  
Lisp  
Smalltalk  
Prolog

I screwed around with once or twice:  
BASIC  
TI-83 BASIC

That’s not including some assembly crap, and I could probably muddle my way through C++ or C# just fine.

---

<div class="post-metadata">

**Author:** ![ultrafilter](https://avatars.discourse-cdn.com/v4/letter/u/3d9bf3/32.png) [@ultrafilter](https://boards.straightdope.com/u/ultrafilter)\
**Post date:** [October 20, 2009, 7:15pm UTC](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406/34 "2009-10-20T19:15:18Z")

</div>

> [@Ruminator](#):
>
> I believe the intention of the OP is about [Turing Complete](http://en.wikipedia.org/wiki/Turing_complete) type of programming languages.
> 
> Using that criteria, HTML is not included.

SQL is also not Turing complete, but is specifically counted in the OP.

---

<div class="post-metadata">

**Author:** ![Stealth\_Potato](https://avatars.discourse-cdn.com/v4/letter/s/d78d45/32.png) [@Stealth\_Potato](https://boards.straightdope.com/u/Stealth_Potato)\
**Post date:** [October 20, 2009, 7:20pm UTC](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406/35 "2009-10-20T19:20:54Z")

</div>

> [@Ruminator](#):
>
> I believe the intention of the OP is about [Turing Complete](http://en.wikipedia.org/wiki/Turing_complete) type of programming languages.
> 
> Using that criteria, HTML is not included.
> 
> If we include HTML, we may as well include “email addresses” ([RFC 5321](http://tools.ietf.org/html/rfc5321)) as a “programming language” because the tokens separated by “at” @ “dot” (.) is parsed and fed as instructions to DNS computer chips across the continent to route SMTP mail packets to the correct target.

I think several of us might be talking somewhat at cross purposes here; some seem to be using “language” when they mean “programming language” and vice versa. Valid email addresses certainly don’t constitute a programming language, but they _do_ constitute a formal language, and that distinction seems to be causing most of the dissonance on that subject.

Also, I’d say that HTML should be excluded because of its semantic nature before being excluded because it isn’t Turing complete (which is pretty much a given since it doesn’t describe computation). The Wikipedia article you linked to even mentions some programming languages that are not Turing complete, such as [Epigram](http://en.wikipedia.org/wiki/Epigram_%28programming_language%29). In fact, my Banana language began as an extension to another language I had written, which has a C-like syntax and ostensibly describes computation, but is not Turing complete.

**ultrafilter** : I’m not really sure SQL _should_ count anyway, since as its own name suggests it’s a query language, not a programming language. 😉

---

<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 20, 2009, 7:21pm UTC](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406/36 "2009-10-20T19:21:43Z")

</div>

> [@ultrafilter](#):
>
> SQL is also not Turing complete, but is specifically counted in the OP.

He “guessed” SQL might be counted. 🙂

Maybe it’s too imprecise because he also says,

_“able to code something more than just ‘Hello World’. At least a personnel management system with file I/O”_

…which you can’t do with SQL SELECT UPDATE DELETE INSERT but might be possible with with MySQL stored procedures (loops, variables, etc.) . Either way, you can’t code HTML to create a file management system with file I/O.

---

<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 20, 2009, 7:25pm UTC](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406/37 "2009-10-20T19:25:59Z")

</div>

> [@Stealth\_Potato](#):
>
> I think several of us might be talking somewhat at cross purposes here; some seem to be using “language” when they mean “programming language” and vice versa.

Thanks for clearing that up.

I also just realized I quoted the wrong person.

---

<div class="post-metadata">

**Author:** ![ultrafilter](https://avatars.discourse-cdn.com/v4/letter/u/3d9bf3/32.png) [@ultrafilter](https://boards.straightdope.com/u/ultrafilter)\
**Post date:** [October 20, 2009, 7:35pm UTC](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406/38 "2009-10-20T19:35:59Z")

</div>

> [@Stealth\_Potato](#):
>
> **ultrafilter** : I’m not really sure SQL _should_ count anyway, since as its own name suggests it’s a query language, not a programming language. 😉

XQuery is also a query language, but it is Turing complete. Ultimately, there’s no nice criterion for what’s a programming language and what’s not, and you have to introduce more or less arbitrary distinctions.

---

<div class="post-metadata">

**Author:** ![Superfluous\_Parentheses](https://avatars.discourse-cdn.com/v4/letter/s/8edcca/32.png) [@Superfluous\_Parentheses](https://boards.straightdope.com/u/Superfluous_Parentheses)\
**Post date:** [October 20, 2009, 9:07pm UTC](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406/39 "2009-10-20T21:07:02Z")

</div>

> [@Ruminator](#):
>
> He “guessed” SQL might be counted. 🙂
> 
> Maybe it’s too imprecise because he also says,
> 
> _“able to code something more than just ‘Hello World’. At least a personnel management system with file I/O”_
> 
> …which you can’t do with SQL SELECT UPDATE DELETE INSERT but might be possible with with MySQL stored procedures (loops, variables, etc.) . Either way, you can’t code HTML to create a file management system with file I/O.

Also, by that definition, plain JavaScript isn’t a programming language, because it doesn’t directly support file I/O, so I just ignored it and included both SQL and JavaScript.

---

<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 20, 2009, 9:21pm UTC](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406/40 "2009-10-20T21:21:24Z")

</div>

> [@Superfluous\_Parentheses](#):
>
> Also, by that definition, plain JavaScript isn’t a programming language, because it doesn’t directly support file I/O, so I just ignored it and included both SQL and JavaScript.

As language lawyers so like to repeatedly remind… we can “differentiate the language from the runtime.”

If the browser is the “runtime” then Javascript is handicapped.

But… if we think of Google Docs on Google’s [GFS](http://en.wikipedia.org/wiki/Google_File_System) as files on a file system, the Google cloud can be thought of as one huge runtime for Javascript. Therefore, Javascript could write a file management system.

Yep… that’s really reaching…

…and it busts open the definition of “programming language” so wide open that it can include the Tivo remote as being “Turing complete.”

[Previous page](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406.md?page=1)

[Next page](https://boards.straightdope.com/t/so-how-many-programming-languages-do-you-know/514406.md?page=3)
