bash.im ithappens.me zadolba.li
5326

Нереально, но факт

31 января 2011, 09:00

Студенты сдают первую лабораторную по C++, я бегаю принимаю. Их сорок человек, я один, времени всего час, поэтому конвейер и никакого индивидуального подхода. Одна из задач: используя рекурсию, написать функцию, вычисляющую факториал. Студент показывает программу на два или три экрана кода. Разбираться некогда, поэтому предлагаю запустить с мыслью, что сейчас факториал семи окажется равен 143 или вроде того, и со спокойной совестью оставлю студента копаться в этой каше дальше. Но программа считает, и считает совершенно правильно, по крайней мере, для чисел от 1 до 10. Смотрю код. int fktrl(int n, int p)… Собственно, факториал считается через вызов fktrl(n, 0).

— Что такое p?
— Сколько произведений.
— Каких произведений?
— Которые уже есть. А то иначе не работает.

Понятно, думаю, такой безумный вариант я уже видел. Смотрю код дальше. Ничего подобного! Какие-то проверки, сравнения, штук пять разнообразных рекурсивных вызовов — и fktrl(n−1, p), и fktrl(n, p+1), и совсем загадочное fktrl(n−2, 3). Умножений нет вообще, зато есть сложения.

Времени не остаётся. Ставлю студенту плюсик (потом по моим плюсикам проверят только, кто присутствовал, — хотя студенты этого, конечно, не знают, маленькие ещё) и бегу принимать дальше. Но два вопроса меня теперь мучают: как это работало и как такое можно было придумать и отладить?

5325

Ах, вот ты где, Олег! Я давно тебя искал

30 января 2011, 11:00

Да-да, оттуда и берутся быдлокодеры, пишущие индийский код. Скажи мне, Олег П-тов из 10 «Б» класса школы № ####, для кого я писал в тексте задания слово «рекурсия»? Сколько раз нужно объяснять это перед всем классом, окончательно задалбывая тех, кто слушает на уроке учителя, а не играет с соседом в «клоподавку»?

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

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

Или наоборот. Разрушь шаблон, сядь и разберись, чего от тебя хотят. Может, не так уж оно и глупо, а они не так уж это и скрывают?

5324

Серьёзный зависон

Дело было утром 4 января 2011 года. Весь рабочий состав офиса провайдера в сборе и готов к работе после окончившихся праздников. В 9:15 раздаётся звонок:

— Доброе утро! Не работает интернет.

Смотрю на карту сети — лежит сегмент из пяти домов. На одном из домов изредка подвисает медиаконвертер. Отправляю монтажника. Через пять минут он перезванивает и сообщает мне тревожным голосом:

— Тут это… Мужик висит.
— %name%, если это шутка, то она неудачная и не смешная совсем!
— А вот и не шутка! Висит и смотрит на меня. Я на техэтаж не полезу!

Отправляю вдогонку другого — перезванивает и говорит, что таки висит и таки смотрит.

Через полчаса приехала милиция и сняла бедолагу с балки. Интересно, что как только мужика сняли, сеть поднялась — даже в ящик лезть не пришлось. На балке, на которой он болтался, не было никаких проводов — видать, медиаконвертер просто немного струсил.

5323

Наше дело маленькое

30 января 2011, 09:00

Вы считаете, что быдлокод — проблема нашего образования? Если бы.

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

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

5322

Геморрой метровой длины

30 января 2011, 09:00

Звонит мне мой знакомый из далёкого детства и спрашивает, где взять 12 вольт с блока питания. Я говорю, попутно выясняя, что нужно это для неонки. Думаю, такую фигню может любой приделать.

Через неделю опять звонит этот товарищ и в панике полупьяным голосом объясняет, что случайно оторвал провода с передней панели, и комп не запускается. Объяснять, как вернуть всё назад, в лом, тем более по телефону — проще прийти и сделать. Договорились на следующий день.

