Форум » [x]Harbour » Delphi Run-Time for [x]Harbour (размышления). » Ответить

Delphi Run-Time for [x]Harbour (размышления).

Sergey Spirin: Здравствуйте. Все-таки не покидает меня мысль о том, что было бы очень неплохо организовать Delphi Run-Time для [x]Harbour. В очередной раз мысль вернулась в связи с выходом Delphi2010. В этой версии сняты ограничения по rtti-доступу даже к private-секциям классов и т.д., что делало бы задачу еще проще. Собственно, сейчас пожалуй, я могу четче сформулировать, что я имею в виду, и даже немного проиллюстрировать. Вообще, предоставление Дельфи ран-тайма не-дельфи инструменту, не является какой-то уникальной мыслью. Например, инструмент, написанный Алексеем Волковым - Script Builder. Он и будет иллюстрацией того, что я имею в виду под Delphi Run-Time. Script Builder - это Delphi Run-Time для Microsoft Active Scripting (VBScript, JavaScript, ActivePerl, ActivePython). Скачать его можно с: http://www.volkoff.ru/file_download/4/sbpro.exe Script Builder написан на Delphi5 довольно давно (2000-й год) и имеет немного старомодный интерфейс. Но если вы его скачаете и немного "пощупаете", то увидите, что это продукт более качественный, чем те же Xailer или тем более Visual xHarbour. А по уровню предоставляемого ран-тайма и его расширяемости и сравнивать нечего, это, собственно, дельфи. Так вот, под "Delphi Run-Time for [x]Harbour" я подразумеваю аналогичный (но более современный инструмент) для [x]Harbour, который полностью поддерживал бы Unicode (имею в виду визуальные компоненты). ----- Реализация. Ясно, что начинать надо с 2-x сторон. 1) Delphi-часть, сначала собственно ран-тайм, здесь в общем-то все понятно и я могу это реализовать. 2) [x]Harbour-часть, здесь необходима некоторая библиотека, которая бы обеспечивала прозрачный доступ к классам, объектам Дельфи и делала бы их частью своего языка. Здесь моих знаний [x]Harbour явно не хватит. То есть, одному мне такой проект не поднять... Поэтому и пишу Паша, Григорий, Петр и другие уважаемые форумчане! Что вы думаете об этом? О возможном своем участии? Жду ваши комменты Спирин Сергей.

Ответов - 121, стр: 1 2 3 4 5 6 7 All

Петр: Sergey Spirin пишет: Да. Точно. Это просто удобная паскалевская обертка. Просто надо будет подумать как обернуть [x]Harbour поддерживает битовые операции - hb_bit*(). Также нужны соответствующие include файлы #define что-то там

Sergey Spirin: Петр пишет: Все таки - нужно писать классы обертки? Переопределять хотя бы основные методы. Остальное можно через OnError Ну что-то, наверное, типа того. Дизайн-тайм просто этого требует. Обработчики событий не просто же процедурами делать, как-то это "не кудряво"...

Sergey Spirin: Петр пишет: [x]Harbour поддерживает битовые операции - hb_bit*(). Также нужны соответствующие include файлы #define что-то там Да, создание текстов #define-ов, похоже, еще одна работа для Delphi-создателя шаблонов А вообще над множествами (set) в Delphi возможны такие операции как: if biMinimize in BorderIcons then... BorderIcons := BorderIcons + [biMinimize] BorderIcons := BorderIcons- [biMinimize..biMaximize] То есть, проверка на вхождение, объединение, пересечение..


Vlad04: Например, инструмент, написанный Алексеем Волковым - Script Builder. Он и будет иллюстрацией того, что я имею в виду под Delphi Run-Time. Вообще, не разделяю Вашего восторга по поводу творения Волкова. Да он и сам считает проект не законченным. Я пробовал на Script Builder реальные программы писать. Глючный и не предсказуемый инструмент. Идентичные конструкции работают в Делфе - не работают в Script Builderе. И таких примеров было полно. Что получит от этого симбиоза Нарбоар и получит ли неизвестно ( точнее программисты). Но то, что скорость разработки упадёт в несколько раз - это факт.

