Re[10]: Go
От: Sharov Россия  
Дата: 09.05.24 18:24
Оценка:
Здравствуйте, SkyDance, Вы писали:

CC>>Она тебе выдаст одинаковый ответ, но получить его внутри может по разному. И свалиться внутри может тоже по разному.

SD>Еще раз: функция либо детерминированная, либо зависит от побочных эффектов. Если там "по-разному", суть детерминированность отсутствует, то или ее нужно зарефакторить (если это кишочки, которые не поросли контрактами API) и сделать детерминированной. Если же контракт гвоздями прибит — вырвать волос с головы проектировщика за такой "дизайн", и, увы, перехватывать пролетающее исключение (оно может быть как в виде ли исключения, так return code, который по сути есть проносимое врукопашную исключение) в целях дальнейшего его проброса с дополнительными данными о том, что именно пошло недетерминированно, и почему.

Какое вычисление(ну ладно, польза) без side effect'ов? Смысл программ тогда теряется. Ох уж эти аппологеты фп.

CC>>Банальные коды ошибок с логгингом сразу по месту возникновения и пробросом наверх прекрасно справляются.

SD>То есть ты вместо хорошего детерминированного дизайна снова полагаешься на побочные эффекты ("логирование"). И если оно сломано, отфильтровано или засемплировано, — good luck debugging. Нет, это хреновый дизайн. В хорошем дизайне функции работают детерминированно, и из результат зависит только от входных данных. Где это невозможно (скажем, нужно что-то прочитать из другой системы), приходится добавлять метаданные в пролетающее исключение (типа, "спросили у другой системы какой-то параметр, она в тот момент вернула ХХХ").

И как добавлять эти метаданные без перехвата исключения на месте? Кстати, это ровно то состояние, которое
имеет в виду Креатор. Или что-то похожее.

CC>>В куда бОльшем колве мест.

SD>Нет, только в недетерминированных функциях. Которые, кстати, давно уже объявлены злом. Только совсем уж дремучие кодеры не в курсе про функциональный подход.


CC>>Добро пожаловать в реальный мир.

SD>Это не реальный мир, а строго огороженные вольеры в зоопарке К счастью, в современном мире есть куда более надежные и качественные подходы к проектированию. Но, понятно, застрявшие во времена "классной сишечки", этак середины 80х, вряд ли смогут осознать.

Это именно реальный мир. В огороженном вольере сидять как раз программисты на фп языках. Ну или
в очень неплохо адаптированных под конкретные вещи языках типа Эрланг. Все остальные вынуждены работать
с разного рода io операциями, где могут быть всякие сюрпризы.
Кодом людям нужно помогать!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.