Первое, что меня насторожило, это как оторвались провода: не просто выскочили из матери, а были реально оторваны почти под корень со стороны кнопки и диодов, причём концы проводов были зачищены сантиметров на пять, а некоторые скручены. «Клиент» объяснил, что порвал их случайно, когда вкорячивал неон. Ну, думаю, ладно, скручены были провода относительно правильно: ресет и включение. Отсоединил провода совсем, включил БП — на пару секунд закрутились вентиляторы и встали. Подозрения стали обрастать догадками. Тут-то мне и открылась правда: когда один раз знакомому удалось запустить комп, он зачистил провода и принялся поочерёдно тыкать ими куда попало на материнке, замкнул накоротко плюсы светодиодов PW_LED и HD_LED, а проводом от PW_SW ткнул куда-то в разъём кулера.

Поздравил я знакомого с геморроем метровой длины, собрал манатки и убрался восвояси. Не оскудеет земля идиотами.

5321

Проскочим с разгона

30 января 2011, 09:00

Когда-то купил Final Fantasy IX. Игра в своём жанре едва ли не лучшая. Я предвкушал кучу приятного игрового времени: шутка ли — четыре диска! Игра сделана для первой Sony PlayStation, а у меня только комп, поэтому играл я на эмуляторе. За счёт мощной видеокарты и современного процессора при выключенном FPS-лимите эмулятор дурел и, отрываясь на сравнительно примитивной графике, выдавал далеко за 300 кадров в секунду вместо положенных 30–60. Играл я, соответственно, только при включённом FPS-балансе, который автоматически понижал количество кадров в секунду до обычных показателей.

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

Когда началось то самое видео, игру я поставил на паузу. Настройки → FPS, снимаем все ограничения и запускаем игру дальше. В итоге комп на радостях загрузил процессор на 100%, выел всю оперативку и, объединившись с мощностями видеокарты, начал показывать видео на дикой скорости. Когда дело дошло до участка с артефактами, за несколько секунд мелькнуло около двадцати кадров с битыми текстурами, пару раз экран моргнул чёрным — и игра пошла дальше.

5320

«Тру» не по нутру

Разрешите представиться: быдлокодер. Да-да, та самая мифическая и несуществующая личность. Кого ни спроси — он тру-программер, а быдлокодер ходит где-то рядом. Позвольте полюбопытствовать, господа тру-программеры, а за неделю до сдачи проекта вы таки пишете нетленный идеальный код? Написание быдлокода — это как дефлорация. Не написал быдлокода — не программист. Но вопрос не в этом. За 25 лет (да-да) быдлокодинга я составил для себя классификацию «тру программеров». Вот она.

* * *

«Гении». Берутся за всё, делают на треть. Потом говорят: «Остальное тривиально», и за них доделывают другие. Любой совет со стороны воспринимают как повод унизить собеседника: «Чё ты ваще понимаешь?»

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

«Библиотекари». Эти могут наступить на себя и согласиться с архитектурой, но стандартные библиотеки — дерьмо, их надо переписать. Хотя если исходить из предположения, что писались они неглупыми людьми, в самопальном коде косяков будет только больше. Нет, они свято верят, что могут всё написать вообще без багов.

«Алгоритмщики». Эти снизойдут до стандартных библиотек, но запутают данные и код так, что сам чёрт не разберет. Тут явно видно, что человек произошёл от обезьяны, поскольку рекурсивное лазание по дереву пришито к месту и не к месту.

«Оптимизаторы». Могут веками переписывать что-то на ассемблере (внося баги, конечно), считать такты процессора в Java-приложении и хранить биты в SQL-сервере.

* * *

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

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

Ладно, ребята, гордитесь, только не при мне. Я видел ваш код. С точки зрения унитаза люди различаются довольно слабо.

5319

Бухгалтерша Юзверевна Проводко

29 января 2011, 11:00

В подразделении километров так за восемьсот появился новый сотрудник. Ему надо завести учётку и прочие сетевые радости.

В головную контору в 9:20 приходит письмо:
«Завести учётку для Сергеевой Тамары Александровны».

В 9:45:
«Мы тут ошиблись: Сергиенко Александры Тихоновны».

В 11:30:
«Извините, мы опять всё перепутали. Тихоновой Светланы Александровны».

Админ домена в 11:35 закрывает тикет:
«Заявку отложить до тех пор, пока в подразделении не выяснят, как зовут сотрудника».

5318

Мсье знает толк в сортах полиэтилена

29 января 2011, 11:00

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

Я что, приклеил к экрану защитную плёнку от защитной плёнки?