Многие школьники города Азова, прошедшие в курс информатики на базе УПК города Азова в 1998-2008-м годах, столкнулись с графическим редактором «Совок», который Лидия Семеновна Прохина заботливо давала для подготовки изображений в творческие работы.
В августе 2023-го года исполнится 25 лет со дня написания его популярной версии. Август — вообще знаковый год. Азов-Инфо в первом виде появился 1 августа 2000-го года, а Совок — почти ровно на два года раньше. Этот редактор явился моим гимном поступлению в РИНХ на специальность «Информационные системы в экономике» после первого же экзамена благодаря медали и природной наглости в борьбе с "административными" барьерами. При этом за два дня до этого я поступил в ДГТУ, и почти уверен, что если бы выбрал ДГТУ, то Совка v.2 бы не было!
История редактора уходит в далекий 1997-й год. Известный многим совок на Turbo Pascal был второй версией, первая же была написана ровно на год раньше, 29.07.1997 в 11:14:08 (как гласит заметка в исходном коде, ссылка на Github ниже), на языке Basic, причем преимущественно писалась она во Дворце Пионеров, а рядом господин Каргин создавал свой парсер формул! Я совершенно не помню историю написания первого Совка, кажется о таком функционале попросила Лидия Семеновна Прохина, пожаловавшись, что очень трудно рисовать картинки для программ на Basic, но зато помню, что благодаря навороченной библиотеке для работы с мышкой там менялся курсор, были какие-то дополнительные фичи. Как-то боролся с глюками, хотя запись в 01:12:04 30.03.1998 года гласит об обратном.
Но вот вторая версия уже писалась по технологии безошибочного программирования, т.е. изначально проектировалась архитектура, потом отлаживался каждый блок для всех возможных тестовых значений, а потом уже все объекты собирались в код.Совок полностью объектный, основной код программы занимает десяток строчек — инициализация переменных, а вся бизнес-логика заложена в событиях UI.
Особенностью этого кода является создание с нуля всего графического интерфейса. Да, весь интерфейс - начаиная с кнопок и меню, и заканчивая файловыми диалогами и списками с прокруткой. Никакие библиотеки для этих элементов управления не использовались, все написано непосредственно мною.
Объекты по работе с графическими объектами (кнопки, панели и т.д.) были выделены в отдельную TPU-библиотеку, предоставляя, таким образом, полностью готовый UI-Kit. Через 4,5 года с использованием этого API я сдавал экзамен по компьютерной графике в институте — интерфейс векторного редактора (там уже можно было выделять, двигать, ресайзить объекты, был режим freehand draw и т.д.) был сделан за один вечер (скоро будет добавлен в github-репозиторий, ссылка ниже).
Лидия Семеновна таки умудрилась найти несколько глюков, которые воспроизвести удавалось только ей. Поэтому финальная версия, скорее всего, была сделана ближе к октябрю.Но, повторюсь, это был особый талант Лидии Семеновны, шуточное свидетельство о котором я привел на иллюстрации. Я вписал туда ее фамилию и прикрепил на доску объявлений в компьютерном классе. Пару недель оно провисело незамеченным, но когда Лидия Семеновна его все же заметила - жутко на меня обиделась, хотя и не надолго!
Изначально в паскалевском Совке был еще и довольно мощный текстовый редактор, но его пришлось удалить из-за нехватки памяти и лени оптимизировать код. Длительность написания программы в исходном виде — ровно 6 суток. В воскресенье приступил, в пятницу вечером получил готовый код. Ежедневный кодинг был по 8-9 часов.
Забавный факт. Когда я приступил к разработке "Совка", решил использовать найденную мной незадолго до этого концепцию экстремального программирования (eXtreme Programming). Самый главный для меня принцип состоял в том, что каждый модуль программы должен быть тщательно протестирован. Тогда собранная из этих модулей программа будет значительно менее глючной. И правда - разработанный за неделю "Совок" сразу же стал применяться, а несколько багов (и то, на мой взгляд, субъективных), найденных преподавателем информатики Лидией Семеновной Прохиной, были настолько несущественны, что совершенно не уменьшали качество программы. Но пару лет назад (в 2021-м году) я был на вебинаре Кента Бека, где он несколько раз повторил, что опубликовал свой подход в 1999-м году. Получается, что я наткнулся в интернете на одну из его ранних идей и применил еще до того, как он стал ее популяризировать.
Итак, прошло много времени, и тем интереснее открыть коды. На самом деле, я открыл их еще в момент публикации в блоге «Live@edu в России» 25.10.2008, но ссылки на программу были даны через сокращатель ссылок от Microsoft, который вместе с другими их проектами был отправлен в null, поэтому какое-то время ссылка не работала.
Загрузить обе версии редактора можно в GitHub
Для запуска на современных компьютерах понадобится программа DosBox. Актуальная версия программы доступна на сайте программы.
Также потребуется русификация. Ее можно сделать с помощью бесплатной утилиты keyrus (находится в папке /utils в репозитории), разработанной донецким программистом Дмитрием Гуртяком, выполнив изнутри эмулятора DOS команду:
keyrus /full /scan=29e /lat=29e /alt=56e