为什么 Python 现在越来越火了?
语言火不火主要表现的是市场的需求,和语言本身好不好是有相关性,没有因果性
比如Python,我们七八年前就开始用了,当时有如醍醐灌顶,发现编程语言竟也可以如此优雅(原来一直用C++)。而大众觉得开始火的这几年,Python本身确没有『突然』增加什么更迷人的东西。
对于我来说,Python在很多年前我第一次打开ipython时就火了,同好不多,但个顶个的能扯上一翻。而现在动辄看到『python程序员』写的代码:
sum = 0 for i in range(len(num_list)): sum += num_list[i]
我就有种看到douban变成约炮网站的悲哀
从理想上看,Python和C++是十分相似的,它们都想做万金油。
C++是学术性的,大牛们都指着靠它扬名立万,设计哲学是『什么都想要』,首先要兼容C要快,其次是别的语言有的咱都要有,别的语言没有的咱也要有。但是一方面C语言本身也不是很完善(比如头文件这样的粗暴的机制),另一方面为了运行时的爽快把新功能的脏活累活全往预处理、编译上扔,导致C++的晦涩、艰深。用C++写代码有点像是用文言文写公文,逼格满满,文采飞扬,需要耗费大量的精力在内容以外的地方。而看文言文公文(C++代码)更是痛苦,首先你得熟悉各种反人类的语法(传值/传址/move语义、预处理、函数指针……),通晓历代典故(effective C++, ……)
Python的想法不一样,Python的核心是简洁直接清晰,Python认为最好的方式只有一种,它也只呈现那最好的一面。Python的语法本身就是一种伪代码的最佳实践,而且这个『伪代码』还是可以运行的。这造就了Python较低的使用门槛和极高的编程效率。用Python开发只要『有事儿说事儿』就好。ruby on rails最火的那几年,有人问guido叔(Python作者)怎么看,guido说的大概是:Python不需要杀手级应用,因为如果是这样的话,Python在其它方面的作用就被忽略了。
回到话题本身,为什么Python会显得越来越火?
python最大的问题在于性能。性能问题其实是在设计时最容易被误解的部分。C++以『接近C语言的性能』横行多年。随着物理硬件性能的显著提升以及软件复杂性的显著提升,人们开始对性能有了更正确的看法。
首先,有些时候性能并不重要。IO密集型的业务大部分时间都在等待IO,节省不到1ms让开发量增加几倍似乎不是很划得来。
其次,有些时候程序员的效率比机器的效率更重要。对于很多复杂的逻辑性功能,使用更加清晰的语言比晦涩的语言给程序减少的负担,可以大大增强软件的质量。(尤其是公司给的待遇招不到知乎上的大牛程序员的时候)
于是,Python/Ruby/Java开始崛起了。用Python的『inside battery』就可以做到过去需要反复造轮子、天天加班还做得不是那么好的东西。我在看Python的源代码时,突然有一种感觉:Python底层的源代码其实可以理解为C语言的一些常用功能的库(如hashmap实现的dict),Python进程就是加载了这些库然后读取配置文件(Python代码)执行相应的逻辑。相同的功能,Python进行了一次转义,肯定会比直接用C实现要慢,但你不一定能这么快的写出这样运行比Python快的C代码。(当然,知乎上的大牛还是除外)
于是,类似Python这样的语言们解放了程序员的时间,程序员们寂寞难耐的夜晚可以有了更多的产出,一个一个的项目建立起来了,社区建立起来了,迟滞的市场也开始有感知了。
即便这样,Python还有会心一击:我也可以不那么慢。Python可以十分方便地和C代码融合到一起。Python和C的组合彻底解决了后顾之忧:先用Python快速开发快速搭建产品原型,然后找出性能瓶颈有针对性的性能优化。所谓好钢用在刀刃上,节约时间,节省成本,减少风险,提高程序员的生活品质又有什么不对呢?
泛泛而谈,匿之.

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Linux终端中查看Python版本时遇到权限问题的解决方法当你在Linux终端中尝试查看Python的版本时,输入python...

在使用Python的pandas库时,如何在两个结构不同的DataFrame之间进行整列复制是一个常见的问题。假设我们有两个Dat...

Python入门:沙漏图形绘制及输入校验本文将解决一个Python新手在沙漏图形绘制程序中遇到的变量定义问题。代码...

在Python中,如何通过字符串动态创建对象并调用其方法?这是一个常见的编程需求,尤其在需要根据配置或运行...

Python脚本如何在特定位置清空输出到光标位置?在编写Python脚本时,如何清空之前的输出到光标位置是个常见的...

Python跨平台桌面应用开发库的选择许多Python开发者都希望开发出能够在Windows和Linux系统上都能运行的桌面应用程...

数据转换与统计:高效处理大型数据集本文将详细介绍如何将一个包含商品信息的数据列表,转换为另一个包含...
