什么塑造了今天的编程世界

Demon.Lee 2022年03月11日 1,100次浏览

漫画之类的书,翻得就是快,不得不感慨:1960s ~ 1980s 真是大师云集的年代呀。

主要内容摘录如下:

1、冯·诺依曼体系架构

  • 使用二进制编码。
  • 存储设备与中央处理器分开,以保存数据和指令。
  • 包含五大逻辑组件:输入设备,输出设备,控制单元,算术逻辑单元和内存部件。

2、软件职业的出现

  • 早期只有硬件才被视为真正的科学和工程,编程不被重视。
  • 汇编语言出现后,程序员不再与抽象的二进制打交道了,改用了助记符。
  • 此时,汇编器会将汇编指令翻译成机器码(即二进制)在计算机上执行。从此,软件开发这个新的社会工种出现了。
  • 职业称谓变化过程:计算员(computer)--> 编码员(coder)--> 程序员(programmer)。

3、Unix 纪年

  • 肯·汤普森和丹尼斯·里奇开发 Unix 时,需要给系统确定一个时间的起点,当时是 1970 年,直接就用 1970-01-01 00:00:00 作为了 Unix 纪年。
  • 因为所有具有时间概念的系统都需要一个纪年开始的标记,从这个点开始往后累计时间,所以就有了 Unix 纪年。
  • Unix 时间,按累计秒数的方法来存储时间,对 32 位系统来说,会出现溢出,而溢出的那一天为:2038-01-19 03:14:00。

4、IDE(Integrated Development Environment)

  • 基于字符界面进行编辑、编译、调试的 IDE 在 20 世纪 70 年代就出现了,但没火,直到 GUI(图形界面)的出现。
  • 现在的 IDE 集成了众多功能于一身:编辑器、语法高亮、调试器、代码分析、版本控制、测试、重构等。
  • IDE 的好处是降低了开发人员学习各种开发工具的负担,从而将主要精力专注于代码开发身上。

5、1979年,Glenford J.Myers 第一次把“调试”和“测试”进行区分,从此测试成为一个独立的社会分工。


6、自由开放的精神

  • 1983 年, Richard M.Stallman 建立 GNU 项目,目标是开发一系列必备软件,从内核、编辑器、标准库到常用软件以替代商业性 Unix。
  • 1985 年,他发表《GNU 宣言》并成立自由软件基金会。
  • 1989 年,Sir Tim Berners-Lee 提出了 WWW(World Wide Web),他还亲自实现了第一个 Web 服务器,第一个 Web 浏览器,以及 URL,HTML,HTTP 等技术。
  • 1991 年,Linus Torvalds 把自己的业余作品 Linux 发布到互联网上,从此,Linux 开启了它的帝国之旅,成为最自由的操作系统。

7、敏捷宣言

  • 2001 年开发者们在犹他州雪鸟城聚集,交流轻量级软件开发方法的经验,发布了《敏捷宣言》。
  • 其四大原则是:个体和互动高于流程和工具、客户合作高于合同谈判、响应变化高于遵循计划以及工作的软件高于详尽的文档。

8、容器技术

  • 容器和沙箱不是新鲜事,但 Docker 通过镜像把它们玩出了新花样。
  • Docker 镜像统一了开发、测试和生产环境,真正做到了“一次构建,到处运行”,从此一场 PaaS 领域的战火开始在各大云计算厂商之间熊熊燃起。
  • Google 的 Kubernetes 最终在容器编排领域横扫六国,一统江湖。

9、编程语言 PK[1]