Sergey Spirin: Vlad04 пишет: Вообще, не разделяю Вашего восторга по поводу творения Волкова. Похоже, Вы явно не уловили обсуждаемую здесь "идею". Уж, конечно, Script Builder тащить в Харбур никому и в голову не приходило. Script Builder использовался как иллюстрация принципиальной портируемости ран-тайма дельфи даже в сильно младших версиях. Vlad04 пишет: Идентичные конструкции работают в Делфе - не работают в Script Builderе. Конструкции языка? Тык Вы использовали в нем DelphiScript? Так это явно, какая-то реализация скрипта от самого Алексея, DelphiScript - какого-то стандарта или общепризнанной реализации в принципе не существует, думаю также как и С++ Script То есть, DelphiScript в SB ну никакого отношения к Delphi run-time не имеет. Да и как можно сравнивать творчество одного человека со всей Дельфи-историей. Думаю, если бы вы использовали бы например JavaScript в SB, то результаты были бы явно лучше, так как производством этого скриптового языка занимается солидная корпорация. Ну, а у нас эту нишу занимает сам [x]Harbour, нам никакие скрипты не нужны, у нас уже есть Тоже наверно небезглючный и с дельфи трудно сравнимый, но все-таки

Sergey Spirin: Sergey Spirin пишет: Что будет в Delphi run-time? Смотрю Delphi7, 2010 у меня еще нет: rtl70.bpl - 780 KB vcl70.bpl - 1.3 MB vcldb70.bpl - 270 KB Harbour70.bpl - 150 KB + какие-то библиотеки, используемые пользователем Смотрю Delphi2010 и, честно говоря, увиденное мне все больше и больше нравиться Размер ран-тайма действительно ожидаемо увеличился, но явно не катастрофически: rtl140 - 1,7 MB vcl140 - 2,4 MB dbrtl140 - 0,4 MB vclx140 - 0,25 MB vcldb140 - 0,3 MB Ну, возможно еще что-то потребуется, это надо смотреть. ---- Остальное по желанию, например ADO adortl140 - 176 KB и т.д. ---------- Теперь о нововведениях в RTTI. Действительно, терерь можно говорить о полном Reflection. Кстати, новый демо-пример с этими возможностями так и называется: "Reflection Browser". В нем как раз демонстрируется полная энумерация всего прямо от корня - TObject (вопрос про горизонтальный обход в потенциальном шаблонщике ). Пример бросил сюда, можно посмотреть: http://www.paritetsoft.ru/downloads/rtti_browser.rar Можно порассуждать абстрактно . А какие еще есть солидные системы с полным рефлекшн, которыми мы могли бы воспользоваться? В общем то, на ум приходит еще только 2 варианта - .NET и Java... Яву, как вариант, я думаю можно отмести сразу. Клипперисты "склонны" к созданию клиентских приложений, а в Яве это тупиковая ветка (свинги). Вся мощь и красота Явы в web-приложениях и web-технологиях, что все-таки далековато от классического клипперного представления о мире И как это "скрестить" не ясно. .NET... Не знаю, насколько возможно полноценное использование .NET из не-NET приложения.. Предположим, что возможно и не сложнее чем использовать дельфи ран-тайм... В этом случае .NET выглядит предпочтительней. .NET еще больше и солидней чем Дельфи. .NET развивается бешенными темпами (в жесткой схватке с Явой). .NET фактически уже часть Windows, поэтому не требует доп установок и т.д. На сегодняшних, а тем более завтрашних машинах разница в производительности с native-кодом уже не так важна, а безопасность кода на десять порядков выше, чем у native-кода... Но Есть один забавный нюанс Все языки под .NET - это всего лишь синтаксические оболочки над .NET-машиной Например, сейчас Delphi.Net (Prizm) просто устананавливается как плагин в Visual Studio и все, поехали! А идеологию подходов диктует именно .NET-машина, сводя разницу языков лишь к лексическим нюансам В контексте этого, Harbour(Clipper) со своим весьма специфичными взглядами на устройство БД и работы с БД, выглядит в связке с .NET даже как-то диковато Взгляды специфичны, конечно, в контексте сегодняшнего дня, а не 20-летней давности... Отсюда, думаю, что все-таки наболее органичное решение - это native Win32(64) ран-тайм Все я это к тому, что если втягиваться в такой проект, то хочется быть уверенным в правильности направления.. Поэтому, поправьте, если что-то в изложении не так. Ну и еще вопрос про жизнесобность Харбура. Не получится ли это все "мертвому припарка"? Ну или не мертвому.., а "припарка последним производителям софта для учета домофонов"? --------------- И последнее, в лоб либа для фаст под D2010 не работает, причина - Unicode. То есть, код весь придется проходить и адаптировать. Петр, в связи с этим вопрос, при обработке Harbour API уже как-то закладываться на возможный Unicode, либо пока бог с ним? Что посоветуете?

