
图片来源/CC By 4.0 by Wei Lee
“我们与恶的距离”,这是台湾2019年最红的一个关键字,Google搜寻每年都会列出,全球各地的关键字排行榜,来反应这一年人们最关注的话题。
开发圈也有一个流行度排行榜——TIOBE(全球开发语言排行榜),同样整合了全球各大搜索引擎对不同开发语言的搜寻热度,估算出了每个开发语言每个月的热门程度。Java语言和C语言,不断轮流抢夺龙头宝座,几乎包办了过去20年的冠亚军。但是,有一匹黑马,从2017年底窜出,抛开了紧追在后的Visual Basic、JavaScript或PHP,在2018年更快速地超越了C#、C++的流行程度,在2019年6月,挤进了前三甲,更有挑战两大龙头的地位,这个开发语言的新主流,就是Python,也正是在AI应用大爆发的这两年,最受资料科学家青睐的语言,甚至,Python被誉为是AI时代的主流语言(Lingua Franca)。
开发圈热门问答网站Stack Overflow每年都会进行一次开发者大调查,2019年的调查结果发现,Python打败了Java,成为工程师最喜欢的第二个语言,仅次于Rust。不只是偏爱,实际应用上,在常用语言排名中,Python名次也攀升到第四,仅次于JavaScript、HTML/CSS、SQL这些网站常见技术之后,但远超过了其他开发语言。这意味着,越来越多人使用Python来开发程式,正在使用的开发者想要持续使用它,更有许多开发者想要学。
若观察TIOBE近20年来的程式语言网络声量趋势,不难发现Python处于稳定上升的状态,自2018年9月超过C++之后,更是持续与一众语言拉开流行度差距,因快速成长的潜力,还一口气拿过2007、2010、2018年的年度语言冠军。
不只开发者偏爱,Python也是许多开发专案、软件常用的技术。在全球最大开源专案平台GitHub上,去年年度报告统计,Python首次超过Java,成为GitHub上第二流行的语言,仅次于JavaScript,这意味着使用Python的开发专案数量,是全球第二多。
为何这么多开发专案爱用?GitHub报告直言,快速扩张的资料科学社群,就是Python窜红的关键。随着AI应用崛起,许多科学计算、数据分析的函式库与套件纷纷出笼,而且都支援或直接使用Python语言来开发。
其实,Python语言快要30岁了,已经不年轻了!1989年,一名荷兰工程师Guido Van Rossum在圣诞节闲暇之余,决定为正在构思的一个新脚本语言写一个直译器,并从热爱的电视喜剧(Monty Python\'s Flying Circus)中,取Python来为专案命名。由于Van Rossum曾参与ABC程式语言的开发,欣赏它简洁优美的语法,因此,他也让Python继承了这项特色,打造出一个能替代Unix shell与C来进行系统管理的新语言。
Python的诞生,就是追求更好的程式码可读性,更简洁的语法,这些语法简洁、简单易用的语言设计,更让它在1991年开源之后,逐渐吸引了不少网站工程师爱用,逐渐成为热门脚本语言之一,也经常与Perl、Shell Script混搭,用于Web服务器的后端脚本程式开发上,来建立动态网页应用。
不只是一种技术风格,Python语言的简洁设计,后来更发展成一种程式开发的哲学。1999年,创造出Timesort混合排序算法的工程师Tim Peters,列出了20条Python设计禅学(The Zen of Python),比如“优美优于丑陋,明了优于隐晦,简单优于复杂,复杂优于凌乱……”等原则。这篇Python知名贡献者的文章,后来更列入了Python官方建议准则中(Python Enhancement Proposals,PEP),作为程式码撰写原则,更成了后来许多工程师,开发Python程式时的习惯。
用更少的程式码来表达想法,让程式的结构更清晰明了,俨然成了Python开发圈特有的风气和特质。
不只是一种好看好懂的语言而已,Python对C语言的高度支援,也是开发者爱用的另一大原因。开发者可以借助Python的简洁来加快开发过程,又容易以C作为底层架构来整合其他语言的模组,提高程式码的执行速度,同时兼顾开发与执行的效率。这也让Python赢得胶水语言(glue language)的称号,来形容Python很适合用于串接到各式各样的系统(例如数据库),或在数据计算时,用来连接其他语言编写的函式库等,用途相当广。
经过多年的发展后,Python的主要定位,是在专业严谨与实用性之间作出平衡,以胶水语言的身份,将各种不同技术串接成完整系统。这个特色,逐渐让Python在众多领域中崭露头角,甚至已经在今日横向扩展成一个庞大的生态系,不但在专业资安领域,被公认为网络攻防应用的首选,在云端运算资源管理、IoT管理、Web开发、DevOps领域,也成为主流语言之一,近几年来,在资料科学领域的崛起,更奠定了AI开发第一语言的地位。
Python TIOBE流行趋势线
2006年 微软.NET开始支援Python,带动一波热潮,Python甚至成为TIOBE 2007年度语言,流行度超越Perl和C#。
2008年 Python 2.7改版Python 3,因与Python 2不完全相容,引起不少社群反弹声浪。
2014年 Jupyter组织释出了一款Web版程式开发工具Jupyter Notebook,成了Python在AI领域普及的关键。
2017年 Python从2017年底流行度开始攀升,在2018年大幅超越了C#、C++的流行程度。
2019年6月 全球流行度挤进前三名,紧追在C与Java之后。
AI如何助攻Python大受欢迎
要了解Python在AI领域为何盛行?首先,可以从资料科学家写程式的目的来分析。由于大多资料科学家在开发算法时,程式语言相对只是一种达成目的的工具,更重要的是算法本身的设计与验证。因此,一个能快速上手的程式语言,以及能降低程式语言设计门槛的开发环境,就显得非常重要。
而Python的一大优点,就是具备了高阶程式语言简洁易读、易学的特色,常被视为好上手的入门程式语言之一,符合了易于使用的需求;同时,Python拥有完整且多元的函式库与框架,背后则有庞大社群在贡献程式码、维运工具与套件,让开发人员可以无后顾之忧的套用所需功能的程式,不需从头开始开发,能更专注于算法的设计。
长期浸淫在Python科学计算领域近20年的交大AI学院副教授魏泽人,就根据自己使用Python的经验分享,“Python的套件管理库,各式各样的功能都有”,开发者不用担心开发专案时,得从头开始打造某一个功能,“基本上都已经有人写好了,只要透过pip工具直接安装即可,非常方便。”他强调。
魏泽人更点出资料科学家爱用这项语言的另一个关键。他解释,资料科学家开发算法时,多半是实验性、探索式的尝试,与建置网站这种目的式的开发需求截然不同,而直译式语言的Python,能让开发者在修改程式后,一步步执行每一段程式码,来了解其功能,“开发者与程式的互动性更高,比起编译式语言更适合实验及探索。”
再加上,Python像胶水语言般的特性,能轻松地将其他程式语言编写的各种模组整合在一起,更吸引到其他非资料科学领域开发者的喜爱。对讲究实用的企业而言,资料科学家开发出一个新的算法后,要实际落地应用到业务场景时,Python就能成为资料团队与其他部门工程师协同合作的共同语言。
比如国泰世华银行数据生态营运部协理吴香妮就指出,原先资料科学团队较常用R、SAS来开发应用,现在则主推Python,其中原因,就是要让专注于算法开发的资料科学家,能与API开发的工程师共同协作。
对此,魏泽人也有相同的观点。学术界从1990年代起,研究数值分析、机器学习算法时,最主流的软件是需付费购买授权的Matlab。但从整个资料科学界来说,他认为,开源的Python,能通用于其他程式设计领域,如Web开发、网络爬虫或写个小工具等,“就结果论来说,Python才是数值计算与程式设计族群,都能接受的程式语言。”
先从数学和科学计算领域开始流行
Python在2000年开始,就是数学、物理、科学计算的工具之一,当时,魏泽人也用来执行数学计算的任务,“Python有一些程式语言的特性,相当适合数学计算。”比如说,Python的list comprehension语法,类似数学集合的写法,可让使用者以更简单直觉的方式来建构列表(list),所以受数学背景的人喜爱,在整数计算上面,因为Python内建的整数没有大小的上限,也适合用来解数论、组合、离散这类常会碰到大整数的数学问题。
在2000年之后,Python科学计算领域中,开始出现了Scipy开源函式库,提供更完整的数值计算、矩阵计算等功能,2001年也举办了第一届Scipy年会,让开发者能互相交流以Python编写的最新科学专案,而后,更多函式库如Matplotlib、Numpy、Pandas开源释出,也吸引科学计算社群逐渐扩大。
2014年,致力于推动程式语言开放标准Jupyter组织释出了一款Web版程式开发工具Jupyter Notebook,更成了Python在AI领域普及的关键。这个介于复杂的整合式开发工具IDE和程式码文字编辑器之间的工具,可以快速将算法程式,套用到数据资料上来绘制各类图表,大幅降低了Python的使用门槛,因而深受资料科学家的喜爱。
台湾极少数成为Python软件包官方机构(The Python Packaging Authority)活跃贡献者的锺子屏这么形容:“Jupyter Notebook之于ML,就类似Excel之于会计一样。”就像Excel可以自动、快速执行各种会计计算,将计算结果视觉化,而Jupyter Notebook就是一个让资料科学家开发、执行程式码的互动式开发环境,能将资料视觉化来辅助开发。
有趣的是,虽然Jupyter Notebook并非Python的专属开发工具,目前支援多种主流直译式语言如Python、R、Julia,但它的前身是IPython Notebook,是一款基于Python提供互动运算命令界面的记事本,本来就是支援Python为主,后来多支援了Julia与R语言,才改名为Ju-pyt-er Notebook。因此,这款工具对于Python的极高支援性,成为资料科学家选用Python的重要理由。
Python资料科学领域逐渐丰富的开源函式库、框架、IDE、套件工具,大幅提升AI开发的便利性,吸引更多人、甚至大企业都用来开发AI应用。而大企业加入后,不仅更多产品、服务开始支援Python,各类套件工具也推陈出新。
比如Google 2015年开源的ML框架TensorFlow有支援Python,脸书在2016年也开源以Python开发的ML框架Pytorch,几乎成为成长速度最快的两种ML框架。再加上,专门为Python设计的开发环境Pycharm,以及CPython、Jython、Pypy、IronPython等直译器,这些套件与工具,都不同程度的助攻Python成为AI时代的流行语言。
不只AI,Python早就在Web应用大展身手
尽管近几年,随着资料科学爆红,更带动了Python的人气,但对Web领域而言,Python早就是一个广泛好用的热门技术。比如IDE厂商JetBrains在2018年开发者报告就指出,Python社群中,58%的开发者曾用Python来开发资料分析应用,但也有52%的人用来开发Web应用。这意味着,尽管不少资料科学家壮大了Python社群,但社群本身在其他领域应用Python的基数,也不容小觑。
早从1990年代开始,Python常用于网页后端的脚本开发上,不过,当时最流行的脚本语言还是Perl、Shell Script等,Python顶多排第三,获得部分开发者的支持。2000年后,开始出现了以Python开发的Web应用服务器Zope,以及建立于Zope之上的开源内容管理系统Plone,受到部分Web开发者的青睐。不过,当时主流的Web开发语言像是Java、PHP、C#,各种语言均有人青睐,Python并没有绝对的优势。
而后,Python今日最热门的两种Web应用框架,Django与Flask,分别在2005、2010年释出,逐渐将Python也推上网页后端与Web应用开发领域的常用语言,尤其,Django能让开发者快速建立起高可用性的后台,而Flask适合用于轻量级的网站,也适合用来开发API。
Python也不只能用于简单用途或小型任务,也有许多超大型的应用实例,像Google搜遍所有网站内容的网络爬虫,就是用Python开发的程式。Dropbox也用Python开发了超过400万行程式码,就连Instagram数十亿用户的互动环境,也靠Python与Django框架来打造。
虽然目前在TIOBE开发语言排行榜上,Java和 C分居前两名,Python靠AI崛起才后来居上,名列第三,不过,Python的发展还没到顶,未来的成长潜力与空间,还有机会能更进一步。
Python的两大难题
Python的两大难题,就是最佳化与平行处理的能力。
以Python而言,作为一个高阶语言,语法简洁、程式码可读性高为一大优点,适合程式设计初学者入门学习;但反过来说,已经熟悉了其他语言的开发者,比如语法严谨的C或Java,要转换成Python可能有些适应不良,Python的强制缩排语法特色,也可能让开发者很不习惯。
Python作为直译式语言,尽管因互动性高、除错快等优点,能让开发者更弹性且快速的进行探索式的开发,比如近年来资料科学领域盛行的R、Metlab等语言,就同属这类。不过,也因需要一步步直译程式码,先天上就会比编译式语言花上更多的执行时间,影响程式的执行速度变慢。
而且,Python同时也是一个动态语言,开发者不需先宣告变数的型态,回传型态也不需宣告,能让语法更简洁、弹性,不过,这也造成难以除错的问题,型态错误可能在执行程式时才会呈现出来,影响程式执行效能不理想。魏泽人举例,当一个变数写成number=3,若不小心打错成nmber=3时,在静态语言中,会因与宣告的型态不同而自动警告,但在动态语言中,它可能认定为,有一个新的变数叫做nmber,并不视为一个错误。也就是说,由于动态语言的弹性较大,对编译器来说,也较难最佳化。
另外,Python还有全域性直译器锁GIL 的限制,难以让一个Python程式在多核心的处理器上进行平行处理。魏泽人解释,由于平行处理能增加执行效率,程式常被拆分到不同执行绪来执行,不过,Python为了避免多执行绪内存及资源读写次序不一致的问题,就内建了一个GIL,来限制每次只有一个执行绪能执行资源存取。
也就是说,GIL本意是要解决执行绪间资料同步合作的困难,却也因此局限了平行处理的效能。但这个问题并非无解,常用的解决方法,可用multiprocessing取代threading,让每个程序有独立的内存,再例外由通讯交换资料,或建立特定共用内存;另一种方式是利用外部资料科学的函式库如Numpy、TensorFlow,来处理需要大量计算的部分。
总结来说,Python身为一个直译式的动态语言,加上GIL的设定,最佳化、平行处理能力较差,影响了程式执行效率。不过,借着发挥胶水语言的优势,Python也能与其他如C、Java等编译式语言结合,来加速运算执行。
相关报导 AI时代开发语言新主流Python
相关文章
YouTube更新违反规定政策,提升惩处透明度和一致性2023-12-31 14:00:52
传苹果将把中国iCloud正式交给本地化经营 苹果手机icloud换区存储操作2023-12-27 18:34:43
刘德华代言什么手机?刘德华成华为Mate 60 RS非凡大师华为5G新手机代言人2023-09-26 21:55:08
WebOS新系统:Palm Pre手机最新款高价登港2023-06-23 15:39:14
帮助企业组织对抗勒索软件,资安通报机构设立防护专区,可协助事前、事中与事后因应2023-06-22 09:36:10
蔚来全系产品降价3万 取消免费换电 换一次电池180元2023-06-12 17:27:49
电商平台三巨头开打最大规模折扣 价格战再次打响2023-03-05 18:58:40
爱立信节省成本裁员四千人 爱立信全球员工总数五分之一2023-02-24 22:27:29
蜜芽关停近况,八位数重金买三字顶级新域名mia.com也关闭2023-02-23 16:18:14
联想CEO杨元庆:联想集团需要裁员32%削减部分业务支出2023-02-18 12:45:25
蓝色光标2022营收亏损18亿 客户预算减少明显2023-02-18 12:40:08
三星工厂或将80%生产转至越南 因本地劳动力成本上升2023-02-17 23:09:16
香港八达通卡如何激活?没用失效过期余额怎么办2023-02-17 18:34:51
中兴通讯被曝将裁员20% 称只裁国外的2023-02-17 18:33:26
苹果新iPhone15Pro手机终于改用USB-C(火牛)数据线??Lightning充电接口退出2023-02-17 16:57:22
突发!蓝色光标曾为中国民企500强龙头 如今业绩亏损断崖下跌2023-02-16 14:31:19
三星发布自家carplay车载中控系统 Car Mode for Galaxy 可以连接carplay吗?2023-02-14 00:53:17
Opera浏览器宣布集成ChatGPT 一键生成网页内容摘要2023-02-14 00:32:08
谷歌google计划重返进入中国市场?但结果可能令你失望2023-02-13 16:57:15
Zoom紧急裁员1300人 佔员工总数15%2023-02-08 14:59:11
最新资讯
WorkBuddy 上手评测:腾讯做 AI Agent 的思路和别人不太一样2026-08-16 14:42:46
炒港股要补交多少税?我也接到催交补税特别行动的电话了2025-07-23 17:36:43
淘宝天猫仅退款属于诈骗吗?淘宝天猫开始部分取消仅退款2024-10-01 13:01:28
哈啰app借钱|哈啰借钱app下载安装免费小小上当和电话骚扰2024-10-01 11:22:38
白嫖党|山西大同大学学生网购申请“仅退款”被拒骂客服一小时2024-09-27 09:10:44
手机
中国11月手机出货量增34% 5G手机出货量2709.2万部2023-12-28 19:27:57
荣耀发布新一代旗舰荣耀Magic5系列,新款上市价格分期0首付3999元起2023-03-06 16:12:32
美国商务部指违禁,长江存储被美国拜登制裁名单面临停工裁员2023-02-17 18:41:53
苹果Apple iOS车载系统CarPlay支持哪些更多汽车品牌2023-02-02 17:33:27
香港去哪买三星手机回来吗? 买香港便宜售价手机市场地点和网站2023-02-02 11:03:11
数码
WorkBuddy 企业效率实测:非技术员工也能使唤的桌面 Agent2026-08-15 16:23:38
华为5G芯片正式亮相:预示华为将发首款5G手机2023-08-31 13:22:33
腾讯传计划放弃虚拟现实VR硬件计划2023-02-17 23:32:30
三星手机份额大跌!三星手机中国市场份额变化国内仅剩3%2023-02-01 17:06:15
三星手机份额大跌在中国没市场了!国内市场占有率仅剩1%国外比苹果销量高2023-02-01 16:59:53
科技
WorkBuddy 实测报告:2000 积分能干多少事?五大办公场景效率横评2026-08-22 10:11:17
B站怎么炸崩了哔哩哔哩服务器今日怎么又炸挂了?技术团队公开早先原因2023-03-06 19:05:55
苹果iPhoneXS/XR手机电池容量续航最强?答案揭晓2023-02-19 15:09:54
华为荣耀两款机型起内讧:荣耀Play官方价格同价同配该如何选?2023-02-17 23:21:27
google谷歌原生系统Pixel3 XL/4/5/6 pro手机价格:刘海屏设计顶配版曾卖6900元2023-02-17 18:58:09