西西河

主题:【原创】编程随想 -- 代码ABC

共:💬17 🌺48 新:
全看分页树展 · 主题
家园 【原创】编程随想

编程是什么?

编程实际上是一种翻译工作。一种把用户需求翻译成机器代码的工作。

当然翻译本身是一种再创作过程,所以编程也是一种创作性的工作。

翻译要求“信、达、雅”,编程也有相应的要求。

“信”要求程序结果准确无误地满足需求,“达”要求设计在满足需求的条件下结构清晰、操作简便、容易上手,“雅”则是要求程序内涵,一个方便管理,再次开发的程序可以算是“雅”了。

正如一部好的翻译著作不常见一样,一个好的程序也不是很多。大部分情况下“信”就已经是一个难以逾越的鸿沟——“需求不清”是我们的开发过程经常听到的一句话(也许是最多的一句了)。

一点都不奇怪,翻译的时侯我们总有一件现成的目标——需求。我们可以担保这个目标不会改变,所谓的需求分析在语言翻译的时侯关键在于我们对原文的把握。然而软件的需求则不是这样,用户不一定了解自己的需求,或者了解但是不会表达。雪上加霜的是软件的需求总是从普通的语言表达开始的,我们使用的语言有大量的冗余。而计算机的语言则不存在任何冗余。一句不完整的话,我们可以通过上下文,甚至说话人的语气、神态了解其内涵。而一句语法有问题的代码则连编译都不能通过。所以需求的偏差将被代码放大!

为了解决这个问题,我们的前辈在无数次教训中总结了一系列的方法,这方面有大量的书籍文献。大致上是两个方面的内容:一套标准的描述语言或工具和一套管理方法。前者将大大减少了普通语言的歧义,比如我们使用时序图描述各对象的作用关系,用流程图描述一个过程的动作等等,这些就是所谓的分析方法。通过需求分析人员人工地将用户需求描述中的冗余通过分析方法和特殊的表达方式缩减,形成一种不懂计算机的用户和只懂计算机的设计人员都能明白的,歧义较少的语言。这种方式减少了语言歧义带来的问题,而由于不确定的需求造成的问题则由一套管理的方法来解决。希望通过管理的方法来控制过程中的不确定因素。人类用这种方法解决了几乎所有的问题(比如,战争这种极多不确定干扰的过程),。期望这种方法也能同样奏效。这就是软件工程范畴的内容了。

对于编码工作的程序员,我们可以不太关心这些。有需求就行了,哪怕再清晰最后还是要代码实现。当然更多的时候是:需求再不清晰,我们也要用代码实现,呵呵。

关键词(Tags): #编程#翻译元宝推荐:请尽量,

本帖一共被 2 帖 引用 (帖内工具实现)
全看分页树展 · 主题


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河