Источник: http://www.clarionmag.com
Translated and published with the permission of CoveComm Inc, publisher of Clarion Magazine.
Переведено и опубликовано с разрешения компании CoveComm, издателя Clarion Magazine.
Посетители 6-ой Бразильской конференции разработчиков были первыми кто увидел новое IDE Clarion. Боб Заунер представил описание на английском, а Диего Борожович (Diego Borojovich) обсудил новые возможности языка Clarion.NET на испанском.
Новое IDE основано на SharpDeveloper — это open source IDE для C# и VB.NET проектов. SharpDeveloper это IDE с открытыми исходниками, которое распространяется посредством GNU Public License (GPL), поэтому возникает вопрос будет ли Clarion IDE также с открытыми исходниками.
This is highly unlikely (Это очень маловероятно или Это чрезвычайно неприятно 🙂
Разработчики SharpDeveloper-а так отвечают на этот вопрос:
Существует возможность выпуска open source продуктов под несколькими лицензиями одновременно, включая коммерческие лицензии — посмотрите на MySQL, sendmail или OpenOffice — это известные примеры. Это достигается только в том случае, когда собственники прав на продукт согласны с этим. Права на SharpDeveloper находятся «в одних руках», поэтому мы можем сделать это.
Очевидно SoftVelocity получила коммерческую лицензию на код SharpDeveloper-а, что дает право изменять им его по необходимости без выпуска IDE, как open source. Несомненно, что лицензирование существующего продукта позволяет SoftVelocity использовать преимущество в скорости, разрабатывая Clarion.NET и новый APP-генератор.
APP-генератор сделан, но еще не интегрирован
В своем большинстве новое IDE выглядит как open source версия SharpDeveloper-а. Это происходит потому, что компоненты APP-генератор и редактор словаря, хоть и готовы, но еще не встроены в IDE.
Надеюсь что релиз для «ручного кодирования» будет выпущен вскоре, как это случилось с Clarion for Windows 1.0, первый релиз не поддерживал APP-генератор вообще.
Существуют несколько новых навигационных возможностей и, конечно, цветовая подсветка Clarion кода. Технология intellisence (Ctrl+пробел -> выпадающий список ключевых слов) не была продемонстрирована, но обещана в будущем.
А теперь будут слайды
Слайд 1 — Clarion.NET — Компилятор
• новый компилятор
• компиляция Clarion кода
• генерация .NET сборки (exe и dll), в .NET сборка (assembly) — базовая единица при компиляции
• возможность ссылаться на любую .NET-сборку
• возможность использовать любые .NET-классы
• генерация WinForm, Console или WebForm сборок
• возможность взаимодействия между .NET языками
Clarion.NET будет использовать WinForms, а не Clarion-овские структуры окна. Это не совсем понятно, так как неясен момент переноса существующих Win32 приложений на Clarion.NET, хотя прямой перенос и не был обещан SoftVelocity, насколько я знаю.
Слайд 2 — Clarion.NET — Язык
• такой же синтаксис как и в Clarion Win32 (C62, C55 и т.д)
• новый синтаксис совместимый с .NET, использование любых .NET-классов, близкий к C# синтаксису
Clarion.NET приносит с собой новые возможности и это означает появление новых структур языка. Это включает в себя новый синтаксис классов, обработку исключений (exception handling), delegates и событий.
Слайд 3 — Clarion.NET — Синтаксис
PROGRAM INCLUDE('ERRORS.CLW'),ONCE INCLUDE('KEYCODES.CLW'),ONCE ! определение глобальных переменных MyVarGlobal STRING(30) MAP END CODE ! выполнение моего кода
Это стандартный Clarion-код, который все мы хорошо знаем. Ниже тот же самый код для Clarion.NET:
Слайд 4 — Clarion.NET — Синтаксис
PROGRAM NAMESPACE('MDI') USING('System') USING('System.Drawing') USING('System.Windows.Forms') INCLUDE('ERRORS.CLW'),ONCE INCLUDE('KEYCODES.CLW'),ONCE ! определение глобальных переменных MyVarGlobal CLASTRING(30) MAP END CODE ! выполнение моего кода Application.Run(NEW Form1())
Общая структура кода осталась неизменной, но появились новые директивы, NAMESPACE для текущего приложения, USING для использования требуемых .NET возможностей и тип STRING теперь называется CLASTRING. В .NET нет простых типов данных, и CLASTRING это класс для обертки STRING-типа Клариона.
Для старта приложения используется строка Application.Run().
.NET это объектно ориентированная среда, Кларион это гибридный язык с процедурными корнями и ООП расширением. Это проявляется и в Clarion.NET, но процедурная часть даже меньше, чем в ABC и служит для загрузки приложения, что то вроде метода main() в классе.
Слайд 5 — Clarion.NET — Синтаксис
• Новый синтаксис
— NAMESPACE
— USING
• CLASS — расширенный синтаксис
— конструкторы с параметрами
— свойства (GET/SET)
— индексатор (indexer) ([] GET/SET)
— delegates (.NET функция указателей)
— события (специальный тип delegates)
Я рад видеть конструкторы с параметрами, это конечно не решение любой проблемы инициализации, но приятно иметь такую опцию.
Слайд 6 — Class — расширенный синтаксис — Индексатор
IndexerClass CLASS,TYPE MyArray LONG,DIM(100) INDEXER(LONG index),LONG ! определение индексатора END ! Реализация методов класса IndexerClass.GET_INDEXER PROCEDURE(LONG index) ! метод получения значения Code ! проверка на ограничение индекса if (index100) return 0; else return SELF.MyArray[index] end IndexerClass.SET_INDEXER PROCEDURE(LONG index,LONG value) ! метод установки значения Code If not (index100) SELF.MyArray[index]=value end
Слайд 7 — Clarion.NET — синтаксис
• Новые типы данных
— любые типы данных .NET
— ADO.NET, XML, Winforms, Webforms, SQL.Data
— продукты третьих фирм (совместимые с .NET)
• Взаимодействие
— использование любых .NET сборок в вашей программе
— одна DLL на Clarion.NET, другая на C#, третья на VB.NET и ваш EXE на Clarion.NET
• Новая функциональность
— исключения (THROW/TRY/CATCH/FINALLY)
— FOREACH (loop — цикл с поддержкой очередей, массивов и т.п.)
— возможность bind-ования очередей
Цикл FOREACH позволяет пробежаться по коллекции объектов. Это еще один способ для организации цикла, который знает сколько всего объектов, т.е. не нужно указывать конечное значение цикла.
Слайд 8 — FOREACH
• обычный цикл
NAMESPACE('ShowForEach1') PROGRAM MAP END Ldim LONG,DIM(5) L LONG CODE Ldim[1]=11 Ldim[2]=12 Ldim[3]=13 Ldim[4]=14 Ldim[5]=15 FOREACH L IN Ldim message(L) END
Слайд 9 — FOREACH
• использование в очереди
NAMESPACE('ShowForEach1') PROGRAM USING('System') MAP END MyG GROUP Id Int32 END MyQ QUEUE(MyG) END I &MyG Index LONG Code Loop Index=1 to 3 MyQ.Id=Index Add(MyQ) End Foreach I IN MyQ Message(I.Id) end
Слайд 10 — Исключения (Exceptions)
TRY IF 23>'123' LLL='БОЛЬШЕ' ELSE THROW new System.OutOfMemoryException() END CATCH (System. OutOfMemoryException) LLL='Нехватка памяти' CATCH (System.Exception oEx) LLL='Произошла ошибка' FINALLY LLL='Все в порядке' END
Обработка исключений это очень крутая возможность 🙂 Это более гибкий и мощный способ обработки ошибок. У вас есть блок, начинающийся со слова TRY — если любой код в этом блоке порождает (THROW) ошибку, то последующий код не выполняется, выполняется код находящийся между словами CATCH, который служит для обработки специфичных ошибок.
Мои впечатления
Хотя трудно представить полную картину без встроенного APP-генератора, это IDE выглядит лучше, чем другие современные IDE. Я думаю лицензирование и изменение существующего IDE большое благо как для SoftVelocity, так и для Clarion-разработчиков. Это освободит время для разработки того, что SoftVelocity делает лучше и выведет Clarion на один уровень с другими IDE.
Основываясь на демонстрации, версия для «ручного» кодирования Clarion.NET кажется уже работает, и я надеюсь на скорый выход продукта. Выход Clarion 7 видится как следующий логический шаг после того, как полная версия Clarion.NET с APP-генератором будет выпущена. Также очевидно, что шаблоны должны претерпеть значительные изменения в связи с возможностями .NET и WinForms, поэтому в ближайшее время APP-генератора не стоит ожидать. И не забудьте, что если будет выпущена версия Clarion for Windows для «ручного» кодирования — это будет beta-версия.