程序员一定要学会装B,不会装B的程序员一看就知道,一脸的苦瓜。然后对其他口若悬河滔滔不绝的程序员来一句:靠就你M会装B。
装B有好些方式,最近新的编程语言出现的有些汹涌(当然有些也蛮老了,最近被翻出来了),特别是申明自己是函数式语言的,或者有明显的函数式特性的语言特别多。现在不说自己会一种或者两种这样的编程语言都不好意思和别人讨论和交流了。
别人给你讲Haskell,给你讲F#,给你说Scala/Clojure,即使可能屁都不懂,但是看起来好像已经脱离了码农进城了感觉。于是了你有点儿想MLGB的有时间自己也看看,好歹能扯淡用。
于是你偶尔打开了相关链接,一看代码的例子,“日了,这什么玩意儿,语法太狗血了吧!”。想着自己还有日常的编程任务,看着这些代码永远不会进入自己的实际应用,知道公司永远不会用这些语言来写项目。于是估摸着计算着最后放弃了,于是又只能眼睁睁的看着其他人吹牛逼了。
今天我给大家带来一个好消息,学Javascript也可以装B,装起来和Haskell,F#,Scala/Clojure一点儿也不差,加上Javascript自己特有的一点儿矛盾神秘误解,装起B来有一种特别的风味。
还有两个额外的红利:第一,Javascript应该比其他语言来说你更可能在项目中使用,装B实用两不误,第二,打开浏览器的开发工具你就可以做各种实验,不需要各种宇宙最强编辑器,几乎可以做到随地大小便。
其他语言当然也有些差别,比如有些有模式匹配,有些有宏。不过Javascript也有牛X的,比如词法作用域+动态作用域, 原型继承等等。
怎么开始了?在google输入functional javascript关键字,从你感兴趣的文章开始。最后祝装B愉快。
装B有好些方式,最近新的编程语言出现的有些汹涌(当然有些也蛮老了,最近被翻出来了),特别是申明自己是函数式语言的,或者有明显的函数式特性的语言特别多。现在不说自己会一种或者两种这样的编程语言都不好意思和别人讨论和交流了。
别人给你讲Haskell,给你讲F#,给你说Scala/Clojure,即使可能屁都不懂,但是看起来好像已经脱离了码农进城了感觉。于是了你有点儿想MLGB的有时间自己也看看,好歹能扯淡用。
于是你偶尔打开了相关链接,一看代码的例子,“日了,这什么玩意儿,语法太狗血了吧!”。想着自己还有日常的编程任务,看着这些代码永远不会进入自己的实际应用,知道公司永远不会用这些语言来写项目。于是估摸着计算着最后放弃了,于是又只能眼睁睁的看着其他人吹牛逼了。
今天我给大家带来一个好消息,学Javascript也可以装B,装起来和Haskell,F#,Scala/Clojure一点儿也不差,加上Javascript自己特有的一点儿矛盾神秘误解,装起B来有一种特别的风味。
还有两个额外的红利:第一,Javascript应该比其他语言来说你更可能在项目中使用,装B实用两不误,第二,打开浏览器的开发工具你就可以做各种实验,不需要各种宇宙最强编辑器,几乎可以做到随地大小便。
为什么Javascript也可以装B了,因为各种函数式语言都必须具备的基本特性就是:函数是语言第一类对象(和普通值一样可以作为参数传递,可以作为结果返回)。有了这个条件,那么你想玩高阶函数,你想玩monad,你想玩future/promise,你想玩combinator,fix point,你想玩curry/partial application等等都是可能的了。因为在Javascript中函数也是第一类对象,因此其他语言能玩的你用Javascript也能玩。
其他语言当然也有些差别,比如有些有模式匹配,有些有宏。不过Javascript也有牛X的,比如词法作用域+动态作用域, 原型继承等等。
怎么开始了?在google输入functional javascript关键字,从你感兴趣的文章开始。最后祝装B愉快。