Move FP section

This commit is contained in:
Charles-Axel Dein 2022-01-24 13:56:35 +01:00
parent 5958ff175a
commit bf54348ff9
No known key found for this signature in database
GPG Key ID: 64C00027F3375D70

View File

@ -39,6 +39,7 @@
- [Email](#email)
- [Engineering management](#engineering-management)
- [Exercises](#exercises)
- [Functional programming (FP)](#functional-programming-fp)
- [Hardware](#hardware)
- [HTTP](#http)
- [Humor](#humor)
@ -59,7 +60,6 @@
- [Programming languages](#programming-languages)
- [Python](#python)
- [JavaScript](#javascript)
- [Functional programming](#functional-programming)
- [Programming paradigm](#programming-paradigm)
- [Operating system](#operating-system)
- [Over-engineering](#over-engineering)
@ -699,6 +699,27 @@ Practice:
- [CodinGame](https://www.codingame.com/start)
- [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 youve decided to use a language that doesnt have an assignment operator does not mean that you can ignore the Single Responsibility Principle.
- [Parse, dont 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, dont let your code control your datatypes
- Dont be afraid to parse data in multiple passes
- Avoid denormalized representations of data, especially if its mutable
- Use abstract datatypes to make validators “look like” parsers
- 🏙 [Functional Programming](https://speakerdeck.com/igstan/functional-programming)
### Hardware
- [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.
#### 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 youve decided to use a language that doesnt have an assignment operator does not mean that you can ignore the Single Responsibility Principle.
- [Parse, dont 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, dont let your code control your datatypes
- Dont be afraid to parse data in multiple passes
- Avoid denormalized representations of data, especially if its mutable
- Use abstract datatypes to make validators “look like” parsers
### Programming paradigm
- [Imperative vs Declarative Programming](https://tylermcginnis.com/imperative-vs-declarative-programming/), Tyler McGinnis.