Python 的前景和学习方向
本文整理自我在这个问题里的回答。相比原版回答,结尾部分添加了若干私货。
Python 在语法上算是比较简单易学,相对其他各种语言,对新手更加友好,学习曲线非常平缓。各种算法用 Python 来实现都相对来说更加简单又易读。
因此,有一种趋势,就是很多像我这种外行人,开始学习和使用 Python 来实现某些自己行业内的某些用途。所以现在 Python 有很多新制作的各种轮子,深度学习,数理统计,化学计算,量化交易,等等。但像我这样的人往往可能也像我一样,学得很浅,就能凑合着拿一些框架和模块来应对简单的工作,也就可能像我一样不再太深入探索,而觉得自己掌握的基本够用了。
此外,在涉及到性能敏感的应用场景,Python 则未必能够完美胜任,甚至即便使用 cython 和 pypy 之类的加速,也难以全面实现 C++ 等的运行速度。我的一些前辈高人,在处理遥感相关的数据时还是以 C++ 为主,大概就是因为这种原因。
所以总体上看, Python 特点是学的人众多且来源复杂,学起来简单却易学难精,轮子众多但质量良莠不一,且熟悉轮子有时候需要比语言学习更多很多的精力。
这会导致一种什么情况呢? 会有很多新人试图通过学习 Python 来作为起步的语言,进入计算机相关行业。而人群中往往只有少数人是足够努力的。这就可能会导致在 Python 使用圈子中,低层次甚至像我这种初级水平的超低层次开发者,逐渐增多并且可能会占到多数。
而且由于像我这种低水平的人对深入探索感到吃力,可能更乐于追捧一些自己在网络上看到的所谓“热点”。比如可能看见某些社交平台上遮天蔽日的各种爬虫相关,就以为 Python 最适合来做这个,对其他方面就不怎么太上心了。再比如,看到某些大号发给新人的转行指南,加之以少数通过努力成功赚到第一桶金的先行者的分享,就也可能痴迷 flask,并以此作为主攻方向。
这并没有什么问题,这都是人的自由选择,只是这些选择往往建立在跟从的基础上,因为往往没有太多人愿意选择前途未卜的自行探索之路,更愿意遵从同类已探索出来的安全道路。
这种扎堆的情况会导致某些方面的人满为患,并且在短期内会极大降低 Python 开发者平均的薪酬和业内评价,可能会让市场上产生一种偏见,认为 Python 是外行转行、低水平开发者、低薪酬的代名词。
注意,作为一名外行的超低水平开发者,并我不是说爬虫和flask代表了低技术水平,只是说聚集的新人太多会容易拉低平均水平。
那有什么推荐的思路么?还真有。 我建议大家可以考虑一下结合自己的专业,来把 Python 作为一个辅助工具,解决行业内的各种事,而不是扎堆挤进专业的程序员群体去参加人海中的短兵肉搏。这样能发挥自己之前所学,不至于完全从零起步,劣势不会太显著,甚至如果本行的经验比较丰富,还可能会形成某种优势。
以上就是我对 Python 学习者工作前景的认识,由于自身水平所限,非常粗浅和鄙陋,没有太大参考意义。
至于可以学习的方向,目前据我所知,有爬虫和数据采集与可视化等的数据方向,flask 和 django 之类的web方向,区块链和加密等相关的数字货币方向,tensorflow 和 pytorch等机器学习方向,用 kivy 或者 pyqt 的跨平台 GUI 开发方向,还有各种结合了学科知识的各种科学计算和实验仿真模拟的方向。
当然了,说句纯废话:Python 是一门编程语言,虽然有擅长的某些事,也基本能做差不多任何事,所以学习者在使用的时候,完全不必要限制于某几个特定方向。冷静下来,先旁观一下市场,再自己做思考,选择自己想做的,而不是看到招聘网站的广告和培训班的各种宣传就无脑认同而照做。
正如@董伟明 在 Python 技术分享的乱象中所说的那样,当前 Python 相关的圈子存在各种各样的奇葩现象。
最多的就是动不动就万事万物唯有爬虫; 或者就是随便搞来一些盗版电子书分享链接,或者抄来几句笼统的格言警句一样水的东西,堆砌在某些个回答里面,然后结尾放上自己的营销推广; 要么是招聘网站,要么是培训机构,用各种神标题来带节奏,纷纷鼓吹各种转行迅速致富月薪过万走上成功之路等等,来迷惑和煽动新人,带来各种类似成功学一样的信徒氛围。
乌烟瘴气妖魔鬼怪。
我想这里要引用我的一位师兄的话:“仰望星空,脚踏实地。” 星空是偶尔看看来辨别方向和天时的,要是每天总抬头那么看,会容易得颈椎病;而脚下的大地是每天都要触碰的,是现在一切的基础和依托,所以得留心看着点,别掉坑里面。 那么怎么留心各种坑呢? 我相信大家的智商,其实只要稍微冷静一下,还是很好筛选一下哪些声音值得听取的,分辨哪些声音背后是铜臭,而哪些声音背后是单纯的分享,这并不会很难。
而最重要的还不止于此,最重要的是专心学习,付出自己所能给出的最大程度的努力,做了就不能让自己后悔没有足够努力。