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

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

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

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

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

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

7318

Алгоритм «Радиоточка»

Дело было в универе. Для допуска к защите каждый студент обязан был получить зачёты по опредёленному количеству семинаров. Самым разумным выбором была «Теория сжатия информации» — всяк не «Общая архитектура процессора» у маразматика завкафедрой!

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

Очередной вариант — сжатие гораздо лучше, чем обычно. Препод нажимает «Play». Музыка, а не хрипение из динамиков! Странно. Перепроверяют. Сжимает быстро, результат весит явно меньше публичных аналогов.

Открыли код. Ошибся автор: диапазон допустимых частот неверно задал, все низкие и верхние обрезал совершенно, причём гораздо сильнее, чем стандартные алгоритмы. А колонки у ноута препода так себе, всё равно разницу не понять!