MSEIDE и MSEGUI

Уже довольно давно, почти два года назад, я рассказывал читателям "Компьютерных вестей" о среде быстрой разработки приложений Lazarus, основанной на пакете Free Pascal и реализующей кросс-платформенный аналог Delphi. Сейчас я хочу рассказать ещё об одной RAD-среде для Free Pascal и о соответствующей компонентной библиотеке.


Первое впечатление...

...честно говоря, не очень хорошее. Начнём с адреса официальной страницы этого программного продукта: homepage.bluewin.ch/msegui. Хотя многие бесплатные (и особенно open-source'ные) программы хостятся где попало, многие из них имеют хотя бы приятные взгляду сайты, не дышащие мирской аскезой. Ну да ладно, не так уж и много людей, которые способны создать собственную RAD-среду, а потому будет несправедливо требовать у них обладать ещё и дизайнерскими талантами.

Дистрибутив представляет собой два архива. В одном - бинарники сразу для Windows и Linux (нет, не хитрые такие "Universal binary" новой волны, а просто два разных файла для разных систем), во втором - сорцы, они кроссплатформенные. Всё вместе занимает объём около четырёх с половиной мегабайт. Распаковывать их нужно так, чтобы исполняемый файл был в итоге внутри папки, которая вложена в архив с сорцами. Кроме того, для непосредственно программирования нужен компилятор Free Pascal - его берём с freepascal.org.

Распаковали? Тогда запускаем. И тут на экране появляется нечто странное - окошко, в котором нет ничего, кроме строки меню. И размером окошко такое, что ровненько это меню в нём и помещается. По внешнему виду меню сразу становится ясно, что для отрисовки контролов библиотека MSEGUI, которая и есть сердце всей этой разработки, не использует платформенных API для GUI. Видимо, автор библиотеки и среды разработки решил для реализации полной платформенной независимости самостоятельно реализовывать все контролы. Это, конечно, с чисто технической точки зрения, совершенно верно. Ладно ещё Windows, где GUI унифицирован и вылизан донельзя. Но вот в Linux... м-да, там, конечно, возникают некоторые проблемы. Этот путь действительно проще, чем писать поддержку Qt, Gtk и прочих GUI, как это сделано в Lazarus. Но только выглядит это не совсем так, как хотелось бы. Как сказал когда-то Джоэл Спольски по поводу интерфейса первых Java-приложений, это как если бы инопланетяне попробовали приготовить человеческую еду. Она была бы с виду как еда и была бы питательной и полезной, но это не было бы человеческой едой, если бы на вкус это была овсянка. Заранее приношу свои извинения, если исказил слова Джоэла, но суть там была именно такая. Так вот, всё это можно с точностью повторить, если вместо Java написать MSEGUI. Конечно, можно выдать необычный вид за этакую "фишку" программы, но не думаю, что это будет хорошая идея. В наше время популярны интерфейсы в стиле Windows Vista, а MSEGUI предлагает стиль Windows 3.11. Этот стиль, конечно, вызывает ностальгию, и он наверняка понравится определённой категории пользователей. Но уж больно эта категория немногочисленна. Вот мне тут вспомнился другой продукт, написанный на Free Pascal - графический редактор Pixel (www.kanzelsberger.com/pixel). Очень, кстати, хороший графический редактор. Так вот, к чему я его вспомнил? К тому, что там тоже идёт отрисовка всех контролов самой программой. Но смотрятся они - взгляните на скриншоты на сайте - совершенно иначе, чем MSEGUI'шные.

 


Второе впечатление...

...уже получше. Хотя, конечно, так и не говорят (я про "второе впечатление"), но мы ведь тут не о филологии сейчас. Так вот, присмотревшись к количеству компонентов, понимаешь, что среда и библиотека хоть сейчас готовы к тому, чтобы с их помощью писать какое-нибудь приложение реальному заказчику. Посудите сами: стандартный набор Edit'ов, CheckBox'ов, Chart'ов и прочих контролов общего пользования, компоненты для разработки БД, компоненты для отчётов и даже компоненты для работы с COM-портами. В общем, всё довольно серьёзно. Но, конечно, одних компонентов для работы над проектом тоже недостаточно. Давайте глянем, что там ещё есть в этой среде.

Ну, во-первых, редактор кода. Он поддерживает подсветку синтаксиса. И... всё. Ну, то есть, он поддерживает ещё копи-паст, поиск по тексту и прочие штуки, но, в целом, это просто блокнот с подсветкой синтаксиса. И код в нём набирать не удобнее, чем в блокноте. Забыл, в какой очерёдности идут параметры функции - иди ищи в исходниках. Неудобно.

Теперь редактор GUI. Он есть, и он почти WYSIWYG. Когда создаётся новая форма, откуда-то выскакивает Object Inspector, который, впрочем, тут же благополучно куда-то прячется, и его приходится выковыривать по-новой. Также нужно самостийно лезть в менюшку View и включать отображение палитры компонентов. Мелочи, скажете вы, и, конечно, будете абсолютно правы. Но именно такая небрежность в мелочах меня лично почему-то и раздражает больше всего в программах. Ведь надо написать совсем немного кода, чтобы инспектор объектов не прятался при открытии новой формы, а был бы от неё где-нибудь, скажем, сбоку. Да и вообще, чтобы окна не разбегались по экрану, а образовывали собой некое подобие единого целого. Ведь в старых версиях Delphi IDE тоже была не монолитным окном, а множеством мелких окошек. Так вот Borland тогда не поленились сделать так, чтобы при открытии они все удобно умещались на экране. Что мешало так сделать создателю MSEIDE - сие науке неизвестно.

Ну вот, теперь все посчитают меня ворчуном... Самое время сказать наконец-то что-нибудь хорошее об MSEIDE. Сделать это несложно: к счастью, в среде есть возможность отладки, что само по себе искупает многие недостатки. Отладчик работает хорошо - ну, то есть так же, как и все остальные отладчики, и так, собственно, как он и должен работать. Судя по тому, что никаких внешних файлов типа gdb.exe в комплекте поставки обнаружено не было, отладчик написан самим разработчиком MSEIDE и MSEGUI (кстати, зовут его Martin Schreiber - простите, что до сих пор его вам не представил). А если это действительно так, то честь и хвала этому разработчику, потому что написать отладчик - это великий труд... Впрочем, всю среду разработки - тоже... Ну, к этой мысли я лучше потом вернусь, сначала дорасскажу основное.

Всё-таки редактор кода кое-что умеет: поддерживается завершение кода для классов. Ещё поддерживается навигация по коду, так что можно, зажав Ctrl, переходить с помощью мышки от места, где переменная, класс, модуль и т.п. используются, к месту, где оно самое декларируется. Ещё присутствует несколько вариантов сборки готового проекта - тоже вполне может пригодиться.

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


Окончательное (третье) впечатление...

...такое, что MSEIDE + MSEGUI - проект чисто концептуальный. Автор этого программного продукта (хотя, наверное, можно сказать, что продукта целых два - среда разработки и библиотека для программирования в этой среде) не претендовал на создание чего-то, не имеющего аналогов. Он просто играл своими интеллектуальными мускулами и программистскими навыками, когда создавал своё детище. Конечно, следует признать, что человек он, безусловно, талантливый и целеустремлённый, потому что иначе он вряд ли создал бы реально работающую среду разработки с отладчиком и собственной компонентной библиотекой. Но при этом следует отметить и то, что эта среда, судя по всему, рассчитана на одного-единственного пользователя - им является, конечно же, сам автор. Среда разработки не слишком дружелюбна к разработчику, да и оформление итогов работы этого самого разработчика, как я уже говорил, оставляет желать лучшего.

Безусловно, если смотреть на MSEIDE и MSEGUI как на разработку концептуальную, следует отметить, что она весьма интересна. Но, как мне лично кажется, на уровень массового средства разработки ей при таком подходе её автора никак не выйти. Хотя, судя по форуму freepascal.ru, есть энтузиасты, которые активно используют MSEIDE+MDEGUI, но там же находятся и такие, которые даже не смогли понять, как начать с ней работать.

Само собой приходит в голову сравнение MSEIDE и Lazarus'а. Сравнение вполне оправданное, потому что это две среды разработки, обе бесплатные и обе основаны на Free Pascal. И здесь чётко видно, насколько Lazarus продуманнее, чем MSEIDE. Во-первых, он совместим (пусть и не очень хорошо) с Delphi - самым массовым средством разработки на Паскале. Пожалуй, отсутствие совместимости с Delphi и Lazarus - самый серьёзный камень на пути дальнейшего прогресса MSEIDE и внедрения его в массы. Во-вторых, Lazarus предоставляет разработчику более совершенные механизмы работы с кодом, включая подсказки и рефакторинг. Всё это уже давно стало индустриальным стандартом, и любая приличная среда разработки должна это поддерживать. Ну, а в-третьих, MSEIDE не шибко рекламируется и разрабатывается всего одним человеком, в отличие от Lazarus'а, который является плодом деятельности многих разработчиков.

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

Вадим СТАНКЕВИЧ,
dreamdrusch@tut.by

Версия для печатиВерсия для печати

Номер: 

04 за 2008 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!
 

Комментарии

Страницы

Аватар пользователя aktuba
Смущает, что автор назвал Delphi средством разработки на паскале, т.к. есть два понятия Delphi и оба правильных:

1. Delphi - среда разработки (IDE).

2. язык программирования Delphi.

Второе верно, т.к. с Delphi 7.0 используется именно язык delphi, у которого есть свои стандарты и т.д...

Аватар пользователя Вадим Станкевич
Спасибо за замечание. Но ведь Delphi вырос из Object Pascal, который вырос из Turbo Pascal. Имелось в виду, что и Delphi, и Free Pascal оба используют Паскаль а не, скажем, Java.
Аватар пользователя Attid
"Забыл, в какой очерёдности идут параметры функции - иди ищи в исходниках. Неудобно."

ну это не правда, там подсказки есть, по контрл + пробел и контрл+шифт+пробел

красивый вид МСЕиде можно найти на форуме или в конференции Мартина, он этим пока не заботится, но его потихоньку к этому двигают =)

