最新要闻
- 【报资讯】印度越南做备胎算了吧!苹果永远离不开中国制造 未来20年中国主宰科技生产
- 环球热门:近30年来日本男性越长越矮!东京大学研究:我们矮小身高更有利生存
- 欧盟向TikTok CEO发出通牒:不尽快遵守欧盟法规或被封禁
- 明晚见!央视《2023年春节联欢晚会》已完成全部五次彩排
- Redmi Note 12系列在印度一周卖出30亿卢比 创下销售纪录
- 要闻速递:岳云鹏主持河南春晚出现“笑场” 网友喊话郭德纲扣工资
- 2022年出货量暴跌!PC越来越凉了:但CPU、显卡持续涨价
- 南宁兔子灯被吐槽羊不羊兔不兔火了 表情被网友收藏:“打工人”写照
- 世界热议:顺丰单票收入是“三通一达”6倍 纠纷不断 寄丢万元iPhone只赔1千
- 环球实时:暴雪中国:1月24日正式停服 玩家数据安全网易负责
- 天天日报丨超117万人想看!《流浪地球2》预售票房破亿:大年初一上映
- 天天新资讯:告别LCD+侧边指纹!曝Redmi Note新品拥抱OLED+屏幕指纹
- 女记者被裁员去海底捞打工:赚钱更多了 不敢告诉家人
- 世界要闻:憋出大招的电车 可能会剥夺油车最后的尊严
- NVIDIA史上最鸡肋、还特长寿的显卡:GeForce MX终于要走了!
- 【世界速看料】动物园老虎被3只狮子围攻撕咬 官方回应“越界”导致:为何要同区饲养?
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
环球快看:读函数式编程思维笔记01_演化的语言
(资料图)
1.范式转变
1.1.学习一种全新的编程范式,困难并不在于掌握新的语言
1.1.1.真正考验人的,是怎么学会用另一种方式去思考
1.2.计算机科学的间歇式进步,好思路有时搁置数十年后才变成主流
1.3.第一种面向对象的语言Simula 67是1967年发明的,可是直到1983年诞生的C++终于流行起来以后,面向对象才真正成为主流
1.4.早年Java总被认为太慢,内存耗费太高,不适合高性能的应用,如今硬件市场的变迁把它变成了极具吸引力的选择
1.5.命令式编程风格常常迫使我们出于性能考虑,把不同的任务交织起来,以便能够用一次循环来完成多个任务
1.6.函数式编程用map()、filter()这些高阶函数把我们解放出来,让我们站在更高的抽象层次上去考虑问题,把问题看得更清楚
2.跟上语言发展的潮流
2.1.函数式编程
2.2.Groovy已经具备了丰富的函数式特性,包括像“记忆”这样的高级特性在内
2.2.1.(memoization,指运行时自动缓存函数返回值的能力)
2.3.lambda块(也就是高阶函数)被纳入Java 8
2.4.C++在2011年版的语言标准里增加了lambda块,还有引人关注的Boost.Phoenix等类库
3.把控制权让渡给语言/运行时
3.1.第四代编程语言4GL下的一行命令,3GL可能要用很多行才写得出来,因为4GL自带了更丰富的编程环境
3.2.Java虚拟机(JVM)平台
3.2.1.Scala
3.2.2.Clojure
3.2.3.Groovy
3.3.NET平台
3.3.1.F#
3.4.把时间花在更高层次的抽象上,多考虑怎样解决复杂的业务场景,少去费心复杂的底层运作
3.4.1.Java接管内存分配减轻了我们的负担
3.4.1.1.人生苦短,远离malloc
3.4.2.函数式编程语言用高阶抽象从容取代基本的控制结构
3.4.2.1.将琐碎的细节交托给运行时,令繁冗的实现化作轻巧
4.简洁
4.1.面向对象编程通过封装不确定因素来使代码能被人理解
4.1.1.精细地控制谁能够感知状态和改变状态
4.1.2.大粒度的框架式的重用
4.1.2.1.从类的关系中发现重复出现的模式并加以重用
4.1.2.1.1.重用的单元是类和用作类间通信的消息
4.1.2.1.2.用类图(class diagram)来表述
4.1.3.喜欢大量地建立有很多操作的各种数据结构
4.1.3.1.Java世界的数十种XML类库,每一种都有自己定义的内部数据结构
4.2.函数式编程通过尽量减少不确定因素来使代码能被人理解
4.2.1.与其建立种种机制来控制可变的状态,不如尽可能消灭可变的状态这个不确定因素(moving parts)
4.2.2.假如语言不对外暴露那么多有出错可能的特性,那么开发者就不那么容易犯错
4.2.3.比较细小的层面上重用代码
4.2.3.1.比起一味创建新的类结构体系,把封装的单元降低到函数级别,更有利于达到细粒度的、基础层面的重用
4.2.4.函数式语言有很多的操作,但对应的数据结构却很少
4.2.4.1.用很少的一组关键数据结构(如list、set、map)来搭配专为这些数据结构深度优化过的操作
4.2.4.2.这些关键数据结构和操作组成的一套运转机构上面,按需要“插入”另外的数据结构和高阶函数来调整操作,以适应具体的问题
4.2.5.函数式语言共同的一点小习惯:可以用表达式(expression)的地方就不用语句(statement)
5.让语言去迎合问题
5.1.让程序去贴合问题,不要反过来
5.2.Java不是一种特别灵活的语言,我们只能死板地用一些现成结构来拼凑自己的设计
5.2.1.关键字蕴含了开发者无法从其他地方获得的语义
5.3.另一些语言可塑性更强,他们不会拿问题去硬套语言,而是想法揉捏手中的语言来迎合问题
5.3.1.Scala
5.3.2.Clojure
5.3.3.Groovy
6.分发机制
6.1.Java
6.1.1.要表述“条件执行”
6.1.1.1.很少的一些情况适用switch语句
6.1.1.2.大多if语句
6.1.2.依赖GoF模式集里面的Factory模式(或者Abstract Factory模式)来缓解问题
6.1.3.没办法创造基本的语法构造单元,因此必须把问题翻译成符合编程语言语法的陈述
6.2.Groovy
6.2.1.switch语句在语法上模仿Java
6.2.1.1.允许匹配区间和其他复杂类型
6.2.1.1.1.功能要比Java的switch语句强大很多
6.3.Clojure
6.3.1.开发者可以根据问题来修改语言,并没有一条明确的界线隔开语言设计者和使用语言来进行创作的开发者
6.3.2.函数是比类更优先的语言成分
6.3.2.1.它的函数调用用Java的眼光来看,就像内外颠倒了一样
6.3.2.2.Java下的score.toUpperCase()调用
6.3.2.3.在Clojure下的等价写法是(.toUpperCase score)
6.3.3.承载多态语义的多重方法(multimethod)特性允许开发者使用任意特征(及其组合)来触发分发
6.3.4.多重方法赋予了Clojure构造强大分发机制的能力,其适应性不输于Java的多态,而且限制更少
6.3.5.切断多态和继承之间的耦合关系
7.运算符重载
7.1.Java
7.1.1.没有运算符重载特性
7.1.1.1.这是它的设计者在语言形成阶段就刻意作出的决定
7.2.Groovy
7.2.1.将运算符自动映射成方法,从而令运算符重载变成了方法的实现问题
7.3.Scala
7.3.1.完全不区分运算符和方法
7.3.2.运算符不过是一些名字比较特别的方法
7.4.现代语言大多已经相当程度地消除了定义上的复杂性,但以往关于滥用运算符重载的告诫都还是成立的
7.5.要想契合问题域的表达习惯,可以利用运算符重载来改变语言的外貌,不必创造全新的语言
8.函数式的数据结构
8.1.Java语言习惯使用异常来处理错误,语言本身提供了异常的创建和传播机制
8.2.“异常”违背了大多数函数式语言所遵循的一些前提条件
8.2.1.函数式语言偏好没有副作用的纯函数
8.2.1.1.抛出异常的行为本身就是一种副作用,会导致程序路径偏离正轨(进入异常的流程)
8.2.2.引用的透明性(referential transparency)
8.2.2.1.发出调用的例程不必关心它的访问对象真的是一个值,还是一个返回值的函数
8.2.2.2.如果函数有可能抛出异常的话,用它来代替值就不再是安全的了
8.3.函数式的错误处理
8.3.1.Either类
8.3.1.1.不相交联合体(disjoint union)
8.3.1.2.异常(如果有的话)置于Either类的左值上
8.3.1.3.正常结果则放在右值
8.3.1.4.可以容纳任意的内容
8.3.1.5.返回结果(无论异常还是正常结果)需从Either中取出
8.3.1.5.1.多了一道间接层
8.3.1.5.2.实现缓求值的空间
8.3.1.5.3.用来提供默认值
8.3.1.5.4.用来包装异常
8.3.1.5.4.1.将结构化的异常处理机制转化成函数式风格
8.3.2.Option类
8.3.2.1.可以近似地看作Either类的一个子集
8.3.2.2.表述了异常处理中较为简化的一种场景
8.3.2.2.1.none,表示不存在有效值
8.3.2.2.2.some,表示成功返回
8.3.2.2.3.一般只用来表示成功和失败两种情况
环球快看:读函数式编程思维笔记01_演化的语言
【报资讯】印度越南做备胎算了吧!苹果永远离不开中国制造 未来20年中国主宰科技生产
环球热门:近30年来日本男性越长越矮!东京大学研究:我们矮小身高更有利生存
欧盟向TikTok CEO发出通牒:不尽快遵守欧盟法规或被封禁
明晚见!央视《2023年春节联欢晚会》已完成全部五次彩排
Redmi Note 12系列在印度一周卖出30亿卢比 创下销售纪录
要闻速递:岳云鹏主持河南春晚出现“笑场” 网友喊话郭德纲扣工资
2022年出货量暴跌!PC越来越凉了:但CPU、显卡持续涨价
南宁兔子灯被吐槽羊不羊兔不兔火了 表情被网友收藏:“打工人”写照
世界热议:顺丰单票收入是“三通一达”6倍 纠纷不断 寄丢万元iPhone只赔1千
环球实时:暴雪中国:1月24日正式停服 玩家数据安全网易负责
焦点快播:学习笔记——@PathVariable注解基本使用;@PathVariable注解属性;REST风格CRUD概述;实现PUT&DELETE提交方法步骤
环球短讯!Codeforces Round #753 (Div. 3)(ABCDE)
世界热点!node.js安装
天天日报丨超117万人想看!《流浪地球2》预售票房破亿:大年初一上映
天天新资讯:告别LCD+侧边指纹!曝Redmi Note新品拥抱OLED+屏幕指纹
女记者被裁员去海底捞打工:赚钱更多了 不敢告诉家人
世界要闻:憋出大招的电车 可能会剥夺油车最后的尊严
NVIDIA史上最鸡肋、还特长寿的显卡:GeForce MX终于要走了!
全球焦点![数据结构] 栈 (C语言)
【世界速看料】动物园老虎被3只狮子围攻撕咬 官方回应“越界”导致:为何要同区饲养?
吴京谈《流浪地球2》:努力为自己的角色增加光彩
全球热消息:OPPO Find N2成为老外眼中最好的折叠屏手机!三星落后其两代
环球热点!AcWing1081. 度的数量
通讯!DVWA靶场实战(八)——SQL Injection(Blind)
团购低人一等?男子理发耳朵被剪掉一块肉:店方求网友高抬贵手
2025年前后!嫦娥六号将为人类取回月球背面第一批月壤
联想启天M540c/M450c商用机对比评测:酷睿版配置/性能完胜
卡梅隆:在家看《阿凡达2》要有大电视 别在手机上看
当前短讯!对比飞天茅台 花8万块测市面多款白酒:结果不出所料
【新视野】没人买!机械硬盘出货量惨遭腰斩 稳定性/性价比都输SSD
世界观速讯丨深度根植!苹果永远都不能完全离开中国制造
今日热闻!男子疑因抽烟错过高铁跪地求开门:科普正确补救方法
三星Galaxy S23系列美版定价泄露:Ultra版卖8000多元 向苹果看齐
【新视野】联想Tab P11 5G安卓平板将在国内上市:骁龙750G处理器
观速讯丨曾言获10万订单:零跑C01变相降价2.5万
【全球新要闻】韩国电动车基金不重仓特斯拉了!基金经理感叹:坑太多
【全球速看料】dubbo实战篇:dubbo超时设置
头条焦点:RTX 4090 16针电源线又烧了!加强版“躺平”也不行
今亮点!低脂高蛋白 鲨鱼菲特鸡胸肉:5袋到手14.9元
当前热点-安卓碎片化一地鸡毛:发布5个月后 仅5.2%用户升级Android 13
天天关注:大红灯笼挂满街头认不出红绿灯?官方回应:已调整 交通违法误判可撤销
每日讯息!男子网购耐克鞋收到两只左脚 商家拒绝提供售后
当前滚动:树状数组笔记整理
今日快看!排队5小时、日营业额过万!春节前美甲生意火了
比新车还香!极氪推出官方二手车:三电终身质保
【独家焦点】或将对标《原神》!《王者荣耀·世界》即将发布新实机演示
环球微速讯:学习笔记——@RequestMapping注解位置、注解属性;@RequestMapping支持Ant风格的路径
每日短讯:吃完饭车没了 男子怀疑被偷报警:结果忘拉手刹车溜进沟
我国第二款国产ECMO获批上市!航天火箭技术转化:完全自主知识产权
微头条丨定了!2023高考全国统考时间公布:6月7日开考
世界看热讯:曾两次感染新冠!辉瑞CEO:正研发可保护一年的新冠疫苗
环球焦点!SpaceX星际飞船超级重型助推器本周测试:33部猛禽发动机同时点火
天天观速讯丨【网关开发】5.Openresty 自定义负载均衡与流量转发
观点:100w人在线的 弹幕 系统,是怎么架构的?
焦点热议:年轻人的第一台影像旗舰!卢伟冰:Redmi Note 12 Pro系列绝对可以
天天观速讯丨东北大哥8小时狂炫40斤砂糖橘 网友提醒:当心变黄
全球报道:《魔兽世界》国服即将停运!最后一周超7千帐号开挂被封
世界看热讯:近千亿国产半导体公司卓胜微净利润暴降超50%:大家确实不爱换手机!你换没
全球速读:呆萌!66只考拉七代同堂齐送新春祝福
全球播报:非对称加解密算法SM2
世界简讯:从合并石子学区间DP
环球快播:Golang的基本数据类型-基本使用
不是安卓!鸿蒙系统成大学教材 “鸿蒙之父”王成录参与 培养开发者
焦点热议:美国科技史上最大规模裁员开启:亚马逊、微软“毕业”均超万人
全球快播:25年历史的笔记本内存将被淘汰 新标准单条可达128GB 频率更快
环球最新:24年前经典重现!《轩辕剑叁:云和山的彼端》将推出Switch版本
世界微动态丨三亚已成全国最堵城市:国人扎堆去海南 能堵到你哭泣
焦点精选!零下30度 东北司机穿10斤棉裤冒雪下乡送年货:网友为劳动者正能量点赞
焦点播报:大年初一上映!《流浪地球2》要做中国科幻片天花板 特效拉满
学习笔记——SpringMVC简介;SpringMVC处理请求原理简图;SpringMVC搭建框架
全球今日报丨曾致苹果华人工程师身亡!FSD造假实锤:特斯拉技术大牛证实
短讯!强推Win11:微软即将停售Win10数字许可
观天下!Win系统下实现任意exe静态免杀
全球速看:iPhone 14 Pro Max屏幕抽风出现死亡横线:iOS 16.3终于修复了
当前资讯!质量堪忧 退换货激增!AMD旗舰显卡RX7900 XTX游戏实测近3.5GHz 你买吗?
当前视点!还有5天关服 魔兽世界怀旧服免费玩 网易高管:出问题就找暴雪
低配版《黑神话:悟空》即将发售!新实机预告公布
“搭桥”运工具 波士顿动力机器人展示新技能:网友却不认账
佛诞是哪个国家的节日?佛诞日是农历的哪一天?
如来佛拈花一笑是什么意思?如来佛拈花一笑的故事
五常指的是哪五常?五常是什么时候建立的?
卫生衣是什么东西?卫生衣是什么季节穿的?
学习笔记——Spring声明式事务管理属性(隔离级别、事务超时、事务只读、事务回滚);Spring5新特性、新注解&整合log4j2;Spring5整合Juni
AIRIOT答疑第6期|如何使用二次开发引擎?
村的由来是什么?中国省市县区等级划分
思科路由器怎么进入设置界面?思科路由器配置命令大全
宝岛眼镜是哪里的品牌?宝岛眼镜怎么样?
开心消消乐什么时候上线的?开心消消乐怎么求助好友过关?
电脑重装系统后没有声音是怎么回事?电脑重装系统后没有声音怎么办?
b站在线人数在哪里看?b站在线人数怎么关闭?
国产芯的iPhone 14 Pro!乐视手机S1 Pro现货发售:仅899元
【当前热闻】嚣张!飞度女应急车道超车未果打砸后车被刑拘 受害车主回应
观速讯丨专为游戏优化!AYANEO OS掌机操作系统官宣2023年上线
国产科幻巨制!《流浪地球2》终极预告发布:大年初一上映
焦点要闻:红灯藏在成片红灯笼里引司机吐槽:差点6分没了
【天天播资讯】店主卖自制香肠遭男子10倍索赔 被法院驳回:网友大赞判决
世界视点!55天徒步跨越1600公里!沙特一观众获国际足联最佳球迷奖提名
【世界新视野】坐等分钱!全球205位富豪呼吁征收财富税:现在就向我们征税
全球首款独显掌机!AYANEO官宣NEXT 2将搭载锐龙7000系处理器