不管你发不发微信朋友圈,只要你还看微信朋友圈,那么大概率被推过以下这条广告。

概率多少我没有统计数字,但是接近 100% 的概率你会看到你的朋友们在下面点赞、点评、发广告、版聊、撩骚……

会 Python 的人,工作都不会太差。追上同龄人,就趁现在。

一开始的疑惑:Python 真的能换来好工作吗,或者 Python ≈ 不差工作?作为一名用 Py 写过彩票概率统计分析工具、淘宝优惠券搜索程序、微信机器人、Excel 批量格式化小工具、图片批处理……的非职业 Py 程序员,好像这个除了给处理重复性工作带来些许便利,也许就只是“好玩”+“轮子多,不用重新造”这俩印象了。

更深的疑惑:我们都知道所有能多次重复持续投放的市场广告,必定是在 ROI 上获得了多次正向的自我强化,让老板开心,让运营满足。但是 Python 真的值得买课程吗?这个课程值得吗?学了真的能追上同龄人吗(我的师兄师弟有几个福布斯 30 under 30 的,就以他们作为小目标了。思聪就不追赶了)?

于是我想起了郭德纲的:“男相声演员不准戴金表”,因为观众会伤心——“我的钱买的”,但是“漂亮的女演员可以穿金带银”,因为“那是我的钱买的”——自豪脸。(看以下配饭配摸鱼视频)


闲话少说,先入正题。

行业同仁们应该都还记得今年 6 月初,国际 CRM 巨头 Salesforce.com 史上最大的收购案——157 亿美元收购数据分析软件公司 Tableau Software。这一笔收购一定程度上用于强化其自身的 Einstein 爱因斯坦人工智能平台,很明显,Salesforce 把数据分析能力当作是生死攸关(至少是非常重要)的一环。

插个嘴:同样是今年 6 月初,Google 收购数据分析公司 Looker;2007 年 10 月 SAP 以 67 亿美金并购 Business Objects,同一年 11月 IBM 以 50 亿美金收购了BI公司 Cognos(这也是截至当时 IBM 金额最高的收购)。有趣的历史。

然而在 2017 年 Einstein 分析平台正式推出前,Salesforce 放弃了使用多年的 C + Python 后端并且用来自 Google 的 Go 语言 -  Golang 重构了一套东西。而这才是本文的关键 concern 的开端。

根据 Salesforce 首席架构师 Guillaume Le Stum 的说法,在 Einstein Analytics 正式推出之前, 作为雏形的查询引擎和数据集创建工具都是用 C 语言编写的,并且通过 Python 包装了一层,用来提供诸如解析查询的功能以及构建 REST API 服务。

Le Stum在Stack Overflow上的一篇文章中(https://stackoverflow.blog/2019/10/07/how-salesforce-converted-einstein-analytics-to-go/)解释说:“从本质上讲,两全其美。”

“ Python 非常适合快速编写顶层(相对底层)的应用程序,但并不总是能够提供企业级所需的高性能。C 可以创建高性能的可执行文件,但是添加新功能会花费很多时间。”

所以,C 和 Python 结合的模式既满足了性能要求,也提供了业务灵活性,看起来很符合传统上大家对他们的认识。

为什么对 Python 始乱终弃

但是在 Einstein 发布之前,随着应用的不断扩展,整套平台的性能下降很严重——不属于核心查询引擎的所有新功能都放到 Python 程序中——然后结论就是,尽管 Salesforce 可以使用 Python 快速开发和部署功能,但最终系统变慢了。

“ Python不能很好地执行多线程,因此要求 Python wrapper 执行的越多,它的执行效果就越差。”

“ Python使用松散类型变量,这对于一个需要快速开发新想法并将其投入生产系统的小型团队非常有用,但对于某些客户为此付出数百万美元的企业级应用程序而言,效果不佳。”——说真的,旁观者小陈也不敢想象卖得这么贵的 SFDC 系统在 2017 年的时候还用这种架构。

“ Python 库的依赖关系、版本和文件概率将变得很繁琐,巨大的依赖噩梦。因此,在 2014 年我们就决定将 Python 移植到 Go。”

在 Le Stum 的文章中,他表示,Go的优势包括其内置工具、快速的编译时间和部署时间、更轻松的故障排除以及更易读的代码,以及跨平台特征。

“在 Python 中,你可以编写几乎是数学级优雅的代码。但是如果不是你编写的代码,那么优雅就可能以可读性为代价。”——码农/工程师们花费比编写代码更多的时间来阅读代码。

另一方面,Go 是为适合 Google 生产系统的大型应用程序而构建的,所以 Einstein Analytics 从混合C & Python 应用程序转变为 Go 应用程序。——尽管还用了 Java 和 SFDC 不愿意公开的一些开发语言。

深挖一下 Go 和 Py

再次重申,本文不是为了吹爆 Golang,而是客观地描述 Python 并不是程序员世界的唯一高薪可能性……

仅仅对比 Go 和 Py,我们看看国外版逼乎 Quora 的高赞回答:

”显然 Python 在与数据科学相关的任务中表现出色,而 Go 在与性能相关的任务中表现出色。“

”如果性能不是很关键,如构建 RESTful 或 RPC Web 服务等常见的应用——当我构建这类东西时,由于 Go 中缺少功能丰富且文档齐全的库(例如 Flask、SQLAlchemy、Django等),与 Python 相比使用 Golang 通常花费2到3倍的编码时间。但我们不是生活在一个完美的世界中,编码并不是启动和运行应用程序的唯一步骤——与调试 Golang 应用程序相比,我通常花费比调试 Python 少 5 倍的时间。这就是 Golang 的亮点。“

”因此,当我做一些例如最小概念验证、兴趣爱好或其他应该很快可能完成的事情,并且不会变成一个大项目时,Python是我的首选语言(无需编写太多代码,可以使用一些库)。“

”但是对于所有需要长期支持的事情,尤其是由更大的开发团队支持的事情,我会选择 Golang(易于调试,易于为其他人研究代码)。“

”没有明确的赢家,这两种技术都是完美的,要看具体的 case 来判断。“

Python 只是最流行的工具

于小陈的看法,Python 看起来真的什么都能做,什么都能用来偷懒,而且看起来还好学。但是它真的不是万能的,而且正因为入门容易,所以”能带来高薪“才更加不可思议。

商家会有商家的一万种利益相关宣传,让你觉得,只有跟着”比我更懂更聪明的人“,才能获得成功,”过上他们在广告里描述的生活“。

有没有朋友给朋友圈那家 Python 培训的交过钱,能不能告诉我他们的收费定价和运营模式,我真的好奇。

另,提供 1对1 或 1对多 Python 入门及进阶教学服务,提供 Python 程序外包开发服务(太复杂的我还可以带人组团接)。