63

When is something language agnostic? Why is it called that?

9
  • 8
    I think it should really be called language polytheism since the belief is that there is more than one path to getting something done. Commented Dec 21, 2010 at 4:28
  • 1
    @muntoo, pseudo code itself is a language.
    – SK-logic
    Commented Apr 2, 2011 at 9:58
  • 1
    @SK-logic OK, then; how about: What you write in pseudo code is language agnostic? Commented Apr 2, 2011 at 20:12
  • 1
    @chrisaycock You mean polyglotism? Commented Jun 11, 2015 at 1:06
  • 3
    It should really be language ecumenical. It's not like you're unsure whether or not computer languages exist!
    – Rob K
    Commented Sep 28, 2017 at 14:58

4 Answers 4

76

Language agnostic refers to aspects of programming that are independent of any specific programming language. At least, that's how I've heard it used for the last thirty years.

The word "agnostic" is derived from the ancient Greek for "don't know". So something which is "language agnostic" doesn't need to know about computer languages; it means the same thing as language independent. Things that would be language agnostic include algorithms, or Agile, or a runtime library with bindings to many languages.

Some Mac OS X features are not language agnostic, because they're really designed to be used from Objective C, can only be used with difficulty from C or C++, and don't even have bindings for many languages.

There can also be a subtext to using "language agnostic" rather than other terms.

In colloquial English, someone who says they're "agnostic" means they are neither religious nor an atheist: they "don't know" about God. This is usually verbal code for "I don't like to talk about religion, so don't try to convert me."

So sometimes when people talk about being "language agnostic", they're trying to stay out of arguments about what computer language is better.

6
  • 6
    BTW, agnostic comes from "a" (not) + "gnosis" (knowledge). Other words like it are "atheist" and "atypical".
    – Bob Murphy
    Commented Dec 21, 2010 at 5:31
  • 2
    Yep I've always taken it as a reference to the fact the language wars are basically religious wars: language-agnostic techniques/advice/concepts avoid the holy war. Commented Dec 21, 2010 at 5:42
  • Off-Topic: gnostic/agnostic refers knowledge. Atheist / theist refers to believing or affirming the existance. So technically you can have an agnostic religious believer or an agnostic atheist. But the explanation was very clear. You can also talk about a database agnostic system
    – Borjab
    Commented Jan 20, 2016 at 11:28
  • @Borjab I am agnostic believer in Vim. But I use Emacs for practcal reasons.
    – Brandin
    Commented Jan 20, 2016 at 13:58
  • 1
    Language agnostic refers to aspects of programming that are independent of any specific programming language. When you say any does that mean a or does it mean all? The cardinality is critical. For example, if a statement applies to OOP languages and is not restricted to one specific OOP language, but does not apply to Functional languages, is the statement language agnostic?
    – jaco0646
    Commented Oct 12, 2018 at 20:09
9

When a solution is called "language-agnostic" you are literally saying that your solution "doesn't know about" languages, meaning its universal or independent from language specifics (paradigms, language idioms, etc).

For example, design patterns are language-agnostic, because the way they are described the specific implementation doesn't matter as long it sticks to the whole or a subset of the pattern (v.gr. some design patterns can be implemented without OOP).

UML is language-agnostic, BPMN is language-agnostic, ERM is language-agnostic. An algorithm in pseudo-code is language agnostic...

Anything that is meant to be programmed but not described in a specific language can be called language-agnostic.

3
  • 4
    Agnostic means "don't know about", not "doesn't believe in". Subtle but important difference!
    – JacquesB
    Commented Jun 10, 2015 at 20:19
  • BPMN certainly is not language-agnostic, because it models processes. There are programming languages where you define merely the precondition and the desired result and the process unfolds implicitly, e.g. Prolog. Even Haskell and BPMN don't go together particularly well, because of Haskell's lazy evaluation strategy that causes things to not happen according to some imperatively defined order of things.
    – back2dos
    Commented Jan 20, 2016 at 10:16
  • some design patterns aren't possible in certain languages. for example those that depend on mutability aren't applicable in functional languages
    – joel
    Commented Jan 2, 2020 at 11:40
6

Paradigms or features that aren't applied to only one language.

2

I haven't heard the term before, however, I would assume it means learning aspects of programming that are independent of any specific programming language.

6
  • 1
    why is it called that way?
    – Louis Rhys
    Commented Dec 21, 2010 at 4:57
  • 1
    That's pretty much the way I've heard it used for the last thirty years.
    – Bob Murphy
    Commented Dec 21, 2010 at 4:57
  • 1
    I'm removing this response to post it as an answer.
    – Bob Murphy
    Commented Dec 21, 2010 at 5:06
  • @bob: agreed. but where is the answer?
    – Louis Rhys
    Commented Dec 21, 2010 at 5:26
  • @Louis Rhys: Sorry, took me a few minutes to write it correctly. It's up.
    – Bob Murphy
    Commented Dec 21, 2010 at 5:29

Not the answer you're looking for? Browse other questions tagged or ask your own question.