Andrey: Sergey Spirin пишет: "припарка последним производителям софта для учета домофонов"? Причем тут ЭТО ? Берите большие системы, типа БЭСТ 4+ или 5... Да и другие есть наверно... Сюда ведь не я один заглядываю ?

Sergey Spirin: Andrey пишет: Причем тут ЭТО ? Андрей, ну это же шуточная аллегория-обобщение Кстати, гляньте в GUI тему "Глюки при прорисовке формы...", там тоже что-то про домофоны. Поэтому аллегория родилась сама собой Andrey пишет: Берите большие системы, типа БЭСТ 4+ или 5... Да и другие есть наверно... Ох , Андрей, не напоминайте мне про мучения и конвульсии старых производителей бухсофта. Я сам из "отмучившихся" и эту проблематику хорошо знаю. Это тоже домофонщики

Петр: Sergey Spirin пишет: Пример бросил сюда, можно посмотреть Не посмотрел - у меня почему-то выскакивает "Поврежден заголовок", но это не так важно. какие еще есть солидные системы с полным рефлекшн В том или ином виде reflection поддерживает куча языков, в т.ч. [x]Harbour. Не всем нужен полный reflection, да и предназначен он пока для задач специфических. А потом, что считать "солидной системой" в 2010 году? ИМХО эта система должна быть ориентирована на разные платформы (архитектура процессора + ОС) в т.ч. и 64bit, Unicode (и не только в варианте от MS), обязательно иметь встроенный garbage collector, поддерживать тот же reflection, иметь удобную RAD среду (Visual Studio ) и т.д. и т.п. (позвольте не оглашать весь список ). Но у каждого свое ИМХО и каждый найдет в этом перечне те вещи, которые нужны в первую очередь, и те вещи на которые даже не обратит внимание. Так что оставим эти разговоры для специализированных форумов - там всегда найдется желающий начать "священную войну", типа я vs all world. Sergey Spirin пишет: Не знаю, насколько возможно полноценное использование .NET из не-NET приложения.. Предположим, что возможно и не сложнее чем использовать дельфи ран-тайм... Можно, вовсе не сложно. На сколько полноценно - не знаю. Примеры были где-то на codeproject. NET развивается бешенными темпами Да и бог с ним, C# на компе установлен , но вообще то MS обещала не интеграцию Net в ОС, а ОС на базе Net, но пока что ни Win 7, ни следующая обьявленная ОС таковыми не будут. А то что каждая последующая версия Net частично несовместима с предидущей - это факт. Так что поддерживаю вашу мысль, что пока таки да - наболее органичное решение native Win32(64) ран-тайм. Тем более что проект Clipper over .Net уже вроде существует - Vulcan.Net. Sergey Spirin пишет: Ну и еще вопрос про жизнесобность Харбура. Вы знаете в котором году умер Clipper? Многие скажут, что он не умирал вообще. Спорить не буду, но последние обновления были выпущены где-то в 1996 году (не ошибся?). Даже если бы сейчас разработка Harbour прекратилась (чего не наблюдается) пользоваться ним будут еще не меньше времени. при обработке Harbour API уже как-то закладываться на возможный Unicode, либо пока бог с ним? Ну знаете, Delphi вон тоже совсем недавно разжился на Unicode Ну это шутка. Реально тут вопрос больше в совместимости Harbour и xHarbour, и насколько быстро будут расходиться их API, внутреннее обустройство, пути развития. Сделайте среди своих пользователей маркетинговое исследование и тогда принимайте решение на какой сегмент ориентироваться (хотя понятно, что желательно не потерять ни одного, но и поддерживать 3 продукта вместо 2 тоже, наверное, не хочется.). Думаю время у вас пока есть.

