首页 > 编程语言 >2.2.1 Python的起源

2.2.1 Python的起源

时间:2024-06-20 12:09:54浏览次数:22  
标签:AB 语言 Python 起源 C语言 Shell Guido 2.2

1.1 Python的起源

Python的创始人为Guido van Rossum(后文简称Guido)。1982年,Guido从阿姆斯特丹大学获得数学和计算机硕士学位。尽管Guido算得上是一位数学家,不过他更享受计算机带来的乐趣。用Guido的话说,尽管他拥有数学和计算机双料资质,不过他趋向于做计算机相关的工作,并热衷于做所有和编程相关的活儿。

Guido接触并使用过Pascal、C、Fortran等语言。这些语言的基本设计原则是让机器运行得更快。在20世纪80年代,虽然IBM和苹果已经掀起了个人电脑浪潮,但是那时候个人电脑的配置很低,比如早期的Macintosh只有8MHz的CPU主频和128KB的RAM,一个大的数组就能占满内存,因此所有编译器的核心都是做优化,以便让程序能够运行。为了提高效率,程序员不得不像计算机一样思考,以便写出更符合机器口味的程序,在那个时代,程序员恨不得榨取计算机每一寸的能力,有人甚至认为C语言的指针是在浪费内存。至于动态类型、内存自动管理、面向对象等就不要想了,这些只会让你的电脑陷入瘫痪。

这种编程方式让Guido感到苦恼。虽然Guido知道如何用C语言写出一个功能,但整个编写过程却需要耗费大量时间。Guido还可以选择Shell,Bourne Shell作为UNIX系统的解释器已经存在很久了。UNIX的管理员常常用Shell写一些简单的脚本,以进行系统维护的工作,比如定期备份、文件系统管理等。在C语言中,许多上百行的程序在Shell中只用几行就可以完成。然而,Shell的本质是调用命令,它不是一个真正的语言,比如shell没有数值型的数据类型,运用加法运算都很复杂。总之,Shell不能全面调动计算机的功能。

Guido希望有一种语言能够像C语言一样全面调用计算机的功能接口,又可以像Shell一样轻松编程。ABC语言让Guido看到了希望,该语言是由荷兰的数学和计算机研究所开发的,Guido曾经在该研究所工作,并参与了ABC语言的开发。与当时大部分语言不同,ABC语言是以教学为目的,目标是“让用户感觉更好”,希望通过ABC语言让语言变得容易阅读、容易使用、容易记忆、容易学习,并以此激发人们学习编程的兴趣。

ABC语言尽管已经具备了良好的可读性和易用性,不过始终没有流行起来。当时,ABC语言编译器需要配置比较高的电脑才能运行,而这些电脑的使用者通常精通计算机,他们考虑更多的是程序的效率,而不是学习难度。ABC语言不能直接操作文件系统,尽管用户可以通过文本流等方式导入数据,不过ABC无法直接读写文件。输入输出的困难对于计算机语言来说是致命的。你能想象一款打不开车门的跑车吗?

1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器。Python这个名字来自于Guido所挚爱的电视剧——Monty Python’s Flying Circus。他希望这个新语言Python能够符合他的理想:创造一种介于C和Shell之间,功能全面、易学易用、可拓展的语言。Guido作为一个语言设计爱好者,已经尝试过设计语言,这次不过是一种纯粹的hacking行为。

1991年,第一个Python编译器诞生。该编译器是用C语言实现的,并且能够调用C语言的库文件。Python诞生时便具有类、函数、异常处理、包含表和词典在内的核心数据类型以及模块为基础的拓展系统。

Python的很多语法来自于C,却又受ABC语言的强烈影响。来自ABC语言的一些规定至今还富有争议(比如强制缩进),不过这些语法规定让Python容易理解。另一方面,Guido聪明地选择让Python服从一些惯例,特别是C语言的惯例,比如回归等号赋值。Guido认为“常识”确定的东西没有必要过度纠结。

Python从一开始就特别在意可拓展性。Python可以在多个层次上拓展,在高层可以直接引入.py文件,在底层可以引用C语言的库。程序员可以使用Python快速编写的.py文件作为拓展模块。当性能是重点考虑的因素时,程序员可以深入底层写C程序,将编译的.so文件引入Python中使用。Python就像使用钢筋建房一样,要先规定好大的框架。程序员可以在此框架下相当自由地拓展或更改。

