194

There is a lot of confusion about this and I'd like to know, what exactly is the difference between depreciated, deprecated and obsolete, in a programming context, but also in general.

I know I could just look at an online dictionary, and I have, even at many, but they don't all agree, or there are differences in what they say. So I decided to just ask here, considering I also want an answer in a programming context.

If I understand right, deprecated means it shouldn't be used anymore, because it has been replaced by a better alternative, or just because it has been abandoned. Obsolete means it doesn't work anymore, was removed, or doesn't work as it should anymore. And depreciated, if I understand right, once more, has completely nothing to do with programming and just means something has a lowered value, or was made worse.

Am I right, or am I wrong, and if I am wrong, what exactly do each of these mean?

Mark Otaris
  • 2,101
  • 2
  • 13
  • 10
  • 1
    Your understanding is correct. 'Obsolete' may also mean that it never worked, of course. – user207421 Aug 22 '14 at 02:12
  • Related: [Why is there confusion between depreciated and deprecated?](https://english.stackexchange.com/questions/45295/why-is-there-confusion-between-depreciated-and-deprecated) on english.stackexchange.com – Gras Double Jul 09 '17 at 07:03
  • 3
    From [MDN][1]: **Deprecated features** These deprecated features can still be used, but should be used with caution because they are expected to be removed entirely sometime in the future. You should work to remove their use from your code. **Obsolete features** These obsolete features have been entirely removed from JavaScript and can no longer be used as of the indicated version of JavaScript. [1]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features – slashCoder Apr 26 '18 at 21:31
  • 1
    I'm closing this question as off-topic because it is not about a practical programming problem as outlined in the [help/on-topic]. – Martijn Pieters Mar 14 '19 at 16:32
  • 5
    @MartijnPieters Is there a Meta discussion on that anywhere? Closing useful "difference between" questions doesn't seem great, but I guess it also isn't possible to migrate to e.g. Software Engineering at this point? Is the issue with "difference between" questions in general? Or is the issue the "but also in general" part and the question about "depreciated" (which could be edited out)? – Brian McCutchon Mar 15 '19 at 04:32
  • @BrianMcCutchon this is a *language* topic, not a programming question. Posts older than 60 days can’t be migrated anywhere, sorry. – Martijn Pieters Mar 15 '19 at 08:16
  • 2
    It's a language topic specific to the programming space. Yet another example of great information closed because poor fundamental principles. – jpmorris May 16 '22 at 17:15
  • Closing this question was not a nice move. I rather judge it an interesting topic *very related to programming* where the correct usage of terms to communicate something to the user is as fundamental as proper actual coding. This is particularly true on the light that too many developers are actually misusing the word "depreciated" where they should really use "deprecated". So spreading the proper knowledge is fundamental and not something to be CENSORED – elena Jul 19 '22 at 11:33

8 Answers8

279

You are correct.

Deprecated means that it is still in use, but only for historical purposes and it will be removed probably in the next big release. It is recommended that you do not use deprecated functions or features - even if they are present in the current library for example.

Obsolete means that is already out-of-use.

Depreciated means the monetary value of something has decreased over time. E.g., cars typically depreciate in value.

Also for more precise definitions of the terms in the context of the English language I recommend using https://english.stackexchange.com/.

Community
  • 1
  • 1
Elzo Valugi
  • 27,240
  • 15
  • 95
  • 114
  • 5
    I don’t mean this in the strict monetary sense, but an API does have a perceived value. Thus, it can be said to depreciate. If an API does depreciate then it’s more likely to be deprecated… which inevitably leads to further depreciation. This correlation might help to explain the confusion of the two terms, and how the distinction may go undetected. – Antony Mar 06 '19 at 13:07
  • 13
    @Antony no, you are reaching here. – jarmod Mar 27 '21 at 16:50
  • 1
    @jarmod I prefer ‘speculating’. For the longest time I didn’t realise the two terms were distinct, so my only strong claim is that at least one person has been affected as outlined. – Antony Apr 09 '22 at 10:38
92

Records are obsolete, CDs are deprecated, and the music industry is depreciated.

Tim Eckel
  • 1,405
  • 11
  • 10
43

In the context of describing APIs and such, "depreciated" is a misreading, misspelling, and mispronunciation of "deprecated".

I'm thinking people have just seen "depreciated" so often in other contexts, and "deprecated" so rarely, that they don't even register the "i" or lack thereof. It doesn't exactly help that their definitions are similar either.

cHao
  • 84,970
  • 20
  • 145
  • 172
  • 4
    I thought it was the other way around, that originally "depreciated" was meant, but misspelt and copied, and became commonplace. – PeteGO Jan 19 '16 at 22:10
  • 3
    @PeteGO: Nope. Both words have existed independently (with different etymologies) for a long time, and the one without the 'i' is the more appropriate one. ("Deprecate" has origins in the Latin for "pray against" or "ward off".) "Depreciate" _kinda works_, since a side effect of deprecation is a devaluing, or depreciation, of the thing being deprecated. But that's a side effect of the action, not the action itself. – cHao Jan 28 '16 at 07:11
24

Obsolete: should not be used any more

Deprecated: should be avoided in new code, and likely to become obsolete in a later version of the API

Depreciated: usually a typo for deprecated (depreciation is where the value of goods goes down over time, e.g. if you buy a new computer its resale value goes down month by month)

Matthew Strawbridge
  • 19,940
  • 10
  • 72
  • 93
8

With all due respect, this is a slight pet peeve of mine and the selected answer for this is actually wrong.

Granted language evolves, e.g., "google" is now a verb, apparently. Through what's known as "common use", it has earned its way into official dictionaries. However, "google" was a new word representing something heretofore non-existent in our speech.

Common use does not cover blatantly changing the meaning of a word just because we didn't understand its definition in the first place, no matter how many people keep repeating it.

The entire English-speaking computer industry seems to use "deprecate" to mean some feature that is being phased out or no longer relevant. Not bad, just not recommended. Usually, because there is a new and better replacement.

The actual definition of deprecate is to put down, or speak negatively about, or to express disapproval, or make fun of someone or something through degradation.

It comes from Latin de- (against) precari (to pray). To "pray against" to a 21st century person probably conjures up thoughts of warding off evil spirits or something, which is probably where the disconnect occurs with people. In fact, to pray or to pray for something meant to wish good upon, to speak about in a positive way. To pray against would be to speak ill of or to put down or denigrate. See this excerpt from the Oxford English Dictionary.

  1. Express disapproval of: (as adjective deprecating) he sniffed in a deprecating way

  2. another term for depreciate ( sense 2). he deprecates the value of children’s television

What people generally mean to convey when using deprecate, in the IT industry anyway, and perhaps others, is that something has lost value. Something has lost relevance. Something has fallen out of favor. Not that it has no value, it is just not as valuable as before (probably due to being replaced by something new.) We have two words that deal with concept in English and the first is "depreciate". See this excerpt from the Oxford English Dictionary.

  1. Diminish in value over a period of time: the pound is expected to depreciate against the dollar

  2. Disparage or belittle (something):

Notice that definition 2 sounds like deprecate. So, ironically, deprecate can mean depreciate in some contexts, just not the one commonly used by IT folk.

Also, just because currency depreciation is a nice common use of the word depreciate, and therefore easy to cite as an example, doesn't mean it's the only context in which the word is relevant. It's just an example. ONE example.

The correct transitive verb for this is "obsolete". You obsolete something because its value has depreciated.

See this excerpt from the Oxford English Dictionary.

Verb - Cause something to be or become obsolete by replacing it with something new.

It bugs me, it just bugs me. I don't know why. Maybe because I see it everywhere. In every computer book I read, every lecture I attend, and on every technical site on the internet, someone invariably drops the d-bomb sooner or later. If this one ends up in the dictionary at some point, I will concede, but conclude that the gatekeepers of the English lexicon have become weak and have lost their way... or at the very least, lost their nerve. Even Wikipedia espouses this misuse, and indeed, defends it. I've already edited the page thrice, and they keep removing my edits.

Something is depreciated until it is obsolete. Deprecate, in the context of IT, makes no sense at all, unless you're putting down someone's performance or work or product or the fact that they still wear parachute pants.

Conclusion: The entire IT industry uses deprecate incorrectly. It may be common use. It may be some huge mis-understanding. But it is still, completely, wrong.

Jasonovich
  • 621
  • 5
  • 13
  • 8
    I'm not sure it's fair to say the accepted answer is wrong considering that the question explicitly asks what the terms mean "in a programming context". Your answer even concedes that the IT industry doesn't use the terms according to the definitions you provide. – Martin Ellis Aug 22 '14 at 00:45
  • Again, this is not a matter of opinion, it is a matter of fact. The definition and proper usage of these is clearly defined. The "computer industry" and its use of these words is irrelevant. The correct transitive verb to use to describe a feature that is out-dated is obsolete. The correct intransitive verb to use to describe a feature that is out-dated is depreciate. Deprecate means to denigrate or demean and is always nonsensical in the context of computers and computer programming. Period. It is a FACT, like evolution and climate change, and is simply not up for debate. – Jasonovich Oct 13 '14 at 20:35
  • 11
    @Jasonovich, while your terminology analysis is correct, I think your conclusion that "Deprecate, in the context of IT, makes no sense at all" is a bit drastic. When a feature/work is no longer recommended, then **its usage** - not the feature - has been deprecated (by the authors, probably). This makes perfect sense. Saying that a feature is deprecated as a shortcut for "the usage of this feature has been deprecated" sounds acceptable to me. But even to deprecate the feature itself, with the evil intent of disowning it due to its age/whatever.. I can hate my old code as much as I like, right? – cornuz Oct 14 '14 at 14:31
  • 9
    "If this one ends up in the dictionary at some point, I will concede". According to American Heritage (a dictionary founded because Webster's was "too permissive"), 'deprecate' means "To mark (a component of a software standard) as obsolete to warn against its use in the future so that it may be phased out." See https://ahdictionary.com/word/search.html?q=deprecate – Martin Ellis Oct 14 '14 at 15:50
  • 1
    The Free Online Dictionary of Computing might be considered a better indication of usage within IT: http://foldoc.org/deprecated – Martin Ellis Oct 14 '14 at 15:52
  • I see that the dictionary reference you mentioned has added this and it appears that the guardians of the English lexicon have kowtowed to common use, however misguided it may be. This is purely argumentum ad populum, but in this day and age, I expect it. Yay ignorance! – Jasonovich Nov 05 '14 at 22:21
  • I believe this topic has already been covered: "A rose by any other name..." – whitey04 May 28 '15 at 21:54
  • 1
    The ability for a group of people to change the meaning of a word is amazing. It should be encouraged not ridiculed. – Banjocat Oct 22 '15 at 16:03
  • 34
    This answer is deprecated. – PeteGO Jan 19 '16 at 22:13
  • 4
    "thoughts of warding off evil spirits or something". Yes! Avoid the use of deprecated functions to ward of evil spirits (i.e. run-time intermittent bugs) :-) – user2268788 Jun 24 '16 at 00:38
  • 2
    Re "Common use does not cover blatantly changing the meaning of a word just because we didn't understand its definition in the first place, no matter how many people keep repeating it." - actually it does, although see the Usage Wars: http://instruct.westvalley.edu/lafave/DFW_present_tense.html – A E Nov 23 '16 at 11:00
  • 3
    I pray against people using our deprecated methods all the time so they can be retired. Works for me. – Dave Newton Feb 12 '18 at 17:04
  • 3
    I would argue that if a developer marks their library as 'deprecated', they are 'warding off' people from using that as it is an older version that won't be maintained further, not because it has decreased in value. – Adam Marshall Jul 17 '19 at 08:50
  • Well, at least it seems that "depreciated" is more common as a word: https://books.google.com/ngrams/graph?content=deprecated%2Cdepreciated&case_insensitive=on&year_start=1800&year_end=2019&corpus=15&smoothing=3&share=&direct_url=t1%3B%2Cdeprecated%3B%2Cc0%3B.t4%3B%2Cdepreciated%3B%2Cc0%3B%2Cs0%3B%3Bdepreciated%3B%2Cc0%3B%3BDepreciated%3B%2Cc0 – James Wilkins Nov 05 '19 at 20:32
  • @PeteGO 10 Saddest Anime Deaths That Were Easily Avoidable – partyphysics May 05 '22 at 18:16
6

In computer software standards and documentation, the term deprecation is used to indicate discouragement of usage of a particular software feature, usually because it has been superseded by a newer/better version. The deprecated feature still works in the current version of the software, but it may raise error messages or warnings recommending an alternate practice.

The Obsolete attribute marks a program entity as one that is no longer recommended for use. Each use of an entity marked obsolete will subsequently generate a warning or an error since they are no longer in use or does not exist.

EDIT:

depreciated : Not sure how this relates to programming

Frankline
  • 40,277
  • 8
  • 44
  • 75
3

I wouldn't say obsolete means it doesn't work anymore. In my mind obsolete just means there are better alternatives. A thing becomes obsolete because of something else. Deprecated means you shouldn't use it, although there might not be any alternatives. A thing becomes deprecated because someone says it is -- it is prescriptive.

Supr
  • 18,572
  • 3
  • 31
  • 36
-5
  • "Obsolete" means "has been replaced".
  • "Depreciated" means "has less value than its original value".
  • "Deprecated" means to expressly disprove of and was popularised due to misspellings in two technical articles where the authors used deprecated without an "i". One in 1999 and the other in 2002 referenced in the dictionaries as origins.

Prior to that time frame we were reading comments like // depreciated in API documentation including the MS MSDN.

The use of deprecated in the tech industry is therefore completely incorrect and evidence of how a technical writer can produce a bug that can live in a language and someone should finally put the bug to rest.

Prodigle
  • 1,757
  • 12
  • 23
Hank Hatch
  • 179
  • 1
  • 3
  • 12
    Do you have the names of those two articles ? (links would be awesome) – chip Jan 20 '16 at 02:02
  • 12
    @chip no, this answer is just garbage. Both words existed, with distinct meanings, in dictionaries from 1913... – Antti Haapala -- Слава Україні Dec 20 '17 at 13:27
  • Obsoleted functionality isn't necessarily gone, for better or worse. I'd also tighten up the definition of "depreciated" to enforce that it now has *less* than its original value, since gaining value would also mean it no longer has its original value. – Dave Newton Feb 12 '18 at 17:07
  • 1
    So 'deprecated' should be deprecated? – Little Endian Apr 30 '19 at 22:36
  • 1
    As @AnttiHaapala said. `Deprecated` has existed since 17th century, ref its etymology: `Early 17th century (in the sense ‘pray against’): from Latin deprecat- ‘prayed against (as being evil)’, from the verb deprecari, from de- (expressing reversal) + precari ‘pray’.` https://www.lexico.com/en/definition/deprecate – Magne May 14 '20 at 13:10
  • 2
    Unix was using "Deprecate" to mean retire features in 1990. I think that disproves a 1999/2000 origin. http://jargon-file.org/archive/jargon-2.1.1.dos.txt – Jon B Oct 20 '22 at 13:39