а вот в сравнении с лазарусом можно было указать на стабильность проэкта и исправлении багов в считаные минуты. МСЕ заточен по БД приложения, где главное чтоб не было ошибок, а красота на потом.

Аватар пользователя Attid
да и отладчик он не изобретал, а использует gdb
Аватар пользователя Martin
I used Google to translate it to English.

Some comments:

- Windows 3.11 had no animated buttons such as the default MSEgui skin has

IIRC.

- To open the objectinspector double click on the component you want to

edit, activate the small arrow up button top right in order to let it stay

on top while changing input focus or use the stay on top option of your

window manager.

- Trunk has the 'View'-'Component Palette' on top of the hierarchy.

- Use panels for window docking.

- Martin the great debugger developer. ;-) BTW using GDB and the incomplete

MI interface was difficult enough.

- The syntax highlighting is not compiled in, the information how to

highlight the source is in the *.sdef files in apps/ide/syntaxdefs, you can

easy add more languages or customize the existing if you want.

- The name of the product is MSEide+MSEgui.

Martin

Аватар пользователя Вадим Станкевич
2 Martin:

Thanks for your comments. I just meant that MSEide is not good to be used out-of-the box, unlike Lazarus. I'm sorry about mistake wit debugger.

2 Attid:

За дебаггер прошу прощения, за дополнения - спасибо.

