从第一次用 Python 语法打印 Hello World 到今天,大约有两年光景了。依稀记得那是 18 年的 1 月,经过多方打听、浏览广告——升大四面临的就业压力让我不得不做出选择——终于敲定了 Python。之后就是跟着 20 块钱买来的黑马盗版视频一点一点的学,有时候会觉得讲太快,要按暂停键;有时候不知道视频里面的人在说什么,那就管他的,把代码一模一样的敲下来。
按教程要求,操作系统得是 linux,编辑器用 vim。虽说是 Python 学习视频,然而第一章都在讲 linux 的基本操作。以当前往回看,我很庆幸买对了视频,因为它带我走进了 linux,让我领略开源世界的美轮美奂。
借助 Python 语言,我终于明白了“面向对象”是个什么机制,明白了“多态”与“继承”。尽管作为计算机科班生,在培养方案下习过 C++、C#,然而不得不说的是:教学楼的网速很好;知乎社区还不浮躁;我爱死金庸了……
再后来就是 9 月找到一份 Python Web 的实习工作,慌慌张张半只脚踩进程序员的圈子,一晃眼小半年就没了。那个时候就想聊聊自己对 Python 的看法,只是觉得自己不过初级菜鸟,哪儿来真知灼见,势必会说错的。黄口小儿,胡言乱语,贻笑大方……现在的自己不初级了,但还是菜,心境却大不同,会觉得就算错了也没有所谓,过去的半辈子已经错过很多次,不外乎再添一个 error。
1. 被嫌弃的 Python 的一生
如果仔细留意这两年的新闻,你会发现 Python 势不可挡:“PYPL 9 月编程语言排行榜:Python 霸榜”、“IEEE Spectrum 2019年度编程语言排行榜:Python 第一,Java 第二”、、“GitHub 2019年报:Python 首超 Java”。不同排行榜,按不同标准对语言排名,所以 Python 成为最“火”编程语言已经板上钉钉。然而遗憾的是,在计算机圈子里,多数人是瞧不起 Python 的。我仔细留意过,对 Python 的吐槽集中这几类:太慢了,太简单,缩进是原罪,弱鸡的匿名函数。
我承认 Python 身怀缺点无数,但上述吐槽过于随意而全未中要害,明显的门外汉视角。Python 运行速度慢无可争议,然而它的目标是“快速开发,马上成效”,即,它本就不追求运行速度。换而言之,追求运行速度的开发场景就不应该选择 Python,那何来太慢一说?像是台式电脑理所应当放在一个位置,你现在跳出来说这样的电脑不方便携带,话没说错,可是话没有意义。
“简单”是 Python 存在的初衷,搞不懂为什么会有人吐槽这点,难不成他开发是用机器语言?!何况当下大家都是 import engineer,这是快节奏时代的必然产物。把话再裸露些:都在调接口,谁也不必谁优秀。
“是缩进还是花括号”,不同于“生存还是毁灭”,它不是一个问题,它只是个人喜好,不应该作为评判一门语言好坏的依据。而阉割版的匿名函数让使用者不得不为复杂的代码段想一个名字明明是绝佳设计,你们为什么不将复杂的代码段独立出来呢?我讨厌 JS、Go 之流的匿名函数形式,让代码“老母猪戴胸罩,一套又一套”。
2. 我的 Python 恋爱物语果然有问题
Python 有没有缺点呢?肯定是有的,我以为的 Python 缺点有两个。第一点:打着跨平台的幌子却没有真正做到跨平台(好在还能接受)。第二点:目标用户极端分布。
我曾听过大概是这样一句话:当你发现喜爱的 app 越来越让你讨厌时,不是产品经理脑袋进水了,而是他不再把你当做他的目标用户。通俗点说,你被甩了。Python 也是有目标用户的:向下,Python 对编程入门小白十分友好;往上,Python 任由大佬天马行空地绘制世界——所以私有成员变量像个“笑话”,包管理机制堪称没有。Python 给予程序员很大的发挥空间,所以“乱来”变得稀疏平常。动态一时爽,重构火葬场。等到不得不提升 Python 的运行速度时,大佬可以选择 Cython 或者用 C、C++ 写扩展包。可是普通码农做不到多语言的随意切换,于是反目成仇,以为自己爱错了语言。没有其他工具的支持,维护 Python 代码也是一件心累之事,那就不得不提到我日渐飘零的头发……
现在问题来了,你让靠 Python 入门的小白好不容易走出新手村,结果找不到中等级的任务,普通人尚好,程序员该何去何从呢?
我一向持有的观点是:对于开发团队,基础扎实技术强硬可以考虑 Python。当然,如果你的程序规模小,且大概率一直小,也可以用 Python。
3. 我们仍未知道那天所看见的 Python
随着 Python 在中国大火,在校本科生张嘴就来人工智能机器学习,闭口就是爬虫大数据分析。沉迷其中,不亦乐乎。我因写博客接触到两个大二学生,他们热切向我表述对 Python 的喜爱,尽管深入交流发现对方连 try...except... 语句都不会。但我觉得没关系,我喜欢一个人的时候也是连她的爱好秉性一无所知,反正荷尔蒙上来了她就是对的人。
我想降一降年轻人的荷尔蒙,让他们做好“陪伴是最长情的告白”的准备。于是告诉他们,那些只是表象,Python 只负责外部接口,核心还是C/C++。如果你想深耕计算机圈子,我建议从 C 入手;如果你想找一份稳当的计算机相关工作,请先学 Java。果不出所料,他们呵呵一笑。
你看见了 Python,但可能你也误解了 Python。Python 在国内大火很难说人工智能是否作祟,但一定与铺天盖地的培训机构息息相关。我会走上 Python 之路,也正是见了各种广告(很遗憾当时还在用百度搜索引擎),以为这玩意吃香。但结果是,你发现周围会 Python 的人越来越多,却不见岗位数增加;你以为靠 Python 可以致富,却发现培训机构赚得盆满钵满。
——股票市场一直有这样一个说法,那些资深大V没靠炒股赚钱,但靠教人炒股回了本。
4. 关于 Python 的一切
说了这么多,你会不会以为我要劝你放弃 Python,竞争者少了,自己能从中得利。不然!我建议大家都要学 Python,不论何种工作,不管年龄高低。事实上 “Python” 一词在这里是指代,指代的编程。人人都应该学编程,就像人人都应该学英语。从 80 后开始,即便英语再差劲也能读懂 “I love you” ,那我期望的是,从 10 后开始,大家至少都会 print。
说到底编程是一门技术活,难可以很难,要选择得当。作为非计算机圈内人士可以学习 JS 或者 Python。前者借助油猴插件能够让你随意操控浏览器中的网页。我曾长久浏览网页觉着白底刺眼,于是写一个油猴脚本强制黑色。再譬如当前版权意识增强,有的网页复制文字会有小尾巴(xxxx 版权所有,请注明出处),有的网页干脆禁止你复制,而这些都可以通过 JS 搭配油猴插件解决。于后者,我很难说 Python 有什么是做不到的,只能是做得够不够好。Python 的简约设计让它拥有各式各样第三方包变得顺理成章,普通人本不应该深究原理,而是以达到目的的方式调用接口即可,舍 Python 其谁?进一步比较,Python 是比 JS 还简单的存在,那你要不要心动?
我希望大家——尤其是准备靠敲代码吃饭的人群——对 Python 有个清醒的认识。如果来一场王者荣耀,Python 就应该拿助攻;倘若演绎一部电影,Python 去领最佳男配角。不论机器学习还是数据分析,它们核心不在编程,而是算法与思维。对使用者来说,Python 简单易上手,是快速实现想法的利器。我常说“不是 Python 可以做什么,而是它能协助我们做什么”,这句话的用意是为了强调主次关系。
在职场上很多人靠第二技能英语好(唱歌好、性格好、长得好……)混得如鱼得水,Python 也是这样一个存在。尽管现在还没有体现出来,但我在此大胆预言了。倘若错了我就捕获!
5. 陪 Python 度过漫长岁月
在我粗浅接触过 C/C++,JS,Go,Java,Python 之后,你问我喜欢什么语言,我会说 C 和 Python。C 有着极简的语法,没有花里胡哨的语法糖,仅语法层面说,它的简单不亚于 Python。然而从做东西的角度,选择 C 几乎是选择了灾难,你每时每刻都要担心内存有没有泄露,指针去了何方,跨平台的处理方式。Python 好得多,还算是怎么开心怎么来。
我忠实极简主义,所以对 C 和 Python 偏爱有加。但我很难保证自己会用 C 写点什么东西出来,毕竟难度高,时间成本也高。我想在我未来 10 年之内,恐怕还会困顿于这个圈子,我会接触更多的语言,也逐渐忘记它们。但我老觉着 Python 会伴我长久。许是出场顺序很重要吧。
6. 谢幕
最后想说上述内容主观意识强烈,限于本人没啥牛x之处,所以写的东西也没什么价值,可当作玩笑,不可用来较真。然而劝大家学习 Python 是真,别把 Python 视为第一技能也是真。
感谢以下书影名,拯救程序员的命名恐慌症。
- 《被嫌弃的松子的一生》
- 《我的青春恋爱物语果然有问题》
- 《我们仍未知道那天所看见的花的名字》
- 《关于莉莉周的一切》
- 《陪安东尼度过漫长岁月》
还不快抢沙发