根据TIOBE发布的2018年5月编程语言排行,可以看到python作为现在十分火热的语言,一直都是保持在前列。
5 月编程语言排行榜 TOP20 榜单:

Top 10编程语言TIOBE指数走势(2002-2018)

今天就介绍一下python语言背后的起源。
Python,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。
作为python的作者,是什么促使他设计了这个语言呢?

在80年代,个人电脑的配置较之如今是极低的,程序员不得不努力思考如何最大化利用空间,以写出符合机器口味的程序。而正是因为这一点,让guido感到苦恼。他认为这样编写程序实在是太过于耗费时间,于是他想到了shell。shell可以像胶水一样,将UNIX下的许多功能连接在一起。许多C语言下上百行的程序,在shell下只用几行就可以完成。然而,shell的本质是调用命令,它并不是一个真正的语言,shell不能全面的调动计算机的功能。
于是,guido开始思考,是否能设计一款语言,使它同时具备C与shell的优点,既能够全面调用计算机的功能接口,又可以轻松编写程序。
后来他进入CWI(Centrum Wiskunde & Informatica, 数学和计算机研究所)工作,并参加了ABC语言的开发。ABC语言旨在让语言变得容易阅读,容易使用,容易记忆,容易学习。但由于它的可拓展性差,不能直接IO,过度革新与传播困难,导致它不为大多数程序员所接受(因为语法上的过度革新,加大了程序员的学习难度)与传播。
除去这些缺点,我们不难看出,ABC就guido心中所期望的那款语言的雏形。
1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承。而取名python,是取自他挚爱的一部电视剧Monty Python’s Flying Circus 。
1991年,第一个Python编译器诞生,它是用C语言实现的,并能够调用C库(.so文件)。从一出生,Python已经具有了:类(class),函数(function),异常处理(exception),包括表(list)和词典(dictionary)在内的核心数据类型,以及模块(module)为基础的拓展系统。
guido为防止重蹈ABC的覆辙,着重注意python的可扩展性,并且也沿用了C中的大部分语法习惯,而这,使python得到guido同事的欢迎。他们迅速的反馈使用意见,并参与到Python的改进。
python诞生在一个幸运的时间。1990年代初,个人计算机开始进入普通家庭。Intel发布了486处理器,windows发布window 3.0开始的一系列视窗系统,计算机的性能大大提高。并且由于Internet随个人电脑的普及而为人们所广知,许多程序员以及资深计算机用户频繁使用Internet进行交流,这使得python没有了硬件上的束缚与传播上的困难,再加上python易于使用的特点,使python得到了一定程度上的传播。
Guido维护了一个maillist,python用户通过邮件进行交流。因为python用户来自许多领域,有不同的背景,对python也有不同的需求。python相当的开放,又容易拓展,所以当用户不满足于现有功能,很容易对python进行拓展或改造。随后,这些用户将改动发给Guido,并由Guido决定是否将新的特征加入到python或者标准库中。这就使得不同领域的优点集中于python。
后来的python2.0,从maillist的开发方式,转为完全开源的开发方式,(开源:由于Internet让信息交流成本大大下降,所出现的一种新的软件开发模式)python的数据库的扩展速度与传播速度也由此更进一步。
到今天,Python的框架已经确立。Python语言以对象为核心组织代码(Everything is object),支持多种编程范式(multi-paradigm),采用动态类型(dynamic typing),自动进行内存回收(garbage collection)。Python支持解释运行(interpret),并能调用C库进行拓展。Python有强大的标准库 (battery included)。由于标准库的体系已经稳定,所以Python的生态系统开始拓展到第三方包。

python 设计定位

Python的设计哲学是“优雅”、“明确”、“简单”。因此,Perl语言中“总是有多种方法来做同一件事”的理念在Python开发者中通常是难以忍受的。Python开发者的哲学是[“用一种方法,最好是只有一种方法来做一件事”]。在设计Python语言时,如果面临多种选择,Python开发者一般会拒绝花俏的语法,而选择明确的没有或者很少有歧义的语法。由于这种设计观念的差异,Python源代码通常被认为比Perl具备更好的可读性,并且能够支撑大规模的软件开发。这些准则被称为Python格言。在Python解释器内运行import this可以获得完整的列表。
Python开发人员尽量避开不成熟或者不重要的优化。一些针对非重要部位的加快运行速度的补丁通常不会被合并到Python内。所以很多人认为Python很慢。不过,根据二八定律,大多数程序对速度要求不高。在某些对运行速度要求很高的情况,Python设计师倾向于使用JIT技术,或者用使用C/C++语言改写这部分程序。可用的JIT技术是PyPy。
Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python支持重载运算符和动态类型。相对于Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持。有两个标准库(functools, itertools)提供了Haskell和Standard ML中久经考验的函数式程序设计工具。
虽然Python可能被粗略地分类为“脚本语言”(script language),但实际上一些大规模软件开发计划例如Zope、Mnet及BitTorrent,Google也广泛地使用它。Python的支持者较喜欢称它为一种高级动态编程语言,原因是“脚本语言”泛指仅作简单程序设计任务的语言,如shellscript、VBScript等只能处理简单任务的编程语言,并不能与Python相提并论。
Python本身被设计为可扩充的。并非所有的特性和功能都集成到语言核心。Python提供了丰富的API和工具,以便程序员能够轻松地使用C语言、C++、Cython来编写扩充模块。Python编译器本身也可以被集成到其它需要脚本语言的程序内。因此,很多人还把Python作为一种“胶水语言”(glue language)使用。使用Python将其他语言编写的程序进行集成和封装。在Google内部的很多项目,例如Google Engine使用C++编写性能要求极高的部分,然后用Python或Java/Go调用相应的模块。《Python技术手册》的作者马特利(Alex Martelli)说:“这很难讲,不过,2004 年,Python 已在Google 内部使用,Google 召募许多 Python 高手,但在这之前就已决定使用Python,他们的目的是 Python where we can, C++ where we must,在操控硬件的场合使用 C++,在快速开发时候使用 Python。”

