BCPL语言 :这可是B语言啊,汤姆森大佬趁老婆回老家用来开发第一个unix操作系统的语言(大佬基于BCPL开发的bon语言,C语言前身)

本文主要是介绍BCPL语言 :这可是B语言啊,汤姆森大佬趁老婆回老家用来开发第一个unix操作系统的语言(大佬基于BCPL开发的bon语言,C语言前身),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

BCPL(“基本组合编程语言”)是一种过程式、命令式和结构化的编程语言。BCPL最初旨在为其他语言编写编译器,现在已不再常用。然而,它的影响仍然存在,因为BCPL的一个剥离和语法改变的版本,称为B,是C编程语言的基础。BCPL引入了许多现代编程语言的几个特性,包括使用花括号来分隔代码块。[3]BCPL最早是由剑桥大学的Martin Richards在1967年实现的。[1]

BCPL被设计成可以为它编写小而简单的编译器;据说有些编译器可以在16kb内运行。此外,最初的编译器本身是用BCPL编写的,很容易移植。因此,BCPL是引导系统的一种流行选择。编译器可移植性的一个主要原因在于它的结构。它被分成两部分:前端解析源代码并生成O-code(一种中间语言)。后端接收o码并将其转换为目标机器的机器码。只有1 / 5的编译器代码需要重写以支持新机器,这项任务通常需要2到5个人月。这种方法后来成为常见的实践(例如Pascal、Java)。

这种语言的不同之处在于它只有一种数据类型:一个字,一个固定的位数,通常被选择来与体系结构的机器字对齐,并且有足够的容量来表示任何有效的存储地址。对于当时的许多机器来说,这种数据类型是一个16位字。当BCPL用于最小可寻址项不是字而是字节的机器上,或者用于字长较大的机器(如32位或64位)时,这种选择后来被证明是一个严重的问题。[引文需要]

任何值的解释都是由用于处理这些值的运算符决定的。(例如,+将两个值相加,将它们视为整数;! 间接通过值,有效地将其视为指针。)为了使其工作,实现没有提供类型检查。

BCPL的字定向和面向字节的硬件之间的不匹配可以通过几种方式解决。一个是通过提供标准库例程来将字打包和解包为字节串。后来,添加了两个语言特性:位域选择操作符和中缀字节间接操作符(用%表示)。[引文需要]

BCPL以一种独特的方式处理跨越不同编译单元的绑定。没有用户可声明的全局变量;相反,有一个全局向量,类似于Fortran中的“空白公共”。不同编译单元之间共享的所有数据包括标量和指向存储在全局向量中预先安排位置的向量的指针。因此,头文件(在编译过程中使用“GET”指令包含的文件)成为在编译单元之间同步全局数据的主要手段,其中包含“global”指令,该指令表示符号名称列表,每个符号名称都与一个数字配对,该数字将名称与全局向量中相应的数字寻址单词相关联。除了变量之外,全局向量还包含外部过程的绑定。这使得编译单元的动态加载非常容易实现。BCPL没有依赖底层实现的链接加载器,而是有效地让程序员控制链接过程。[引文需要]

全局向量还使替换或增加标准库例程变得非常简单。程序可以保存指向原始例程的全局向量指针,并将其替换为指向替代版本的指针。替代方案可能会调用原始程序作为其处理的一部分。这可以用作快速的特别调试辅助工具。[引文需要]

BCPL是第一个大括号编程语言,大括号在语法变化中幸存下来,并已成为一种常用的方法

BCPL最早是由剑桥大学的Martin Richards在1967年实现的。[1]BCPL是对其前身剑桥编程语言(后来更名为组合编程语言(CPL))的困难的回应,该语言是在20世纪60年代初设计的。Richards通过“去除整个语言中那些使编译变得困难的特性”创建了BCPL。1967年春天,理查兹在麻省理工学院访问MAC项目时,为兼容分时系统下的IBM 7094编写了第一个编译器实现。这种语言最初是在1969年春季联合计算机会议上发表的一篇论文中描述的。[引文需要]

据传,BCPL最初代表“Bootstrap Cambridge Programming Language”,但自从BCPL的开发停止以来,CPL从未被创建过,这个缩写后来被重新解释为BCPL书。[需要澄清][需要引证]

BCPL是最初“Hello, World!”程序编写的语言。[5]第一个MUD也是用BCPL编写的(MUD1)。

有几个操作系统是部分或全部用BCPL编写的(例如,TRIPOS和AmigaDOS的早期版本)。BCPL也是施乐帕洛阿尔托研究中心(Xerox PARC Alto)项目——第一台现代个人电脑——使用的最初语言;在其他项目中,Bravo文档准备系统是用BCPL编写的。

一个早期的编译器,在1969年启动,从Richards的Atlas 2编译器的o码纸带开始,目标是ICT 1900系列。这两台机器具有不同的字长(48位对24位)、不同的字符编码和不同的打包字符串表示,并且成功的引导增加了对该方法实用性的信心。

到1970年末,Honeywell 635和Honeywell 645、IBM 360、PDP-10、TX-2、CDC 6400、UNIVAC 1108、PDP-9、KDF 9和Atlas 2的实现已经存在。1974年,在BBN上实现了一种不使用中间o码的BCPL方言。最初的实现是一个托管在BBN的TENEX pdp -10上的交叉编译器,直接针对BBN在ARPANET中使用的第二代imp实现中使用的pdp -11。

在20世纪80年代中期,还有一个版本是由理查兹计算机产品公司为BBC Micro生产的,这家公司是由马丁理查兹的兄弟约翰理查兹创办的。[6]BBC的《末日审判》节目就使用了这种语言。为Amstrad CPC和Amstrad PCW计算机的BCPL版本也在1986年由英国软件公司阿诺有限公司发布。MacBCPL是1985年由英国肯辛顿的Topexpress Ltd为苹果麦金塔电脑发布的。

BCPL的设计和理念都强烈地影响了B,而B又反过来影响了c。[7]当时的程序员争论的是,C的最终继承者应该被称为“D”,即字母表中的下一个字母,还是“P”,即母语言名称中的下一个字母。最被接受为C语言继承者的语言是c++ (c++是C的自增运算符)[8],尽管同时也存在一种D编程语言。

1979年,至少有25种体系结构存在BCPL的实现;随着C语言在非unix系统上的流行,这种语言逐渐失宠。

马丁·理查兹在他的网站上维护着一个现代版本的BCPL,最近一次更新是在2018年。它可以在各种系统上运行,包括Linux、FreeBSD和Mac OS x。最新的发行版包括图形和声音库,并且有一个全面的手册。他继续用它编程,包括他对音乐自动乐谱跟踪的研究。

BCPL常见的非正式MIME类型是text/x-bcpl。

这篇关于BCPL语言 :这可是B语言啊,汤姆森大佬趁老婆回老家用来开发第一个unix操作系统的语言(大佬基于BCPL开发的bon语言,C语言前身)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/607733

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。