There's been a bit of discussion in chat recently about the implementation-specific NS* tags.

In Objective-C there are classes named NSDictionary, NSArray, NSString, NSMutableString which are language-specific names for implementations of Computer-science concepts:

Should these tags stay, or should they go?

Bring out the arguments!

  • \$\begingroup\$ For the record, this list is extraordinarily far from complete. \$\endgroup\$
    – nhgrif
    Commented Jul 11, 2014 at 22:22
  • \$\begingroup\$ @nhgrif Those are the tags I could find on Code Review. If you have other NS*-tags, or want to give examples of such tags for other languages, please feel free to specify them in a comment. \$\endgroup\$ Commented Jul 11, 2014 at 22:23
  • \$\begingroup\$ Currently there's only one remaining. codereview.stackexchange.com/questions/20025/… In chat, rolfl made the argument that tags should be about what the code is about, not how it is implemented. In this case, the code is about the NSString class. Opinions on this instance? \$\endgroup\$
    – nhgrif
    Commented Jul 11, 2014 at 23:20
  • 2
    \$\begingroup\$ @nhgrif The NSString tag does make sense there, considering that question only have three tags I think strings can be added to it as well to give it more visibility. \$\endgroup\$ Commented Jul 11, 2014 at 23:47

1 Answer 1


No - these tags should go!

I have been struggling to describe why I think these tags are bad. There are a number of arguments for, and against these tags. First though, some assumptions I have made (which may not be right)

  1. Assume we are focusing on language-specific implementations of common computer science concepts.

    For example, strings are common to all languages. In Java, a class called java.lang.String is often used, though there are alternatives like StringBuilder, StringBuffer, etc. C# has string (or String). I cannot think of an object-oriented language that does not have a String class, and many (all) of the procedural languages I know also have a string-like data type. Interestingly, C is lacking a String concept, but it has the null-terminated char array which is a close proxy.

    For the purpose of this meta question, the Objective-C NSString class is an implementation of the common String computer science concept.

  2. Assume that "A tag is a word or phrase that describes the topic of the question. Tags are a means of connecting experts with questions they will be able to answer by sorting questions into specific, well-defined categories." (taken from the tag help page).

  3. An 'expert' in a language-specific implementation of a concept is also an 'expert' in the base language. i.e. an Expert in NSString class is also an expert in Objective-C

  4. Users of Code Review follow tags they are interested in, and do not follow tags they are not interested in.

  5. All questions on Code Review have a language tag (, , etc.).

  6. There is also the title and content of the question which can be used to attract interest in your question.

Right, so, how should people use tags?

Tags should be used to broaden the scope of people who will find it interesting, not narrow it. The base language tag is required, additional tags should be used to extend the interest group beyond the base language.

Tags that are language-specific implementations of general concepts narrow the scope of the language tag, not broaden it. Tags like or reduce the scope of whereas tags like and extend the scope of the question beyond

Given this background, what are the benefits/drawbacks of these language-specific implementation tags?

Arguments for these tags:

  • Stack Overflow has them
  • People can get the Taxonomist badge
  • Can use tags to sub-classify problems

Arguments against these tags:

  • Code Review is a small site, so there is no need to sub-classify questions.

  • You can sub-classify the language tag by searching on both the language tag and the concept tag. You can search on [objective-c] [array] instead .

  • It sets the precedent that all languages can have a tag for each base class... if we have we should also have , and and and and , and ..... which are all just for Objective-C.

    Then, for Java's Swing, we should have , , , , , . For AWT there will be different tags. For JavaFX it will be different too.

    For C# we should have a whole different set of tags just to represent a Button, etc.

    Then there's different buttons in QT, like , and other C++-based UIs like TK.

  • The value of tags is reduced when the volume of tags increases. 'Experts' will have to follow too many tags to follow their topics of expertise. Language specific tags dilute the value of the tags.

  • For odd instances where your code actually is all about implementing or centers on something that is tightly coupled with a native implementation of a native class, then that is what the question title is for. For example: Implementing a thread-safe NSString would be tagged - - -

This is not related to just Objective-C. This is related to all languages. Should each language get its own tag for general computer science concepts that are implemented in that language?

No. An array is an array, whether it's in Java, bash, C, Swift, Python, or BASIC. A button is a concept, and a button is a button whether it is Java, C++, or anything else.

Tags representing language-specific implementations of general computing concepts should be removed, and replaced with tags that reference the general concept, and the language-tag should be confirmed as well.

  • \$\begingroup\$ Is object not a tag already? \$\endgroup\$
    – nhgrif
    Commented Jul 13, 2014 at 22:50
  • 1
    \$\begingroup\$ @nhgrif - no, object is a synonym pointing to oop. \$\endgroup\$
    – rolfl
    Commented Jul 14, 2014 at 1:38

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .