Чтобы продемонстрировать важность алгоритмов (например, для студентов и преподавателей, которые не занимаются теорией или даже из совершенно разных областей), иногда полезно иметь под рукой список примеров, где основные алгоритмы были развернуты в коммерческих, государственных и или широко используемое программное / аппаратное обеспечение.
Я ищу такие примеры, которые удовлетворяют следующим критериям:
Программное / аппаратное обеспечение, использующее алгоритм, должно широко использоваться прямо сейчас.
Пример должен быть конкретным. Пожалуйста, дайте ссылку на конкретную систему и конкретный алгоритм.
Например, в «алгоритме X полезно для обработки изображений» термин «обработка изображений» недостаточно конкретен; в «поиске Google используются алгоритмы графа» термин «алгоритмы графа» недостаточно конкретен.Алгоритм должен преподаваться в типичной бакалавриата или Ph.D. классы в алгоритмах или структурах данных. В идеале алгоритм описан в типичных учебниках по алгоритмам. Например, «хорошо известная система X использует малоизвестный алгоритм Y» - это плохо.
Обновить:
Еще раз спасибо за отличные ответы и ссылки! Некоторые люди отмечают, что эти критерии сложно удовлетворить, поскольку основные алгоритмы настолько распространены, что трудно указать на конкретное использование. Я вижу сложность. Но я думаю, что стоит привести конкретные примеры, потому что по моему опыту я говорю людям: «Послушайте, алгоритмы важны, потому что они повсюду !» не работает.
Ответы:
На мой взгляд, алгоритмы, являющиеся основной движущей силой системы, легче найти в курсах, не связанных с алгоритмами, по той же причине теоремы с непосредственным применением легче найти в прикладной математике, чем в курсах чистой математики. Практическая проблема редко имеет точную структуру абстрактной проблемы в лекции. Чтобы спорить, я не вижу причин, по которым модные учебные материалы по алгоритмам, такие как умножение Штрассена, тест простоты AKS или алгоритм Мозера-Тардоса, актуальны для практических задач низкого уровня по реализации видеобазы данных, оптимизирующего компилятора, операционной системы. система контроля перегрузки сети или любая другая система. Ценность этих курсов состоит в том, чтобы узнать, что существуют сложные способы использования структуры проблемы для нахождения эффективных решений. В продвинутых алгоритмах также встречаются простые алгоритмы, анализ которых нетривиален. По этой причине я бы не отказался от простых рандомизированных алгоритмов или PageRank.
Я думаю, что вы можете выбрать любой большой кусок программного обеспечения и найти основные и продвинутые алгоритмы, реализованные в нем. В качестве примера я сделал это для ядра Linux и показал несколько примеров из Chromium.
Основные структуры данных и алгоритмы в ядре Linux
Ссылки на исходный код на github .
B + Деревья с комментариями, рассказывающими о том, что вы не можете найти в учебниках.
Сортированные по приоритету списки, используемые для мьютексов , драйверов и т. Д.
Деревья Radix , используются для управления памятью , поиска по NFS и функциональности, связанной с сетью.
Приоритетная куча , которая буквально является реализацией учебника, используется в системе контрольной группы .
Хеш-функции , со ссылкой на Кнута и на статью.
Некоторые части кода, такие как этот драйвер , реализуют свою собственную хэш-функцию.
Битовые массивы , которые используются для работы с флагами, прерываниями и т. Д. И представлены в Knuth Vol. 4.
Семафоры и спиновые замки
Бинарный поиск используется для обработки прерываний , поиска в кэше регистров и т. Д.
Бинарный поиск с B-деревьями
Первый поиск глубины и вариант, используемый в конфигурации каталога .
Поиск в ширину используется для проверки правильности блокировки во время выполнения.
Сортировка слиянием в связанных списках используется для сбора мусора , управления файловой системой и т. Д.
Bubble sort также великолепно реализован в библиотеке драйверов.
Соответствие строк Кнута-Морриса-Пратта ,
Сопоставление паттерна Бойера-Мура со ссылками и рекомендациями о том, когда отдавать предпочтение альтернативе.
Структуры данных и алгоритмы в браузере Chromium
Ссылки на исходный код в коде Google . Я только перечислю несколько. Я бы предложил использовать функцию поиска для поиска вашего любимого алгоритма или структуры данных.
Языковые библиотеки программирования
Я думаю, что они заслуживают рассмотрения. Разработчики языков программирования считали, что одними инженерами стоит потратить время и усилия на реализацию этих структур данных и алгоритмов, чтобы другим не пришлось этого делать. Существование библиотек является одной из причин, по которым мы можем найти базовые структуры данных, переопределяемые в программном обеспечении, написанном на C, но в меньшей степени для приложений Java.
Алгоритмы распределения и планирования
Я нахожу это интересным, потому что, хотя они и называются эвристикой, используемая вами политика определяет тип алгоритма и структуру данных, которые необходимы, поэтому необходимо знать о стеках и очередях.
Основные утилиты в * nix системах
Криптографические алгоритмы
Это может быть очень длинный список. Криптографические алгоритмы реализованы во всем программном обеспечении, которое может выполнять безопасную связь или транзакции.
Составители
Сжатие и обработка изображений
Конфликтное обучение
Начиная с 2000 года, время работы SAT решателей в промышленных тестах (обычно в аппаратной промышленности, хотя используются и другие источники) сокращалось почти экспоненциально с каждым годом. Очень важной частью этой разработки является алгоритм обучения, основанный на конфликтах, который сочетает алгоритм логического распространения ограничений в оригинальной статье Дэвиса Логемана и Лавленда с техникой обучения предложений, которая возникла в программировании ограничений и исследованиях искусственного интеллекта. Для конкретного промышленного моделирования SAT считается простой проблемой ( см. Это обсуждение). Для меня это одна из величайших историй успеха в последнее время, потому что она сочетает в себе алгоритмические достижения, распространенные в течение нескольких лет, умные инженерные идеи, экспериментальную оценку и совместные совместные усилия по решению проблемы. Статья CACM Маликом и Чжан хорошо читать. Этот алгоритм преподается во многих университетах (я посещал четыре, где это было так), но обычно в классе логики или формальных методов.
Приложения SAT решателей многочисленны. IBM, Intel и многие другие компании имеют свои собственные решения для решения SAT. Менеджер пакетов в OpenSUSE также использует SAT-решатель.
источник
PageRank является одним из самых известных таких алгоритмов. Разработанная соучредителем Google Ларри Пейджем и соавторами, она легла в основу оригинальной поисковой системы Google и получила широкую известность за помощь в достижении лучших результатов поиска, чем у их конкурентов в то время.
Мы представляем себе «случайного серфера», который начинается с какой-то веб-страницы и постоянно щелкает случайную ссылку, чтобы перевести его на новую страницу. Вопрос в том, «Какую часть времени будет проводить серфер на каждой странице?» Чем больше времени серфер проводит на странице, тем более важной считается страница.
источник
Я бы упомянул широко используемую программную реализацию CPLEX (или аналогичную) метода / алгоритма Simplex для решения задач линейного программирования. Это (?) Наиболее часто используемый алгоритм в исследованиях экономики и операций.
«Если взять статистику о том, какая математическая проблема использует большую часть компьютерного времени в мире, то (не считая проблем обработки базы данных, таких как сортировка и поиск), ответ, вероятно, будет линейным программированием. (Л. Ловас, новый Алгоритм линейного программирования - лучше или хуже, чем симплекс-метод? Math. Intelligencer 2 (3) (1979/80) 141-146.)
Симплексный алгоритм также имеет большое влияние в теории; см., например, (полиномиальную) гипотезу Гирша .
Я думаю, типичный студент или доктор философии. Класс в алгоритмах имеет дело с алгоритмом Симплекс (включая основные алгоритмы из линейной алгебры, такие как метод исключения Гаусса).
(Другие успешные алгоритмы, включая быструю сортировку, перечислены в разделе «Алгоритмы из книги» .)
источник
Насколько я понимаю, Национальная программа подбора жильцов долгое время представляла собой прямое применение алгоритма Гейла-Шепли для решения проблемы стабильного брака. С тех пор он был немного обновлен, чтобы обрабатывать некоторые дополнительные детали, такие как супружеские задания («проблема двух тел») и т. Д.
источник
Если вы также включаете материал уровня PhD, многие (большинство?) Программы для выпускников CS включают некоторый курс по теории кодирования. Если у вас есть курс по теории кодирования, вы обязательно охватите код Рида-Соломона, который является неотъемлемой частью работы компакт-дисков и кодирование Хаффмана, которое используется в форматах JPEG, MP3 и ZIP. В зависимости от ориентации курса, вы можете также покрыть Lempel-Ziv, который используется в формате GIF. Лично я получил Лемпеля-Зива на курсах по алгоритму бакалавриата, но я думаю, что это может быть нетипично.
источник
GNU grep - это инструмент командной строки для поиска в одном или нескольких входных файлах строк, содержащих соответствие указанному шаблону. Общеизвестно, что grep очень быстр! Вот цитата из ее автора Майка Хертела (взято отсюда ):
источник
В более общем смысле, премия Канеллакиса присуждается АСМ именно за те теоретические открытия, которые оказали большое влияние на практике.
награда 2012 года присуждается за хеширование с учетом локальных особенностей , которое стало методом перехода к уменьшению размерности при извлечении данных для проблем ближнего зарубежья (и относительно прост в обучении - по крайней мере, сам алгоритм)
источник
Некоторые примеры промышленного использования этих структур данных:
Вот также сайт, который собирает информацию о приложениях CountMin.
Что касается преподавания, я знаю, что в Принстоне на базовых курсах дискретной математики преподаются основные приемы рисования. Меня учили эскизу CountMin в моем первом курсе алгоритмов. В любом случае анализ CountMin проще, чем анализ почти любого другого рандомизированного алгоритма: это прямое применение парной независимости и неравенства Маркова. Если это не стандартный материал в большинстве курсов по алгоритмам, я думаю, это по историческим причинам.
источник
В последнее десятилетие алгоритмы использовались для увеличения количества (и качества, я думаю?) Трансплантации почки с помощью различных программ подбора донорских почек. У меня были проблемы с поиском последних новостей по этому поводу, но вот по крайней мере несколько указателей:
Совсем недавно, в 2007 году, Альянс за пожертвования в паре использовал алгоритм Абрахама, Блума и Сандхольма . Они могут все еще использовать это, но я не мог узнать, ища онлайн. Хотя этот алгоритм почти наверняка не охвачен «стандартными» курсами, он объединяет несколько фундаментальных идей, которые, безусловно, преподаются на таких курсах, чтобы обеспечить достаточно хороший алгоритм для задачи, которая, как правило, является NP-полной (вариант Cycle Cover ).
Национальный реестр почек также использует некоторые стандартные алгоритмы, в том числе (в одной точке) CPLEX. Это привело к фактически выполненной цепочке трансплантаций, связывающей 60 человек .
Это один из моих любимых примеров не только успеха алгоритмов, но и важности изучения алгоритмов для NP-полных задач. Они могут буквально спасать жизни , и уже сделали это!
источник
Алгоритм Витерби, который до сих пор широко используется в распознавании речи и во многих других приложениях: http://en.wikipedia.org/wiki/Viterbi_algorithm Сам алгоритм является базовым динамическим программированием.
Из Википедии: «Алгоритм Витерби был предложен Эндрю Витерби в 1967 году в качестве алгоритма декодирования сверточных кодов по шумным цифровым каналам связи. [1] Алгоритм нашел универсальное применение при декодировании сверточных кодов, используемых как в цифровой сотовой сети CDMA, так и в GSM, коммутируемые модемы, спутниковая связь, связь в дальнем космосе и беспроводные локальные сети 802.11. В настоящее время он также широко используется в распознавании речи, синтезе речи, определении ключевых слов, компьютерной лингвистике и биоинформатике. Например, в преобразовании речи в текст (речь распознавания), акустический сигнал рассматривается как наблюдаемая последовательность событий, а текстовая строка считается «скрытой причиной» акустического сигнала. Алгоритм Витерби находит наиболее вероятную текстовую строку с учетом акустического сигнала ».
источник
источник
Познакомьтесь с проектом Jens Vygen BonnTools для Chip Design. http://www.or.uni-bonn.de/~vygen/projects.html Я слышал некоторые разговоры по этому вопросу, а также посмотрел некоторые из их документов. Они используют рандомизированное округление в стиле Рагхавана-Томпсона, а также метод мультипликативного обновления веса для решения крупномасштабных LP с множественным товарным потоком. Тем не менее, как и в любом большом проекте, им также необходимо выполнить некоторые инженерные работы, но методология в значительной степени основана на известных алгоритмах.
источник
Забавно, что я видел этот вопрос сегодня, а затем по совпадению нажал эту ссылку на множество применений преобразования Фурье .
источник
Я довольно удивлен, что со всеми причудливыми алгоритмами, описанными выше, никто не упомянул почтенное семейство алгоритмов сжатия Лемпеля-Зива (изобретено в 1977/78).
Обновить
Видимо, это было упомянуто уже кратко.
источник
Разложение по сингулярным числам (SVD) имеет тесную связь со статистическим факторным анализом или анализом главных компонентов и является приемлемым для студентов линейной алгебры или класса статистики и имеет много важных теоретических свойств. это также играет роль в алгоритмах сжатия изображений. он сыграл ключевую роль в призовых конкурсах на приз $ 1M Netflix (одно из крупнейших в мире соревнований по сбору данных) и теперь используется на их сайте для прогнозирования пользовательских рейтингов. также известно, что он тесно связан с самоорганизующимися нейронными сетями Хебба, которые берут свое начало в биологической теории.
есть некоторая связь также с градиентным спуском который широко используется в машинном обучении и искусственных нейронных сетях и как очень универсально применяемый метод оптимизации, в этом случае метод Ньютона является основной 2-мерной формой. есть алгоритм градиентного спуска для получения СВД.
источник
Нахождение эйлерова пути лежит в основе сборки генома - задача, обычно выполняемая при работе с полными геномами (в биоинформатике, медицине, криминалистике, экологии).
ОБНОВЛЕНИЕ Забудьте об этом очевидном: UPS, FedEx, USPS должны каждую ночь решать большие проблемы с коммивояжером. Экономит много времени и денег для отправки водителей по оптимальному маршруту.
ОБНОВЛЕНИЕ2 Проблема минимального набора вершин обратной связи используется для разрешения взаимоблокировок во многих ОС.
источник
Мне нравится эта система для спасения максимального количества жизней в Великобритании с помощью трансплантации почки, основанная на алгоритмах максимального соответствия: парное и альтруистическое донорство почек . Они подбирают людей, нуждающихся в почках, у которых есть несоответствующий друг / родственник, готовый пожертвовать, с другими людьми в той же ситуации, максимально. Затем в день пожертвования все доноры делают пожертвование одновременно, после чего следует быстрая доставка почек по всей стране получателям.
источник
Эта относительно новая книга заслуживает рассмотрения в качестве полного / подробного ответа на вопрос в удобной, расширенной / собранной форме и которая может быть использована в качестве дополнительного материала для класса алгоритмов. [некоторые из них уже упоминались; Сильное перекрытие само по себе заметно.]
Девять алгоритмов, которые изменили будущее: гениальные идеи, которые управляют современными компьютерами от MacCormick
Еще одно упоминание, несколько похожее, но более теоретическое, «Лучшее из 20-го века: редакторы назвали 10 лучших алгоритмов Cipra / SIAM».
источник
Кнут-Морриса-Пратта строка поиска широко используется, специфичным и преподавал в старшекурсник / дипломной CS.
источник
Думая об очень простых алгоритмах
Приятно показать, что они появляются в реальной жизни:
A. Многие группы используют своего рода алгоритм покрывающего дерева для связи путем иерархического разделения телефонных списков между людьми B. Автомобили на перекрестке обычно используют алгоритм циклического перебора (добровольно) C. Большинство мест, например банки и больницы, организовать их клиентов в алгоритме FIFO
источник
Увлекательная алгоритмическая проблема возникает в медицинском применении компьютерной томографии. В компьютерной томографии (КТ) тело подвергается воздействию рентгеновских лучей под разными углами. На одном конце сканера расположены рентгеновские передатчики, а на другом - датчики. Из такой серии сканирований изображение реконструируется для изучения врачом!
Проекция фильтруется обратно алгоритм является основой для реконструкции изображения из набора сканирования. Этот алгоритм фактически является формой задачи аппроксимации, в которой "сигнал" дискретизируется ниже частоты Найквиста. Этот алгоритм используется «за кулисами» во всех больницах, и базовая отфильтрованная обратная проекция использует студенческую математику, такую как преобразования Фурье, для достижения теоремы среза Фурье .
источник
Пример БПФ
Однажды я помог перенести алгоритм FFT на другой системный язык.
Алгоритм использовался для определения разрывов линий при коаксиальной доставке кабельного телевидения / интернета / телефона. Обычно технический специалист запрашивает сигнал для отправки на ящик клиента, в то же время он отображает статистику по конкретному клиенту в режиме реального времени, такую как QoS, дБ, ... Технический специалист может использовать данные и график, чтобы определить в пределах нескольких футов между домом и полюсом, где существовал частичный разрыв (или несколько разрывов, как мне сказали).
Как уже упоминалось выше, БПФ широко используется, но это было одно из самых явных и очевидных (с точки зрения того, почему и как), которые я видел на практике.
Извините, я должен был держать это на высоком уровне.
источник
Линейный алгоритм Брезенхэма - единственный наиболее полезный алгоритм, с которым я сталкивался. Легко понять, что я использовал его для множества приложений, от рисования линий до сложного сплайнера для 3D-движка, до сложного рендера многоугольников, а также для сложной анимации и масштабирования.
источник
Настраиваемое планирование маршрута (Дэниел Деллинг, Эндрю В. Гольдберг, Томас Паджор и Ренато Ф. Вернек) http://research.microsoft.com/apps/pubs/default.aspx?id=145688
полномочия Bing Maps: http://www.bing.com/blogs/site_blogs/b/maps/archive/2012/01/05/bing-maps-new-routing-engine.aspx
источник
В Википедии есть приличная коллекция алгоритмов / приложений, более или менее классифицированных в списке . Microsoft предоставляет наиболее цитируемые статьи, но без какого-либо четкого объяснения области информатики или приложения. Существует также хронологический список из различных конференций CS _http: //jeffhuang.com/best_paper_awards.html_, составленный профессором Хуан.
Спектральная кластеризация - это элегантный алгоритм кластеризации, известный как алгоритм нормализованных разрезов , представленный Jianbo Shi и Jitendra Malik для сегментации изображения. Он также был хорошо разработан в приложениях кластеризации данных, являясь хорошим пересечением между двумя сообществами.
источник
два других личных любимых примера, прочно укоренившихся в компьютерных науках, но, возможно, легко игнорируемых теоретиками-абстракционистами, которые претерпели огромные / преобразующие достижения и оказали значительное или практическое практическое влияние в повседневной жизни за последние несколько десятилетий. уже выросло целое поколение, не зная мира без них. в основном категория Моделирование и симуляция .
алгоритмы физического моделирования . в основном с использованием законов Ньютона, но с использованием других законов (таких как динамика жидкости). используется в самых разных приложениях, начиная от инженерных приложений, видеоигр и иногда до фильмов. это также отвечает за значительное повышение безопасности, эффективности или надежности, например, автомобилей и самолетов, посредством виртуальных / испытательных конструкций, подвергающихся моделируемым нагрузкам. основная связанная область текущих исследований в области биоинформатики, имеющая огромное значение для биологии, например, разработка лекарств, профилактика заболеваний и т. д .: прогнозирование складывания белка / структуры . Также отметим, что в этом году Нобелевская премия по химии была присуждена за химическое моделирование Карплюсу, Левитту, Варшелю. Алгоритмы физического моделирования активно используются, обеспечении безопасности / испытаний ядерного оружиянапример, в лабораториях Лос-Аламоса.
алгоритмы трассировки лучей / CGI . это началось как тема исследования всего несколько десятилетий назад [друг получил степень магистра в области алгоритмов трассировки лучей в CS], но стало очень распространенным, например, в играх и бизнесе по созданию фильмов, достигая необычайного уровня правдоподобия, который ответственен за большое количество спецэффекты в кино. в эти отрасли вложены буквально миллиарды долларов и они основаны на этих алгоритмах, и целые крупные корпорации используют их, например Pixar . в основном первоначально использовавшаяся, например, в фантастических фильмах, эта техника сейчас настолько широко распространена, что обычно используется даже в «типичных» фильмах. например недавно Великий Гэтсби в значительной степени полагались на эффекты CGI для создания убедительных или стилизованных окружений, ретуширования фильма / персонажей и т. д.
источник
Код Rosetta перечисляет применяемые алгоритмы с помощью Задачи программирования (692) и Языка программирования (518) с Semantic MediaWiki.
источник
возможно, все основные / предпочтительные алгоритмы, представляющие интерес для этой аудитории, уже упоминались. однако, еще несколько заслуживают упоминания для полноты. И здесь важен некоторый анализ того, что считается значимым алгоритмом.
в областях CS & IT, по-видимому, давно было замечено явление в искусственном интеллекте, которое называется «перемещение ворот» . Это психологический феномен, когда поле продвигается относительно быстро, но люди быстро мысленно приспосабливаются к «новому нормальному состоянию» и воспринимают реальные или даже прорывные достижения как обыденные или непримечательные в ретроспективе, после того, как достигнуты, то есть преуменьшены или сведены к минимуму. в этом вопросе это отражается в том, как алгоритмы переходят от НИОКР к «развертыванию». цитируя автора вопроса в последующих комментариях:
но это проблематично и в основном TCS-ориентированное переопределение слова «алгоритм». по-видимому, интересные алгоритмы продвинуты. Означает ли это, что если задача сводится к расширенному алгоритму, она перестает быть «интересной»? и «продвинутый» явно движущаяся цель. так что есть способ определить «алгоритмы» узко или широко . кажется, что определение TCS меняется в контексте, но, обратите внимание, даже в TCS наблюдается тенденция к широкому определению, например, в так называемой «алгоритмической линзе» .
иногда самые вездесущие алгоритмы также игнорируются! Интернет и WWW - это большая среда / почти экология для алгоритмов. еще сравнительно молодой, всего лишь около двух десятилетий (изобретенный в 1991 году), за короткий промежуток времени он значительно вырос и экспоненциально вырос. Рост сайта WWW, вероятно, даже опередил знаменитый экспоненциальный закон Мура.
Интернет / WWW поддерживаются многими сложными алгоритмами. Интернет имеет сложные алгоритмы маршрутизации, встроенные в маршрутизаторы (опять-таки, обеспечивающие работу многомиллиардных корпораций, таких как Cisco). некоторая продвинутая теория применима там, например, в алгоритмах маршрутизации . Эти алгоритмы были предметом новых, передовых / передовых исследований десятилетия назад, однако теперь они настолько хорошо настроены и хорошо поняты, что их несколько не видно.
мы не должны так скоро забывать, что десятилетия назад ведущие исследователи даже не были уверены в том, что интернет-мир работает или был возможен (это было замечено в ранних исследованиях по коммутации пакетов, радикально новому шаблону проектирования в то время, когда он отличался от предыдущей коммутации каналов), и даже несколько лет назад были опасения, что в какой-то момент он не сможет масштабироваться и начнет выходить из строя из-за огромных скачков в объеме.
он также использует сложное обнаружение / исправление ошибок . Интернет, вероятно, самая большая, самая отказоустойчивая система, когда-либо созданная людьми, которая продолжает развиваться.
Далее, есть веские основания утверждать, что алгоритмы, питающие WWW, являются передовыми. HTTP и веб-серверы хорошо настроены / оптимизированы, а также используют расширенные протоколы безопасности / шифрования (HTTPS). логика рендеринга веб-страницы стала чрезвычайно продвинутой в HTML5 и CSS3 наряду с языком программирования Javascript .
относительно новый CSS имеет различные принципы, схожие с ООП-программированием, такие как повторное использование и наследование. Говоря о наборе текста, TeX - это важная, внутренне сложная научная система набора текста (не очень отличающаяся от языка программирования), изобретенная Кнутом, которая теперь может отображаться на веб-страницах (и используется, возможно, в сотнях тысяч научных работ и более).
еще одна относительно новая область построения алгоритмов в Интернете, все еще появляющаяся, основанная на коллективном интеллекте . Программное обеспечение stackexchange само по себе является примером сложной системы коллективного интеллекта. Социальные сети также демонстрируют ключевые особенности коллективного интеллекта, и его возможности постоянно добавляются для увеличения этого интеллекта (например, «лайкам» на Facebook всего несколько лет). область рейтинговых систем основана на алгоритмах совместной фильтрации и все еще развивается на основе новых исследований и приложений.
Короче говоря, все революционные успехи, преобразующие повседневный человеческий опыт, на самом деле выходят далеко за рамки просто «полевых целей». как гласит заголовок вопроса, все основные алгоритмы развернуты . теперь такой вездесущий и невидимый, что может быть чем-то вроде выражения ИТ, «частью сантехники».
источник
Удивительно успешным (аппаратным) алгоритмом является сброс при включении питания.
Без системы, в которой компьютер находится в известном состоянии при подаче питания, ничего другого не происходит правильно .
Сброс при включении питания - это то, почему все работает с процессором, считается ли оно встроенным или нет.
В следующий раз, когда вы окажетесь у водопоя для программистов и компьютерщиков, поднимите стакан с вишневой содой до сброса при включении.
источник