Categories
未分类

人类简史

CIA Error: 以下内容有剧透,请结合自身情况,自觉选择离开 或者 继续浏览 — 剧透开始 — 花了。。。好长好长一段的时间才看完这本“看过都说好”的书,但个人看下来感觉还是过誉了,精彩的部分确实不少,比如: 认知革命:单个人能维系的关系是很有限的,大概是150人左右,超出这个范围,就要靠虚构的故事来作为规范群体行为的标准 农业革命:自从人类学会了种粮食,就告别了游牧生活,形成了固定居所的部落 科学革命:否定宗教认为”上帝/主/佛主无所不知,无所不能“的观点,承认自己的无知;利益决定资源(钱,人)的分配,进而决定科技的发展方向。 最后关于智人灭亡的几种可能性讨论也很开脑洞。 生物工程:主要是通过基因实验创造出超级人类,变种人,新品种人等。代表人物有美队、快银姐弟两等。(Sorry, but X教授,万磁王他们是天生的,并不是人为实验的结果)。 仿生工程:结合人体和电子机械,如机械手臂(比如冬兵巴基、金钢狼这种),通过脑电波控制机械,甚至读取人类的大脑信息,转移到电脑上等等,他们当中目前创造出来的最厉害的是幻视。 无机生命:说白了就是奥创(话说奥创明明就是钢铁侠的锅,到最后却要队长来背,看来是背上了钢铁侠老爸的锅就放不下了啊,连儿子也要负责)。 (所以Marvel早就安排好了人类的灭亡的是吗?还设计了各种可能性!简直就是心机婊,比程心还心机婊!) 当然说它过誉,是因为个人感觉无聊的部分也不少,这从我花了这么长时间才看完就知道了。这些无聊的部分主要集中在书的第三部分,这跟你自己的兴趣可能也有关系吧。 有人说书的后半部分很主观,然而我并不这么认为,看来这所谓的主观不主观也是主观的,如果作者的观点你认同,你就会觉得”这本来就是客观实事啊,一点都不主观“;如果作者的观点你不认同,你就会觉得”这作者也太主观了,简直胡扯“。 总体来说,8.4分推荐,不能再高了,很值得看一看,但也不用给自己压力,遇到觉得无聊的部分就果断快速翻过或跳过吧。

Categories
未分类

Elm语言初体验

这个周末两天一直在看Elm,这是一门函数式编程语言。所谓函数式编程(Functional Programming,FP),跟面向对象编程(Object Oriented,OO)是同一种类型的概念,是一种编程模式。具体什么叫函数式编程,它有什么特征,有什么优势,这里不作具体解释。只放出一个大胆的预言,就是在未来,尤其是在Server端,将会是函数式编程的天下。 Anyway,Elm是一门函数式编程语言,它是一门静态的,强类型的语言,目前主要targeting在Web端,因此它有一个compiler可以编译成JS。 目前,编译成JS的语言已经有非常多了,如CoffeeScript,TypeScript,PureScript等等,甚至很多现有的general purpose语言现在也有了一些工具,用来把它们编译成JS,如Clojure 有ClojureScript,Scala有Scalajs,Ruby有Opal等等等等。 为什么有这么多的新语言编译成JS,又有这么多工具把其它语言编译成JS呢?这些说白了其实都是想取代JS,这说明一个问题,那就是JS不够好,这个跟JVM上面有这么多语言原因是类似的。 Elm也是出于同样的原因,它想要发明一种全新的Web语言,用于取代JS。那在这么多语言中,Elm的优势是什么? 经过这两天的接触,我了解到它的优势有以下几个: No Runtime Error。”Undefined is not a function” 有没有遇到过?如果你做过一段时间前端开发,你不可能没有遇到过这个问题。类似的Runtime Error还有非常多。然而,Elm声称可以完成避免Runtime Error!这绝对是无可比拟的一个优势。美国的一家公司NoRedLink声称,他们的产品上线一年多,目前遇到的Runtime Error是0个!这个还是非常有诱惑力的。 纯粹的函数式编程,Immutable data和pure function,让你的代码变得干净,0耦合,不易出错,容易重构,易读,易测。这些都是JS界目前大力推进的方向啊,不然要immutable.js干吗?要Ramda干吗?要RxJs干吗? 有一个“官方”的App architecture,这是一个非常优秀的architecture,有多优秀?Redux大家都知道,现在其实已经是Web app实际上的标准architecture,然而Redux的思想其实是从Elm的architecture学来的! 总之,我觉得这个视频里面有一句话总结得非常好,那就是Elm是现在整个JS界的发展趋势,然而JS还有很长一段路要走。 那Elm完美的吗?当然不是,我这两天接触下来,发现它仍然处于比较年轻的状态,虽然官方声称它已经production ready,也确实有好一些公司已经用于正式的产品中。然而我相信都不是很容易的事情。目前来说,我觉得有以下几个问题需要极需改善: 社区太小,这可能是目前最大的问题,在国内更是如此。如果你在百度上面搜”Elm“,出来的结果基本都不是Elm语言相关的。当然这也不赖Elm,因为你在百度上搜其它东西,基本出来的结果也不是你想要的。 函数式编程与OO或过程式编程差别太大,上手真不是很容易,这会在很大的程度上影响到它的采用率。 Elm语言和编译器本身也有一些东西有等完善,如目前还不支持String interpolation,elm reactor(类似于webpack-dev-server)不支持hot reload,其实之前是支持的,后来发现了bug,就去掉了。Time travel debugger也是,本来是有的,后来发现有bug又去掉了。当前这些都不是很严重的问题,比如hot reload只是节省了你手动刷新页面的功力而已。然而从这些”原来有,后来发现有bug又去掉“这些事情中就能说明这个东西还不是很稳定的问题。 接下来打算在公司的内部小工具上面试用一下,因为Elm文件是可以跟JS交互的,所以应该不是太大的问题,大不了再用回JS嘛。但是函数式编程作为未来的发展趋势,还是要了解一下的。所以,总体来说,我觉得这是一门非常值得学习的语言。 如果你对Elm感兴趣,欢迎加我微信(875156226),共同交流。