Истории с тегом: индийский код

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

10912

Поправки на суровую реальность

Ещё месяц назад я был идеалистом, писал о том, какой кривой код я нашёл на спиртзаводе. После этого я нашёл код гения. Полностью в косвенной адресации, всё работает, занимая вдвое меньше памяти (к слову, в промышленности 128 КБ оперативы — суровая реальность, а 256 КБ стоят уже втрое больше, а это уже полторы тонны зелени), всё красиво, напоминает безумства из фильмов, но ни хрена не понятно. Да и как отлаживать — тоже неизвестно.

Сегодня я вернулся с объекта, сварил 15 тонн кваса и понял, как и что делается.

Перед отъездом на мой первый объект в моём коде разобраться мог даже электрик (да-да, язык релейной логики поймёт любой из здешних, надо минут пятнадцать, чтобы разобраться): везде комменты, всё разбито на отдельные ветки, в каждой из которых одно действие…

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

Прощай, красивый идеалистичный код! Привет, Франкенштейн! Люди, я создал монстра, я один из вас…

10874

В мозгу индус всегда отыщет уголок

Уж сколько раз твердили миру,

Как вреден быдлокод;

Но только всё не впрок,

В мозгу индус

Всегда отыщет уголок.

Читал историю о Чайнике-2013 — аж перекосило, ей-богу.

Итак, у вас в программе есть операция, обладающая следующими несомненными достоинствами:

1. Неправильное выполнение её может похерить данные на живой рабочей базе.

2. Понятие «отмена последнего действия» не предусмотрено.

3. Перед каждым запуском операции нужно делать бэкап всей базы (!) вручную (!!).

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

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

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

10820

Так писал мудрец Обфусций

Я раньше думал, что так только на Баше бывает. Ну, или на Хабре.

Попался мне по долгу службы исходник от спиртзавода для французских контроллеров с немецким названием в среде разработки «Единство».

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

Вместо понятного и рекомендуемого для логики языка LAD используется язык структурного текста, в котором из конструкций IF — THEN — ELSEIF строится монстр, который уместился бы всего-то на двух понятных ветках релейной логики.

Все переменные имеют названия s_ed, st_ed, s_ed_o, t_q и не имеют комментариев. Комменты вообще скупы и непонятны по всему телу программы.

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

10752

Пока рак на горе не свистит

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

Как-то раз после особенно долгого, почти часового объяснения, как написать какие-то 200 строчек кода с использованием модуля Graph, я сдался и попросил прислать код на почту. Открываю .pas, читаю начало кода:

program graphblabla;

if 4 > 3 then

BEGIN

Мне понадобилось минут пять, чтобы перевести дух.

10565

DOM на миллион квартир

Захотелось в рамках выходного R&D, дабы не рисовать и не придумывать расположение тестовых объектов, взять информацию из ныне популярной браузерной игры с зелёными кристаллами — той, что сделана наподобие аналога 13-летней давности.

Нахожу, открываю, цепляю Огнелисом десяток изображений, которые грузит флешевый ролик, и заталкиваю в спрайт, попутно прикидывая оптимальный формат хранения. Понимая, что надо бы выдернуть всё и разом, запускаю Хром, иду на тот же сайт и погружаюсь в мысли о несовершенстве мира и грядущем апокалипсисе. Тормозит страшно, FPS чуть меньше единицы, i7 моей машины на коленях молит о пощаде. Я привык, конечно, что любая зараза нынче насилует всю тройку нормальных браузеров, но не до такой же степени!

Медленно отхожу от ужаса, на ощупь открывая вкладку загружаемых ресурсов. У меня начинает шевелиться растительность даже там, где её быть не должно: в списке примерно 1300 загружаемых файлов. Худо-бедно сохраняю всё это безобразие, открываю. Каждый уголок, градиент, бордюр, фон, объект, кнопка — отдельным PNG-файлом от 2 до 3000 пикселей по одной стороне. Видимо, для тех, кого не впечатлил список файлов, также прилагается файл с JSON-массивом всех объектов игрового мира с их идентификаторами, свойствами и прочей прелестью. Мир 1000×1000 клеток, на экране при минимальном зуме присутствует фрагмент 25×15. Оптимизация? Не, не слышали.

