找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4391580|回复: 0

站在祖师爷尼古拉斯•威茨的肩上,看编程世界

[复制链接]

该用户从未签到

发表于 2021-5-17 15:56:45 | 显示全部楼层 |阅读模式

您需要 登录 才可以下载或查看,没有账号?立即注册

×
尼古拉斯•威茨(Niklaus Wirth)是瑞士计算机科学家,也是计算机编程领域的祖师爷,他先后参与或独立发明了Euler、PASCAL及Modula等多种编程语言,于1984年被授予图灵奖,他的名言“算法+数据结构=程序”(Algorithm+Data Structures=Programs)在计算机领域几乎人尽皆知。

— 01 —
读博期间设计出Euler
威茨于1934年出生在瑞士北部的温特图尔,父亲是一位地理学教授。威茨自幼聪明,从小就显示出超强的动手能力,他最大的爱好就是组装飞机模型。中学毕业以后,威茨进入世界著名学府的苏黎世工学院(ETH),并于1958年取得学士学位。
之后他进入加拿大的莱维大学继续深造,并于1960年取得硕士学位。之后他又一次迁移到美国加州,进入加州大学伯克利分校攻读博士学位。读大学时候的威茨已经在计算机领域崭露头角。
威茨在撰写博士论文时,Algol 60语言刚刚问世。它是第一个清晰定义的语言,其语法是用严格公式化的方法说明的。
但当时已有一些学者认识到,清晰的规格说明虽然有助于可靠而有效的实现,但Algol 60报告中仍然有一些缺陷和不足。威茨在和Algol的主要设计者冯•维京格藤(Andrian van Wijngaarden)多次交流之后,决定对Algol 60做进一步优化,并以此为自己的博士论文课题,后来就诞生了Euler。
Euler是威茨所参与设计的第一个语言,虽然在实用性上尚欠缺考虑,但在学术上却非常优美,为编译器的系统设计创造了一个很好的基础。
— 02 —
设计出Algol-W
博士毕业以后,因为在Euler上的成就,威茨得以进入门槛极高的斯坦福大学工作。
与此同时,负责Algol语言完善与扩充的工作小组也看中了威茨,想招他进去工作。威茨进去之后,发现小组分成两派:一派主张设计一个新语言,以便树起一个新的里程碑;另一派则觉得时间太紧,主张对Algol 60进行适当优化。
威茨便自称同时属于这两派,并提交了一份建议书。这份建议书经过托尼•霍尔(Tony Hoare)等人的修改和完善以后顺利通过,这就是Algol-W(W是威茨名字的首字母)。
之后,威茨带领学生在一台IBM 360上试着将这份建议书投入实践。但是当时的IBM 360只提供汇编语言和FORTRAN语言,威茨和他的学生都觉得这两者并不适合作为设计编译器的工具。
为此,威茨决定设计一种新的语言来编写 Algol-W的编译器。威茨用了两周时间写出这个语言的定义,然后用了4个月的时间在Burroughs公司的Bu5000计算机上完成了交叉编译程序,而威茨的一个学生则把这个交叉编译程序成功移植到了IBM 360。
这些额外的工作虽然耗费了威茨大量的精力和时间,但也加快了Algol-W编译器的开发,同时催生了一个新的语言PL360(PASCAL的前身)。1966年,Algol-W正式诞生并投入使用。
— 03 —
PASCAL之父
PL360本是作为辅助工具而开发的,但却在许多地方获得应用,威茨在此基础上,对PL360进行了进一步的完善和补充,为纪念法国数学家和哲学家布莱兹•帕斯卡(Blaise•Pascal),他将这种语言命名为“PASCAL”。
Pascal是最早出现的结构化编程语言,具有丰富的数据类型和简洁灵活的操作语句,Pascal是高级语言发展史上的一个重要里程碑。
Pascal问世之后,由于它的简洁明了以及所提供的丰富的数据结构和控制结构为程序员提供了极大的方便与灵活性,加之其适合于由微处理器所组成的计算机系统,很快广泛地流传开来。
在C语言问世以前,PASCAL是风靡全球、最受欢迎的语言之一,创下了发行拷贝数最多的世界记录。威茨的一个学生菲力浦•凯恩(Phillipe Kahn),从苏黎世工学院毕业以后,在美国加利福尼亚州办了一个软件公司,卖出了100多万份PASCAL拷贝,因此而赚得钵满盆溢。
— 04 —
首次提出结构化程序设计概念
威茨基于自己开发程序设计语言和编程的实践经验,在1971年发表的“通过逐步求精方式开发程序’(Program Development by Stepwise Refinement)一文中,首次提出了“结构化程序设计”(structure programming)的概念。
这个概念简而言之,就是不要求一步就编制成可执行的程序,而是分若干步进行,逐步求精。
第一步编出的程序抽象度最高,第二步编出的程序抽象度有所降低,一直到最后一步编出的程序即为可执行的程序。用这种方法编程看似复杂,实际上可以使程序更加地易读、易写、易调试、易维护、易验证。
结构化程序设计方法又称为“自顶向下”或“逐步求精”法,在程序设计领域引发了一场革命,不久便成为程序开发的一个标准方法,尤其是在后来发展起来的软件工程中获得广泛应用。有人评价说威茨的结构化程序设计概念“完全改变了人们对程序设计的思维方式”。
— 05 —
Modula之父
随着编程技术的发展,为适应并发程序设计的需要,威茨于20世纪70年代中晚期设计出Modula语言。它继承了PASCAL语言中良好的传统构造,包括典型的控制结构、数据类型和过程等概念,并弥补了PASCAL语言的不足,增加新的设施,即引进了模块和进程概念,增加低级设施,采用更为系统化的语法等。
Modula问世之后,引起了不小的轰动,威茨很快发发型了第二个版本Modula-2,得到了广泛的应用。
目前,世界上已经开发了近百个Modula-2编译系统,欧洲、加拿大、澳大利亚等不少大学更是用Modula-2代替PASCAL语言作为计算机科学系本科生的第一门程序设计课。
— 06 —
Oberon计划
近年来,威茨开始了一个新的计划——Oberon计划。
Oberon是将程序设计语言和操作系统结合在一起的、面向单用户的个人工作站的一个系统。
在威茨看来,在因特网日益普及的情况下,今后联网的计算机主要将是个人工作站,因此如何使个人工作站功能更加强大、更加方便使用是一个十分重要的研究方向。
威茨之所以将这个计划取名为“Oberon”,是因为Oberon是希腊神话中的仙境之王和女神Titania的丈夫。威茨的目标是要使Oberon语言超越PASCAL和Modula,使设计出的操作系统和编译器功能更加强大。威茨曾写了两本书向读者推荐Oberon。
— 07 —
荣获图灵奖
因为对Euler、PASCAL及Modula等语言的贡献,国际计算机学会(ACM)于1984年授予威茨当年的图灵奖,1987年又授予他计算机科学教育杰出贡献奖。
除此之外,国际学术组织(IEEE)也先后在1983年及1988年授予威茨EmanualPiore奖、计算机先驱奖。
1992年,加州大学伯克利分校授予威茨“杰出校友”称号。
威茨的学术著作颇丰,包括《系统程序设计导论》、《算法 数据结构=程序》、《算法和数据结构》、《Modula-2程序设计》、《Oberon计划:操作系统和编译器的设计》、《数字电路设计教材》等。
— 08 —
算法好书推荐
《算法设计》

