Первый взгляд на новое Clarion IDE

Источник: 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-версия.