后记

王伟冰

首先,我为什么要写《高效编程十八式》。其实就是想把自己编程过程中学到的、领悟到的东西整理整理,发出来大家讨论讨论。我不是计算机专业的学生,我喜欢编程,但是在我所在的学院里像我这样的人并不多。而且我这个人交际面不广,也没有认识多少其它院系的人。所以大学里的很多时候我都是一个人在学,看编程的书,做一些自己喜欢的小项目。我不知道我现在到底属于什么水平,因为没有人可以跟我一起讨论或参照。我越来越觉得不能再这样下去,所以就想到把我学到的东西写下来,跟大家一起分享讨论。初学者看了,可能会学到一些有用的东西;牛人看了,可以帮我指出其中的不足。

我认为编程的原则比具体的语言特性重要。语言可以有很多种,原则却是通用的。不过为了用实例来阐述这些原则,在文章里我还是介绍到了C++的不少语言特性。我尽量地避免太多地去讨论C++的语言特性,以免喧宾夺主,至于效果如何,我就不知道了。从所有文章来看,C++语言的各个方面我基本上都涉及到了,但是都只是讲了最简单的情况,没有深入讨论。所以要学C++的话,看我这个是没有用的,要看专门介绍C++的书才有用。

本来我打算所有的代码都用C++写,但是由于C++语言本身的缺陷,有些东西用C++写起来不太直观,所以有的地方会用C#写。之所以选择C#,一方面是因为我对它比较熟,另一方面是它的语法和C++很接近,所以能保持总体上大致统一的风格。我尽量地避免涉及到它与C++的不同之处,使这些C#代码看起来和C++的没有太大的差别,但是本质上,C#和C++还是很不同的。

我没有讲到设计模式,因为我认为设计原则比设计模式重要。采取什么模式取决于具体问题,但是原则适用于所有问题。面对一个具体问题,只要朝着原则所认可的方向去设计,最佳的模式就自然而然地会出来。

虽然我举了这么多例子来阐述编程原则,但是我认为只有在实际的编程过程中才能真正掌握这些原则。我写的这些东西,可能会有一些启发作用吧。

我几乎没有谈到算法与数据结构,只有在性能优化那一节中提到了一点。但是这并不是说算法不重要,而是它太重要了,以至于需要另外讨论。我觉得算法可以分为两种:确定性的和不确定的性的。确定性的算法有一个明确的目标,必须把这个目标准确求出来。而不确定性的只要求出近似的解出来,甚至连要求解的目标都是不明确的。

有一些思想常常可以用来求解确定性的问题,比如贪心法、动态规划、分治、延迟加载、快速查询表、筛法等等。但是这些思想仍然依赖于具体问题,所以单靠这些思想还是会有很多问题无法解决。性能优化那一节中提到的几个原则,比如减少对数据的复制、减少重复的计算、减少对用不到的数据的计算,对于算法的设计有普遍的适用性,但是这些原则太过笼统,面对一个实际问题,你很难由这些原则直接得到一个有效的算法。所以,算法的研究依然是很必要的,也是很有挑战性的。这不仅是计算机领域的问题,也是数学领域的问题。

不确定性的问题常见于人工智能领域。像贝叶斯网络、人工神经网络、遗传算法、微粒群算法等,都是用来解决不确定性问题的算法。虽然这些算法各不相同,但我觉得,还是存在一些共同的思想的。比如离散的逻辑连续化、操作随机化、采用非线性的函数关系、群体相互作用、结果反馈等等。但是同样,这些思想还不足以解决所有问题。

有的人喜欢用严格的数学方法去分析一个智能算法的行为,我不太赞同这种做法。如果一个算法能够用数学严格分析出它的行为,那只能说明这个方法不够智能。假定你能够获取我现在所有的脑电波信息,你能够用数学的方法预测出我1分钟之后会做什么事?我觉得要想得到一个足够聪明的算法,从生物学或者心理学的角度去寻找答案可能会更好。

我想写一些关于算法的总结,但是我现在还写不出来。因为算法实在太博大精深了,我所学的还太少。我会把今后的学习重点放在算法上,包括确定性的和不确定性的算法。希望以后的某一天,我能够写出关于算法的总结。

最后,感谢gullibility、Geo、sweating等同学指正了文章中的不少错漏之处,感谢我mm帮我修改了不少错别字和病句。也欢迎大家提出更多的意见。

