|Table of Contents|

[1] Cao Jing, Xu Baowen, Zhou Yuming, et al. Shrek:a dynamic object-oriented programming language [J]. Journal of Southeast University (English Edition), 2009, 25 (1): 31-35. [doi:10.3969/j.issn.1003-7985.2009.01.008]
Copy

Shrek:a dynamic object-oriented programming language()
Shrek:一个动态面向对象程序设计语言
Share:

Journal of Southeast University (English Edition)[ISSN:1003-7985/CN:32-1325/N]

Volumn:
25
Issue:
2009 1
Page:
31-35
Research Field:
Computer Science and Engineering
Publishing date:
2009-03-30

Info

Title:
Shrek:a dynamic object-oriented programming language
Shrek:一个动态面向对象程序设计语言
Author(s):
Cao Jing1, 3, Xu Baowen2, 3, Zhou Yuming2, 3
1School of Computer Science and Engineering, Southeast University, Nanjing 210096, China
2Department of Computer Science and Technology, Nanjing University, Nanjing 210093, China
3Software Quality Institute of Jiangsu Province, Nanjing 210096, China
曹璟1, 3, 徐宝文2, 3, 周毓明2, 3
1东南大学计算机科学与工程学院, 南京 210096; 2南京大学计算机科学与技术系, 南京 210093; 3江苏省软件质量研究所, 南京 210096
Keywords:
dynamic typing metaclass programming computational reflection native method object-oriented programming language
动态类型 元类程序设计 计算反射 本地方法 面向对象程序设计语言
PACS:
TP312
DOI:
10.3969/j.issn.1003-7985.2009.01.008
Abstract:
From a perspective of theoretical study, there are some faults in the models of the existing object-oriented programming languages.For example, C++ does not support metaclasses, the primitive types of Java and C# are not objects, etc.So, this paper designs a programming language, Shrek, which integrates many language features and constructions in a compact and consistent model.The Shrek language is a class-based purely object-oriented language.It has a dynamical strong type system, and adopts a single-inheritance mechanism with Mixin as its complement.It has a consistent class instantiation and inheritance structure and the ability of intercessive structural computational reflection, which enables it to support safe metaclass programming.It also supports multi-thread programming and automatic garbage collection, and enforces its expressive power by adopting a native method mechanism.The prototype system of the Shrek language is implemented and anticipated design goals are achieved.
以理论研究的视角, 现有面向对象程序设计语言的理论模型存在不足, 如C++不支持元类, Java和C#的基本类型不是对象等.为此, 设计了一种程序设计语言Shrek, 将多种语言特性和语言设施统一在一个简洁、一致的模型下实现.Shrek语言是基于类的完全面向对象语言, 拥有动态强类型系统, 采用了与Mixin相结合的单继承机制.该语言具有协调一致的类对象结构, 具备结构化计算反射能力, 能够进行安全的元类程序设计.另外, 它还支持多线程程序设计和自动垃圾回收, 并通过本地方法机制极大地增强了自身的表达能力.该语言的原型系统已经实现, 达到了预期的设计目标.

References:

[1] Kay A C.The early history of smalltalk[J].ACM SIGPLAN Notices, 1993, 28(3):69-95.
[2] Goldberg A, Robson D.Smalltalk-80:the language and its implementation[M].Massachusetts:Addison Wesley, 1983.
[3] Scott M L.Programming language pragmatics[M].2nd ed.Morgan Kaufmann Press, 2005.
[4] Friedman D P, Haynes C T, Wand M. Essentials of programming languages [M].3rd ed.MIT Press, 2008.
[5] Meijer E, Drayton P.Static typing where possible, dynamic typing when needed:the end of the cold war between programming languages[C]//OOPSLA Workshop on Revival of Dynamic Languages.New York:ACM Press, 2004.
[6] Bracha G, Cook W.Mixin-based inheritance[C]//Proc Joint ACM Conference on Object-Oriented Programming, Systems, Languages and Applications and the European Conference on Object-Oriented Programming.New York:ACM Press, 1990:303-311.
[7] Ancona D, Lagorio G, Zucca E.Jam—designing a Java extension with mixins[J].ACM Transactions on Programming Languages and Systems, 2003, 25(5):641-712.
[8] Bouraqadi N.Safe metaclass composition using mixin-based inheritance[J].Journal of Computer Languages, Systems and Structures, 2004, 30(1/2):49-61.
[9] Forman I R, Danforth S H.Putting metaclasses to work[M].New York:Addison Wesley, 1998.
[10] Graube N.Metaclass compatibility[C]//Proc of the 4th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications.New York:ACM Press, 1989:305-315.
[11] Bouraqadi N, Ledoux T, Rivard F.Safe metaclass programming[C]//Proc of the 13th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications.New York:ACM Press, 1998:84-96.
[12] Cao Jing, Xu Baowen.Safe metaclass programming based on non-strictly parallel single inheritance[C]//Proc of the 5th Conference on the Development and Education of Programming Languages.Beijing:Tsinghua University Press, 2006:19-26.(in Chinese)
[13] Smith B C.Reflection and semantics in Lisp[C]//Proc of the 11th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages.New York:ACM Press, 1984:23-35.
[14] Maes P.Concepts and experiments in computational reflection[C]//Proc of the 2nd ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications. New York:ACM Press, 1987:147-155.
[15] Ferber J.Computational reflection in class based object oriented languages[C]//Proc of the 4th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications.New York:ACM Press, 1989:317-326.
[16] Sullivan G.Aspect-oriented programming using reflection and metaobject protocols[J].Communications of the ACM, 2001, 44(10):95-97.
[17] Kojarski S, Lorenz D H.AOP as a first class reflective mechanism[C]//Proc of the 19th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications.New York:ACM Press, 2004:216-217.
[18] Kiczales G, Rivieres J, Bobrow D G.The art of the metaobject protocol[M].MIT Press, 1991.
[19] Gosling J, Joy B, Steele G, et al.The Java language specification [M].3rd ed.New York:Addison Wesley, 2005.

Memo

Memo:
Biographies: Cao Jing(1980—), male, graduate;Xu Baowen(corresponding author), male, doctor, professor, bwxu@seu.edu.cn.
Foundation items: The National Science Fund for Distinguished Young Scholars(No.60425206), the National Natural Science Foundation of China(No.60633010), the Natural Science Foundation of Jiangsu Province(No.BK2006094).
Citation: Cao Jing, Xu Baowen, Zhou Yuming.Shrek:a dynamic object-oriented programming language[J].Journal of Southeast University(English Edition), 2009, 25(1):31-35.
Last Update: 2009-03-20