瞎扯淡 ruby,rails,js

yfractal · 2013年12月14日 · 最后由 yfractal 回复于 2013年12月14日 · 2917 次阅读

最近用 js 比较多,有些小想法,唠叨两句。

觉得 ruby 的强大,在于他不是那么“自由” 感觉 js 要比 ruby 灵活,比如 block,其实就是个无名函数,js 的函数可以随便传,但不好用。不是不能用,而是用起来很麻烦。ruby 应该允许你传入 block,方法统一了,大家用起来很方便。而且不需要区分那个是函数,那个是参数。

python 传入无名函数也比 ruby 方便,但也要想一下这到底是个参数,还是个函数。

但如果统一下,比如用 underscore 的 compose,那么可读性一下子就提高了(但个人还是很有欲望手写 curry,觉得这样很装逼,哈哈),当然代价是一点点的学习成本。

写 js 倒是对 block 有更好的理解了。觉得抽象这东西,可以帮助你,但是,你要理解他,似乎还是要知道他是如何实现以及原理,再就是有意识的加以练习。想起学习递归的过程,找到关注点,然后不断练习,提高难度。

yield 似乎 (记不清了,嘿嘿。。。) 有点像 dynamic scope 一样,觉得 dynamic scope 是很牛的东西,scheme 没有。javascript 有-- this,但却带了了 n 多的不必要的麻烦。觉得 yield 很神奇。有些东西很好,很强大,但你搞出来,却不一定好用。ruby 却做到了。

觉得 ruby 不是很灵活的语言,但由于这种不灵活带来了很多好处,变得异常强大。

django 比 rails 灵活。比如 url,但这有必要吗?不这么觉得。。。url 可以做那么多事情,真的有助于解决问题吗?再比如 file 的安排,django 也帮你做了一部分,但做的不彻底,我把 assets 文件放哪,跟我如何解决问题有关系吗?没有。

duck typing 很有函数式编程的意味,但却实在的多。

有的时候只做一件事情真的挺好的。比如 ruby 中 everything is a method call 提供了无比的便利。但真的挺难的。理论上讲,不做什么,比做什么要难。

有人说,无论写什么,最重要的是降低其复杂度。还有句更奇葩的,代码是写给人看的,不过恰好能被机器执行罢了。(语言首先是写给人看的,只是恰巧(incidentally)能够运行。语言的语法,漂亮的算法,数学的分析,这些统统都不重要。最打紧的是如何控制复杂度(The techniques used to control the intellectual complexity of large software systems))。

dynamic scope 就是没有 scope ...

#1 楼 @bhuztez 哈哈。。。其实这个东西没怎么用过,就知道他是个巨牛逼的东西。。。

关于

觉得 ruby 不是很灵活的语言,但由于这种不灵活带来了很多好处,变得异常强大。

说实话第一次听到有人这么说。

从文中看出楼主的观点是 Ruby 没有 JavaScript 灵活,以我对两种语言的理解和使用经验,两种语言的灵活性在伯仲之间,但是缺乏比较的基准,因为这个受限于我个人对两门语言的掌握水平。感觉楼主应该是对 JavaScript 的理解高于 Ruby,对 Django 的理解高于 Rails。

#3 楼 @lgn21st 我胡乱说的的。。。很没条理。如果换个词可能会好一些。JavaScript 太随便了,什么都是随随便便的感觉,让那些功能变得比较鸡肋。ruby 很用心,把这些强大的功能变得非常好用、可读。

还有就是觉得很多人说 ruby 是魔法语言,但觉得 ruby 对可读性的关注远远多余对魔法性的关注。

对 ruby 理解的确实不好。但其实对 JavaScript,django 理解的也不怎么样。。。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号