Функционално програмиране с JavaScript - техники, композиция и др.


6

Здравейте,

Отварям темата за да ви споделя различни четива и видеа на интересни техники от функционалното програмиране, техники за композиция, RxJS и др. като се надявам и други да се присъеденят и да споделят знанията / мнението си по темата. 

Докато споделям статиите, ще задавам и няколко интересни въпроса, на които ще чакам отговор от някой "senior" като Дончо или Павел Колев примерно (или който и да е по-навътре с JS), понеже въпросите може да са малко "дълбоки" ;)

И така... да започнем:

1) Мислите ли, че класовете нямат място в JavaScript и че имплементацията им е едно "угаждане" на хората, които не разбират (не искат да научат) JavaScript?

- Factory function vs constructor function vs class

Difference Between Class & Prototypal Inheritance

Мнение на Douglas Crockford за класовете в JS (Видео)

2) Какво ви е мнението за т.н. "pure functions", "higher order functions" и "function currying"?
Защо не използваме такива техники в Академията? Аз поне съм гледал доста лекции и не си спомням да са били коментирани / споменавани?

(function) => (currying) => (is) => (tasty)

Higher order functions (Видео)

- Pure functions

3) Има ли причина да използване класове за наследяване в JavaScript? С какво то е по-добро от композиция и т.н. "mixins" ?

Composition over Inheritance (Видео)

Why composition is harder with classes

Други:

Factory functions

- Functional mixins

Видео на Павел Колев за RxJS:

- RxJS Intro (Павел Колев)

Понеже знам, че Павел чете този форум, искам да му благодаря за прекрасното видео и да го помоля, ако има време да направи "in-depth" видео по темата. Ще е интересно да се види апп, който да ползва RxJS на сървъра и клиента едновременно примерно ;)

Толкова от мен за сега, надявам се се развие някаква дискусия. Отново - бих оценил всякакви мнения, статиий, видеа и тем подобни по темата! Thank you ;)




Отговори



1

Здравей,

Направо по точките:

1) В JavaScript няма класове. class keyword-а е syntatic sugar за класическо OOP. Има някои неща дето биха се написали доста удобно с class, но да ги използваш за всичко - по мое мнение нещата се омазват бързо.

2) Мнението ми за "pure functions", "higher order functions" и "function currying" е високо. Такива техники СЕ ползват в академията (може би за pure functions не се говори).

Тук бих препоръчал да разгледаш Haskell. Засяга още някакви неща като Lazy evaluation, Higher kinded types, Typeclasses.

3) Не знам какво да кажа... Some rant against OOP + намери си още.


от cuki (7681 точки)