编程之道(四)

第四篇  编码
    编程大师如是说:
    "一个写的完美的程序是其自身的天堂,而一个写得糟糕的程序则是其自身的地狱。"
    4.1
    一个程序应当是轻盈的、灵活的,它的子程序就像一串珍珠一样连接着。它的精神和意图应该贯穿始终。在程序中,内容既不应太多,也不应太少;既不该有不需要的循环结构,也不该有冗余的变量;既不缺乏结构性,又不过分僵化。
    一个程序应当遵循”最少惊呀原则”。这条原则是什么呢?简单地说,就是批一个程序对用户的指令所做出的反应,应该总是使用户最小程度的惊讶。
    一个程序,无论多么复杂,都应该以一个整体的方式运行。程序应以其内在的逻辑为指引,而非外在的形态。
    如果一个程序不能达到这些要求,它将处于一种杂乱无章和混淆不清的状态。唯一的更正方法就是重写这个程序。
    4.2
    一位初学者问大师:”我有一个程序,时灵时不灵。我一直都遵循的编程的规则,结果却整个儿搞糊涂了。这是什么原因呢?”
    大师回答说:”因为你没有领悟道,所以你迷惑不解,只有傻瓜才会指望从人类身上看到理性的行为,你又能打望一台人类制造的机器怎么样呢?计算机模仿的是决定论,只有道才是尽善尽美。
编程用的那些条条框框式的规则仅仅是昙花一现,只有道才是永恒的。因此,在你受到的启发之前,你必须沉思于道。”
“但我怎样才能知道我已经受到启发了呢?”初学者问。
“当你的程序运行无误时。”大师回答说。
    4.3
    一位大学正在向他的一名初学编程的弟子解释道的真谛。”此道体现在所有的软件当中----不管它看上去多么无足轻重。”大师说着。
    “此道体现在手掌计算器中吗?”初学者问。
    “是的。”
    “此道体现在电子游戏中吗?”初学者继续问。
    “此道甚至也体现在电子游戏中。”大师说。
    “那么此道体现在个人电脑的DOS系统中吗?”
    大师轻咳一声,并稍稍挪动了一下位置。”今天的课就到这里吧。”他说。

时间: 2024-12-21 20:31:21

编程之道(四)的相关文章

准备充分了嘛就想学函数式编程?(第四部分)

本文讲的是准备充分了嘛就想学函数式编程?(第四部分), 想要理解函数式编程,第一步总是最重要,也是最困难的.但是只要有了正确的思维,其实也不是太难. 之前的部分: 第一部分, 第二部分, 第三部分 柯里化 如果你还记得第三部分内容的话,就会知道我们在组合 mult5 和 add 这两个函数时遇到问题的原因是:mult5 接收一个参数而 add 却接收两个. 其实只需要通过限制所有函数都只接收一个参数,就可以轻易地解决这个问题. 相信我,这并没有听起来那么糟糕. 我们只需要来写一个使用两个参数,但

触摸云端编程之道——基于函数计算的serverless应用开发

摘要:本文的整理自2017云栖大会-南京峰会上阿里云存储服务高级专家杨皓然的分享讲义,讲义主要介绍了基于函数计算的serverless应用开发的相关内容,从计算的新需求和计算的演化过程谈起,对比传统计算所面临的困境介绍了函数计算所具有的优势,并介绍了函数计算的使用流程和应用示例. 在2017云栖大会-南京峰会上,阿里云存储服务高级专家杨皓然做了题为<触摸云端编程之道--基于函数计算的serverless应用开发>的分享.在有明显波峰波谷特征的场景下,用户期望更低成本.更弹性的计算服务,而且软硬

艾伟:基于.NET平台的Windows编程实战(四)—— 数据库操作类的编写

本系列文章导航 基于.NET平台的Windows编程实战(一)--前言 基于.NET平台的Windows编程实战(二)-- 需求分析与数据库设计 基于.NET平台的Windows编程实战(四)-- 数据库操作类的编写 基于.NET平台的Windows编程实战(五)-- 问卷管理功能的实现 基于.NET平台的Windows编程实战(六)-- 题目管理功能的实现 大家都知道本系统的正常运行少不了数据库操作这一块,且其在本系统中具有决定性作用,可以说没有它的操作系统将无法运行,故在本节课程中,专门把针

艾伟_转载:基于.NET平台的Windows编程实战(四)—— 数据库操作类的编写

本系列文章导航 基于.NET平台的Windows编程实战(一)--前言 基于.NET平台的Windows编程实战(二)-- 需求分析与数据库设计 基于.NET平台的Windows编程实战(四)-- 数据库操作类的编写 基于.NET平台的Windows编程实战(五)-- 问卷管理功能的实现 基于.NET平台的Windows编程实战(六)-- 题目管理功能的实现 大家都知道本系统的正常运行少不了数据库操作这一块,且其在本系统中具有决定性作用,可以说没有它的操作系统将无法运行,故在本节课程中,专门把针

编程之道(完全小赵译版)中辑

4.1 A program should be light and agile, its subroutines connected like a strings of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little nor too much, neither needless loops nor useless varia

3D编程:第四章 Hello,Shaders

第四章 Hello,Shaders 本章,会编写第一个shaders.介绍HLSL语法,FX文件格式,数据结构等等.学完本章,你就具备了深入学习图形编程的基础知识. Your First Shader 使用一种新的编程语言编写第一个程序时都会使用经典的编程例子"Hello,World!",程序输出就是一行文字"Hello,World!".我们遵守这一历史悠久的传统,编写第一个shader程序"Hello,Shaders!",但是这次的输出是一种固

Python函数式编程指南(四):生成器详解

  这篇文章主要介绍了Python函数式编程指南(四):生成器详解,本文讲解了生成器简介.生成器函数.生成器函数的FAQ等内容,需要的朋友可以参考下 4. 生成器(generator) 4.1. 生成器简介 首先请确信,生成器就是一种迭代器.生成器拥有next方法并且行为与迭代器完全相同,这意味着生成器也可以用于Python的for循环中.另外,对于生成器的特殊语法支持使得编写一个生成器比自定义一个常规的迭代器要简单不少,所以生成器也是最常用到的特性之一. 从Python 2.5开始,[PEP

PHP 高级编程之多线程(四)-多线程与ZeroMQ

PHP 高级编程之多线程 http://netkiller.github.io/journal/thread.php.html Mr. Neo Chen (netkiller), 陈景峰(BG7NYT)     中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890 +86 755 29812080<netkiller@msn.com> 版权 2011, 2012, 2013, 2014 http://netkiller.github.io 版权声明 转载请与作

人月神话blog:编程之道和编程之禅摘录

对于聪明的人,只要一个字:对于快马,只要轻轻一鞭:对于写得好的程序,只要单独的一个命令. 设计一个千百万程序的操作系统很容易,要改变一个人的本性却困难得多. 开发前面的百分之九十需要一半时间,而另一半时间则用来完成最后的百分之十. 项目计划和公布的时间表,本身毫无意义.那些日期和项目进展的里程碑本质上不意味着什么.然而有一个秘密的时间表,它被所有工作于一个项目的人所理解.这个秘密的时间表从未被外界的关注所愚弄,也从未被操纵以迎合市场的方案.这个秘密的时间表总是被遵守,因为它反映了所有开发部成员之