Alexander Stepanov, Elements of Programming, C++, мысли
Приветствую всех.
Позвольте начать с
цитаты.
I find OOP technically unsound. It attempts to decompose the world in terms of interfaces that vary on a single type. To deal with the real problems you need multisorted algebras — families of interfaces that span multiple types. I find OOP philosophically unsound. It claims that everything is an object. Even if it is true it is not very interesting — saying that everything is an object is saying nothing at all. I find OOP methodologically wrong. It starts with classes. It is as if mathematicians would start with axioms. You do not start with axioms — you start with proofs. Only when you have found a bunch of related proofs, can you come up with axioms. You end with axioms. The same thing is true in programming: you have to start with interesting algorithms. Only when you understand them well, can you come up with an interface that will let them work.
Сегодня случайно наткнулся на
Elements of Programming. Полистал — очень интересная и глубокая книга. C++ знаю очень слабо. Но именно эта книга вызвала интерес и заставила задаться вопросом — почему Степанов выбрал именно этот язык? Появилась мысль — может просто раньше не видел чего-то в C++, что дает ему неоспоримые преимущества... Или это просто так исторически сложилось — далекие времена, авторство STL, мейнстрим... Но если причина не эта, то опять — почему C++? Почему объяснять такие вещи на нем, а не взять тот же Haskell. И вот та цитата вначале — критика ООП Степановым — еще один повод отказаться от этого языка. Конечно C++ мультипарадигменный, но в нем отсутствуют вещи, которые были в ФЯ изначально и теперь постепенно перетекают в мейнстрим. Хотелось бы услышать ваши мысли, мысли людей, которые разбираются гораздо лучше меня в этом вопросе.
P.S. И кстати, посоветуйте стоящую книгу по современному C++.

На всякий случай.