PowerScript
PowerScript — это скриптовый язык программирования, разработанный компанией PowerSoft (впоследствии приобретённой Sybase, Inc., а затем SAP SE) для создания клиент-серверных приложений с графическим интерфейсом. Является основным языком среды разработки PowerBuilder, ориентированной на построение корпоративных информационных систем, работающих с реляционными базами данных (СУБД). Отличается событийно-ориентированной парадигмой, тесной интеграцией с визуальным дизайнером интерфейсов и мощными встроенными возможностями доступа к данным.
История
Язык PowerScript был представлен в 1991 году вместе с первой версией PowerBuilder. Разработка велась под руководством сооснователя PowerSoft Дэвида Литвака. Основной целью создания нового языка было обеспечение быстрой разработки (RAD — Rapid Application Development) настольных приложений, взаимодействующих с базами данных через SQL.
В 1994 году компания Powersoft объединилась с Watcom International Corporation, что привело к интеграции в среду разработки компилятора C++ (Watcom C/C++) и мощного SQL-движка (Watcom SQL, позже Sybase SQL Anywhere). Это укрепило позиции PowerBuilder и PowerScript как одного из стандартов для корпоративной разработки в 1990-х годах.
В 1995 году компания Sybase приобрела Powersoft. В рамках Sybase язык продолжал развиваться: были добавлены поддержка ActiveX, OLE, COM/DCOM, позднее — .NET-взаимодействие и веб-сервисы (в версиях PowerBuilder 10–12). Значительное обновление синтаксиса и функциональности произошло в версиях 9 (2003) и 12 (2009).
После поглощения Sybase корпорацией SAP в 2010 году разработка PowerBuilder и PowerScript была продолжена. Последние версии (с 2015 года) ориентированы на поддержку облачных вычислений, REST API и современных стандартов кодирования. Язык сохраняет совместимость с унаследованным кодом.
Синтаксис и конструкция
PowerScript — строго типизированный язык с сильным влиянием синтаксиса BASIC и Pascal, но с элементами C. Код нечувствителен к регистру (case-insensitive). Каждая инструкция завершается точкой с запятой (;). Блоки кода выделяются отступами (обычно 4 пробела) или ключевыми словами (например, IF … THEN … END IF).
Основные типы данных
| Тип | Описание | Пример |
|---|---|---|
| Integer | Целое число (32 бита) | integer n = 10 |
| Long | Длинное целое (64 бита) | long n = 100000 |
| Real | Число с плавающей точкой (32 бита) | real r = 3.14 |
| Double | Число с плавающей точкой двойной точности (64 бита) | double d = 1.234e-5 |
| String | Строка символов в кодировке ANSI/Unicode (до 2 ГБ) | string s = "Hello" |
| Date | Дата (год-месяц-день) | date d = 2025-01-01 |
| Time | Время (часы-минуты-секунды-миллисекунды) | time t = 12:30:00 |
| DateTime | Дата и время | DateTime dt = DateTime(2025-01-01, 12:30:00) |
| Boolean | Логический тип | boolean b = TRUE |
| Blob | Двоичный объект (изображения, файлы) | blob b |
Управляющие конструкции
Условный оператор: ``powerscript IF age > 18 THEN status = "Adult" ELSE status = "Minor" END IF ``
Циклы: ```powerscript // Цикл FOR FOR i = 1 TO 10 sum += i NEXT
// Цикл DO WHILE i = 1 DO WHILE i <= 10 sum += i i++ LOOP
// Цикл DO UNTIL i = 1 DO UNTIL i > 10 sum += i i++ LOOP ```
Функции и процедуры
Функции объявляются с помощью ключевого слова FUNCTION, процедуры — SUBROUTINE. Функции возвращают значение указанного типа. ```powerscript // Функция FUNCTION double CalculateDiscount(double price, integer percent) RETURN price * (1 - percent / 100.0) END FUNCTION
// Процедура SUBROUTINE LogMessage(string msg) MessageBox("Log", msg) END SUBROUTINE ```
Обработка исключений
В PowerScript существует блок TRY … CATCH … FINALLY: ``powerscript TRY result = 10 / divisor CATCH (DivideByZeroException e) MessageBox("Error", "Деление на ноль") FINALLY // код, выполняемый в любом случае END TRY ``
Работа с базами данных
Взаимодействие с СУБД осуществляется через объект Transaction. Стандартный шаблон подключения: ``powerscript Transaction tr tr = CREATE Transaction tr.DBMS = "ODBC" tr.DataBase = "MyDatabase" tr.Server = "localhost" tr.UserID = "sa" tr.Password = "secret" CONNECT USING tr; // Выполнение SQL-запроса string sql = "SELECT * FROM Employees" // ... DISCONNECT USING tr; DESTROY tr; ``
Архитектура приложений
PowerScript-приложения строятся на основе визуальных и не визуальных объектов, которые объединяются в проекты:
- Window (окно) — основной элемент графического интерфейса. В окно помещаются элементы управления (кнопки, поля ввода, таблицы, списки и т.д.).
- DataWindow — ключевой компонент PowerBuilder. Отвечает за отображение, ввод и обработку данных из базы. PowerScript позволяет программно управлять содержимым DataWindow, устанавливать фильтры, сортировки, обновления.
- User Object — пользовательские объекты, создаваемые разработчиком (визуальные или не визуальные). Позволяют инкапсулировать повторно используемый код.
- Function — глобальные или локальные функции.
- Structure — набор полей (аналог записи или структуры в C).
Области применения
Основное назначение PowerScript — разработка корпоративных информационных систем (ERP, CRM, учётных систем) для средних и крупных организаций. Язык используется:
- Финансовый сектор — банковские приложения, системы расчётов и отчётности.
- Государственные учреждения — системы учёта, документооборота.
- Производственные предприятия — системы управления складом, закупками, производственными запасами.
- Телекоммуникации — системы биллинга и управления абонентами.
Преимущества и недостатки
Преимущества
- Быстрая разработка — визуальный дизайнер и DataWindow позволяют в десятки раз сократить время написания кода для взаимодействия с БД.
- Простота синтаксиса — лёгок для изучения программистами, знакомыми с BASIC или Pascal.
- Надёжная работа с SQL — встроенная поддержка транзакций, курсоров, хранимых процедур.
- Многоплатформенность — приложения могут работать под Windows, Unix/Linux (через PBVM — PowerBuilder Virtual Machine).
Недостатки
- Закрытость — язык является проприетарным, лицензия на среду разработки стоит дорого (для коммерческого использования).
- Ограниченная мобильная и веб-поддержка — до версий 12.5 интеграция с веб-технологиями была слабой. Современные версии поддерживают .NET и REST, но не на уровне современных фреймворков (Angular, React).
- Сложность поддержки устаревшего кода — многие крупные системы написаны 20–30 лет назад, требуют модернизации.
Интересные факты
- Язык PowerScript не имеет собственного интерпретатора или компилятора, работающего автономно; код выполняется внутри PowerBuilder Runtime Environment (PBVM).
- В 2020-х годах продолжается выпуск новых версий PowerBuilder (например, 2022, 2023), что свидетельствует о сохранении интереса к языку в корпоративной среде.
- Некоторые разработчики называют PowerBuilder «машиной времени», поскольку синтаксис и подходы, заложенные в 1990-х, почти не изменились за три десятилетия.
Сравнение с другими языками
| Характеристика | PowerScript | Visual Basic (6.0) | Java (Swing) | C# (.NET) |
|---|---|---|---|---|
| Парадигма | Событийно-ориентированная | Событийно-ориентированная | Объектно-ориентированная | Объектно-ориентированная |
| Работа с БД | Встроенный DataWindow | ADO/DAO | JDBC | ADO.NET |
| Платформы | Windows, Linux (через PBVM) | Windows | Кроссплатформенный | Кроссплатформенный (.NET Core) |
| Сложность изучения | Низкая | Низкая | Средняя | Средняя |
| Стоимость | Высокая | Бесплатно (до 1998) | Бесплатно (OpenJDK) | Бесплатно (Visual Studio Community) |
Источники
- PowerBuilder 2022 Documentation, SAP SE.
- Техническая документация «PowerScript Reference», Sybase/PowerSoft (1991–2010).
- David Litwack, «History of PowerBuilder», интервью 2015 года.
- Статья «PowerBuilder — The Secret Weapon of Corporate Development», Computerworld, 1994.
- Конференция «Применение PowerBuilder в России», материалы 2019–2023 годов.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →