子宫内膜炎症有什么症状| 经常便秘是什么原因| 骰子是什么意思| 甲功五项查的是什么| 玉溪烟属于什么档次| 孕前检查什么时候去最合适| style是什么意思| msv是什么单位| 日语牙白什么意思| hpv39阳性是什么意思| 月经来潮是什么意思| 饺子包什么馅好吃| 软装是什么| 死不瞑目是什么意思| 马眼棒是什么| 夜晚尿频尿多是什么原因| 尿频挂什么科| 肚子经常胀气是什么原因| 11月出生是什么星座| 翡翠和玉的区别是什么| 十一月六号是什么星座| 早上做什么运动最好| 什么是机械键盘| 什么叫点映| 气是什么意思| 定力是什么意思| 冬季吃什么| 鸡眼去医院挂什么科| 白蛋白偏低是什么意思| 菩提子是什么树的种子| 孕妇刚生完孩子吃什么好| 脚心起水泡是什么病症| 脑门疼是什么原因| 林俊杰属什么生肖| 肝多发钙化灶什么意思| 玛丽珍鞋是什么意思| 处女座幸运颜色是什么| 炸薯条用什么油| 八月初八是什么星座| dwi是什么意思| 中国四大国粹是什么| 白术有什么作用| 灵芝主要治什么病| 薏米不能和什么一起吃| 国防部部长是什么级别| 暂缓参军是什么意思| 典史是什么官| 孔雀喜欢吃什么食物| 旺夫脸是什么脸型| 阳痿是什么症状| 类风湿和风湿有什么区别| 水泡型脚气用什么药| 特性是什么意思| 山楂泡水喝有什么好处| 什么食物增加血管弹性| 排卵期同房要注意什么| 香港为什么不用人民币| 什么花什么门的成语| 什么叫闭经| acth是什么激素| 非萎缩性胃窦炎是什么意思| 怀孕一个月有什么症状| 头孢吃多了有什么副作用| 龙凤胎是什么意思| 自汗吃什么中成药| 出山是什么意思| seiko是什么牌子| 增强免疫力打什么针| 19朵玫瑰代表什么意思| 五加一笔是什么字| 一阵一阵的胃疼是什么原因| 咏柳的咏是什么意思| 死鱼眼是什么样子的| 耳鸣吃什么药最有效| 单发房早是什么意思| 4月17日是什么星座| 口渴是什么病的前兆| 不将就什么意思| 卓玛什么意思| 吃牛油果有什么好处和坏处| 牙发黑是什么原因怎么办| 男生小便尿道刺痛什么原因| 眼睛散光是什么症状| 缓缓是什么意思| 脚疼是什么原因引起的| tnt是什么| 什么负什么名| 焦点是什么| 肝血亏虚吃什么中成药调理| 小肠镜什么情况下需要做| 18K金什么意思| 时点是什么意思| 艾叶泡脚有什么好处| 什么人不能吃西洋参| 什么叫非甾体抗炎药| 大便颜色发绿是什么原因| 疥疮用什么药膏好得快| 什么飞机| 吃什么白头发变黑| 下降头是什么意思| 梯子是什么| 巴基斯坦讲什么语言| 一根长寿眉预示什么| 炭疽病用什么农药最好| 三伏天什么意思| 天灵盖是什么意思| 胰腺炎是什么原因引起的| 水丸是什么意思| 店招是什么意思| 梦见猫死了是什么意思| 眉尾有痣代表什么| 妇科臭氧治疗的作用是什么| 丘疹性荨麻疹用什么药| 咳嗽看什么科室| 什么口什么心| 点状钙化灶是什么意思| 跳什么舞减肥最快| 抗皱用什么产品好| 美国为什么不禁枪| 你的书包里有什么英文| 菠菜不能和什么食物一起吃| 77年的蛇是什么命| 人得猫癣用什么药| 34岁属什么的生肖| ber是什么意思| 坤造是什么意思| 辅警政审主要审些什么| 正常龟头是什么颜色| 流鼻涕吃什么药好| 拜阿司匹灵是什么药| 积食是什么症状| 治疗宫颈炎用什么药好得快| 肛周湿疹用什么药膏效果好| 为什么心脏会突然刺痛| 可字属于五行属什么| 太岁是什么东西| 嘴唇上起泡是什么原因| 女人吃桃子有什么好处和坏处| 量贩式ktv什么意思| 梦见结婚是什么意思| 10月底是什么星座| 农历七月二十什么日子| 左侧头疼是什么原因引起的| 老炮是什么意思| 什么是柏拉图式的爱情| 骨髓不造血是什么病| 94年什么命| 查尿酸挂什么科| 谁也不知道下一秒会发生什么| 三伏天喝什么汤| 螳螂捕蝉黄雀在后是什么意思| 经常放屁什么原因| 腺肌症吃什么药效果好| 梦见海龟是什么意思| loser什么意思| 月经总是提前是什么原因| 发烧41度是什么概念| 国家为什么重视合肥| 什么是金融行业| 嗜酸性粒细胞偏低是什么原因| 照护保险是什么| 鼻涕黄粘稠是什么原因| 赏脸是什么意思| 美国为什么打越南| 女性尿液发黄是什么原因| 什么果酒最好喝| 小便有泡沫是什么原因| 签注是什么| 素颜霜是干什么用的| 便秘是什么原因引起的| 五什么十什么成语| 口臭要做什么检查| 舌头苦是什么原因| 拔苗助长告诉我们什么道理| 宝宝发烧手脚冰凉是什么原因| 李元霸为什么怕罗士信| 1月10日什么星座| 九十岁老人称什么| 心机女是什么意思| 人工肝是什么意思| 绿豆什么人不能吃| 云南的特产是什么| 不义之财是什么意思| 什么样的女人最吸引男人的心| 缺血吃什么补血最快| 万马奔腾是什么生肖| 牙医需要什么学历| 结核有什么症状| 维生素b不能和什么一起吃| 么么哒什么意思| 什么面不能吃| 为什么手心总是出汗| 酉时是什么时候| 甘油三酯高吃什么食物降得快| 插队是什么意思| 女生吃什么能淡化胡子| 大自然是什么意思| 白蛋白偏高是什么原因| 入党有什么用| 祖字五行属什么| 活血化瘀吃什么药| 便秘吃什么| 囊性病变是什么意思| 脚环肿是什么原因引起的| 鸟喙是什么意思| 相中是什么意思| 臭屁什么意思| 全身是宝的动物是什么生肖| 什么东西只进不出| 过度紧张会有什么症状| 掉头发去医院挂什么科| 孟母三迁的故事告诉我们什么道理| 五朵金花是什么意思| 保重适合对什么人说| 平均红细胞体积偏高说明什么| 消化不良吃什么药最好| 什么是辅警| ira是什么品牌| gender什么意思| ct是什么检查| 子鱼是什么鱼| 牙疼能吃什么食物| 子宫肌瘤挂什么科| 菠菜和豆腐为什么不能一起吃| 甲状腺低回声结节是什么意思| 三个大是什么字| 解落三秋叶的解是什么意思| 梦到借钱给别人什么意思| 勾芡用什么淀粉| 眼角有眼屎是什么原因| 孕前检查挂什么科室| 什么是行政职务| 淋巴细胞比率偏高是什么原因| 反讽是什么意思| 禁的部首是什么| 三个为什么| 好好的什么意思| 答辩是什么意思| 1969年是什么年| 冰淇淋是什么做的| 周杰伦为什么喜欢昆凌| 什么时候看到的月亮最大| 女性尿频尿急是什么原因| 接吻要注意什么| 缓苗是什么意思| 生粉是什么| 腰椎间盘突出吃什么好| 头孢长什么样| insun是什么牌子| 听什么音乐容易入睡| 出阁宴是什么意思| 归脾丸的功效与作用治什么病| 吃了小龙虾不能吃什么| 文艺兵是干什么的| 地中海贫血是什么意思| 甲亢是什么原因造成的| 气胸吃什么药好得快| 肛裂是什么| 口是什么生肖| 嘴唇边缘发黑是什么原因| 气压是什么| 什么叫多巴胺| 眼角膜脱落什么症状| 2021属什么生肖| 百度
百度 在互联网时代,机构的发展已不再是力量之争,而是维度之战,在更高维度上的战略思考和选择将成为机构发展的重要资源和优势。

CLU is a programming language created at the Massachusetts Institute of Technology (MIT) by Barbara Liskov and her students starting in 1973.[8] While it did not find extensive use, it introduced many features that are used widely now, and is seen as a step in the development of object-oriented programming (OOP).

CLU
Paradigmmulti-paradigm: object-oriented, procedural
Designed byBarbara Liskov and her students
DeveloperMassachusetts Institute of Technology
First appeared1975; 50 years ago (1975)
Stable release
Native CLU 1.5 (SPARC, VAX) / May 26, 1989; 36 years ago (2025-08-06)[1]

Portable CLU / November 6, 2009; 15 years ago (2025-08-06)[2]

Typing disciplinestrong
Websitepmg.csail.mit.edu/CLU.html
Major implementations
PDP-10 CLU,[3] Native CLU,[1] Portable CLU,[2] clu2c[4]
Influenced by
ALGOL 60, Lisp, Simula, Alphard
Influenced
Ada, Argus, C++,[5] Lua, Python,[6] Ruby, Sather, Swift[7]

Key contributions include abstract data types,[9] call-by-sharing, iterators, multiple return values (a form of parallel assignment), type-safe parameterized types, and type-safe variant types. It is also notable for its use of classes with constructors and methods, but without inheritance.

Clusters

edit

The syntax of CLU was based on ALGOL, then the starting point for most new language designs. The key addition was the concept of a cluster, CLU's type extension system and the root of the language's name (CLUster).[10] Clusters correspond generally to the concept of a "class" in an OO language. For instance, here is the CLU syntax for a cluster that implements complex numbers:

    complex_number = cluster is add, subtract, multiply, ...
        rep = record [ real_part: real, imag_part: real ]
        add = proc ... end add;
        subtract = proc ... end subtract;
        multiply = proc ... end multiply;
        ...
    end complex_number;

A cluster is a module that encapsulates all of its components except for those explicitly named in the "is" clause. These correspond to the public components of a class in recent OO languages. A cluster also defines a type that can be named outside the cluster (in this case, "complex_number"), but its representation type (rep) is hidden from external clients.

Cluster names are global, and no namespace mechanism was provided to group clusters or allow them to be created "locally" inside other clusters.

In a cluster, the explicit type conversions up and down change between the abstract type and the representation; implicit conversions between these types are signified using the special type cvt. CLU does not otherwise perform implicit type conversions. There is a universal type any, and a procedure force[] to check that an object is a certain type. Objects may be mutable or immutable, the latter being base types such as integers, booleans, characters and strings.[10]

Other features

edit

Another key feature of the CLU type system are iterators, which return objects from a collection serially, one after another.[10] Iterators offer an identical application programming interface (API) no matter what data they are being used with. Thus the iterator for a collection of complex_numbers can be used interchangeably with that for an array of integers. A distinctive feature of CLU iterators is that they are implemented as coroutines, with each value being provided to the caller via a yield statement. Iterators like those in CLU are now a common feature of many modern languages, such as C#, Ruby, and Python, though recently they are often referred to as generators.

CLU also includes exception handling, based on various attempts in other languages; exceptions are raised using signal and handled with except. Unlike most other languages with exception handling, exceptions are not implicitly resignaled up the calling chain. Also unlike most other languages that provide exception handling, exceptions in CLU are considered part of ordinary execution flow and are considered a "normal" and efficient type-safe way to break out of loops or to return from functions; this allows for direct assignment of return values "except when" other conditions apply. Exceptions that are neither caught nor resignaled explicitly are immediately converted into a special failure exception that typically terminates the program.

CLU is often credited as being the first language with type-safe variant types, called oneofs, before the language ML had them.

A final distinctive feature in CLU is parallel assignment (multiple assignment), where more than one variable can appear on the left hand side of an assignment operator. For instance, writing x,y := y,x would exchange values of x and y. In the same way, functions could return several values, like x,y,z := f(t). Parallel assignment (though not multiple return values) predates CLU, appearing in CPL (1963), named simultaneous assignment,[11] but CLU popularized it and is often credited as the direct influence leading to parallel assignment in later languages.

All objects in a CLU program live in the heap, and memory management is automatic.

CLU supports type-parameterized user-defined data abstractions. It was the first language to offer type-safe bounded parameterized types, using where clauses to express constraints on actual type arguments. Unlike in languages with template-based generics, a use of such a data abstraction can be type-checked without access to the implementation of the abstraction.

Influence

edit

CLU and Ada were major inspirations for C++ templates.[5]

CLU's exception handling mechanisms influenced later languages like C++,[5] Java and many others.[12]

Sather, Python, and C# include iterators, which first appeared in CLU.[8]

Perl and Lua took multiple assignment and multiple returns from function calls from CLU.[13]

Python and Ruby borrowed call by sharing, the yield statement,[14] and multiple assignment.[15]

References

