[oeasy]python00134_[趣味拓展]python起源_历史_Guido人生_ABC编程语言_Tanenbaum

简介: [oeasy]python00134_[趣味拓展]python起源_历史_Guido人生_ABC编程语言_Tanenbaum

python 历史 回忆上次内容

  • 颜文字是kaomoji
  • 把字符变成一种图画的方法
  • 一层叠一层
  • 很多好玩儿的kaomoji是一层层堆叠起来的meme


添加图片注释,不超过 140 字(可选)

  • 虚拟的表情也在真实世界有巨大影响
  • 一步步地影响


添加图片注释,不超过 140 字(可选)

  • 字符编码就是这样一步步发展过来的
  • python也是 一步步 发展到今天的
  • python究竟是 怎么发展的呢?🤔


缘起

  • python 这门语言怎么来的呢?
  • 还要从从荷兰说起

添加图片注释,不超过 140 字(可选)

  • 在荷兰首都 阿姆斯特丹
  • 荷兰城市中的丹(dam)特别多


  • 阿姆斯特丹就是 阿姆斯特河上 大坝的意思
  • 因为整个荷兰都是围海造田出来的
  • 而且城市以各方面开放的态度著称


  • 毕竟世界马车夫
  • 飞翔的荷兰人


童年

  • Guido van Rossum
  • Guido 很像 听起来 Guide
  • 把 e 变成了 o
  • 常见的名字
  • 意大利、德国、荷兰都有应该翻译成圭多
  • 土生土长荷兰人
  • 这也是他github中id的来源


添加图片注释,不超过 140 字(可选)

  • van 的意思是 from
  • 从罗森来的圭多
  • 有点 燕人张飞 这个意思
  • 罗森在哪里呢?


罗森

  • 从日德兰半岛南边Gelderland and Overijssel地区来的

添加图片注释,不超过 140 字(可选)

  • 1920年有本科幻小说叫做
  • R.U.R.
  • Rossum's Universal Robots
  • 罗素姆万能机器人


  • 剧名中「robota」一词
  • 源于捷克语
  • 意思是「苦力」


  • 也是robots一词的来源

家庭

  • 母亲是教师、父亲是职员
  • 下面有
  • 一个弟弟
  • 一个妹妹


  • 认为自己是一个 nerd
  • 朋友很少


  • 喜欢数学物理课程
  • 也喜欢荷兰文学
  • 不喜欢历史
  • 理科里面不喜欢化学
  • 因为有一大堆表格要背




添加图片注释,不超过 140 字(可选)

  • 喜欢那种从基本原则推导的东西
  • 电子
  • 观鸟
  • 周末喜欢和同好在一起


大学

  • 大学去的是阿姆斯特丹大学
  • 荷兰最好的大学
  • 学习数学
  • 可以用 Algol68 操作 mainframe
  • 当时 Algol68 和 fortran 也有语言之争
  • 不过数学系只是研究算算数
  • 没有啥意思


  • 阿姆斯特丹还有个自由大学
  • 那里的计算机更发达
  • 那里研究操作系统、数据库、编程语言


  • 当时阿姆斯特丹有三个地方可以用计算机
  • 两个大学和一个数学中心
  • 当时凑钱买了一个计算机
  • 放在自由大学
  • 因为那里有 Tanenbaum


Tanenbaum

  • Tanenbaum 是那边的大玩家
  • 研发了一个 minix
  • 启发了后来的 linus 开发出 linux


添加图片注释,不超过 140 字(可选)

  • 两个学校可以互信学分
  • Guido 迷上了 Tanenbaum 的课程


研究中心

  • 毕业之后,Guido 就加入了本地的计算中心
  • 阿姆斯特丹的 cwi
  • CWI 是 荷兰语简称
  • Centrum Wiskunde & Informatica


  • 英语叫
  • National Research Institute for Mathematics and Computer Science
  • 国家数学和计算机研究中心


添加图片注释,不超过 140 字(可选)

  • 那里研究些什么呢?

前辈

  • 算法!
  • Edsger Dijkstra
  • Dijkstra算法的作者


添加图片注释,不超过 140 字(可选)

  • 在 CWI 的研究员期间
  • 开发了同名的最短路径算法
  • 发展了堆栈概念
  • 互斥、死锁、信号量


  • Dijkstra和 Hoare、Dahl 合著的《结构化程序设计》很厉害
  • 他主张不用 goto
  • 能和这些先进的人学习实在是很棒


  • Guido 负责一些应用程序的开发
  • 写了 BSD 支持通配符的一个算法


ABC 编程

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


  • ABC 也是交互性的
  • 可以一边打一边互动的
  • 就像 python 游乐场那种 REPL 环境
  • 当然那个时代是 1980 年左右
  • 根本没有 python


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


  • 结构化的高级的交互式的语言
  • 不用自己分配内存
  • 替代 basic、pascal、awk 的 一种语言
  • 不是一种难以入手的系统编程语言
  • 就是给初学者玩着学习用的、


添加图片注释,不超过 140 字(可选)

  • Guido加入了 ABC 的开发
  • 肩负了主要的开发任务
  • 和组里面人对于 ABC 进行各种争论


  • ABC语言具体啥样呢?

语言细节

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


添加图片注释,不超过 140 字(可选)

  • 这些改动让 ABC 程序读起来像一段文字
  • 尽管已经具备了良好的可读性和易用性
  • 关键字都用大写字母
  • ABC 语言最终没有流行起来


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


起名的学问

  • 太过注重初学者了
  • 但是没有上升的阶梯
  • 只能搞一些小玩闹
  • 不能做真正的工作
  • 上手快但是没有后续的成就感


  • 而且这个名字起的就是傻瓜化
  • 纯傻瓜化


添加图片注释,不超过 140 字(可选)

  • 你学什么编程语言呢?
  • 我学的是 ABC
  • 听起来就很幼稚 儿童玩具吗
  • 人家那边的名字叫 pascal 帕斯卡
  • 数学家、哲学家,多有文化
  • 这边叫 ABC


  • 你会 ABC 么?
  • 会啊
  • 我还会唱字母歌呢!


  • 不能做复杂工作还有个原因
  • 就连简单的读文件都没办法做 😭


可扩展性

  • 缺乏可扩展性
  • 新加一个功能
  • 整个新东西就得伤筋动骨
  • 需要结构性的改变


  • 拓展性非常重要
  • 说白了就是人人都可以自己编写插件
  • 编写模版


添加图片注释,不超过 140 字(可选)

  • 人人都能玩
  • 都能添砖加瓦
  • 就可以把这个软件的功能和丰富性极大提高
  • 这样用众包的方式
  • 打一场人民战争



  • 除此之外,还有个最重要的原因

失败原因

  • 没有钱了

添加图片注释,不超过 140 字(可选)

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

主角

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


添加图片注释,不超过 140 字(可选)

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


python

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


添加图片注释,不超过 140 字(可选)

  • 起名就叫 python
  • 还有点神秘感


短剧

  • 这个剧今天还能搜到
  • 1970 年代开始


添加图片注释,不超过 140 字(可选)

  • 逆向思维发散思维的短视频
  • 当时还是传统电视剧的天下
  • 这个英国剧团影响力很大
  • 就像是戏剧届的 Beatles


回忆过程

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

添加图片注释,不超过 140 字(可选)


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


logo 演化

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

添加图片注释,不超过 140 字(可选)

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

添加图片注释,不超过 140 字(可选)

语言细节

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


  • 当时的 slogan python 是 c 与系统脚本语言之间的桥梁 python bridges the cap between c and shell programming
  • 发布在 operating system amoeba 系统上

添加图片注释,不超过 140 字(可选)

组织风格

  • 兼职的开始
  • Guido 业余做的这个 python
  • 当时还没有网页服务器
  • 有一个邮件列表


  • Guido 并不是孤军奋战
  • Guido 是仁慈的独裁者
  • 社区里面的人提各种各样的建议
  • 社区氛围是有趣的
  • Tim Peter 等很厉害的人逐渐加入
  • 解决了很多实际问题


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


总结

  • 这次回顾了一下历史
  • python 是如何从无到有的
  • 看到 Guido 长期的坚持和努力


添加图片注释,不超过 140 字(可选)

  • 再复杂的编程也是从定义变量开始的
  • python 如何定义变量呢?


  • python 是
  • 如何定义变量的呢?



