metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2009-08-11 10:19 am

А вот теперь пример безумия

В мире жабы(в смысле языка програмирования) есть какая-то тонкая шиза, которая порождает миллиарды фреймворков.
Вот пример про логгирование. Ну блин, как можно столько наворотить на пустом месте?

Самая хохма там - это то, что некоторые упоминают использование логгеров через дополнительный уровень абстракции. Мне иногда для вывода в текстовый лог и на экран юзеру приходится делать обвязку, дословно дублирующую интерфейс логгера, и меня это напрягает, потому что это натурально тупая копипаста. А народ такое массово использует и не парится.

По-моему, избавление от шизы надо начать с сжигания GoF и фаулера на костре из их книжек. А затем внедрять в мейнстримные языки всякую функциональщину, вроде функций высшего порядка, каррирования и вывода типов, после чего половина врапперов, фасадов и прочего копипастного мрака становится не нужна.

[identity profile] migmit.vox.com (from livejournal.com) 2009-08-11 07:20 pm (UTC)(link)
loggedAction =
  do log "I'm going to do something very unsafe"
     a <- veryUnsafeFFIFunction
     log "Unsafe place passed, everything OK"
     b <- relativelySafeFFIFunction a
     log "Just to make sure"
main = runLog (openFile "log.txt") loggedAction

Ну и в log.txt потом (наверное) прочитаем:
I'm going to do something very unsafe
Unsafe place passed, everything OK

[identity profile] metaclass.livejournal.com 2009-08-11 07:25 pm (UTC)(link)
А где операция закрытия файла, что-то я ее не наблюдаю явно?

[identity profile] migmit.vox.com (from livejournal.com) 2009-08-11 07:36 pm (UTC)(link)
Ну ёлки, это же так, пример, причём немного юмористический.