acm-header
登录

ACM通信

资讯科技行业

关于计算机科学的误解


关于计算机科学的误解,插图

图片来源:Andrij Borys Associates / Shutterstock

当我们中的许多人还在学校的时候,我们被赋予了计算机科学的定义,如“研究信息过程及其转换”或“研究计算机周围出现的现象”。但是当我们进入专业实践的世界时,我们体验计算机科学的方式与这些抽象的定义完全不同。

在我们的专业世界里,我们获得一份工作的能力取决于我们在使用计算方法和工具解决雇主感兴趣的问题方面显示出的能力。我们必须能够在飞行中创建小的应用程序,不需要比写一个便利贴更多的努力。我们发现,我们的客户可能对我们的工作满意,也可能不满意,我们的专业发展依赖于不断扩大的满意客户的遗产。我们发现,随着时间的推移,我们变得熟练,我们的同事和老板要求我们解决越来越复杂的问题。我们被无法预测的意外和意外所困扰,没有在学校或我们之前的经验,但我们必须有效地处理它们。

例如,当前深度学习AI技术的激增带来了许多好处,为数据分析师和软件设计师创造了高薪的新工作,他们将一些脑力工作自动化。这些技术正在永久取代过去手工完成这些工作的工人。本专栏的许多读者都是收入颇丰的设计师,但即使是他们也担心,技术的意外可能会让他们一夜之间失业。我们的互联网技术促进了劳动力的全球化,提高了世界各地的生活水平,但也刺激了反移民、反贸易情绪的反弹。我们的互联网技术也发展出了阴暗面,包括黑客、数据和身份窃贼、骗子、两极分化的网站、恐怖分子等等。为了帮助我们应对所有这些变化和变动,我们将自己组织成由ACM、IEEE和其他机构主办的数百个专业专业小组。

由于计算机与许多领域密切相关,一场名为“全民计算机教育”的教育运动应运而生,其目的是在每个人的K12教育或专业发展中包含一些计算机知识。

我们注意到,CS for All运动并不提倡每个孩子都应该为了成为专业程序员或软件工程师而学习编程。计算职业的增长速度预计将高于所有其他STEM领域的总和。据估计,超过770万美国人在工作中以复杂的方式使用计算机,其中近一半的人从事的领域与STEM没有直接关系。一个不管他们的职业是什么,许多专业人士都会在工作中使用计算机科学。

在这场运动中,我们与许多人密切合作。他们遇到了许多关于计算机科学的误解,包括他们试图接触的受众和他们自己之间的误解。这些误解可能会导致无法实现的期望,例如,毕业生认为他们所学的知识将帮助他们找到并保持好工作,或者雇主期望毕业的专业人士能为他们做什么。这些误解还会干扰从业者在计算的现实世界中有效导航的能力。我们在这里的目的是要指出这些误解中最有害的9个,并呼吁我们的专业同事努力消除它们。

c =编程。编程是计算机科学的核心活动这一观点很容易被接受,但它只是部分正确。计算机专业人员应该会编程。但是计算专业人员还从事许多其他重要的活动,如设计软件和硬件系统、网络、数据库和应用程序。编程(编程的一个分支)打开了许多职业机会的大门,这一想法引起了公众的兴趣,因为“编程一小时”、男孩和女孩的课后编程俱乐部和编程比赛的成功宣传。

这种误解并不新鲜。它在20世纪70年代生根发芽,多年来不断受到挑战;例如,ACM和IEEE在20世纪90年代花了相当大的努力将其连根拔起。7除了编程,ACM/IEEE最新的大学课程还包括了17个计算技术领域。2即使将计算浓缩为其核心科学和工程原理,它仍然是一个编程无法主导的巨大领域。4新的大学先修课程CS原理b反映了高中高年级学生对计算机科学更广泛的看法。Code.org的K12的课程体系c涵盖的内容远不止编码。然而,“学习编码”运动似乎为你提供了许多高薪工作的快速途径,在你通过密集的训练营和讲习班之后。当你在面试中发现雇主看重的不仅仅是编程能力时,关键时刻就来了。

编程涉及将问题的解决方案表示为语言中的符号。程序的目的是控制机器,而不是为程序员提供一种算法自我表达的手段。从19世纪40年代Ada Lovelace的示例程序开始,编程一直关注的是向机器发出指令,使机器产生预期的效果。编程语言是一种用来对算法进行编码的符号,当算法编译成可执行代码时,就可以对机器进行指令。

计算机科学家早就明白,每一种编程语言(“语法”)都与抽象机器(“语义”)相关联。由编译器和操作系统在真实硬件和网络上模拟的机器执行程序中编码的算法指定的工作。高级程序员走得更远:他们设计新的抽象机器,更适合需要解决的问题类型。认为程序只是表达式的符号的想法与程序控制机器这一基本现实完全脱节。

最近的一个例子就是版权所有者为阻止解密软件的发行而进行的法律斗争。如果解密软件仅仅是一种表达手段,它就会变得毫无意义。但当该软件在机器上运行时,会破坏复制保护。


程序员要经过很长一段时间才能从初学者变成专家。被广泛宣传的儿童程序员大多是初学者。


一旦你掌握了一个核心知识库,包括变量、排序、条件、循环、抽象、模块化和分解,你将成为一个计算专业人员。遗憾的是,这是对计算机专业人员需要知道的内容的不完整的描述。列出的概念都是编程概念,而编程是CS的一个小子集。上市的概念在20世纪60年代和70年代,编程是计算机的主要接口。今天,你只是不能做一个有能力的程序员,但在系统、体系结构和设计方面没有什么技能,对软件将要使用的领域也没有什么知识。

编程很容易学。编程和编码是技能集合。程序员可以在很长一段时间内从初学者变成专家。要达到更高的阶段,需要越来越多的练习和经验。精通实际应用程序的编程并不容易。被广泛宣传的儿童程序员大多是初学者。

多年来,教育工作者一直在寻找加速学习编程的方法。Seymour Papert在20世纪70年代引入了Logo语言,并观察到孩子们是如何对计算感到兴奋并学会如何计算思考的。他使Logo符合孩子们的兴趣;即便如此,学生们仍然需要花时间从入门的迷恋到定期编写有用的计算程序的能力。

计算思维是编程技能的驱动力。计算思维(CT)是计算机科学中一个古老的概念,最早由Alan Perlis等先驱在20世纪50年代末讨论。8Perlis认为“算法化”将会成为每个领域的一部分,因为计算已经进入到自动化过程中。Dijkstra意识到他在编程过程中学习到了新的心理技能(1974)。在他1980年的书中头脑风暴,在讨论儿童在《Logo》中编程时发展的心理技能时,Papert第一个明确提到CT这个术语。珍妮特·温(Jeannette Wing)促成了一场关于计算机科学以外的人如何从学习计算中受益的讨论。8通常的思路是CT是结果学习编程。

现代版本的CT故事颠覆了这一观点,声称CT是一种驱动编程技能的知识集。一个在解释和说明抽象和分解的测试中取得好成绩的学生仍然可能是一个不称职或迟钝的算法设计者。学习这项技能的唯一方法就是练习许多小时直到你掌握它。最新的CSTA指南试图抵消这种颠倒的说法,强调在竞赛和项目中展示编程技能。d

因为计算已经入侵了如此多的领域,因为这些领域的计算设计人员有了许多新的发现,一些人假设CT是最基本的一种思维,超过了其他所有的思维,如系统思维、设计思维、逻辑思维、科学思维等。这是计算沙文主义。没有证据表明CT比其他类型的思维更基本。

当我们从事日常的循序渐进的程序时,我们在思考计算。日常的循序渐进程序使用“步骤”一词来泛指一个人的孤立行动。step的意思和机器指令完全不同;因此,大多数“人类可执行食谱”不能由机器实现。这种误解实际上导致了人们对算法的误解,从而高估了机器的能力。

生活中的循序渐进的过程,如食谱,并不满足算法的定义,因为不是所有的步骤都是机器可执行的。仅仅因为人类可以模拟一些计算步骤,并不会改变对机器执行这些步骤的要求。这种误解破坏了算法的定义,并教会人们关于计算的错误东西。

计算思维提高了其他领域解决问题的能力。这个古老的说法被称为“转移假说”。它假设一种思维技能只要出现在大脑中就会自动转移到其他领域。如果这是真的,它将彻底改变教育。教育研究人员研究CT自动转移已经有三十年了,但从未能够证实它。6另一方面,也有证据表明,过于相信一种思维方式会使你成为一个更糟糕的问题解决者,而不是接受多种思维方式。

另一种形式的转移——设计好的转移——更有希望。非计算机科学领域(如生物学)的教师可以通过展示编程在该领域是如何有用和相关的,从而将计算思维带入他们的领域。换句话说,仅仅学习计算机科学不会让你成为一个更好的生物学家。你需要学习生物学才能做到这一点。

