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

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

7466

Алгоритм высокого уровня

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

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

— Кто хочет получить автомат, найдите себе напарника и подойдите ко мне после пары. У меня есть специальное задание.

Само задание обсуждать нет смысла, да и не помню я его, а вот к «оформлению» были строгие и конкретные требования:

1) Программа должна быть выполнена в виде объявления функции с требуемым алгоритмом и примером вызова этой функции.

2) Принести её надо на двух трёхдюймовках.

3) Сразу сдать распечатку всего кода.

4) Время сдачи строго регламентировано. Опоздавшим хоть на день в автомате будет отказано.

5) Текст программы должен быть читабелен (никаких «в одну строчку») и прокомментирован.

6) Оно должно работать.

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

Когда я пришёл к аудитории, где была назначена выдача автоматов, я удивился первый раз. Число команд уменьшилось вдвое. Половина либо не успела (ещё большие раздолбаи, чем я?), либо не справилась с переводом того, что они писали на лекциях, в принимаемую компилятором форму.

В тот день из вуза я выходил в шоке. Мы с напарником были единственными, выполнившими все условия. На 100 человек было разобрано около 30 заданий, сделано меньше десяти, и всего одно — как сказано, а не как захотелось.

Студенты, прежде чем ругать лишние правила, попробуйте сделать, как написано в ТЗ. Заказчик будет доволен, а навык сильно пригодится вам в жизни.

7450

Расслабьтесь и получайте удовольствие

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

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

А коли нельзя так, играйте по правилам. Сложно, что ли? Если требуют ставить циферки в начале строки (ужас какой), напишите программу, которая будет делать это автоматически, если настолько круто умеете кодить. В чём сложность?

7441

Одинэсник растёт

Первый курс, специальность «Прикладная математика и информатика». Был (да и есть пока) у нас один кадр — ничего не понимал как в программировании, так и в компах в целом.

Задали нам простейшую лабораторную, чтобы закрепить только что пройденный материал по Си. Система проверки у нас стоит на сервере университета, и код отправлять нужно именно туда.

В один прекрасный день подходит ко мне этот чудик и говорит:

— Слушай, я тут программу написал на русском языке. Переведёшь её на Си?

Я слегка опешил и не сразу понял, о чём речь. Заглянул в протянутый мне листок и увидел огромный кусок текста с описанием алгоритма. На мой вполне логичный вопрос, какого чёрта он тут делает, я получил в ответ:

— Ну, в ЕГЭ можно было и так…

Спасибо вам, товарищ Фурсенко!

7425

Кучка с горкой

Выполнял лабораторную работу по программированию под DOS (чтоб не забывать историю, наверное) на старом компиляторе, который в прогу добавляет проверку на присваивание нулевому указателю. Начали появляться сообщения об этом ошибочном присваивании. Для локализации ошибки закомментировал часть кода. Всего осталось примерно 800 строк кода на C++, в которых могла быть ошибка. Перечитал весь код, исправил пару ошибок. Ошибка пропала. Начал убирать комментарии — появилась опять. Ясно, что где-то глюк с указателем, и на ход выполнения программы влияет её размер. Ещё два раза перечитал весь код, нарыл пару мест, где можно было бы добавить проверки. Ошибка осталась. Под отладчиком в режиме ассемблера начал изучать код. Узнал подробности работы конструкторов и деструкторов классов, начал исследовать структуру хипа…

А потом что-то дёрнуло меня посмотреть, какого размера файл. 70 КБ при модели памяти в один сегмент. Код + данные + стек + хип > 64 КБ. А компилятор хоть бы предупредил…

Программисты, не забывайте русскую пословицу: «Доверяй, но проверяй».

7401

Запели на знакомом языке

Работаю гейм-дизайнером в крупном издательстве социальных игрушек. Про свой технический бэкграунд никому обычно не рассказываю, поэтому часто сталкиваюсь с забавными ситуациями и могу сказать, что многие кодеры любят дурить нашего брата. К примеру, типичная просьба «А вы не можете сделать выборку чуть поточнее?» обычно встречается квадратными глазами, праведным гневом и рассказами про то, что это дни, недели, а иногда и месяцы работы.

Но я могу спросить и иначе: «А не добавить ли вам AND и условие в SQL-запрос, чтобы получить желаемое?» Ответа ждать приходится обычно долго: подобный вопрос действует на знатоков баз данных гипнотизирующе. Потом гордые разработчики пасуют, а общие трудозатраты по их оценке снижаются до минут, если не до секунд.

7391

Зови меня Сизифом

Работаю сисадмином, рядом со мной сидит программер. Он весь день писал базу данных, отрывался только налить чай, покурить и пообедать. Дописал, тестит — работает! Ну, думаю, отметим это маленькое событие пивком после работы. Угу… Программер ставит курсор на форму, плавно нажимает Delete и Enter.

Я никогда так сильно не переживал о психическом состоянии коллеги. Лемуры со своим выражением глаз просто нервно курили в сторонке.

7376

Наступила неделя Бездны. Прирост производительности составил 265%

Друг из России, работает в Штатах. Подходит к нему старший менеджер проектов и начинает беззастенчиво смотреть в монитор.

— Почему не работаете?

— Я работаю.

— Я же вижу, вы сидите в интернетах и читаете русскоязычные сайты.

— Я работаю.

— Чёрт, я переставлю вам Виндоус, и у вас больше не будет русской кодировки! Что это за сайт?

— Русский «Башорг».

— Что! Но это не сайт по вашей работе!

— Этот сайт помогает мне работать.

— Так, какой у вас проект?

— %ProjectName%.

— На какой он стадии?

— Предварительное тестирование.

— Покажите план… Чёрт! Что вообще происходит? Предварительное тестирование по плану только через два месяца!

— Проект почти готов. Ещё день-два на предварительное тестирование, до трёх дней на правку кода. В общем, через неделю можно начинать тестирование.

— Но у нас сейчас нет свободных тестеров!

— Я буду сидеть. Буду читать русский «Башорг». И буду ждать тестера.

— Чёртовы русские!

7368

IL happens

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

На одном из репортов софтина вдруг начала умирать, выжирая всю память. Тестеры три дня искали и обнаружили, что в одном из полей одной из таблиц есть значение «Wheelchair user», и если его поменять на «abc», то всё работает. Кто, блин, запрограммировал ненависть к людям с ограниченными возможностями? Стали пробовать разные варианты. Выяснилось, что «Wheelchair u» всё ещё падает, а вот «Wheelchai u» уже работает. Пошёл запускать локально — out of memory error. Нашёл метод. А там перед циклом, в котором и происходит переполнение, стоит коммент:

// FIXME: Infinite looping happens

7332

Всему вопреки

Дали нам библиотеку для переформатирования сообщений вместе с исходным кодом. Один взгляд на код — и сразу стало страшно. По всему тексту валялись комментарии:

// TODO: fix me

// TODO: make this better

// TODO: this is most definitely NOT thread safe

// TODO: this is incorrect

// TODO: this does not print the contents

Вся радость в том, что работало всё исправно. Ни одной ошибки. Стрёмно было — не передать.

7321

AND/OR

Задумчиво бреду с работы домой. Рядом мамаша тянет за руку мелкое дитя. Ребёнок, посмотрев на рекламную вывеску, вопит:

— Мама, мама, смотри: «Окна и двери»! А нам он не подходит, нам нужны только двери.

Правда, несложно угадать профессию родителей?