Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Философия программирования > Поддержка модулей программы


Автор: UniBomb 19.10.2009, 10:49
Добрый день. Я не знаю как это правильно называется, посему попробую описать своими словами  smile  Из-за это я не знаю как правильно назвать тему, но если в процессе я это узнаю, то отредактирую заголовок.

Итак, я хочу написать некую IDE, в которой всё будет построено на модулях. Например у нас есть некий главный модуль (dll), который обеспечивает основную необходимую функциональность - это обеспечение расширяемости (себя любимого), это обеспечение инструментов для построения визуальных компонентов IDE, etc.

Дальше, за счёт механизма расширений, я хочу реализовать все основные элементы IDE - будь то текстовый редактор (например на основе Scintilla), окошки типа "watch", поддержку работы с различными компиляторами (например семейства GCC, а точнее портов для avr, arm и т.д.) GUI для дебаггера и т.д.


Первый и единственный пример подобного рода модулей, который мне приходит в голову - это сервер apache. Не совсем в тему, но очень близко.


Соответственно вопросы - какие есть подводные камни у такого подхода? Верно ли это решение идеологически? Какие есть стандартные механизмы поддержки модулей? 

Автор: skyboy 19.10.2009, 11:16
Цитата(UniBomb @  19.10.2009,  09:49 Найти цитируемый пост)
Первый и единственный пример подобного рода модулей, который мне приходит в голову - это сервер apache. 

total commander - 4 рода различных плагинов.
пока что неясно, что ты называешь "таким подходом". расширение функциональности за счет плагинов? да, довольно распространенное решение.
"подводные камни"? когда переносишь функционал в сторонние модули надо быть готовым, что модули могут оказаться некачественными. потому желательно проверять данные, пришедшие из модулей.
ну, и если плохо продумаешь интерфейс - обратно пути не будет. проблема обратной совместимости с уже существующими модулями будет перевешивать желание "поломать и переделать заново". потому-то делать систему "полностью модульной" с самого начала разработки - усложнять себе жизнь. во-первых, надо продумать все нюансы, что практически нереально. а во-вторых, выпуск первой рабочей версии продукта оттянется надолго.

Автор: UniBomb 19.10.2009, 11:46
Цитата(skyboy @  19.10.2009,  12:16 Найти цитируемый пост)
пока что неясно, что ты называешь "таким подходом"

Я имею в виду то, что само по себе приложение - это грубо говоря путая форма и одна dll, в которой только и есть, что механизм саморасширения. Зато всё остальное реализовано в виде расширений. Так например мы написали расширение, которое использует тестовый редактор на основе Scintilla и у нашей пустой формы теперь есть куда вводить код. Далее мы хотим подключить компилятор - мы пишем отдельный модуль, который будет обеспечивать всю рутинную работу с компилятором (создание мейкфала, вызов соответсвующих утилит с соответсвующими параметрами и т.д.). И т.д. до обрастания этой нашей пустой формы всем необходимым функционалом. Т.е. иными словами за счёт модулей я хочу не расширять существующий функционал, а создавать его по мере необходимости.

И да - где я говорил "мы" я имею в виду "я", просто легче думать более абстрактно  smile 


Цитата(skyboy @  19.10.2009,  12:16 Найти цитируемый пост)
плохо продумаешь интерфейс

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


Цитата(skyboy @  19.10.2009,  12:16 Найти цитируемый пост)
потому-то делать систему "полностью модульной" с самого начала разработки - усложнять себе жизнь

Захотелось именно таких сложностей, т.к. я никуда не тороплюсь и делать хочу сначала для себя  smile

Автор: Lazin 5.11.2009, 12:56
я тут подумал, и решил, что тебе не нужно писать свою IDE, вместо этого тебе нужно использовать Visual Studio 2008 Shell или eclipse в качестве платформы, конечно, придется разобраться с тем, как это работает, поэтому в начале будет сложнее
может быть даже не стоит так делать, а вместо этого разобраться, как использовать в студии альтернативный toolchain, вместо стандартного майкрософтовского, скорее всего для этого то-же потребуется писать свое расширение для студии

Добавлено через 1 минуту и 55 секунд
http://msdn.microsoft.com/en-us/vsx2008/products/bb933751.aspx

Автор: UniBomb 5.11.2009, 13:37
Цитата(Lazin @  5.11.2009,  13:56 Найти цитируемый пост)
eclipse

Не хочу  smile 


Цитата(Lazin @  5.11.2009,  13:56 Найти цитируемый пост)
Visual Studio 2008 Shell

Не знал о таком))) Интересный вариант, но если честно меня что-то смущает. Правда что именно - непонятно. А вот как насчёт стоимости средств разработки? Смогу ли я использовать экспресс версию студии (для работы с VS Shell)? Можно ли в получившуюся оболочку добавлять такие графические штуки, как например симулятор дисплея?

Автор: Lazin 5.11.2009, 14:05
Цитата(UniBomb @  5.11.2009,  13:37 Найти цитируемый пост)
Смогу ли я использовать экспресс версию студии (для работы с VS Shell)?

VS Shell runtime бесплатна, это просто голая VS 2008 Express Edition
для разработки нельзя использовать VS EE, можно только VS SE и выше
Цитата(UniBomb @  5.11.2009,  13:37 Найти цитируемый пост)
Можно ли в получившуюся оболочку добавлять такие графические штуки, как например симулятор дисплея?
конечно можно, вопрос в том, насколько это сложно сделать

Автор: UniBomb 5.11.2009, 14:54
Цитата(Lazin @  5.11.2009,  15:05 Найти цитируемый пост)
для разработки нельзя использовать VS EE, можно только VS SE и выше

Вот из-за этого отпадает и этот вариант. Ну нет у меня VS SE и покупать его не хочу  smile  Для себя же делаю... А использовать крякнутую VS SE как то не кошерно  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)