1.Python概述-认识python

Python 的读音:英[ˈpaɪθən]      美[ˈpaɪθɑːn]

Python是一种面向对象、解释性的高级程序语言。

一、计算机语言的发展


这里主要介绍了计算机语言发展的三个阶段,帮助初学者理解Python作为一门高级程序语言的天生特性,例如python源代码需要Python解释器解释为机器语言后才能被计算机执行。在后面的内容中,将具体介绍Python的特点。

这一部分的内容多出现在大学的计算机文化基础课程中,若对本部分内容已有了解,可直接跳过。

这一部分最后附上了B站上的一门课程,课程名称是“计算机科学速成课”,原创是YouTube的一个知名教育频道Crash Course。课程主要介绍计算机的发展与进化,光是看课程大纲就很赞了。无论你是不是计算机专业的学生,都非常值得一看。


第一代  机器语言

机器语言是机器能直接识别的程序语言或指令代码,无需经过翻译,每一操作码在计算机内部都有相应的电路来完成它。机器语言使用绝对地址绝对操作码。不同的计算机都有各自的机器语言,即指令系统。[1]

机器语言是直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数,并分成若干段,各段的编码表示不同的含义,例如某台计算机字长为16位,即有16个二进制数组成一条指令或其它信息。16个0和1可组成各种排列组合,通过线路变成电信号,让计算机执行各种不同的操作。

早期纸带打孔编程,有孔代表0,无孔代表1

如某种计算机的指令为1011011000000000,它表示让计算机进行一次加法操作;而指令1011010100000000则表示进行一次减法操作。它们的前八位表示操作码,而后八位表示地址码。从上面两条指令可以看出,它们只是在操作码中从左边第0位算起的第6和第7位不同。这种机型可包含256(等于2的8次方)个不同的指令。[2]

第二代  汇编语言

汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。[3]

第三代  高级语言

高级语言(High-level programming language)是一种独立于机器,面向过程或对象的语言。高级语言是参照数学语言而设计的近似于日常会话的语言。[4]

高级语言并不是特指的某一种具体的语言,而是包括很多编程语言,如流行的java,c,c++,C#,pascal,python,lisp,prolog,FoxPro,易语言,中文版的C语言等等,这些语言的语法、命令格式都不相同 [5]  。

高级语言与计算机的硬件结构及指令系统无关,它有更强的表达能力,可方便地表示数据的运算和程序的控制结构,能更好的描述各种算法,而且容易学习掌握。但高级语言编译生成的程序代码一般比用汇编程序语言设计的程序代码要长,执行的速度也慢。所以汇编语言适合编写一些对速度和代码长度要求高的程序和直接控制硬件的程序。高级语言、汇编语言和机器语言都是用于编写计算机程序的语言 [6]  。

高级语言程序“看不见”机器的硬件结构,不能用于编写直接访问机器硬件资源的系统软件或设备控制软件。为此,一些高级语言提供了与汇编语言之间的调用接口。用汇编语言编写的程序,可作为高级语言的一个外部过程或函数,利用堆栈来传递参数或参数的地址 [7]  。

计算机科学速成课 【计算机科学速成课】[40集全/精校] - Crash Course Computer Science_哔哩哔哩_bilibili

二、Python的发展历史

Python之父:Gudio van Rossum 吉多·范罗苏姆  荷兰人。1982年,Guido从阿姆斯特丹大学(University of Amsterdam)获得了数学和计算机硕士学位。

(一)Python的诞生

早期由于计算机配置底下,计算机语言的设计原则是让机器更快运行,而程序的编写过程却极为废时。Gudio希望能有一款既像C语言那样,能够全面调用计算机接口,又可以轻松编程的语言。

1986年,Gudio为CWI(Centrum Wiskunde&Informatica,数学和计算机研究所)工作期间,参与了ABC编程语言的开发工作。ABC语言是一个为编程初学者打造的研究项目,以教学为目的。与当时的大部分语言不同,ABC语言的目标是“让用户感觉更好”。ABC语言希望让语言变得容易阅读,容易使用,容易记忆,容易学习,并以此来激发人们学习编程的兴趣。比如下面是一段来自Wikipedia的ABC程序,这个程序用于统计文本中出现的词(word)的总数:

HOW TO RETURN words document:
   PUT {} IN collection
   FOR line IN document:
      FOR word IN split line:
         IF word not.in collection:
            INSERT word IN collection
   RETURN collection

HOW TO用于定义一个函数。一个Python程序员应该很容易理解这段程序。ABC语言使用冒号(:)和缩进来表示程序块(这个与Python是一致的,而C语言使用{}来表示程序块)。行尾没有分号。for和if结构中也没有括号()。如果将HOW TO改为def,将PUT行改为collection = [],将INSERT行改为collection.append(word),这就几乎是一个标准的Python函数。上面的函数读起来就像一段自然的文字。[8]

然而ABC语言最后也没有发展起来,Gudio认为ABC失败的原因是在当时高级语言为时过早,并且平台迁移能力弱,难以添加新功能,仅仅专注于编程初学者,没有把有经验的编程人员纳入其中。

1989年,为了打发圣诞节假期,Guido开始写Python语言的编译/解释器。Python来自Guido所挚爱的电视剧Monty Python's Flying Circus (BBC1960-1970年代播放的室内情景幽默剧,以当时的英国生活为素材)。他希望这个新的叫做Python的语言,能实现他的理念(一种C和shell之间,功能全面,易学易用,可拓展的语言)(这一段也解释了为什么Python叫Python)

(二)Python的版本

