Magic

Jan 19, 2017 11:24




Read more... )

coding

Leave a comment

Comments 13

vanxant January 19 2017, 17:29:18 UTC
К последнему абзацу стоит добавить магические числа, широко распространенные, например, в ядре линукса. Так, например, модули ядра (т.е. драйверы) огорожены от неправильной загрузки не только номером версии, но и магическим числом, генерируемом при каждом билде. Соответственно, modprobe не даст загрузить модуль от другого ядра (другой сборки), даже если он имеет тот же номер версии - на случай разницы в конфиге. (Впрочем, если совсем приперло, insmod воткнуть такой модуль позволит).
Или вот в системный вызов reboot нужно передать целых два магических числа, первое 0xfee1dead, а за вторым нужно лезть в ман к конкретной версии ядра. Защита от случайного вызова.

Reply

recoder January 19 2017, 17:30:44 UTC
Ну это и вовсе не магия. Так, полезные константы...

Reply

vanxant January 19 2017, 17:47:32 UTC
Ну с этой точки зрения "магические методы" в каком-нибудь пыхе тоже никакой магии не содержат. Так, синтаксический сахар... Другой вопрос, что злоупотребление сахаром приводит к ожирению и диабету.
Также как и магия по вашей ссылке в последнем абзаце - несколько тактов оно когда-то экономило, но с переносимостью там беда в большинстве случаев.

Reply


ex_juan_gan January 19 2017, 19:56:11 UTC
А как же а) свободные монады, б) волшебное число для извлечения квадратного корня?

Reply

recoder January 19 2017, 20:29:47 UTC
Они входят в последний параграф, и "эту магию обычно никто и не имеет в виду".

Reply


alll January 19 2017, 22:20:43 UTC
> Случайности же проявляются только тогда когда их привносишь

Ну так и в магии случайности только привнесённые. Разница не в детерминизме, а в наличии/отсутствии достаточно полной модели в голове практикующего. Об чём и закон Кларка намекает.

Reply


the_drmad January 21 2017, 19:43:16 UTC
Хотя программы суть "идеи", выполняются они на "материальном" железе. А весь материальный мир живет, увы, по вероятностным законам. Пролетит через процессор какой-нибудь высокоэнергетический протон, исказится какой-нибудь битик и кирдык детерЬминизЬму.

Reply

recoder January 23 2017, 22:23:33 UTC
Ну если опускаться на квантовый уровень - то там конечно да, бардак полнейший. Но поднимаясь обратно в наш грешный макро-мир всю эту квантовую фигню можно вынести за скобки и обратно наслаждаться статистическим детерминизмом.

Reply


bluedrag March 7 2019, 02:17:02 UTC
А чем тебе питон (в этом контексте) не угодил?

Reply

recoder March 7 2019, 12:33:20 UTC
Питон я пнул в основном за "Explicit is better than implicit." из PEP20. Остальной PEP весьма неплох.

Reply

bluedrag March 8 2019, 02:51:06 UTC
Ну, во-первых, это поэзия, а не программирование.

А во-вторых: ты что, не согласен?

Reply

recoder March 8 2019, 03:48:29 UTC
Нет, я считаю что наиглавнейшим способом построения абстракций является DRY, иначе - погрязнем в эксплицитности, а где много понаписано - там больше вероятности ошибок.

Reply


Leave a comment

Up