编程为什么困难
来源:互联网 发布:网络监控工程公司 编辑:程序博客网 时间:2024/05/23 02:16
提示:关注新浪微博:http://weibo.com/beyound507 精彩内容不错过。
摘要:Erlang语言最初的设计者与实践者Joe Armstrong表示自己最初认为编程很容易,但现在意识到编程并不那么容易。编程并不只是告诉计算机做什么,一些约束条件、恶劣的编程环境都可能使编程变的困难。
很多年前,我认为编程很容易,随着岁月的流逝,我已经意识到编程并不那么容易。这是围绕编程是什么,程序员做什么两方面感知上的缓慢转变。
起初我还以为编程只是告诉计算机做什么,这样的编程是相对容易的。编了二十多年程序后,我感觉这种编程相当简单。
定义一:程序是将输入转化为输出的东西。
程序员是编写程序的人,编程是编写程序的行为。
现在让我们给程序定义添加一些约束。
定义二:程序是将输入转化为输出,并受到以下限制的东西。
- 该程序的输入、输出结果要优美。
- 该程序要优美。
- 该程序的输入要恰当并被正确归档。
- 该程序本身要恰当并被正确归档。
- 该程序通过测试并被证明是正确的。
- 该程序正在解决中的问题要恰当地说明。
- 该程序存在的其他问题要恰当地说明。
带着这些约束条件进行编程就变得十分困难了。
对于特定的问题,一些限制可以放宽。
不需要维护的程序
我们通常编写只要输出结果的程序,这种情况,输入和程序本身将来就不需要维护,所以不必有特别漂亮或很好的描述。我写的关于Erlang语言的书就是这类情况。书一旦出版,就不再需要撰写和维护。在重印时,这本书的勘误信息和必要的修改只涉及输入微小且简单的修改,即使输入没有被很好地归档。
必须要维护的程序
对于必须要维护的程序来说,程序的输入和程序本身,则要优美并很好地归档。
我与一位Web程序顾问聊天。他说只要程序的输出看起来是正确的,客户就会认为项目已经结束,项目经理就会投身于下一个项目。他们没有认识到,在开始下个项目前,网站不仅应该看起来不错,而且代码也要整洁并被归档。因为这是要在未来进行维护的项目。
使编程困难的其他原因
修复本以为不可能坏的东西
通常,我会使用自己并不十分了解的软件去解决特定问题。
如果运气好,我使用的程序会有准确的使用描述。但更多情况是程序要么没有描述,要么是错误的描述。
如果文档里面的描述与事实不符,你会怎样?如果写文档的人就在你旁边还好,否则只能借助Google或者从源码中寻找答案。
借助Google查错的经历真是不堪回首。好不容易Google到一篇帖子,有个倒霉鬼恰巧和我遭遇了完全一样的问题。我的心激动得跳个不停,我用颤抖的指尖把这找来的咒语输入,以为这样诅咒就能解除……结果,还是不行。问题依旧。
修复坏掉的东西会令人感到加倍沮丧,因为即使问题消失了,你也不知道是否解决了这个问题,或目前的效果是否是你所做的修改导致的。
不通过学习解决问题
我是个没有出息的懒鬼。当我试图用LaTex对一个图表做排版时,就不想去阅读长达391页的说明书,让我为了文档中的一个图表用十分钟读完一个391页的文档是不现实的。
从长远来看,选择快速的方法处理问题是个灾难。
拿制作文档来说,我就在TeX/LaTex、XSL-FO和我的ErlGuten之间犹豫不定。大约每三年一次,我都会有强烈的愿望想将自己所有的文档直接写在附录中,而后唯一做的事情却是深呼气,等待这种感觉消失掉。
我问过我的老板,他是否需要漂亮的幻灯片来演讲。他说需要,但要我明天之前给他。我权衡了需要时间去学习的几个方案,最终选择了PowerPoint。
恶劣的编程环境
有些工作场所的设计使编程更加困难,无隔板开放式办公室那嘈杂的环境,破坏了我们的注意力,移动电话的打扰,以及互联网都会分散我们的注意力。
幸运的是我们还有可去的地方,那就是睡觉。很多编程问题是在睡觉过程中解决的。
有两种方法:首先将考虑的问题记住,然后睡觉,第二天醒来一些问题就被解决了,很容易;
另一种方法是睡觉前在一些论坛或者用tweet发个帖子,第二天已经有人将解决方法发给你了。
做一名优秀程序员需要很长的时间,你需要学习很多东西,当遇到问题的时候,你需要知道向谁请教。
- 欢迎关注我的新浪微博:http://weibo.com/beyound507/ 并给我发送私信!
珍爱生命,请勿拍砖,转载请注明出处!
- 编程为什么困难
- 为什么ETL任务困难
- 为什么有些人活着这么困难
- 编程困难没思路
- 软件项目需求分析为什么困难?
- 软件项目需求分析为什么困难?
- 为什么使用计算机处理自然语言如此困难?
- 困难
- 困难
- 困难
- 困难
- Java性能监控应对编程困难
- 应对编程困难的JAVA小技巧
- .net的Membership,为什么就这么困难呢?
- .net的Membership,为什么就这么困难呢?
- 为什么软件项目的需求分析工作比较困难
- 设计模式入门--为什么学习设计模式会感到困难
- 为什么说改变一个开源社区是困难的
- hibernate一对多异常 ERROR: ORA-00904: "CITY0_"."AID": 标识符无效
- poj 3176 Cow Bowling(最简单DP题)
- tomcat 配置虚拟目录
- Java中常用的加密方法(JDK)
- Making a Plugin System
- 编程为什么困难
- 关于修真、法力、法术、武功等的介绍
- 循环buffer
- Android UI–Style 和 Theme
- 边缘方向直方图
- Intent其间传递复杂的对象
- android配置cocos2dx环境
- linux查看进程 ps 命令详解
- 如何判断智能手机的好坏