Python|开源还是闭源?从SAS与Python说开去

Python|开源还是闭源?从SAS与Python说开去

文章图片

Python|开源还是闭源?从SAS与Python说开去

文章图片

Python|开源还是闭源?从SAS与Python说开去

文章图片



引言我们在谈到开源与闭源的时候 , 通常指的是一个软件本身 , 其源代码是否开放 , 但是在特定的软件中(如数据分析类软件) , 还有另一个问题 , 就是其是否采用开源的语言来编写应用 。
这就带来多种情况 , 开源软件开源语言 , 闭源软件闭源语言 , 等等 。
我们举其中两个最典型的例子来对比 , 那就是开源软件开源语言:Python , 以及闭源软件闭源语言 SAS 。


SAS Python R 对比[1


为什么大型金融机构用 SAS 居多?而互联网公司更倾向于 Python?1.\t历史遗留问题
Python 虽然早在1991年就诞生了 , 但是真正流行起来 , 并且用于商业应用的生产环境 , 也就是在近5年时间 。
在此之前 , 金融机构的历史代码 , 特别是大型金融机构 , 很多还是用SAS写成的 。
为什么不要把老的 SAS 代码用 Python 重构呢?
经验老到的开发会告诉你 , 如果你的代码跑得很好 , 千万不要重构它 。

2.\t\t人才梯队问题
会SAS语言的人才比 Python 少得多 , 因为 SAS 相对来说 , 应用场景只在数据分析领域(因此也要求具备一定的数学、统计学基础) , 而 Python 的应用场景则更广 , 也没有对于数学等基础学科知识的要求 。
下图虽然有些历史了(2016年发布的文章) , 但是鉴于美国的整体行业技术栈相较国内也领先几年 , 并且在同一时间维度横向比较各行业的偏好也是可以作为参考的:

不同行业对于 SAS R Python 的选择倾向[2


也就是说 , 极速扩张中的互联网公司不太可能把自己限制在这么小的人才范围上 。
3.\t\t稳定性与精度要求问题
从应用场景上看 , 金融机构一般用于风控过程中的信用评估 , 或者投资决策、量化模型等 , 一旦出错 , 会造成直接且数额相当的损失;
互联网机构 , 由于牌照的原因 , 绝大多数应用场景在于智能推荐以及产品运营 , 而这些是锦上添花的 , 出现错误并没有那么致命 。
因此 , 对于运行稳定性和计算精度的要求 , 金融机构会高很多 。
Python 底层代码包还有很多问题 , 比如 pandas , 目前还有3k+ open issues:

运气不好碰上一个 , 只能等开源社区响应了 , 这肯定比不上商业机构的7X24小时支持 。
如果是报错或者导致了很明显的问题 , 其实倒还好 , 易于发现 , 马上修复排查即可 。 最可怕的 , 是哪种最终数值上差了一点点 , 但是完全看不出错误的问题 , 甚至 , 开源的包里 , 不能排除被植入恶意代码的可能 。
虽然遇上未解决的 bug 或者被植入恶意代码的概率很小 , 但是金融机构天生就是风险厌恶的 , 容错率很低 , 通常会选择更加安全的方案 。
4.\t\t信用背书问题
商业化运营的公司 , 信用背书总是强于开源社区的 , 而强监管的金融行业 , 尤其需要信用背书 。
拿上面提到的稳定性与精度要求问题来说 , 如果真的出现了此类问题 , 造成了损失 , 甚至引起了监管的注意 , 那么 , 用开源软件的机构 , 只能自己承担责任 。
5. 成本问题
听起来使用 SAS 的好处更多 , 可以保证运行的稳定性以及结果的精度 , 同时还可以提供信用背书 , 当然 , 这些都是有成本的 , 最后就体现在 SAS 的价格上 。
License 按年续费 , 每年的维保还需要单独采购 , 这是一块不小的成本 , 并且 , 一旦采购 , 就会形成历史代码 , 就会产生持续的续费 , 中小金融机构很难下决心 , 而互联网公司 , 更希望用这些钱去烧一些用户量和月活回来 , 获取更多的融资 。
Python 的成本更多是隐形的 , 比如线上出了问题造成的潜在损失等等 , 不过 , 随着研发队伍的不断成长 , 这个概率会越来越低 。
难道没有折中方案吗?1.\t金融机构自身的折中方案
为了解决以上问题 , 金融机构通常会在建模过程用 Python , 生产环境转写为 SAS , 同时利用一些脚本和工具 , 将 Python 脚本转成 SAS 语言 。这样 , 既可以用得上会 Python 的人 , 解决人才梯度的问题 , 又可以解决稳定性和精度要求以及信用背书的问题 。