《高效编程十八式》后记相关推荐

  1. 《Effective C++ 3th》——后记

    像<Effective C++ 3th>这类书,在C++进阶阶段必不可少.总结而言,书中内容主要分为以下几块: 减少出错的良好编程习惯/原则: 降低资源利用的有效策略: 深入理解OOP的精 ...

  2. effective java 3th item2:考虑 builder 模式,当构造器参数过多的时候

    yiaz 读书笔记,翻译于 effective java 3th 英文版,可能有些地方有错误.欢迎指正. 静态工厂方法和构造器都有一个限制:当有许多参数的时候,它们不能很好的扩展. 比如试想下如下场景 ...

  3. effective java 3th 序

    正本基本是自己翻译,翻译绝对有错误,就是这么自信,看的时候,自己注意下,如果感觉有语句不通,那么可能就是我翻译的出现了问题,可以自己翻找原文对比下. 其中自己的见解,我写在脚注中. 在 1997 年, ...

  4. 《Effective C++ 3th》——实现

    文章目录 写精简的程序 写安全的程序 写低耦合的程序 尽可能延后变量定义式的出现时间 尽量少做转型动作 避免返回handles指向对象内部成分 为"异常安全"而努力是值得的 透彻了 ...

  5. 《Effective C++ 3th》——资源管理

    文章目录 资源如何释放? 注意资源的唯一性 由使用智能指针引出的问题 以对象管理资源 在资源管理类中小心coping行为 在资源管理类中提供对原始资源的访问 成对使用new和delete时要采取相同形 ...

  6. 《Effective C++ 3th》——设计与声明

    文章目录 友好的接口设计 member与non-member函数设计 不抛异常的swap函数设计 让接口容易被正确使用,不易被误用 设计class犹如设计type 宁以pass-by-referenc ...

  7. 《Effective C++ 3th》——继承与面向对象设计

    文章目录 Is A 确定你的public继承塑模出is-a关系 避免遮掩继承而来的名称 区分接口继承和实现继承 考虑virtual函数以外的其他选择 绝不重新定义继承而来的non-virtual函数 ...

  8. effective c++_【阅读笔记】Effective C++()

    全文参考自Effective C++, Scott Meyers 程序来自本人 https://github.com/hxz1998/ccl 1. 让自己习惯C++ C++高效编程守则视状况而变化,取 ...

  9. Effective C++笔记_条款31将文件间的编译依存关系降至最低

    Effective C++笔记_条款31将文件间的编译依存关系降至最低 这个章节,读了两遍还是不是很清楚,有一种没法和作者沟通的感觉,看来我还是一个C++的初学者呀.好吧,不多说了,回归主题,今天的笔 ...

  10. CET-4 week 3th

    CET-4 week 3th 出奇至胜 read They are only charged for the amount of power they consume on rainy days. T ...

最新文章

  1. 支持向量机SVM(Support Vector Machines)介绍
  2. BZOj #4771. 七彩树(主席树+dfn序+lca)
  3. pta输出三角形字符阵列c语言,C语言l|博客园作业11
  4. 《C++ Primer 5th》笔记(5 / 19):语句
  5. 火狐浏览器怎么关闭自动更新 火狐浏览器关闭自动更新的方法
  6. 演示unity内存管理机制的缺陷
  7. 开源视频质量评价工具: Evalvid
  8. dubbo注入找不到bean_Dubbo配置参考手册之dubbo:reference
  9. arduino nano引脚_使用直流电机和RF模块nRF24L01制作Arduino遥控小车
  10. 微信小程序 提示 provisional headers are shown
  11. 仙人掌之歌——直播业务立项(2)
  12. 信用评分卡DAY8-9
  13. 关于AndroidStudio打包后apk包名乱码的问题
  14. 如何甄别有价值的数据
  15. GEAP 遗传算法/遗传编程 genetic programming + python(deap库)实现
  16. RHEL 7 安装oracle rac 11.2.0.4执行root.sh报错ohasd failed to start
  17. 创业低谷期时怎么度过?
  18. 中国首届微博开发者大会杨卫华演讲
  19. 明星热图|王嘉尔、刘诗诗代言新品牌;王一博、周笔畅、刘恺威出席活动;吴彦祖、黄晓明演绎品牌大片...
  20. greenplum 安装与初始化单机版

热门文章

  1. SC钢管人防套管如何选型
  2. 计算机基础考试题附答案——《第壹篇》
  3. 电阻器指南(一)-基本知识
  4. (附源码)springboot 西安市小学生护眼平台开发 080855
  5. 微信登录老是间歇式失败
  6. 数据库原理课后作业答案汇总
  7. 中国中小企业年鉴(1996-2018)缺2017、1998-2002
  8. 继承构造函数调用顺序_C ++中带有继承的构造函数调用的顺序
  9. matlab中solx什么意思,sol是什么意思_sol的翻译_音标_读音_用法_例句_爱词霸在线词典...
  10. 多模态知识图谱构建系统论文笔记