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

news2024/9/24 15:17:39

python 历史

回忆上次内容

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

图片描述

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

图片描述

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

缘起

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

图片描述

  • 在荷兰首都 阿姆斯特丹
    • 荷兰城市中的丹(dam)特别多
  • 阿姆斯特丹就是 阿姆斯特河上 大坝的意思
    • 因为整个荷兰都是围海造田出来的
    • 而且城市以各方面开放的态度著称
  • 毕竟世界马车夫
    • 飞翔的荷兰人

童年

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

图片描述

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

罗森

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

图片描述

  • 1920年有本科幻小说叫做

    • R.U.R.
    • Rossum’s Universal Robots
    • 罗素姆万能机器人
  • 剧名中「robota」一词

    • 源于捷克语
    • 意思是「苦力」
  • 也是robots一词的来源

家庭

  • 母亲是教师、父亲是职员
    • 下面有
      • 一个弟弟
      • 一个妹妹
    • 认为自己是一个 nerd
      • 朋友很少
    • 喜欢数学物理课程
      • 也喜欢荷兰文学
      • 不喜欢历史
      • 理科里面不喜欢化学
        • 因为有一大堆表格要背

图片描述

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

大学

  • 大学去的是阿姆斯特丹大学
    • 荷兰最好的大学
    • 学习数学
    • 可以用 Algol68 操作 mainframe
    • 当时 Algol68 和 fortran 也有语言之争
    • 不过数学系只是研究算算数
    • 没有啥意思
  • 阿姆斯特丹还有个自由大学
    • 那里的计算机更发达
    • 那里研究操作系统、数据库、编程语言
  • 当时阿姆斯特丹有三个地方可以用计算机
    • 两个大学和一个数学中心
    • 当时凑钱买了一个计算机
    • 放在自由大学
    • 因为那里有 Tanenbaum

Tanenbaum

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

图片描述

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

研究中心

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

图片描述

  • 那里研究些什么呢?

前辈

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

图片描述

  • 在 CWI 的研究员期间

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

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

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

ABC 编程

  • 首先是开发一种 ABC 编程语言
  • 这个语言的名字可真好记啊
    • 小朋友都能记住
    • 没错就是让小朋友能记住
    • 能让小白能轻松学习的一种语言
  • ABC 也是交互性的
    • 可以一边打一边互动的
    • 就像 python 游乐场那种 REPL 环境
    • 当然那个时代是 1980 年左右
    • 根本没有 python
  • 当时主要的问题是
    • 科学家不会编程
    • 搞不懂溢出、数字存储模式
    • 总之就是无法用计算机真正解决问题
  • 结构化的高级的交互式的语言
    • 不用自己分配内存
    • 替代 basic、pascal、awk 的 一种语言
    • 不是一种难以入手的系统编程语言
    • 就是给初学者玩着学习用的、

图片描述

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

语言细节

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

图片描述

  • 这些改动让 ABC 程序读起来像一段文字
  • 尽管已经具备了良好的可读性和易用性
    • 关键字都用大写字母
    • ABC 语言最终没有流行起来
  • 那这个语言这么好记 、这么方便
    • 为什么就不流行呢?😡

起名的学问

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

图片描述

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

可扩展性

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

图片描述

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

失败原因

  • 没有钱了

图片描述

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

主角

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

图片描述

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

python

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

图片描述

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

短剧

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

图片描述

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

回忆过程

  • guido 本人回忆

    • 当时需要一个简短、独特、还有点神秘的名字
      图片描述
  • 正在读剧本

    • 然后就这么定了

logo 演化

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

图片描述

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

图片描述

语言细节

  • 1991 年 2 月 发布了 0.9.0

    • 最早是一种解释型的语言
    • 程序是在解释器里面运行的
  • 当时的 slogan

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

    python bridges the cap between c and shell programming

  • 发布在 operating system amoeba 系统上

图片描述

组织风格

  • 兼职的开始
    • Guido 业余做的这个 python
    • 当时还没有网页服务器
    • 有一个邮件列表
  • Guido 并不是孤军奋战
    • Guido 是仁慈的独裁者
    • 社区里面的人提各种各样的建议
    • 社区氛围是有趣的
    • Tim Peter 等很厉害的人逐渐加入
    • 解决了很多实际问题
  • Python 社区是自组织的
    • 第一次的线下聚会不是由 Guido 发起的
    • 第二、三次也不是
    • 慢慢形成了 PyCon 的氛围

总结

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

图片描述

  • 再复杂的编程也是从定义变量开始的
    • python 如何定义变量呢?
  • python 是
    • 如何定义变量的呢?
  • 我们下次再说!👋
  • 蓝桥->https://www.lanqiao.cn/courses/3584
  • github->https://github.com/overmind1980/oeasy-python-tutorial
  • gitee->https://gitee.com/overmind1980/oeasypython

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/430873.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

异常(throwable)

异常 异常分类 (1)Throwable类 所有的异常类型都是它的子类,它派生两个子类Error、Exception。 (2)Error类 表示仅靠程序本身无法恢复的严重错误(内存溢出动态链接失败、虚拟机错误)&#…

分布式定时任务

本文引用了谷粒商城的课程 定时任务 定时任务是我们系统里面经常要用到的一些功能。如每天的支付订单要与支付宝进行对账操作、每个月定期进行财务汇总、在服务空闲时定时统计当天所有信息数据等。 定时任务有个非常流行的框架Quartz和Java原生API的Timer类。Spring框架也可以…

【面试题】20个常见的前端算法题,你全都会吗?