名称
发布时间
作者
特点
适用范围
备注
Plankalkul1945德国:康拉德·组斯(Konrad Zuse)第一款高级编程语言未广泛使用,作者使用它写了世界上第一个自动下棋程序
Assembler1951英国:莫里斯·威尔克斯(Maurice Wilkes) 团队使用助记符代替二进制数字串,大大解放了生产力,导致软件行业出现计算机硬件相关开发
Fortran1957美国:IBM 约翰·巴科斯(J. Backus)团队接近数学公式的自然描述,在计算机里具有很高的执行效率,易学,语法严谨广泛地应用于并行计算和高性能计算领域:科学计算、数值分析和工程设计等首个支持添加代码注释的编程语言
Lisp1958美国:约翰·麦卡锡(John McCarthy)函数式编程的起点,用一种简单的数据结构表(list)来代表代码和数据,即列表转换思维人工智能领域
Basic1964美国:约翰·乔治·凯梅尼(John George Kemeny)和托马斯·库尔茨(Thomas E. Kurtz)简单易学的高级语言,提供清晰友好的错误信息,并且可以解释执行计算机早期很火,是必学编程语言,现在用 VB 开发桌面程序也还有
Simula 671967挪威:奥利-约翰·达尔(Ole-Johan Dahl)与克利斯登·奈加特(Kristen Nygaard)等第一门面向对象语言,引入了类、对象、继承和虚函数等概念 后续多种面向对象语言都受其影响
Pascal1970瑞士:尼克劳斯·埃米尔·维尔特(Niklaus Emil Wirth)是当时简洁优美、编译速度最快的语言用于教学外,还可以进行系统开发彼时 C 语言还未诞生
C1972美国:丹尼斯·里奇(Dennis Ritchie)结构化编程语言,运行速度快操作系统内核主要开发语言,Linux Kernel 有超过 98% 的代码用它编写肯·汤普森(Ken Thompson)设计了 B 语言,丹尼斯·里奇在其基础上设计了 C 语言
C++1985丹麦:本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup)把面向对象的 Simula 语言很多特性融入到了 C 编译器,使其成为一门多范式编程语言,灵活且性能高大规模软件开发首选语言之一,比如大型游戏等最复杂的编程语言,没有之一
Perl1987美国:拉里·沃尔(Larry Wall)通用的脚本语言,是高端、通用、解释型、动态的编程语言家族系统管理员最爱,处理文本十分方便灵活的脚本带来的不便是:别人看不懂你写的代码
Python1990荷兰:吉多·范罗苏姆(Guido van Rossum)广泛使用的解释型、高级和通用的编程语言。支持多种编程范型,包括函数式、指令式、反射式、结构化和面向对象编程。同时,它还有动态类型系统和内存自动垃圾回收功能,以及一个巨大而广泛的标准库。应用广泛,尤其受非计算机行业科研工作者的喜爱,目前在 AI 领域非常火人生苦短,我用 Python
Java1995加拿大:詹姆斯·高斯林(James Gosling)拥有跨平台、面向对象、泛型编程的特性广泛应用于企业级 Web 应用开发和移动应用开发一次编写,到处运行
Ruby1995日本:松本行弘(まつもとゆきひろ)面向对象、指令式、函数式、动态的通用编程语言RoR(Ruby on Rails)的出现让其在 Web 开发领域一骑绝尘,成为互联网服务的优选语言和框架编程最重要的就是开心
JavaScript1995美国:布兰登·艾克(Brendan Eich)解释性动态编程语言前端开发不可或缺,浏览器必须支持的语言任何能用 JS 实现的应用,最终都必将用 JS 实现
PHP1995丹麦:拉斯姆斯·勒多夫(Rasmus Lerdorf)通用计算机脚本语言尤其适用于网络开发并可嵌入HTML中使用PHP 是世界上最好的编程语言
Go2009美国:罗伯特·格瑞史莫(Robert Griesemer)、罗勃·派克(Robert C. Pike)及肯·汤普森(Ken Thompson)静态编程语言,语法简单,依赖 CSP 理论实现了高性能的网络和多进程云原生领域一支独大C 太原始,C++ 太复杂,Go 刚刚好
Rust2010Graydon Hoare安全、并发、实用(支持垃圾回收,安全的并发模型,以及媲美 C++ 水平的性能),支持多种编程范式:函数式、并发式、过程式以及面向对象在系统编程领域替代 C 的征程上,是最有力的竞争者


10、Unix is very simple, it just needs a genius to understand its simplicity.



图片来源于网络(侵权删)



  1. https://zh.wikipedia.org/wiki/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80%E6%AD%B7%E5%8F%B2 ↩︎