ACM
ACM的意见

我不是一个真正的科学家,没关系


计算机科学是一门什么样的学科?当我获得学士学位时,我认为这是一门科学。在我获得博士学位的时候,我相信软件工程的子学科就是工程学。我曾经听到,并且将继续听到,“这不是我所知道的任何一种科学/工程学!”,来自物理学家和电气工程师。多年来我一直想证明他们是错的。但现在我认为他们是对的。

我见过很多人把计算机科学描述为多种学科的混合体:数学和电气工程,外加心理学,偶尔也会有像物理学(量子计算)和分子生物学(生物计算机)这样的异域领域。当然,计算机科学研究和实践从这些领域中汲取,但汲取不同于存在,甚至是被汲取。这些描述都没有击中要害。在我看来,我们最好将计算机科学视为哲学的一个分支。

科学美国人
查看全文


评论


奥斯曼El Moulat

我记得在90年代中期,我整合了大学的计算机科学专业学位。我有数学背景,花了两三年的时间学习数学;解决困难复杂的数学问题是我唯一的活动。有人告诉我,数学家是最早编写计算机程序的人,也是最好的人。因此,我带着一定的信心和平静来了,我相信作为一个软件工程师学生,我会做得很好。不用说,最初的三四个月让我非常沮丧。我在实验作业中写的计算机程序几乎都坏了。我的信心开始动摇了!
我记得在这个学期的某一时刻,我感到非常需要和我的导师谈谈。我告诉他:

“先生,在我来这里之前,我被告知软件编写只是在做数学。那么,为什么我能够解决复杂的数学问题,却不能编写正确的计算机程序呢?”

我的导师笑着告诉我:

“嗯,试着把一个计算机程序看作一个动态数学问题。所有变量和数据都在不断移动和变化的数学问题。之前,你学的是静态数学。现在你可以开始学习动态数学了!”

我承认这个建议帮助我开始从不同的角度思考计算机编程。然而,它并没有给我完整的答案。我觉得软件工程学科不能被轻易地归类为科学、工程、艺术或任何其他已知领域。事实证明,我不是唯一一个面临这种困境的人。最近我读了一篇Bruce Eckel的文章,他在其中声称编写软件就像写作一样。
虽然我同意布鲁斯在文章中的大部分观点;然而,我仍然倾向于相信软件不仅仅是写作。在我看来,这是一个复杂的混合学科,同时涉及纯科学、工程、艺术、写作,可能还有许多其他学科。对我来说,一个好的软件开发人员应该是一个男人中的许多人。他必须能够在不同的模式(学科)之间切换思维模式。在某些情况下,程序员应该扮演纯粹的科学家的角色。在其他情况下,他应该表现得像个工程师;而在其他时候,他必须像艺术家一样思考和感受。
我在ACM杂志(CACM, 2009年3月号)上读了一篇文章,作者是Peter J.Denning和Richard D.Riehle;他们也在抱怨:
“软件工程不是工程!”

他们指出:

软件工程可能会受到我们的习惯的影响,我们很少关注其他工程师是如何做工程的。”

他们在文章中提出:

“我们需要鼓励包括硬件和用户环境以及软件的系统思维。”

似乎每个学科的老手都在尝试调整软件编写,使其适合自己的领域。对我来说,我希望看到软件继续成为一个模糊和未定义的职业。正是这种默默无闻造就了这一领域的美。正是这种多学科、多技能、多层面活动的本质使得软件成为一门令人兴奋、丰富且不断发展的学科。


显示1评论

登录为完全访问
»忘记密码? *创建ACM Web帐户
Baidu
map