【问题标题】:Beginner Programmer - Whether to start with ES5 or ES6 [closed]初学者程序员 - 是从 ES5 还是 ES6 开始 [关闭]
【发布时间】:2016-07-24 06:49:36
【问题描述】:

在成为 IT 运营方面的多面手多年后,我踏上了 Web 服务(全栈)编码的道路。 Ruby、Python、C# 和 JavaScript 很有趣,Launch School 看起来有一个很好的方法和课程来学习全栈,从后端的 Ruby 开始。

C# 和 .net Core 呢?

不过,最近一位朋友让我对 C# 产生了兴趣,这显然是一门很好用的语言。上个月发布的 .net Core 使这更有吸引力。但是,从简单开始并首先学习编程并不是一个坏主意,不幸的是,C# 与 .net 密不可分。所有代码示例似乎都通篇使用 .net,这可能不利于初学者学习编程概念。

C# 的结构和严格的类型对我很有吸引力,但 Ruby 和其他动态语言的“简单性”也是如此。 Ruby 的 OOP 和该语言的固执己见也很有吸引力。实际上,每种语言似乎都有令人信服的理由。

关于 JavaScript

因此,持续的研究表明,JavaScript 有充分的理由作为一种伟大的第一语言,它将扩展到许多领域(Web 前端和后端、DevOps 等)并创建,正如 Jeffrey Snover 所说,'@ 987654321@'.

JavaScript 看起来也不错。它似乎比 C# 更简洁。但是,它的缺点是没有 C# 的严格类型,也没有 Ruby 的固执己见,无法帮助程序员编写更好的代码。太松了ES6 和 TypeScript 可以解决这个问题,最初我只想学习 TypeScript。但是,我是一个原教旨主义者,所以我觉得这不是正确的方法。

可能的路径

这使我或多或少地基于:

  1. 学习编码,使用 ES5(大量可用资源开始 使用 Eloquent JavaScript,添加 Speaking JavaScript、JavaScript:The Good Parts 等);
  2. 将 Smalltalk 添加到组合中,因为这听起来像是一个很棒的基线,而且从各方面来说,它都是一种漂亮、简单/直接的语言,专注于纯粹的 OOP;
  3. 学习 CSS 和 HTML、JSON、ReST;
  4. 在我熟悉 ES5 后学习 TypeScript、ES6,包括避免其中的许多陷阱;
  5. 根据需要学习 Node.js 和其他 JS 变体;
  6. 根据需要添加框架。

无论如何,JavaScript 对全栈“一切”网络服务都有意义。学习非 Microsoft 堆栈也很棒。

谢谢, 尼克

编辑:

我听过 podcast,其中 Kyle Simpson、Ashley Williams 等人正在谈论初学者使用 JavaScript 来学习编程概念。并且,他们称赞 ES5 中缺乏抽象和糖分,并将其与 ES6 中引入的抽象进行比较,其中一些使初学者难以理解语言的某些方面。

在 ES6 使初学者更难的背景下,他们似乎非常强烈地指向类,并且实现似乎与该语言奇怪地契合。但是,他们也提到了解构是多么棒,以及它如何使它更容易学习。这是一个有趣的讨论。

Ashley 还在 jsconf2015 上发表了演讲(上面链接的页面上的链接),她在使用 ES6 学习编程概念的背景下着眼于 ES6。

【问题讨论】:

  • 太棒了。那么问题是什么?无论如何,这很有可能完全脱离主题。
  • Node.js 不是 JS 变体。 Node.js 是 JS 运行的环境。JS 的能力是用 ECMAScript 标准(ES)定义的。语言本身之外的一切都是关于 API 和框架的。
  • Smalltalk 是如何进入这个讨论的?你打算用它做什么,怎么用?
  • @JulienBernu 我在原始帖子中添加了更多内容,但主要问题是:“我应该学习 ES5 还是 ES6 编程?”
  • @t.niese 感谢您的更正。我知道 node.js 不是一个框架,但不清楚它与原生 JavaScript 之间的区别。

