Skip to content

Latest commit

 

History

History
356 lines (257 loc) · 9.28 KB

290-92555-[趣味拓展]python起源_历史_Guido人生_ABC编程语言_Tanenbaum.sy.md

File metadata and controls

356 lines (257 loc) · 9.28 KB
show version enable_checker
step
1.0
true

python 历史

回忆上次内容

  • print函数

    • end参数
      • end参数 的值 可以是任意字符串
      • end参数 的值 会输出到结尾位置
      • end参数 的默认值 是 \n
    • 如果end参数的值 是 空串(end="")
      • 意味着输出后 不自动换行
      • 可以手动在 输出字符串的末尾
        • 加上 换行符(\n)
  • 这样

    • 不但可以 控制输出时
      • 结尾 是否换行
    • 还能控制
      • 具体 在换行
  • python语言

    • 控制 真的很精细
  • python语言

    • 究竟是 如何发展成 今天这样儿 的呢?🤔

缘起

  • python 这门语言怎么来的呢?
    • 不是Guido制作的吗?

图片描述

  • 我们还给Guido制作过简历呢?

图片描述

  • Guido在 大厂 干这么多年
    • 怎么 还有时间 发明python 呢?

研究中心

  • 毕业之后
    • Guido 就加入了本地的计算中心
      • 阿姆斯特丹的 CWI
      • CWI 是 荷兰语简称
        • Centrum Wiskunde & Informatica
    • 翻译成 英语是
      • National Research Institute for Mathematics and Computer Science
      • 国家数学和计算机研究中心
    • 这就是Guido的第一份工作

图片描述

  • 那里研究些什么呢?

前辈

  • 算法!

图片描述

  • Edsger Dijkstra在 CWI 的研究员期间

    • 开发了同名的最短路径算法
      • Dijkstra 寻路算法
    • 发展了堆栈概念
    • 互斥、死锁、信号量
  • Dijkstra和 Hoare、Dahl 合著的《结构化程序设计》很厉害

    • 他主张不用 goto
    • 能和这些先进的人学习实在是很棒
  • Guido 负责一些应用程序的开发

    • 写了 BSD 支持通配符的算法

ABC 编程

  • 首先Guido工作的任务
    • 是开发一种 ABC 编程语言
  • 这个语言的名字 可真好记啊
    • 小朋友 都能记住
    • 没错!目标就是
      • 能让小朋友 记住
      • 能让小白能轻松学习的一种语言

图片描述

  • ABC 也是交互性 编程语言
    • 可以一边输入 一边互动的
    • 就像 python 游乐场那种 REPL 环境
    • 当时 是 1980 年
      • 还没有 python

需求

  • 当时主要的问题是
    • 数学家、科学家不会编程
    • 搞不懂溢出、数字存储模式
    • 总之就是无法用计算机真正解决问题

图片描述

  • 结构化的高级的交互式的语言

    • 不用自己分配内存
    • 方便入手
    • 就是给初学者玩着学习用的
    • 试图替代 basic、pascal
  • Guido加入了 ABC 的开发

    • 肩负了主要的开发任务
    • 和组里面人对于 ABC 进行各种争论
  • ABC语言具体啥样呢?

语言细节

  • ABC 语言
    • 使用冒号和缩进来表示程序块
    • 行尾没有分号
    • for 和 if 结构中也没有括号()
    • 赋值采用的是 PUT
    • 而不是更常见的等号

图片描述

  • 这些改动让 ABC 程序读起来像一段文字

调用

  • 尽管已经具备了良好的可读性和易用性
    • 关键字都用大写字母
    • ABC 语言最终没有流行起来

图片描述

  • 那这个语言这么好记 、这么方便
    • 为什么就不流行呢?😡

起名的学问

  • 太过注重初学者了
    • 但是没有上升的阶梯
    • 只能搞一些小玩闹
    • 不能做真正的工作
    • 上手快但是没有后续的成就感
  • 而且这个名字起的就是傻瓜化
    • 纯傻瓜化

图片描述

  • 你学什么编程语言呢?
    • 我学的是 ABC
    • 听起来就很幼稚 儿童玩具吗
    • 人家那边的名字叫 pascal 帕斯卡
    • 数学家、哲学家,多有文化
    • 这边叫 ABC
  • 你会 ABC 么?
    • 会啊
    • 我还会唱字母歌呢!
  • 不能做复杂工作还有个原因
    • 就连简单的读文件都没办法做 😭

