文学与编程.docx_第1页
文学与编程.docx_第2页
文学与编程.docx_第3页
文学与编程.docx_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

文学与编程卡尔维诺在哈佛大学的文学讲座(即诺顿论坛,是为纪念美国著名学者诺顿开设的,每年邀请世界文化名人作讲座,艾略特、博尔赫斯也曾获邀参加诺顿讲座)被他的妻子编成了一本独立的书美国讲稿。这本书展现了卡尔维诺的文学精神,体现了他的文学态度和气质。不过,我在阅读该书时,却发现了一些与编程有关的内容。1、文学中的重构达芬奇在大西洋草图中记述了他幻想中海怪的形象,进行了前后三次重构。最初的描述是:啊,人们多次在波浪翻滚的广阔海洋之中看到你,看到你那长满鬃毛的黑色背脊,你像一座大山,傲慢地徐徐前进!然后,他试图使海怪的行动生动些,加了个动词“翻转”:啊,人们多次在波浪翻滚的广阔海洋之中看到你,看到你在海水中傲慢地徐徐翻转身躯,看见你那长满鬃毛的黑色背脊。你像一座大山屹立在海浪之上!然而,他觉得“翻转”这个词削弱了他想留给人们的那种雄伟与庄严的印象,于是选择了“分开”这个动词,并改变了句子结构,使句子变得更紧凑,更有节奏。啊,人们多次在波浪翻滚的广阔海洋中看到你!你像一座山屹立在海浪之上。你傲慢地徐徐前进,用那长满鬃毛的黑色背脊把海水分成两半!在文学创作中,重构其实会经常发生,这源于作家对文学作品高质量追求的精益求精,他们常常通过修改句式,修辞手法或改变词语来改善文字,使之体现恰如其分的美。编码艺术同样如此,即使是代码的结构,以及变量、方法和类的命名,排版样式,只要给予足够的重视,锤炼这方面的技能,坚持重构,就能改善编码质量。2、封装与接口卡尔维诺在“精确”一章中引述了哲学家们对语言和外部世界关系的思考:使用语言是对事物的不断追求,不是渐渐接近事物的本质而是接近事物那无休止的变化,接近事物那多种多样的、无穷无尽的表面。正如霍夫曼斯塔尔所说:“深层应该掩盖起来。掩盖在哪里?掩盖在表层下面。” 维特根斯坦走得更远,他说:“凡被掩盖的东西,我们都没有兴趣。”在软件开发中,我们常常运用封装来隐藏内部的实现细节。它带来的好处是使得调用变得简单,重用成为可能,很好地隔离了内部实现的变化。当然,文学更善于挖掘内部的玄奥,却常常使用抽象的语言描述出一种晦涩,试图掩盖这种玄奥,以此追求一种寻找“高山流水”知音般心灵激荡的玄妙与浃肌沦髓。文学也尝试用变化去处理变化,这似乎矛盾,却恰好是文学艺术让人着迷的地方。软件又何尝不是如此。卡尔维诺看到了两种变与不变的模式:最近我偶然读到生物形成过程的模式:“一边是晶体(象征表面结构稳定而规则),一边是火焰(虽然它的内部在不停地激荡,但外部形式不变)。”火焰与晶体这两种形象代表了生物学上的两种选择。皮亚杰观点的哲学蕴含是“从噪音到有序”,即火焰;乔姆斯基观点的哲学蕴含是“自我编制系统”,即晶体。这仿佛让我洞悉了面向对象设计的玄机。火焰代表了接口,无论如何变化,其外部形式总是不变。接口的引入使得软件设计可以从混沌(即皮亚杰所说的“噪音”)走向有序。至于晶体,则是遵循了信息专家模式的对象,因为它封装了数据以及操作该数据的行为,使得它具有了自我判断的意识。它的表面结构仍然是稳定的,却有一套自我约束的规则。晶体看起来是宁静的,而火焰却如此的灵活。融合晶体与火焰的系统,是否代表了对变化的封装,以及对不变概念的抽象呢?3、纠缠的细节薄伽丘在一篇故事中(十日谈第六天第一个故事)谈到讲故事的艺术,正好回顾了这种感觉。“奥丽达太太,要是你不讨厌的话,我想讲一个世界上最大的故事给你听,叫你听得津津有味,就像骑了一匹马一样,忘了路途的遥远。”“啊,再好没有了,先生,”那位太太说,“请你快给我讲一个故事吧。”于是绅士开始讲故事给她听。故事倒很精彩,可惜他讲故事的本领,只抵得上他使用他身边那把佩剑的工夫,实在太不高明,时常把一句话颠来倒去的说了又说,甚至说上六七遍,过了一会,忽然又倒过头来说道:“哎呀,我说错啦!”对于故事中的人名地名常常纠缠不清,张冠李戴,弄得别人莫名奇妙。他那说话的声气又跟故事里的人物、情景一点都配不上,真是听得奥丽达太太头晕目眩,冷汗一身,只觉得大祸临头,连命都快要保不住了。到最后,她忍无可忍,又看见那位绅士正愈说愈糊涂,已经迷了路,失了方向,只是在那儿团团打转,再也跑不出来了,就和悦地对他说:“先生,你那匹马跑得太野,请你还是让我下了马吧。”在软件设计过程中,最要紧的是思路要清晰,既不能迷失在需求分析中,也不能迷失在复杂的实现细节中。最好能够结合实际的场景,列出我们要达到的目标,需

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论