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

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

2245

Без промедленья

Лет пять-семь назад я ещё училась в школе. На информатике мы только начали изучать Паскаль. Объясняя основы, препод сказал, что начинать программу стоит с «Program %name%». Да, подчеркнул он, это необязательный элемент, прога нормально будет работать и без этого вступления, но так «вежливей».

Помимо языков программирования, в ту пору я увлекалась языками иностранными. В частности, особым спросом у меня пользовалась латынь. Латинские слова и выражения я тогда всовывала к месту и не к месту, не всегда заморачиваясь их значением. Но вскоре от этой привычки пришлось избавляться.

Внимательно прослушав лекцию и похмыкав в кулачок насчёт «вежливости», я тем не менее послушно начала решать задачи с «Program», поставив вместо имени слово «mora». Значение его я малость запамятовала, но это меня совершенно не смутило. Задачи были простые, что-то типа «сложи A и B и получи C», прогу я написала быстро, проверила, запустила.

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

Слово «mora», которым я нарекла программу, в переводе на русский означало «замедление, задержка». Звучит бессмысленно, но никаких других видимых проблем в коде больше не было. Посему я, не особо надеясь на успех, заменила название на что-то малозначимое и ткнула F9. Граждане, оно заработало!

Знаю, глупо, но с тех пор я всегда проверяю все названия, имена переменных и так далее на осмысленность на всех известных мне языках. Мало ли — вдруг одно из них натолкнёт комп на мысли о самоуничтожении?

2242

Преходящие истины

Прикручиваем к нашему проекту Lua, чтобы дать пользователям возможность скриптовать некоторые вещи. Естесственно, нужно позаботиться о том, чтобы не дать пользователю натворить гадостей — например, корректно завершать работу скрипта в случае, если пользователь тупо напишет что-нибудь типа вечного цикла.

Обсуждаем, сколько же времени дать скрипту на выполнение. Шеф: «А константочку подберем такую, чтобы цикл while true do на твоей машине выполнялся... ну, пусть, секунду».

2234

Невыполнимо

Практика по информатике в институте. Занимаются студенты кто чем горазд. Несколько моих одногруппников, которые в программировании, мягко говоря, не сильны, решили «поразвлечься»: запустили Turbo Pascal и начали писать программу в стиле:

var a,b,c: integer;

begin

a:=10; b:=20;

c:=a+b;

writeln(c);

end

Написали. Запустили. Видимо, что-то не сошлось — они поковырялись там малость и позвали «консультанта», который в программировании нормально соображает. Говорят, ошибка какая-то. Он тоже посмотрел, поспрашивал, проверил — всё компилится, ошибок нет. Да и откуда там ошибки-то, в таком коде?

Пробуют ещё раз — результата программа не выдаёт. На этот момент к месту разворачивающейся баталии стянулась уже половина группы. Все смотрят и искренне пытаются понять, что не так. (За клавиатурой, напоминаю, авторы программы.) Программу модифицировали для ввода «a» и «b» с клавиатуры. Не работает: программа закрывается от первого же нажатия клавиши.

Зовут и меня. Вы уже догадались, в чём была проблема? Вот и я, поглядев на их мучения, со словами «А на выполнение её запустить вы не пробовали?» нажал Ctrl+F9 вместо упорно нажимаемых до этого Alt+F5, включавших экран просмотра результатов, которым, конечно, появиться было неоткуда.

2170

Борщ: релиз-кандидат

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

— Хочешь в бета-тесте поучаствовать?

Услышав знакомое слово, прибегаю к ней в недоумении:

— Чего? Где? Какой бета-тест? Да, хочу, конечно!

Она улыбается и говорит:

— Суп на соль попробуй, пожалуйста.

2165

Зверские байты

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

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

Ладно, не первый день за рулём. Запускаю отладчик и медленно, смакуя каждую команду, прогоняю код перед глазами. Вуаля, всё работает, если файл есть — удаляется, если нет — появляется сообщение об этом. Если же просто запускать программу, старая история повторяется. Ба, да исполняемый файл весит ровно 666 байт — нехорошее число преследует меня!

Мучился я довольно долго. Программа исправно работает под отладчиком, а так — ни в какую. В конце концов посетила меня одна смутная догадка, я быстро добавил пару строк в код, и всё заработало. Уж не знаю, то ли моя догадка оказалась верна, то ли изменившийся на несколько байтов размер программы освободил её от проклятия.

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

2020

Метафоры 2.0

Работаю на одного известного в узких кругах производителя WiMax-оборудования. Недавно апгрейдили немаленькую сеть на новую версию софта, и при этом родилась пара фраз, отражающих процесс:

Понять, что именно глючит в клиент-сервер-NMS-приложении, написанном индийскими программистами на Java в связке с MySQL — это как искать чёрную кошку в тёмной комнате простым перебором.

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

1993

Кавалерийским наскоком

Бабушка моего друга-программера до сих пор думает, что его работа — играть на компьютере. Впрочем, это присказка.

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

Заходит мама и с порога с подозрением спрашивает: «Опять играешься?» Cначала хотел было что-нибудь сказать, но потом забил и ушёл с девушкой на речку. Выспался, с утра сел и на свежую голову за пять минут «прошёл» сложный кусок.

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

1968

Шишкин лес

На форуме ставят задачу:

— Есть девятимеговый «экзешник», сгенерированный компилятором С++. Надо его преобразовать обратно в классы. Срок — два месяца, оплата — 25000.

Юмористы тут как тут:

— Ребята, у меня стол деревянный стоит. Плачу 50000 тому, кто сделает из него ёлку с шишками.

1907

Стопицот

Когда я учился в универе на младших курсах, мне прислали чужую лабу и попросили помочь разобраться. Лаба была о графах, и для того, чтобы обозначить в массиве отсутствие ребра между вершинами, автор использовал следующее шаманство:

#define B 1000; // Машинный аналог бесконечности

1905

А икс его три!

Пришли к нам в контору два перца после института. Шеф одному сразу поручил написать на «асме» прогу под DOS, которая что-то там со SMART-параметрами винта делает, а меня попросил помогать и консультировать, если что.

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