6
\$\begingroup\$

Recently, the tag was created by me. Due to fragmentation issues (see the discussion), i.e., there is 1 question under this tag and at least 2 more that explicitly states the Free Pascal scope (at the moment I am writing), the tag is being redirected to the tag (as synonymous).

My suggestion

Following the same argument (fragmentation), should the tag (13 questions) be treated as a super set (as the language) to:

Note: Here the tag should be understood as the main branch from which all other tags (dialects) derived and not as the early structured language attached to the pioneer compilers. Strictly, there is not a single question in this site that matches the second option.

Alternatively, for the sake of consistence, should the tag (3 questions), be redirected to ) tag as well?

What is the current state of the art?

  • and and , currently at CodeReview, should be mutually exclusive categories (some questions are mixing them, but what is the point? I don't know.);
  • (similar to ) and are mutually exclusive (by analogy with the delphi tag, or, for example, attaching it to early compilers pre and including Turbo Pascal), but CodeReview community choose to make them synonymous with the "fragmentation" argument;
  • plus useless tag when you already have a tag

Further, at least two questions should be answered before any action:

  • Is there a minimum acceptable fragmentation for a tag?
  • Is fragmentation a mandatory criterium, more important than "tag mutually exclusive descriptions"?
\$\endgroup\$
  • \$\begingroup\$ Are free-pascal and pascal really mutually exclusive? (serious question) \$\endgroup\$ – rolfl Nov 17 '15 at 0:34
  • \$\begingroup\$ I am using a complexity criterium and an analogy one. Complexity: Turbo Pascal 7.0 is fully compatible with Free Pascal 2.x. The opposite is not true. Analogy: if Pascal is not Delphi, Free Pascal should not be as well. \$\endgroup\$ – cpicanco Nov 17 '15 at 0:38
  • \$\begingroup\$ I answered my own question here with some remarks that may be useful to differentiate Pascal from Free Pascal. meta.codereview.stackexchange.com/questions/5141/… \$\endgroup\$ – cpicanco Nov 17 '15 at 0:45
  • \$\begingroup\$ In fact, I am presenting two options. a) Pascal as a super set, with free-pascal contained, and b) Pascal as a completely different scope (early closed source compilers, not mentioned). \$\endgroup\$ – cpicanco Nov 17 '15 at 0:54
4
\$\begingroup\$

Creating a tag for one or two - or even a handful of questions, regardless of whether the new tag would be "mutually exclusive" or "a completely different thing" vs. the most applicable existing tag, is usually counter-productive.

A similar discussion has already taken place on this meta, about the tag.

  • For askers, they connect experts with questions they will be able to answer - they allow you to direct your question to the people most able to answer it.
  • For answerers, they are for sorting your questions into specific, well-defined categories. You can follow tags, get updates on changes, even mails and other notifications.
  • Tags can be used to report on broad statistics, tracking activity over time, etc.
  • Tags can be used for awarding badges.

[...]

Feel free to propose a new tag for things, but be mindful that tag fragmentation is worse than not enough tags.

How does this relate to , , and friends?

As you may or may not be aware, the "tag family" isn't exactly thriving. You mentioned 4 tags, and together they don't even really come close to meet the "badgeable status" threshold of 100 questions.

Is fragmentation a mandatory criterium, more important than "tag mutually exclusive descriptions"?

I'd say yes. Take for example. It has 231 opened, non-deleted questions... and I'm not even close to start considering splitting it into and , even though the two object models have pretty much nothing in common. Fragmenting a small tag does more harm than anything else. C# 6.0 introduces features that don't compile under earlier versions - yet there's no tag, and when C# reviewers see C# 6.0 features they know what they're seeing. was hastily introduced, and ended up synonymized with -- and Java is the biggest tag on this site. Tag fragmentation is a serious problem.

There is a minimum acceptable fragmentation for a tag?

I'm happy you came to meta, but would have preferred you came to meta before creating the new tags. Tags are managed by the entire community, and their creation/synonymization/burnination are always discussed on meta. The "create new tags" privilege doesn't grant one carte blanche for creating whichever tags they want unilaterally. Add to that, that Code Review is currently in a semi-graduated state where privilege thresholds are way below what they should be (e.g. create tags at 150 vs. 1500), and that this situation has been dragging for quite a while, and you'll get a glimpse of the frustration regulars have been experiencing for two years now (just take a look at meta posts tagged ). So no, there's no "carved in stone" minimum acceptable threshold to fragment a tag - only these things require community consensus. Fragmenting a marginal tag into even smaller tags that apply to only a handful of questions, helps no one.


Don't get me wrong, a lot of Code Review regulars are complete pedants. We love being pedantic. We love to have everything in its place, and using the right names for the right things... when the time is right.