Вы всё ещё хотите видеть плавную анимацию на своих пятиядерных сотовых телефонах? Смею вас расстроить: вам нужно в прошлое, лет на десять назад.

10499

Загончик новомодных кодировок

Звонит мне посреди рабочего дня товарищ и в панике сообщает, что у него весь сайт, вплоть до БД, на Windows-1251, а AJAX выводит текстовые файлы ромбиками — в UTF-8. Начинаю ему рассказывать, как это лечить, и вдруг он говорит:

— Окйе, я понял, более слов не надо, сейчас всё сам сделаю.

Перезванивает через час:

— Решил проблему!

— Как?

— Неважно. А ты не знаешь, как высоту фрейма перехватить?

10414

Незаменимые люди есть

Здравствуйте, взрослые айтишные дяди! Я в небольшой организации слежу за сеткой из десятка компов и одинэсной базой. Моя задача — «чтобы всё это работало». У меня экономическое образование, я самоучка, а ещё я девочка. Но в моей трудовой в графе «должность» написано «инженер-программист» — так руководству захотелось. Все сказали «фу»? Спасибо, а теперь я расскажу о своей печали.

У моей начальницы во владении есть ещё одна организация. В организации стоит древний комп, на нем 95 винда и база на Фокспро 2.6. И, конечно же, недоумения начальства: «А на фига тут что-то менять, работает же!»

Итак, из этой конторы увольняется заведующая, и на её место берут нового человека. Соответственно, во всех документах нужна новая фамилия. Начальство говорит: «Сделай!» Казалось бы, что сложного — новую фамилию в справочник с сотрудниками вбить? А вот фигу: справочника такого нет и в помине. Я иду к Гуглу и начинаю терроризировать по аське знакомых настоящих программистов. Мне говорят: «Открывай REP-файлы, там найдёшь формы всех документов и поменяешь подписи». Всё просмотрела — фигу! Нету. Стала открывать в редакторе все файлы в порядке очереди и таки нашла эту фамилию в одном из файлов с расширением PRG, записанную прямо в программный код.

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

10317

Рубикон говнокода

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

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

Открываю её код и вижу:

boolean bound=false;

boolean granitza=true;

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

9848

Обезжиренный жир под майонезом

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

  • пункт_списка
  • Вот кто так делает? Русские? Индусы? Инопланетяне?

    9824

    Да прольётся кровь программистов

    Расскажу ещё о софте для медучреждений.

    Работаю на станции переливания крови по контракту. Устанавливали известную в этих кругах информационную систему, написанную отечественными программистами. За десять месяцев работы с этой системой выявился список весёлых моментов.

    Программа внедряется на все станции переливания крови по сей день. Фирма, написавшая её аж в лохматом 1998 году, уже перестала существовать. Поддержкой занимаются не создатели, а люди, увидевшие программу впервые какое-то время назад.

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

    В программе используется классификатор адресов, который мало того, что автоматически не подключается полностью (каждый новый населённый пункт, улицу и дом надо вручную вытаскивать из него), но и не соответствует общепринятому российскому КЛАДРу.

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

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

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

    О таких косяках можно писать бесконечно. Может, кто объяснит, почему за 14 лет существования программного продукта не были доработаны даже простейшие вещи, которые требуются абсолютно всем пользователям? Зачем покупать и устанавливать софт, который уже шесть лет как не поддерживается его разработчиками? И это на фоне того, что существует минимум три схожих бесплатных программных продукта, которые за последние пять лет уже прошли серьёзную обкатку и учли сотни пожеланий пользователей.