通过学习其他语言来学习JavaScript

开发 开发工具
很遗憾,我没有学过Scheme和Self,和大部分人一样,我也费了不少劲才算搞明白JavaScript中的闭包和原型.不过我接触过awk,Perl和Python,.这三门语言也对JavaScript产生了一定的影响.

 回顾我的编程生涯,有三种编程语言给我学习JavaScript打上了良好的基础(之所以这么说,是因为JavaScript的确有一些比较难学的地方):

Scheme: 在我进入大学信息专业的第一学期,我通过经典的“计算机程序的构造和解释”(免费在线阅读)一书学习了Scheme语言.当初,JavaScript从Scheme中学到了闭包.最近,受Racket(一种Scheme方言)的启发,ECMAScript 6中又增加了一种称之为private symbol的对象类型来实现“私有性(privacy)” .

Self: 随后,我还粗略的学习过基于原型的面向对象语言.期间看过一篇很有见地的论文:“不使用类来组织程序”.这篇论文通过描述一种称之为Self的语言(另一种在JavaScript发明时期影响了它的语言)讲到了下面这些知识点:"基于类的语言中存在有两种关系:谁是谁的实例(对象和类之间的关系)和谁是谁的子类(类和类之间的关系).基于原型的语言中只存在有一种关系:谁是谁的原型(对象和对象之间的关系).虽说如此,但在这两种不同的面向对象语言中,该如何组织自己的程序,还是很类似的".

Java: 通过学习Java,有三点可以影响到你对JavaScript的学习.首先是语法,因为在发明JavaScript的时候,JavaScript之父收到的命令就是“它的语法必须看起来像Java.第二点是,它能帮助你学会面向对象的编程,虽然有时候会觉的Java的语法有点死板.“Effective Java”(亚马逊购买链接)一书是一本很好的Java入门书籍.第三点,你还能知道一个好的IDE(Eclipse等)应该是什么样的,在这一方面,JavaScript仍然需要努力向前赶.

除了我所说的这三种语言,肯定还有一些其他的语言,能让你把一些在这些语言中学到的原理稍加修改(或者完全一样)就能应用到JavaScript的学习中.

译者注:很遗憾,我没有学过Scheme和Self,和大部分人一样,我也费了不少劲才算搞明白JavaScript中的闭包和原型.不过我接触过awk,Perl和Python,.这三门语言也对JavaScript产生了一定的影响.

awk的函数声明写法是这样的:

  1. function add(a,b){ 
  2.     return a+b 

你看见了,和JavaScript中函数声明的写法一模一样,因为function这个关键字就是来自awk的,证据是"Coders at Work"一书中Brendan Eich接受采访时说过的话:

 

One more positive influence, and this is kind of embarrassing, was awk. I mean, I was an old Unix hacker and Perl was out, but I was still using awk for various chores. And I could’ve called these first-class functions anything, but I called them “function” mainly because of awk. An eight-letter keyword—it’s kind of heavy, but there it is.

再来说Perl,JavaScript中的正则表达式语法是从Perl来的.各种数组方法push,pop,shift,unshift,splice,join,reverse,sort,都是来自于Perl中的同名函数.我在SpiderMonkey源码中搜索过"Perl",结果如下:

这些注释几乎都是Brendan Eich亲手写的.如果你熟悉Perl,在开始学习JavaScript的时候就不会对这些来源于Perl的方法和特性感到陌生.

那Python呢?在发明JavaScript的时候,Python才刚刚起步(1.2),目前的JavaScript貌似没有从Python中学到些什么,不过未来的JavaScript会,ECMAScript 6中的迭代器和生成器,yield表达式,数组(生成器)推导式,默认参数,剩余参数,解构,模块等等,都或多或少的学习了Python中的类似语法.如果你没接触过Python,学习这些东西会花费不少时间,相反,这些东西几乎没有什么学习成本.

有些人说:"学习编程语言要精通一门,学的多会导致全面平庸".嗯,前半句是对的,但后半句是错的.

原文链接:http://www.cnblogs.com/ziyunfei/archive/2013/02/06/2907681.html

英文原文:http://www.2ality.com/2013/02/learn-javascript.html

 

 

责任编辑:张伟 来源: 博客园
相关推荐

2009-12-28 11:08:34

ADO 实例

2019-09-11 14:16:34

编程语言技术人生第一份工作

2021-03-08 21:46:00

大数据互联网工程师

2022-08-18 11:36:16

可视化JavaScript事件循环

2024-04-29 14:54:36

机器学习过拟合模型人工智能

2010-03-11 15:16:52

Python编程语言

2012-09-24 11:45:28

IBMdw

2010-05-19 19:30:47

2015-07-13 11:36:26

JavaavaScriptGroovy

2022-03-30 14:00:49

人工智能灾害机器

2023-12-18 08:00:42

JavaScrip框架Lit

2010-07-28 14:28:57

Flex国际化

2023-11-07 15:53:16

人工智能关键词

2017-01-11 17:38:31

AndroidAndroid坐标Button移动

2022-10-29 19:58:09

Base64Bashshell

2023-01-13 18:55:09

游戏Ada编程语言

2009-06-10 21:48:03

滚动图片Javascript特

2017-08-28 16:01:59

前端JavaScript学习途径

2021-01-14 08:55:20

C语言编程

2011-12-30 10:21:10

JavaScript
点赞
收藏

51CTO技术栈公众号