Functional Programming Introduction

Functional Programming

Functional-Light-JS

Provable & Readable

函数式编程试图使用已经尝试过过、验证过多年的的模式来解决问题。函数式编程试图用已经验证过的数学问题来解决编程问题,以减少程序的不确定性,试图在编写代码的同时来进行测试。通过把复杂的编程问题拆解为简单的可验证的数学问题,来提高程序的可靠性及可读性(不用阅读每一段代码,只要确定每一个数学问题可靠,及理解每个数学问题的作用即可)。

一般我们使用单元测试及集成测试来测试程序的可靠性,但实际上,我们也可以使用经过严谨证明的数学公式来进行编程,因为这些数学公式进行过全面的分析论证,所以我们可以认为他们是可靠地,是“不需要”进行测试的,可以极大地简化我们的思维负担,并提高我们程序的可靠性。

LESS TO READ,最易读的代码是不需要进行分析的代码。

作为一名程序员,我们应该信任我们的代码。如果我们不信任我们的代码,那说明我们并没有理解我们代码的作用。函数式编程的目的就是尽量写出可信任的代码段,并将其组合在一起。

阅读全文 »

Introduction

Code is for Humans

来自灵魂的两个拷问:

有没有一段代码没有效果,但是就是不知道为什么没效果?

Have you ever had a piece of code, that it broke but you just had no idea why it broke?

有没有一段代码起作用了,但是不知道为什么起作用了?

Have you ever written a piece of code that worked and you had no idea why it worked?

如果你不知道你的代码为什么有作用,在他崩溃时你是无法修复的,除了寄希望于运气、猜测和魔法。

If you don’t know why your code works, you have no hope of fixing it when it breaks, other than sheer luck and guessing and magic.

阅读全文 »

介绍(Introduction)

我们为什么要深入了解JavaScript?我们现在有了babel,我们有typescript,问什么还要学习JavaScript?

我们为什么要深入了解JavaScript?我们现在有了babel,我们有typescript,问什么还要学习JavaScript?
无论是vue、react、angular,都是建立在js之上的,并不能脱离js的范畴。js有的特性他们也有,js会产生的问题他们也会产生。

我们作为开发人员是有着有倾向性的,假设好的心理模型,当bug出现时,我们有时会责怪编程语言,但这并不是js的问题。js的设计有着复杂的历史原因,显然,更主要的原因使我们没有阅读规范。

ECMA规范

问题出现时,你首先要找到那么权威的说明在哪里,然后阅读他。

首先应该问自己,规范是这样规定的吗?我所做的是否符合规范?

如果你想要代码按照你所设想的执行,那么唯一的方式就是了解你的代码时怎样执行的。

阅读全文 »

上个周末,观看了一个演讲,非常的有趣,恰好今天又想到了一些东西,就回忆总结一下,也算是一种刻意练习,希望能够真切的把这些道理记到脑子里,指导今后的思想。

阅读全文 »

成为世界级工程师的五个原则

  1. Analytical problem solving with code

    分析问题并用代码解决的能力

  2. Technical communication (can I implement your approach just from your explanation)

    技术说明的能力(我能仅仅通过你的描述就能完成你所实现的功能吗)

  3. Engineering best practices and approach (Debugging,code structure,patience and reference to documentation)

    工程最佳实践和方法(调试、代码结构、耐心和参考文档)

  4. Non-technical communication(empathetic and thoughtful communication)

    非技术交流(有同理心、有思想的交流)

  5. Language and computer science experience

    语言和计算机科学经验

其重要性依次排列

培养学习时的习惯

为了达成成为一个出色的程序员的目标,我认为我应该不断的学习,学习一些声明式知识与程序性知识,并不断地用声明式知识与程序性知识来解决各种问题,完成我想要的功能。

阅读全文 »
0%