Fleshgrinder <p...@fleshgrinder.com> schrieb am Mi., 27. Apr. 2016 22:11:
> I am writing this in a separate thread because of the urgency that I see > regarding the naming of past, current, and future proposals regarding > this functionality. > > It was and is proposed to create this feature with the name *Attributes* > as Facebook did in their Hack language. Main argument is to blindly > follow /because/. > > On 4/25/2016 10:31 AM, Dmitry Stogov wrote: > > Different languages names this differently. > > I may add an additional voting question - "annotation vs attributes?". > > > > It is true and only natural that different languages choose different > names for equivalent features but this discussion is not about taste, > style, nor coolness. It is about natural language, proper computer > science terminology, and what PHP users will search for in search > engines. I already tried to explain this in the actual thread but I > guess my attempts resulted in more confusion than clarification, let me > try again. > > #### ATTRIBUTE #### > > The word *attribute* has several meanings in computer science and this > is mainly due to its extremely generic nature: > > > a usually good quality or feature that someone or something has > > > > --- http://www.merriam-webster.com/dictionary/attribute > > > In computing, an attribute is a specification that defines a property > > of an object, element, or file. [...] For clarity, attributes should > > more correctly be considered metadata. An attribute is frequently and > > generally a property of a property. > > > > --- https://en.wikipedia.org/wiki/Attribute_%28computing%29 > > This pretty much sums it up already. An attribute is the metadata that > is attached to an element of source code. This metadata is anything > unessential that is additionally added but not necessarily required. > > class A { > var $x; > } > > The `class` and `var` keywords are essential in this example and define > the actual element and the names are required too. > > public final class A { > private static int $x = 42; > } > > Class A has the attributes `public` and `final`. > Property `$x` has the attributes `private`, `static`, `int`, and `42`. > > All of these attributes of the class and the property add additional > metadata to the source code elements that define their qualities or > features and consequently their behavior and usage. > > http://www.onelook.com/?w=attribute&ls=a > http://encyclopedia2.thefreedictionary.com/attribute > > Sebastian Bergmann already explained this but I think it is important to > be repeated and further clarified. The word attribute is often used to > refer to properties with additional metadata (e.g. access modifiers, > default values, ...; illustrated above) in an OO context. This makes the > usage of the word attribute additionally to its generic nature ambiguous > as well: > > https://en.wikipedia.org/wiki/Attribute_%28computing%29 > > http://encyclopedia2.thefreedictionary.com/instance+attribute > https://en.wikipedia.org/wiki/Instance_variable > > http://encyclopedia2.thefreedictionary.com/static+attribute > https://en.wikipedia.org/wiki/Static_variable > > *All* userland implementations that are called /attributes/ in the free > and open world deal with completely different things: > > https://packagist.org/search/?q=attribute > > Last but not least, Perl has /attribute/ support. However, Perl actually > uses it for interaction with *all* attributes that can be set. Hence, > this is what attributes really do. > > http://perldoc.perl.org/attributes.html > > #### ANNOTATION #### > > > Extra information associated with a particular point in a document or > > program. Annotations may be added either by a compiler or by the > > programmer. They are not usually essential to the correct function of > > the program but give hints to improve performance. > > > > --- http://encyclopedia2.thefreedictionary.com/annotation > > http://www.onelook.com/?w=annotation&ls=a > > The term *annotation* is not only used by Java: > > https://packagist.org/search/?q=annotation > > https://en.wikipedia.org/wiki/Annotation > https://en.wikipedia.org/wiki/Ruby_character > https://en.wikipedia.org/wiki/Java_annotation > > https://msdn.microsoft.com/en-us/library/dd901590%28VS.95%29.aspx > http://docs.scala-lang.org/tutorials/tour/annotations.html > https://kotlinlang.org/docs/reference/annotations.html > https://www.python.org/dev/peps/pep-3107/ > https://ghc.haskell.org/trac/ghc/wiki/Annotations > http://ceylon-lang.org/documentation/1.2/tour/annotations/ > http://clojure-doc.org/articles/ecosystem/core_typed/start/annotations.html > https://www.dartlang.org/effective-dart/style/ > ... > > https://rubygems.org/search?utf8=%E2%9C%93&query=annotation > http://rustbyexample.com/scope/lifetime/explicit.html > https://www.google.de/search?q=javascript+annotation > ... > > Ignoring these facts just because Facebook did not do proper research is > a total no go. It is also not up for a vote, it is just proper English > and computer science terminology! > > Last but not least, it also ensures that users find the correct PHP > manual page when they search for this new feature that might make it > into core at some point. :) > -- > Richard "Fleshgrinder" Fussenegger > I agree with all of that, +1. >