由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 我们老大也在抱怨python,不过还是继续用
相关主题
单开主题:为何痛恨pythonJavaScript 有没有 optional Type 或者 JSON field 校验
刚开始看python项目中又有人要用restful,结果我不restful了。。。
LISP is better than XML, but worse is better?大家看过来Re: C++ Guys!!!!
Yaml css.NET 的环境下用C++,可是无法debug是怎么回事?
Windows XP与Multithreading Programmingmultithread program design pattern (C++)
Python Concurrency 主流是用啥F# language
vert.x vs tornado? : to mr.zhao有啥比较好的multithreaded C++ project?
有人用 boost::property_tree 吗?谁能推荐一个read-writer lock的C++实现? (转载)
相关话题的讨论汇总
话题: python话题: twisted话题: 抱怨话题: await话题: 问题
进入Programming版参与讨论
1 (共1页)
s********k
发帖数: 6180
1
主要抱怨跟版上差不多:
1. 性能,我们有一个analysis engine跑的挺慢。
2. dynamic type。
后来发现1跟python关系不大,主要是DB设计问题,本来一个table可以解决的问题弄成
3个table,而且还query一个数据最多用处最小的table,不停做cache。修改之后速度
快多了。另外multithreading老是觉得有GIL的问题,做了一个测试系统下狠心去掉
multithreading用coroutine性质的twisted,性能也是大幅提升。
2的话没办法,因为集成legacy code,出错没法编译开出,有些时候要上线运行才知道
。老大虽然抱怨,但是他想重新用C++写的话自己也头大,因为1解决之后他自己感觉爽
多了,另外部署了更好的测试系统,也就不咋提2了。
p**o
发帖数: 3409
2
dynamic typing 带来的问题主要靠 文档 和 测试 来解决,
python 其实很适合 test-driven dev
像下面这位仁兄这样搞类型检查也行,但性能损失会很大
http://www.newsmth.net/bbstcon.php?board=Python&gid=102341

【在 s********k 的大作中提到】
: 主要抱怨跟版上差不多:
: 1. 性能,我们有一个analysis engine跑的挺慢。
: 2. dynamic type。
: 后来发现1跟python关系不大,主要是DB设计问题,本来一个table可以解决的问题弄成
: 3个table,而且还query一个数据最多用处最小的table,不停做cache。修改之后速度
: 快多了。另外multithreading老是觉得有GIL的问题,做了一个测试系统下狠心去掉
: multithreading用coroutine性质的twisted,性能也是大幅提升。
: 2的话没办法,因为集成legacy code,出错没法编译开出,有些时候要上线运行才知道
: 。老大虽然抱怨,但是他想重新用C++写的话自己也头大,因为1解决之后他自己感觉爽
: 多了,另外部署了更好的测试系统,也就不咋提2了。

g*****g
发帖数: 34805
3
dynamic typing用来做脚本,包括UI问题不大。用来做backend service,成本比较高。
这年头软件基本上都是under-tested,产品环境发现的bug,修复的成本比开发环境的
高太多。static typing可以减少很多无谓的bug。

【在 p**o 的大作中提到】
: dynamic typing 带来的问题主要靠 文档 和 测试 来解决,
: python 其实很适合 test-driven dev
: 像下面这位仁兄这样搞类型检查也行,但性能损失会很大
: http://www.newsmth.net/bbstcon.php?board=Python&gid=102341

s********k
发帖数: 6180
4
但是事实证明大部分bug跟dynamic关系不大,都是系统的bug,语法bug肯定都会在test
出发现。当然有一些exception的bug,但是static typing的也会有这个问题吧?
当然我们并发量不大,肯定不是跟NFLX一个级别的。

高。

【在 g*****g 的大作中提到】
: dynamic typing用来做脚本,包括UI问题不大。用来做backend service,成本比较高。
: 这年头软件基本上都是under-tested,产品环境发现的bug,修复的成本比开发环境的
: 高太多。static typing可以减少很多无谓的bug。

g*****g
发帖数: 34805
5
我说的不是逻辑的bug,是最简单的诸如类型不能转换这样的bug,我们的测试不能覆盖
每个分支。

test

