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

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

5460

Не знаю пароль, но вижу ориентир

Попросили помочь с программой по одному околокомпьютерному предмету. Как всегда, программа уже кем-то сдавалась, «там уже всё работает, ты только подправь чуток, чтобы выглядело по-другому».

В двух словах о самой задаче: необходимо рассчитать матрицу значений, которая затем ломаным контуром делится на две части, имеющие некий экономический смысл. В зависимости от того, в какой из частей находится элемент, делается вывод.

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

Рассчитанные значения выводились в таблицу на форме, при этом ячейки прямо на ходу раскрашивались в зависимости от того, в какую из двух частей матрицы они попали. Думаете, красоты ради раскрашивались? Вот и я так думал, пока в конце не увидел это:

a := Canvas.Pixels[n-10,k-10];

if TColor(a) = clRed then begin otvet := … end else otvet := …

Окончательное решение программа принимала на основе цвета ячейки таблицы! Ей-богу, я окосел. Объявить массив и занести в него номера ячеек, образующих контур, наверное, слишком скучным показалось — лучше потыкать в пиксели на форме. Особенно весело было нажать на кнопку «Рассчитать», потом на секунду свернуть окно программы и наблюдать девственно чистую белую таблицу, о перерисовке содержимого которой, разумеется, никто не позаботился. Разумеется, сделать вывод после этого программа уже не могла.

Я понимаю, человек был далёк от программирования и писал только чтобы сдать лабу, но такого «изобретательного» подхода, признаться, ранее я не встречал никогда.

5429

90% кода и 10% кофе

Вчера я был официально обращён в быдлокодера. А как всё хорошо начиналось…

Один хороший знакомый работает дизайнером в небольшой конторе по разработке сайтов. Но вот беда: на JavaScript у них никто профессионально не пишет; постоянно приходится нанимать людей под проект или искать уже готовое решение и вписывать, как получится.

На очередной проект решили пригласить меня. Всё бы ничего — проект хороший, оригинальный, красивый, но с одним изъяном: директором «я сам лучше и быстрее сделаю».

Работал я по вечерам. Писал, настраивал — всё красиво, грамотно, качественно и без тормозов. Сказка длилась до момента «А что, ещё не готово?»

Две ночи, банка кофе — проект сдан. Но что там понаписано в конце… В общем, хотел я проект этот себе в портфолио, а теперь кто спросит — чур-чур, не я писал.

5419

Дело не во мне, дело в тебе

Внедрение продукта. Словарный запас резко сократился.

Постановка задачи:

Я ничего не знаю.

Я не понимаю, о чём вы.

Что вы от меня хотите? Не приставайте ко мне.

Нет постановки задачи. Ставьте задание.

Я в вашей постановке всё равно ничего не понимаю.

Разработка:

Капец! Бред какой-то.

Кто тебе сказал такую глупость?

Раньше здесь этого не было.

Сдача:

Я очень рад.

Это не я.

Вы что-то неправильно делаете.

У меня всё работает.

Так было написано в постановке.

5418

Одним глазком посмотреть

Принесли мне как-то «посмотреть» скрипт из соседнего подразделения — сказали, вроде как работал местами. После детального «просмотра» выяснилось:

— во всех условных операторах пропущены фигурные скобки;

— соединения не обнулялись, а повисали после запроса к базе;

— функцией для извлечения колонок извлекались строки.

После «просмотра одним глазком» скрипт заработал как положено и в четыре раза быстрее.

5417

Блок-схема и лист-программа

Не понимаю я преподавателей со встроенным в голову компилятором, хоть головой о стену бейся! А дело обстоит так: моя девушка учится на технической специальности, не имеющей ни малейшего отношения к IT. Есть у них общий предмет с гордым именем «Информатика», на котором учат всему, от создания папки до азов программирования на бородатом паскале и VBA. Ей, естественно, программирование надо, как юниксу BSoD. Кто все домашние задания делает? Верно, я.

