这本书的主题是函数范式(functional paradigm),我们将使用 JavaScript 这个世界上最流行的函数式编程语言来讲述这一主题。有人可能会觉得选择 JavaScript 并不明智,因为当前的主流观点认为它是一门命令式(imperative)的语言,并不适合用来讲函数式。但我认为,这是学习函数式编程的最好方式,因为:
你很有可能在日常工作中使用它
这让你有机会在实际的编程过程中学以致用,而不是在空闲时间用一门深奥的函数式编程语言做一些玩具性质的项目。
你不必从头学起就能开始编写程序
在纯函数式编程语言中,你必须使用 monad 才能打印变量或者读取 DOM 节点。JavaScript 则简单得多,可以作弊走捷径,因为毕竟我们的目的是学写纯函数式代码。JavaScript 也更容易入门,因为它是一门混合范式的语言,你随时可以在感觉吃力的时候回退到原有的编程习惯上去。
这门语言完全有能力书写高级的函数式代码
只需借助一到两个微型类库,JavaScript 就能模拟 Scala 或 Haskell 这类语言的全部特性。虽然面向对象编程(Object-oriented programing)主导着业界,但很明显这种范式在 JavaScript 里非常笨拙,用起来就像在高速公路上露营或者穿着橡胶套鞋跳踢踏舞一样。我们不得不到处使用 bind 以免 this 不知不觉地变了,语言里没有类可以用(目前还没有),我们还发明了各种变通方法来应对忘记调用 new 关键字后的怪异行为,私有成员只能通过闭包(closure)才能实现,等等。对大多数人来说,函数式编程看起来更加自然。
以上说明,强类型的函数式语言毫无疑问将会成为本书所示范式的最佳试验场。JavaScript 是我们学习这种范式的一种手段,将它应用于什么地方则完全取决于你自己。幸运的是,所有的接口都是数学的,因而也是普适的。最终你会发现你习惯了 swiftz、scalaz、haskell 和 purescript,以及其他各种数学偏向的语言。
你很有可能在日常工作中使用它
这让你有机会在实际的编程过程中学以致用,而不是在空闲时间用一门深奥的函数式编程语言做一些玩具性质的项目。
你不必从头学起就能开始编写程序
在纯函数式编程语言中,你必须使用 monad 才能打印变量或者读取 DOM 节点。JavaScript 则简单得多,可以作弊走捷径,因为毕竟我们的目的是学写纯函数式代码。JavaScript 也更容易入门,因为它是一门混合范式的语言,你随时可以在感觉吃力的时候回退到原有的编程习惯上去。
这门语言完全有能力书写高级的函数式代码
只需借助一到两个微型类库,JavaScript 就能模拟 Scala 或 Haskell 这类语言的全部特性。虽然面向对象编程(Object-oriented programing)主导着业界,但很明显这种范式在 JavaScript 里非常笨拙,用起来就像在高速公路上露营或者穿着橡胶套鞋跳踢踏舞一样。我们不得不到处使用 bind 以免 this 不知不觉地变了,语言里没有类可以用(目前还没有),我们还发明了各种变通方法来应对忘记调用 new 关键字后的怪异行为,私有成员只能通过闭包(closure)才能实现,等等。对大多数人来说,函数式编程看起来更加自然。
以上说明,强类型的函数式语言毫无疑问将会成为本书所示范式的最佳试验场。JavaScript 是我们学习这种范式的一种手段,将它应用于什么地方则完全取决于你自己。幸运的是,所有的接口都是数学的,因而也是普适的。最终你会发现你习惯了 swiftz、scalaz、haskell 和 purescript,以及其他各种数学偏向的语言。
2021年05月14日
这是一本NodeJS新手入门教程,涵盖了使用NodeJS开发各种程序所必要的知识.
2021年07月12日 NodeJS最大的卖点——事件机制和异步IO,对开发者并不是透明的。开发者需要按异步方式编写代码才用得上这个卖点,而这一点也遭到了一些NodeJS反对者的抨击。但不管怎样,异步编程确实是NodeJS最大的特点,没有掌握异步编程就不能说是真正学会了NodeJS。本章将介绍与异步编程相关的各种知识。
《ECMAScript 6入门》全面介绍了ECMAScript6新引入的语法特性,覆盖了ECMAScript 6 与 ECMAScript 5 的所有不同之处,对涉及的语法知识给予了详细介绍,并给出了大量简洁易懂的示例代码。
2021年07月15日 异步编程对JavaScript语言太重要。JavaScript只有一根线程,如果没有异步编程,根本没法用,非卡死不可。
讨论并行编程的架构和编程模型。对于初次接触并行编程技术的程序员来说,都是非常有用的概念;对于经验丰富的程序员来说,可以作为参考。
2021年07月22日 Asyncio 模块的另一个重要的组件是 Future 类。它和 concurrent.futures.Futures 很像,但是针对Asyncio的事件循环做了很多定制。 asyncio.Futures 类代表还未完成的结果(有可能是一个Exception)。所以综合来说,它是一种抽象,代表还没有做完的事情。
2021年07月22日
2021年07月22日
2021年07月22日
2021年07月22日
2021年07月22日 除了顺序执行和并行执行的模型之外,还有第三种模型,叫做异步模型,这是事件驱动模型的基础。异步活动的执行模型可以只有一个单一的主控制流,能在单核心系统和多核心系统中运行。
本书尽可能的从一个符合现代理念的角度出发,让初学者能更容易的学习 JavaScript。
一点微小的工作:
从一开始就着眼于现代功能,快速入门。
大多数章节都提供测试驱动的练习和测验。
涵盖了 JavaScript 的所有基本功能,包括 ES2019。
可选的高级部分能让您继续深入挖掘。
不需要 JavaScript 的预备知识,但您应该知道如何编程。
一点微小的工作:
从一开始就着眼于现代功能,快速入门。
大多数章节都提供测试驱动的练习和测验。
涵盖了 JavaScript 的所有基本功能,包括 ES2019。
可选的高级部分能让您继续深入挖掘。
不需要 JavaScript 的预备知识,但您应该知道如何编程。
2021年10月26日 粗略地说,异步函数 为使用 Promise 的代码提供了更好的语法。
2021年10月26日 在本章中,我们将探索 Promise,另一种交付异步结果的模式。本章建立在前一章的基础上,以JavaScript异步编程为背景。
2021年10月26日 本章介绍了 JavaScript 中异步编程的基础。
中文版 Apple 官方 Swift 教程《The Swift Programming Language》
2021年09月11日
2021年09月11日
2021年09月11日
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
2021年09月14日
目前社区有很多 Vue.js 的源码解析文章,但是质量层次不齐,不够系统和全面,这本电子书的目标是全方位细致深度解析 Vue.js 的实现原理,让同学们可以彻底掌握 Vue.js。目前分析的版本是 Vue.js 的最新版本 Vue.js 2.5.17-beta.0,并且之后会随着版本升级而做相应的更新,充分发挥电子书的优势。
这本电子书是作为 《Vue.js 源码揭秘》视频课程的辅助教材。电子书是开源的,同学们可以免费阅读,视频是收费的,25+小时纯干货课程,如果有需要的同学可以购买来学习,但请务必支持正版,请尊重作者的劳动成果。
这本电子书是作为 《Vue.js 源码揭秘》视频课程的辅助教材。电子书是开源的,同学们可以免费阅读,视频是收费的,25+小时纯干货课程,如果有需要的同学可以购买来学习,但请务必支持正版,请尊重作者的劳动成果。
2021年09月20日
这篇文档是关于 Dubbo 的简单介绍,涵盖 Dubbo 的核心概念、基本使用方式以及 Dubbo3 核心功能,无论你是 Dubbo 的老用户还是新用户,都可以通过这篇 文档快速了解 Dubbo 及新版本带来的变化。
2021年10月08日 在 Dubbo 中发起异步调用。
2021年10月08日 Dubbo 服务提供方的异步执行。