IMHO now is still too early to consider breaking up into more specialized tags; I'd go as far as recommend folding back into , and into (i.e. remove the synonym and retag the few questions involved to get rid of the minor tags).

\$\endgroup\$
  • \$\begingroup\$ Pascal, Delphi, and Free Pascal do have some differences though. I mean, we wouldn't consider C and C++ the same language, no matter how few questions they had, right? I think what we definitely could use here is more Pascal/Delphi/Free Pascal questions overall, and more experts in those languages. \$\endgroup\$ – Simon Forsberg Nov 17 '15 at 8:29
  • \$\begingroup\$ @SimonForsberg there's a reason someone feels the need to tag delphi on a delphi-xe post even if they're "mutually exclusive". \$\endgroup\$ – Mathieu Guindon Nov 17 '15 at 12:11
  • 3
    \$\begingroup\$ I completely agree with this post. Not only we have very few questions in these tags, I find it extremely unlikely that they would grow substantially in the future. If that does happen, we can always revisit the issue and split a tag. The case of C and C++ doesn't seem a good example, as those languages are hugely popular, and that's likely to continue, so it seems perfectly normal that they had their separate tags right from the start. \$\endgroup\$ – Stop ongoing harm to Monica Nov 17 '15 at 13:15
  • \$\begingroup\$ @janos Consider the case of Fortran and COBOL then. Not popular languages, but they still have their own tags. \$\endgroup\$ – Simon Forsberg Nov 17 '15 at 14:32
  • 1
    \$\begingroup\$ I'm not against unpopular languages having their own tags. Of course not. I'm against unpopular languages having fragmented tags, like fortran-foo and fortran-bar with a handful of questions each. \$\endgroup\$ – Stop ongoing harm to Monica Nov 17 '15 at 14:48
  • \$\begingroup\$ @SimonForsberg put it this way: we have lolcode. Would we need a separate tag for lolcode.net? \$\endgroup\$ – Mathieu Guindon Nov 17 '15 at 14:49
  • \$\begingroup\$ @Mat'sMug If there was a language such as lolcode.net and it would be a different language from lolcode, then yes. I think the question here is whether you see Pascal, Free Pascal, and Delphi as different languages or not. \$\endgroup\$ – Simon Forsberg Nov 17 '15 at 14:57
  • 2
    \$\begingroup\$ I see pascal and delphi, and two superfluous sub-tags free-pascal and delphi-xe. \$\endgroup\$ – Mathieu Guindon Nov 17 '15 at 14:58
  • \$\begingroup\$ Following your argument, either "superfluous" or "fragmented", I see only one super tag "pascal". \$\endgroup\$ – cpicanco Nov 17 '15 at 16:39
  • \$\begingroup\$ I would keep the synonym, regardless of your assumptions. First thing that will come into the mind of someone writing pascal code is to tag their code as "pascal" (then the compiler must be explicitly stated) or "free pascal" (we know the compiler) or "delphi" (we know the compilers) or "delphi-xe" (we know the compilers). \$\endgroup\$ – cpicanco Nov 17 '15 at 16:57
  • \$\begingroup\$ @Mat'sMug How much Pascal / Free Pascal / Delphi have you coded in your life? \$\endgroup\$ – Simon Forsberg Nov 17 '15 at 19:03
  • \$\begingroup\$ @SimonForsberg does Turbo Pascal count? If so, a whole entire trimester, 15 (or was it 20?) years ago. I accept that downvote and await your answer ;-) \$\endgroup\$ – Mathieu Guindon Nov 17 '15 at 19:07
  • \$\begingroup\$ @Mat'sMug CodeReview members should not be pedants. They should have a genuine interest in help people. I think that are better English words to emphasize the precision and in depth discussion that is usually demanded by the community. \$\endgroup\$ – cpicanco Nov 17 '15 at 20:37
  • 1
    \$\begingroup\$ @cpicanco now you're being... pedantic. I think the rest of the sentence clarifies what I meant, clearly with a touch of sarcasm and self-derision, mostly related to how we like to cluster things and how reviewing code implies applying best-practices. \$\endgroup\$ – Mathieu Guindon Nov 17 '15 at 20:46
  • 1
    \$\begingroup\$ @Mat'sMug, just to clarify, I was not being unilateral. No one even responded to my discussion, so I decided to follow the instructions of the tag help: "As a general rule, you should avoid creating new tags if possible, and new users are not allowed to create new tags. Even if you have sufficient reputation, you should only create new tags when you feel you can make a strong case that your question covers a new topic that nobody else has asked about before on this site." I felt and we are discussing it. I just can't be unilateral, I am not a moderator. \$\endgroup\$ – cpicanco Nov 17 '15 at 21:45