Sergey Spirin: Петр пишет: у меня почему-то выскакивает "Поврежден заголовок", Да, у меня из дома тоже. Что-то ftp-доступ к хостингу стал подглючивать в последнее время, завтра (с работы) перезалью заново. Петр пишет: В том или ином виде reflection поддерживает куча языков, в т.ч. [x]Harbour. Ну это то свойство архитектуры, что называется "по-задумке" Для Дельфи же это необычно, так как это native код. Петр пишет: А потом, что считать "солидной системой" в 2010 году?..... Так что поддерживаю вашу мысль, что пока таки да - наболее органичное решение native Win32(64) ран-тайм. Ok. Петр пишет: Ну знаете, Delphi вон тоже совсем недавно разжился на Unicode.... Хорошо. О Харбор-unicode пока не думаю. Будет это существенно, к этому вернемся. На следующей неделе постараюсь сделать некий рабочий прототип. Тогда можно будет "пощупать" и обсудить конкретику архитектуру Harbour-части. P.S. Паша, а что-то Вы не подключаетесь к обсуждению? Насколько я помню, у Вас же был какой-то Дельфи-опыт?

Pasha: Sergey Spirin пишет: P.S. Паша, а что-то Вы не подключаетесь к обсуждению? Насколько я помню, у Вас же был какой-то Дельфи-опыт? Это было очень уж давно. Последний раз я программировал на Дельфи году в 2001-м, а запускал - году в 2003-м. Уже и подзабыл его. На чем работаешь - то и знаешь. Когда писал на паскале - подзабыл клиппер, а теперь наоборот.

Sergey Spirin: Sergey Spirin пишет: Пример бросил сюда, можно посмотреть: http://www.paritetsoft.ru/downloads/rtti_browser.rar Перевыложил и проверил, можно смотреть.

Sergey Spirin: Хочу сказать, что не забыл о данной теме. К сожалению, все сложилось так, что я физически не мог заниматься DRT for [x]Harbour. Но планирую, что к апрелю время у меня должно появиться и я обязательно к этому вернусь.

Sergey Spirin: Вот все-таки думаю, что очень плохо, что у меня нет напарника-дельфиста. При его наличии, дело бы могло двигаться и быстрее, а главное стабильней. Я, конечно, понимаю, что в среде клипперистов-харбуристов "приличного" дельфиста мне найти почти невозможно.... Но вот я думаю - я ведь могу и научить (!). Я - опытный дельфист, к тому же у меня есть опыт преподавания программирования в университете. Я ведь такого потенциального партнера могу и в OOП ввести, и с указателями работать научить, помочь всю мощь VCL понять и т.п., то есть, прояснить все то, с чем обычно у клипперистов проблемы... Никто не хочет освоить еще один язык и поучаствовать в приличном проекте? Проект то гибридный, отрыва от Харбура не будет. Жду отклика

Andrey: Sergey Spirin пишет: Никто не хочет освоить еще один язык и поучаствовать в приличном проекте? Можно было бы поучаствовать... Только я Дельфи могу только устанавливать.... И все....

Dima: Andrey пишет: Только я Дельфи могу только устанавливать.... И все.... Тогда будешь таджиком - дворником

Andrey: Dima пишет: таджиком - дворником Ну если не устраивает... То сам включайся в работу... Будешь китайцем-подмастерьем ....

Sergey Spirin: Andrey пишет: Можно было бы поучаствовать... Только я Дельфи могу только устанавливать.... И все.... Ну, совсем с нуля, это, конечно, чересчур для серьезного проекта... Увы, к сожалению..

krutoff: Может поляки смогли бы в этом помочь? http: //www. otc.pl/

Наиль: Идею можно реализовать. Как это делается, можно подсмотреть у самого делфи. При добавлении ActiveX в проекты делфи конвертирует информацию об объектах из dll и ocx в pas, на основе аналога RTTI. По аналогии можно сделать конвертирование RTTI в PRG. Причем делать это нужно на основе конвертирования VCL в ActiveX, при котором производятся практически все необходимые преобразования, останется только доработать напильником. Delphi знаю хорошо, но вот с клипером-харбором (с кораблем и гаванью) только начинаю знакомиться. К сожалению, использую TurboDelphi в котором поддержка ActiveX отсутствует. К следующему воскресению тоже постараюсь состряпать прототип.



полная версия страницы