sacai (sacai) wrote,
sacai
sacai

Categories:

Поди туда, не знаю куда... О нечеткой логике задания



Нам бы схемку аль чертёж,
Мы б затеяли вертёж,
Ну а так ищи сколь хочешь -
Черта лысого найдешь!


Филатов, "Про Федота-стрельца"


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




Нет, цель-то была достаточно четкой: устройство, которое будет при получении определенного сигнала об аварии выдавать заранее подобранный управляющий сигнал на отключение генератора или потребителя. Ну и рабочее место к нему.
Нюанс был в том, что само устройство еще не существовало даже в виде проекта. Поэтому начальство приняло гениальное соломоново решение начинать разработку с рабочего места, но так, чтобы можно было потом к любому устройству его подключить.
Ну мы и начали: я, Ирлахман и наш непосредственный шеф.
Времена были суровые, первая половина 90-х, на ПК царствовал DOS, и с многозадачностью были некоторые проблемы. А тут задач вырисовывалось как минимум две: принять данные неизвестно откуда, сложить их в табличку и из этой таблички отрисовать на красивой картинке: то, что включено, должно быть зеленым, то, что отключено - красным, а то, что не определилось, чье состояние неизвестно - все равно каким, лишь бы синим.
Ирлахман взял в руки Borland C++ и занялся рисованием картинок, шеф принялся водить руками проектировать табличку, а мне осталось то, что обычно достается младшим по званию - подчищать баги за обоими и вносить новые.
Долго ли, коротко ли, но отрисовка схем и их же визуальный редактор были написаны и даже работали. Поскольку редактор работал чуть менее, чем отображалка, схемы хранились в текстовых файликах, чтобы можно было быстро поправить руками. Так мы изобрели JSON, правда, сильно урезанный, еще до изобретения самого JavaScript.
Теперь дело было за таблицей, где должны были храниться данные. С чем совмещаться, ясности по-прежнему не было, поэтому мы изобрели текстовую базу данных, которая внешне была похожа на вырожденный XML, а для скорости затягивали ее в память в двоичном виде.
Дальше нужно было как-то принять данные в эту базу, по-прежнему неизвестно, от кого. Начали копать в сторону различных костылей для многозадачности под DOS, и эту часть отдали мне, чтоб, если что, не жалко было выкинуть. Часть кода была написана лично шефом, после чего он вернулся к вождению руками.
Уже тогда я стал замечать. что любимым приемом мотивации у шефа было "Вы опять сделали плохо!" Поскольку любой джун по умолчанию страдает синдромом самозванца, тогда я не придал этому значения. А зря...
И тут вышла Windows 95, у которой с многозадачностью уже было что-то (если дискетку не форматировать к железу напрямую не лезть). Написанный мной код полетел в помойку, но к этому моменту наконец определились с железом и платформой на стороне самого устройства: промышленный одноплатный ПК на x86 и QNX 4 на нем. Да, прием данных пришлось писать заново, но по крайней мере делать это можно было одновременно с серверной частью.
Графика под DOS тоже пошла в музей, отображалку Ирлахман переписал на C++ Builder, но для совместимости остального кода с новой графикой пришлось писать специальную прослойку...
Чтоб Вы так жили в эпоху перемен с нечетким техзаданием!

Не, результат таки был, и далеко не ХЗ, но достигнут он был трудным путем.
Tags: #92днялета, it, мемуары, энергетика
Subscribe

Recent Posts from This Journal

  • Ну, за знакомство

    Не успела осень закончиться, как дорогая редакция предложила новое развлечение #наулицезима. И начать, по традиции, с зимней угадайки…

  • Лунная радуга

    Сейчас идет полнолуние, и сегодняшним утром Луна была хорошо видна. Гало на легких облаках было похоже на радугу. Лунную радугу. На обратном пути…

  • Промежуточный финал

    Итак, к завершению осеннего марафона #блогерскаяосень я дошел в старой советской традиции, с перевыполнением планов: 109 заданий уложено в 67…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 6 comments