返回

文章详情

极乐

Hacker News2026年7月11日 17:30

来自维基百科,免费百科全书 对于其他用法,请参见极乐。 BLISS范式 结构化,命令式(过程式) 设计者:W. A. Wulf,D. B. Russell,A. N. Habermann 开发者:卡内基梅隆大学 首次出现:1970年;56年前 稳定版本:BLISS-64 类型纪律:无类型 范围:词法 平台:PDP-10,PDP-11,VAX,PRISM,MIPS,DEC Alpha,IA-32,IA-64,x86-64 操作系统:跨平台 网站:pdp-10.trailing-edge.com/bb-m836d-bm/ 方言:普通BLISS 受ALGOL影响 BLISS是一种系统编程语言,于1970年由W. A. Wulf、D. B. Russell和A. N. Habermann在卡内基梅隆大学(CMU)开发。它可能是直到C语言几年前首次亮相前最知名的系统语言。自那时以来,C语言变得流行和普遍,BLISS则逐渐无人问津。 BLISS是一种无类型的块结构编程语言,基于表达式而非语句,并包括异常处理、协程和宏等构造。它不包括goto语句。该名称据说是基本系统软件实现语言(Basic Language for Implementation of System Software)或系统软件实现语言(System Software Implementation Language)的缩写。不过,在2015年为巴贝奇研究所计算机安全历史项目的口述历史中,Wulf声称这个缩写最初是基于“比尔的系统软件实现语言”(Bill's Language for Implementing System Software)的名称。 原始的卡内基梅隆编译器因其广泛使用的优化而引人注目,并成为经典书籍《优化编译器的设计》(The Design of an Optimizing Compiler)的基础。数字电气公司(DEC)为PDP-10、PDP-11、VAX、DEC PRISM、MIPS、DEC Alpha和Intel IA-32开发并维护了BLISS编译器。该语言在客户中并不流行,很少有人拥有编译器,但DEC在1980年代以前在内部大量使用;大多数OpenVMS操作系统的实用程序都是用BLISS-32编写的。DEC BLISS编译器已经移植到IA-64和x86-64架构上,作为OpenVMS对这些平台的移植的一部分。 x86-64 BLISS编译器使用LLVM作为其后端代码生成器,取代了为Alpha和IA-64使用的专有GEM后端。 语言描述 BLISS具有许多其他现代高级语言的特性。它具有块结构、自动堆栈以及定义和调用递归例程的机制... 提供各种预定义数据结构和... 测试和迭代的设施 ...另一方面,BLISS省略了其他高级语言的某些特性。它没有内置的输入/输出功能,因为系统软件项目通常自己开发输入/输出或基于基本的监控I/O或屏幕管理服务构建...它允许访问特定于机器的特性,因为系统软件通常需要此特性。 BLISS具有在高级语言中不寻常的特性。名称... 被统一解释为该段的地址,而不是段的值...此外,BLISS是一种“表达式语言”,而不是“语句语言”。 BLISS语言具有以下特性:所有常量都是与所使用的机器相关的完整字,例如在PDP-11这样的16位机器上,常量为16位;在VAX计算机上,常量为32位,而在PDP-10上,常量为36位。对变量的引用始终指向该变量的地址。例如,指令Z+8指的是将8加到Z的地址,而不是它的值。如果需要将8加到Z的值上,则必须在变量前加一个句点;因此,您会输入.Z+8来执行此功能,将8加到Z的内容中。赋值使用标准的=符号,例如Z=8——这表示创建一个包含8的完整字常量,并将其存储在与Z的地址相对应的位置。因此,Z+12=14(或者替代地,12+Z=14,尽管根据Digital的BLISS文档,这种形式被认为是不好的实践)将常量14放入Z地址之后12个字的位置。块语句类似于ALGOL:块以BEGIN语句开始,并以END结束。与ALGOL一样,语句用分号(“;”)分隔。当计算出一个值时,该值会保存,直到下一个语句终止符——这意味着可以计算出一个值,将其赋值给一个变量,并在需要时传递到下一个语句。或者,可以使用左括号开始一个块,并使用右括号关闭该块。当在表达式中包含括号时,使用标准的优先级规则,其中带括号的表达式首先计算,条件执行使用IF表达式,用于测试真-假条件,执行替代操作并返回结果。比较使用关键字,如EQL等。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