目录
相关文章
|
6天前
|
人工智能 Shell 开发工具
[oeasy]python0041_输出ASCII码表_英文字符编码_键盘字符_ISO_646
本文介绍了ASCII码表的生成与使用,包括英文字符、数字和符号的编码。通过Python代码遍历0到127的ASCII值,解决了找不到竖线符号的问题,并解释了ASCII码的固定映射关系及其重要性。文章还介绍了ASCII码的历史背景,以及它如何成为国际标准ISO 646。最后,通过安装`ascii`程序展示了完整的ASCII码表。
9 1
|
17天前
|
人工智能 Python
[oeasy]python039_for循环_循环遍历_循环变量
本文回顾了上一次的内容,介绍了小写和大写字母的序号范围,并通过 `range` 函数生成了 `for` 循环。重点讲解了 `range(start, stop)` 的使用方法,解释了为什么不会输出 `stop` 值,并通过示例展示了如何遍历小写和大写字母的序号。最后总结了 `range` 函数的结构和 `for` 循环的使用技巧。
29 4
|
24天前
|
存储 Python
[oeasy]python038_ range函数_大小写字母的起止范围_start_stop
本文介绍了Python中`range`函数的使用方法及其在生成大小写字母序号范围时的应用。通过示例展示了如何利用`range`和`for`循环输出指定范围内的数字,重点讲解了小写和大写字母对应的ASCII码值范围,并解释了`range`函数的参数(start, stop)以及为何不包括stop值的原因。最后,文章留下了关于为何`range`不包含stop值的问题,留待下一次讨论。
18 1
|
10天前
|
人工智能 开发工具 Python
[oeasy]python040_缩进几个字符好_输出所有键盘字符_循环遍历_indent
本文探讨了Python代码中的缩进问题。通过研究`range`函数和`for`循环,发现缩进对于代码块的执行至关重要。如果缩进不正确,程序会抛出`IndentationError`。文章还介绍了Python的PEP8规范,推荐使用4个空格进行缩进,并通过示例展示了如何使用Tab键实现标准缩进。最后,通过修改代码,输出了从0到122的字符及其对应的ASCII码值,但未能找到竖线符号(`|`)。文章在总结中提到,下次将继续探讨竖线符号的位置。
9 0
|
1月前
|
Python
[oeasy]python036_数据类型有什么用_type_类型_int_str_查看帮助
本文回顾了Python中`ord()`和`chr()`函数的使用方法,强调了这两个函数互为逆运算:`ord()`通过字符找到对应的序号,`chr()`则通过序号找到对应的字符。文章详细解释了函数参数类型的重要性,即`ord()`需要字符串类型参数,而`chr()`需要整数类型参数。若参数类型错误,则会引发`TypeError`。此外,还介绍了如何使用`type()`函数查询参数类型,并通过示例展示了如何正确使用`ord()`和`chr()`进行转换。最后,强调了在函数调用时正确传递参数类型的重要性。
21 3
|
1月前
|
存储 C++ Python
[oeasy]python037_ print函数参数_sep分隔符_separator
本文介绍了Python中`print`函数的`sep`参数,即分隔符。通过回顾上文内容,解释了类型与`type`的概念,并强调了参数类型的重要性。文章详细探讨了`print`函数如何使用`sep`参数来分隔输出值,默认分隔符为空格(序号32)。还讨论了如何修改分隔符为其他字符,如冒号,并解释了为何反斜杠需要使用双反斜杠表示。最后,文章追溯了`sep`名称的由来,以及相关词汇的历史背景,如盎格鲁-萨克逊人的武器和语言。
25 0
|
2月前
|
测试技术 数据库 开发者
Python作为一种谦逊的编程语言:对象自省机制的探讨
Python的自省机制是该语言的一个强大特性,为开发者提供了深入了解和操作对象的能力。它增强了Python的灵活性,使得开发者可以更加精准地控制程序的行为。然而,合理利用自省能力,避免其成为代码复杂性的来源,是每个Python开发者需要考虑的问题。通过熟练运用Python提供的自省工具和技巧,可以更好地设计和实现高效、易维护的Python应用。
32 2
|
2月前
|
Python
[oeasy]python035_根据序号得到字符_chr函数_字符_character_
本文介绍了Python中的`ord()`和`chr()`函数。`ord()`函数通过字符找到对应的序号,而`chr()`函数则根据序号找到对应的字符。两者互为逆运算,可以相互转换。文章还探讨了单双引号在字符串中的作用,并解释了中文字符和emoji也有对应的序号。最后总结了`ord()`和`chr()`函数的特点,并提供了学习资源链接。
28 4
|
2月前
|
Unix 编译器 C语言
[oeasy]python034_计算机是如何认识abc的_ord函数_字符序号_ordinal_
[oeasy]python034_计算机是如何认识abc的_ord函数_字符序号_ord
22 0