要不要学点PYTHON防身

作为一个半老程序员面对的大敌不光有燃烧的发际线和僵硬的颈椎,还有被后浪拍死在沙滩上的担忧。随着越来越‘老’,已经没了滔滔不绝大谈C++类对象虚函数表的内存布局之类话题的心气。遇到问题或者任务的第一反应大抵就是想着在最短的时间里给出解决方案。如此简洁易用、门槛低、支持领域广泛的PYTHON就成了适宜之选。我对PYTHON的喜爱也是最近开始,一旦用起来便一发不可收拾。写下这篇短文也是希望能跟大家分享一下PYTHON值得大家关注的几点理由。

01

门槛低

因为解释执行、动态等特性,PYTHON长久以来一直被大多数人误会是脚本语言。运维管理,服务器配置的脚本也有很多选择PYTHON实现。尽管作为通用语言的PYTHON能力并非仅限定于这个范畴。不过这种误会也恰好说明这门语言好学易上手的特点。PYTHON语法与其他编程语言类似,C/C++或者JAVA经验者很容易就可以切换到PYTHON。因为生态良好,大量的自带库和第三方库提供了太多功能。对于经验开发者而言需要的学习周期大概现用现学就足够了。

(附上解析xml和生成头文件的代码供大家批评)

XML文件的格式

PYTHON代码

02

多才多艺

随着机器学习,数值分析,计算机视觉等领域的兴起,凭借免费、开源、易用、第三方库丰富等优势,PYTHON在这些领域大显身手。而且很大程度的威胁了matlab在数值计算领域的统治地位。在PyPI平台上有超过85000个成熟的PYTHON模块和脚本。这里涵盖了数据库管理、图像处理、数据统计与分析等等诸多听起来高深莫测的专业领域。然而PYTHON并非仅在科学计算领域大放异彩。同样运维管理、服务器配置等脚本应用上也拥趸良多。在常见的软件开发领域。

Django,Flask, Tonardo等等一堆各具特点的web框架成熟稳定。国外instagram 便是基于Django框架,能够支撑7亿月活的高访问量,想必能让对PYTHON性能有所担忧的开发者放心不少。在国内同样有PYTHON用于web样例。知乎也是使用了tonardo框架进行开发。PyQt+MySql能够快速完成客户端程序的开发。APP开发,应用软件开发同样支持,甚至近日大火的微信“跳一跳“游戏都出了PYTHON的外挂脚本。

窥一斑而知全豹。几乎你想要做的所有事PYTHON都有一个库能满足你。丰富的库资源,繁荣的语言生态促进了更多的开发者选择PYTHON。也许在单独的某个领域里PYTHON并非最佳选择,但作为一门语言,能同时如此多的领域里提供支持,无愧它胶水语言的称号了。

03

跨平台且开源

PYTHON 可以跨平台运行,并且已经开放源代码超过20年的时间了。除了可以在主流平台上运行,它还是开箱即用的。标准库包含不少实用程序,提供了独立于系统的常用接口。

举个简单的例子:如果要获取当前目录下的所有文件名。

在unix平台下:

在windows平台的powershell里:

用PYTHON写:

抛去风格孰优孰劣的讨论, PYTHON脚本可以跨平台就立于不败之地了。

04

简洁优雅

终于来到了吸引我成为PYTHON拥趸的部分。简洁和优雅。从第一次用PYTHON完成任务开始,简洁的编码风格,极致的开发效率就是最吸引继续使用PYTHON的动力。能用最少的代码解决最多的问题大概是所有程序员的追求了。

假定要完成一段读取日志并逐行输出的代码(请忽视这个需求的实际意义)。

用C语言写:

用PYTHON写:

用三行代码完成了九行C代码的功能。而且PYTHON代码因为解释执行的缘故,更接近于英语,也更加的易懂。虽然封装了读取文件等一些实现细节,近似‘魔术’。然而对于写了多年C/C++代码的程序员来说,对于实现细节的一目了然的愉悦感受已经不是选择语言的第一要素。

再写一个并行的例子作为参照。假定存在一个C语言的动态库,对外提供接口“在指定目录下搜索特定文件名“。

现在要调用该接口遍历所有磁盘搜索指定文件。为了提升效率,在多核CPU的机器上使用多线程并行执行的方式减少搜索时间。

在PYTHON中的写法:

实际上核心的代码仅13、14两行。 真正耗时的搜索函数使用C编写,从耗时的角度考虑,PYTHON的线程并行调用代码的执行时间对性能影响占比是极小的。使用寥寥几行代码即可完成并行调用。从简洁的角度已经超越其他语言良多了。

(因为篇幅原因,在这里用C++语言进行接口的并行调用就不再列出具体代码。)

“人生苦短,我用PYTHON”。简洁高效的PYTHON可以带来倍数级增长的开发效率。使得开发者专注于目标实现,规避语法细节的纠缠成为可能。当然PYTHON被诟病的执行效率问题也需要正视。当硬件资源不在是限制条件时,开发效率逐渐成为整个产品生命周期的瓶颈。对于更高的性能要求也可以通过使用高性能的开发语言对成为瓶颈模块的重新实现来解决。PYTHON支持与其他语言的混合编程。尤其是对C,C++的集成很友善。CPYTHON作为PYTHON主要参考,拥有大量用户,丰富资源和良好的生态。C++通过Boost库能够方便的与PYTHON交互。

PYTHON作为一门开发语言并非小鲜肉。那些让人称道的特性也非刚刚推出。相比以前的不温不火,好像大家突然认识到这门语言的优雅简洁易用。现在拥趸良多,大抵和它门槛低,库丰富,简洁易用,适用领域广泛的特性密不可分。也与近年机器学习和数据分析的兴起大有关系。颇有“蓦然回首,那人却在灯火阑珊处“的意趣。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180122G0J8YV00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券