Курсы по Delphi: начальный и профессиональный уровень. Сижу за компом. Все подходят, спрашивают, что не так, что за «division by zero». Только один сидит за компом, не вставая, вот уже около тридцати минут. Подхожу втихаря к нему. Строка с ошибкой выделена красным, а сам человек гоняет курсор из конца строки в начало, из начала в конец, туда-сюда, туда-сюда...
Истории с тегом: программизмы
Всего историй: 900
Десятый лишний
Три года назад я работал в команде PHP-программистов, создававших практически с нуля движок для одного крупного и достаточно известного в рунете интернет-магазина: каталог, разбитый на множество страниц для удобства отображения. В пылу дебага в одном месте глобальная константа ITEMS_PER_PAGE была почему-то вбита числом. В пылу клюнувшего в пятую точку жареного дедлайна на стадии финальной отладки пропустили не только это число, но и комментарий из разряда:
// Внимание! Заменить на глобальную переменную перед внедрением!!!
В пылу уже не помню чего дизайнеры перерисовали макет, и на страницу стало влазить немного меньше товаров. В пылу отладки все дружно проморгали тот факт, что некоторые позиции из каталога пропадают, а общее число страниц, перемноженное на число товаров на странице, существенно меньше общего числа позиций в каталоге (справедливости ради следует отметить, что каталог и система фильтров отбора товаров были сложны и запутаны).
Сайт пережил один редизайн и две доработки движка. Команда разработчиков почти полностью сменилась. Ошибку обнаружили только в августе этого года маркетологи, которые начали выяснять, почему некоторые товары из рук вон плохо продаются.
Подстановка подстановки
Решил повесить в автозагрузку скрипт, чтобы монтировать рабочий каталог на диск P:. Я так часто делаю, чтобы рабочие файлы можно было таскать по компьютерам с сохранением вписанных в конфиги пути. Дело простое — пишу subst.cmd с простым содержимым:
subst P: C:\WorkRoot
Запускаю и вижу, как с гигантской скоростью команда выполняется много-много раз без остановки. Что за хрень?..
Надо меньше работать. Или хотя бы давать нормальные имена скриптам.
Образ мысли и образ жизни
Не понимаю, почему люди, работающие с компьютерами, так обижаются, когда их называют компьютерщиками. Я знаю, что существует масса профессий и специализаций. Сама работаю тестером лет восемь, и знаю, что чесать всех под одну гребёнку, мягко скажем, неправильно, особенно если это делают те, кто не понимают, о чём говорят. Но я-то знаю.
Я считаю, что компьютерщик — это не профессия; это, если хотите, образ мысли. Примерно как гуманитарий или технарь. Только компьютерщик будет копаться в программах, когда есть возможность поиграть. Только компьютерщик будет разбирать сложную вещь, для разбора не предназначенную, только из интереса: «А как она работает?» И самое интересное, что после того, как он соберёт вещь обратно, она не сломается и не сгорит.
Я считаю, что отличительная черта истинных компьютерщиков — удивительная логичность. Они чувствуют фальшь и ошибочность на интуитивном уровне, причём во всех областях. Если начальник приказывает что-то сделать только потому, что у него зачесалась правая пятка, компьютерщик это почувствует и делать не будет до ответа на вопрос: «А зачем?»
Компьютерщик — ещё и образ жизни. Он делает все важные вещи рационально, с минимальной затратой ресурсов, если знает, как. А вот с неважными вещами позволяет себе поступить так, как интереснее.
Почему я говорю именно про образ мысли и образ жизни? Когда-то я выходила замуж за компьютерщика. Была счастлива. Но когда муж стал IT-директором — изменился. Поведение, рассуждения, устремления... Развелись мы потому, что перестали понимать друг друга. Он стал управленцем. А я осталась компьютерщиком — и горжусь этим.
Другого и не ожидал
Первый раз программирую на VBA. Естественно, ошибки на каждом шагу — злюсь. Под конец компилятор выдал:
Compile Error
Expected: )
Это меня добило. Он мне, блин, ещё и улыбается!
Просто песня
С точки зрения Налогового Кодекса РФ программный код приравнивается к произведениям литературы. И верно, а почему бы и нет?
if (newGame) resources.free();
s = FILENAME + 3;
setLocation(); load(s);
loadDialog.process();
try { setGamerColor(RED); }
catch(Exception e) { reset(); }
while (notReady) { objects.make();
if (resourceNotFound) break; }
byte result; // сменить на int!
music();
System.out.print("");
Смысл довольно туманный — как и полагается стихам.
Вот откуда уши торчат
Я был когда-то странной константой безымянной,
Такой, что в длинном коде никто и не найдёт.
Теперь я — итератор, и каждый компилятор
При встрече сразу вектор выдаёт.
Мне не везло сначала, и даже так бывало:
Во время компиляций — ошибок целый лист!
Теперь я в Си-плюс-плюсе, на Линуса молюсь я,
Он самый лучший в мире программист!
Исключив случайный фактор
Если уж все пошли вспоминать своих институтских преподов, то вспомню и я. Первый же день моей учёбы в универе был омрачён парой по информатике (или как её там), где женщина солидного возраста объясняла поточной аудитории, что в течении двух семестров мы будем изучать с ней язык программирования Turbo (тут она сверилась с бумажкой) Basic. Тут мой здравый смысл ушёл на покой, разбудив во мне подросткового быдлокодера, который выучил C++ по книжке и ещё в школе писал всем зачётные-выпускные по информатике — двумерные аркады с подробными комментариями, которые потом были дисквалифицированы за единый стиль. «Бейсик — не язык, а обучающая программа. Для высшего образования это слишком слабо! Да он проходится за неделю! Он не соответствует современным концепциям!»
Короче, меня хватило на две лекции, где оказалось, что «правильный» — только тот код, который в её тетрадке. Реализовать по-своему мы не способны в принципе, а код, что мы написали, если он короче её реализации, «не заработает, мы пробовать не будем — это и так понятно». В самом начале третьей лекции я ушёл, заявив на всю аудиторию:
— Мне надо! Я пойду пиво пить. Не то чтобы мне не нравился предмет — мне он очень нравится, — просто то, что вы рассказываете, это бред. Он делает меня только глупее, так что я не вижу смысла в своем присутствии на ваших лекциях.
— Встретимся на экзамене, — тихо ответила женщина.
Группа какое-то время смотрела на меня, как на прокажённого, но после пары семинаров, которые вёл другой препод, стала просить о помощи. Три человека в свободное время ходили ко мне на занятия в свободной аудитории два раза в неделю. Преподавать оказалось непросто, особенно если тебе семнадцать и ты не на одной волне с окружающими.
В день экзамена я зашёл в кабинет с опозданием на час и с порога затребовал задание на «отлично», на что закономерно получил ответ: «Сначала посмотрим, знаешь ли ты хотя бы на тройку». Предлагалось написать программу на бумажке. Не проблема: «Эту задачу можно решить так, но в соответствии с концепцией структурированного программирования... А с точки зрения процессорного времени...» Задание на пятёрку я таки получил и написал код в тетрадь — короткий, оптимизированный, а не тот, которому она учила.
— Садись за компьютер, набирай программу. Если заработает — «отлично». У тебя полчаса.
— Мне хватит пяти минут.
Методом десятипальцевого слепого копипаста я набрал код и запихнул его в менюшку: все задания в одной проге. Всё оформил, проверяю. С примером из задания — ОК. С «введите вручную» — ОК. С значениями из генератора случайных чисел, в том числе знакопеременными — неправильный результат! Я покрываюсь холодным потом: время заканчивается... Убираю из менюшки вариант со случайными числами.
— Всё готово. Проверяйте.
— Результаты сошлись?
— М-м-м... Да!
— Ну, не мне вас проверять. Пять.
Ошибку я нашёл позже. На потоке пятёрки получили всего несколько человек: я и моя «группа».
* * *
Позже я помогал «за еду» пересдавать экзамен у той же преподши своей знакомой. Подтолкнув в класс знакомую за талию, я пояснил, что она «очень боится не пересдать, и я её поддерживаю». Через пять минут после раздачи заданий преподша вышла «попить чаю». За минуту я помог подопечной, ещё 15 минут ушло на остальных — сдали все.
По пути домой из ресторана я наткнулся на шумную компанию студентов, отмечавших халяву — оказалось, те самые, которым я помог. Вскладчину ребята выставили мне три ящика пива, которые мы коллективно и распили. На этом воспоминание оканчивается.
ПТУшная логика
Сейчас я программлю на 1С, но во времена студенчества работал на Delphi и C++. Денег у студента нету, зато есть куча людей, у которых они есть, и они готовы ими делиться ради написанных программ. Брался я с охотой, делал максимально хорошо. Проблем с заданиями не возникало, тем более если они были толково составлены преподом.
В пору сессий «подфартило» мне взяться за задачи каких то ПТУшников. Профит ожидался небольшой, но студенту три задачи по 40 рублей, помноженные на 40 человек в группе ПТУ, могли только сниться. Естественно, меры предосторожности я принял, сперва взявшись за задачи лишь одного человека. Полчаса — и две готовы, а взглянув на третью, я понял, что задания надо читать сразу. Не буду приводить точный текст, но требовалось написать программу, которая парсит и вычисляет логические выражения.
Была убита неделя. За другие задачи я даже браться не хотел после этого. Добило то, что человек платить отказался: программа «не работала», то бишь он не смог объяснить преподавателю, что происходило на экране.
Прошло много времени, но калымить желания так и не появилось. Лёгких денег не бывает.
Всем на пол — это дебаг!
На работе два разработчика на повышенных тонах обсуждают настройки отображения в рабочей программе:
— Чтобы всё заработало, надо просто Альфа-Банк грохнуть — и всё!
— И давай грохнем наконец, чего раздумывать?
Судя по лицам соседей по этажу, те сильно засомневались, что здесь занимаются именно разработкой программ.