Первый толчок
Прошло почти 30 лет! Я многого уже не помню, тем не менее я попробую зафиксировать здесь основные этапы развития.
1991 год. Будучи студентом, я проходил практику в одном конструкторском бюро. Как раз стали появляться компьютеры с цветными VGA-мониторами, и в том КБ занимались внедрением в производственный процесс P-CAD 4.5. Многое стерлось из памяти, но сохранилось впечатление, которое оказал на меня этот комплекс: расставляешь компоненты из библиотеки прямо на экране компьютера! На фоне черчения всего этого дела на кульмане новые технологии выглядели очень и очень круто.
Также невероятно мощно выглядела возможность вывода на графопостроитель результатов рисования. Я настолько проникся технологией, что даже дипломный проект выполнил в этой системе, наверное, единственный из всего потока. Даже преподаватели относились к таким новшествам с недоверием.
После окончания института я пошел работать в то же КБ, правда отдел был уже другой.
Время шло, мощность компьютеров росла. Цветной монитор стал нормой. Начала появляться Windows. Я поставил ее себе одним из первых, примерно в 1994 году. Версия была 3.11. Проку от нее было немного, но зато она умела запускать параллельно несколько программ, что позволяло быстрее переключаться между отдельными составляющими пакета PCAD. Именно тогда начались первые попытки «автоматизации» — по сути, последовательного запуска отдельных программных частей комплекса.
Начало проектирования
Использование PCAD продолжалось до появления Windows 95. Тогда стало понятно, что за технологиями Windows будущее, а PCAD стал устаревать.
Где-то между 1997 и 1998 годами и началась работа над моей программой. Идея была реализовать что-то похожее на P-CAD, только в нативной среде Windows. Сразу же была принята концепция «единого файла» для проекта. Хотелось избавиться от отдельного этапа «перехода от схемы к плате», который никогда не проходил гладко. Но самым неудобным было внесение изменений: если плата уже наполовину разведена, добавить что-либо в схему было крайне сложно.
Кроме того, я планировал убрать россыпь разных редакторов и поместить всё в одну программу.
В качестве целевой системы была выбрана прекрасная Windows 95. А в качестве языка разработки — мой любимый C++. Я изучил программирование интерфейсов под Windows на C. Но, поскольку программа была на C++, сделал свою GUI-библиотеку — аналог MFC (Microsoft Foundation Classes).
На момент создания программа называлась PasCAD. Это аббревиатура от чего-то веселого из студенческой жизни, но от чего именно — забыл.
Примерно через год воодушевленной работы (всё-таки это хобби) программой стало можно пользоваться. Это было прекрасное время. Тогда я был молод, полон сил и энергии, да и семьи еще не было. Так что я приходил с основной работы, быстренько ужинал и садился за программирование до четырех часов утра. На следующий день — всё заново.
Чтобы не «утонуть» в программировании, от автотрассировщика было решено отказаться. Дело в том, что в то время была популярна программа Specctra, которая в одном флаконе являлась расстановщиком, автотрассировщиком и редактором плат. С другой стороны, она не имела средств создания компонентов и создания плат. Предполагалось, что это делается другими средствами, то есть не было возможности «накидать» компоненты на плату, взяв их из библиотеки, как и нельзя было задать связи между компонентами.
Таким образом, у меня получился «симбиоз» с этой самой Specctra: в моей программе производилось рисование схем, создание компонентов, автоматическое связывание схемы с платой, а в Specctra — расстановка и трассировка. Хотя расстановка могла производиться и в моей программе.
Период активного использования
Симбиоз со Specctra длился довольно долго. Работа над ядром программы была закончена. Я периодически добавлял улучшения в виде автоматизации тех или иных действий, поскольку сам активно пользовался своей программой и видел потребности пользователя изнутри.
Много времени уделял библиотекам. Накопилось прилично, но на сегодня это всё устарело и практически никому не нужно.
Проделал большую работу по документации. Написал руководство, сделал систему помощи. Добавил даже визуальную анимацию: я не записывал видео с экрана. Вместо этого делал скриншоты, составлял сценарии для движений мыши, сводил всё это в единый анимационный поток и на рубеже 2000-х добавил звуковое сопровождение.
Стагнация разработки
С 2000 по 2006 год программа активно развивалась и даже распространялась. Затем основная работа стала занимать всё больше времени, и на развитие программы его практически не оставалось.
Как следствие, основная разработка замерла на долгие шесть лет. Конечно, я к ней периодически возвращался, чтобы исправить косяки, которые всё еще всплывали, и реализовывал идеи автоматизации. В этот период добавились все «мастера» по созданию резисторов, конденсаторов и др.
Знакомство с Qt
Уже не помню точно тот момент, когда попалась под руку эта система Qt. Вероятно, в 2006-2007 годах, и это была версия 4. Она оказалась настолько удобной и мощной, что я прошел с ней весь дальнейший путь: через версию 5 и теперь 6. Нужно сказать, что я пришел к ней не сразу. Было несколько подходов, сначала безуспешных, но с каждым новым разом — всё более продвинутых.
В результате я неплохо изучил эту библиотеку. И тогда закрались первые мысли: «А не переписать ли мою программу под Qt?» Нужно сказать, работа предстояла грандиозная. По сути, нужно было написать систему заново, что называется, «по мотивам».
Плюсов это давало множество. А главное, я получал мультисистемность! Моя программа могла работать и на Windows, и на набирающей популярность (уже в широких кругах) Linux. Помимо этого, библиотека сразу давала мультиязычность. Вообще-то, переводить на другие языки я пытался и в прежней версии, но эти попытки сильно проигрывали стройной системе, принятой в Qt.
Переписывание на Qt
Я считаю, что развивать с нуля легче, чем производить такой радикальный рефакторинг. Когда развиваешь последовательно — постоянно компилишь какой-то промежуточный код, видишь результат итерационно. Это вдохновляет. Когда я переписывал на Qt, всё было иначе: нужно было переписать всё и только затем можно было увидеть результат.
Даже не помню, сколько времени ушло на переписывание. Мне кажется, я потратил не меньше трех месяцев, прежде чем смог откомпилировать и пощупать реально. Естественно, получилось не так, как хотелось. И начался долгий процесс шлифовки, который растянулся еще на полгода.
Примерно к 2013 году программу уже как-то можно было использовать. В процессе рефакторинга переработал всё: от метода хранения и формата файлов до структуры взаимодействия.
Затем — повторное написание документации, еще одна система помощи и очередная анимационная поддержка. Правда, в этой поддержке я уже использовал достижения прогресса: звуковое сопровождение генерилось непосредственно программой с помощью синтеза (через библиотеку Qt).
Повторное накопление библиотек (хотя я и сделал импорт из предыдущей версии) — всё же компоненты создавались заново. В основном потому, что прежние уже выходили из употребления и появлялись новые.
Большой опыт программирования, приобретенный за все годы трудовой деятельности, не пропал даром. Код стал красивее, программа — структурнее и надежнее. Наконец-то добавил полноценную отмену действий, то, чего всегда не хватало в предыдущем варианте.
Здесь же отказался от использования Specctra. Наконец моя программа стала самодостаточной и не требовала для работы никаких внешних инструментов. Я сделал неплохой инструмент для расстановки компонентов и постарался реализовать идеи, почерпнутые из ручного режима трассировки Specctra. При этом нужно честно признаться: до уровня Specctra я не дотянул, зато привнес кое-что новое — автоматическое завершение трасс. С этим сервисом трассировка стала радикально быстрее.
Сознательно не делал автоматическую трассировку. Несмотря на наличие автотрассировщика в той же Specctra, ни я, ни мои коллеги им не пользовались. Слишком долго настраивать для получения адекватного результата. Фактически, быстрее развести руками за день, чем два дня ковыряться с настройками, а потом еще два дня разгребать то, что наворотил автотрассировщик.
Опять-же, сложность плат росла. Росли тактовые частоты. Пришло понимание, что хорошая трассировка - это не просто найти возможность проложить трассы, а проложить их правильно. Плюс широкое внедрение полигонов. В общем, все это снижало ценность автоматической трассировки.
Вместе с переписыванием на Qt программа получила новое имя — SaliCAD. Это снова аббревиатура от имен членов моей семьи, а кроме того, это имя оказалось свободно для использования в качестве домена.
Развитие и новые возможности
Пожалуй, главным нововведением следует считать поддержку 3D, хотя практическая польза от этого весьма сомнительна — просто посмотреть, какой будет внешний вид. Прикольно, да и только.
Для реальной пользы необходимо делать экспорт в современные форматы обмена, например STEP. Но этого я пока не реализовал — очень сложно.
Для удобства использования нужен еще и импорт. Импорт из STEP тоже очень сложен. Поэтому у меня его нет. Конечно, можно было воспользоваться библиотекой 3D OpenCascade, но у нее такой объем, что я не решился ее внедрять, тем более что функция 3D в моем случае — чисто иллюстративная.
В качестве импорта реализовал STL и VRML, то есть те форматы, которые не требуют разбиения криволинейных поверхностей на треугольники (у них всё уже разбито).
И реализовал несомненно крутую вещь: встроенный 3D-редактор.
Я знаком с современными системами 3D-проектирования типа SolidWorks и SolidEdge и отчетливо себе представляю процесс. Для создания 3D-моделей компонентов требовалось совсем другое: минимум телодвижений (то есть простота) и возможность повторного использования составных частей компонента. Например, нарисовал одну ножку — и хотелось бы иметь возможность тиражировать ее не только в рамках одного компонента, но и легко переносить в другие, так как компоненты во многом состоят из повторяющихся частей. Более того, некоторые идентичны по форме, но различаются по размерам.
Заключительный рефакторинг в конце 2025 года
Постепенно я пришел к идее полного ребрендинга. В его основе — смена имиджа. Вместе с имиджем поменялось имя и сайт.
Текущее название проекта — SalixEDA. Выбор был обусловлен практическими соображениями: уникальность, удобство использования и преемственность по отношению к предыдущему имени.
Основным техническим нововведением на этом этапе явилась модернизация системы библиотек. Нужно сказать, что с момента перехода на Qt-фреймворк библиотеки уже стали глобальными. Я создал сайт, на котором, помимо собственно сайта, была еще и глобальная библиотека.
Суть модернизации библиотек — в появлении приватного облака, которое я раздаю для любого пользователя SalixEDA совершенно бесплатно и автоматически. Таким образом появляется выбор: можно публиковать свои наработки, можно хранить их от всех в тайне, можно комбинировать, а можно вообще оборвать связь с моим сайтом и замкнуть всё в рамках своего предприятия или даже компьютера. Естественно, это требует определенной квалификации, но вполне реально.
Вместо заключения
К началу 2026 года проект прошел очередной этап переосмысления. Был выполнен ребрендинг, в результате которого программа получила новое имя — SalixEDA.
Смена названия отражает не столько технические изменения, сколько попытку аккуратно отделить текущий этап развития от предыдущих версий.
Разработка продолжается. Как и раньше, она идет постепенно: через доработку существующих возможностей, исправление накопленных ограничений и реализацию новых идей и технологий по мере их осмысления.
История проекта здесь не заканчивается. И я уверен, что допишу сюда новые и новые страницы...