Post #1683
1.22K

ООП по сути просто кривая эмуляция алгебраических типов данных и тайп-классов. Да, понятие класса/объекта, считается, легче заходит начинающим, хотя по сотне ребят, кто прошёл мой курс для начинающих с полного нуля, смотрю, оно совсем не так легко и просто воспринимается, как может показаться. Скорее наоборот: человек доучился до уровня, когда может написать сортировку массива, но далее переход к объектам, когда надо что-то смоделировать с помощью классов, в 70% случаев вызывает разрыв шаблона. Это совсем не интуитивно!
А вот развитие в сторону условного функционального программирования происходит действительно легко и просто. Есть функции, есть интерфейсы, и есть чётко отделённые от них структуры данных, и надо просто учиться это всё комбинировать и выстраивать цепочки трансформаций.
Но я не могу так учить, потому что 100% вакансий будут требовать знания ООП.
Однако из позитивных трендов нельзя не упомянуть Go и Rust, где никаким наследованием и не пахнет. Впрочем, в computer science это было давно известно, вот легендарный учебник "Object-Oriented Programming With ANSI-C" 1993-го года от одного из святых cs, крайне рекомендую всем вне зависимости от того, на каком языке вы пишете.
Код/логика должен быть простым, а для этого он должен быть прежде всего плоским. Ну ок, на хаскеле наверное это получается лучше всего, но например в F# есть модули, интерфейсы , статические методы, SRTP...
Ну и конечно либа FSharpPlus.
А вот развитие в сторону условного функционального программирования происходит действительно легко и просто. Есть функции, есть интерфейсы, и есть чётко отделённые от них структуры данных, и надо просто учиться это всё комбинировать и выстраивать цепочки трансформаций.
Но я не могу так учить, потому что 100% вакансий будут требовать знания ООП.
Однако из позитивных трендов нельзя не упомянуть Go и Rust, где никаким наследованием и не пахнет. Впрочем, в computer science это было давно известно, вот легендарный учебник "Object-Oriented Programming With ANSI-C" 1993-го года от одного из святых cs, крайне рекомендую всем вне зависимости от того, на каком языке вы пишете.
Код/логика должен быть простым, а для этого он должен быть прежде всего плоским. Ну ок, на хаскеле наверное это получается лучше всего, но например в F# есть модули, интерфейсы , статические методы, SRTP...
type Adder<'T> = { Add : 'T -> 'T -> 'T }
let addValues adder a b = adder.Add a b
let intAdder = { Add = (+) }
let result = addValues intAdder 3 5Ну и конечно либа FSharpPlus.
- 👍 48
- 🤔 10
- ✍ 1
- ❤ 1

















