重新思考编程

重新思考编程

 

 

我们正处在计算结构发生重大变化的边缘。在展望新的十年时,Mike Loukides考虑了未来的发展,我们将如何实现这一目标以及对行业结构方式的意义。

 

我们需要重新考虑程序员的角色

寻找行业变得更加分层和专业化。程序设计领域将越来越多地由训练有素的专业人员和没有深厚背景但有很多构建经验的人组成。前者负责构建工具,框架,语言和平台。后者将事物联系起来并构建网站,移动应用程序等。这两种类型的程序员一直存在,流畅地混合。我们只是没有认识到这种区别,而且这种情况将会改变。一个很好的类比是管道。如果您需要安装厕所,可以打电话给水管工:他们知道如何将东西连接在一起。有一些设计卫生洁具的人可以从事的工作,但您不希望他们在浴室中工作。

 

我们需要考虑如何教授编程

就像阅读一样,有些人几乎不需要培训就能学习编码,而有些人则不需要。但是与阅读一样,我们不应该接受这样一个世界,在这个世界上,有些人进入小学编程语言,而那些人不必等到高中。我们将需要接受过教学程序设计培训的老师,特别是早期的教学程序设计。我们已经拥有针对教学孩子而优化的编程环境,包括Scratch,Alice及其亲戚。并且不要打折游戏可以扮演的角色。Minecraft不知不觉地教给了一代学习者如何使用Java进行编程。

我们还需要为具有出色编程技能但没有深厚的计算机科学背景的人(管道工)搭建桥梁,以进入专业市场。其中一些桥梁已经存在。其中包括许多新兵训练营和学校,例如联大和霍尔伯顿。这些与授予大学学位的计划(传统的计算机科学专业)不同,并且具有不同的目的。它们更像是职业教育计划:它们专注于实践,而很少强调理论。他们的目的是学习在专业的环境中编程(与Web平台,数据库甚至是AI平台一起工作),而不是与开发这些平台或数据库有关。他们是针对那些说:“为什么我应该知道如何对quicksort编程的?如果要排序,我将调用库函数。” 很好,我们不应该假装事实并非如此。

相比之下,CS专业的学生应该继续接触理论和算法,并与其合作-不是因为他们要编写自己的快速排序,而是因为我们需要能够开发和实现新算法的人员,并且最好的学习方法是实践我们已经了解的算法。您不需要精通数学即可进行编程,但是您确实需要数学来推动计算向前发展-特别是如果您对数据科学或人工智能感兴趣。

 

我们需要新的,更复杂的编程工具

在“ 机器学习系统中的隐藏技术债务”中”的作者(来自Google的一组研究人员和工程师)认为,机器学习在任何应用程序中都只占很小的一部分。其余的大部分是将事物连接在一起:建立数据管道,将应用程序连接到服务基础架构,提供监视。它虽然没有魅力,但需要正确完成。我敢打赌,不良的管道造成的停机时间要比机器学习算法的不良实施造成的停机时间要多得多。我想知道,对于企业的这一部分是否有更好的语言,而不是依靠我们当前的语言。对于我来说,很长一段时间以来,编程语言与1960年代和1970年代的语言并没有什么不同:面向行的字母数字文本,通常是固定宽度类型。功能语言可以追溯到1950年代,并且是面向对象编程的最早根源。没多久。想象其他类型的语言意味着什么?这方面的工作已经完成。视觉语言数量惊人,它使用户可以使用符号或其他图形元素而不是文本来创建程序,尽管大多数失败了。但是,即使在像Scratch这样的流行语言中,我们也要处理可视对象到传统编程语言的简单映射:“钳位”是“循环”,“变量”是“盒子”,依此类推。是否有可能进一步超越传统编程语言?专为管道设计的编程语言是什么样的?它将为我们提供更好,更富有成果的方式来思考系统之间的互连吗?—迈克·洛基德斯

重新思考编程