您的位置:首页 > 其它

软件是什么?科学还是艺术,亦或工程?

2008-05-14 14:41 190 查看
  真正开始接触软件之前,一直对软件没有太大的概念 ,仅仅认为软件是程序,哪天我能写出像优化大师那样的软件就好了,后来学习了java半年之后,开始觉得 软件是个工程,特别像建筑工程,看到一本UML书中的开篇一句话,大致意思是程序只是盖狗窝,而软件则是在建筑一座大厦,我对软件的工程性的越来越有感觉。

  之后,开始接触设计模式,那时候开始觉得软件是门艺术,而程序员,则是艺术的创造者,是创造美的载体。联系到之前对软件工程性的认识,以前设计模式最初也来自于建筑专业,觉得好的程序员就像是建筑的设计师。

   这样的想法一直持绪很长时间。直到有一天,我去参加 上海屹通的一次面试 ,跟一个里面的一个前辈 聊天,他告诉我,软件是一门科学,包括设计模式。科学和艺术的分别在于科学的东西可以复制,可以产业化,艺术不可以,其实他的话,当时 并没有改变我的想法,但让我第一次开始思考,软件 到底是科学还是艺术,我到底从事的是个什么行业?

再后来,我看到了 《人月神话》 这本,保持 了30年畅销量的“神话“。上面讨论了建筑工程与软件工程的相似和不同点,大致说来,相对建筑几千年的发展来说,软件行业太年轻,其中的根本困难如复杂度,可变性至今制约着软件的发展。 此时,我才较为真切的认识到了二者的区别,相对软件,建筑的状态没有软件这么复杂,需求的变化也没有软件大(这可能与建筑的变动成本巨大有关)。软件可借荐的成功经验比建筑要少的多……

  直到前段时间当我再次拿起 代码大全 这本书,看到里面对软件构建的详细的论述,细到对每个变量的命名,每个类该有多少个方法,每个类该与多少个类相关联 ……我才发现 软件不纯粹是科学也不纯粹是艺术。gof的设计23个设计模式 本身只 是软件行业做了几十年从中提取的成熟的被证明是正确的方法 用以解决一些特定的问题。设计模式 可以 模式可以用以产业化,让我们每个人都学会用这些模式,来优雅地解决前辈们曾经遇到过的相同 的问题。这一效果沿用 屹通那们前辈的话,大家都可以用,叫科学。 然后 重读设计模式后,我更进一步的了解到,gof 对软件的最大贡献并不是仅仅提出或收集了几个模式,而是提出了一套较为完善的 发现和记录模式的方法 ,如果可以 你也可以发现或创造模式。这才是最重要的,发现模式的过程不是每个人都可以做的,可以定义为艺术,所以 软件包括科学,也同样包括艺术性。

   把 M.F《重构 改善既有代码的设计》拿起来,觉得中间的手法很多是如此锁碎,重读了候捷做的序,“这本书的最大价值,除了呼吁人们对软件质量的追求态度,以及重构工程性的认识 ,最终最重要的价值还在于,建立我们对于 目前和未来的自动化的重构工具的基本理论和 实现技术上的认识和依赖……重构借由搬移,提炼,打散,凝聚,改善事物的本质” 这段序言读了几遍,联系上 代码大全 里面对软件构建过程中谈到的设计艺术或者科学,我脑中突然 想到的 米开朗基罗在雕刻《大卫》的场景,一锤一打之间,一个作品形成 了。是的,这时我想到了 ”工艺“ 。只是软件这个作品比较大,比较复杂,以至于难以管理,但在软件构建的层次上 其确实具有工艺的成分在里面。

  软件是复杂的,可变性大,不可见性,必须采取工程的方法去管理的 工艺。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