前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >趁假期修炼内功,教你顺滑切换编程语言

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

作者头像
HyperAI超神经
发布2019-11-30 13:31:23
6050
发布2019-11-30 13:31:23
举报
文章被收录于专栏:HyperAI超神经HyperAI超神经

By 超神经

喜大普奔的黄金周就要到了,各位程序员们是不是已经买好了回家的票?如果没什么重要的安排,不如也趁此假期,修炼几招内功心法。

等假期结束给领导和同事们一个惊喜,比如。。。

换个语言学学试试?

程序员的换武器之痛

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

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

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

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

先别崩溃。

这儿有一本武功秘籍,帮助你在新旧编程语言中来回切换,假日优惠价,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 )。

R 语言和 Python 在进行表格选择时差异比较

撕破 Python 到 R 语言的窗户纸

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

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

Transfer Tutor 工作简图

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

选择行列时对分歧元素的解释

对新语法的解释

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

R 语言中不同的表示方法:下标从 1 开始、数据中的 NaN(Not a Number,表示错误或溢出的数据)用 NA 代替

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

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

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

超神经小百科 每天 3 个 AI 名词解释

Symbolic Learning 符号学习

是指从功能上模拟人类学习能力的机器学习方法。

Similarity Measure 相似度度量

是估算不同样本之间的相似程度的标准,常用做分类问题的判断依据。

Transfer learning 迁移学习

是把已训练好的模型参数迁移到新的模型上来训练新模性的策略。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 HyperAI超神经 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档