在今天这个信息泛滥的时代,身为开发者,眼光比技术更重要。缺乏眼光的人,着眼于小,为细枝末节的所谓“创新”不惜肝脑涂地,赴汤蹈火,而面临真正变革时,或坐井观天,守旧拒新,或畏畏缩缩,裹足不前。具备眼光的人,着眼于大,平时稳扎稳打,不为世间纷扰所扰,一旦时机出现,则能抛却门户之见,枝节之争,以过人气概投身变革,成就自己的事业。这前后两者的差距之大,其实全在于对大趋势的把握上。
回顾IT技术不长的历史,我们会发现,每当重大变革发生的时候,在技术圈子里总是存在激烈的争论,总有那些着眼于小的人站在细枝末节上对技术变革本身表示质疑甚至否定。
当关系数据库和SQL语言把数据管理的繁琐工作从开发者和操作者身上解放出来的时候,有人抨击关系数据库性能低下;当微软开始用C语言开发PC应用程序时,汇编语言的拥护者轻蔑的说,只有汇编语言才能发挥PC机的全部能力;当Web进军企业计算时,一大批专家跑出来抨击HTML界面的呆板和HTTP协议的缓慢和幼稚。然而,所有这一切抱怨、质疑和信誓旦旦的否定,都被技术发展的大潮无情的吞噬,消失得无影无踪。原因很简单,所有这些声音,都是着眼于小,着眼于私,一叶障目,而不见IT技术发展的大势。IT技术发展的大趋势永远都是要更快,更简单。
DbC——从更普遍的意义上说,函数的调用者(Caller)和函数的实现者(Callee,被调用者)之间订立了一个契约(Contract),在调用函数之前,Caller要为Callee提供某些条件,比如确保a
是排好序的,确保a[start..end]都是有效的数组元素而没有访问越界,这称为Precondition,然后Callee对一些Invariant进行维护(Maintenance),这些Invariant保证了Callee在函数返回时能够对Caller尽到某些义务,比如确保“如果number
在数组a
中存在,一定能找出来并返回它的位置,如果number
在数组a
中不存在,一定能返回-1
”,这称为Postcondition。
如果每个函数的文档都非常清楚地记录了Precondition、Maintenance和Postcondition是什么,那么每个函数都可以独立编
写和测试,整个系统就会易于维护。这种编程思想是由Eiffel语言的设计者Bertrand Meyer提出来的,称为Design by
Contract(DbC)。
分享到:
相关推荐
这句话启发了我作文.doc
用A*算法求解八数码问题。A*算法又叫做最佳图搜索算法,是满足启发函数不大于实际耗散值的A算法,可以用理论证明如果最佳解图存在的话,一定可以用A*算法找出来。
如何用ChatGPT进行贪吃蛇小游戏开发:在编程学习中,我们通常将贪吃蛇作为入门阶段的练手项目...但只要你有兴趣,不管是从贪吃蛇游戏、Pygame 库还是 ChatGPT 模型的角度出发,都会对你的编程能力有很大的提升和启发。
你把能能找到的相关资料都仔细的看了一遍,希望能从中找到一些更有启发性的想法。你已经清楚地知道了你需要达到的电路指标和性能,你也知道了电路设计本质上是需要做很多合理的折中。可你搞不清这个“合理” 是怎么...
(为了获得更好的速度,如果不是快的话。) 可用算法 按字母顺序: 萤火虫算法元启发式算法::萤火虫算法 遗传算法元启发式算法::遗传算法 Harmony 搜索元启发式算法::HarmonySearch 简化粒子群优化元启发式算法::...
可以访问互联网(如果有) 开始你的旅程 您可以通过选择上面的InstallAnyfesto或InstallLocalfesto选项来开始安装。 经常问的问题 如何获得服务? 主页在端口80上 可以从端口8085听到音频流 可以从端口8088
以下几句话概括了地球的雄心壮志: 紧凑:Windows上的边框少,视觉伪像少,隐藏的按钮和平面滚动条。 可读性:低眩光,平衡的对比度以及带有编程连字的集成编辑器字体,易于操作。 杰出:不是革命,而是希望与...
模电复习资料2014实这个可以两者结合起来学,模电比数电难的多。...另外自学的话强烈的建议看视频,很多东西是不点拨要想很长时间,而又一点就懂的那种。视频网上有的事,找个适合自己的去看吧。我也是自学的。
Thinktool 该存储库包含的源代码, 是一个受TheBrain and Roam Research启发的相关笔记应用程序。 (屏幕快照显示了链接,反向引用和多个父级。) Thinktool不是开源的!... 如果您发现我已经有几个月没有接触过该
本书含有几百个例子及其详细解说过程,章末带有习题,书末还带最终测试题目,一句话,本书给予你的是 MATLAB 精华。 本自学指导书提供了: z 上手 MATLAB的最快方法 z 几百个带有解答过程的工作实例
如果是的话,Opytimizer是真正的交易! 该软件包提供了易于使用的元启发式优化实现。 从代理人到搜索空间,从内部职能到外部沟通,我们将促进与优化人员有关的所有研究。 如果需要图书馆或希望进行以下操作,请...
如果还没有的话,请克隆Waves的Github存储库( git clone https://github.com/fians/Waves.git )。 运行npm install以安装必要的本地节点程序包。 使用npm install -g grunt-cli全局npm install -g grunt-cli 。 ...
受到内置Android时钟应用中的日期选择器的启发。 注意:我没有积极致力于该库的新功能。 我只解决关键错误。 话虽这么说,但对新功能的贡献非常值得欢迎,我随时可以审查请求请求。 见如果你有兴趣参与。 正常...
DEK的巨著!!所有研究计算机编程的人...等等,它们都帮你把算法实现和封装好了,但是你如果对计算机编程真的感兴趣的话,应该不会只局限于会用吧,应该是了解它怎么实现吧,还有它的解决问题的思想可以给你很打的启发
cmdWorld hackNet启发游戏的来源安装(供稿) 克隆存储库, npm install && npm start然后您应该就可以npm install && npm start了;)npm运行脚本npm run clean :删除dist / *文件npm run build:js :将src / js...
需要学习 MATLAB?问题即刻解决! 在这本实用的指导书帮助下你立即就可使用 MATLAB 了。...本书含有几百个例子及其详细解说过程,章末带有习题,书末 还带最终测试题目,一句话,本书给予你的是 MATLAB 精华。
因此,在这里把自己的一些体会写出来,希望能够对所有的技术工程师有一些启发。 一、出发前的准备 从事PLC的技术支持的人,如果是要到现场开始进行系统调试,无论是对OEM客户,还是对一个过程控制的系统集成,都要...
它受到启发,旨在为Go语言环境提供一组类似的功能。 ###核心目标 快速执行 CLI和Go API 可扩展的 简单的 就像Facter拥有facts ,福音也拥有truths 。 所有truths都是您要从中以键/值对形式收集的系统的事实真相。...
受到dplyr和tidyverse的启发,tidy.js尝试将数据操作的人体工程学从R引入到javascript(和打字稿)中。 tidy.js使用JavaScript整理数据! 受到dplyr和tidyverse的启发,tidy.js尝试将数据操作的人体工程学从R引入到...
MATLAB揭秘清晰版电子书-Matlab揭秘.part1.rar 需要学习MATLAB?问题即刻解决!...本书含有几百个例子及其详细解说过程,章末带有习题,书末还带最终测试题目,一句话,本书给予你的是MATLAB 精华。