日报标题:「好担心哪天机器也会写代码,那我不就失业了……」
题主似乎不是想讲人工智能,而是问视觉化语言能否取代传统编程语言,从而令大部分程序员失业。
我觉得这个想法主要是由于视觉化语言似乎更容易入门,例如一个 for 的组件拉出来已有 3 个空格给填入数字,而对于传统编程语言,你除了知道 for 的概念,还需要记住它的语法,然后用文本方式编写出来。我认为这是真实情况。
然而,这类视觉化语言主要目的就是教授一些基本编程概念,但这些概念(主要是上世纪 60 年代的结构化编程)只是编程的一部分。之后要学习其他更复杂的编程概念的时候,这种视觉化方式并不会有太多帮助。
另一个问题是积木。视觉化编程提供一些组件,让使用者可以通过组合方式去编程。实际上,传统编程所提供的程序库、框架,其实也可算是「积木」。通常软件开发项目会展示一些架构图,也是由各种「积木」组合而成。但这些「积木」的组合方式通常不是简单的接在一起,而是通过一些接口去连接,使这些组合会有更大的弹性。而程序员(或软件工程师、或架构师)是需要了解不同的「积木」,选择用哪些「积木」去组建软件,然后按需求把这些「积木」适当地连接使用。以现今的软件来说,软件项目难以完全从零开始实现。
当一个入门者使用视觉语言一段日子之后,面对更复杂的需求,很可能会发现,用文本表示程序会更简单。实际上文本是很适合表示精确、抽象的概念。Scratch 这类视觉编程语言实际上是能直接翻译成文本的。
现时视觉化编程会应用在一些专门领域,例如 Unreal 4 引擎中的 Material Expression 是用于材质的着色编程:
但对于复杂的需求,我认为传统文本形式更容易理解阅读:
即使敝开视觉化编程语言和传统文本编程语言的讨论,程序员就是要分析复杂的需求,最终开发出程序。这个开发过程有可能变得越来越简单,但需求的复杂性也会越来越高。想下岗似乎不容易啊。