作者reader (读者)
看板CSSE
标题Re: 关於这个板讨论的问题
时间Mon Jan 3 22:20:26 2005
※ 引述《CGary (烟霞)》之铭言:
: 看你用甚麽Scale来看待演算法...
: 对於我学习以来的观感, 演算法的确是程设的核心, 不, 应该说算是思考
: 的核心, 思考本身就是如何用"有效"的方法, 解决问题, 这就是演算法的
: 精神...
这个问题其实就是电脑科学和软体工程的分别。
电脑科学只能考虑「问题如何被解决」,而软体工程看见了「问题
需要被解决」,或者更明白地说:「需求必须被满足」。
是的,需求,没有人的需求就没有程式设计这件事。
人的需求是千变万化的,很可能是让软体看起来更漂亮、更有趣、
更好用、更快、更酷、更棒、更便宜,也可能是不要常当机、不要
出现错误的答案,甚至使用者自己都说不出来真正的需求是什麽,
看到东西他才知道那是不是他要的。
软体工程所要面对的,就是在这个不确定、馍糊、感性的世界里,
寻找坚实有效的方法满足需求。而在软体产业当中,有了答案才有
问题的状况,更是层出不穷,真正的创新往往是在问题没有出现、
需求没有被发现的情况下,展现出超越一般人想像范围的新应用。
从问题到需求到创新,真正激励人心,让前仆後继的才智之士投身
软体工作的,唯有创新。
如果不站在满足需求的立场上看待程式设计,并以此上求创新下解
问题,那麽,我们很可能会走入歧途,卡在语言与机器之间,穷经
皓首推求精微,反而失却当初喜欢程式设计的本源初心,也离开了
人心与义理所在。
: anyway, 除了演算法问题以外, 资料结构, 语言结构, 都算是程式设计很
: 重要的问题
: 虽然有些领域的东西, simulation甚至领先理论的研究, 但是演算法的确
: 是十分重要的核心关键, 这边讲演算法并不是只包含像是Quick Sort,
: Merge Sort这种制式Algorithm, 而是整套方法论
: 当你开始遇到一个问题时, 你总是很自然开始用一套方法解构这个问题,
: 然後开始让整个问题break down成所谓的function, 比如说你遇到一个
: 河内塔问题, 当你知道大概可以怎麽做之後, 你会开始选择撰写的语言,
: 然後开始针对需要的"变数"来设计, 接下来等等等的....
: 开始break down问题的方法, 就是在设计演算法, 所以我也是属於你所
: 不认同的网友唷:)
: 正统科班出身的, 大概到最後玩语言的方向, 不外乎都是这三种东西
: 演算法/计算理论/PL
: 资料结构
: 编译器
我喜欢也敬仰电脑科学的深奥幽玄,也曾浪掷青春费心探索,然而,
自己从未忘却,我是如何为世界的无尽苦难悲悯痛惜,从而关心社会
问题,最终理解到唯有沟通和发展才能真正解消问题,并认识到唯有
科技才是第一生产力,唯有资讯科技才能同时促进沟通和发展。
於是,我面对着电脑,实际上却还是在面对着人,日复一日的工作和
研究,忍受着没有尽头的孤寂,始终是为了众人而服务,为了文明的
进一步发展而努力。
当我要写程式时,首先面对的,不是问题,而是人。所要解决的,也
不只是个别的特定问题,更是人的需求和感受。
进一步来说,所有正规软体工程方法的开端,总是由定义需求开始。
需求的分析研究管理,远比程式设计的实作细节更重要,而在开发的
期间,软体配置管理 (SCM, software configuration management)
也始终会是一个关键性的重要课题,所有的一切,都围绕着「需求」
而走。
需求是不清晰的、不确定的、会变动的、会发展的,是现实的,也是
心理的,不是死板钉钉的一个个学术问题。
软体工程取代电脑科学,成为主导软体开发的指导知识,已达三十年
以上,其间的弊病问题以及有待发展的领域,仍然十分众多。特别是
在创新管理方面,更是接近一片空白。
然而,学校教育体系所教出来的学生,却往往对软体工程的认识十分
不足,知其然而不知其所以然,在观念上更往往以科学工作者自居,
重视解决问题而不重视生产和创新,出社会有着适应不良症状的比比
皆是,於是数十年来,主导当今软体工业发展的一群人,有许多都是
没念完大学的人,在知识高度密集的行业中,蔚为奇观,也不是毫无
因由的。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.222.173.26