可扩展性

  • ABC语言 缺乏可扩展性
    • 新加 一个功能
    • 整个 新东西
    • 就得 伤筋动骨
    • 需要 结构性的改变
  • 可拓展性 非常重要
    • 说白了 就是
      • 人人 都可以 自己编写插件
      • 编写模版

图片描述

  • 后来的python
    • 人人
      • 都能玩
      • 都能添砖加瓦
      • 就可以把这个软件的功能和丰富性
        • 极大提高
    • 这样用众包的方式
    • 打一场人民战争
  • 除此之外
    • ABC的失败
    • 还有个 最重要的原因

失败原因

  • 没有钱了

图片描述

  • 后来这个项目部
    • 就黄了么

主角

  • Guido仍然在这个 cwi 里面工作
    • 1989 年闲的没事
    • 想写一个脚本解释器
    • 就像一个 shell
    • csh bash zsh 那种脚本解释器
    • 不为了钱就为了好玩
  • 他对于 鸡尾酒会 和 acm 论文不感兴趣
    • 想做 一些实际的东西
    • 他已经从 abc 语言吸取了很多经验
    • 词法分析 对他来说
      • 已经没有什么难度了

图片描述

  • 难的是起名字
    • 这回的新语言叫什么名字呢?

回忆过程

  • guido 本人回忆
    • 当时需要一个简短、独特、还有点神秘的名字

图片描述

  • 正在读剧本
    • 然后就这么定了

python

  • guido 当时是在看短剧
    • 短剧是英国剧团 monty python‘s flying circus 的
    • 成天看 入迷了

图片描述

  • 这个剧今天还能搜到
    • 1970 年代开始
    • 巨蟒剧团之飞翔的马戏团

短剧

  • 当时主流还是传统电视剧的天下
    • 剧团突破原有思维模式

图片描述

  • 这个英国剧团
    • 拍摄 逆向思维、发散思维的短视频
    • 在西欧地区影响力很大
  • 就像是戏剧届的 Beatles
    • 容易引起文化共鸣

命名

  • 很像今天的搞笑短视频

图片描述

  • Guido决定新语言 起名就叫 python
    • 还有点神秘感

神秘感

当天后赫拉 听说勒托( Leto )怀上了宙斯的孩子后

大为恼火

想方设法阻扰勒托的生产

并派出一条名叫Python的巨蟒来袭击勒托

勒托 被巨蟒 追得 无处栖身

后来 逃到海中一个荒岛上 才找到一个生产之地

花了九天九夜才生下一对孪生子 即月亮女神阿尔忒弥斯和光明神阿波罗

图片描述

Python是大地之母盖亚的儿子

在Delphi有大量拥趸

阿波罗长大后

成为了奥林匹亚神阿波罗

替母复仇

在德尔斐附近的海湾杀死了巨蟒Python

神殿

在古希腊人信仰里阿波罗是知识、光、音乐和医药的神

人们在德尔斐(Delphi)摧毁了python的神庙

修建了一座阿波罗神殿作为纪念

图片描述

因为阿波罗拥有强大的预言能力

所以该神殿以其准确的“神谕”( Oracle )而闻名

logo 演化

  • 最早的 logo 是他的弟弟 Just von Rossum 做的

图片描述

  • 后来出现了两只大蟒蛇的样子

图片描述

语言细节

  • 1991 年 2 月 发布了 0.9.0
    • 最早是一种解释型的语言
    • 程序是在解释器里面运行的
  • 当时的 slogan

python 是 c 与系统脚本语言之间的桥梁

python bridges the cap between c and shell programming

图片描述

  • 最初的python
    • 发布在 operating system amoeba 系统上

组织风格

  • 持续兼职做python
    • Guido 业余做的这个 python
    • 当时还没有网页服务器
    • 有一个邮件列表
  • Guido换了一个又一个工作
    • 但始终在做python
  • Guido 并不是孤军奋战
    • Guido 是项目仁慈的独裁者
    • 社区里面的人提各种各样的建议
    • 社区氛围是有趣的
    • Tim Peter 等很厉害的人逐渐加入
    • 解决了很多实际问题

图片描述

  • Python 社区是自组织的
    • 第一次的线下聚会不是由 Guido 发起的
    • 第二、三次也不是
    • 慢慢形成了 PyCon 的氛围

总结

  • 这次回顾了一下历史
    • python 是如何从无到有的
    • 看到 Guido 长期的坚持和努力
    • 一次次的pycon就像旋涡一样
    • 不断推进python走向更大的时间和空间
  • python还有什么可以玩的东西吗?🤔
  • 我们下次再说!👋