C++函数式编程(一)
来源:互联网 发布:linux led灯闪烁 编辑:程序博客网 时间:2024/05/21 19:39
原文:http://www.altdevblogaday.com/2012/04/26/functional-programming-in-c/
作者:John Carmack
-潘宏 译
-2013年1月
-email: popyy@netease.com
-weibo.com/panhong101
可能大家都听说过,“函数式”编程能够给软件开发带来很多优势,甚至很多人把它当作软件开发的“银弹”。但是,随便浏览一下维基百科关于函数式编程的词条,你就会发现一大堆过于学术的东西,比如lambda表达式,形式化系统等等。好像这些和函数式编程对软件开发的帮助并没有什么直接联系。
经验告诉我:软件开发中产生的诸多问题,都在于程序员没有对程序的所有执行状态了如指掌。而在多线程开发中,这种问题及其造成的后果就更严重了,严重到足以让开发者感到项目危机。而函数式编程,则让代码的执行状态变得清晰,让程序执行状态更容易推导出来,让线程在理想环境下没有竞争。
虽然我认为学习函数式编程有价值,但让你马上放下C++编译器,然后投入Lisp,Haskell或者其它什么乱七八糟(恕我直言)的语言的怀抱,我觉得这不负责任。对于长期遭受折磨的语言设计者来说,诸多外部因素抵消了语言本身的优势,游戏开发领域更甚:除了每个公司都需要解决的代码库维护,人力资源问题,游戏开发还要解决跨平台,工具链,认证网关,许可证技术,高性能需求等等诸多问题。
如果你的工作允许你使用一种非主流的语言进行开发,那么我在替你感到高兴的同时,也提醒你:做好准备,迎接进度压力。而对于在工作中不能随便选择语言的开发者来说,不管你现在用什么语言,函数式编程会给你带来好处。你应该在它能够带来开发便利性的时候使用它,而在它无法提供便利性的时候好好想想到底该不该用。而一旦你最终选择了它,你就可以开始学习lambda、monad、currying、无限集中的复合延迟估值函数 ,以及其它所有面向函数式编程的方方面面了。
C++不提倡函数式编程,但也提供了相关方法来支持它。这使得你在使用函数式编程的同时,仍然可以使用威力巨大的底层功能来实现需求,比如用SIMD指令集来处理内存映射文件的数据布局,或者其它任何你需要实现的功能。
- C/C++编程(一)--函数指针与指针函数
- 函数式编程(一)
- 函数式编程一
- 函数式编程(一)
- C++函数式编程(一)
- 函数式编程小结(一)
- java中的函数式编程(一)
- JavaScript函数式编程(一)
- Java8函数式编程(一)
- Python 函数式编程(一)
- Scala函数式编程(一)
- JAVA 8函数式编程(一):高阶函数
- Java函数式编程(一)
- SQL编程->函数(一)
- C专家编程(一)
- C专家编程(一)
- C++-----编程实战(一)
- c编程(一)基础知识
- Android音乐播放器的比较。
- sql语句查询某列数据是否包含中文或英文
- loop设备及losetup命令介绍
- javascript浏览文件后可以直接显示客户端的图片
- ARM汇编必知必会
- C++函数式编程(一)
- CvMatND多维数组的使用
- 通过SQL自动添加流水号
- 嵌入式资深工程师白话说“嵌入式”
- 软件项目管理系统-项目管理-模块统计-工作量统计
- linux img文件压缩及解压
- 软件项目管理系统-项目管理-模块统计-进度统计
- 51汇编语言指令集
- 44、对象的深克隆与浅克隆