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

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

5751

Brain mismatch

Девушка учится на менеджера. На экзамене по информатике надо было решить задачку на Паскале:

a := 5;

b := a*2 - 6;

c := b > a;

Конечно, нужно было догадаться, что c — это переменная boolean. Преподаватель с удивлением наблюдал около двадцати листов, на которых в графе ответа стояло: «Error 23. Type mismatch».

5692

Проверка правописания и первокурсности

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

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

5668

Java (не) рулит

Купили Lego Mindstorms. Конструктор такой, чтобы роботов мастерить: двигатели, датчики, контроллер на Атмеле. Есть программа стандартная, эдакий MS Robotics Studio для пятилетних. Всё бы ничего, но визуальное программирование — не для сложных алгоритмов. Давай копаться. Нашли в недрах паутины замечательную вещь — Java-платформу для этих самых контроллеров. Не прелесть ли? Жизнь, казалось бы, облегчилась в разы. Даже многопоточная обработка есть. Якобы. Тут-то веселье и началось.

Копнули документацию. Каждому типу датчика назначен родной порт по умолчанию. Касание — первый, свет — второй, звук — третий, расстояние — четвёртый. Как же так вышло, что именно на четвёртом порту под новой прошивкой все ультразвуковые датчики расстояния не работают? Может, я что-то делаю не так? Воткнул в четвёртый порт кнопку — работает. Воткнул ультразвуковой датчик — всё время расстояние 255 мм, и хоть убейся. Обидно, досадно, но ладно. Жить можно — едем дальше.

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

С тех пор я пишу на Java с оглядкой — вдруг что-нибудь переклинит?

5652

Около нуля

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

+7, −7

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

Коллеги, не экономьте на сне. Страдает здравый рассудок.

5644

Забыли о памяти?

Эх, было раньше время… Несмотря на скромный возраст, с компьютерной техникой я на «… твою мать». В ходе обучения связался даже с БК-0010, зверь-машиной на процессоре К1801ВМ1, и с тех пор моим девизом является старый лозунг: «Памяти много не бывает».

Зажрались вы, люди. Конечно, компьютеры мощны и достойны. Да, Core i7 никого не удивляет. Но, скажите мне, зачем, зачем пихать старый бодрый Quake III в браузер?! Зачем переводить бесценные ресурсы компьютера на игру, которая прекрасно отлажена, место которой — в отдельном приложении?

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

Вы знаете, что существует игра в 56 байтах чистого кода? А компилятор в 20 байтах? Плевать, что язык BrainFuck — зато человек реально умеет программировать.

Зажрались. Пойду мучать «Электронику-5» — научусь хотя бы байты считать.

5636

Госъяваскрипт

Устроился я эникейщиком в госконтору, отвечающую за избрание избранников народа. Меня встретил жизнерадостный шеф, две точки доступа, восемь дырок под витую пару в розетках (с маркировкой!) и по два системника и два монитора на шефа и второго программера.

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

С базами ГАС «Выборы» была веселуха. Номера участков в этой базе ни разу не соответствовали действительности, в базах участков отсутствовали данные о председателях. Первое исправил прогер, на второе забили. Торжественный момент запуска — и ни черта не работает.

Если убрать из базы тестовые значения или заменить базу своей, сделанной по образу и подобию — не ищет.

Если убрать фоновую картинку — не ищет.

Если изменить хоть один символ в яваскрипте — не ищет.

Работает только в Мозилле и IE.

В случае наличия в базе спецсимвола выдаёт что-то неведомое.

Если удлинить поля ввода хоть на пиксель — не ищет.

Если изменить шрифт — не ищет.

В общем, повесили мы это дело как есть и не трогали с тех пор. С госскриптами шутки плохи.

5621

Жить станет проще, жить станет веселей

Фреймворки призваны облегчить жизнь программистов. Как бы не так…

Пришлось мне столкнутся с продуктом некоей компании на букву «Z». Задание простенькое, по крайней мере в плане PHP, но фишка в том, что выполнить его надо в вышеупомянутом фреймворке. Ну, думаю, покурю маны, и через часик будет готово. Ага. Разогнался. Четыре часа ушло на изучение документации, как установить это чудо на сервер. Когда эта фигня наконец встала, я за полчаса справился.

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

5587

SlowSort()

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

В четвертом семестре у прикладных математиков курс «Структуры данных и алгоритмы». Язык С++, среда и интерфейс программ мне индифферентны, но чтобы не тратили лишнее время, ратую за консоль. Две группы по две пары по четвергам весь семестр.

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

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

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

Началась третья неделя. Жду, что нового принесёт четверг.

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

5585

Угу-AI

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

Перевёл бота из режима обучения в активный, собирался сам зайти с другого UIN и потестировать, но тут работа навалилась. Только к концу рабочего дня я вдруг сообразил, что в аське непривычно тихо — никто меня не тревожил аж с обеда.

Читал логи. «Много думал». Больше всего впечатлило общение с любимой: бот разговаривал с ней полтора часа и договорился о романтическом свидании завтра вечером у меня дома.

5564

Круги ада: тест пройден

Читаем ТЗ на подсистему программного учёта вагонного чего-то там, которое поступило на ревизию.

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

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