g*****g 发帖数: 34805 | 1 就这么俩原因。
1. 一个产品环境里的bug成本是开发环境bug 1000倍以上。
2. 自动测试覆盖有限,很难达到完全的覆盖,有个80%行覆盖就已经不错。
对于剩下的20%,虽然静态语言不能保证没有bug, 但是能保证没有简单的类型错误之类
编译器就能找出来的。
所以越是出bug成本高,越是快速开发频繁修改不能严格保证覆盖率的地方/项目,越
没法用动态语言。
除非动态语言能够静态分析排错达到静态语言的水平。 |
p*****2 发帖数: 21240 | |
g*****g 发帖数: 34805 | 3 看你怎么定义主流了。我觉得在ui里,在部署脚本里都见得不少,但这不是我说的后端
部分。
在B2C的startup有一定吸引力,在B2B,以及成长起来的B2C网站里就见得少。还不如
php.
不知道有啥上市公司是大部分用Python写的?也许dropbox,pinterest会成为前几个?
【在 p*****2 的大作中提到】 : python算主流吗?
|
p*****2 发帖数: 21240 | 4
我感觉新一轮的startup python算是主流。
youtube是被G买了
instagram 被F买了
quora估计不容易上市
上市公司的话估计就是yelp了。
【在 g*****g 的大作中提到】 : 看你怎么定义主流了。我觉得在ui里,在部署脚本里都见得不少,但这不是我说的后端 : 部分。 : 在B2C的startup有一定吸引力,在B2B,以及成长起来的B2C网站里就见得少。还不如 : php. : 不知道有啥上市公司是大部分用Python写的?也许dropbox,pinterest会成为前几个?
|
Y**G 发帖数: 1089 | 5 你这只是电商一块把,google的crawler可是用了很多Python,算是后台吧。
【在 g*****g 的大作中提到】 : 就这么俩原因。 : 1. 一个产品环境里的bug成本是开发环境bug 1000倍以上。 : 2. 自动测试覆盖有限,很难达到完全的覆盖,有个80%行覆盖就已经不错。 : 对于剩下的20%,虽然静态语言不能保证没有bug, 但是能保证没有简单的类型错误之类 : 编译器就能找出来的。 : 所以越是出bug成本高,越是快速开发频繁修改不能严格保证覆盖率的地方/项目,越 : 没法用动态语言。 : 除非动态语言能够静态分析排错达到静态语言的水平。
|
p*****2 发帖数: 21240 | 6
听说G要抛弃P了。
【在 Y**G 的大作中提到】 : 你这只是电商一块把,google的crawler可是用了很多Python,算是后台吧。
|
z****e 发帖数: 54598 | 7 脚本的使用在控制的范围之内还好
java为主,脚本为辅的模式比较ok
以前就这样,java为主,然后一堆人用什么sql, javascript往上搭配
现在只不过多了ruby,python,groovy这些而已 |
z****e 发帖数: 54598 | 8 c和java将会是主流
就像rod johnson说的那样
以后可能再也不会出现跟c/java一样大面积流行的语言
但是支流会越来越多,不同人的需求是不一样的
给他们不同的选择 |
d********g 发帖数: 10550 | 9 动态的目前测试主要还是TDD和靠unittest,和静态的比类型检查这一步是差不少。典
型的支持first-class function的几个语言,传func和func()自动查不出来。但真正做
得好的,写动态语言其实就和写C/C++需要自己管理内存差不多,就是严格加严格,还
有修炼加修炼
不过动态语言的优点也是不少的,比如duck typing很爽。静态的搞duck typing就没这
么直接,理念不同而已
【在 g*****g 的大作中提到】 : 就这么俩原因。 : 1. 一个产品环境里的bug成本是开发环境bug 1000倍以上。 : 2. 自动测试覆盖有限,很难达到完全的覆盖,有个80%行覆盖就已经不错。 : 对于剩下的20%,虽然静态语言不能保证没有bug, 但是能保证没有简单的类型错误之类 : 编译器就能找出来的。 : 所以越是出bug成本高,越是快速开发频繁修改不能严格保证覆盖率的地方/项目,越 : 没法用动态语言。 : 除非动态语言能够静态分析排错达到静态语言的水平。
|
m********2 发帖数: 89 | 10 你这个Python vs JAVA比较的前提好像有点问题。
我觉得更客观的比较前提应该是:给定一个项目,一定的钱(开发人数 x 开发时间)。
这个前提之下,Python code少 -》出bug的几率会少;开发时间短 -》有更多的test/
debug时间。我觉至少理论上可以弥补Dynamic的一些缺点。
另外我觉得IDE navigation/refactoring 很重要(静态语言的优势);不过静态查错的
作用有点被高估的了。静态查错只能发现一些简单错误,跟TDD比起来可以忽略不计。
【在 g*****g 的大作中提到】 : 就这么俩原因。 : 1. 一个产品环境里的bug成本是开发环境bug 1000倍以上。 : 2. 自动测试覆盖有限,很难达到完全的覆盖,有个80%行覆盖就已经不错。 : 对于剩下的20%,虽然静态语言不能保证没有bug, 但是能保证没有简单的类型错误之类 : 编译器就能找出来的。 : 所以越是出bug成本高,越是快速开发频繁修改不能严格保证覆盖率的地方/项目,越 : 没法用动态语言。 : 除非动态语言能够静态分析排错达到静态语言的水平。
|
|
|
N******K 发帖数: 10202 | 11 语法bug都是低级bug 逻辑算法出了问题才是大问题
【在 g*****g 的大作中提到】 : 就这么俩原因。 : 1. 一个产品环境里的bug成本是开发环境bug 1000倍以上。 : 2. 自动测试覆盖有限,很难达到完全的覆盖,有个80%行覆盖就已经不错。 : 对于剩下的20%,虽然静态语言不能保证没有bug, 但是能保证没有简单的类型错误之类 : 编译器就能找出来的。 : 所以越是出bug成本高,越是快速开发频繁修改不能严格保证覆盖率的地方/项目,越 : 没法用动态语言。 : 除非动态语言能够静态分析排错达到静态语言的水平。
|
g*****g 发帖数: 34805 | 12 出问题的时候没啥区别 ,都很严重
。
【在 N******K 的大作中提到】 : 语法bug都是低级bug 逻辑算法出了问题才是大问题
|
l*******m 发帖数: 1096 | 13 其实python的IO速度很快,前几年比java还快,现在被java超过了,不过也不多。
【在 p*****2 的大作中提到】 : : 听说G要抛弃P了。
|
z****e 发帖数: 54598 | 14 "Python code少 -》出bug的几率会少"
这个有些想当然了
python的code增长到一定程度
bugs数量可能会比两倍于自身的java code的bugs还要多
duck type是bug的一个主要来源
最麻烦的是,ide帮不上忙
所以很多人说脚本不适合大项目
)。
【在 m********2 的大作中提到】 : 你这个Python vs JAVA比较的前提好像有点问题。 : 我觉得更客观的比较前提应该是:给定一个项目,一定的钱(开发人数 x 开发时间)。 : 这个前提之下,Python code少 -》出bug的几率会少;开发时间短 -》有更多的test/ : debug时间。我觉至少理论上可以弥补Dynamic的一些缺点。 : 另外我觉得IDE navigation/refactoring 很重要(静态语言的优势);不过静态查错的 : 作用有点被高估的了。静态查错只能发现一些简单错误,跟TDD比起来可以忽略不计。
|
a*w 发帖数: 4495 | 15 换IDE
【在 z****e 的大作中提到】 : "Python code少 -》出bug的几率会少" : 这个有些想当然了 : python的code增长到一定程度 : bugs数量可能会比两倍于自身的java code的bugs还要多 : duck type是bug的一个主要来源 : 最麻烦的是,ide帮不上忙 : 所以很多人说脚本不适合大项目 : : )。
|
z****e 发帖数: 54598 | 16 duck type换什么都是一样无力的
最后你会有换语言的冲动
【在 a*w 的大作中提到】 : 换IDE
|
s********k 发帖数: 6180 | 17 you forget dropbox as big P shop
【在 p*****2 的大作中提到】 : : 听说G要抛弃P了。
|
c***d 发帖数: 996 | 18 第二点你说的太武断了。 python 100% unit test line coverage是起码的,
javascript我作过的一些项目也要求100%行覆盖, 习惯了也没什么。
【在 g*****g 的大作中提到】 : 就这么俩原因。 : 1. 一个产品环境里的bug成本是开发环境bug 1000倍以上。 : 2. 自动测试覆盖有限,很难达到完全的覆盖,有个80%行覆盖就已经不错。 : 对于剩下的20%,虽然静态语言不能保证没有bug, 但是能保证没有简单的类型错误之类 : 编译器就能找出来的。 : 所以越是出bug成本高,越是快速开发频繁修改不能严格保证覆盖率的地方/项目,越 : 没法用动态语言。 : 除非动态语言能够静态分析排错达到静态语言的水平。
|
m********2 发帖数: 89 | 19 我也不是说Python code的bugs一定比JAVA code少(实际中各种的变量实在太多,很难
量化)。我主要想说:比较的时候应该尽量公平一点。
至于你说的大项目,我觉的现在合格的Python Developers太少其实是最直接的原因。
但是以后是不是一直会这样? 反正我觉得现在下这个结论还太早。
【在 z****e 的大作中提到】 : "Python code少 -》出bug的几率会少" : 这个有些想当然了 : python的code增长到一定程度 : bugs数量可能会比两倍于自身的java code的bugs还要多 : duck type是bug的一个主要来源 : 最麻烦的是,ide帮不上忙 : 所以很多人说脚本不适合大项目 : : )。
|
c******o 发帖数: 1277 | 20 一个人好办,关键是对于动态语言,别人用你的code的时候很难保证不滥用,很难保证
遵守潜藏的先决条件。
静态语言至少保证类型一致,对于非常强的类型语言,像scala/haskell, 我甚至能保
证些很奇妙的东西:
保证内部数据(变量/不变量)不会泄漏,导致外部程序能显性/隐形的改动或看见它
。(compile time error)
保证access resource的时候一定是valid的,不会没初始化,也不会被提前关了 (
compile time error)
等等
当然,这个有时候也有点奇技淫巧,太麻烦了。
【在 c***d 的大作中提到】 : 第二点你说的太武断了。 python 100% unit test line coverage是起码的, : javascript我作过的一些项目也要求100%行覆盖, 习惯了也没什么。
|
|
|
a***n 发帖数: 538 | 21 C++和Java一样可以duck typing,你不用是你自己水平的问题,和语言有什么关系。
【在 z****e 的大作中提到】 : duck type换什么都是一样无力的 : 最后你会有换语言的冲动
|
p********e 发帖数: 6030 | 22 那用啥?
【在 p*****2 的大作中提到】 : : 听说G要抛弃P了。
|
z****e 发帖数: 54598 | 23 java要用的话要用反射
不是那么常用
除了写框架的人,正常工作时候一般都不用
我都忘记我上次用反射是什么时候的事了
也就是不会被滥用
python随便一个都可以给你来点duck type
很容易把你玩死,java跟python最大区别就在于
一些高级技能,没那么容易写出来
这个用python的最清楚了
python跟ruby最大的差异就在于
python的很多高级技能比较难搞出来
但是ruby特别容易搞出来,scala尤甚
这就是让别人爽和让自己爽的区别
java最大程度抑制个人随便发挥
而其他语言则多数没有这个控制
导致很多初学者在经验不够时候就开始乱搞
【在 a***n 的大作中提到】 : C++和Java一样可以duck typing,你不用是你自己水平的问题,和语言有什么关系。
|
d**********u 发帖数: 3371 | 24 re 就编程语言的角度 完全可以做类型检查
【在 a*w 的大作中提到】 : 换IDE
|
p*****2 发帖数: 21240 | 25
好虫不是已经说了吗
【在 s********k 的大作中提到】 : you forget dropbox as big P shop
|
r****t 发帖数: 10904 | 26 tools 和 testing 不太可能
【在 p*****2 的大作中提到】 : : 好虫不是已经说了吗
|
p*****2 发帖数: 21240 | 27
Go
【在 p********e 的大作中提到】 : 那用啥?
|
b*******s 发帖数: 5216 | 28 讲得很好
【在 d********g 的大作中提到】 : 动态的目前测试主要还是TDD和靠unittest,和静态的比类型检查这一步是差不少。典 : 型的支持first-class function的几个语言,传func和func()自动查不出来。但真正做 : 得好的,写动态语言其实就和写C/C++需要自己管理内存差不多,就是严格加严格,还 : 有修炼加修炼 : 不过动态语言的优点也是不少的,比如duck typing很爽。静态的搞duck typing就没这 : 么直接,理念不同而已
|
A*****o 发帖数: 284 | 29 个人所知, Yelp家貌似也是Python Shop, 不明白的是Python这类语言致命弱点在哪里?
对于大项目来说? 求指点 |
z****e 发帖数: 54598 | 30 duck type
python写duck type只要一个try/catch
你信不信是个python programmers就能给你来个duck type
里?
【在 A*****o 的大作中提到】 : 个人所知, Yelp家貌似也是Python Shop, 不明白的是Python这类语言致命弱点在哪里? : 对于大项目来说? 求指点
|
|
|
p*****2 发帖数: 21240 | 31
里?
Python没啥问题,主要是没想到会出来Node这么个怪物吧?
【在 A*****o 的大作中提到】 : 个人所知, Yelp家貌似也是Python Shop, 不明白的是Python这类语言致命弱点在哪里? : 对于大项目来说? 求指点
|
a***n 发帖数: 538 | 32
我觉得node主要还是async是底层支持的吧,因为js本身不支持多线程,所以js的程序
员写callback比较顺手。python 2的async都是纯python实现的效率和语法支持确实差
点,一般的程序员也掌握不了。
【在 p*****2 的大作中提到】 : : 里? : Python没啥问题,主要是没想到会出来Node这么个怪物吧?
|