【在 s********k 的大作中提到】
: 但是事实证明大部分bug跟dynamic关系不大,都是系统的bug,语法bug肯定都会在test
: 出发现。当然有一些exception的bug,但是static typing的也会有这个问题吧?
: 当然我们并发量不大,肯定不是跟NFLX一个级别的。
:
: 高。

s********k
发帖数: 6180
6
这个倒是确实是个问题,有些时候会导致莫名其妙的exception。尤其是有些大数据结
构的转换。
我们后来解决这个问题的方案是尽量不用私有的数据结构之间转换,communication
channel都是标准的JSON。而且逐渐把一些私有数据结构也往JSON上靠。最麻烦的部分
在legacy code的XML部分。其他还好。

【在 g*****g 的大作中提到】
: 我说的不是逻辑的bug,是最简单的诸如类型不能转换这样的bug,我们的测试不能覆盖
: 每个分支。
:
: test

s********k
发帖数: 6180
7
不过python好的是很多性能瓶颈都能找到很好的库很快地去除。比如用twisted代替原
来的multithreading,性能提高了几倍。而且code change能做到可控制范围。

【在 s********k 的大作中提到】
: 这个倒是确实是个问题,有些时候会导致莫名其妙的exception。尤其是有些大数据结
: 构的转换。
: 我们后来解决这个问题的方案是尽量不用私有的数据结构之间转换,communication
: channel都是标准的JSON。而且逐渐把一些私有数据结构也往JSON上靠。最麻烦的部分
: 在legacy code的XML部分。其他还好。

c****e
发帖数: 1453
8
Why not using Thrift to toughtly control data contract?

【在 s********k 的大作中提到】
: 这个倒是确实是个问题,有些时候会导致莫名其妙的exception。尤其是有些大数据结
: 构的转换。
: 我们后来解决这个问题的方案是尽量不用私有的数据结构之间转换,communication
: channel都是标准的JSON。而且逐渐把一些私有数据结构也往JSON上靠。最麻烦的部分
: 在legacy code的XML部分。其他还好。

c****e
发帖数: 1453
9
twisted should port c# "await" over, the code would be less verbose.

【在 s********k 的大作中提到】
: 不过python好的是很多性能瓶颈都能找到很好的库很快地去除。比如用twisted代替原
: 来的multithreading,性能提高了几倍。而且code change能做到可控制范围。

s********k
发帖数: 6180
10
你说的是cross-language吧,我们不是cross-language,就都是python,但是比如在
local server和cloud之间这种交换,数据结构有些时候不太一样,当然很多事legacy
问题

【在 c****e 的大作中提到】
: Why not using Thrift to toughtly control data contract?
l********a
发帖数: 1154
11
可以用type(a)来做类型检查,还有个isinstance()函数也可以.感觉dynamic typing应
该不是个大问题.不过我没有用python搞过大项目,不大清楚实际应用中如何.

【在 p**o 的大作中提到】
: dynamic typing 带来的问题主要靠 文档 和 测试 来解决,
: python 其实很适合 test-driven dev
: 像下面这位仁兄这样搞类型检查也行,但性能损失会很大
: http://www.newsmth.net/bbstcon.php?board=Python&gid=102341

d***q
发帖数: 1119
12

twisted support a sugar called inlineCallbacks
you can do sth like yield await(2). It behaviors like "await" in C# 5.0.

【在 c****e 的大作中提到】
: twisted should port c# "await" over, the code would be less verbose.
1 (共1页)
进入Programming版参与讨论
相关主题
谁能推荐一个read-writer lock的C++实现? (转载)Windows XP与Multithreading Programming
有专门介绍multithreading编程的书吗Python Concurrency 主流是用啥
请问static variable init的问题?vert.x vs tornado? : to mr.zhao
DJGPP下怎样用pthread.h?有人用 boost::property_tree 吗?
单开主题:为何痛恨pythonJavaScript 有没有 optional Type 或者 JSON field 校验
刚开始看python项目中又有人要用restful,结果我不restful了。。。
LISP is better than XML, but worse is better?大家看过来Re: C++ Guys!!!!
Yaml css.NET 的环境下用C++,可是无法debug是怎么回事?
相关话题的讨论汇总
话题: python话题: twisted话题: 抱怨话题: await话题: 问题