GG told me I did it wrong :( It seems I didn't get the "ei -n" part right. Does anyone have any idea how to do it?
g*g
5 楼
俺个人用得比较多的脚本语言是javascript,以前也用过一点perl。 python/ruby等等,在可读性上有进步,在某些领域的好处是毋庸置疑的。 比如写一个quick and dirty或者prototype的东西,肯定很快。 坏处也是共通的。 1. 可维护性,ruby的创始人说软件是依靠单元测试,而不是编译器来查错的。 充分测试的软件,动态还是静态类型没有区别。他说的并没有错,问题是 复杂软件往往难以充分测试,在成为产品之后发现问题是正常的。静态类型局限了 这些bug是逻辑问题,而动态类型,就有简单typo等等错误引发的可能。你很不希望 看到因为这样的简单错误而必须去patch你的系统。 2. public API 前面coconut提过,动态类型使得调用者依赖于文档而不是接口本身来了解接口。 这往往会使代码难读,容易出运行时错。可读性好的源程序并不需要很多注释, 当你觉得注释很必要的时候可能更需要的是refactor。对于这个大家可以读读这 本书。emule上有。 Addison Wesley - Refactoring Improving the Design of Ex
GG told you that you did what wrong?:) I think I have some idea about how to do it. this is actually a difficult one. chinese people from different parts of china have different problems with English. for example, for a person from Sichuan, he will say "lice" instead of "nice" . They just cannot pronounce the letter "n".they can try, but the moment they stop trying, they will say something like,"hello, my lame is Lick. I will leed your lumber low so that i can call you tolight". a lot of chinese
【在 b******n 的大作中提到】 : GG told me I did it wrong :( : It seems I didn't get the "ei -n" part right. : Does anyone have any idea how to do it?
我觉得单纯的依靠 test driven dev 比较愚蠢。这根本不是什么万能的 东西,只是作为一个辅助手段而已。test 本身需要大量的时间和精力去 写 case 和测试,花的时间可以比写程序多出很多。随便一个程序里面都 有 N 个 branch,你想把每个 branch 都测试么?考虑一下需要多少 test case 先。而说不定 spelling mistake 就在那里。 再不说 test 的时间有限,甚至连 documentation 的时间也都是个问题。 scripting language 在这两面都是弱点。在时间紧迫的情况下,你是花 时间写 test case,documentation 还是去 code ?
That's what I think too. Java generics helps reduce a lot of runtime classcast exception, that's the biggest boost of using generics. static-type languages are going more static for a reason. When every line of code has such potential, it's gonna be a problem.
【在 c*****t 的大作中提到】 : 我觉得单纯的依靠 test driven dev 比较愚蠢。这根本不是什么万能的 : 东西,只是作为一个辅助手段而已。test 本身需要大量的时间和精力去 : 写 case 和测试,花的时间可以比写程序多出很多。随便一个程序里面都 : 有 N 个 branch,你想把每个 branch 都测试么?考虑一下需要多少 test : case 先。而说不定 spelling mistake 就在那里。 : 再不说 test 的时间有限,甚至连 documentation 的时间也都是个问题。 : scripting language 在这两面都是弱点。在时间紧迫的情况下,你是花 : 时间写 test case,documentation 还是去 code ?
r*t
20 楼
在时间紧迫的情况下,scripting project 可以完全放弃 documentation and tests。 当然这是以牺牲 project 质量为代价,问题是对很多这样的 project 来讲他们牺牲的 起,因为code base 小,也足够灵活。 我前面说的是,如果想要用 scripting language 开发严肃的大 project, 我所看到的 做法。如果讲时间紧迫的情况,自然 scripting language 可以有很不讲理的办法。在 这两种做法中间根据情况取平衡,是我看到的现状。因为不同的 project 对这方面的要 求本来就不一样。twisted 这样的就搞的严谨,因为比较底层,关系比较广,用的人也 很多。可以说twisted code 算是 rock solid 的我信。如果是关系不太大的 project, 完全可以除掉这些包袱,或者说到后来再慢慢加上,整个是个 evolve 的过程,比如 IPython 这样的。
【在 c*****t 的大作中提到】 : 我觉得单纯的依靠 test driven dev 比较愚蠢。这根本不是什么万能的 : 东西,只是作为一个辅助手段而已。test 本身需要大量的时间和精力去 : 写 case 和测试,花的时间可以比写程序多出很多。随便一个程序里面都 : 有 N 个 branch,你想把每个 branch 都测试么?考虑一下需要多少 test : case 先。而说不定 spelling mistake 就在那里。 : 再不说 test 的时间有限,甚至连 documentation 的时间也都是个问题。 : scripting language 在这两面都是弱点。在时间紧迫的情况下,你是花 : 时间写 test case,documentation 还是去 code ?
c*t
21 楼
那为什么写大 project 用 scripting language 呢?想给自己找麻烦? 又难开发,又难测试,又难 document,又花的时间长,执行起来又慢。 难道是大老爷们比富,不求最好,只求最贵?还是为了那个口号 yes we can?
【在 g*****g 的大作中提到】 : That's what I think too. Java generics helps reduce a lot of : runtime classcast exception, that's the biggest boost of using : generics. static-type languages are going more static for a reason. : When every line of code has such potential, it's gonna : be a problem.
g*g
23 楼
据说开发快,5倍那么快,Python/Ruby的用户说的,我没有实际经验。
【在 c*****t 的大作中提到】 : 那为什么写大 project 用 scripting language 呢?想给自己找麻烦? : 又难开发,又难测试,又难 document,又花的时间长,执行起来又慢。 : 难道是大老爷们比富,不求最好,只求最贵?还是为了那个口号 yes we can?
r*t
24 楼
well,可能你讲的大 project 比我讲的要大吧。 开发、测试、document 不见得更难,有可能更简单。就讲 doctest 吧不难啊。 花的时间长,执行起来又慢,这些问题自然是不用我们讲,如果没一点好处自然没人用 了。 就我看到的,everything in pure python 是有这种说法,有这种做法,但是这不只是 yes we can 的问题,这种选择和 deployment 有关,JAVA is a platform, Python is only a language, 再怎么 battary included 也比不上 JAVA。追求 pure python 的作者很多时候是因为 pure python module/app is much easier to be distributed/deployed, 因为有 cross-os 的原因。 "yes we can" 也不是什么坏事,python glue 也还没到啥东西拿来就能用的程度。
【在 c*****t 的大作中提到】 : 那为什么写大 project 用 scripting language 呢?想给自己找麻烦? : 又难开发,又难测试,又难 document,又花的时间长,执行起来又慢。 : 难道是大老爷们比富,不求最好,只求最贵?还是为了那个口号 yes we can?
g*g
25 楼
我不是bash python/ruby,最近scripting language 的hype很多, 想了解一下主要好处和一些关键问题怎么解决。 python/ruby的行数比java要短,相对而言java verbose。这个毫无疑问, 但我个人认为想占用了主要时间,而不是写代码本身。我个人不是很相信 特定任务以外,能有5倍的生产率。
python
【在 r****t 的大作中提到】 : well,可能你讲的大 project 比我讲的要大吧。 : 开发、测试、document 不见得更难,有可能更简单。就讲 doctest 吧不难啊。 : 花的时间长,执行起来又慢,这些问题自然是不用我们讲,如果没一点好处自然没人用 : 了。 : 就我看到的,everything in pure python 是有这种说法,有这种做法,但是这不只是 : yes we can 的问题,这种选择和 deployment 有关,JAVA is a platform, Python : is only a language, 再怎么 battary included 也比不上 JAVA。追求 pure python : 的作者很多时候是因为 pure python module/app is much easier to be : distributed/deployed, 因为有 cross-os 的原因。 : "yes we can" 也不是什么坏事,python glue 也还没到啥东西拿来就能用的程度。
completion 很重要么?我偶尔想不起来了也用用,不是critical的因素吧。这些图还只是VI里面,full IDE该更不是问题。 面向对象的 scripting language 可以有 introspection. 有 interactive shell 你可以 play with and experiment with 小块 code, 这是好用的关键。 http://omploader.org/vNnp5