edit
  1. ^ a b Curtis, Dorothy (2025-08-06). "CLU home page". Programming Methodology Group, Computer Science and Artificial Intelligence Laboratory. Massachusetts Institute of Technology. Retrieved 2025-08-06.
  2. ^ a b Curtis, Dorothy (2025-08-06). "Index of /pub/pclu". Programming Methodology Group, Computer Science and Artificial Intelligence Laboratory. Massachusetts Institute of Technology. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  3. ^ "CLU files, 1976–1989". Tapes of Tech Square (ToTS) collection, MC-0741. Department of Distinctive Collections, Massachusetts Institute of Technology. swh:1:dir:5dc935d1c236b15a99b0750cf236b2d89ec951d0.
  4. ^ Ushijima, Tetsu. "clu2c". clu2c. woodsheep.jp. Retrieved 2025-08-06.
  5. ^ a b c Stroustrup, Bjarne (1996). A History of C++: 1979--1991. New York, NY, USA: Association for Computing Machinery. pp. 699–769. doi:10.1145/234286.1057836. Retrieved 25 March 2022.
  6. ^ Lundh, Fredrik. "Call By Object". effbot.org. Archived from the original on 23 November 2019. Retrieved 21 November 2017. replace "CLU" with "Python", "record" with "instance", and "procedure" with "function or method", and you get a pretty accurate description of Python's object model.
  7. ^ Lattner, Chris (2025-08-06). "Chris Lattner's Homepage". Chris Lattner. Retrieved 2025-08-06. The Swift language is the product of tireless effort from a team of language experts, documentation gurus, compiler optimization ninjas, and an incredibly important internal dogfooding group who provided feedback to help refine and battle-test ideas. Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list.
  8. ^ a b Liskov, Barbara (1992). "A history of CLU". The second ACM SIGPLAN conference on History of programming languages.
  9. ^ Liskov, Barbara; Zilles, Stephen (1974). "Programming with abstract data types". Proceedings of the ACM SIGPLAN symposium on Very high level languages. pp. 50–59. CiteSeerX 10.1.1.136.3043. doi:10.1145/800233.807045.
  10. ^ a b c Liskov, B.; Snyder, A.; Atkinson, R.; Schaffert, C. (August 1977). "Abstraction mechanisms in CLU". Communications of the ACM. 20 (8): 564–576. CiteSeerX 10.1.1.112.656. doi:10.1145/359763.359789. S2CID 17343380.
  11. ^ Barron, D. W.; Buxton, J. N.; Hartley, D. F.; Nixon, E.; Strachey, C. (1963). "The main features of CPL". Computer Journal. 6 (2): 134–143. doi:10.1093/comjnl/6.2.134.
  12. ^ "CLU emerged during a time when software developers faced growing challenges in managing complexity and ensuring reliability in large systems. Barbara Liskov, along with her team at MIT". Zactra Technologies Inc. 2025-08-06. Retrieved 2025-08-06.
  13. ^ Ierusalimschy, R.; De Figueiredo, L. H.; Celes, W. (2007). "The evolution of Lua" (PDF). Proceedings of the third ACM SIGPLAN conference on History of programming languages – HOPL III. pp. 2-1 – 2-26. doi:10.1145/1238844.1238846. ISBN 978-1-59593-766-7. Archived (PDF) from the original on 2025-08-06.
  14. ^ "Ruby's Roots and Matz's Leadership". Appfolio Engineering. 2025-08-06. Retrieved 2025-08-06. Matz feels that blocks are the greatest invention of Ruby (I agree.) He got the idea from a 1970s language called CLU from MIT, which called them 'iterators'...
  15. ^ "Functional Programming HOWTO — Python 3.8.3 documentation". docs.python.org. Retrieved 2025-08-06.
edit
Continental什么牌子 飞天奖是什么奖 拉屎臭是什么原因 息斯敏又叫什么药名 卵巢下降是什么原因
阴虚火旺吃什么药 手臂粗是什么原因 孕妇梦见掉牙齿是什么意思 木命和什么命最配 肺部结节吃什么好
小辣椒是什么意思 鼻炎流鼻血是什么原因 e站是什么 东盟是什么意思 女人梦到蛇预示着什么
下面有异味是什么原因 青青的什么 肌酐高吃什么中药 人体第一道防线是什么 全科医学科是什么科
胃窦隆起是什么意思hcv8jop0ns7r.cn 汗毛长是什么原因hkuteam.com 便秘屁多是什么原因hcv7jop5ns2r.cn 牛肉不能和什么水果一起吃hcv8jop1ns6r.cn 知了的学名叫什么hcv7jop5ns1r.cn
什么东西人们都不喜欢吃hcv7jop6ns1r.cn 房性早搏什么意思hcv8jop8ns0r.cn 七月份能种什么菜hcv8jop3ns3r.cn 阳春三月是什么生肖hcv9jop0ns2r.cn 什么是私人会所hcv7jop6ns5r.cn
风光秀丽的什么hcv9jop1ns9r.cn 焦虑症吃什么药好得快hcv9jop1ns8r.cn 心电图逆钟向转位是什么意思hcv9jop7ns3r.cn 红花油和活络油有什么区别shenchushe.com 为什么记忆力很差hcv8jop8ns5r.cn
支教是什么意思hcv8jop8ns6r.cn 赫五行属性是什么hcv7jop5ns6r.cn 棕色皮鞋配什么颜色裤子hcv8jop2ns7r.cn 集体户口是什么意思shenchushe.com 阴虱用什么药最有效hcv9jop6ns1r.cn
百度