Стандартный случай: пять простых задачек по три массива, четыре цикла и десяток-полтора переменных. Я, эникейщик-самоучка, глянул на это всё, на минутку задумался, за 15 минут написал, ввёл тестовые данные, проверил ответ — отлично. Можно сдавать, скажете? А вот тут и прикол. Моя любимая берёт ноут, тетрадку и… верно, переписывает туда код.

Цитирую преподшу: «Блок-схема — самая важная часть программы! Без неё вы никогда не напишете ни одной программы!» Ну да… Можно подумать, что я за минуту в голове нарисовал пять этих блок-схем. Кстати, внешность этой преподши полностью соответствует её манере преподавания: уже за сорок, старомодная юбка, очки и полное нежелание идти на коннект со студентами, какого бы это вопроса ни касалось.

Так вот, рисую блок-схему. Любимая смотрит, говорит, что неправильно. Начинаем рыться в её конспекте и смотреть, что им на лекциях диктовали. Нашли, сделали. Ура! Курсор в верхний правый угол, «Закрыть», «Нет». Я фигею: «А как же сдавать программу, если ты ее не сохранила? Заново писать?» — «Нет», — отвечает мне любимая, и показывает на тетрадь: «Вот так». Мда… XXI век!

Видел я идиотов, видел людей, которые умудрялись планку DDR2 вдавить в слот DDR, видел, как, не зная об отверстии для извлечения диска, привод зверски раскурочивали отвёрткой, не вынимая из корпуса, но чтобы работоспособность программы проверялась на листике…

И это я молчу, что переменная, содержащая сумму, должна называться S, и не иначе, счётчик — n, вводимые данные — x и т. д. О «говорящих переменных» им никто не рассказывал; мало того, по словам преподши, так делать неправильно!

Завтра у девушки контрольная. Как студенты будут писать программы? Вы снова правы! На листочке, не подходя к компьютеру. Я же, в свою очередь, буду сидеть в ближайшем интернет-кафе с ноутом, открытым редактором VBA и включённой аськой. Если такие преподаватели учат людей грамотно разбираться в вопросе, то, простите, я тогда страус!

5395

Первокурсные перфокарты

Я, наверное, типичный быдлокодер: как правило, приходится мне в минимальные сроки править то, что уже написано суперспециалистами.

Когда моя жена училась на программиста, писала она курсовую. Не помню суть ошибки, но она была. Бессонная ночь для меня — и ошибки нет. Всё на мой взгляд красиво: код читается легко, комментарии есть.

Пошла жена сдавать. Получила «отлично», но с комментарием, что использовала то, что они ещё не проходили. Программа была написана на VB, который они закончили изучать на втором курсе. Вопрос: чему их там, собственно, учили тогда?

5387

Противьтесь соблазну

Тестирую программу своей студентки. Она обрабатывает текст и сбрасывает результаты потихоньку в файлы. В какой-то момент на диске появляются файлы с названиями:

Изменение регистрировалось в журнале

Может быть, ошибок и нет

Нет

Но внесение изменений нужно производить квантами

Прежде всего, кто-то должен быть ответственным

Проделанная работа будет отброшена назад, если эта среда изменится

Противьтесь соблазну

Начинаю думать, что за ботва. Пишу студентке вопрос с просьбой пояснить юмор. Она ничего не понимает. Перечисляю файлы — та же реакция. Проясняю ситуацию. Она смотрит свой код и находит ошибку: формирует переменную с именем файла, а потом открывает файл, используя другую переменную с похожим именем, в которой хранится обработанная строка. Это же с каким чувством юмора надо было написать систему, чтобы она сама подбирала такие названия? Может, программа уже смотрит на нас? Всё-таки обработка текста, искусственный интеллект, самообучение…

Пока писал эту историю, появились новые файлы:

Маша и Гвидо с немалой степенью озабоченности посмотрели друг на друга

В это день было убито 1700 поляков

Все дворы были разграблены и сожжены

И это не всё, что она мне пообещала. Кого мы создали?

