XCY语言(XCY Language)是由南京大学的
徐家福、中科院的付萃豪以及北京大学的
杨芙清等人共同设计系统程序设计语言,它具有概念简明、
易学、易写、易维护等特点。
1978年,在中国
计算机操作系统会议上首次讨论并起草了关于系统程序设计语言的相关文本,之后由徐家福、付萃豪、付萃豪等人开始设计,1979年开始考虑在DJS-200系列计算机上实现XCY,1980年设计出一个XCY编译程序。1982年起,研究人员开始设计XCY语言族。
在XCY语言中,遵循了分层设计的原则,设计了基本类型、复合类型、指引元类型以及模块类型四种数据类型。XCY语言的模块由模块说明引进,模块说明的组成包括一组说明、移入表和移出表组成。XCY语言中还保留了路径的概念,并包括包括路径说明和路径初启语句两个侧面。在储存机制上,XCY语言中采用了静态方案。
发展历程
在六十年代中期,人们开始认识到书写系统程序的必要性,这推动了
高级语言的发展。其中,1976年起,655机的NDHD软件自动产生系统的开发标志着一个重要的
里程碑。 随后,1978年,中国计算机操作系统会议上讨论了关于系统程序设计语言的问题 , 并决定起草“系统程序设计语言”试用文本 ,并由中国南京大学的
徐家福、中科院的付萃豪以及北京大学的
杨芙清等人共同设计。其设计思想相对接近于Modula语言。
1979年,徐家福等人开始考虑在DJS-200系列
计算机上实现XCY,在使用XCY语言为DJS-200系列编写的XT-2操作系统时,徐家福充分利用XCY语言的数据抽象和描述并发
程序设计的功能,用管程、类程、行程等高级手段把操作系统中许多概念统一起来。1980年,徐家福等人设计出一个XCY编译程序,并使用XCY语言写出了XCY的编译程序,用自展技术生出了两代编译程序,同时考虑将基编译程序从DJS-200系列计算机移植到EC-1022B机器上。
之后XCY语言还成功在240
计算机上运行,并成功用于编写了240机的操作系统。这一成就使得XCY语言在1980年的
国际信息处理联合会(International
联邦制 for Information Processing,IFIP)会议上受到了好评,展示了其在系统
程序设计领域的潜力和应用价值。
尽管XCY的设计准则与设想在实践中基本上是合适的,但在试用过程中也暴露出一些问题与缺陷。正是出于对这些问题的反思,1982年起,研究人员开始考虑并投入精力设计XCY语言族,以进一步完善和改进。
数据结构
在系统程序设计语言中,有些为了处理上方便,因此不进行数据类型的区分,但区分数据类型有利于理解程序,便于查错等,在XCY语言中,区分了数据类型。此外,还设置了类型说明,用以由使用者自行定义新的数据类型,又可以使程序结构清晰。
在数据类型的设计中,XCY语言遵循了分层设计的原则,其四种数据类型如下。
语法语义
在主要成分中,与常规
程序设计语言相比,XCY语言具有六点差异性:
(1)在XCY语言中只定义了指引元显明常量和整显明常量两种,其中显明常量是指在系统程序中往往遇到在编译时刻确定的量,此时便可将这样的量作为显明常量引入,在常量说明时可以标以IVALUE(整值)或 PVALUE (指引元值)。
例如,当A时一个A是一个指引元显明常量,其具体值留待编译时刻确定,便可标记为:
(2)在模块中引用其它模块中的移出量时,可用模块
标识符来限定,例如,X1为模块M1中的移出变量标识符,则引用时可表示为 M1·X1。
(3)在XCY语言中,运算符的优先级分为四类,虽然简洁高效,但也带来了一定的弊端,例如,不能写作X\u003eY and Z=U,应写成(X\u003eY) and (Z=U)。
(4)在XCY语言中保留了转向语句。
(5)在循环语句中,分为带迭代指明和不带迭代指明两类,带迭代指明为一般语句中的循环语句,细分之下又可分为带while指明和for指明两种,不带迭代知名是通过循环体内有关语句的执行来控制是否结束循环,此外,为了便于提高目标程序的质量,限制带for指明的循环语句中的循环参数只能在
下标表达式中出现。
(6)为便于动态调试以及程序正确性验证,增设了断语语句,允许在任何语句前插入。
模块结构
在系统程序中,其本身包括一些相对独立,而在一定条件下可以相互联系的构造,它有利于提高程序的正确性,使之易读、易写、易维护。例如
simula语言中的类,而Modula语言中的模块有出自前者中的类。XCY语言的设计也借鉴了Modula语言中的模块。
在XCY语言中,模块由模块说明引进,模块说明的组成包括一组说明、移入表和移出表组成,其中模块说明仅仅是定义单位,不可执行,只要通过调用模块中的
子程序才可执行其有关部分,移入表和移出表用于刻画和外界有联系的对象。
路径
路径是指可以和程序的其他部分并发执行的一段程序,某种意义上,路径即进程。路径包括路径说明和路径初启语句两个侧面,前者用来定义路径的算法,后者用来初启路径。形式上看,路径说明类似于一个“有名的”分程序,其主要部分是说明表和语句表。
路径初启语句中除了指出路径
标识符外,还须给出其它有关信息,具体的作用分为三方面,分别为分配路径控制块,填好块中信息(如优先级、
时间片、路径号等);分配执行栈,包括调用
子程序时所用的局部量、形参、现场保护单元等;将路径控制块挂链(一般情况下挂就绪链)。
目标程序开始工作时执行主路径说明的语句表,其中主路径说明是以main开头,任一XCY程序的结构是;
其中的程序单位为模块说明,或路径说明,最后一个程序单位为主路径说明,程序由此开始执行。
存储机制
存储体制是影响编译程序质量的带有全局性的问题,在XCY语言中采用了静态方案,它以路径为线索进行分配。为了满足静态分配方案的要求,同时还可以解决有关量的覆盖关系,因此在XCY语言中,区分了五种分配单位:
机器成分
系统
程序设计语言一方面应与机器无关,另一方面,为了考虑到功效,又必须包含少量和机器有关的成分。XCY语言与机器有关的成分包括两方面:
特点
XCY语言的独特之处在于其多方面的设计特点。