Истории с тегом: программизмы

Всего историй: 900

2975

Режим авиасимулятора

Писали как-то на первом курсе лабораторную на Паскале с меню, по которому передвижения происходят с помощью стрелок. Меню дописывали в последнюю ночь, поэтому времени на отладку не было. Показываем программу: стрелка вверх передвигает курсор вниз, а стрелка вниз двигает вверх. Принимающий говорит, чтобы исправили прямо при нём.

Мозги у нас уже не соображают, тупое переделывание кодов стрелок приводит к отказу в компиляции. Один из нас дописывает чуть ниже меню: «Внимание: стрелка вниз двигает курсор вверх и наоборот. Будьте внимательны!» Работу защитили.

2959

Опрометчивая оптимизация

Начну издалека. Есть такая модель вычислений: demand-driven computation. В ней считается только то, что нужно посчитать. А еще есть common subexpression elimination — это такая техника оптимизации в компиляторах. Проще всего объяснить на примере: из sqrt(2) в пяти местах компилятор один раз сделает double s2 = sqrt(2), после чего везде будет использовать s2. Это можно усугубить, вбив вместо вычисления sqrt(2) просто константу.

Так вот, когда-то давно, когда машины были большие, проводились сравнения разных компиляторов Фортрана. Им подсовывалась тестовая программа, измерялось время компиляции и время работы скомпилированного бинарника. Особенно в этом сравнении отличились два коммерческих компилятора.

Дело в том, что тестовая программа только что-то считала, но не выводила результат. Умный компилятор рассуждал так: если результат никому не нужен, зачем его считать? Это допустимое поведение, но не для Фортрана же! В результате тест был провален, потому что тестовая программа отрабатывала моментально. Да-да, вы правильно догадались. Оптимизированный вариант выглядел так: exit(0).

После этого в тест добавили вывод результата вычислений. Тут уже отличился другой продукт: компилировал тестовую программу он три часа, зато отработала она опять-таки моментально. В оптимизированном коде было нечто вроде printf(result) — программа сразу выводила результат вычислений, который компилятор в поте лица и считал так долго.

2932

Ещё одну бы точку входа

Совсем неайтишный отдел одной не очень-то айтишной компании. Рабочее время. Девочка-блондинка вполне офисной внешности и не менее манагерского вида мальчик сидят за одним столом, придвинувшись друг у другу, насколько это позволяют подлокотники кресел, и увлечённо, забыв обо всём, смотрят в экран ноутбука. Процесс сопровождается эмоциональными междометиями, обменом горящими взглядами и порывистыми движениями рук.

Это дело замечает босс. Ага, всё ясно: в рабочее время смотрят понятно какого содержания видео, причём настолько увлеклись, что, похоже, уже готовы перейти от созерцания к действию! Совсем охренели! Босс тихо подходит и заглядывает в экран, где его и постигает разрыв шаблона: взору предстаёт синий фон с ровными колонками каких-то непонятных букв и цифр.

...А мы всего лишь потрошили код одной программки, которая нам очень пригодилась бы по работе, если б её вот тут и вот здесь чуть-чуть переделать.

2924

Негативная реакция

Тестирую я одну железяку, которая по непонятному протоколу передаёт данные. Два порта этой штуковины соединены кабелем.

Даю последовательность: 0x55 0xAA. На второй порт приходят эти данные в обратном порядке: 0xAA 0x55.

Пожав плечами, даю другой тест, подлиннее: 0x00000000 0x55555555 0xAAAAAAAA 0xFFFFFFFF. Что приходит в ответ? Правильно, все данные в обратном порядке: 0xFFFFFFFF 0xAAAAAAAA 0x55555555 0x00000000.

Даю поток случайных данных. Байты сначала меняются местами (0xDD 0x22 -> 0x22 0xDD), потом передача подыхает окончательно. Что за фигня? С этой мыслью ухожу на перерыв на сон.

Возвращаюсь на работу, исследую фигню. Догадались? Данные не менялись местами, а просто инвертировались.

2835

Очень красивые люди

Зарегистрировался в относительно новой социальной сети Beautiful People. В четыре утра по Москве захотелось початиться — сеть это позволяет.

Было открыто три комнаты. В двух очень живо общались бразильцы и испанцы; меня же заинтересовала третья под названием «If you're pretty make some noise». Кого же я там обнаружил? Трёх парней, которые спорили, на чём сайт написан, что же лучше, Notepad++ или Visual Studio, и не наваять ли им «new BP» на троих, но только с большим количеством картинок.

