Введение
В компьютерном программировании Yoix — это высокоуровневый, универсальный, интерпретируемый, объектно-ориентированный, динамический язык программирования. Интерпретатор Yoix реализован с использованием стандартной технологии Java без каких-либо дополнительных пакетов и требует только JVM, соответствующую спецификации Sun, для работы. Первоначально разработанный исследователями AT&T Labs для внутреннего использования, он стал доступен как бесплатное программное обеспечение с открытым исходным кодом в конце 2000 года.
История
В 1998 году технология Java все еще находилась в стадии становления: инструментарий Swing представлял собой дополнительный пакет; прерывистый ввод-вывод, регулярные выражения и возможность printf еще не были реализованы, как и Java Web Start. Более того, языки скриптов для Java в то время практически отсутствовали: Groovy и JRuby еще не были изобретены, а Jython был создан лишь в конце 1997 года. Браузеры 1998 года обладали ограниченным набором функций, были слишком нестабильны для промышленного использования в течение 8-часовой смены и все еще вели ожесточенную борьбу в так называемых "Браузерных войнах". В этих условиях технология Yoix была разработана в ответ на острую потребность в надежном, простом в распространении и обслуживании графическом интерфейсе для критически важного приложения, разрабатываемого в AT&T, а именно для ее Глобальной системы управления мошенничеством, которая и по сей день отслеживает и анализирует мошенническую активность, связанную с голосовым трафиком в расширяющихся сетях AT&T: проводной, беспроводной и IP. Технология Yoix была впервые представлена общественности в конце 2000 года под лицензией Open Source Initiative Common Public License V1.0. Название Yoix возникло отчасти из охотничьего призыва, подбадривающего гончих, отчасти для отсылки к другому знакомому четырехбуквенному имени, заканчивающемуся на ix, и отчасти для избежания большого количества ложных срабатываний при поиске в Google.
Обзор
Технология Yoix предоставляет реализацию языка программирования на чистом Java динамического языка программирования общего назначения, разработанного исследователями в AT&T Labs. Его синтаксис и грамматика должны быть легко освоены теми, кто знаком с языками программирования C и Java. Для конечного пользователя приложение Yoix неотличимо от Java-приложения, но для разработчика Yoix должен обеспечить более простой процесс кодирования, чем работа непосредственно с Java, подобно тому, как написание кода на Perl может быть проще, чем написание кода на C.
Особенности
Язык Yoix не является объектно-ориентированным, но использует более 165 типов объектов, предоставляющих доступ к большинству стандартных классов Java. Поскольку интерпретатор Yoix полностью разработан на основе Java-технологий, это означает, что приложения Yoix являются кроссплатформенными, поддерживают графический интерфейс, а также работу в сети и с потоками. При этом разработчики Yoix защищены от более сложных и подверженных ошибкам аспектов непосредственной реализации той же функциональности на Java. Язык не использует рефлексию для доступа к функциональности Java и, таким образом, предоставляет дополнительную ценность, не только упрощая доступ к ней, но и повышая надежность приложений за счет единократной обработки ошибок и сложных особенностей Java "под капотом". Язык Yoix включает безопасные указатели, адресацию, объявления, а также глобальные и локальные переменные. Помимо поддержки пользовательских функций, пользователи могут добавлять собственные встроенные функции, написанные на Java.
Дизайн
Два центральных элемента в дизайне Yoix заимствованы из языка PostScript: словари как языковые компоненты и словари, защищенные разрешениями, как открытые системные компоненты. Следует также отметить язык Tcl и его философию открытости, хотя он и не оказал прямого влияния. Еще одним ключевым элементом дизайна Yoix являются указатели и адресация. Указатели и арифметика указателей в языке Yoix синтаксически схожи с таковыми в языке C, однако реализация Yoix предотвращает использование указателя за пределами выделенной памяти. Кроме того, оператор взятия адреса всегда возвращает допустимый и полезный результат. В целом, при разработке Yoix была предпринята попытка сделать язык легким в освоении для программистов, знакомых с языками C и Java.
Приложения
Дистрибутив Yoix включает в себя Yoix Web Application Instant Template (YWAIT) – программный каркас для создания веб-приложений Yoix. Веб-приложение Yoix размещается на веб-сервере и загружается по частям во время выполнения, по мере необходимости, интерпретаторами Yoix, работающими на клиентских машинах. Эта модель аналогична привычной модели клиентских веб-браузеров, загружающих веб-сайт по частям в процессе работы, что обеспечивает простое и эффективное распространение и поддержку приложений, опираясь лишь на повсеместный веб-сервер и интерпретатор Yoix. Для создания веб-приложения с использованием фреймворка YWAIT требуются лишь несколько стандартных инструментов Unix, доступных в большинстве современных операционных систем, таких как Linux или Mac OS X, или в Microsoft Windows с помощью дополнительных пакетов, например U/Win. Клиентская часть приложения, основанного на YWAIT, полагается исключительно на интерпретатор Yoix и, следовательно, является платформонезависимой, работая везде, где работает Java. Поскольку философия разработки программного обеспечения Yoix направлена на простоту, избегая распространенной тенденции к использованию множества встроенных специализированных языков, а фреймворк YWAIT позволяет легко и поэтапно разрабатывать интерфейс в простой и логичной иерархии исходного кода, разработка веб-приложения Yoix сводится к самому необходимому: командной строке и текстовому редактору. Энтузиасты IDE могут быть удивлены, но этот подход "Простота – залог успеха" оказался весьма эффективным на практике в AT&T.
Визуализация данных
В дополнение к своей роли инструмента для разработки графических пользовательских интерфейсов, технология Yoix поддерживает различные способы визуализации данных.
Добыча данных
Модуль визуализации данных под названием YDAT (Yoix Data Analysis Tool) включен в состав общедоступного дистрибутива Yoix, начиная с версии 2.1.2. YDAT использует компонент управления данными для координации отображения и фильтрации данных между различными компонентами визуализации, включая график событий, панель для построения графов, фильтры гистограмм и табличные данные. YDAT способен отображать графики, сгенерированные инструментом GraphViz для рисования и компоновки графов – еще одним инструментом с открытым исходным кодом, свободно доступным от AT&T Labs. YDAT обладает высокой степенью конфигурируемости на уровне языка Yoix. На изображении ниже представлен скриншот экземпляра YDAT в Yoix, который в данном примере используется для анализа транзакций автомобильных аукционов.
Рисунок графика
Технология Yoix обеспечивает хорошую поддержку для визуализации графов. Помимо графического отображения, упомянутого выше как часть модуля YDAT, типы данных в языке Yoix поддерживают построение, манипулирование и обход графовых структур. Встроенные функции Yoix поддерживают вывод в формате DOT и содержат встроенный парсер DOT для упрощения взаимодействия с GraphViz и его алгоритмами компоновки.
Организация ячеек данных
Инструментарий визуализации данных YChart был добавлен в дистрибутив Yoix с выпуском 2.2.0. YChart позволяет структурировать и отображать данные в виде ячеек. В дистрибутив Yoix включены два интерактивных приложения YChart: Периодическая таблица химических элементов и таблица символов Unicode. Также в дистрибутив Yoix входит программа, демонстрирующая использование YChart с ячейками переменной ширины, что может быть полезно, например, при работе с расписанием.
Интерактивная 2D-графика
Дистрибутив Yoix также включает в себя пакет Yoix под названием Byzgraf для визуализации простых графиков данных, таких как линейные графики, гистограммы и ящики с усами.
Ограничения и фокус
В настоящее время язык Yoix реализован как интерпретируемый, что означает, что, например, он, вероятно, не лучший выбор для ресурсоемких приложений, если только эти вычисления не реализованы в виде расширения модуля на Java. Аналогично, избыточное использование циклов также продемонстрирует ограничения этого интерпретируемого языка. Основное предназначение языка – интерактивные автономные или клиент-серверные GUI-приложения и приложения для визуализации данных.
Лицензирование
Технология Yoix является свободным программным обеспечением, распространяемым под лицензией Open Source Initiative Common Public License. Yoix является зарегистрированным товарным знаком компании At&T Inc.