The opposite of specific.

English has a shorter, more beautiful word for this: any. A generic X is any X. (A specific X is some X.)

The more specific meanings of the word are derived from this. I'll add some that haven't been mentioned.


In natural language, a generic expression is an expression that grammatically refers to an instance of a certain class, and uses it to say something about members of that class in general. This is what the Webster definition is trying to say. Example:


  The microchip was a major technological advance.
  The microchip came loose and fell on the floor.

In the first sentence, the microchip is a generic expression: it doesn't refer to a particular microchip. Now consider


  The noder isn't easy to please.

This is an ambiguous statement: it can be used to say something about a particular noder, or about any noder; in the latter case, the noder is used in a generic sense.

Let's try some logical analysis to find out the exact difference. What is the exact information content that both meanings try to communicate?

We can think of this in terms of predicates. Two predicates are applies in the sentence: someone an be said to be a noder, and someone can be said to be easy to please. In the specific sense, noder is used to identify a person: the listener is assumed to be able to use the fact that someone is a noder to identify that person. The information content, then, is the assertion that this person is easy to please. In the generic sense, noder is used to assert that any noder is easy to please.

Serious logical argumentation shouldn't be hampered by ambiguities. Logicians such as Aristotle, Gottlob Frege and Bertrand Russell tried to disambiguate language in order to provide a cleaner and nonambiguous medium for the expression of logical arguments.

We can disambiguate this sentence in several ways:



  This particular noder isn't easy to please.
  Noders aren't easy to please.

Using the plural helps here. But it doesn't solve everything: as shown above, generic expressions can be singular in form, but 'plural in meaning'. However, we can avoid plurals altogether by the introduction of quantifiers and connecting predicates by logical connectives only:


  Among the persons,
    one is a noder and is not easy to please.
  Among the persons,
    not one is a noder and is easy to please.

This is very close to the formalized language known as predicate logic. The main difference is that predicate logic has a specific shorthand syntax and a formal set-theoretical definition of its semantics. Also, it uses unknowns (a.k.a. variables).

In predicate logic, the two sentences look like this:



  exists_one x in Persons:
    Noder(x) and not EasyToPlease(x)
  for_all    x in Persons:
    not ( Noder(x) and EasyToPlease(x) )

The general structure of sentences in predicate logic: we have one or more domains of values, in this case, Persons. Quantors such as bind variables to a domain. These variables are then used within predicates, that are combined into expressions using logical connectives.

Note that while the original sentence has been disambiguated, we use generic expressions to do this! All sentences of predicate logic are generic. That is, unless we introduce constants. A constant is the equivalent in mathematical logic, of a specific expression in natural language. The meaning of a constant is assumed to be mutually understood. With a constant p I can say:



  not EasyToPlease(p)
 

If the domain values are structured, for instance, in a database, genericity turns into a mathematical property: the meaning of a logical expression is insensitive to all permutations on the value domain that respect the domain structure and fix the constants in the expression.

This property is used as a general characterization of database languages. One might say that it defines 'declarativeness'. It is relevant when studying the relative expressive power of logical languages.