面向对象编程和函数式编程、命令式编程和声明式编程

我们有两种编程方式:命令式和声明式

命令式编程:命令“机器”如何去做事情(how),这样不管你想要的是什么(what),它都会按照你的命令实现。 声明式编程:告诉“机器”你想要的是什么(what),让机器想出如何去做(how)。 举个简单的例子,假设我们想让一个数组里的数值翻倍。

var numbers = [1,2,3,4,5]
var doubled = []
for(var i = 0; i < numbers.length; i++) {
  var newNumber = numbers[i] * 2
  doubled.push (newNumber)
}
console.log (doubled) //=> [2,4,6,8,10]

/*--声明式---*/
var numbers = [1,2,3,4,5]
var doubled = numbers.map (function (n) {
  return n * 2
})
console.log (doubled) //=> [2,4,6,8,10]


java是面向对象
scala是面向对象和函数式的结合


面向对象编程

https://www.zhihu.com/question/19729316#231973

面向对象编程强调的是对象和消息. 比如:门被风关上了,门是个对象,风是个对象,关是个动作我们定义为方法.则门对象应该有一个关方法:guan(Feng weifeng)

函数式编程

函数式编程关心数据的映射。
把逻辑完全视为函数的计算。把数据与逻辑封装到函数中,通过对函数的计算,加工,处理,来生成新的函数,最后拼装成一个个功能独立的函数。在运用这些函数,完成复杂逻辑的实现。

面向对象函数和函数式编程差异
函数式编程特点
  1. 函数是一等公民
  2. 纯函数

函数式编程中我们把数据和逻辑封装到函数中而不是类与对象中。每个函数完全独立,好的函数式设计,每个函数都是一个纯函数(pure function,即输入固定参数,即可得到相同输入的函数)。
面向对象中的任何一个原型方法(prototype)都会获得this的数据,而且可以轻易获取闭包的数据。这样的非纯函数让我们非常难以提炼与抽象。
纯函数由于输入与输出固定,所以变得非常容易单测。好的函数式中的函数设计,不会依赖于任何其他函数或者声明配置,只需要传递参数,既可以进行测试。而在面向对象语言中,我们往往需要启动整个工程,或者说所有依赖的类全部要加载,才能开始测试。

  1. 模式匹配
    map reduce filter等
  2. immutability

什么是immutability? 实细分起来有语法上的 immutable (例如 Java 里的 final 关键字), 和运行时对象的 immutable (一个变量名可以修改指向不同对象, 但对象的内容不可变). 两者的联系是: 如果语法上规定所有变量都是 "final" 的, 那么运行时对象就相当于都 immutable 了. 但如果语法上部分变量是 final, 部分不是, 那么就不能得出运行时对象全都 immutable 的结论.

immutability优点?
1)、运行速度。并发下,很多地方说immutability会拖慢程序,其实并没有。应用了 immutability 的 VM 实现可以去掉很多情况的 lock, 并发处理速度会更快. 不是并发处理的情况, 如果所有对象都 immutable, 手动的保护性拷贝都可以去掉,处理复杂业务会更简单快速.
2)、gc。因为只有新对象指向老对象, 老对象不能指向新对象, 对实现分代 GC 的人来说真是一个天堂。没有环引用! 不用做环检测不用加弱引用, 那引用计数还不爽翻了?

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,186评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,858评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,620评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,888评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,009评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,149评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,204评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,956评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,385评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,698评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,863评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,544评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,185评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,899评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,141评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,684评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,750评论 2 351

推荐阅读更多精彩内容