11

In the context of computer programming, I often see constructions where I expect the word "the" to appear, but it's omitted:

What's going on here? Is this a pecularity of programmer slang, or is there a more general feature of English that I'm not recognizing? The closest thing I can think of in standard English is geographical titles like "Lake Michigan" or "Mount Rainer": we say "I saw Lake Michgan", not "I saw the Lake Michigan". But here, the title is truly part of the proper noun it heads, unlike a construction like "method DEX".

9
  • 9
    Often these are written by non-native speakers of English. The first example appears to be from a Slovenian institution; the third seems to be authored by a Belgian and a German.
    – psmears
    Mar 27 at 17:02
  • 1
    And the second one is using the word "computation" for what is more probably correct to call a "function" or "method," but might be a Haskell2010-specific usage
    – Yorik
    Mar 27 at 20:12
  • 6
    All three examples are perfectly natural to this British programmer. I won't attempt an explanation -- see @TimR's answer for that. I just wanted to assure you that this is nothing to do with the authors being non-native speakers.
    – TonyK
    Mar 28 at 23:23
  • 3
    When you spend enough time programming, it changes the way you think. When I write about programming, I find I tend to more terse, logical constructs. I'm not aware of any 'real' programming language that uses articles, and they don't add much meaning. You replace "the Foo class" with "class Foo" in a lot of contexts. The latter eliminates a (junk) word which tends to appeal to most programmers.
    – JimmyJames
    Mar 29 at 20:26
  • 2
    To my previous point, I'm not sure why you say 'I expect "The package lbfgs"' The more natural English (to my ear) would be 'the lbfgs package'. 'The package lbfgs' seems stilted and awkward to me. It's like saying 'the language English'
    – JimmyJames
    Mar 29 at 20:31

6 Answers 6

4

I agree with @psmears' answer that these examples are more suggestive of having non-native authors than they are of the way English is typically used by programmers in prose. @TimR's answer notes that these sentences aren't ungrammatical in English; however, just because they are grammatical doesn't mean they sound natural. As a native-English-speaking programmer myself, I too would expect the word "the" in each of your three examples; they sound strange without it.

That said, this depends on the register. You may be familiar with how English is used quite distinctively in newspaper headlines (so-called "headlinese"). Likewise, there is a particular way that error messages tend to use English which is distinct from prose or conversational English. The most famous example is perhaps "404 File Not Found", which omits the article and the verb in much the same way a newspaper headline would.

Out of interest, I took a look at the error messages which the Typescript compiler might emit (here; I chose Typescript because its error messages are very typical of compilers in general, from my experience). Most of them either do use articles, or are sentence fragments anyway (e.g. "Identifier expected."), but there are plenty which omit articles while otherwise being complete sentences:

  • "Parameter cannot have question mark and initializer."
  • "Enum member must have initializer."
  • "Type parameter list cannot be empty."
  • "Jump target cannot cross function boundary."
  • "Variable declaration list cannot be empty."
  • "Interface declaration cannot have 'implements' clause."

Several are of the "role" form described by @TimR:

  • "Private field '...' must be declared in an enclosing class."
  • "File name '...' differs from already included file name '...' only in casing."
  • "Module '...' has no default export."
  • "Type predicate '...' is not assignable to '...'."
  • "Parameter '...' is not in the same position as parameter '...'."
  • "Method '...' cannot have an implementation because it is marked abstract."

It's quite possible that, especially for programmers who are not native English speakers, the particular way English is used in error messages could influence the way they use English in other contexts. Particularly if the authors of your examples use articles correctly for other nouns, perhaps they learned to write "method" or "package" instead of "the method" or "the package" from their compiler.

22

The nouns in your examples are being referred to as roles in the system, hence the absence of an article.

It is analogous to

Shortstop Trea Turner is now the second Philadelphia Phillies player ever to hit 10 home runs in 11 games.

P.S. @EdwinAshworth points out in a comment below that {type of entity} + name is another explanation for the absence of the article ("spaniel Sam", "baby Jill", "arthritis-sufferer Amy", and "tank engine Thomas"), but that is not the best explanation here, IMO, inasmuch as the entities "package", "method", and "computation" have specific code-organizational purposes (aka roles) in a software context

