So how many programming languages do you know?

Another programming languages poll for the Dopers!

By programming languages here, I mean functional, rules-based and the usual procedural languages (so I guess SQL count). If it can be used to boss the computer about, it is a programming language! Variants also count as separate (the C family for example). For the definition of ‘know’, you have to be able to code something more than just ‘Hello World’. At least a personnel management system with file I/O :stuck_out_tongue:

Here’s what I have installed on my mental hard disk

ActionScript
BASIC
C
C++
C#
Java
QBasic
PHP
MySQL
MS-DOS batch file programming

Perl
Ruby
Bash/SH
C
C++
Java
JavaScript
Erlang
Common Lisp
Clojure
68K assembly
C64 BASIC
Emacs Lisp
Scheme
ActionScript
Prolog
SQL

and a minimal amount of Python

You don’t have zero as an option…

Nice little bell curve. :wink:

15 I can think of right now:
[list=#]
[li]C (mainly POSIX + C89, some C99 and K&R)[/li][li]Common Lisp[/li][li]Scheme[/li][li]Emacs Lisp[/li][li]Java[/li][li]Python[/li][li]Ruby[/li][li]Perl[/li][li]GW-BASIC (and Classic BASIC in general, pretty much)[/li][li]Bourne shell (mainly sh, bash, and zsh)[/li][li]Haskell[/li][li]x86 assembly (mostly IA-16 and IA-32, not much AMD64)[/li][li]PDP-11 assembly (under V7 Unix)[/li][li]Pascal (mainly ISO standard, some Object Pascal)[/li][li]RPL (Reverse Polish Lisp, the programming language in HP’s programmable stack calculators)[/li][/list]

I have a somewhat better than passing knowledge of C#, C++ (just the core language without much templates or object esoterica), Fortran 77, J (an APL derivative), Javascript, VAX assembly, PDP-8 assembly, 6502 assembly, a number of mostly-similar RISC assemblies (MIPS, SPARC, a few others), Forth, Objective-C, and Maxima (a programmable computer algebra system).

My mistake. I forgotten as a programmer I should have started counting from zero. :smack:

Hrm. Let me rummage around in the old brain box…

[ol]
[li]C[/li][li]C++[/li][li]C#[/li][li]Java[/li][li]Python[/li][li]JavaScript[/li][li]Squirrel[/li][li]Lua[/li][li]PHP[/li][li]6502/65816 assembly[/li][li]65816 machine code (I’m counting this one as separate from above since I sometimes find myself writing non-trivial routines directly in a hex editor without the assistance of an assembler. :p)[/li][li]Bash[/li][li]Banana – kind of a cheat, since this is actually a not-yet-existent language (dynamic, functional, prototyped object-oriented, dynamic parsing) that I’m building for fun. :D[/li][/ol]

There are also a few that I was at one point reasonably competent with, namely Scheme, Miranda, Haskell, CLP® and Smalltalk, but I haven’t used any of them in ages (mostly since school), and I very much doubt I’d be able to do much with them now unless I cracked open a reference book or three first.

I’m interpreting the question to ask how many languages I can write code in given reference manuals and time, not just off the top of my head.

[ol]
[li]C[/li][li]C++[/li][li]Java[/li][li]Javascript[/li][li]VBscript[/li][li]NSIS script[/li][li]SQL[/li][li]XQuery[/li][li]Matlab[/li][li]R[/li][li]S-Plus[/li][li]Python[/li][li]Perl[/li][li]Motorola 68K assembly[/li][li]X86 assembly[/li][li]Scheme[/li][li]Prolog[/li][/ol]

I feel like I’m forgetting something…

BASIC
FORTRAN
PL/1
PASCAL
8085 assembler
M68000 Assembler
Galil Motion Control
ladder logic
Matlab
Simulink
Dynamic C
Think & Do (PLC symbolic programming language)
Modicon State Language (ditto)
Ada
Java
C
C++ (my hands-down favorite and most proficient)
VAX assembler
PDP assembler
VAX Datatrieve

I’m sure I’m forgetting some, too.

Does ANSYS Parametric Design Language (APDL) count? It’s a fairly basic application-specific language. If so then 1. If not, 0.

Hm… I’m not sure what use these kinds of lists are for anything, and particularly not sure what kind of use their sizes are, but, let’s see. In the past, I’ve made significant use of

  1. QBASIC
  2. TI-BASIC (See? Is it even worth counting this? I don’t remember a thing about its syntax now, but give me half an hour to reacquaint myself with it, and I could do whatever you want. Because it’s essentially the same as a million other languages…)
  3. UnrealScript (Believe it or not, my indirect stepping-stone to everything else, even the ones nothing like it)
  4. C++
  5. Haskell
  6. 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]]
  7. Common Lisp
  8. Scheme (Again, worth considering this different from Common Lisp? I don’t remember much about the details of the latter except “It’s like Scheme, but with two namespaces” (which confused the hell out of me when I was first exposed to it and sent me running to Haskell instead).]
  9. Auto Lisp (I remember nothing, except that it was a variant of Lisp used in AutoCAD. I can’t even remember if it was a Lisp-1 or a Lisp-2. But I did make significant use of it back in the day when I was still forced to spend time with AutoCAD…)
  10. Java
  11. Standard ML
  12. Prolog
  13. x86 assembly
  14. Banana (don’t ask me how…)

