[OT]使用python开发的缺陷

2013-06-08 10:40:50 +08:00
 sudayly
断断续续地用了python已经有4年了,尽管python的本意是pythonic,但事实证明,python的确是够烂的。举证如下:
1. python的动态类型系统使得开发稍微大点的程序就是个灾难,编译期间没错误,而运行期间崩溃的情形到处都是;
2. python使用空白控制程序结构,非常不便于各种编辑器处理,如vim,虽然可以通过安装插件解决,但不是每台服务器主机都安装有插件的;
3. python的list处理完全是个不合格的设计,如a[a.rfind(/)]的返回结果在a有/与没有/时不一致;
4. python支持函数式编程,也支持面向对象编程,也支持XXX编程,导致编程风格完全统一不起来,当要合并其它人开发的代码时,真是头疼。
10165 次点击
所在节点    Python
55 条回复
yakczh
2013-06-08 10:47:46 +08:00
参考 /t/61449
micyng
2013-06-08 10:49:23 +08:00
动态类型的问题只要是动态语言都会有,assert多用?
用空格区分逻辑块的确很讨厌
SErHo
2013-06-08 10:53:25 +08:00
如果举四个例子就能说明某个语言是个烂语言,我估计没有一个语言不是烂语言。
xiaket
2013-06-08 11:01:27 +08:00
2是流程问题, 不应该在服务器上修改代码.
leiz
2013-06-08 11:04:50 +08:00
3. python的list处理完全是个不合格的设计,如a[a.rfind(/)]的返回结果在a有/与没有/时不一致;

这个说明白点?
hit9
2013-06-08 11:05:41 +08:00
看楼下怎么喷
thedevil5032
2013-06-08 11:10:21 +08:00
1,没有 Python 大型开发经验。但因为类型不对运行时崩溃,真的是语言的问题吗?不懂。
3,rfind 貌似是 str 的方法吧?和 list 有关系吗?
4,编程风格不是团队写代码之前定好的吗?不统一也可以怪语言?

你说的1和4实际是一个问题,“因为语言太自由,所以不好。”

ps 坐等楼主被喷。
keakon
2013-06-08 11:15:12 +08:00
楼主肯定是来赚金币的,用了 4 年 Python 还弄错大小写的真奇葩。

1. 我从来没遇到 Python 崩溃过。倒是 C 系的软件遇到过段错误、内存不可读/写之类的问题,当然编译时没问题。
2. 自己的电脑/虚拟机肯定会做相应的配置,生产系统上不该直接改代码。让你麻烦点就是为了不让你碰代码=。=
3. 这句话可以理解为「可口可乐不能喝啊,因为百事可乐有毒」。你喷的是 list 还是 str 啊?想要异常的话,a[a.rindex('/')] 可以满足你;不想要的话写成 '/' if a.rfind('/') > 0 else None。好像除了 Lisp,没有更优雅的写法了。
4. 风格不一致的都开除呗。据我所知,一切图灵完备的编程语言,都支持这些编程。也没有任何一门语言,能限制使用者的风格,包括汉语。
swulling
2013-06-08 11:18:54 +08:00
2. python使用空白控制程序结构,非常不便于各种编辑器处理,如vim,虽然可以通过安装插件解决,但不是每台服务器主机都安装有插件的;

这个需要装插件,难道不是直接一行
au FileType python set shiftround expandtab softtabstop=4 tabstop=4 shiftwidth=4 textwidth=79
yuelang85
2013-06-08 11:38:34 +08:00
不相信楼主用过4年python,用了四年python还是这个水平,楼主,下面的话自己想象吧。。。。


1. python的动态类型系统使得开发稍微大点的程序就是个灾难,编译期间没错误,而运行期间崩溃的情形到处都是;

楼主可知道什么叫单元测试?什么叫解释性语言?什么叫靠谱的程序员?楼主确定写程序之前学过python?


2. python使用空白控制程序结构,非常不便于各种编辑器处理,如vim,虽然可以通过安装插件解决,但不是每台服务器主机都安装有插件的;

楼主不会用vim,vim中:help vi:

范例:# vi:set ts=8 sts=4 sw=4:


3. python的list处理完全是个不合格的设计,如a[a.rfind(/)]的返回结果在a有/与没有/时不一致;
>>> ['1'].rfind()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'rfind'

还有,请学习下'/'的含义。


4. python支持函数式编程,也支持面向对象编程,也支持XXX编程,导致编程风格完全统一不起来,当要合并其它人开发的代码时,真是头疼。

组内没做过培训?没做过编程规范?楼主的同事都是我行我素的自由人士,完全没有团队合作意识?



断断续续地用了python已经有4年了,尽管python的本意是pythonic,但事实证明,python的确是够烂的。

四个例子说明楼主连 "google pythonic"都没做过。“4年python经验”,提出这四个问题,可以知道楼主真正动脑写python可能不到k行。

总结:

楼主不会用python,不会用vim,楼主是来骗钱的,楼主不是合格程序员。
Golevka
2013-06-08 12:09:31 +08:00
只同意第二条, 我也讨厌layout syntax.
1: dynamic typed language都不要活好了, 统统烧死算了
3: 你确认str.rfind是list处理么?
4: multi-paradigm是大趋势, 你居然认为python在FP上做得太多了? 我倒认为就这一问题perl都能爆python. python半残废的lambda我就不吐槽了
aisk
2013-06-08 12:12:51 +08:00
看了这么多语言之争,最后发现问题的来源还是不同开发人员有不同背景。
对于一个搞多年XX企业级应用,需要很多不同水平的人员合作的开发人员,是很难理解动态语言的好处的。
对于一个搞web多年的人,同样也很难理解c语言为嘛这么难用。
undozen
2013-06-08 12:23:49 +08:00
@aisk 接你的话题,想到最近流行的那篇《如果用招聘程序员的方式招聘木匠…》 http://jianshu.io/p/jRRz5u
Ricepig
2013-06-08 12:39:39 +08:00
关于编码规范的问题,还有灵活的问题

实际上,如果语言本身不能帮一点儿忙的话,就需要额外的工作来保证了。

规范阿,措施阿,都需要检查才有效,问题是这种检查是由谁来做
davepkxxx
2013-06-08 12:47:20 +08:00
我比较认可的就是动态类型有很多不可预料的错误,这是在开发期间无法想到的,测试也很难测出来,当然经验可以帮你避免一些就是了。

还有个人认为用缩进控制程序结构的确是很反人类的事情,当然我每遇到过这种问题,因为我是个人开发。

团队开发的话,人越多遇到上面两个问题的几率就越频繁。
hooluupog
2013-06-08 12:49:30 +08:00
不多说什么了,我只是反感用python做界面的,尤其是ubuntu和gnome那俩,桑不起~~!
undozen
2013-06-08 12:53:44 +08:00
@Golevka 哈哈,老爹还有过拿掉 lambda 的念头呢
swulling
2013-06-08 12:55:22 +08:00
@hooluupog Ubuntu和GNOME用Python做界面?搞笑。。
hooluupog
2013-06-08 12:57:20 +08:00
@ swulling 慢慢笑吧。
skydark
2013-06-08 13:00:04 +08:00
一个月 * 48 也是四年……
目测lz只是在跳槽 Java 前顺势骗分的[good][like][so what]

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/71685

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX