软件开发的哲学思考

软件开发的哲学思考
(2002.01.11)   来自:计算机世界   枣庄张伟 编译

译者注:这篇文章虽然年代久远(1996年写的,对于IT行业来说用'久远’二字应该说还是十分合适的),但读过之后还是为作者的才华所倾倒,这是不可多见的一篇文章。
卡内基-梅隆软件开发学院及其它学院的研究人员用尽毕生的精力去定义一个理论学科(即软件开发理论),到后来才发现仍有很多东西比较模糊,他们对此也不隐瞒。软件开发,自从产生以来,它以迷人的风采征服了许许多多有才华的人,一些教授、专家学者及商业管理人士不由提出这样一个问题:即然软件能迷住这么多人,为什么人类无法定义它、解释它,深刻地了解它?为什么一些天才的科学家穷其一生的精力也不能把这些迷惑归纳成一种科学工程学科或行业标准?
我们当中的大部分人,特别是商人、工程师及学术机构研究人员把计算机与软件看成一个非常普通的东西,他们用各种荒唐的方式同计算机交流,计算机对来自用户的威胁与谴责充耳不闻。软件无处不在,然而软件却常常表现为失败、罢工及不正常,这主要有两方面原因:一是程序失败,就会导致文件定义不准确,最后软件表现为罢工、不正常;二是一些软件开发主管胡乱指挥,逼迫软件应用一些华而不实的技巧来实现主管们不切实际的想法及美妙的空想。
缓慢的软件开发与互联网访问占用了人们大部分时间,尤为重要的是,这两方面在当代都容易使人上瘾。一旦上瘾,正常的人也会成为文件处理、文件上载及下载的奴隶,这种情况大都要归结为管理它的软件具有一定的缺点。这时不得不让人疑惑:我们能盖摩天大楼、能造速度很快的赛车及高性能电子产品,我们甚至能理解量子力学及亚原子,那为什么我们不能开发出高质量的软件?
【神秘背后的真相】
软件开发的本质就是基于人类思考的一种心智活动,计算机及运行其上的软件就是人类大脑活动的一面镜子,因此软件开发同样也面临心理学与精神学所固有的一些问题。众所周知,心理学的所有目的不外乎去了解人类难以捉摸的灵魂,一些医学专业人员研究这方面。软件开发与之相比,情况可能会更糟糕,因为软件开发毕竟只是人类智力活动的一个模型,它来自于人类的智力思考。不管你承不承认,智力活动只是灵魂行为的一部分。
从相当多的方面来看,软件与心理学的关系要比工程学、技术及数学的与心理学的关系要近的多,这是因为软件直接来自于人类灵魂的思索,上等的软件常常要借助于灵魂的创造性。与艺术相比,软件缺少了艺术之美;与自然科学相比,它缺少一点正规性。此外,软件永久只能是软件开发人员的心理模仿。

时间: 2024-08-19 19:04:41

软件开发的哲学思考的相关文章

艾伟也谈项目管理,我也发软件开发团队的思考(侧重点是人员)

//上个月给我们老板的mail.洋洋洒洒6000多字. //为了方便公开,改了一下.以致可能有些地方前言不搭后语. //不管他同意不同意,先在我们组实行了再说. //请多大家多提提意见,日后看有没有机会找老板当面交流 经历的几个项目,项目的进度老是不尽如人意.更重要的是市场的开拓因为这些项目拖住了后退而无所作为. 我们现有的情况是:项目期限和最开始的保守估计都相去甚远,最后提交给客户的产品60%都是最后一个多月开发出来的,还有20%左右是以前就固有的固定模块.这几个项目我参与了编码,我对整个系统

对软件开发的几点思考

1. 运维监控平台的设计 开发的几点思考-软件开发的思考"> 集群的运维监控,需要确保的是将发现问题,记录问题,报告问题,定位问题紧密结合,尤其是对问题的准确定位.在运维监控平台的设计.开发阶段确立准确定位问题的机制,可使系统能够记录问题出现的原始点,不至于在实际运维的过程中,某个问题出现后却很难排查,或者经过扩散传播引发新的问题,增加了运维人员的操作难度. 以目前主营电信增值业务的一些企业,其运维平台的开发人员与运维人员重叠度较高,再者其运维人员与开发人员定义不明确,或者运维人员培训不到

对软件开发道路的一点思考

上个周末软件学院组织学生去北京参观一些IT公司,我也在赴京的队伍中.我们一共去了三天,其中路上消耗了一天,所以实际在京时间只有两天.而在这短短两天时间里,我们先后参观了中国软件与技术服务股份有限公司.文思创新软件技术有限公司以及中国科学院计算技术研究所三所单位. 回来以后结合这次的参观和我之前一些零碎的想法,整理以后决定写这篇文章,也算是对之前的一些感悟作个总结吧.另外要强调的是,下文并不一定适合其它行业的同学. 一.对软件专业学生自身的要求 1.不要执着于高报酬 诚然,每个人都希望能有一份好工

《精益软件度量——实践者的观察与思考》—第1章1.1节精益软件开发的度量体系

第1章 度量谜题 精益软件度量--实践者的观察与思考 "我们所能拥有的最美好的经历是感受到神秘,它是触发所有真正艺术和科学起源的基本情感." 艾尔伯特·爱因斯坦(1879-1955) 按照IEEE的定义,"软件工程是将系统化.规则,以及可控的体系方法,应用于软件设计.开发.操作和维护:换言之,即工程理念在软件中的贯彻."1看上去很美,不是吗?当我们看到一个又一个软件开发组织,特别是大型的组织,特别是拥有辉煌历史的组织,把过程可控作为主要的管理目标时,一次又一次地惊讶

减少存储过程封装业务逻辑-web开发与传统软件开发的思维模式不同

  本篇文章讨论并不是:不要使用存储过程,因为有些事情还是要存储过程来完成,不可能不用.而是关于:"业务逻辑是不是要封装在存储过程中实现,这样子php.java等就是调用存储过程".   业务逻辑,通俗说就是:比如要取数据的操作,取出会员编号为x的数据,原来我们一般是封装成函数,或者直接编写sql语句查询.现在是交给数据库的存储过程去完成. +------------------------------------------------------------            

在软件开发领域中代码审查是好事还是坏事

在软件开发领域,代码审查看起来是一个少有争议.相当平和的话题. 主流观点普遍认为代码审查是个好东西.有些公司或组织甚至强制要求把代码互审作为必须的流程. 审查是一种捕捉bug和问题的好措施.通过代码审查能够分享领域知识,提高代码质量.代码审查提供了一个对团队进行监控,教育和强化的好机会. 至少理论上是这样的- 当挽起袖子开干,当面对真正的项目计划产生的压力时,代码审查很有可能转而变成一件坏事. 审查是一种能够导致憎恨和分裂的活动.它能使人对编写的代码是否正确产生怀疑,会激起人们为他们自己的编码标

关于“软件开发”,“工程师文化”,“团队管理”

 分享一下 weibo@左耳朵耗子 陈皓的"建一支强大的小团队"报告内容,挑选了几点. 人物介绍 行业背景 :金融行业(Thomson Reuters) ,计算平台(Platform),电子商务(Amazon)  技术背景 : C/C++/Java,Unix/Linux/Windows ,Web  个性:码农兼包工头 ,敏捷恐怖分子 ,Unix/Linux/C/C++脑残粉 ,"技术部门无技术种族"歧视者 ,程序员文化民族主义者  陈皓是酷壳coolshell的博客

敏捷模型驱动开发(AMDD):攀登敏捷软件开发的关键

Agile Model Driven Development (AMDD): The Key to Scaling Agile Software Development 敏捷模型驱动开发(AMDD):攀登敏捷软件开发的关键   Table of Contents 目录 Overview 概述 Envisioning 展望 Initial agile requirements modeling 初始化敏捷需求建模 Initial agile architecture modeling 初始化敏捷架

Google 极客谈软件开发团队的不良行为

开发团队是一个整体,稳定的.沟通无碍的团队文化非常重要.好的文化氛围应该包括基于共识决策的开发模式.高质量的代码.代码审查,以及能让人放心尝试新事物或者快速失败的环境.Brian和Ben是Google的两位开发主管,他们在"极客与团队"中列举了软件开发团队的典型不良行为,提醒开发者时刻保持警惕,并提出了一些实际的解决办法. Brian和Ben指出,团队的注意力和专注力是最容易受到威胁的.团队规模越大,编写软件和解决有趣问题的能力就越强-不过这种能力毕竟是有极限 的.要是你不去主动保护它