Зверніть увагу, що потреби Гарпера у викладанні вступного класу навчальних програм CS дуже сильно відрізняються від потреб проекту реального життя . Його завдання - навчити першокурсників фундаментальних понять (наприклад, модульність, паралелізм, індукція). Як таке, дуже важливо, щоб обрана мова (і парадигма) могла виражати ці поняття якомога менше обрядовості (синтаксичної та концептуальної). Ознайомлення, підтримка інструментів, наявні бібліотеки, продуктивність виконання тощо в цьому контексті абсолютно не мають значення. Тому, майте на увазі, враховуючи наступне ...
Думка про те, що ОО є антимодульним результатом через велику кількість залежностей від інших класів, з якими стикаються навіть об'єкти добре розроблених класів. Це проблема - навіть в очах прихильників ОО - стає зрозуміло, коли ви дивитесь на поширення рамок , статей, книг та публікацій в блогах за останні роки ( залежно від зростання макетів та заглушок).
Ще один натяк на важливість шаблонів дизайну та складність їх застосування - порівняно з деякими іншими парадигмами програмування - наприклад, Фабрики, Будівельник, Адаптер, Міст, Декоратор, Фасад, Команда, Ітератор, Посередник, Спостерігач, Стратегія та Метод шаблонів і, можливо, Композиція певним чином пов'язана з поліпшенням модульності коду OO.
Спадкування також є проблематичним (наприклад, крихка проблема базового класу ) та (підтип) поліморфізм спокушає одного до розширення реалізації алгоритму між декількома класами, де зміни можуть переплестися по всьому ланцюгу спадкування (вгору і вниз!).
Обвинувачення в тому, що воно є паралельним , пов'язане з акцентом на стані порівняно з обчисленнями (т.к. мінливість проти незмінність). Перший робить його більш задіяним для вираження залежностей від підрахунків (це Харпер приймає на паралелізм!), Оскільки зазвичай не можна зробити висновок з місця, яким керує стан (ака. Файл, де оголошена змінна екземпляра), який знаходиться поза суб'єктами змінить його в якийсь момент часу.
Наголос на незмінюваності та обчисленнях значно полегшує вираження залежностей від підрахунків, оскільки не існує управління державою, а лише функції / обчислення, які поєднуються там, де ви хочете висловити залежності підрахунків.