ActiveRecord::Relation
用到了很多函数式编程的思想。
有需要,才会真的去做查询、装载成对象,这样可以避免没意义的执行。 也就是是函数式中的 lazy。lazy 可以带来很多好处,比如模块化,不需要对中间值进行计算,无限长的数组
每一次方法的调用,都返回一个新的ActiveRecord::Relation
对象,而不是做修改。
所谓的 pure function。另外用到了 chain 这个 pattern,jQuery 采用了同样的设计方法。
想进一步了解的话,可以看下这篇文章 http://patshaughnessy.net/2014/9/17/20000-leagues-under-activerecord
@scriptfans 哈哈,改天分享下 elixir?
Python 没在项目里用过,不做评论。但觉得可以同 Julia 比较一下。
机器学习,或者科学计算,和其它领域最大的不同就是,它和数学关系密切。有一句话是 show me your code。放在机器学习、算法里,反倒是 show me your formula 来得实在。
因为是和数学打交道,语法越接近数学越好。
比如 Julia 的方法定义
foo(x) = x
foo(x, y) = x + y
l = (x, y, z) -> x + y + z
再就是是否有为常见问题提供解决方案 比如矩阵运算
julia> A = [[1, 1] [2, 3]]
julia> A + A
2 4
2 6
julia> A * A
3 8
4 11
julia> transpose(A)
1 1
2 3
还有是否能使用现有的 lib,Julia 可以很轻松的调用 C 和 Fortran,以及 python 还有 java 的代码。
t = ccall( (:clock, "libc"), Int32, ())
Type 比 Class 更适合科学计算。
Julia 的背后支持者也非常强大,一些大学已经开始使用 Julia 授课。
最后是速度,Julia 足够快,当一段代码,一跑就是一天的时候,语言速度优势就提现出来了。
哈,pre condition, post condition,都是 clojure 的特性啊。
有点对 ruby 失望的意味,ruby 3 没有明确的目标,ruby 2 没有什么令人激动的新特性。还顺带强烈吐槽了写法太多,只要一种就好。
感触最深的是
The feature has already here it just not evenly distributed. Ruby has fallen behind and we are not the community that was known for leading the innovation anymore.
clojure 或者 lisp 确实是值得学习的语言。
顺便贴下视频连接
numpy 速度快,语法友善。
如果一个程序动不动就要跑一天,就需要考虑语言的快慢了。
能回复,当然是最好的。不过也没办法要求每个 hr 都做到。。。
但也可以找下原因,是不是简历不够吸引人?是不是有些关键信息没提到?最重要的还是解决问题。
CS50, CS61a, CS169
可以试试 simplecov
#8 楼 @xiaoronglv coursera 有专项课程 发证书,不过证书应该是这个专项的证书,而不是学校的毕业证书。
有些学校是有远程教育的,但具体的没有了解过。
:plus1:
#4 楼 @numbcoder 课程的话建议 cs 61a 这门课就是从 SICP 演变过来的。但用的是 python,因为 berkeley 觉得用 lisp 讲不是很划算。
写测试是件很麻烦的事情。。。但很多人觉得很容易。后补测试,成本也很大。
stub
一般是在单元测试中使用,用来避免依赖。
这post :create, format: :json, user_id: other_user.id
是一个 api 调用,我觉得属于集成测试了。
而这个时候,觉得已经不用在乎哪个方法调用了,而是期待有什么样的结果。
store_dir
是怎么写的?我才你跟 module_name 相关。
再也不怕墙了!
如果不在乎程序是否正确运行,重构之后也不在乎功能是否和原来一样,有了 bug 又不用(你)修,写测试就一点意义都没有了。
写测试是因为我在乎代码的功能是什么,如果不在乎的话,就不用写了啊。
能问下昆工还是云大的吗? 昆明也有写 rails 的。
觉得学编程和学语言是两回事。
学编程,跟语言关系不大。比如变量、方程每个语言都有,但是否真正理解,又是另一回事。再比如分解和抽象,只要是写代码,都绕不开这两点。再不如 debug 的技巧。
学完编程,掌握起别的语言,多数是靠猜。之后是解语、使用言特性了。
多写,这是自然的。但仅仅是重复工作并没有什么意思。比如,只用 each,不会有什么进步(也不是说 each 不好,但这个是 c 的风格,而使用 map 之类的能更好的理解函数式编程)。
再就是多读,多看,多想。
刚好相反。。。
Julia,Clojure。不过其实分析根本没我事。。。