3
\$\begingroup\$

Is Pascal, Free Pascal, Delphi different languages?

Let's see what Wikipedia has to say:

Pascal

Pascal is a historically influential imperative and procedural programming language, designed in 1968–1969 and published in 1970 by Niklaus Wirth as a small and efficient language intended to encourage good programming practices using structured programming and data structuring. A derivative known as Object Pascal designed for object-oriented programming was developed in 1985.

Delphi

(Delphi XE also redirects here)

Delphi's compilers use their own Object Pascal dialect of Pascal and generate native code for several platforms: Windows NT (IA-32 and x64), OS X (IA-32 only), iOS and Android.

Free Pascal

In addition to its own Object Pascal dialect, Free Pascal supports, to varying degrees, the dialects of several other compilers, including those of Turbo Pascal, Delphi, and some historical Macintosh compilers. The dialect is selected on a per-unit (module) basis, and more than one dialect can be used to produce a single program.

Note that Free Pascal supports Delphi to some degree. That is, it doesn't support it completely.

See how it repeatedly says dialect? Different programming language dialects, different tags.

But it's just a dialect, it doesn't need its own tag!

Guess what other language has dialects? Some of the dialects of are: and . They are still different tags.

But there's so few questions!

and are also very few questions. But we don't merge them, do we? For language tags, the number of questions tagged with it does not matter.

My suggestion

  • We use as a super-tag for the variations of Object Pascal.
  • We keep and as individual tags
  • should be a synonym of because A) Wikipedia seems to indicate that it's an IDE rather than a language. B) There's 8 or more different versions of Delphi XE
  • in general is a difficult tag as there are several Pascal compilers out there, some of which do not support Object Pascal. Questions that are about "old-style" Pascal and not Object Pascal should use and not any of the other Pascal-related tags.

Through the tag, the fragmentation for and is decreased.

But why use two tags for one language?

Using up two tags on a question only to specify the language, while not ideal at all times, is nothing new - Hello + / !

\$\endgroup\$
  • \$\begingroup\$ Object Pascal seems to be contained by Pascal, Pascal should be the superset. I am not sure how to demonstrate or refute this, though. Any suggestion? \$\endgroup\$ – cpicanco Nov 17 '15 at 20:20
  • \$\begingroup\$ An argument would be that Pascal is the only one with an ISO definition that is supposed to make the language unambiguous and machine independent. Every compiler out there derived from the Pascal language, as long as I know, should be following the definition. \$\endgroup\$ – cpicanco Nov 17 '15 at 20:31
  • \$\begingroup\$ @cpicanco I consider the difference between Pascal and Object Pascal to be a big one. If Pascal would be used as a super tag, then there won't be any tag to indicate non-object-oriented version of Pascal. \$\endgroup\$ – Simon Forsberg Nov 17 '15 at 20:58
  • \$\begingroup\$ But, OOP is a model not a language, is it right? Of course, one can find a language that was created to optimize the application of OOP. Pascal was created to teach structured programming, but was Pascal, in the past, necessarily and prohibitively non oop? \$\endgroup\$ – cpicanco Nov 17 '15 at 21:06
  • 1
    \$\begingroup\$ @cpicanco OOP is a paradigm. I'd say that it is a feature of a language. In ordinary Pascal, you can't do Object-Oriented stuff. Compare the "Paradigm" list of Object Pascal and Pascal. \$\endgroup\$ – Simon Forsberg Nov 17 '15 at 22:28
  • \$\begingroup\$ Would [object-pascal] be the same as [pascal] and [oop]? \$\endgroup\$ – cpicanco Nov 18 '15 at 16:31
  • \$\begingroup\$ @cpicanco Object Pascal is more like the name of a language and should therefore not be tagged as "pascal" and "oop". If there was a language named "Object C++", then those questions also shouldn't be tagged with "C++" and "oop". \$\endgroup\$ – Simon Forsberg Nov 18 '15 at 19:48
  • \$\begingroup\$ Object Pascal, in the sense you are pointing, as a language or dialect, already have specific tags like Delphi or Free Pascal and others. Object Pascal is a generic name for those dialects. \$\endgroup\$ – cpicanco Nov 18 '15 at 22:26
  • \$\begingroup\$ @cpicanco which is exactly why I am saying that it should be used as a super-tag for them, just like Python is for Python-2.7 and Python-3.x \$\endgroup\$ – Simon Forsberg Nov 19 '15 at 7:06
  • \$\begingroup\$ In accord with my review of the 'pascal' tag questions, there is not a single question using old compilers. And not all of them are purely procedural, as far as I know. \$\endgroup\$ – cpicanco Nov 19 '15 at 17:13

You must log in to answer this question.

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