Аватар пользователя Alexey Rus
Спасибо Станкевичу за очередной обзор.

Интересно. Интересная игрушка. :)

Судя по последнему абзацу, не очень пока интересная, посмотрим, что будет дальше. А один разработчик - это очень плохо. Проект не вытянет.

Интересно пишет Станкевич - не как российские СМИ. Про чулан, про игрушку. У нас России так не пишут. :) Это просто так замечание.

Аватар пользователя Vadim V.Lou
Справедливая статья. Добавлю что такое ощущение у меня отстаётся и от компилятора free pascal. Достаточно почтать страницу багов, чтобы волосы встали дыбом ... На мой взгляд авторы занимаются не тем ... Вместо концептуального развития компилятора они занимаются поддержкой всевозможных диалектов ...
Аватар пользователя Savely
2 Vadim V.Lou (keyboard maanger): А что понимается под "концептуальным развитием компилятора"?

Насчет диалектов - поддержка совместимости с Дельфи и Borland Pascal заложена в FPC изначально.

От девяти пунктов в странице known багов у Вас волосы встают дыбом? Или мы читаем разные странички?

Аватар пользователя Vadim V.Lou
> дыбом

- читаю багтрекинг на сайте

> развитие

не спрорю, что много вкусностей есть в отличии от борландовского компилера, но все они ничего не стоят т.к.:

- нет пакетов, т.е. нед динамики в разработке (одна статика)

- нет namespace.

- нет api abstraction - жёсткие привязки к платфлорменным апи. Как вариант это может и сойдёт, но не в наше время.

- нет PInvoke.Не вижу сложности поддержи этого механизма на уровне компилятора.

- возможно какой то постой/опциональный garbage manager (хотя бы на основе счётчика ссылок, аля interfaces).

- что то типа чёткого CLR. Когда апи строго ранжированно по namespace.

- расширители типов... типа функции для простых типов. Для простых типов можно ставить после переменных точку и писать метод (в редакторе был бы выпадающий список):

s: string;

...

if s.StrPos('ку') then ...

- именованные(алиасы) with:

with L := Form1.TListBox.Lines do

L.Clear;

Это даёт более строгий код, и меньшает ввероятность ошибок из-за возможных перекрытий в with...

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

- ...

Вместо траты времени на несущественные фишки лучше бы сконцентрировались на качестве именно компилятора. Причём не на оптимизаторе кода, а на функциональном качестве - развитие языка...

По моим меркам неплохой вариант - за основу взять portable.net [http://www.southern-storm.com.au/portable_net.html] и переделать, выкинув ограничения .net .

Страницы