这是一本哈佛、斯坦福、普林斯顿、多伦多等众多名校采用的算法经典教材,用实例阐明枯燥的算法理论,更注重算法设计思维的培养,适合作为算法入门书。
该书强调用实际示例阐明枯燥的算法理论,更注重算法设计思路而非算法复杂度分析。本书采用新颖的教学方式,通过分析真实世界的问题来激发算法思想。
两位作者以一种清晰、直接的方式,指导学生自己分析和定义问题,并从中找出适用于给定场景的算法设计原则。本书鼓励读者更深入地理解算法设计过程,探索算法在计算机科学的更广阔领域中的应用。
内容简介
这是一本关于算法设计和分析的经典教材。本书围绕算法设计进行组织,对每种算法技术用多个典型范例进行分析,把算法的理论跟实际问题结合起来,具有很大的启发性。本书侧重算法设计思路,每章都从实际问题出发,经过深入具体的分析引出相应算法的设计思想,并对算法的正确性和复杂性进行合理的分析和论证。本书覆盖面广,且含有200多道精彩的习题,最后还扩展了PSPACE问题、参数复杂性等内容。
《人工智能算法 卷1 基础算法》

欲建高楼,必重基础。本书讲授诸如维度法、距离度量算法、聚类算法、误差计算、爬山算法、模拟退火算法、Nelder-Mead算法和线性回归算法等人工智能基础算法。本书中所有算法均配以具体的数值计算示例。
“人工智能算法”系列图书的目标读者是那些没有良好数学基础,又对人工智能感兴趣的人。本书读者只需具有基本的大学代数和计算机编程知识,任何超出这个范围的内容都会在书中详细说明。本书为读者提供配套的示例程序代码, 当前已有Java、C#、R、C/C++和Python的语言版本,还有社区支持维护的Scala语言版本。
内容简介
算法是人工智能技术的核心。本书介绍了人工智能的基础算法,全 书共10 章,涉及维度法、距离度量算法、K 均值聚类算法、误差计算、 爬山算法、模拟退火算法、Nelder-Mead 算法和线性回归算法等。书中 所有算法均配以具体的数值计算来进行讲解,读者可以自行尝试。
每章都配有程序示例,GitHub 上有多种语言版本的示例代码可供下载。本书适合作为人工智能入门读者以及对人工智能算法感兴趣的读者阅读参考。
《人工智能算法 卷2 受大自然启发的算法》

