个人的感觉其实并不拘泥于某种形式,也不太擅长形而上,在一开始只要实用,只能能够解决问题就好,

很多的感悟,窍门都是日久以后,自然而然得来的,但是并不等于能够放弃相对微观的细节,也不能无视较为宏观的原理和概念层面,对!我就是喜欢从中间切入,从实践开始,然后向上下两端进行探索。

题外话了,不多扯。

函数式,具体点就说scala吧,我相信大部分都是有java功底的,那么一开始用java作为对照就是个自然而然的思维方式,没什么不好,但是如何入手呢?

我自己是从重写GoF开始的,写完我自己有一个感觉,所有的DP在函数式面前都失去了作用,为什么?归根结底,其实就是因为DP就是用接口承载函数,转成对象后达到可以传递的目的。

JAVA的代码在函数式面前显得过于的间接,结构过于的臃肿,所有的DP都可以不用接口直接用高阶函数参数来完成。

那么问题来了,如果高阶函数如此有效,那么函数式的其他特性又有什么存在的意义呢?答案在于组合!

没错,JAVA社区倡导的“组合而非继承”其实在函数式的领域已经是一个近乎可以考古的命题了,函数式生来就是这么做的。

函数式的组合,同源的思想,通过小的细粒度的原材料组合出大的复杂的整体,但区别在于内部的结构复杂度被有效的降解了,逻辑复杂度是不会改变的,无关于用何种技术何种语言,系统的逻辑复杂度是零和的,框架或者语言也是一样的,表面越简单,内部越复杂,scala摒弃原生实现,而采用外挂库其实是转嫁复杂度到语言外部去,但好处是得到了精简,以及灵活的机制,这个很重要。

从另一个角度感受的话,函数式变成提供了更加细粒度的结构化能力,更加的轻量,灵活,确更加难懂了。

好在scala是typesafe的,这点非常喜欢。

转载于:https://www.cnblogs.com/pyes/p/4900743.html

函数式 vs 指令式相关推荐

  1. 编程范式:函数式编程防御式编程响应式编程契约式编程流式编程

    不长的编码生涯,看到无数概念和词汇:面向对象编程.过程式编程.指令式编程.函数式编程.防御式编程.流式编程.响应式编程.契约式编程.进攻式编程.声明式编程--有种生无可恋的感觉. 本文试图加以汇总和整 ...

  2. 利用css‘content实现指令式tooltip文字提示

    直接上图 分析执行流程 鼠标移入节点 检测是该节点是否存在开启实现tooltip实现的标识(类名,属性等) 检测主题.位置(类名,属性等) 生成 / 显示气泡 借鉴他人 让我们先来看看element- ...

  3. java1.8 流式计算:利用接口的函数式编程 + 链式编程

    java1.8 流式计算:利用接口的函数式编程 + 链式编程 文章目录 java1.8 流式计算:利用接口的函数式编程 + 链式编程 1.流式计算 1)ArrayList和Stream关联的底层解析( ...

  4. 【图形基础篇】02 # 指令式绘图系统:如何用Canvas绘制层次关系图?

    说明 [跟月影学可视化]学习笔记. 如何用 Canvas 绘制几何图形? 1. Canvas 元素和 2D 上下文 Canvas 元素上的 width 和 height 属性不等同于 Canvas 元 ...

  5. 大牛书单 | Python方向的好书

    早先,Stackoverflow 向八万多名开发者发放了一份调查问卷,其中在最想学的编程语言问题中,Python 排名第一. Python是一种广泛使用的解释型.高级和通用的编程语言.支持多种编程范型 ...

  6. 入门科普|Python和C/C++等有何区别?

    只要是接触过电子计算机领域和从事软硬件开发的友友们,相信应该没有人没听过Python和C/C++这两种语言吧?这俩种语言都是当下比较主流的两种计算机语言,但可能有很多刚进入大学或者想要转行的友友们不清 ...

  7. Programming Languages PartA Week2学习笔记——SML基本语法

    Programming Languages PartA Week2学习笔记--SML基本语法 首先简单介绍使用的SML语言,参考维基百科和百度百科: ML(Meta Language:元语言)是由爱丁 ...

  8. python编程可以用来干嘛,python程序员是干嘛的

    什么是python编程 Python是一门新兴的编程语言,编程语言有很多,比如C++.Java.C#.PHP.JavaScript等,Python也是其中之一,在学习Python前,我们需要对它有一定 ...

  9. python是一种编程语言吗?,python语言是编程语言吗

    python语言是什么? Python是一种计算机程序设计语言,你可能已经听说过很多流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaSc ...

最新文章

  1. 深度学习中的验证集和超参数简介
  2. java实现在pdf文档上填充内容
  3. sql server 索引学习1
  4. MySQL如何向表中增加、修改字段
  5. Visual Studio中的Build和Rebuild区别
  6. GitHub 上值得前端学习的数据结构与算法项目
  7. Java:银行账户类
  8. 【转】如果要像钢铁侠那样看世界,谷歌眼镜远不够!还有这些技术问题需要解决...
  9. [渝粤教育] 潍坊职业学院 化工安全技术 参考 资料
  10. 富士康立讯精密可能仍在苹果汽车代工商候选名单中
  11. Nhibernate中Unexpected row count的一种解决办法
  12. CSS3学习案例1——超级链接类型标示图标
  13. 管理感悟:知行合一与内化
  14. 使用计算机音箱进行音乐播放的过程,插卡音箱音乐播放顺序调整及歌单式1
  15. 2、Modelsim使用教程
  16. 笔记本电脑开机键盘失效
  17. oracle onlinelog 11G,从alert日志看Oracle 11g Datagurad日志传输(下)
  18. C#导出VCF格式电话本,遇到QUOTED-PRINTABLE编码的问题,附带QUOTED-PRINTABLE编码解码
  19. 精美的手机WEB网页欣赏
  20. 特殊的搜狗拼音输入法

热门文章

  1. bzoj千题计划262:bzoj4868: [六省联考2017]期末考试
  2. [转]LIB和DLL的区别与使用
  3. APP功能需求第一版
  4. 美团的android多渠道包的3种方法
  5. DS-5/RVDS4.0变量初始化错误
  6. 19、Cocos2dx 3.0游戏开发找小三之Action:流动的水没有形状,漂流的风找不到踪迹、、、...
  7. C++ 拷贝构造函数应用场景
  8. html购物车内部处理样式,第4期学习班-1.23作业-【JQuery-attr方法】-【JQuery-切换CSS效果】-【JQuery-插入元素】-【JQuery-加入购物车】...
  9. Auto.js 抖音--留痕--参数分析
  10. Adobe Audition CC 2020中文版