编程与编程语言

本文探讨了编程语言的历史,从汇编语言到高级语言的转变,强调了高级语言对于编程普及和跨平台的重要性。文章还提到了软件开发中的库、接口和开发工具包的角色,并触及了编程中的bug问题。
摘要由CSDN通过智能技术生成

5.1 汇编语言

这其中蕴含的用程序操作程序的思想,一直都是软件领域各种重大进步的核心驱动力。这种代替人执行具体操作的程序被称为汇编器,因为它最初也用来组装程序中由其他程序员事先写好的部分。相应的语言叫做汇编语言,而这个层次上的编程叫做汇编语言编程。

不同处理器的汇编语言只能用于为该处理器编写程序。汇编语言通常都与CPU的指令一一对应,能够以特定方式将指令编码为二进制格式,也知道信息在存储器中如何存放。这也就意味着,用某种CPU (如Mac或PC中的Intel处理器)的汇编语言编写的程序,与在不同CPU(如手机中的ARM处理器)上完成相同任务的其他汇编语言差别会很大。把为一种处理器编写的汇编程序移植到其他处理器,实际上接近于重写一遍相同任务的程序。

5.2 高级语言

20世纪50年代末到60年代初,计算机在代替程序员做更多事方面又前进了一大步,而这无疑也是人类编程史上最重要的一步。那就是独立于任何CPU体系结构的“高级”编程语言问世了。高级语言让人类得以用接近自然语言的方式来表达计算过程。

用高级语言编写的代码经过一个翻译程序,可被翻译为目标处理器的汇编指令。这些汇编指令则会进一步被转换为比特,从而能够加载到存储器中并执行。这个翻译程序通常被称作为编译器--同样是一个信息量有限的老术语。

在实际当中,编译器在内部可能会被分成一个“前端”和多个“后端”。前端负责把高级语言的程序转换为中间形式,而后端则负责把中间表现形式转换成不同体系结构的汇编指令。这种做法要比使用多个完全不同的编译器更简单。

相比汇编语言,高级语言拥有很多优势。首先,它让更多的人得以学会编程,而且编程效率也大大提高。用高级语言编程接近人类的思维方式,因此学习和使用的难度都降低了。人们不需要熟悉CPU指令表,就可以使用高级语言高效地编程。其次,高级语言程序独立于各种体系结构,通常无需任何修改即可在不同的体系结构上运行,只要像上图所示换个编译器编译一下就行。于是,程序可以只写一次,随处运行了。这也大幅降低了为多种计算机开发程序的成本。而编译环节也为发现各种拼写错误,语法错误(如少写括号或操作未定义的量)等疏漏提供了机会,在生成可执行程序之前必须纠正这些错误。这些错误在汇编语言程序中很难发现,因为必须假设汇编指令的任何序列都合法。(当然,语法正确的程序仍有可能充斥着各种编译器检测不出来的语义错误。)高级语言的重要意义无论怎么强调都不过分。

FORTRAN,COBOL,BASIC获得成功的部分原因,是它们都专注于某个特定的领域,而且有意避免大而全的定位。20世纪70年代,出现了专门为“系统编程”开发的语言。所谓系统编程,就是编写汇编器,编译器,编程工具乃至操作系统等程序员使用的工具。迄今为止,这些语言中最成功的是C,至今仍然有着非常广泛的应用。从那时到现在,C的变化很小,今天的一段C程序与30年前的相比,几乎没有多大差别。

20世纪90年代,随着因特网和万维网的发展,更多语言被开发出来。计算机处理器的速度继续加快,内存容量继续增大,而编程是否高效,是否便捷变得比机器效率更重要,此时诞生的java和javaScript在这方面考虑得比较多。

针对某个特定的任务,总会有多种写程序的方式。

以后的语言将何去何从?我猜想,人们将继续使用更多的计算机资源让编程变得更容易。而且我们还会继续发展那些对程序员来说更安全的语言。

虽然所有语言在形式上都是等价的(都可以模拟图灵机),但这绝不是说它们都适用于所有的编程任务。写一个控制复杂网页的JavaScript程序,与写一个实现JavaScript编译器的C++程序仍有天壤之别。同时擅长这两种编程任务的程序员并不多见,经验丰富的专业程序员也可能熟悉或粗通十几种语言,但他们不会对多种语言都同样熟练。

每种语言都代表了对效率,表达力,安全性和复杂性的取舍。许多语言显然是为了弥补之前语言的不足才被发明的,它们不仅吸取了之前语言的教训,还能利用更多的计算资源,通常也会受到设计者个人偏好的强烈影响。新的应用领域也会催生专门面向该领域的新语言。

不管怎么样,编程语言都是计算机科学的一个重要而迷人的部分。

语言塑造我们的思维方式,决定我们可以思考什么。

5.3 软件开发

现实中的编程往往是大规模的。大规模编程的方法与任何人想写一本书或承担任何大项目时一样:先搞清楚要做什么,然后从大概的规程着手,将其一级一级分解为较小的任务,再分别完成这些小任务,同时保证他们能够组合在一起。

5.3.1 库,接口和开发工具包

所有重要的程序几乎没有从零开始写的,有许许多多别人已经写出来的东西可以拿来就用。

在最基本的层次上,编程语言提供了一种机制,叫做函数。这样,程序员就可以写出一段执行某个任务的代码,然后以某种形式把它包装起来,提供给别的程序员在其他程序里使用,而这些程序员不必知道那些代码具体如何完成该任务。

5.3.2 bug

5.4 软件资产

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值