P.P.S. That said, one can understand "role" at a higher level of abstraction to refer to how the entity "fits into" or "belongs" to a context; and that is how "spaniel Sam" and "baby Jill" and "tank engine Thomas" and "arthritis-sufferer Amy" work, the modifier, sans article, identifying the single most contextually relevant characteristic."standard-gauge Thomas" would be weird in the Barbie-wedding context (except as a humorous remark alluding to Barbie's non-standard features) and "fellow-human Jill" would be even weirder in the family photo context for precisely that reason.

P.P.P.S. And just to be clear, when the premodifier identifies a role, purpose, or function, the omission of the article is licensed, but it is not required to be omitted. You will find many such instances where (the) determiner "the" is used.

15
  • Perhaps broader than roles (applications? ...?): 'Project Gutenberg is a library of over 70,000 free eBooks.' Mar 27 at 20:02
  • No, just the opposite, narrower than application. They can all be parts of an application. A "package" is an organizational bundle, and a method is a series of logical steps with a "theme", i.e. it does something in particular, such as determining whether a particular tax applies to a transaction, and a computation has a narrow definition and purpose.
    – TimR
    Mar 27 at 20:19
  • 1
    @EdwinAshworth See the P.S. to my answer.
    – TimR
    Mar 28 at 11:42
  • 1
    'Homicidal maniac Johnny C', 'notable criminal Al Capone', 'prisoner Elizabeth Osborne', and 'confirmed bachelor John Watson' are perhaps examples with initial-noun referents half way between roles and entity types. Mar 28 at 16:57
  • 1
    Are "shortstop Trea Turner" and "arthritis-sufferer Amy" two different constructions? I can't see any difference between them. Mar 29 at 14:48
5

I too have come across this relatively frequently, but in almost all instances these examples are produced by non-native speakers of English.

Taking your examples:

  • "…is powered by method DEX and aimed at…"

    This is from a site owned by the Jožef Stefan Institute, which is in Slovenia. I would most likely word this "the DEX method".

  • "Computation hReady hdl indicates whether…"

    This is from the Glasgow Haskell Compiler documentation, which was (at least originally) based in Glasgow, but has many international contributors. The particular wording you quote can be traced back to the Haskell 98 Report; while the editor is British, many of the contributors are not native speakers of English. I would expect "The computation hReady", and indeed much of the documentation on the page you link to does use the definite article.

  • "Package lbfgs wraps the libBFGS C library…"

    This appears to be from a paper written by a Belgian and a German. I would expect "The lbfgs package...".

So there's strong evidence to suggest that most of the instances like this are produced by non-native speakers of English, quite possibly influenced by the grammar of their native languages (which may not have articles, or may have them but use them differently). I don't think it's particularly an aspect of computer programming as a field, other than that the field is diverse and international.

1
4

It’s also for shortness. Few people want to read more lines of documentation/code than absolutely necessary, so "programmer speak" cuts out that which is easily inferred.

1

I'm afraid this is a 'natural' form of 'programmer speak', which always suggests to me that the programmer has not yet internalized the grammatical classifications of the programming language in use, and therefore feels it necessary to annotate everything. The programming language has packages, methods, and computations the way English has buildings, instructions, and internal mental gymnastics. There is a peculiar difference as to the number of classifications--the programming language may have ten or twenty such classifiers, whereas natural language admits thousands without need of continual annotation. It would be very weird indeed to say I went to building post office, ate meal lunch at fast food building, and later danced with significant other object, but (many) programmers seem to have a very pronounced fear of name space collisions. The missing articles are much easier to explain--programming languages don't have them, and a compiler for English would treat them as semantically irrelevant white space, so--skip it.

The source of all the weirdness is probably a consequence of acquired chronic contraction syndrome. If you can't pronounce the words, you can't really read the stuff, you just parse syntax. Annotation helps with parsing, so you add 'mark up'.

This is not about foreigners writing ESL. It is about programmers writing ESL.

0

For software the "definitive article" concept is a bit weird. Because it's all digital, although there are many copies - a program on my computer is different electrons from the same program on another computer - all the copies are identical bit-for-bit and therefore there can be said to be only one software. So, in some way, it feels natural to use a "proper noun" construction because the concept in the code is a unique thing. When talking about about books, it makes sense to say ".. is described in chapter two where..." for example; there are many books, but there is only one content.

Another viewpoint is that many people who write software have an academic background, and therefore tend to use impersonal and abstract writing styles. If those sentences were about experimental methods in a laboratory, rather than software, then it could be written in the same form. I think this particularly applies to the second and third examples given.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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