明明Python那么多人用,为什么总有人喷Python?
世界上分为2种编程语言,是编译型语言和解释性语言!从另外一个角度来讲,也能分为2种,一种是没有喷,但同时没人用的语言;另外一种就是那些经常被人喷的语言,但大家都“痛并快乐”的用着,这种语言的典型就是C++、Java,甚至包括本篇文章的主角-Python!因为只有亲自体会,近距离接触才能看到事物真正的一面。就像孔子说的那样,每一件锦袍的里面都有虱子,有人看不到的一面。在某个编程语言速度测试中,Python跑出了比C慢100倍的速度。一个GIL全局锁让CPU的并行机制失效,用 4 核 CPU 运行一个 Python 多线程的数值计算程序,CPU 就只能用一个核心。这在CPU几乎都是“多核”的时代,确实让人有点让人郁闷!那既然如此,Python是怎样能够走到今天,依然成为“AI时代的原生语言”呢?我们知道,Python在早期是一个“脚本语言”,特点就是简单易用,能够让初学者很容易学会。同时,Python同时为了调用底层代码的需求,还专门设计了和C/C++语言的编程接口,可以使用这些“高级编程”调用系统功能,并充分利用他们的速度优势,弥补自己的局限,同时提高运行速度,一举两得,这让Python成为了一个高层和底层之间“胶水语言”!这个设计,也在设计和使用、高级和初学者之间直接搭建了一个桥梁,一方面能够让初学者轻松使用,另外一方面也能让高级程序设计人员来设计底层功能,并提供接口让Python轻松调用!我们现在普通使用的numpy、pandas、pytorch都是基于这个机制!2005 年 NumPy 发布,解决了 Python 数值计算效率低的问题;2008 年 Pandas 发布,完善了数据处理能力,这两个库成为 AI 数据预处理的基石。2007年,随着互联网数据的增多,用人类来区分变得越来越困难,同时商品推荐、广告用户定位等新的数据分析需求变得愈来愈多。Python则因为上面2个框架的加持下,被广泛使用!进一步,Python给出了Scikit-learn,它在2007 年发布,提供了开箱即用的经典算法(分类、回归、聚类等),API 设计统一,使用也非常简单!到了2010年,深度学习开始走上计算机的主流,关键性的事件就是李飞飞的ImageNet的发布。ImageNet包含1400万+的图片,和23w+个类别。目的就是让计算机加一个眼睛,如何识别现实中的事物!ImageNet极大地促进了“深度学习”这个功能的发展!ImageNet的正确率在不断提升的过程中,见证了“深度学习”的发展历程!2012年,Alexnet的Top-5错误率在15%。2014年,GoogLeNet错误率降低到了6.5%。2017年,SeNet则进一步降低到了2.25%,关键技术就是引入了transfomer的“注意力”机制!上面的提升,则无一不是则Python为基础的工程实践上面一步步成功的。2011 年 Theano 发布(第一个深度学习框架),选择 Python 作为主要接口; 2015 年 TensorFlow 开源,进一步巩固了 Python 的地位; 2016 年 PyTorch 发布,凭借动态图和更简洁的 Python 语法,迅速成为科研和工业界的主流选择。上面所有的识别方法,都可以做那本著名的《动手学习深度学习(Pytorch版本)》的”深度学习“里面找到相应的实现方法,而当OpenAI用Pytorch把gpt的参数调整到了175b,在2020年突然产生了“涌现”现象,瞬间让深度学习变得似乎有了智能(AI),并2022年的gpt3.5中让涌现大量解锁,到了2022年11月发布了chatgpt,至此我们正式进入了Ai时代!至此,python从Perl、PHP、Python的“脚本三兄弟”的三小只之一,脱颖而出站在了编程语言的主流,并成为ai时代的number one编程语言!2020年11月第一次成为TIOBE编程语言的“榜首”语言,并开始和C、Java争夺第一名,并起起伏伏,互有胜负!2022年,Python成为“常驻第一”,虽然偶然为C反超,但从来没有掉出过前二,并在近5年以来非常稳定!一路走来,Python的发展可谓非常励志,看来好像是站在了时代的风口上的pig,有幸运的成分,能够原地起飞;但其中的“简单易用”,胶水般的无缝连接,无一不透露着设计的高妙之处!世界上并不需要完美,只要有一个无法拒绝的点,就能成功!