Comments 25
С нетерпением жду следующих глав.
Если бы это был не перевод, мог бы еще предложить автору писать примеры одновременно на Haskell и С++. Они бы прекрасно дополняли друг друга и сильно облегчали бы понимание: привычный синтаксис С++, но примеры громоздкие; компактный и заточенный под ФП код Haskell — но выносящий неподготовленный мозг синтаксис.
Если бы это был не перевод, мог бы еще предложить автору писать примеры одновременно на Haskell и С++. Они бы прекрасно дополняли друг друга и сильно облегчали бы понимание: привычный синтаксис С++, но примеры громоздкие; компактный и заточенный под ФП код Haskell — но выносящий неподготовленный мозг синтаксис.
Кстати, Бартош выступит в феврале на конференции в Москве. Доклад будет как раз про теорию категорий и как раз для C++ программистов :)
Для понимания ООП категории тоже полезны.
Если объектами категерии будут классы C++, а морфизмами — static_cast, то виртуальное наследование от невиртуального будет отличаться коммутативностью соответствующего квадрата.
Если объектами категерии будут классы C++, а морфизмами — static_cast, то виртуальное наследование от невиртуального будет отличаться коммутативностью соответствующего квадрата.
Вы совершенно правы в примере категории! Только врятли этот пример можно назвать очень полезным в понимании ООП, он скорее о потрохах C++, чем об ООП. Да и слишком частный это случай, не тянет на фундаментальную основу языка =)
Есть только один момент, который я не заметил сразу: если диаграмма не коммутативна, то это не морфизм. Так что, морфизмами будут не все возможные static_cast-ы, а только те, для которых она коммутативна.
Отлично, только не понимаю, почему примеры только на C++.
Еще на Haskell!
А, ну понятно. Просто из статьи это (мне) не было ясно.
Так что, я приведу много примеров на C++. Конечно, придется преодолеть уродливый синтаксис, и увидеть паттерны будет сложнее из за многословия, и вам, возможно, придется делать много copy-paste, вместо использования абстракций высшего порядка, но это и так большая часть жизни C++-программиста.
После большого количества подобных текстов, так и не понял, зачем теоркат программисту. Обещают революцию, а на деле оказывается, что есть пара паттернов типа монад или стрелок, их можно использовать, конец.
Бартош говорит, что важнейшая польза этих паттернов — легкая и безопасная композиция concurrency и parallelism приситивов.
Я не о том говорю. Паттерны полезные, но какая польза теории категорий при этом. Вот у матана есть польза — вместо библиотечного математического метода X я могу подумать с бумажкой и упростить задачу до метода Y, или посчитать его границы применимости. Довольно редкая польза, надо сказать, но я ее понимаю и несколько раз в жизни я сидел в Maple с упрощением интегралов. А вот теория категорий зачем программисту? Учитывая, что работает он все время в одной категории, в которой объектами являются типы, зачем ему этот обобщающий категории матаппарат.
Пока я в подобных статьях видел только ввод в терминологию (вот видишь этот паттерн, он называется монада в категории, где объектами являются типы данных языка, а стрелками — функции), и все.
Пока я в подобных статьях видел только ввод в терминологию (вот видишь этот паттерн, он называется монада в категории, где объектами являются типы данных языка, а стрелками — функции), и все.
Потому, что знать паттерны, но не знать лежащей под ними теории — это быть собакой павлова: жать на кнопки определенным образом при определенных условиях.
Я бы сказал, что еще немного прочищает мозги по теме побочных эффектов у методов (функций). Многие не-функциональщики об этом вообще не задумываются.
1. перевод интересный, книга интересная и буду ждать продолжения
2. а что это за книга (не могу найти не где её упоминания)? Может быть и сам почитаю…
Пока читал поймал себя на мысли что не где не видел простого обзора по современным языкам программирования, и классификации языков программирования и т.п. Я понимаю что многие программисты изучают и знают это (чуть ли не впитывают с молоком матери), но не было бы полезным иметь такой обзор. Так что дарю идею, а сам пошел читать википедию для начала.
2. а что это за книга (не могу найти не где её упоминания)? Может быть и сам почитаю…
Пока читал поймал себя на мысли что не где не видел простого обзора по современным языкам программирования, и классификации языков программирования и т.п. Я понимаю что многие программисты изучают и знают это (чуть ли не впитывают с молоком матери), но не было бы полезным иметь такой обзор. Так что дарю идею, а сам пошел читать википедию для начала.
может быть лучше начать не с категорий, а хотя бы с отображений или с отношений с переходом на морфизмы?
Sign up to leave a comment.
Теория категорий для программистов: предисловие