| Switch to English | Александр Кресин |
| Главная | Clipper | HwGUI | Harbour | Утилиты |
| Ссылки | Five stones | KS Organizer | Мое фото |
Новые Xbase продукты.
Введение.
Ситуация, в которой оказались разработчики, использующие Клиппер, после отказа Computer Associates поддерживать этот продукт, широко известна. Клиппер оказался в стороне от современных технологий и его ниша на рынке стремительно сокращается.
Некоторые наиболее удачные "3-rd party" библиотеки расширяют границы возможностей Клиппера. Это, в первую очередь, Advantage Xbase Server фирмы Extended Systems - замечательный продукт, позволяющий строить на Клиппере клиент-серверные системы, кардина льно повышающий производительность Клипперных программ, надежность хранения и модификации данных. Это FiveWin и Clip4Win – библиотеки, позволяющие создавать полноценные Windows приложения, использовать в программах Windows API. Это Btrieve RDD, драйверы от OpenPath, TopConnect и др. Это всем известный Six RDD, Funcky, Telepathy, Faxual и много других Clipper add on средств, делающих его действительно лучшим инструментом для работы с базами данных.
Но все эти продукты лишь продляют угасание Клиппера ( не хочется говорить – агонию ), не решая главную проблему – 16-разрядный барьер. Поэтому даже производители упомянутых выше программ постепенно переориентируются на другие средства. Так, Extended Syst ems большее внимание уделяют своим новым драйверам – 32-bit Client Engine для Delphi, Visual Basic, Microsoft Visual C. Fivetech развивает FiveWin++ для Xbase++.Все это вынуждает нас искать пути миграции на другие средства разработки, многие из которых представлены на этой конференции.
Кто-то переходит на Delphi, Visual C, Visual Basic. Это требует коренной переделки всех программ и даже парадигмы программирования, хотя применение таких средств доступа к данным, как Apollo/Artemis, уже упоминавшийся Advantage Client Engine позволяют сохранить существующие базы данных и даже индексы.
Кто-то использует Visual Objects, Visual Foxpro, Visual Dbase. В этих продуктах сохранен Xbase синтаксис, но переделки требуются значительные.
Xbase++ позволяет полностью сохранить клипперовский текст, но у них свои проблемы – медлительность, огромные размеры exe’шников, необходимость использования кучи DLL, пока еще немало ошибок. И цена – для сыроватого продукта, каким пока является Xbase, он а велика.Проект Harbour.
Но есть и другой путь. Если Computer Associates не хочет развивать Клиппер, переносить его на другие платформы, на 32-разрядные коды, мы можем сделать это сами. Группа постоянных участников ньюсконференции comp.lang.clipper выбрала этот путь. Так в к онце марта этого года родился проект Harbour по созданию Клиппер - совместимого, кросс-платформенного компилятора с открытыми исходными текстами.
Инициатором проекта является Антонио Линарес – автор FiveWin, владелец компании FiveTech. Он выложил наметки своего Клиппер-совместимого компилятора Five для всеобщего обозрения и выступил с идеей создания нового Клиппер-компилятора на базе стандартны х средств Lex / Yacc. Разговор первоначально шел именно о новом Клиппере, в качестве названия для проекта предлагались OpenClipper, Clipper32 и даже Clipper 6.0 . Но поскольку “Clipper” – зарегистрированная торговая марка – собственность Computer Associates, от использования этого слова пришлось отказаться. Название Harbour ( гавань ), по словам Линареса, предложила его жена. Оно было принято как сим вол той новой гавани, куда стремится Clipper ( быстроходный корабль ).
Основные цели проекта:
Предполагаемые дополнения к базовым возможностям Клиппера:
Harbour - бесплатен, он будет распространяться по GNU лицензии с некоторыми исключениями, что не исключает, что какая-либо фирма может продавать его, написав, к примеру, программу установки, IDE и записав на CD.
Технология разработки.
Harbour – международный проект, среди его участников граждане Австралии, Бразилии, Великобритании, Венгрии, Германии, Испании, Индонезии, Италии, Канады, Нидерландов, Польши, России, США, Чили и других стран мира. Средой для совместной работы столь далеко живущих друг от друга людей является, конечно, Интернет. Основные коммуникационные средства, использующиеся для совместного проектирования, это:
CVS – это программный комплекс, состоящий из серверной и клиентской частей. Он позволяет синхронизировать копии проекта, находящиеся у каждого разработчика с копией на сервере, одновременно работать над одними и теми же файлами нескольким разработчика м, разрешая конфликты, возникающие при модификации одних и тех же строк кода. CVS хранит ВСЕ версии каждого файла, позволяет восстановить любую из них в случае необходимости, выдает журнал изменения любого файла по запросу клиента и т.д.
Листы рассылки используются как основное средство общения разработчиков и всех интересующихся ходом проекта.
Основной лист для разработчиков - [email protected]. Чтобы подписаться на него, просто отправьте пустое сообщение на адрес [email protected] . Еще один лист рассылки - [email protected] - служит для дискуссий, не связанных напрямую с оперативной работой над проектом. Подписаться на негл можно, отправив пустое сообщение по адресу [email protected]. Чтобы отменить подриску на листы, надо отправить сообщения, соответственно, по адресам Harbour-unsubscribe@ONElist. com и [email protected]. Архивы этих листов рассылки можно найти по следующим ссылкам:
Средства разработки
В числе используемых С компиляторов –
Для платформы Microsoft Windows:
Для DOS 32bit
Для DOS 16bit
Для Linux
Для OS/2
Для Macintosh
Особенно хочу подчеркнуть, что используется именно С, а не С++, причем ANSI C. Это делается для обеспечения переносимости исходных текстов на различные платформы.
Основные компоненты.
Это, естественно, тот же набор, что и у Клиппера:
Получить все файлы проекта вы можете с сайта http://www.harbour-project.org – там лежат “официальные” релизы – как исходные тексты, так и комплекты с уже изготовленными бинарными файлами – компилятором и б иблиотеками для разных платформ.
Если вы хотите узнать самую последнюю информацию о проекте, вам нужно подключиться к CVS. Для этого надо сначала скачать клиентскую часть CVS ( можно прямо с сайта проекта ), установить ее, установить переменные окружения:
После этого можно входить:
указав пароль cvsanon, и скачать файлы проекта:
Если вы взяли файлы с CVS, или комплект с исходниками с сайта, вам надо построить компилятор и библиотеки самостоятельно. Для этого вам нужно иметь программы Flex и Bison ( их можно взять с сайта ) и какой-либо из упомянутых выше С компиляторов. Все н еобходимые для построения bat-файлы находятся в корневом каталоге проекта. Если что-то не получится – пишите в лист рассылки или мне – по адресу [email protected] .
Текущее состояние проекта.
Оно непрерывно изменяется, в том числе и сейчас, когда я пишу эти строки.
На момент написания этих тезисов препроцессор практически готов компилятор почти закончен, виртуальная машина работает, значительная часть RTL написана, ядро RDD готово, GT API - только для Win32 console.
Значительная степень готовности у ООП системы. Уже достигнута большая функциональность, чем у Клиппера. На ее основе написана Get-система, классы Error, Tbrowse, Todbc.
В качестве примера в приложении приведен текст простенькой программы, демонстрирующей работу класса TOdbc.
Существующая версия ( build 30 ) позволяет получить Harbour программы, как 16-разрядные, так и 32-разрядные, работающие в DOS, Windows 95/98/2000, NT, OS/2, Linux.
Библиотеки сторонних производителей для Harbour.
К настоящему времени разрабатывается ( появились первые демо ) Fivewin для Harbour. Антонио Линарес написал мне, что собирается выпустить альфа – версию на днях ( возможно, к началу конференции она уже готова ). Harbour + FiveWin – это полноценное 32- разрядное Windows – приложение.
Extended Systems объявили о своем намерении начать разработку RDD клиента к своему Advantage Xbase Server для Harbour.
Фирма TopConnect объявила о своем желании подготовить свои библиотеки для работы с Harbour.
Что осталось сделать ?
Run-time компилятор макросов, RDD, GT API для разных платформ. Необходима оптимизация виртуальной машины, файловых драйверов и GT API для повышения производительности. Закончить RTL, выловить и исправить ошибки. Работы много - и от всех нас зависит, к ак скоро она будет сделана.
Присоединиться к проекту может любой. Не обязательно быть знатоком С. Вы можете помочь, тестируя Harbour на разных платформах. Кроме того, часть исходных текстов пишется на Клиппере – Harbour’е, так что есть работа и для клипперистов.
Max.
Тем временем выходит в свет еще один ( но коммерческий ) продукт, авторы которого провозглашают частичную Клиппер-совместимость и кросс-платформенность ( Win32, Linux ). Это - MAX.
К настоящему времени вышла версия MAX под Linux.
Разработчики заявили о своей принципиальной позиции поддерживать только текстовый режим работы ( отказ от GUI, X-Windows, и т.п. ). Этим достигается полная переносимость приложений с платформы на платформу и высокая производительность.
Max является наследником Clipper’87, хотя туда добавлено немало новшеств, присущих Clipper 5.xx, как, например, поддержка многомерных массивов, кодоблоков, составных операторов ( +=, -=, и др. ), унарных операторов ( ++, -- ), реализация препроцессора , LOCAL и STATIC переменные, множество дополнительных команд и функций. От полной совместимости с Clipper’ом разработчики отказались. Ниже приведен список элементов Clipper 5.xx, не поддерживаемых Max’ом:
Max реализует свой собственный формат индексных файлов, они имеют расширение MTX.
Формат MEM файлов тоже имеет отличия, но Max может читать MEM файлы, созданные Клиппером и другими Xbase продуктами.
Компилятор Max не создает exe – файлы, он производит файлы с расширением .max, которые затем исполняются программой Maxrun.
Ниже приведен частичный перечень новых функций Max.
Поддержка Unix:
Поддержка IBM Mainfraim:
Функции для работы с числами:
Строковые функции:
Сетевые функции:
Логика переходов:
Обработка ошибок:
Файловые функции:
Клавиатурные функции:
Функции работы с массивами:
Этот список можно продолжить, но у меня сейчас нет времени. Читайте документацию !
Приложение.
Пример программы, читающей из файла Microsoft Access с помощью класса Todbc.
FUNCTION Main()
LOCAL aOrders
LOCAL nOp
LOCAL dsFunctions
LOCAL cExePath := substr( cargv(), 1, rat( "\", cargv() ) - 1 )
LOCAL cConStr := "DBQ=" + "harbour.mdb;" + "Driver={Microsoft Access Driver (*.mdb)}"
dsFunctions := TODBC():New( cConStr )
set COLOR TO "W+/B"
CLS
WHILE .T.
@ 00, 00 SAY padc( "¦ TODBC Demonstration ¦", 80 ) COLOR "B/W"
dsFunctions:SetSQL( "SELECT * FROM Functions" )
dsFunctions:Open()
@ 03, 24 TO len( dsFunctions:Fields ) + 4, 55
aOrders := {}
FOR i := 1 TO len( dsFunctions:Fields )
    aadd( aOrders, dsFunctions:Fields[ i ] :FieldName )
    @ i + 3, 25 PROMPT padc( "ORDER BY " + aOrders[ i ], 30 )
NEXT
MENU TO nOp
IF nOp == 0
    EXIT
ENDIF
dsFunctions:Close()
dsFunctions:SetSQL( "SELECT * FROM Functions ORDER BY " + aOrders[nOp])
dsFunctions:Open()
FOR i := 11 TO 24
    @ i, 00 SAY REPL( " ", 80 )
NEXT
@ 10, 00 TO 10, 79
@ 24, 00 TO 24, 79
@ 12, 00 TO 12, 79
@ 11, 00 SAY ""
@ 11, 02 SAY "Statement:" COLOR "GR+/B"
@ 11, col() + 1 SAY dsFunctions:cSQL
@ 14,05 SAY " " + padr( dsFunctions:FieldByName("Code") :FieldName, 3 )+" " + ;
    padr( dsFunctions:FieldByName( "Function" ) :FieldName, 15 ) + " " + ;
    padr( dsFunctions:FieldByName( "State" ) :FieldName, 2 ) + " " + ;
    padr( dsFunctions:FieldByName( "Comments" ) :FieldName, 40 ) ;
    COLOR "B/W"
WHILE !dsFunctions:Eof()
   ? " " + padr( dsFunctions:FieldByName( "Code" ) :Value, 3 ), "¦", ;
   padr( dsFunctions:FieldByName( "Function" ) :Value, 15 ), "¦", ;
    padr( dsFunctions:FieldByName( "State" ) :Value, 2 ), "¦", ;
    padr( dsFunctions:FieldByName( "Comments" ) :Value, 40 )
    dsFunctions:Skip()
ENDDO
    dsFunctions:Close()
ENDDO
dsFunctions:Destroy()
RETURN ( NIL )