这本书的主题是函数范式(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日
本套教程适用于:
1. IntelliJ IDEA 14、15、2016、2017、2018、2019、2020、2021 版本
2. WebStorm 2016、2017、2018、2019、2020、2021 版本
3. PhpStorm 2016、2017、2018、2019、2020、2021 版本
4. PyCharm 2016、2017、2018、2019、2020、2021 版本
5. RubyMine 2016、2017、2018、2019、2020、2021 版本
6. Goland 2017、2018、2019、2020、2021 版本
7. CLion 2017、2018、2019、2020、2021 版本
8. DataGrip 2016、2017、2018、2019、2020、2021 版本
9. Android Studio 任何版本
作者(按参与时间排序):
YouMeek:http://YouMeek.com
温泉:https://github.com/wenquan0hf
zhenhappy:https://github.com/zhenhappy
two8g:https://github.com/two8g
Dectinc:https://github.com/Dectinc
Caliven:https://github.com/caliven
MinjieTao:https://github.com/MinjieTao
classloader:https://github.com/classloader
challengeof:https://github.com/challengeof
district10:https://github.com/district10
duanluan:https://github.com/duanluan
binarywang:https://github.com/binarywang
chenhui7373:https://github.com/chenhui7373
wzxjohn:https://github.com/wzxjohn
Robot-L:https://github.com/Robot-L
duanluan:https://github.com/duanluan
1. IntelliJ IDEA 14、15、2016、2017、2018、2019、2020、2021 版本
2. WebStorm 2016、2017、2018、2019、2020、2021 版本
3. PhpStorm 2016、2017、2018、2019、2020、2021 版本
4. PyCharm 2016、2017、2018、2019、2020、2021 版本
5. RubyMine 2016、2017、2018、2019、2020、2021 版本
6. Goland 2017、2018、2019、2020、2021 版本
7. CLion 2017、2018、2019、2020、2021 版本
8. DataGrip 2016、2017、2018、2019、2020、2021 版本
9. Android Studio 任何版本
作者(按参与时间排序):
YouMeek:http://YouMeek.com
温泉:https://github.com/wenquan0hf
zhenhappy:https://github.com/zhenhappy
two8g:https://github.com/two8g
Dectinc:https://github.com/Dectinc
Caliven:https://github.com/caliven
MinjieTao:https://github.com/MinjieTao
classloader:https://github.com/classloader
challengeof:https://github.com/challengeof
district10:https://github.com/district10
duanluan:https://github.com/duanluan
binarywang:https://github.com/binarywang
chenhui7373:https://github.com/chenhui7373
wzxjohn:https://github.com/wzxjohn
Robot-L:https://github.com/Robot-L
duanluan:https://github.com/duanluan
2021年09月07日 本文详细介绍 Intellij IDEA 下的 Debug 技巧。
Electron是由GitHub开发的一个开源库,用于构建具有HTML,CSS和JavaScript的跨平台桌面应用程序。 Electron通过将Chromium和Node.js组合到一个运行时来实现这一点,并且可以为Mac,Windows和Linux打包应用程序。
本教程专为那些渴望为Linux,Windows和MacOS构建跨平台桌面应用程序的学员而设计。
本教程专为那些渴望为Linux,Windows和MacOS构建跨平台桌面应用程序的学员而设计。
2021年09月17日 我们有两个运行应用程序的进程 – 主进程和渲染器进程。
由于渲染器进程是在我们的浏览器窗口中执行的进程,因此我们可以使用Chrome Devtools进行调试。 要打开DevTools,请使用快捷键“Ctrl + Shift + I”或键。 你可以here查看如何使用devtools。
由于渲染器进程是在我们的浏览器窗口中执行的进程,因此我们可以使用Chrome Devtools进行调试。 要打开DevTools,请使用快捷键“Ctrl + Shift + I”或键。 你可以here查看如何使用devtools。