最初,Python完全由Guido本人开发,后来逐渐受到Guido同事的欢迎,他们迅速反馈使用意见,并参与Python的改进。Guido和一些同事构成了Python的核心团队,他们将自己大部分业余时间用于hack Python, Python逐渐拓展到了研究所外。Python将许多机器层面的细节隐藏交给编译器处理,并凸显逻辑层面的编程思考,程序员使用Python时可以将更多时间用于程序逻辑的思考,而不是具体细节的实现,这一特征吸引了广大程序员。Python开始流行起来了。

标签:AB,语言,Python,起源,C语言,Shell,Guido,2.2
From: https://www.cnblogs.com/imsk/p/18258416

相关文章

  • python中__getattr__和__setattr__
    代码:点击查看代码#!/usr/bin/envpython#!-*-coding:utf-8-*-classA(object):def__setattr__(self,key,value):self.__dict__[key]=valuedef__getattr__(self,name):return"xxx"obj=A()执行操作的代码:代码1:print(......
  • Python中__delattr__()函数详解
    在Python中,__delattr__是一个特殊方法(也称为魔术方法或双下划线方法),它在尝试删除对象的属性时被调用。当你使用del语句来删除一个对象的属性时,Python会自动调用这个方法来执行删除操作。__delattr__方法接受一个参数,即要删除的属性的名称(通常是一个字符串)。你可以在这个方法中自......
  • Appium-Python-Client 4.+版本踩坑实录
    Appium-Python-Client4.+版本TouchAction类被appium.webdriver.extensions.action_helpers.ActionHelpers取代使用方法#点击坐标self.driver.tag(positions,duration=duration)#屏幕元素滑动self.driver.scroll(origin_el=origin_el,destination_el=destination......
  • 如何使用python脚本爬取微信公众号文章
    1、什么是爬虫?在座的各位可能经常听到一个词,叫“爬虫”,这是一种能够悄无声息地将网站数据下载至本地设备的程序。利用爬虫,您无需亲自访问特定网站,逐个点击并手动下载所需数据。相反,爬虫能够全自动地为您完成这项任务,从网站上获取您所需的信息,并将其下载到您的设备上,而整个过程......
  • python队列实例解析
    一队列的概念1创建队列:importqueueq=queue.Queue()#创建Queue队列 2入队和出队foriinrange(3):q.put(i)#在队列中依次插入0、1、2元素foriinrange(3):print(q.get())#依次从队列中取出插入的元素,数据元素输出顺序为2、1、0......
  • 2024 年最新 Python 基于 LangChain 框架基础案例详细教程(更新中)
    LangChain框架搭建安装langchainpipinstalllangchain-ihttps://mirrors.aliyun.com/pypi/simple/安装langchain-openaipipinstalllangchain-openai-ihttps://mirrors.aliyun.com/pypi/simple/ChatOpenAI配置环境变量环境变量OPENAI_API_KEY=OpenAIAP......
  • Python代码解压的中文文件名是乱码,怎么解决?
    大家好,我是Python进阶者。一、前言前几天在Python白银交流群【fashjon】问了一个Python自动化办公的问题,问题如下:importzipfiledefunzip_file(zip_file_path,output_folder_path):withzipfile.ZipFile(zip_file_path,'r')aszip_ref:zip_ref.extractall(......
  • Python基础知识:元组
    元组(Tuple)是Python中一种不可变的序列类型,这意味着一旦创建,元组中的元素就不能被更改。元组常用于存储多个值,当这些值不需要修改时使用,可以提高代码的安全性和性能。以下是关于Python元组的一些基础知识:创建元组元组通过逗号分隔的一系列值构成,并且通常用圆括号包围(虽然在只......
  • python金融实战教程pdf 目录
    python金融实战教程pdf目录:http://literalink.top/resource/detail/7186336410574524416第1章Python简介及安装11.1Python简介 11.2如何安装Python 31.3Python的不同版本 31.4运行Python的3种方式 41.4.1用GUI启动Python 41.4.2从Python命令行......
  • 【华为OD】D卷真题100分:IPv4地址转换成整数 python代码实现
    【华为OD】2024年C、D卷真题集:最新的真题集题库C/C++/Java/python/JavaScript【华为OD】2024年C、D卷真题集:最新的真题集题库C/C++/Java/python/JavaScript-CSDN博客JS、python、java、C、C++代码实现:【华为OD】D卷真题100分:IPv4地址转换成整数JavaScript代码实现-CSDN博......