我一直在思考我们周围越来越多的可编程设备和电器的影响。首先,它们都需要软件才能运行。谁来编写所有这些软件?当然,大部分软件只是相同代码的副本,所以我们不需要为500亿台设备中的每一台编写不同的软件。另一方面,其中一些移动设备将是通用平台,就像世界上许多人所携带的那样。它们支持数十万个特殊用途的应用程序。
35年前,Dan Bricklin和Robert Frankston开发的VisiCalc引发了类似的软件扩散。这个电子表格程序将Apple II台式电脑从一个业余爱好者平台转变为一个商业工具平台。从字面上看,成千上万的人——如果不是数百万的话——学习编写电子表格程序。编写电子表格的人不必是专业程序员,也不必拥有计算机科学或电子工程学位。此外,其中一些电子表格程序过去和现在都非常庞大和复杂。VisiCalc已经被更强大的电子表格编程平台所取代,但关于大量电子表格程序员的主要观点仍然有效。几乎任何人都能学会编写简单的电子表格。
移动应用程序属于类似的类别,尽管它们通常要求更复杂,即使是相对简单的情况。编程环境大大降低了复杂性。实际上有几十种编程工具、软件开发工具包和移动模拟器可用于帮助开发移动应用程序。对于依赖浏览器来解释和执行应用程序代码或与云中服务器交互的基于web的程序来说,情况也是如此。在不忽略编写移动、平板电脑和笔记本电脑应用程序所需的工作的情况下,似乎可以公平地观察到,许多这些程序都是由自学成才的程序员或至少是那些可能没有获得软件相关学科正式学位的程序员编写的。
在这些方便编程的应用程序的基础上,许多软件严重依赖于有经验的、熟练的、通常受过正规教育的软件开发人员。云的所谓“仓库计算”依赖于一些最复杂的操作系统、应用程序平台和网络软件。支持移动设备、笔记本电脑或台式机的操作系统同样是由极具才华和经验的软件开发人员进行复杂编程的产品。
我在过去曾写过关于松散耦合系统的概念以及标准在其操作中所扮演的重要角色。同样的原则也在这里发挥作用。底层操作系统、软件开发工具包和网络设施依赖于标准协议和应用程序编程接口来隐藏复杂性,并允许程序员专注于应用程序,而不是过多地关注应用程序运行所需的所有基础设施。有人观察到,编写难以使用的软件很容易,编写易于使用的软件很难。同样的概念也适用于软件开发环境,使大量用户能够生产他们自己的软件。最有利的软件开发环境需要大量的编程工作。
有趣的是,这条推理线让我相信,每个人都会从接触某种形式的编程中受益,只要能体验到让可编程设备做一些事情的那种思考。这就是ACM如此积极地在中学推广计算机科学作为一门与物理、化学、生物和数学同等地位的课程的原因之一。它应该被允许在初中和高中课程中满足STEM要求。其目的并不是要把每个人都变成专业程序员。相反,它是让我们熟悉编程的概念,这样我们周围基于软件的工具和平台就可以在需要时应用。有兴趣的读者可以参考code.org这方面的想法。
我想起了20世纪30年代的一个预言:到20世纪50年代,每个生活在美国的公民都必须成为一名电话接线员,才能应付迅速增长的电话使用量。从某种意义上说,这个预测是正确的。直接长途拨号的发明使我们都成了接线员!
日常生活中可编程设备使用的增加产生了对软件技能的需求,从相对简单的特殊应用程序到极其复杂和大规模的系统设计和实现。后者中的许多人将需要深入和正式的培训,甚至可能需要对涉及生命和肢体风险的应用进行认证。ACM在学校课程中大力倡导计算机科学是正确的。
Vinton G. Cerf, acm主席
©2013 acm 0001-0782/13/12
本论文部分或全部的电子版或硬拷贝供个人或课堂使用的许可是免费的,前提是副本不是为了盈利或商业利益而制作或分发的,并且副本的第一页上必须有本通知和完整的引用。除ACM外,本作品的其他组件的版权必须受到尊重。允许有署名的摘要。以其他方式复制,重新发布,在服务器上发布,或重新分发到列表,需要事先特定的许可和/或费用。请求发布权限permissions@acm.org或传真(212)869-0481。
数字图书馆是由计算机协会出版的。版权所有©2013 ACM, Inc.
没有找到条目