The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск Exim 4.90.1 с устранением уязвимости, не исключающей ..."
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "Выпуск Exim 4.90.1 с устранением уязвимости, не исключающей ..." –2 +/
Сообщение от Orduemail (ok), 13-Фев-18, 06:02 
> Exim написал чувак который половину своей жизни был программером IBM mainframe(s) ...

Оу, действительно. Заглянул в википедию -- это ведь такое старпёрище, что у меня всякое удивление пропало от того, как можно писать столь говённый код.

В коде видно, что principle of the least surprize этому Хазелу не известен совершенно. Мысль о том, что программы пишутся для людей, а не компьютеров тоже ни разу не освещала его внутричерепные пустоты. Код напоминает ассемблерную лапшу для тех самых 286 и для даже более младших микропроцессоров. Лапшу, от которой Дейкстру хватил бы удар, потому что там считалось, что экономия двух байт на стеке стоит того, чтобы уже запутанный код запутать ещё больше. При этом код совершенно игнорирует способности современных компиляторов к оптимизации, он высокооптимизированный, но для компилятора C из 80-х годов, который генерировал машинный код более похожим на исходный, чем современный компилятор генерирует с флагом -O0 для удобства отладки. Кстати встаёт вопрос, не становится ли этот код медленнее из-за демонстративного игнорирования способностей компилятора к оптимизации.

Пока я втыкал в этот код, я вспоминал одного из преподавателей информатики в своей молодости, который втирал мне, что инициализируя переменную типа float целым числом, надо в сорце обязательно писать не 'float a = 2', а 'float a = 2.0'. Само по себе может и здравая мысль (rust, например, требует писать именно так), но аутентичное объяснение этому было феерическим: если написать 2, то компилятор сгенерирует код, который будет преобразовывать (int)2, к (float)2.0, а это (sic!) замедлит программу. Будучи ещё молодым и глупым тогда, двадцать лет назад в конце 90-х, я слушал его со скепсисом, подозревая, что меня где-то нaёбывают (благоразумно сохраняя молчание: мне был нужен зачёт), но в в конце 10-х -- через двадцать мазафака лет -- я вижу "продакшн" код, который был написан на тех же принципах.

Вот смотришь в этот код и удивляешься: как так можно? Но всякое удивление пропадает, когда узнаёшь что автор всю жизнь отработал в IT, вышел на пенсию десять лет тому назад, и уже успел написать мемуары: многим людям не удаётся испытать на себе, что такое открытость к новым идеям, но лишь очень немногим удаётся сохранить эту открытость до старости.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Выпуск Exim 4.90.1 с устранением уязвимости, не исключающей ..., opennews, 11-Фев-18, 09:33  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру