趁假期修炼内功,教你顺滑切换编程语言

6 年前

资讯

Dao Wei

特色图像

程序员的换武器之痛

对于程序员来说,在这个变化节奏如此之快的时代,想要对一种编程语言从一而终,估计是件不太现实的事情。

总是会因为一些原因,在你熟练掌握了一种语言之后,突然需要用另一种语言去创建别的项目。

而很多程序猿在上手新的编程语言时,都会遇到一些常见的困难。比如熟悉了老语言的习惯,使用新语言时会产生混淆,导致在使用过程中发生尴尬。

另外,对功力不够的程序员,想用类比法去打通新语言的关节,会在一时间茫然无措。

先别崩溃。

这儿有一本武功秘籍,帮助你在新旧编程语言中来回切换,假日优惠价,5 毛钱一份,客官了解一下啊。

为了解决这个难题,北卡罗来纳州立大学(North Carolina State University,简称 NCSU)的三位工程师给出了一剂良药。

在他们的一篇论文中,提出一种方法,它基于学习迁移,借用类比学习的思想,创造出了一款学习工具,可以让程序员们更快的学会新语言。

惯有的拆解套路 &新手的空气墙

程序员中的老司机们常用的类比学习法,是一种点亮新技能的好方法。它利用编程语言之间的共性进行类比,从而比较容易的掌握新语言的技巧。

通俗的说就是通过已有知识去学习新知识。

这和武侠小说里,没有功力的人容易练成神功的设定不同。在这个方法下,掌握的编程语言越多,触类旁通的机才会更大。

但类比学习法对经验尚浅,尤其是刚掌握一两种编程语言的菜鸟程序员来讲,就不太友好了。因为他们没有足够的样本,很难发现新语言和自己擅长语言之间的共性。所以在面对新语言时,总会频频「撞墙」。

比如,熟悉面向过程语言(如 C 语言)的人,去学习面向对象语言(例如 C++)时,难度就非常大。因为两种语言的思想大相径庭,很难用类比学习法去推演学习。

再比如,让 VB 程序员去学 ASP 就很困难。因为一个是 C/S(Client/Server,客户端/服务器)架构,一个是 B/S(Browser/Server,浏览器/服务器)架构。

虽然二者在语法上类似,但架构差距巨大,经验不足的程序员难以用类比学习去实现跨越。

此外,入门了新语言之后,在实际应用时,也会面临以下的问题:

1 、惯性思维

学了多种语言之后,往往会混淆语法,出现混用。比如有的语言是以「;」为结束符,有的则是「回车」。如果你擅长的语言以「;」结束,那么惯性思维下,比较难纠正过来。

2 、程序运行条件不同

编译完一个 exe 程序,并非都能立即运行,不同的语言编写可能需要额外的配置。例如,用 C 语言写出的程序,一般可以直接运行,但 VFP 写好的程序,则需要安装 VFP 系统的 DLL 组件,因此 VFP 程序要做安装盘。习惯了 C 语言的程序员,估计在开始面对 VFP 时会有摔键盘的冲动。

3 、语言中的调用问题

语言涉及的调用功能是常用的手段,但不同的语言使用的调用也各有不同。因此,在上手新语言时,程序员要密切关注新语言如何调用的问题。

多数情况下,老道的程序员可以靠经验去解决这些问题,但新手程序员恐怕就要生无可恋了。

新的工具,打开新世界的大门

为了帮助小白程序员掌握类比学习法,去解决新语言在应用过程中出现的问题,北卡罗来纳州立大学的三位工程师开发的学习工具——Transfer Tutor,就有着很好的辅助作用。


这个工具能让用户在新旧两种语言中,找出他们的共性,从而更好的去适应新语言。但目前该工具还需要收费。

它用到的基本原理还是逐句的识别出二种语言的差异,通过对比和提示,来降低新语言的学习和使用难度。它定义了三种类型的语法迁移:

1 、 Negative Transfer:负迁移

通过对新旧语言进行详细解释,来明确两种语言之间的差异,避免在理解新语言时,受到其他语言的干扰而出错。

2 、 Positive Transfer:正迁移

找到两种语言之间的共性元素,让用户可以通过类比快速理解新语言,提高学习效率。

3 、 New Fact: 新语法

对于那些新语言中独特的语法,Transfer Tutor 会为用户提供详细的解释及示例来帮助记忆,缩短用户的学习时间。

以常见的的 Python 和 R 语言举例,看一看该工具是如何发威的。

熟悉的人应该知道,Python 和 R 语言之间有相似性,但也有差异。

比如在进行表格选择时,操作符「[ ]」在 Python 中用于选择行,而在 R 语言中用于选择列,R 语言要加上「,」才能选择行。在进行截取时,Python 中下标是从 0 开始的开区间(即 [ 0:5 ],结果是选出 0-4),R 语言则是从 1 开始的闭区间(即 [ 1:5 ] ,结果是选出 1-5)。

撕破 Python 到 R 语言的窗户纸

Transfer Tutor 是如何帮助我们打通二者的壁垒的呢?

首先,Transfer Tutor 会标注出 Python 和 R 语言中所有的相似元素,并进行对比展示,通过点击即可进入下一个元素。这种逐元素对比展示方式能够帮助用户 get 到所有的知识要点。

然后,Transfer Tutor 会对不同种语言之间存在的分歧和新语法,进行详细解释。

最后,通过 Transfer Tutor 的自查功能,可以对新语言编写的代码进行单步调试。用来验证学习成果的正确性,并对两种语言中存在的差异进行单独说明。

从他们的实验操作过程来看,该工具在 Python 到 R 语言的学习迁移中效率很高,可让程序员对这两种语言实现「买一赠一」。

但是否适用于所有语言,还需要深入的实践验证。不过目前它已经能用在好几套语言的学习之中,对于被不同语言折磨着的人类来说,算是抛下了一枝渡江的芦苇。

至于说什么时候会出现 AI 程序员,能够如佛光普照般,解救天下敲代码的万千生灵,嗯,这个问题,还是要去问问敲代码的大佬们,到底什么时候能突破 AI 的奇点呢?