Наблюдал я за ними минут десять. В конце концов один из них изрёк: «We killed the room». Вскоре компания разбежалась, договорившись обязательно обсудить тему ещё разок.

Нигде от собратов по цеху не скрыться. Тянет нас друг к другу неведомым и очень сильным притяжением.

2812

Не злись, малыш

Я — junior PHP-программер в одной из украинских веб-студий, и часть моих поступков и решений основана на том веровании, что все Машины и Серверы — существа с живой душой, которая иногда не в тему решает напакостить. Думаю, не стоит знающим людям рассказывать о том, что абсолютно одинаковый по логике код может артачиться из-за неполиткорректного обзывания переменной, вечером может работать, а утром «ложиться». Правда, происходит это всё без эмоций, и понять, что в это время крутится в кремниевых мозгах машины, невозможно... По крайней мере, я так думал и был уверен.

Работаю с FTP. Сливаю на свою машину бэкап одного чата, который неделю назад не работал, а сейчас тикает как часы (и это при том же коде). Вдруг загрузка прерывается на файле tired.png. Про себя думаю — вот ведь бедняга, устал ворочать файлы. Переподключаюсь, продолжаю загрузку — буквально через пару файлов загрузка снова становится на файле tongue.png. На этом месте вырвалось уже вслух: «Вот ведь паршивец, ещё и язык мне показывает». Опять переподключаюсь, продолжаю... Правильно — пара файлов, и мы виснем на glare.png, название которого, согласно переводчику, означает «с ненавистью смотреть». Произношу: «Малыш, прости меня, пожалуйста, но надо доделать. Выручи, а?» После этой мантры спокойно сливаю в пять раз больше данных, чем до первого дисконнекта.

После этого случая я ещё больше убедился, что все машины — живые существа, и ласка и хорошие слова им нужны не меньше, чем людям.

2764

Супергерой

Я инженер-программист и сисадмин в одном флаконе. Подчиняюсь напрямую генеральному, с которым в прекрасных отношениях. Но никто и никогда от меня не услышал слов: «Я этого делать не буду — это не моя обязанность». Я делаю всё, что меня просят. Экономика, бухгалтерия, производство, маркетинг или общественная жизнь всего предприятия — я могу подменить любого и на свою долю не жалуюсь. Во-первых, мне это самому нравится, а во-вторых, генеральный мне каждый месяц начисляет премию к окладу в зависимости от объёма проделанной работы. Давно уже он склоняется к выводу, что лучше взять десяток таких программистов, как я, чем кормить штат из шестидесяти человек администрации.

А всё началось всего с одной фразы: «Программист должен знать и уметь всё. Только в этом случае он сможет писать правильные и качественные программы». Её мне в детстве сказал мой отец, один из первых программистов в Беларуси. Ещё ни разу эта фраза не создавала мне проблем — напротив, только помогала.

2763

Призраки программерского прошлого

Это нереально круто. Столкнулся с проблемой — нужно было подписать сертификат DLL-ки парой сгенерированных ключей. Проблема была в том, что библиотечка не моя, а заимствованная.

После двух часов ползания в гугле я нашёл клёвый способ в пару строк кода. Решил поблагодарить чела за такой чудный способ и отправить ему письмецо — всё же здорово помог. Представьте, каково было моё удивление и запоздалое понимание абсурдности происходящего, когда мне на мыло с этого форума пришла благодарность за мой же пост. Только минут через пять втыкания в монитор я вспомнил: столкнувшись с данной проблемой три месяца назад, я её уже решил и поделился решением с общественностью.

2645

Свидание с мистером С.

Мучилась тут с неделю с одной программой. Вроде Паскаль, должно быть не очень сложно. Ан нет, мозг не желает с Си переключаться.

Сегодня наконец-то дописала её. Радость свою я выражала бурно и громко — мать поинтересовалась, по какому поводу праздник. Как человека далёкого от программирования, решила её не грузить:

— Да так, личное счастье.

— А-а-а, заработало?

Её ответ опустил всё настроение и заставил задуматься о том, что с личной жизнью явно что-то не так.

2620

Затворник и шестнадцатипалый

Только что ходил покупать курицу-гриль. Смотрю на цену: 255 рублей. Ну, думаю, круто, круглую сумму дам, сдача будет рубль. Честно, пару секунд понять не мог, почему так много сдачи вышло.