5386

Объявляется набор

Разглядываю методичку по английскому языку — в частности, список слов, которые требуется выучить. Составители возле каждого слова заботливо указали в скобочках первую букву части речи. В какой-то момент я поймал себя на мысли: «Что это еще за функция kit(n) и где я её объявил?» Так вот ты какая, профдеформация!

5380

Наша сила — в нашем штате

Работал я одно время на заводе, который был заложен в пятидесятых и имел славную долгую историю, в том числе и бюрократическую. Мы, юные прогеры, лабали софт для производства на Дельфях, а на нас, как на молодую поросль, смотрели старички, которые писали ещё на Фортране и Алголе, а некоторые вообще Ленина видели. Иногда хвалили.

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

Так вот, написал я программу, протестил, поставил пользователям и отдал все бумаги на подпись. В обосновании написал о том, что при помощи новой программы работать стало быстрее и проще: раньше было много суеты, а теперь всё делается в один клик. Начальство (дядечка лет пятидесяти) взяло и вызвало.

— Заходи, садись. Почитал я твои бумаги… Ну, кое-что ты подправишь, а так всё понятно и даже правильно. Но вот скажи, а зачем ты это пишешь? — и протягивает мне листик, в котором как раз и написано про «одну кнопку».

— Ну-у… — я задумываюсь и рассказываю заготовленную речь о том, что теперь всё стало быстро, просто и удобно.

— Ну, это я и сам понял, — отвечает начальник и усмехается, — не дурак поди. Но вот ты скажи. Ты тут пишешь, что при помощи твоей разработки стало проще работать, так? Что операцию, которую раньше делали три человека весь день, теперь может сделать один за пятнадцать минут, так? Одному стало хорошо. А теперь скажи, что же мне делать с остальными двумя? Уволить? Ведь ты сказал, что они уже не нужны?

А вот тут я задумался.

— В общем, иди переписывай. И чтоб такого больше не было! Работу они сокращают! Ишь, программисты…

5366

Акселератор программиста (II)

Параллельно с работой админа подрабатываю сборкой на дому всякой электроники: GSM-трекеры, шлюзы, управляемые розетки и прочая лабуда.

Как-то поступил заказ на сборку очередной партии. К заказу шёл комментарий: штатная прошивка глючит, переписать не можем, программист в отпуске. Проблема в том, что имеющаяся прошивка не всегда понимается бутом. За скорое решение вопроса сулили приличные деньги. «Отчего бы и нет», — подумал я и позвал на помощь С-программиста, знакомого ещё со школы. Договорились так: я напаиваю компоненты, проверяю голый запуск, а он переписывает код, оптимизирует его, заливает прошивку и тестит, как только можно.

Работали у меня дома. Я на лоджии паяю, он в моей комнате кодит и шьёт девайсы. Проработали две ночи. Утром третьего дня, проснувшись, я застал своего друга за компом, очень быстро набирающего код. Рядом валялся десяток пустых упаковок от активированного угля. Увидел меня, минуты три друг ругался, потом затих и сказал: «Не отвлекай, хочу быстрее закончить. Мне недолго осталось, а умирать с недописанным кодом — дурной тон».

Уже вечером, когда он понял, что всё будет хорошо, рассказал, как дело было. Проснулся он в шесть утра и решил выпить кофе. Пошёл на кухню, на автопилоте насыпал, залил, начал пить. Только потом глянул на банку, из которой он насыпал сахар. На ней красовалась наклейка: «Нитрат ртути (II)». Сначала выпала чашка из рук, потом его почему-то вырвало. Моментально проснувшись, друг побежал за помощью в интернеты. Гугл сказал, что от трёх чайных ложек этой заразы умирают, но можно попробовать спасти себя активированным углём. В банке был, конечно, сахар, все остались живы и здоровы, а наклейку я давно приклеил забавы ради. Как сказал друг, этот шок оказался эффективней всех стимуляторов, которые он когда-либо пробовал.