Выбор детерминанта на роль хеш-функции. У меня даже слов не хватает, чтобы выразить всю глупость этого. Во-первых, это очень дорогая в вычислительном плане функция, причём с неприятным ростом количества вычислений от размера матрицы. Лобовая реализация имеет факториальную зависимость, а через метод Гаусса «всего лишь» кубическую. Во-вторых, очень подвержена коллизиям, причём как раз на наиболее вероятных причинах модификации исходной матрицы. Например определитель транспонированной матрицы всегда равен определителю исходной.
Применение операции == для вещественных чисел. Новички, объяснять все причины долго, так что запомните как аксиому: операцию == можно применять только к целым числам, а вещественные всегда сравниваются путём вычисления их разницы и проверки, что она по модулю меньше определённого порога.
Незнание об автоматическом приведении типов в используемом языке (скорее всего, C). Функция det() может возвращать значение не double, а более ёмкого типа, который компилятор приводит в double при присвоении в double и, наоборот, до которого расширит double при сравнении. С учётом этого факта никаких странностей в приведённом коде нет вообще — всё вполне логично. Перед тем как кидаться с обвинениями в адрес разработчиков компилятора, стоило открыть определение функции det() и посмотреть на тип результата, потом внимательно почитать описание стандарта языка программирования и сравнить реализацию на соответствие; наконец, почитать описание компилятора на тему особенностей реализации на той или иной аппаратной платформе и возможных отклонений от стандартов.
Морали в этой истории две.
Первая: не выпендривайтесь с применением того, что вы толком не понимаете. Вместо ускорения вы можете получить торможение, а задачу при этом так и не решите.
Вторая: когда сталкиваетесь со странным поведением кода, всегда ищите проблему с мыслью «а не дурак ли я?». Это куда чаще оказывается правильным, чем поиск с мыслью «где-то налажали разработчики компилятора и ОС». Не то чтобы их пишут непогрешимые — это не так, ошибки в них действительно встречаются. Но это происходит значительно реже, чем ошибки начинающих и даже опытных программистов в их собственном коде.
#12140: Сейчас станет горячо
12:00 26.04.2014, IT happens
Я медленно, бережно достаю из коробки свеженький чёрный корпус. Отделяю пенопласт, отправляю его обратно в коробку, затем нетерпеливо снимаю с корпуса полиэтилен. Подрагивающей в предвкушении рукой откручиваю левую стенку…
Материнка, уже лишённая покровов, лежит на столе. Плавно вставляю в слот двухгигабайтную палку DDR3. Аккуратно снимаю заглушку со слота процессора. Достаю из упаковки новенький Core i3, нежно ставлю его на место и уверенно защёлкиваю фиксатор: сейчас начнётся! Тюбик без опознавательных знаков тонким слоем размазывает по процессору поблёскивающую термопасту, излишки мажу на радиатор кулера. Аккуратно, но уверенно вставляю защёлки кулера в отверстия платы. Кулер закреплён, материнка готова. Я бережно помещаю её в корпус, подрагивающими от волнения руками закручиваю винты. Подключение питания и разъёмов — особое удовольствие. Их много, входят с небольшим усилием, но сидят прекрасно!
Винчестер нехотя позволил себя вкрутить и подключить. Сейчас станет горячо! Подключена периферия и загрузочная флешка. У кнопки питания фантастический звук щелчка.
Тихонько зашуршали кулеры… На мониторе пробежала серая полоска, вспыхнул «витраж», синенький диалог на синем фоне — о да! А пока дистриб распаковывается, можно и покурить… Как же приятно собирать новую машинку, пускай и офисную минималку!
Люди, я нормальный? Это лечится? Или стоит всё же нормальный прон сквозь отвращение смотреть?
#12141: Последняя верста глубинки
12:12 26.04.2014, IT happens
Кого-то задолбали провайдеры, навязывающие свои услуги, а я этим людям даже немного завидую.
Дело в том, что мой дом находится в недавно построенном коттеджном посёлке. Конечно, тут работает и 3G, и 4G, и мобильники — но всё-таки это не сравнить с быстрым интернетом по оптике или витой паре.
Уважаемые провайдеры! Может быть, вы перестанете задалбывать жителей многоэтажек, тратя миллионы на колл-центры, а вложитесь немного в прокладку «последней мили» в подобные посёлки, которых тут вокруг великое множество? До ближайшего города — прямая видимость и какие-то коммуникации. Наверняка можно либо договориться с энергетиками и кинуть оптику, либо повесить приличные радиомодемы.
Просто мне самому сейчас вспоминать былое, городить с нуля фирму, получать на неё лицензии, строить и сертифицировать узлы связи, заключать договоры с кучей организаций только ради того, чтобы ускорить интернет дома на ноутбуке — это как-то очень уж чересчур.
#12142: Лучший антивирус — мухобойка
16:00 26.04.2014, IT happens