Туракулова А.И.
Ташкентский государственный педагогический университет им. Низами, Республика Узбекистан, старший преподаватель кафедры «Методика преподавания информатики», e-mail:
k. informatiki @yandex . ru
ВОЗМОЖНОСТИ НОВОГО ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ЯЗЫКА ПРОГРАММИРОВАНИЯ OBJECTSCRIPT
КЛЮЧЕВЫЕ СЛОВА
Программирование, объектно-ориентированные языки программирования, ObjectScript, создание скриптов, веб-приложения, OS-FCGI.
АННОТАЦИЯ
В статье проанализированы преимущества объектно-ориентированных языков программирования, раскрыты возможности нового объектно-ориентированного языка программирования ObjectScript. Сделан обзор основных задач, для решения которых спроектирован этот язык.
Развитие новых технологий — важное звено в установлении гармонических отношений между обществом и производством на основе предельно экономного использования всех видов природных и социальных ресурсов. Важнейшей из таких технологий, оказывающей определяющее влияние на все другие, является информационная технология, включающая в себя проектирование и создание современных компьютеров, разработку всех видов программ и специальных языков программирования, обеспечивающих решение самых сложных задач, связанных с хранением, переработкой, поиском и распространением информации. В силу этого информационная технология становится катализатором нового технологического этапа научно-технического прогресса.
По мере развития технологии программирования все адекватнее отражалась структура решаемой прикладной задачи и осуществлялось объединение данных и процедур для их обработки. Это и привело к появлению в программировании объектного подхода. Сейчас уже совершенно ясно, что на смену традиционному программированию, пришло объектно-ориентированное программирование(ООП).
Объектно-ориентированные языки программирования пользуются в последнее время большой популярностью среди программистов. Первый объектно-ориентированный язык программирования был разработан в конце 60-х годов в Норвегии. Авторы этого языка очень точно угадали перспективы развития программирования: их язык намного опередил свое время. В 70-е годы было разработано большое число экспериментальных объектно-ориентированных языков программирования. Эти языки так и остались экспериментальными, но в результате их исследования были разработаны современные объектно-ориентированные языки программирования. Разработка новых объектно-ориентированных языков программирования продолжается.
Успех ООП объясняется предоставляемой им возможностью естественно имитировать объекты нашего мира. Решая сложные проблемы, выдвигаемые жизнью, человек постепенно развил в себе замечательные способности к обобщению, классификации и созданию абстракций. В окружающих нас объектах мы находим общие признаки, свойства, способы поведения.
Любая программа, написанная на языке ООП, отражает в своих данных состояние физических предметов либо абстрактных понятий - объектов программирования, для работы, с которыми она предназначена.
Все данные об объекте программирования и его связях с другими объектами можно объединить в одну структурированную переменную. В первом приближении ее можно назвать объектом.
Объекты, описанные одним и тем же набором параметров и способные выполнять один и тот же набор действий представляют собой класс однотипных объектов.
С точки зрения языка программирования класс объектов можно рассматривать как тип данного, а отдельный объект - как данное этого типа. Определение программистом собственных
классов объектов для конкретного набора задач должно позволить описывать отдельные задачи в терминах самого класса задач (при соответствующем выборе имен типов и имен объектов, их параметров и выполняемых действий) [2].
В современных ОО языках используются механизмы [1]:
• наследование: создание нового класса объектов путём добавления новых элементов (методов). Некоторые ОО языки позволяют выполнять множественное наследование, то есть объединять в одном классе возможности нескольких других классов;
• инкапсуляция: сокрытие деталей реализации, которое позволяет вносить изменения в части программы безболезненно для других её частей, что существенно упрощает сопровождение и модификацию ПО;
• полиморфизм: при полиморфизме некоторые части (методы) родительского класса заменяются новыми, реализующими специфические для данного потомка действия. Таким образом, интерфейс классов остаётся прежним, а реализация методов с одинаковым названием и набором параметров различается.
Одним из новых объектно-ориентированных языков программирования является ObjectScript — новый встраиваемый и очень легкий объектно-ориентированный язык программирования с открытым исходным кодом. ObjectScript расширяет возможности таких языков, как JavaScript, Lua, Ruby и PHP.
ObjectScript — это универсальный язык программирования, ObjectScript предназначен для встраивания в программы на C++, разработки сайтов, написания скриптов и др.. ObjectScript -кроссплатформенный, бесплатный язык программирования, который спроектирован для решения следующих основных задач [3]:
• веб-программирование, создание сайтов и скриптов для выполнения на стороне сервера через веб-браузер. Для того чтобы можно было просматривать результаты выполнения OS-скриптов в браузере, нужен работающий веб-сервер и установленный ObjectScript для веба (например, os-fcgi). Просмотреть вывод OS-программы можно в браузере, получив OS-страницу, сгенерированную сервером. В случае, если вы просто экспериментируете, то вполне можете использовать свой домашний компьютер вместо сервера;
• создание скриптов для выполнения из командной строки. Вы можете создать OS-скрипт, способный запускаться без сервера или браузера. Все, что вам потребуется - консольный OS для запуска скриптов из командной строки. Такой способ использования идеально подходит для скриптов, которые должны выполняться регулярно, например, с помощью cron (на платформах *nix или Linux) или с помощью планировщика задач (Task Scheduler) на платформах Windows. Эти скрипты также могут быть использованы в задачах обработки текстов и мн. др.;
• встраивание ObjectScript в программы на C++. ObjectScript изначально спроектирован, как встраиваемый язык, поэтому сделать это довольно просто, например:
#include <objectscript.h> using namespace ObjectScript;
int main(int argc, char* argv[]) {
OS * os = OS::create(); // craete ObjectScript instance os->require("main.os"); // run ObjectScript program os->release(); // release the ObjectScript instance
return 0; }
Программа os-fcgi (с помощью которой работает этот сайт) является одним из примеров использования ObjectScript на C++ и распространяется абсолютно бесплатно в открытом исходном коде.
Программа os-fcgi является одним из примеров использования ObjectScript на C++ и распространяется абсолютно бесплатно в открытом исходном коде.
Вы можете быстро начать программировать на ObjectScript под веб, используя программу os-fcgi. Она работает через клиент-серверный интерфейс FastCGI, который поддерживается большинством современных веб-серверов, например, apache, nginx и мн. др. При этом ObjectScript является кроссплатформенным решением, поэтому вести разрабатку можно на Linux, Windows и др. платформах.
Таким образом, выбирая OS, вы получаете свободу выбора операционной системы и вебсервера. Более того, у вас появляется выбор между использованием процедурного или объектно-ориентированного программирования (ООП) или же их сочетания.
Кроме этого в базовый состав ObjectScript входят множество расширений, например:
• Regexp (работа с регулярными выражениями на базе библиотека PCRE);
• DateTime (работа с датой и временем);
• Curl (запрос данных по http, ftp и др. протоколам, в том числе генерация запросов методом POST);
• ODBO (работа с базами данных);
• iconv (ковертация данных из одних кодировок в другие);
• zlib (архивирование и разархивирование данных);
• json (работа с данными в json формате);
• math (математические функции) и др.
ObjectScript сконструирован специально для ведения веб-разработок, поэтому его код может внедряться непосредственно в HTML, например: <!DOCTYPE html> <html> <head>
^к^Тестируем ObjectScript</title>
</head>
<body>
<% echo '^>Привет мир!<^>' %>
</body>
</html>
Вместо рутинного вывода HTML-кода командами языка (как это происходит, например, в Perl или C), скрипт ObjectScript содержит HTML с вставками кода на OS (в нашем случае, это вывод текста"<p>Привет мир!</p>!"). Код ObjectScript отделяется специальными начальным и конечным тегами<% и %>, которые позволяют переключаться в OS-режим и выходить из него.
OS-скрипты выполняются на сервере и генерируют HTML, который посылается клиенту в браузер. Если бы у вас на сервере был размещен скрипт, подобный вышеприведенному, клиент получил бы только результат его выполнения, но не смог бы выяснить, какой именно код его произвел. Вы даже можете настроить свой сервер таким образом, чтобы обычные HTML-файлы обрабатывались OS, так что клиенты даже не смогут узнать, получают ли они обычный HTML-файл или результат выполнения скрипта.
ObjectScript крайне прост для освоения, но вместе с тем способен удовлетворить запросы профессиональных программистов. Вы можете быстро начать и уже в течение нескольких часов сможете создавать простые OS-скрипты.
Область применения ObjectScript не ограничивается только веб-разработками. ObjectScript разработан таким образом, чтобы иметь полную поддержку в разработке сайтов и скриптов в кодировке UTF-8. Вы можете писать код скриптов и веб-страниц в вашем любимом редакторе прямо в кодировке UTF-8.
Многие редакторы при этом добавляют в начало файла BOM (Byte Order Mark). ObjectScript автоматически обрабатывает BOM, делая это прозрачно для разработчика.
В отличии от OS, во многих др. языках программирования BOM создает много проблем в веб-разработке, т.к. байты (составляющие BOM) отправляются в выходной поток данных генерируемых сервером. Зачастую программист даже не знает об этом, т.к. BOM не показывается в большинстве редакторов.
Это приводит к тому, что становится невозможным отправка заголовков HTTP. Например, если программист захочет в коде установить заголовок HTTP Content-type: image/png, то не сможет этого сделать после исполнения файла, содержащего BOM.
В ObjectScript такой проблемы нет, ObjectScript автоматически обрабатывает BOM таким образом, чтобы он не мешал в работе.
Кроме этого, ObjectScript имеет все необходимые функции для работы со строками в кодировке UTF-8 (вычисление длины строки, поиск подстроки и др.), а также имеет поддержку UTF-8 в регулярных выражениях.
Для целей веб разработки в парсер языка были добавлены следующие возможности:
1. Автоматическое определение UTF-8 BOM — это три невидимых служебных байта (EF BB BF) в начале документа с кодировкой UTF-8. Если BOM присутствует, то он не будет отправлен в выходной поток (проблема с отправкой BOM встречается, например, в скриптах на PHP, которая блокирует отправку заголовков HTTP);
2. Добавлены теги <% ... %> и <%= ... %>;
3. OS работает с двумя своими расширениями файлов: os и osh.
При использовании расширения os, парсер в начале файла активирует режим распознавания скрипта ObjectScript, т.е. это обычный скрипт OS.
При использовании osh (спроектировано специально для веб-разработки), файл начинается с выходного содержимого (т.е. то, что отправляется в output). Чтобы переключиться в режим скриптования, нужно использовать тег <% или <%=. Для переключения обратно в режим выходного содержимого, нужно использовать тег %>. Тег <%= выводит в output следующее за ним значение, например, <%=value%> или<%=sprmtf("%.2f", num)%>.
Также можно использовать расширения html и htm, которые обрабатываются аналогично osh. Это может быть полезно при использовании редакторов html с подсветкой синтаксиса. Для подсветки синтаксиса OS, лучше всего подходит правила подсветки синтаксиса языка JavaScript.
Характеристики языка ObjectScript:
• ООП — есть;
• функции как значения первого класса — есть;
• замыкания — есть;
• компиляция в байткод — есть;
• загрузка откомпилированной программы — есть;
• модульность — есть;
• подгружаемые в рантайме модули — есть;
• кроссплатформенность — есть;
• интеграция с C/C++ — есть;
• исходники — open source;
• лицензия — MIT (можно использовать в любых продуктах бесплатно);
• идеи для языка позаимствованы из JavaScript, Lua и PHP;
• цели и задачи языка: скриптование игровой и программной логики, кросс переносимость,
веб и серверная разработка;
• автор — Евгений Головин (разработчик oxsar.ru и др.)
срок разработки ObjectScript — 2 месяца.
Существует много способов подключения скриптовых языков к вебу, например: свой вебсервер, модуль апача, phusion passenger, fastcgi и др. Каждый способ имеет свои плюсы и минусы.
Для сайтов с высокой нагрузкой, использующих, например, PHP, хорошо известна связка nginx + php-fpm (fastcgi). Nginx сам по себе хороший продукт и отлично себя зарекомендовал, он отдает статику (картинки, css и т.п.), а выполнение скриптов перенаправляет на php-fpm по протоколу fastcgi. Такое решение обеспечивает высокую стабильность и быструю обработку запросов. Кроме этого, fastcgi, можно подключить к апачу и др. веб-серверам.
В качестве реализации протокола fastcgi на C++ была выбрана кроссплатформенная библиотека fastcgi, с использованием которой был разработан OS-FCGI. OS-FCGI — это сервис, работающий по протоколу FastCGI, для разработки сайтов на ObjectScript.
В заключении надо заметить, новый объектно-ориентированный язык программирования ObjectScript крайне прост для освоения, но вместе с тем способен удовлетворить запросы профессиональных программистов.
Литература
1. Иан Грэхем, Объектно-ориентированны методы. Принципы и практика, Москва, «Вильямс», 2004 г.
2. Патрикеев Ю.Н. «Объектно-ориентированный анализ программирование», Москва, Московский государственный
университет экономики, статистики и информации, 2002 г.
3. http://objectscript.org