reference:
后起之秀的炼成——Python诞生与崛起之路
https://blog.csdn.net/diosmai_kingso/article/details/78767636
Python简史
https://www.cnblogs.com/vamei/archive/2013/02/06/2892628.html
百度百科:Python
https://baike.baidu.com/item/Python/407313?fr=aladdin#1

python系列之---python的起源相关推荐

  1. csdn最新最牛最细python系列【python高阶:自动化相关技能】 python全栈自动化测试系类4-4

    目录 [python之smtplib模块发送邮件] 1.tls模式加密 2.ssl加密,默认加密端口是465 MIMEApplication模块添加附件: [python编程之ini文件处理-conf ...

  2. 青少年python系列 33.python安装非内置模块

    青少年python教学视频ppt源码 青少年python系列目录_老程序员115的博客-CSDN博客 简介 python内置模及其内部的功能函数,是无法满足我们编程需求的.这时候如果有能够满足我们需要 ...

  3. python系列教程-python前世今生以及windows下环境的安装

    文章目录 一.python的前世今生 1.1 Python的起源 二.为什么要学习python 2.1.从语言排行榜上看 三.python的安装 3.1 python下载 3.2 自定义安装路径,以及 ...

  4. 青少年python系列 2.Python简介

    青少年python系列目录_老程序员115的博客-CSDN博客 青少年python教学视频ppt源码  Python来源 Python的创始人为Guido van Rossum.1989年圣诞节期间, ...

  5. python系列-认识python

    1.python是怎么出现的 2.python的发展 3.Python的用途 目前python语言可谓炙手可热,开发,测试.运维还有人工智能.数据分析等板块都是他们的影子. python是什么?pyt ...

  6. [每日一讲] Python系列:Python概述

    Python 序章 概述 Python 是弱类型动态解释型的面向对象高级语言,其具备面向对象的三大特点:封装.继承.多态.Python 代码运行时,其有一个编译过程,通过编译器生成 .pyc 字节码 ...

  7. python文件之间的相互调用_「Python 系列」 Python 生成器函数详解

    Python的生成器函数提供了一种强大的机制来管理数据和计算资源,但是对于Python的新手来说,它们不一定直观.在本文中,我将分解生成器的机制,同时还介绍我希望是一个有启发性的示例:用于管理和流传输 ...

  8. 【Python系列】Python写csv文件长数字变成科学记数法的解决方案

    DATE: 2022.5.7 文章目录 前言 1.参考 2.问题再现 3.问题原因和分析 4.解决方案 前言 在采用Python处理csv文件时,将长数字的字符串写入csv文件中时,csv表格中的长数 ...

  9. 【Python系列】python GUI界面

    1.环境准备 1.自己安装好python2.7 和 pyCharm 2.安装pyQt4 (1)下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/ (2)p ...

最新文章

  1. Fiddler抓包使用教程-会话图标
  2. pointnet 结果可视化_PointNet论文复现及代码详解
  3. WPF 实现音频播放动画控件
  4. Spring Boot Servlet
  5. 在MongoDB的MapReduce上踩过的坑
  6. MySQL双主机双Master方案测试
  7. 论Webstorm汉化后无法打开配置
  8. css实用技巧之制作优惠券凹槽
  9. 计算机CPU四大体系架构
  10. python字符串格式化是什么意思_python字符串格式化什么意思
  11. vscode背景图片无法删除
  12. 【Linux】工具使用
  13. 易语言如何调用c dll文件,易语言调用C++写的DLL
  14. python后端开发的缺点_前后端分离优缺点
  15. ARM NEON - RGB转灰度的实现 (DSP Factory学习总结)
  16. python基础运算符讲解(原码、补码、反码)
  17. 宋晓丽20190919-4 单元测试,结对
  18. CHM文件的文件格式
  19. 英雄远征Erlang源码分析(1)-源码结构解析
  20. 元音音频时域波形与频谱的简洁分析

热门文章

  1. iview table 导出csv文件错行问题
  2. androd11 编译 Manually written binder interfaces are considered error prone and frequently have bugs.
  3. C语言入门笔记代码(第二天)
  4. [网络流] Topcoder SRM556DIV. OldBridges
  5. matlab将图片转成eps,【MATLAB】论文图片处理(各种数据图转换成eps格式)
  6. 阶梯下降法,房价问题
  7. 高博14讲:第七讲中g20报错
  8. 浅尝辄止_数学建模(笔记_时间序列分析及其SPSS实现)
  9. PTA 2022秋季C语言专题实验07
  10. 如何用计算机打出立方,立方米符号怎么打出来