Машина Даффа (устройство Даффа) — различия между версиями

Материал из Весельчак У
Перейти к: навигация, поиск
(Новая страница: «На самом деле это не физическое устройство, а идиома программирования на языке ANSI C. '''М.Д.''...»)
(нет различий)

Версия 17:16, 6 октября 2011

На самом деле это не физическое устройство, а идиома программирования на языке ANSI C.

М.Д. была придумана компьютерным инженером канадского происхождения Томом Даффом (см. Tom Duff). Оригинальность и непривычность подхода Даффа поражают при первом знакомстве: одни считают это гениальным трюком, другие - грязным хаком (см. обсуждение статьи "Сопрограммы в языке программирования C"), но равнодушным не остается практически никто.

Классическая М.Д. выглядит так. Операторы switch и do while переплетены в ней настолько причудливо, что первый вопрос, кторый у всех возникает при виде М.Д.: "А это в самом деле можно скомпилировать без ошибок???". Но на самом деле М.Д. не противоречит ни синтаксису ANSI C, ни здравому смыслу; более того, умелое ее использование позволяет красиво решать самые различные задачи, например, "раскручивание циклов", построение конечных автоматов, реализация кооперативной многозадачности через механизм протопотоков и т.п.