计算机科学基本上是科学和数学。制造这种技术所需的工程都是基于科学和数学。历史告诉我们,事实并非如此。电气工程师在不了解任何计算机科学的情况下设计和制造了第一台电子计算机。他们的目标是利用电路中的电子运动来执行逻辑运算和数值计算。程序通过打开和关闭门来控制电路。后来的科学家和数学家给计算带来了严格的形式化和实验方法。为了弄清楚什么可行,什么不可行,工程师们进行修补,科学家们检验假设。在许多计算领域,工程先于科学。然而,工程师和科学家都为一个充满活力的计算职业做出了贡献:他们彼此需要。

旧的CS已经过时了。计算机科学的重要发展,如人工智能和大数据分析都是最近才出现的。计算技术在技术中是独一无二的,因为它在单个芯片、系统和经济级别上保持指数级增长(摩尔定律)。3.因此,似乎计算机技术不断地促进社会、经济和政治的剧变,而且它每隔十年左右就会自我淘汰。许多熟悉的CS原则在20世纪50年代和60年代被确定,并在今天继续相关。早期的计算机科学塑造了我们今天所处的世界。我们的历史告诉我们什么有效,什么无效。CS=编程这一信念的复活说明了那些忘记历史的人是如何重复历史的。

人工智能是计算机科学的一个古老的分支领域,始于20世纪50年代初。在最初的30年里,人工智能追求的是智能机器的梦想。当他们甚至无法接近实现梦想时,他们放弃了基于规则的AI系统,转而转向专注于自动化简单思维任务的机器学习,而不是一般的智能。他们能够基于神经网络构建令人惊叹的自动化系统,而无需试图模仿人类的大脑过程。如今的人工智能在神经网络模型方面非常成功,在某些脑力任务上做得比人类好得多,以至于我们现在正面临由人工智能驱动的自动化导致的失业等社会混乱。

回到顶部

结论

我们欢迎对计算机科学及其思维方式的热情。作为专业人士,我们需要小心,不要在我们的热情中娱乐和传播对我们的领域的误解。我们不要让别人过度推销我们的领域。让我们培养我们能够实现的期望。

回到顶部

参考文献

1.改变方程。隐藏的一半。博客文章。(2015年12月7日);http://changetheequation.org/blog/hidden-half

2.计算机科学课程2013;https://www.acm.org/education/CS2013-final-report.pdf

3.丹宁,P.和刘易斯,T.G.计算增长的指数定律。Commun。ACM 601(2017年1月)。

4.丹宁,P.和C.马泰尔。伟大的计算原理。麻省理工学院出版社,2015年。

5.丹宁,P.J.等。计算机作为一门学科。Commun。ACM 32(1989年1月),923。

6.Guzdial, M。以学习者为中心的计算机教育设计:全民计算机研究。Morgan-Claypool, 2015年。

7.Tedre, M。计算机科学:形成一门学科。CRC出版社,泰勒和弗朗西斯,2014年。

8.泰特雷,M.和丹宁,P.J.计算思维的长期探索。在16届会议记录th科利计算机教育研究召集大会(2016年11月2427日,芬兰科利),120129。

9.计算思维。Commun。ACM 49(2006年3月),3335。

回到顶部

作者

Peter j .丹宁pjd@nps.edu)是计算机科学特聘教授和加州蒙特利海军研究生院Cebrowski信息创新研究所所长,是ACM的编辑无处不在他是ACM的前任总裁。作者在此表达的观点不一定代表其雇主或美国联邦政府的观点。

马蒂·Tedrematti.tedre@acm.org)是瑞典斯德哥尔摩大学计算机与系统科学副教授,东芬兰大学兼职教授,著有《计算机科学:形成一门学科(CRC出版社,泰勒和弗朗西斯,2014)。

帕特Yongpraditpat@code.org)是Code.org的首席学术官,并担任K12计算机科学框架开发的员工领导。帕特曾是一名高中计算机科学老师,在这本书中有特写,《美国教师:教室里的英雄被公认为微软全球创新教育家,并在生物、物理、数学、健康和技术教育方面获得认证。

回到顶部

脚注

一个。https://advancesinap.collegeboard.org/stem/computer-science-principles

b。https://code.org/educate

c。http://www.csteachers.org/?page=CSTA_Standards

d. K12的一项课程建议实际上引用了制作花生酱和果冻三明治作为算法的例子。


版权归作者所有。

数字图书馆是由计算机协会出版的。版权所有©2017 ACM, Inc.


没有发现记录

登录为完全访问
»忘记密码? »创建ACM Web帐号
文章内容:
Baidu
map