大家应该都知道, python 本身不适合用来开发支付相关的模块。
相比之下,静态语言 java ,要适合的多,但是我们现在的系统,支付相关的模块,就是由 python 来做的,
那么就目前而言,我要如何在用 python 的同时,保证这个项目“可靠”
首先我认为:动态语言没有静态类型检查,所以在项目做大的时候,项目的维护成本会变的越来越高。支付系统的安全性很重要,而动态语言过于灵活,不易保证,他可能在做业务系统上会快很多。
我想请教一下:
1.除了我说的,用 python 做一个支付相关的系统,会有的那些风险,还会有哪些风险。
2.我如何在使用 python 的前提下,竟可能的保证项目”可靠”。
这个项目包括付款渠道,收款渠道。钱包,收银台等。逻辑不是很复杂,大概 2w 多行的代码。
1
leavic 2015-10-22 19:02:01 +08:00
类型我倒不觉得有问题,其实 python 是强类型语言,关键是 python 并没有办法真正的隐藏接口,现在都是靠着 PEP 规范修改接口名字来做的,别人要不遵守这个规则,想访问一样可以访问。
|
2
test0x01 2015-10-22 19:58:05 +08:00 via Android
任何语言项目的维护都是要靠程序员自己。 靠语言根本不靠谱,你说 java 厉害吧,程序员要是不靠谱能把你搞死。
|
3
surfire91 2015-10-22 20:17:31 +08:00
"大家应该都知道, python 本身不适合用来开发支付相关的模块。"
我就不知道 python 不适合用来开发支付相关的模块,也不知道为什么不适合。 楼主你知道吗? |
4
imn1 2015-10-22 20:20:58 +08:00
大家是谁?
|
5
binux 2015-10-22 20:24:31 +08:00 1
我怎么不知道 python 不适合开发支付相关的模块?
没有类型检查, 最多给你的余额改成 [100, 3], 或者执行到一半抛出异常. 说得好像静态类型检查自带 UPS 不会瞬间断电重启一样. 该算错帐的, 难道静态类型检查了就不算错了? |
6
PythonAnswer 2015-10-22 20:31:01 +08:00
支付模块需要什么样的功能?性能?
你还没分析,就说大家认为 xx 不适合做 xx... |
7
stackpop 2015-10-22 20:35:31 +08:00
和语言没有关系。
之前在猪厂用 python 做过支付模块,接入了银联 /支付宝 /stripe 等第三方渠道做支付, 服务千万级的游戏用户,没有出现过账务错误。 |
8
wkdhf233 2015-10-22 20:49:12 +08:00
动态语言过于灵活无法保证安全性,这逻辑也是醉了
|
9
kaneg 2015-10-22 20:55:39 +08:00
这不就和打错字怪键盘一样的逻辑吗
|
10
domty 2015-10-22 21:07:56 +08:00
安全性跟你用啥语言没关系吧。
首先保证你的业务流程没有空子让别人钻。 技术角度的安全交给专业的安全人员去考虑,比如框架上的,协议上的,系统上的。 再不济还可以抛异常强制回滚整个业务呢。 |
11
RitianZhao1988 2015-10-22 21:09:59 +08:00
槽点太多,喷不过来
|
12
janxin 2015-10-22 21:15:34 +08:00
如果你得想类型检查,可以考虑上支持 Type Hints 的 Pycharm ?
|
13
imlonghao 2015-10-22 21:15:36 +08:00
我不是大家中的一员,我觉得只有写不好的代码没有很糟糕不好的语言
|
14
ipconfiger 2015-10-22 21:31:48 +08:00
楼举神逻辑,第一句大家都知道不知道楼举是怎么知道的。
一种我代表全国人民的既视感 |
15
111111111111 2015-10-22 21:35:48 +08:00
"大家应该都知道, python 本身不适合用来开发支付相关的模块。"
我怎么不知道?听谁说的 |
16
aiqier OP 其实我觉得,如果要是不能客观分析我问的问题,就不要回答的,天天喷累不累,天天说这个是人的问题,那个是人的问题,买不起房是人的问题。我只是说动态语言,太活了,如何在一定程度上能“框住”设计懂么?做一个项目的经费就那么多,哪里招的起那么多 python 大神?那时候还不是靠 java 的静态类型检查过滤到一些错误再说,有一天你走了,别人接手这个项目,是 java 容易维护还是 python 容易维护?有些东西就是不能用 python 做的 ok ?那么既然是人的问题,那么为啥不用 lisp 写, lisp 多牛逼!写不出来也是人的问题是吧?
https://www.quora.com/Why-does-Google-prefer-the-Java-stack-for-its-products-instead-of-Python/answer/Robert-Love-1?srid=pu2I&share=1 |
17
hahastudio 2015-10-22 23:18:19 +08:00
|
18
aiqier OP |
20
geeklian 2015-10-23 00:13:57 +08:00
醉了,醉了,一个主观问题何必要客观的回答?
业务流程没漏洞就 ok 了,真要是程序语言有什么安全漏洞,那就认栽吧,好像有也是 java 多。 另外: python 现在也可以支持静态类型检查,有个库叫 typing.py |
22
xiazi 2015-10-23 08:51:42 +08:00 1
看了 Why-does-Google-prefer-the-Java-stack-for-its-products-instead-of-Python:
里面提到的 python 缺点实际只有两点 Concurrency 和 Performance(完全没有提动态类型这些), 而两点实际就是性能问题, 而性能问题就是因为 GIL, 而现实中需要大量占用 cpu 的应用并不多(支付模块中应该不会存在这类问题). |
23
XianZaiZhuCe 2015-10-23 09:04:34 +08:00
喷子真多
|
24
est 2015-10-23 09:29:40 +08:00
LZ 挖坑机器人。大家不要理会。人的固有偏见为啥大家要白费力气去纠正呢。偏激就要放纵他偏激一辈子。
|
25
mengzhuo 2015-10-23 10:01:00 +08:00
╮(╯▽╰)╭
无稽之谈 我司 IAP 模块就是 Python 写的,还是 mongodb 做的存储 收入、对账、从来没有错过~~ |
26
youxiaer 2015-10-23 10:14:33 +08:00 1
@aiqier 支付公司用 java 的确实比较多,但是动态语言做支付也是可以的,首先得看业务复杂度,其次就是开发人员对所使用的语言的掌握程度,即使使用 java ,如果出现逻辑错误也是很危险的。 php 就是动态语言,用 php 做支付的也不少。
|
27
domty 2015-10-23 10:37:35 +08:00 1
@aiqier
你说的这些东西实际上涉及的是技术选型和技术架构,譬如开发人员的成本,开发后产品的负载能力,代码的维护成本。你说 python 是动态类型,维护成本高,在高访问量下响应慢,我觉得的都有道理,但是这和你用它开发产品的安全性低没啥必然联系。 作为一个程序员的角度,我只能尽可能的保证我开发的业务流程尽可能没有漏洞就够了,该效验的地方效验,该加密的地方加密,让恶意的请求被过滤掉就够了。这些业务代码,即使换门开发语言我也能轻松写出来。 |
28
aiqier OP @geeklian 能够天生的支持静态类型检查,和用库去实现类型检查是两码事,类似说“ c 也能写出面相对象的代码”,那和 java 直接支持一样么?
|
29
shenqiu2015 2015-10-23 16:09:25 +08:00
java 那套严苛的规则是用来约束猪队友的,只有猪队友,才离了规则就不会走路吃饭
|
30
shenqiu2015 2015-10-23 16:12:05 +08:00
java 的静态类型检查有利于 IDE 智能感知,有利于加快编译运行速度。但是跟业务逻辑没有关系,没有了静态类型检查就不会写业务逻辑?这个说法不成立。
|