第一个版本 version(0.9.0) 发布时间1991年2月,此时已包含了类(class),函数(function),异常处理(exception),包括表(list)和词典(dictionary)在内的核心数据类型,以及模块(module)为基础的拓展系统。

第二个版本 version(1.0) 发布时间1994年1月,新功能包括lambda,map,filter和reduce。

第三个版本 version(2.0) 发布时间2000年10月,新功能列表推导式、垃圾收集器、支持unicode。

第四个版本 version(3.0) 发布时间2008年12月,主要改变有print变成了函数、只有一种整形、两个整数相除返回浮点数而不是整数等等。[9]

三、Python的特点

简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。

易学:Python极其容易上手,因为Python有极其简单的说明文档 。

免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。

面向对象:Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。

可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。

可嵌入性:可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。

丰富的库:Python标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。

四、Python的应用领域

1.WEB开发

Python拥有很多免费数据函数库、免费web网页模板系统、以及与web服务器进行交互的库,可以实现web开发,搭建web框架,目前比较有名气的Python web框架为Django。从事该领域应从数据、组件、安全等多领域进行学习,从底层了解其工作原理并可驾驭任何业内主流的Web框架。

2.桌面软件

Python在图形界面开发上很强大,可以用tkinter/PyQT框架开发各种桌面软件!

3.网络编程

网络编程是Python学习的另一方向,网络编程在生活和开发中无处不在,哪里有通讯就有网络,它可以称为是一切开发的“基石”。对于所有编程开发人员必须要知其然并知其所以然,所以网络部分将从协议、封包、解包等底层进行深入剖析。

4.爬虫开发

在爬虫领域,Python几乎是霸主地位,将网络一切数据作为资源,通过自动化程序进行有针对性的数据采集以及处理。从事该领域应学习爬虫策略、高性能异步IO、分布式爬虫等,并针对Scrapy框架源码进行深入剖析,从而理解其原理并实现自定义爬虫框架。

5.云计算开发

Python是从事云计算工作需要掌握的一门编程语言,目前很火的云计算框架OpenStack就是由Python开发的,如果想要深入学习并进行二次开发,就需要具备Python的技能。

6.人工智能

MASA和Google早期大量使用Python,为Python积累了丰富的科学运算库,当AI时代来临后,Python从众多编程语言中脱颖而出,各种人工智能算法都基于Python编写,尤其PyTorch之后,Python作为AI时代头牌语言的位置基本确定。

7.自动化运维

Python是一门综合性的语言,能满足绝大部分自动化运维需求,前端和后端都可以做,从事该领域,应从设计层面、框架选择、灵活性、扩展性、故障处理、以及如何优化等层面进行学习。

8.金融分析

金融分析包含金融知识和Python相关模块的学习,学习内容囊括Numpy\Pandas\Scipy数据分析模块等,以及常见金融分析策略如“双均线”、“周规则交易”、“羊驼策略”、“Dual Thrust 交易策略”等。

9.科学运算

Python是一门很适合做科学计算的编程语言,97年开始,NASA就大量使用Python进行各种复杂的科学运算,随着NumPy、SciPy、Matplotlib、Enthought librarys等众多程序库的开发,使得Python越来越适合做科学计算、绘制高质量的2D和3D图像。

10.游戏开发

在网络游戏开发中,Python也有很多应用,相比于Lua or C++,Python比Lua有更高阶的抽象能力,可以用更少的代码描述游戏业务逻辑,Python非常适合编写1万行以上的项目,而且能够很好的把网游项目的规模控制在10万行代码以内。[10]

                                                                        TIOBE Index for December 2023[11]

(2023年12月25日更新)实在让人兴奋,Python在榜单中遥遥领先,可望再次成为年度语言。计划将曾经发布的文章整理一下,编写一本适合高职院校学生使用的教材。目前有几点问题还在考虑:

一是如何适应学生不同学习方式的需求,提供多个学习入口,从而提升学生自主性;

二是对于计划将python作为工作主要工具的学生,他们的就业岗位主要在哪里?可否针对性的设计项目任务,供不同学生选择练习;

三是除了教材以外,如何为授课教师提供一件好的教学工具,既能辅助课堂教学,还能方便组织学生完成练习,并对学习效果进行评估。

如果大家有好的建议,欢迎留言,感激不尽。

参考文献:

1.  百度百科——机器语言

2.  AllenAmanda.从机器语言到汇编语言.从机器语言到汇编语言_机器语言怎么变成汇编语言-CSDN博客

3.  王爽.汇编语言(第二版).北京:清华大学出版社,2013-09-01:2-100

4.  刘岚编,单片计算机基础及应用,武汉理工大学出版社,2016.03,第71页

5.  刘岚,尹勇,撒继铭,周嵘,方浩,潘爱民编著,单片计算机基础及应用,武汉理工大学出版社,2016.03,第71页

6.  张令通,徐陶祎主编,微机原理与接口技术,华中科技大学出版社,2014.01,第98页

7.  唐龙,郭鑫主编;宋元甫,陈艳秋,舒杰,郑萍,田崇瑞,耿姝,杨迎副主编;张珑主审,JAVA语言程序设计=THE JAVA PROGRAMMING LANGUAGE,哈尔滨工业大学出版社,2016.07,第2页

8.  Vamei.Python简史.https://www.cnblogs.com/vamei/archive/2013/02/06/2892628.html

9. History of Python.1. History and Philosophy of Python | Python Tutorial

10.Python十大应用领域与就业方向.Python十大应用领域与就业方向_python已经渗透到科研的方方面面,请举例至少十个专业领域或方向-CSDN博客

11.TIOBE Index for October 2023.TIOBE Index - TIOBE

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胡老师11452

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值