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?
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:
The only hint of pattern is occasional use of ancestry. For example:
- Datalog is named for its ancestor Prolog
- Kotlin is named after an island like its parent Javasource
- 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).
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.
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.
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.
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.
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.
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.
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.