4
$\begingroup$

Names can be chosen for a programming language in order to communicate information about that programming language. For example, C is named C because many of its features are taken from an earlier programming language called B. C++ was named C++ because it's an improvement on C. How can the name of a programming language communicate details about the design of the language?

$\endgroup$
3
  • 4
    $\begingroup$ How is this closed? I don't see how is this question different from other [syntax] questions $\endgroup$
    – ice1000
    Commented May 26, 2023 at 3:49
  • 1
    $\begingroup$ I would also like to mention C-- which is meant to be a target for compilers. $\endgroup$ Commented May 26, 2023 at 9:46
  • 1
    $\begingroup$ IMO this is slightly on the non-acceptable side, and future such questios should be discouraged, but I'd leave it open because it is interesting, and leave this as an exception. $\endgroup$
    – Seggan
    Commented Jun 2, 2023 at 17:16

2 Answers 2

11
$\begingroup$

Generally none at all

The name of a thing does not have to relate to its function at all.

Naming languages is more of a cultural / social thing.

My first instinct is that this is a bad question.

Also questions about naming languages may be off topic altogether. See Are questions about naming a programming language on-topic?

However, I feel compelled to consider the topic.

C++ was originally named C with classes.

  • With classes obviously because the design added classes
  • The incremental operator was the inspiration for it becoming ++
  • This use of ++ has been inspiration for other languages.
  • Incrementing B to C, gave us C and incrementing C to D gave us D.

Its hard to name things functionally. Unless you have an acronmym to work from. QCL = Quantum Computing Language for example.

prolog -> logic programming

The vast majority of emerging languages have seemingly arbitrary names chosen because the designer thinks they sound cool and so they can be found in internet searches.

For example, there is no obvious functional relation for:

  • Java
  • Pony
  • Elm
  • Nim
  • Python

The only hint of pattern is occasional use of ancestry. For example:

  • Typescript and Coffeescript are named for their ancestor Javascript
  • Datalog is named for its ancestor Prolog
  • Kotlin is named after an island like its parent Javasource

However apparently:

  • Rust - is meant to refer to the internal bits in contrast to the user facing 'chrome' of Firefox. (this long predates Google chrome but I've no idea if it had any influencing on its naming).
$\endgroup$
7
  • $\begingroup$ The name "Rust" is meant to be in contrast to "chrome", not the browser, but a term for the user-facing parts of a program which need to be polished for a good user experience. Rust is a systems language, so it's designed for developing software that doesn't need to be pretty or user-friendly; and it's "close to the metal". So its name does has some relation to its design and purpose. $\endgroup$
    – kaya3
    Commented May 26, 2023 at 10:47
  • $\begingroup$ Interesting choice considering rust came from Mozilla (firefox) rather than Google (chrome). $\endgroup$ Commented May 26, 2023 at 16:09
  • 1
    $\begingroup$ The Firefox project uses the term "chrome" for this in their own codebase and internal docs: firefox-source-docs.mozilla.org/build/buildsystem/… I don't know if the name of the Chrome browser comes from the same meaning. $\endgroup$
    – kaya3
    Commented May 26, 2023 at 16:16
  • $\begingroup$ Mentioned rust vs chrome and kotlin without citation or attribution. Feel free to edit if you can improve. This should probably be a community wiki $\endgroup$ Commented May 30, 2023 at 16:16
  • 1
    $\begingroup$ @kaya3 The term “chrome” for the user interface part of the browser dates back at least to 2000 in Mozilla (Firefox's ancestor), so it's older than Google's Chrome software. The earliest reference I can find is the browser.chromeURL preference added to Mozilla in 2000, but the name “chrome” may already have been used earlier in Netscape (Mozilla's ancestor) (I'm not sure about that part). $\endgroup$ Commented May 31, 2023 at 18:40
9
$\begingroup$

Literal descriptions of what the language is

The most literal name for a language is probably APL, which stands for A Programming Language; but that doesn't really tell you anything about APL.

On the other hand:

  • ALGOL is an "algorithmic language".
  • Fortran is a "formula translator".
  • Lisp is a "list processor".
  • BASIC (Beginners' All-purpose Symbolic Instruction Code) is a general-purpose language designed for beginners.
  • PHP (PHP Hypertext Preprocessor) is a hypertext preprocessor.

Languages in this category tend to have acronyms or abbreviations for names, because a whole phrase describing the language would be too long for a name.

Referencing the name of another language

All programming languages borrow some features from languages before them, but many borrow mainly from one particular language. Some languages are trying to improve on a particular predecessor, while others borrow large parts of another language without trying to be a "better version" of it.

Languages whose names refer to another language usually indicate that they share at least one distinctive feature of that language:

  • C has raw pointers, manual memory management, and inline assembly; C++ and D both position themselves as successors to C, while Objective-C is C with objects. (Perhaps amusingly, C itself was a successor to a language named B.)
  • ML has first-class functions, currying, and algebraic data types; CakeML, Alice ML, Dependent ML, and ReasonML are in this category. (OCaml is another dialect of ML, named after CAML, but the ML in CAML is apparently a coincidence!)
  • Lisp has several dialects, many of which have "Lisp" in their name.
  • Likewise for BASIC.

Some references may be oblique, but they are done for the same purpose; e.g. languages based on Java may have names referencing coffee in some way. Kotlin, also based on Java, is named after an island because Java is also the name of an island. Meanwhile, Crystal is based on Ruby.

A very oblique example is Agda, named after a fictional Swedish hen, where the language is based on Coq (a French word for a male hen). However, very few people will probably recognise this reference, and particularly not new users, so it's more of an "easter egg" than a way of communicating something about the language.

There are also a few cases where a popular language's name is referenced for marketing reasons, trying to make the language appeal more to users of that language even though they have relatively little in common. C♯ and JavaScript fall into this category; the former has far more in common with Java than C, and the latter has little in common with Java except for some names in its standard library.

Referencing a historical figure

Some languages are named after a particular person, usually a famous academic who worked in computer science or mathematics. This usually conveys that the language is mathematical in nature, more abstract than other contemporary languages, or aimed at academics. Examples include Pascal, Ada, Haskell, Erlang, and Darwin (a language meant for biologists).

Alternatively, it may mean that something about the language's design is specifically based on that person's work. For example, MarkovJunior is named after Andrey Markov, who introduced the concept of Markov algorithms which the language is based on.

Paradigm

Most general-purpose languages are in the imperative paradigm, so languages in other paradigms may choose names which describe this:

  • Prolog is a logic programming language,
  • F♯ is a functional language.
  • Objective-C is object-oriented.

Word association

Some language names don't directly describe the language, but do evoke some idea that is somehow related to the language. This might be purely descriptive, or it might be for marketing, depending on how subjectively the evoked idea applies to the language.

  • Modula is for modular programming.
  • Scala is "scalable".
  • Factor is a concatenative language, in which arbitrary subprograms can be "factored out".
  • Rust is for programming "close to the metal", for programs that don't have to be pretty or user-friendly.
  • QuickBASIC and Swift presumably want you to think they are quick to write in, or that they run quickly.
  • Smart Pascal might want you to think that the language is smart, or you're smart for using it.

The use of positive subjective words like "quick" or "smart" is pretty transparent, and people generally don't like to feel like they're being marketed to, so not many languages go for this.

Specialisation

Many languages are not general-purpose, they are designed for a specialised problem domain or use-case. Domain-specific languages usually have names which refer to their specialisation in some way, often directly.

  • TeX is used for generating text-based documents.
  • Many query languages have names ending in "QL" (e.g. SQL, GraphQL) or otherwise reference this in their name, e.g. XQuery.
  • GLSL (OpenGL Shading Language) and HLSL (High-Level Shader Language) are for writing shaders.

This partly overlaps with "languages whose names literally describe the language".

The word "script"

It's hard to pin down exactly what distinguishes a "script" from a "program", but generally speaking, if a language has "script" in its name then this usually means one of two things:

  • It is interpreted, dynamically typed, and allows top-level statements; it's typically meant for writing short programs which automate an otherwise manual task, or programmatically control something which would otherwise be manually controlled. ActionScript, AppleScript, LotusScript, Pascal Script, VBScript.
  • It compiles to JavaScript. TypeScript, PureScript, ClojureScript, CoffeeScript, ReScript.

There are some exceptions, e.g. PostScript isn't really a scripting language, and AssemblyScript compiles to WebAssembly rather than JavaScript. ("AssemblyScript" seems to be a reference to TypeScript.)

Joke languages

Many esolangs ─ e.g. Brainfuck, Befunge, Malbolge, LOLCODE ─ are not meant to be taken seriously, so they have names which either make the joke obvious, or at least sound a bit silly.

Nothing

Many language names really don't say anything about the language itself. Names like Python, Ruby, Lua, Idris or Pony are references to other things that don't evoke any ideas about what the language is like or what it is meant for.

$\endgroup$
16
  • $\begingroup$ HLSL is also a shader language, most of them use the same postfix $\endgroup$
    – mousetail
    Commented Jun 1, 2023 at 14:36
  • $\begingroup$ AssemblyScript exists which is a compiled javascript lookalike thus is neither like assembly nor a scripting language $\endgroup$
    – mousetail
    Commented Jun 1, 2023 at 14:38
  • 1
    $\begingroup$ PHP used to mean Personal Home Page. Then it stopped meaning anything, and the backronym was adopted somewhere during PHP5 if memory serves. $\endgroup$
    – Longinus
    Commented Jun 1, 2023 at 15:33
  • 2
    $\begingroup$ @Longinus Originally it was "Personal Home Page Tools", abbreviated as "PHP Tools", and later FI for "Forms Interpreter", then PHP/FI for version 2. The change to "PHP Hypertext Preprocessor" came about in version 3 (released in 1998), not version 5 (which was six years later). php.net/manual/en/history.php.php Still, all three of these names are literal descriptions of what the language is for. $\endgroup$
    – kaya3
    Commented Jun 1, 2023 at 15:41
  • 1
    $\begingroup$ This answer is missing a section on punny names. For example Coq is almost CoC because it's an implementation of the Calculus of Constructions, but also mainly developed in France (“coq” is French for the cockerel which is the national bird of France), and one of the fathers of the language is called Coquand. (I don't know if they knew or cared what it sounds like in English. The people who named later similar languages FoC and Phox absolutely knew what they were doing.) $\endgroup$ Commented Jun 1, 2023 at 23:07

Not the answer you're looking for? Browse other questions tagged .