编程是一门艺术吗

编程是一门艺术吗

ID:9110648

大小:12.43 KB

页数:3页

时间:2018-04-18

编程是一门艺术吗_第1页
编程是一门艺术吗_第2页
编程是一门艺术吗_第3页
资源描述:

《编程是一门艺术吗》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、编程是一门艺术吗?  英文原文:IsProgramminganArt?  仅仅使用软件的人们通常意识不到编写软件有多么困难。噢,设计部分和最初开发部分都很有趣。最困难的部分是使其正确运行(且运行速度足够快)。对于程序员而言,这就好比一餐开始时是美味的双层牛奶巧克力咖啡干酪饼,而结束时却是菠菜奶油沙司。  之所以说编程仍是一门艺术而不是一门科学或工程学科,是因为我们还不能将其分解成多个组成步骤,而后机械地进行。一旦我们在此方面获得成功,在某种程度上就会出现一种新的可能性:在编程时采用以人为本的设计语言(PODL)编写程序

2、,通过编程来证明程序的正确性以及分析和支持语义查询。然而到那时,编程依然是一门艺术,也就是其中含有那么多传统智慧。  但是,如同许多传统智慧一样,此类比经不起进一步推敲。事实上,编制程序(我干这行已经有20多年了)根本一点都不像艺术——至少不像写小说(我干这一行也已经有20多年了)那样的艺术。让我用两个片段(一个程序片段和一个散文片段)来说明我的观点吧。  第一个片段是一个用于分析VisualC++®7.1的词法分析程序的一部分。该片段如下所示:if(index>=TokenID::lastKeyword()){str

3、ingtoken=tokenString(index);if((isdigit(token[0]))

4、

5、(token[0]==‘-’)){#ifdefTELL_MEdisplay("!!TokenSet::tokenIdentify:","文字数字:",token);#endifreturnTokenID::TK_Literal;}}if(index>=TokenID::lastKeyword()){stringtoken=tokenString(index);if((isdigit(token[0]))

6、

7、(toke

8、n[0]==‘-’)){#ifdefTELL_MEdisplay("!!TokenSet::tokenIdentify:","文字数字:",token);#endifreturnTokenID::TK_Literal;}}  第二个片段是我在大约27年前所撰写的一个故事的开头,那时我居住在亚利桑那州的图森市,从事散文教学和创作:Wewereherprideof10,MissStewardnamedus:theProdigal,Phoenix,Benjamin,andperspicacious,pacificSuzann

9、e.Hush,child.Benjamin,bestill,MissStewardcommandedhimgently.Peopleareneverjust.  两个片段都经过了精心设计——也就是说,我预先花费了大量时间来设计整个工作的体系结构,而且这些片段反映了我所付出的设计努力。该程序有一个性能缺陷——我是按值而不是按指针在关联的字符串表中检索字符串条目的。如果将该代码投入生产,则很明显需要进行修订。这与正确性无关,而只是与性能有关。对于较小的源代码程序,速度上的差异不可测量,因此我选择了更简洁但更慢的对象语法,因

10、为我不喜欢C/C++的指针操作标志。  尽管我的散文没有吸引数百万读者,但那些确实阅读散文的人都很欣赏其在严格的符号框架下编织情感的巧妙方法。那些不欣赏散文传统的人认为它故弄玄虚,因为它毫无作用。艺术的目的是以特定的可塑性媒体(对于散文而言就是词语)在公共事件中反映出个人感情以及个人私生活的真实性。当然,它不像程序那样具有与生俱来的内在价值。  我喜欢程序的设计过程,喜欢弄清楚程序的不同部分是如何相互作用的。我喜欢定义抽象或抽象族。我将其视为自己的人物塑造。并且,我喜欢编制接口,因为它们就是我的人物彼此之间所做的事情。

11、这其实就是我编写程序的方式。  我不喜欢编写表达式和语句。我希望我们能有一种符号式编程语言,这样我就能够更好地用其进行思考并将其记在我的脑海中了。坦白地讲,我无法使算术表达式和括号嵌套保持清晰。尽管我能记住八个单独的文本部分,对其进行对比和回显,但我搞不清楚在我所设计的类及其接口之外的程序的意义。  在JohnMarkoff所著的PC行业大事记《WhattheDormouseSaid》(睡鼠述)中,他声称最初幻想家使人人都能够支配计算机的目标已经实现。但是他错了。该目标仅实现了一半。如果一个人本身不会编程,怎么能说该人

12、已拥有了计算机的全部威力?我们还没有实现他们的梦想,因为我们还未弄清楚如何将编程变成一门艺术,以使人人都能够分享它。在我们实现此目标之前,编程仍旧既不属于学科范畴,也不属于艺术领域。目前,编程只不过是一种新式“炼金术”。没有人能真正理解它,也没有人能将规范变成真金。  StanleyB.Lippman从1984年开始在Bell实验

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。