现在面试中,算法出现的频率越来越高了,大厂基本必考 今天给大家带来20个常见的前端算法题,重要的地方已添加注释,如有不正确的地方,欢迎多多指正💕 大厂面试题分享 面试题库 前后端面试题库 (…

Spring 6 正式“抛弃”feign

近期,Spring 6 的第一个 GA 版本发布了,其中带来了一个新的特性——HTTP Interface。这个新特性,可以让开发者将 HTTP 服务,定义成一个包含特定注解标记的方法的 Java 接口,然后通过对接口方法的调用,完成 …

Simulink仿真封装中的参数个对话框设置

目录 参数和对话框窗格 初始化窗格 文档窗格 为了更加直观和清晰的分析仿真,会将多个元件实现的一个功能封装在一起,通过参数对话框窗格,可以使用参数、显示和动作选项板中的对话框控制设计封装对话框。如图所示: 参数和对话框…

刘二大人《Pytorch深度学习实践》第六讲逻辑斯蒂回归

文章目录线性回归和逻辑斯蒂回归的区别课上代码交叉熵函数的理解线性回归和逻辑斯蒂回归的区别 线性回归一般用于预测连续值变量,如房价预测问题。 线性回归的一般表达式为: 代价函数为MSE(均方误差): 其中权重thet…

Linux Shell 实现一键部署二进制Rabbitmq

rabbitmq 前言 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代…

openai的whisper语音识别介绍

openAI发布了chatgpt,光环一时无两。但是openAI不止有这一个项目,它的其他项目也非常值得我们去研究学习。 今天说说这个whisper项目 https://github.com/openai/whisper ta是关于语音识别的。它提出了一种通过大规模的弱监督来实现的语音识别的方法。…

C++之深入解析STL unordered_map的底层实现原理

C STL 标准库中,不仅是 unordered_map 容器,所有无序容器的底层实现都采用的是哈希表存储结构。更准确地说,是用“链地址法”(又称“开链法”)解决数据存储位置发生冲突的哈希表,整个存储结构如下所示&…

JVM 垃圾收集器详解

一、垃圾收集器 如果说收集算法是内存回收的方法论,那垃圾收集器就是内存回收的实践者。《Java虚拟机规范》中对垃圾收集器应该如何实现并没有做出任何规定,因此不同的厂商、不同版本的虚拟机所包含的垃圾收集器都可能会有很大差别,不同的虚…

基于遗传算法的中药药对挖掘系统的设计与实现

用数据挖掘技术研究了中药方剂配伍的规律。主要工作:分析了关联规则存在的问题,引入双向关联规则的概念;介绍了遗传算法的基本原理,研究了遗传算法在数据挖掘中的应用;将方剂库转换为位图矩阵,大大提高搜索…

Mac重启清理缓存会怎么样 mac清理缓存怎么清理

众所周知,Mac电脑有着流畅的操作系统,因此,很多用户都会选择使用Mac电脑办公。随着日常使用,系统缓存数据越来越大,某些Mac电脑(尤其是小内存版本的Mac电脑)可能会出现“系统”占存储空间比例较…

初始单片机.md

1.如何将HEX文件烧录到单片机 STC-ISP STC-ISP是一款单片机下载编程烧录软件,是针对STC系列单片机而设计的,可下载STC89系列、12C2052系列和12C5410等系列的STC单片机,使用简便。 思路:将电脑磁盘上已存在的文件通过串口的方式下…

python中第三方库xlrd和xlwt的使用教程

excel文档名称为联系人.xls,内容如下: 一、xlrd模块用法 1.打开excel文件并获取所有sheet import xlrd# 打开Excel文件读取数据 data xlrd.open_workbook(联系人.xls)sheet_name data.sheet_names() # 获取所有sheet名称 print(sheet_name) # [银…

python依次运行多个代码遇到的同步与异步问题

1、要实现在一个Python代码运行完后紧接着运行另一个Python代码,可以使用Python的subprocess模块。该模块可以创建新进程并与之交互,可以用于在Python代码中启动新的程序或脚本。 下面是一个示例代码,用于在运行完code1.py后紧接着运行code2…

论文配色方案(收藏)

方案一:复古 系列色——十六进制颜色码: 0780cf - 765005 - fa6d1d - 0e2c82 - b6b51f - da1f18 - 701866 - f47a75 - 009db2 - 024b51 - 0780cf - 765005 系列色——RGB颜色值: (7,128,207)-(118,80,5&…

【记录】优化油猴插件【BD网盘播放器】

收获最重要前言优化代码收获1.禁止浏览器弹窗2.定时器3.设置属性-隐藏元素4.鼠标悬停和移开事件5.添加元素6.div里均匀分布7.获取元素属性值8.监听播放器状态9.jQuery 选择器前言 有钱的可以支持一下原作者,没钱就要多学习 优化 1.1 视频刚开始未播放时&#xff…

酷雷曼一站式图片直播,助力品牌高效传播

传统模式下,摄影师拍摄会议、活动现场的照片后,一般需要7-10天时间才能完成成片交付,而实际上,由于新闻宣传的即时性,照片延迟交付,远远不能满足客户的需求。因此,即时图片直播技术应运而生&…

Jenkins自动化部署实例讲解

文章目录 前言实例讲解基本环境全局工具配置创建任务任务配置源码管理构建步骤(Build Steps)第一步:调用Maven第二步:执行shell启动容器 后记 前言 你平常在做自己的项目时,是否有过部署项目太麻烦的想法?…

哈希应用——位图(bitset)

目录 见见猪跑(初步了解位图) 位图的模拟实现 位图的应用 1、给定100亿个整数,设计算法找到只出现一次的整数 2、给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件交集? 3、位图应用变形&#xff…