Move FP section
This commit is contained in:
parent
5958ff175a
commit
bf54348ff9
43
README.md
43
README.md
@ -39,6 +39,7 @@
|
|||||||
- [Email](#email)
|
- [Email](#email)
|
||||||
- [Engineering management](#engineering-management)
|
- [Engineering management](#engineering-management)
|
||||||
- [Exercises](#exercises)
|
- [Exercises](#exercises)
|
||||||
|
- [Functional programming (FP)](#functional-programming-fp)
|
||||||
- [Hardware](#hardware)
|
- [Hardware](#hardware)
|
||||||
- [HTTP](#http)
|
- [HTTP](#http)
|
||||||
- [Humor](#humor)
|
- [Humor](#humor)
|
||||||
@ -59,7 +60,6 @@
|
|||||||
- [Programming languages](#programming-languages)
|
- [Programming languages](#programming-languages)
|
||||||
- [Python](#python)
|
- [Python](#python)
|
||||||
- [JavaScript](#javascript)
|
- [JavaScript](#javascript)
|
||||||
- [Functional programming](#functional-programming)
|
|
||||||
- [Programming paradigm](#programming-paradigm)
|
- [Programming paradigm](#programming-paradigm)
|
||||||
- [Operating system](#operating-system)
|
- [Operating system](#operating-system)
|
||||||
- [Over-engineering](#over-engineering)
|
- [Over-engineering](#over-engineering)
|
||||||
@ -699,6 +699,27 @@ Practice:
|
|||||||
- [CodinGame](https://www.codingame.com/start)
|
- [CodinGame](https://www.codingame.com/start)
|
||||||
- [Codewars](https://www.codewars.com/)
|
- [Codewars](https://www.codewars.com/)
|
||||||
|
|
||||||
|
### Functional programming (FP)
|
||||||
|
|
||||||
|
- [Jargon from the functional programming world](https://github.com/hemanth/functional-programming-jargon)
|
||||||
|
- [Goodbye, Object Oriented Programming](https://medium.com/@cscalfani/goodbye-object-oriented-programming-a59cda4c0e53#.39ax09e4k)
|
||||||
|
- [Functional Programming & Haskell](https://www.youtube.com/watch?v=LnX3B9oaKzw) 🎞: some good reasons to learn FP!
|
||||||
|
- [Functional Programming Fundamentals](https://www.matthewgerstman.com/functional-programming-fundamentals/): short introduction to FP and its advantages.
|
||||||
|
- [OO vs FP](https://blog.cleancoder.com/uncle-bob/2014/11/24/FPvsOO.html), Robert C. Martin, The Clean Code Blog. A pretty interesting take on the differences between OOP and FP from an expert in OOP.
|
||||||
|
- OO is not about state. Objects are bags of functions, not bags of data.
|
||||||
|
- Functional Programs, like OO Programs, are composed of functions that operate on data.
|
||||||
|
- FP imposes discipline upon assignment.
|
||||||
|
- OO imposes discipline on function pointers.
|
||||||
|
- The principles of software design still apply, regardless of your programming style. The fact that you’ve decided to use a language that doesn’t have an assignment operator does not mean that you can ignore the Single Responsibility Principle.
|
||||||
|
- [Parse, don’t validate](https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/)
|
||||||
|
- Use a data structure that makes illegal states unrepresentable
|
||||||
|
- Push the burden of proof upward as far as possible, but no further
|
||||||
|
- Let your datatypes inform your code, don’t let your code control your datatypes
|
||||||
|
- Don’t be afraid to parse data in multiple passes
|
||||||
|
- Avoid denormalized representations of data, especially if it’s mutable
|
||||||
|
- Use abstract datatypes to make validators “look like” parsers
|
||||||
|
- 🏙 [Functional Programming](https://speakerdeck.com/igstan/functional-programming)
|
||||||
|
|
||||||
### Hardware
|
### Hardware
|
||||||
|
|
||||||
- [NandGame](https://nandgame.com/): build a computer from scratch.
|
- [NandGame](https://nandgame.com/): build a computer from scratch.
|
||||||
@ -974,26 +995,6 @@ JavaScript is such a pervasive language that it's almost required learning.
|
|||||||
|
|
||||||
- [mbeaudru/modern-js-cheatsheet](https://github.com/mbeaudru/modern-js-cheatsheet): cheatsheet for the JavaScript knowledge you will frequently encounter in modern projects.
|
- [mbeaudru/modern-js-cheatsheet](https://github.com/mbeaudru/modern-js-cheatsheet): cheatsheet for the JavaScript knowledge you will frequently encounter in modern projects.
|
||||||
|
|
||||||
#### Functional programming
|
|
||||||
|
|
||||||
- [Jargon from the functional programming world](https://github.com/hemanth/functional-programming-jargon)
|
|
||||||
- [Goodbye, Object Oriented Programming](https://medium.com/@cscalfani/goodbye-object-oriented-programming-a59cda4c0e53#.39ax09e4k)
|
|
||||||
- [Functional Programming & Haskell](https://www.youtube.com/watch?v=LnX3B9oaKzw) 🎞: some good reasons to learn FP!
|
|
||||||
- [Functional Programming Fundamentals](https://www.matthewgerstman.com/functional-programming-fundamentals/): short introduction to FP and its advantages.
|
|
||||||
- [OO vs FP](https://blog.cleancoder.com/uncle-bob/2014/11/24/FPvsOO.html), Robert C. Martin, The Clean Code Blog. A pretty interesting take on the differences between OOP and FP from an expert in OOP.
|
|
||||||
- OO is not about state. Objects are bags of functions, not bags of data.
|
|
||||||
- Functional Programs, like OO Programs, are composed of functions that operate on data.
|
|
||||||
- FP imposes discipline upon assignment.
|
|
||||||
- OO imposes discipline on function pointers.
|
|
||||||
- The principles of software design still apply, regardless of your programming style. The fact that you’ve decided to use a language that doesn’t have an assignment operator does not mean that you can ignore the Single Responsibility Principle.
|
|
||||||
- [Parse, don’t validate](https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/)
|
|
||||||
- Use a data structure that makes illegal states unrepresentable
|
|
||||||
- Push the burden of proof upward as far as possible, but no further
|
|
||||||
- Let your datatypes inform your code, don’t let your code control your datatypes
|
|
||||||
- Don’t be afraid to parse data in multiple passes
|
|
||||||
- Avoid denormalized representations of data, especially if it’s mutable
|
|
||||||
- Use abstract datatypes to make validators “look like” parsers
|
|
||||||
|
|
||||||
### Programming paradigm
|
### Programming paradigm
|
||||||
|
|
||||||
- [Imperative vs Declarative Programming](https://tylermcginnis.com/imperative-vs-declarative-programming/), Tyler McGinnis.
|
- [Imperative vs Declarative Programming](https://tylermcginnis.com/imperative-vs-declarative-programming/), Tyler McGinnis.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user