今天在随便看一些文章及思考的时候,突然就悟到了,这种感觉就象当年某一天领悟了面向对象。哈哈,我终于打通了任督二脉.

顺便看下,园龄刚好10年了。

当年理解面向对象后随手写了这篇:

http://www.cnblogs.com/DSharp/archive/2005/01/28/98632.html

面向对象编程的两顶帽子

其实就是理解了面向对象的根本,定义和实现的两个面,通过接口关联了起来。世界都是通过这种方式来分类呈现的。所谓易经的阴和阳,阴阳转化不过如此。

今天领悟到的,就是易经里的那个不易,不变,就是函数式,函数的不变性,一致性,函数作为描述抽象及原理的,作为第一类的函数first function,就是终极。

所有的变化,最后都通过函数串了起来。而变化的后面,就是不变,以不变应万变。函数就是相当于太极,无级就图灵机,Lambda,太极就是函数。

易有太极,始生两仪,两仪生四象,四象生八卦。

函数产生了定义及调用。又产生了参数和返回值。最后组成了对象的定义和实现,然后派生了整个计算机世界。

可见,函数式编程的first function,改为all function也是可以的。先抛开函数式和面向对象的混合编程。我们来窥探下函数式。

函数的终级原理就是函数,函数是纯数学模型,具有不变性。比如function add(a, b) {return a + b};这就是函数式编程的原子。它就是一条数学规则。一致的输入产生一致的输出,比如我们给入1,1,给出永远是2.

那么函数式编程所架构的世界观,就相当于我们现实世界的物理及宇宙法则。变量是什么?是一个输入,为什么会有最初始的输入,这个已经无需考证,从虚空的无极诞生了太极,道生了一,然后就开始函数式演变了。

所以函数式编程的特点就在于所处规则,至于输入,在现实当中顺其自然就OK,我们关心的就是规则,比如上面的Add,这个规则一但实现,那么就可以搞定所有的加法,这就是函数式的威力,你就象是计算机中的上帝,你需要的就是制定规则。

那么函数式开发和现在流行的开发差异在哪里?我们搞面向对象,我们要去做实体,数据,控制器,业务逻辑,所有都是在模拟现实,而对象是什么?是变化的中间态,个体,实体,1,是一个对象,2,又是一个对象,张三是一个,李四又是一个。

然后呢,我们去做对象的类,就是类型抽象,人是一类,动物是一类,不停的分类,最终你会发现,分类也是无穷无尽的。这是一个永完也做不完的任务。

而函数式呢?定义规则,或者说声明,声明式编程,我们根本无需考虑类型和实体。所以说类型表面上好象很厉害,实际上,天地以万物为走狗,在上帝眼里,码农和土豪是一样一样的。

我们只要分规则就可以,一条大规则太复杂,怎么办呢?细分,函数嵌套,高阶函数,柯里化,比如add(funa(a), funb(b)), 规则要反复使用呢?递归。

在函数规则上使用几个大原则,世界就被定义出来了。这就是函数式!


当然了,理解了只是入世,我们还要出世赚钱,穷则省吃俭用,达则请客吃饭,接下来,理论联系实际,干出点有用的东西,还是需要不断的学习及探索的。

转载于:https://www.cnblogs.com/DSharp/p/3789545.html

终于理解了函数式技术相关推荐

  1. 《深入理解Java函数式编程》系列文章

    Introduction 本系列文将帮助你理解Java函数式编程的用法.原理. 本文受启发于JavaOne 2016关于Lambda表达式的相关主题演讲Lambdas and Functional P ...

  2. 短视频内容理解与生成技术在美团的创新实践

    点击上方"LiveVideoStack"关注我们 美团围绕丰富的本地生活服务电商场景,积累了海量视频数据.如何通过计算机视觉技术用相关数据,为用户和商家提供更好的服务,是一项重要的 ...

  3. 想深入理解大数据技术 有哪些书籍值得学习

    想要学好大数据开发技术,除了必要的学习路线和学习视频教程之外,辅助我们深入学习理解的还有书籍.想深入理解大数据技术,有哪些书籍值得学习?下面千锋老师给大家推荐一些学习大数据的书籍,希望能对大家的学习带 ...

  4. 终于理解,飞行姿态控制中,为什么要用旋转矩阵的方式不停地转换来获取姿态误差

    终于理解,飞行姿态控制中,为什么要用旋转矩阵的方式不停地转换来获取姿态误差 最近在学习飞行姿态控制的原理部分,看了很多博客,一直没有明白控制飞行姿态时为什么要用旋转矩阵相乘的方式来求姿态误差. 现在对 ...

  5. 终于理解了VT虚拟化技术的作用!(内详)

    原文出处: http://news.sanhaostreet.com/New ... 6261759506062.shtml 呵呵!黑友们是不是看到这么长的文章已经开始头晕了啊?!呵呵 不好意思!可原 ...

  6. 终于有人对语音技术来了次彻头彻尾的批判!

    作者 | Alexander Veysov 译者 | 孙薇,责编 | 夕颜 出品 | CSDN(ID:CSDNnews) ImageNet的出现带来计算机视觉领域的突破发展,掀起了一股预训练之风,这就 ...

  7. 你真的理解【函数式编程】吗?

    本文来自作者 李龙生 在 GitChat 上分享「你真的理解函数式编程吗?」,「阅读原文」查看交流实录 「文末高能」 编辑 | 克拉克 前言 现在机器学习.人工智能的发展趋势如火如萘,很多培训班也在引 ...

  8. 终于,不是技术的你也能俗懂云计算、大数据、人工智能了!

    来源:刘超的通俗云计算 数据猿官网 | www.datayuan.cn 今日头条丨一点资讯丨腾讯丨搜狐丨网易丨凤凰丨阿里UC大鱼丨新浪微博丨新浪看点丨百度百家丨博客中国丨趣头条丨腾讯云·云+社区 我今 ...

  9. 如何理解导远技术手册

    导远的技术手册很难理解,很多工程师都表示看不懂,本文介绍一下大部分人看不懂的根源,知道这个根源就能看懂了. 本文以导远的组合惯导设备INS570D例来说明. 如下图所示,其坐标系定义为x朝前,y朝右, ...

最新文章

  1. ensp删除静态路由命令_eNSP配置静态路由
  2. 01Hadoop简介
  3. javascript的原始类型(primitive type)之间的关系。
  4. Caffe中的损失函数解析
  5. 【Linux 内核 内存管理】Linux 内核堆内存管理 ③ ( CPU 计数器瓶颈 | per-CPU 计数器 | Linux 内核 percpu_counter 结构体源码 )
  6. Android开发之 当前日期String类型转date类型 java代码中实现方法
  7. Manjaro 软件源及软件管理相关操作【pacman、pacman-mirrors】整理
  8. 软工作业PSP与单元测试训练
  9. 数据抽取工具比对:Kettle、Datax、Sqoop、StreamSets
  10. Intel保护机制:特权级别:Protection Rings
  11. 新浪微博时间格式解析java_仿新浪微博格式化时间
  12. 移远ec20 4g模块linux驱动移植,Hi3798移植4G模块(移远EC20)
  13. 多选框的 全选 与 取消全选
  14. java输出斐波那契数列前20项,java输出斐波那契数列
  15. 音视频怎样入门?带你入门基础+学习思路
  16. android notification应用之自定义来电通知
  17. 【旧资料整理】8086汇编 鼠标操作
  18. 运维安全要了解的二三事
  19. 拉钩作业:Bikeshare数据集 预测共享单车骑行量
  20. spring-boot-devtools 快速重启的秘密!

热门文章

  1. 4怎样判断动作是否执行_公众号交易时要怎样去判断粉丝是否真实的呢?
  2. 漫画: 什么是外部排序?
  3. 《好未来编程题》求和
  4. 总结:华科教授给本校2013级计算机学院硕士生论文提的几点意见
  5. ElasticSearch5.3插件开发(二)获取集群健康信息
  6. 深入理解select、poll和epoll及区别
  7. ElasticSearch 使用Java Api访问集群
  8. 深度学习笔记:卷积神经网络的Tensorflow实现
  9. LRU缓存实现(Java)
  10. Python函数式编程中map()、reduce()和filter()函数的用法