Ok, I’m kidding about that last one. And there are myriad others which I decided to cull for reasons which may not be any better than the reasons for leaving the ones I did. Plus, of course, there are many languages I’ve never really used and would not describe myself as “knowing”, but still generally understand code in when I see it (e.g., Javascript). I hate to be cliche… well, no, I’m perfectly happy to be cliche, but the important thing is not “How many programming languages do you know?”, but “What different programming paradigms/concepts/ways of thinking have you acquainted yourself with?”.

Now I pretty much only use C and perl, with a little bit of bash scripting thrown in. I don’t really remember enough perl to do much, but occasionally I need to do some serious text processing and I’ll relearn enough to accomplish a task.

In the past I’ve also known Ada and FORTRAN well enough to get things done, and I dabbled with BASIC, pascal, and FORTH, when I was a kid/teen. I answered 2-5.

TI-BASIC … that’s a toy. But the TI Extended-BASIC cartridge, that’s true power. It had built in support for sprites!

My mother bought me TI Extended BASIC for Christmas after much begging. I think that cartridge was $150 which probably cost more than the family car at the time.

Well, maybe I’m a language lawyer then. :wink: Properly written C++ and properly written C have very little in common besides the syntax and the primitive semantics. IME, being a good C++ programmer does not necessarily translate to being a good C programmer; there’s a different mindset involved, even after you strip away all the C++ features. Additionally, many of the features you use all the time in C should never* be used in C++, including but not limited to char* strings, C-style casting, malloc/free, and for that matter most of the standard library.

(* For certain values of “never”)

FWIW, I consider myself to be a very good C++ programmer, but only a decent C programmer. I just don’t write C all that often, so I’m not as comfortable with the standards and idioms. I suspect that any gray-bearded C guru could take one look at my code and say, “Yup, a C++ guy wrote this.”

Though I guess you have a point in that someone who knows C++ is in a much better position to understand C than someone who knows C is to understand C++.

Have you been stealing my specs?! :stuck_out_tongue:

Hm. Well, perhaps that explains it, then: when I first learnt C++, I happily (in emulation of all the examples I had seen) made use of C-style strings (shudder) and casting. I’m not sure what in the C standard library you’re referring to (I certainly stayed the hell away from printf, which had, for years, dissuaded me from learning any programming beyond BASIC…), but perhaps I used some of that as well. So, anyway, in my case, I learnt it all as a hodge-podge to begin with.

Hmmm, I cast as “11 or more” but upon reflection, I probably need to take some of those back as I’m no longer “proficient” in Fortran, Ada, Lisp or 80386 Assembler (or possibly for that matter, Java) due to disuse, though I’ve coded somewhat significant stuff in all of them. Especially since (with the exception of Java) I would have less than zero interest in coding something anew in those frameworks again.

I’m sure I could still code with minimal book looking up in BASIC, Pascal, C, C++, Perl, SQL, ksh or MS-DOS batch/command scripting.

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?

Even without going down that line of thought, is it so arrogant to use the term “language” to describe things other than specifically programming languages?

Yeah, at its most general, “language” just means a set of strings over some alphabet, usually derived by some set of rules. HTML definitely counts. However, it’s generally not considered a programming language because it isn’t used to describe computation, per se; instead its semantic purpose is to describe a document. I suppose you could argue that by describing a computerized document it is ipso facto describing computation, but that’s not the abstract purpose of HTML so I don’t think it counts. :wink:

What about XML then? It’s also ostensibly for describing documents, but people can (and do) write interpreters for XML-based scripting languages.

XML on its own is not a programming language. XML is a syntax you can use for any purpose. It has no defined semantics. You can, in fact, implement HTML in terms of XML. This has been done: It’s called XHTML.

HTML, on the other hand, is tied to describing a certain kind of document. It is not abstract in the ways XML is and can really only be used for that one purpose.