【问题标题】:In which language did attributes first appear [duplicate]属性首先出现在哪种语言中[重复]
【发布时间】:2010-09-29 21:04:13
【问题描述】:

似乎 C# 中的几乎所有特性都是从其他语言中借用的(Java 中的 OOP、ML 家族中的泛型(参数多态性)和 lambda、Haskell 单子中的 LINQ 和动态语言中的动态),但我不知道属性的起源(Java 世界中的注解)。 C# 是第一个引入属性的语言吗?

【问题讨论】:

  • 你的意思是类属性????
  • 我很确定 OOP 不是从 Java 借来的:p
  • Java OOP 是从 C++ 借来的,C++ 是从 Smalltalk 借来的。我认为 C# 泛型是从 Ada 借来的,尽管我对 C# 或 ML 不够熟悉,无法判断您的版本是否更准确。如果 LINQ 是基于 Haskell monads(而不仅仅是一种特定于域的子语言),我会感到非常惊讶 - 无论哪种方式它都不是特别原始。真正的原创语言可能只用手指就能数出——甚至可能只用一只手。剩下的只是通过细微的调整和混搭进行进化——有点像遗传算法。
  • @Steve314 是的,这些概念有很多根源,但我不知道任何属性的根源,所以这让我认为这是 C# 的创新。
  • @gaearon - 对我来说,这听起来仍然像任何其他抽象层,并且几乎是 SQL 在不同级别的用途。单子只是一个代数。例如。 Python 列表推导——尽管它们是从 Haskell 借用的——不是单子的。底层的一元结构不存在,你不能与例如混合和匹配。类似 Haskell 的“do”表示法或显式绑定运算符。 Python 列表推导可以很容易地直接从数学集合表示法复制,而不需要单子连接。我可以提出类似的论点来反对 LINQ 是一元的吗?

标签: c# programming-languages attributes history


【解决方案1】:

我第一次在 C++ 世界的 COM IDL(接口定义语言)文件中看到属性作为方法或参数注释。我不知道它们是不是在那里发明的。 http://msdn.microsoft.com/en-us/library/aa367042.aspx

【讨论】:

    【解决方案2】:

    我认为这是带有刻板印象的 UML。

    http://en.wikipedia.org/wiki/Attribute-Oriented_Programming

    【讨论】:

    • 是的,我也考虑过UML。
    猜你喜欢
    • 1970-01-01
    • 2020-10-05
    • 2018-04-09
    • 2017-06-06
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    • 2015-11-24
    相关资源
    最近更新 更多