Jump to content

Talk:Trait (computer programming)

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by 67.198.37.16 (talk) at 16:07, 30 December 2021 (Traits and Parametric Polymorphism: new section). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
WikiProject iconComputing Start‑class Low‑importance
WikiProject iconThis article is within the scope of WikiProject Computing, a collaborative effort to improve the coverage of computers, computing, and information technology on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
StartThis article has been rated as Start-class on Wikipedia's content assessment scale.
LowThis article has been rated as Low-importance on the project's importance scale.
WikiProject iconComputer science Start‑class Low‑importance
WikiProject iconThis article is within the scope of WikiProject Computer science, a collaborative effort to improve the coverage of Computer science related articles on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
StartThis article has been rated as Start-class on Wikipedia's content assessment scale.
LowThis article has been rated as Low-importance on the project's importance scale.
Things you can help WikiProject Computer science with:

Proposed Deletion

I would propose this article be merged into Abstract Types rather than sitting on its own. Traits are a behavoir variant of abstract types. EvanCarroll (talk) 20:04, 23 June 2009 (UTC)[reply]

That's like merging shark with animal. The abstract type article links to but does not incorporate the Interface (computer science), Trait (computer science), and mixin articles, and that's as it should be. -- 98.108.210.171 (talk) 09:24, 30 October 2010 (UTC)[reply]

"Traits come from the Self programming language" <-- evidence? Schaerli et al at the SCG implemented traits in Smalltalk (Squeak 3.9, to be precise). --Frank Shearar (talk) 20:07, 28 July 2011 (UTC)[reply]

"Traits come from the Self programming language" <-- I think this is wrong. self does have a thing conventionally called "traits" but it not the same kind of thing as this page is speaking of. — Preceding unsigned comment added by 64.186.37.5 (talk) 20:35, 28 July 2011 (UTC)[reply]

"Traits come from the Self programming language" <-- I coined the term "trait", in this usage, as a developer/manager on the Xerox "Star" in 1979/80. Object-orientation, classes and traits were implemented as coding patterns over the system language Mesa. Conceptually, they were atomic packages of methods, antecedent to "class". Concept was influenced by ideas from Smalltalk/multiple inheritance and polymorphism at PARC. Fine grained reuse seemed necessary for Star because the target operating environment was so small (e.g., .5MB-.75MB main memory). I published a Xerox PARC "blue-and-white" report on traits in 1981/2, and published at SIGOA the following year [1] GCurry (talk) 21:36, 10 October 2011 (UTC)[reply]

I support GCurry's comment above. I've discussed this with the researchers who implemented traits in Smalltalk and they said Gael Curry and Xerox Star is where traits began (source is personal email discussion). They also point to: G. Curry, L. Baer, D. Lipkie, and B. Lee. Traits: An approach to multiple-inheritance subclassing. In SIGOA conference on Office Information Systems, pages 1–9, Philadelphia, Pennsylvannia, USA, 1982. ACM Press"" --Overseasexile (talk) 20:11, 27 January 2013 (UTC)[reply]

References

  1. ^ Traits: An Approach to Multiple-Inheritance Subclassing; GCurry et al; Philadelphia; June 1982

Trait with variables?

"Does not specify any state variables."

Really? Some Scala traits do: http://ideone.com/U1gIx

It is funny that Scala is listed in examples of such languages, although Scala's traits are different from described traits. — Preceding unsigned comment added by V6ak (talkcontribs) 11:38, 7 June 2012 (UTC)[reply]

Most people understand traits from the Smalltalk research in this field and the original Smalltalk implementation specifically excluded traits having state. Since then the researchers realized this was an error, but I don't believe there's been any definitive method (no pun intended) of describing how state should be implemented. --Overseasexile (talk) 19:53, 27 January 2013 (UTC)[reply]

There are several extensions dealing with adding state to traits (though it seems this is a recent development). I've added a reference to AmbientTalk, which offers a homogeneous way to handle state and visibility of variables. Diego (talk) 12:45, 28 January 2013 (UTC)[reply]

On this topic, I find it quite confusing as a reader to introduce traits by saying they don't usually carry state and conclude with a PHP example that actually does — 82.150.248.37 (talk) 13:28, 12 October 2015 (UTC)[reply]

Groovy, Ruby, and JavaScript also support state variables. — Preceding unsigned comment added by 98.122.140.237 (talk) 17:46, 15 February 2016 (UTC)[reply]

Traits and Parametric Polymorphism

After reading through this article, and looking at the examples, this seems to be describing what is called "parametric polymorphism" in other theoretical circles. I'm having trouble distinguishing between the two: they seem to be the same thing, as best as I can tell. If there are differences, could some examples be given? If it really is the same concept, just explained differently, could some explanations be added to that effect? 67.198.37.16 (talk) 16:07, 30 December 2021 (UTC)[reply]