我为什么建议Python开发者将ES6作为第二语言

浏览: 2743

ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。

为什么建议学习 ES6?

先从我的经历说起吧!小编大二的时候,开始接触 web 开发,那时候 web 开发技术栈基本上是 php+html+Javascript, JavaScript 功能十分强大,但是学习曲线非常陡峭,对新手不够友好。

后来,我上研究生的时候,Python 凭借大数据火了,我的主流开发语言就变成 Python 了。与此同时,前端也迎来了从 MVC 架构到 MVVM 架构的变革,出现了组件化开发,前后端分离开发, SPA 单页应用等新概念,产生了代表性的框架 Vue, React 等,在 Facebook、阿里、腾讯等大厂得到了大规模应用。使用这些框架不必再去了解晦涩难懂的原生 JavaScript 了,就像当初 jquery 代替原生的 JavaScript 一样。而这些前端框架几乎都是基于 ES6 的,改版后的ES6, 上手难度大大减小。

React vs Vue

从本科到研究生,再到现在工作,Python 和 ES6 一直是我最喜欢的语言。

我选择这两个语言搭配的理由是:

  1. Python+ES6 配合使用,基本算一个全栈工程师了,本人也算半个全栈吧,使用这两个语言能让我够轻松应对爬虫、前端、后端、机器学习、NLP 开发等日常工作。掌握一些前端的技术,是十分有用的,毕竟有时候,算法再酷,也需要产品包装一下。研究生期间,这套技能组合,让我接到了一些业余的小项目,现在工作了,虽然自己是 NLP 算法工程师,但有过排期经验的都懂,一个需求下来就是一个月,因此偶尔也会自己去撸 demo。
  2. ES6语言容易上手,因为很多语法都是借鉴Python的。说出来可能有些夸张,我压根没有系统的去学习ES6,做项目的时候,看一看别人的例子,很多代码直接就写出来了,很多语法按照Python的理解,基本上都能猜出来。

为了解释为何ES6学习成本如此之低,我找到一篇博客,整理的非常好:https://blog.logrocket.com/how-python-can-help-you-learn-es6/

程序员最讨厌的两件事:不写注释和写注释

之所以没有做更多的注释,除了想偷个懒之外,我觉得把两个语言放在一起,代码的意思不言自明。

基本数据类型对比

基本数据类型

数组/列表操作

// JavaScript
let arr = [1,2,3,4,5]
arr.push(5)
console.log(arr) // [1,2,3,4,5,5]
arr.pop()
console.log(arr) // [1,2,3,4,5]
# Python
l = [1,2,3,4,5]
l.append(5)
print(l) // [1,2,3,4,5,5]
l.pop()
print(l) // [1,2,3,4,5]

字符串切片

// JavaScript
let s = '123456'
console.log(s.split('')) // ["1", "2", "3", "4", "5", "6"]
# Python
s = '123456'
print(s.split('')) / ["1", "2", "3", "4", "5", "6"]

变量定义对比

// JavaScript
let coerced = 1;
let concatenated = coerced + 'string';
# Python
not_coerced = 1
concatenated = str(not_coerced) + 'string'

函数对比

// JavaScript
function drSeuss(catInTheHat, thing1, thing2) {
if (catInTheHat == true &&
thing1 == true &&
thing2 == true) {
console.log('is cray');
} elseif (catInTheHat != true) {
console.log('boring');
} else {
console.log('so boring');
}
}
# Python
def dr_seuss(cat_in_the_hat, thing1, thing2):
if cat_in_the_hat == Trueand
thing2 == Trueand
thing2 == True:
print'is cray'
elif cat_in_the_hat != True:
print'boring'
else:
print'so boring'

模板字符串对比

// JavaScript
let exclamation = 'Whoa!';
let sentence = `They are really similar to Python.`;

console.log(`Template Literals: ${exclamation} ${sentence}`);
# python
print'打印: {} {}'.format('Whoa.', 'Quite!')
# 打印: Yup. Quite!

参数默认值对比

// JavaScript
function nom(food="ice cream") {
console.log(`Time to eat ${food}`);
}

nom();// Time to eat ice cream
# Python
def nom(food="ice cream"):
print'Time to eat {}'.format(food)

nom() # Time to eat ice cream

类对比

// JavaScript
class Mammal {
constructor() {
this.neocortex = true;
}
}

class Cat extends Mammal {
constructor(name, years) {
super();
this.name = name;
this.years = years;
}

eat(food) {
console.log('nom ' + food);
}
}
# Python
class Mammal(object):
neo_cortex = True

class Cat(Mammal):
def __init__(self, name, years):
self.name = name
self.years = years

def eat(food):
print'nom %s' % (food)

fry_cat = Cat('Fry', 7)
fry_cat.eat('steak')

模块导入对比

# JavaScript
import { myvar, myfunc } from"./mymodule";
console.log(myvar);
myfunc();
# Python
from mymodule import myvar, myfunc
print myvar
myfunc()

后记

最近在看 Martin Fowler 的经典老书《重构 改善既有代码的设计》,第一版 2003 年出版,用的是 Java 来讲解的,2019 年第二版发布了, 并用 JavaScript 语言重写了代码范例,读起来就像看 Python 代码一样浅显易懂,感兴趣的可以翻一翻。

重构(第2版)全彩精装版

扫码下图关注我们不会让你失望!

image.png

推荐 0
本文由 ID王大伟 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册