大自然为人类的发明创造提供了源源不断的灵感。本书介绍了一些在人工智能场景提供解决方案的算法,涉及交叉和突变、遗传算法、粒子群优化、细胞自动机等问题——它们无一不受到基因、鸟类、蚂蚁、细胞或树的启发。虽然算法的灵感来源是大自然,但读者不必具备生物学知识也能读懂本书。
这是一本AI算法入门教程,算法导论,实例讲解人工智能基础算法!丰富的示例代码和在线资源,提供在线实验环境,源代码下载,方便动手实践与拓展学习!
内容简介
算法是人工智能技术的核心,大自然是人工智能算法的重要灵感来源。本书介绍了受到基因、鸟类、蚂蚁、细胞和树影响的算法,这些算法为多种类型的人工智能场景提供了实际解决方法。全书共10章,涉及种群、交叉和突变、遗传算法、物种形成、粒子群优化、蚁群优化、细胞自动机、人工生命和建模等问题。书中所有算法均配以具体的数值计算来进行讲解,每章都配有程序示例,读者可以自行尝试。
《百面机器学习 算法工程师带你去面试》

人工智能几起几落,最近这次人工智能浪潮起始于近10年,技术的飞跃发展,带来了应用的可能性。未来的几年,是人工智能技术全面普及化的时期,也是算法工程师稀缺的时期。
本书旨在帮助对人工智能和机器学习有兴趣的朋友们更加深入地了解这个领域的基本技能,帮助每个软件工程师成为自信的AI实践者,帮助每个数据科学家成为出众的AI研究者。对每个有志进入此领域的工程师来说,本书会为你铺设一条快速通往目标的道路。
内容简介
本书收集了超过100道机器学习的题目,这些题目大部分在近年算法工程师的笔试、面试中出现过,作者试图从实际应用出发,给出详细的解答,打通从理论到应用的障碍。书中还讲述了很多算法背后的小故事,增加读者对问题的理解。
《百面深度学习 算法工程师带你去面试》

人工智能时代程序员不可不读深度学习面试宝典,全面收录135道真实算法面试题,直击面试要点,互联网头部企业都在用,数学之美作者吴军、动手学深度学习作者李沐推荐!
本书适合相关专业的在校学生检查和加强对所学知识点的掌握程度,求职者快速复习和补充相关的深度学习知识,以及算法工程师作为工具书随时参阅。
此外,非相关专业、但对人工智能或深度学习感兴趣的研究人员,也可以通过本书大致了解一些热门的人工智能应用、深度学习模型背后的核心算法及其思想。
内容简介
深度学习是目前学术界和工业界都非常火热的话题,在许多行业有着成功应用。本书由Hulu的近30位算法研究员和算法工程师共同编写完成,专门针对深度学习领域,是《百面机器学习:算法工程师带你去面试》的延伸。
全书内容大致分为两个部分,第一部分介绍经典的深度学习算法和模型,包括卷积神经网络、循环神经网络、图神经网络、生成模型、生成式对抗网络、强化学习、元学习、自动化机器学习等;第二部分介绍深度学习在一些领域的应用,包括计算机视觉、自然语言处理、推荐系统、计算广告、视频处理、计算机听觉、自动驾驶等。
本书仍然采用知识点问答的形式来组织内容,每个问题都给出了难度级和相关知识点,以督促读者进行自我检查和主动思考。书中每个章节精心筛选了对应领域的不同方面、不同层次上的问题,相互搭配,展示深度学习的“百面”精彩,让不同读者都能找到合适的内容。
本书适合相关专业的在校学生检查和加强对所学知识点的掌握程度,求职者快速复习和补充相关的深度学习知识,以及算法工程师作为工具书随时参阅。此外,非相关专业、但对人工智能或深度学习感兴趣的研究人员,也可以通过本书大致了解一些热门的人工智能应用、深度学习模型背后的核心算法及其思想。
回复

使用道具 举报

网站地图|页面地图|文字地图|Archiver|手机版|小黑屋|找资源 |网站地图

GMT+8, 2024-12-26 22:43

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表