标签: javascript ecmascript-6 smalltalk ecmascript-5


【解决方案1】:

Javascript 是一门很棒的语言,但它也非常令人困惑,并且有很多糟糕的文章。与其他答案不同,我建议您先学习 ES5,因为您提到的所有书籍都是用 ES5 编写的。您不想将自己与箭头语法和其他语法糖混淆。一旦你对 ES5 有一点痛苦,你也会更加欣赏 ES6,但我相信这是学习的必要部分。它还可以让您更好地了解为什么将这些新功能添加到 ES6 中。

在学习 Javascript 时,我的意见是选择多种来源,例如视频、在 twitter 上关注合适的人、收听播客、文章等。这里是指导您学习旅程的好地方:http://jstherightway.org/

你提到的书很棒,但我想再添加两本书。 Javascript 是权威指南,你不懂 JS。

我已经阅读了 Eloquent JS、The Definitive Guide 和 Javascript 的优秀部分,但在阅读“你不知道 JS - Kyle Simpson”https://github.com/getify/You-Dont-Know-JS

之后,我觉得我真正开始掌握 JS

我强烈推荐他的视频课程“面向严肃程序员的高级 Javascript”。它真的让我对 javascript 范式大开眼界。

不要跳过框架,因为你会浪费大量时间在配置上,而不是学习实际的 javascript。

【讨论】:

  • @yasin 非常感谢。您和 @RoboRobok 推荐了非常不同的方法。我想我的问题的答案很大程度上取决于 ES6 的采用程度和学习材料的可用性。
  • @yasin 感谢您推荐 Kyle Simpson 的书籍和视频系列,并指出“JS 的正确方式”。
【解决方案2】:

当您精通 JavaScript 时,ES6 很可能会得到完全支持。我会直接去ES6。然后,我会学习 JavaScript 框架,比如Angular 2

ES6 几乎包含了 ES5 的所有特性,它们并没有完全不同。有一个very good ES6 description 可用。

【讨论】:

  • 如果他要学习 Angular2,那么他几乎肯定需要学习 TypeScript。此外,ES6 包含 ES5 的所有特性,而不仅仅是“几乎所有”。
  • 是的! ES6 一路走来。由于所有新功能,我很难从 5 切换到 6,但是 a)您不必使用它们,b)当您使用它们时,它们会有所帮助而不是阻碍!
  • @torazaburo Angular 2 也没有 TypeScript。另外,ES5 的一些特性——或者更确切地说是行为——被弃用了,这就是我说“几乎所有”的原因。
  • 当然,您可以将 Angular2 与 TypeScript 一起使用,也可以在眼睛上钉针。您的选择。
  • @torazaburo 既没有使用过 Angular 也没有使用过 TS,为什么我需要学习 Typescript 才能更轻松地学习 Angular 2?
【解决方案3】:

当你看到:

ES5

[{lb:'Email',val:'ab@kg.co.sa'}].map(function(e){
      return '<div><label>'+e.lb+'</label>'+'<input value="'+e.val+'" />'+'</div>'
             
})

可以用ES6编写:

[{lb:'Email',val:'ab@kg.co.sa'}].map(({lb,val})=>`<div><label>${lb}</label> <input value="${val}" /></div>`)

您将自行决定。

==> ES6 的优雅和生产力。

【讨论】:

  • ${l}${v} 在 es6 版本的结果中出现 undefined
  • 对不起:我现在会更新,无论如何,看看这个演示:jsfiddle.net/abdennour/muvzaohy/4
  • @AbdennourTOUMI 谢谢。我同意,ES6 显然更胜一筹,而且毫无疑问更容易学习。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-27
  • 2010-10-23
  • 2023-03-24
  • 2011-01-02
  • 1970-01-01
  • 2011-04-11
相关资源
最近更新 更多