Yoix - Yoix

Yoix
Yoixlogo.png
ПарадигмаМультипарадигма, Объектно-ориентированный, процедурный
РазработаноРич Дрекслер и Джон Мочениго
Впервые появился2000
Стабильный выпуск
2.3.1 / 25 ноября 2011 г.; 9 лет назад (2011-11-25)
Печатная дисциплинаДинамический, Слабый
Операционные системыКроссплатформенность
ЛицензияОбщая общественная лицензия Open Source Initiative
Интернет сайтhttps://github.com/att/yoix
Под влиянием
C, Ява, PostScript

В компьютерном программировании Yoix это высокий уровень, общее назначение, интерпретированный, язык динамического программирования. Интерпретатор Yoix реализован с использованием стандартных Ява технология без дополнительных пакетов и требует только Sun-совместимого JVM работать.[нужна цитата ] Первоначально разработан 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. Для конечный пользователь, Йойкс заявление неотличим от приложения Java, но для приложения разработчик Yoix должен обеспечивать более простое программирование, чем прямая работа на Java, во многом как написание Perl код может быть проще, чем писать код C.

Функции

Язык Yoix не объектно-ориентированный язык, но использует более 165 объект типы, обеспечивающие доступ к большей части стандартной Java классы. Потому что Yoix устный переводчик построен полностью с использованием технологии Java, это означает, что приложения Yoix кросс-платформенный, GUI -возможен и оба сеть и нить дружелюбны, но разработчики Yoix оказываются изолированными от более сложных и подверженных ошибкам частей кодирования тех же функций непосредственно на Java. Он не использует отражение чтобы получить доступ к функциям Java и, таким образом, повысить ценность, не только упрощая доступ к этим функциям, но и повышая надежность приложений за счет кодирования как с помощью ошибок Java, так и сложных функций Java, разовых, за кулисами.[требуется разъяснение ] Язык Yoix включает безопасные указатели, обращаясь, декларации, и Глобальный и местный переменные. Помимо поддержки собственных пользовательских функций, пользователи могут добавлять свои собственные встроенные функции, написанные на Java.

Дизайн

Два центральных элемента в дизайне Yoix заимствованы из языка PostScript.[нужна цитата ]: словари как языковые компоненты и защищенные разрешениями словари как открытые системные компоненты. Следует также отдать дань уважения языку Tcl и его философии раскрытия информации, хотя она не имела прямого влияния.[нужна цитата ]

Еще один ключевой элемент дизайна Yoix - это указатели и адресация. Указатели и арифметика указателей в языке Yoix синтаксически похожа на то, что находится в языке C, но реализация Yoix предотвращает использование указателя за его пределами. Кроме того, оператор адреса всегда дает допустимый результат.[сомнительный ]

В целом, дизайн Yoix попытался упростить изучение языка программистами, имеющими опыт работы с языками C и Java.[неправильный синтез? ]

Приложения

Дистрибутив Yoix включает в себя мгновенный шаблон веб-приложения Yoix (YWAIT), программная среда для создания веб-приложения Yoix. Веб-приложение Yoix находится на веб сервер и является скачано по частям в время выполнения по мере необходимости Yoix переводчики работает на клиентские машины. Эта модель, аналогичная знакомой модели клиента. веб-браузеры загрузка интернет сайт по частям по мере необходимости во время выполнения, обеспечивает простое и эффективное распространение и обслуживание приложений и полагается только на вездесущий веб-сервер и интерпретатор Yoix. Для создания веб-приложения с использованием инфраструктуры YWAIT требуется всего несколько стандартных Unix инструменты доступны в самых современных операционные системы, Такие как Linux или же Mac OS X, или под Майкрософт Виндоус с помощью дополнительных пакетов, таких как 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. Изображение ниже - это снимок экрана экземпляра Yoix YDAT, который в этом примере используется для анализа транзакций аукциона транспортных средств.

Рисование графика

Технология Yoix обеспечивает хорошую поддержку рисования графиков. В дополнение к отображению графиков, упомянутому выше как часть модуля YDAT, типы данных в языке Yoix поддерживают построение, манипулирование и обход структур графиков. Собственные функции Yoix поддерживают Язык DOT выход и встроенный Язык DOT парсер для облегчения взаимодействия с GraphViz компоновка двигателей.

Организация ячеек данных

YChart визуализация данных набор инструментов был добавлен в дистрибутив Yoix с выпуском 2.2.0. YChart позволяет организовывать и отображать ячейки данных. Два интерактивных приложения YChart, содержащиеся в дистрибутиве Yoix, являются Периодическая таблица элементов и Таблица Юникода. Программа для демонстрации использования YChart с ячейками переменной ширины, как это может происходить с расписанием, также доступна в дистрибутиве Yoix.

Интерактивная 2D-графика

Дистрибутив Yoix также включает пакет Yoix, называемый Byzgraf, для рендеринга основных графики данных такие как линейные диаграммы, гистограммы и статистические диаграммы.

Ограничения и фокус

Как в настоящее время реализовано[когда? ], язык Yoix интерпретируется, а это означает, что, например, это, вероятно, неправильный выбор для приложений с интенсивными вычислениями, если не кодировать эти вычисления в расширении модуля Java. Точно так же чрезмерное зацикливание также покажет ограничения этого интерпретируемого языка. В центре внимания языка - автономная интерактивная версия или клиент / сервер. GUI и визуализация данных Приложения.

Лицензирование

Технология Yoix - бесплатное программное обеспечение под лицензией Инициатива открытого исходного кода Общая общественная лицензия. Yoix зарегистрированный товарный знак из At & T Inc..[1]

Примеры

1. Извлечь все HTML директивы с домашней страницы AT&T и напишите их стандартный вывод.

импорт йой. *.*;URL att = открыто("https://www.att.com", "р");Нить текст;int cnt = 0;пока (cnt >= 0) {    если ((cnt = fscanf(att, " <%[^>]>", &текст)) > 0)        printf("<% s>  n", текст);    еще cnt = fscanf(att, " %*[^<]");  // отказаться}

2. Создайте и отобразите GUI с двумя кнопками в названной рамке (т. е. в окне), которая также имеет названную рамку. При нажатии на одну кнопку появляется сообщение, другая - для выхода из примера. Размер окна изменяется автоматически, чтобы соответствовать его компонентам, и некоторый дополнительный код вычисляет его местоположение, чтобы поместить его в центр экрана перед тем, как сделать его видимым.

импорт йой. *.*;JFrame  jf = {  Измерение  размер = НОЛЬ; // автоматический размер окна  FlowLayout  layoutmanager = {    int hgap = 18; // зазор 0,25 дюйма  };  Нить  заглавие = "Пример Wikipedia Yoix"; // заголовок окна  Нить  граница = «Пример простой кнопки»; // заголовок границы  Множество  макет = {    новый JButton {      Нить  текст = "Нажмите для сообщения";      действие выполнено(ActionEvent ev) {        showMessageDialog(корень, "Привет, мир.", "Пример сообщения");      }    },    новый JButton {      Нить  текст = "Нажмите, чтобы выйти";      действие выполнено(ev) { // Объявление ActionEvent можно не указывать        выход(0);      }    },  };};// теперь, когда размер кадра известен, устанавливаем положение кадра в центр экранаjf.место расположения = новый Точка {  int Икс = (ВМ.экран.ширина - jf.размер.ширина) / 2;  int у = (ВМ.экран.высота - jf.размер.высота) / 2;};// делаем видимымjf.видимый = ИСТИННЫЙ;

3. Показанный здесь код был использован для создания Yoix логотип изображение в PNG формат, который можно увидеть в поле описания языка в верхней части этой страницы. Командная строка аргументы позволяет указать размер изображения, а также выбрать между выводом изображения PNG или отображением в экранном окне.

импорт йой. *.*;BuildYoixLogoImage(двойной высота, Цвет цвет, int добавляет тень) {  // создаем базовое изображение без тени  GenImage(двойной высота, Цвет цвет, Шрифт imagefont, двойной шкала) {    Изображение yoixlogo = {      int тип = TYPE_RGB_ALPHA;      Цвет imgcolor = цвет;      двойной шкала = шкала;      Шрифт imagefont = imagefont;      Шрифт regfont = imagefont.масштаб(0.5, 0.5);      Графика графика = {        Шрифт шрифт = imagefont;        int сглаживание текста = ИСТИННЫЙ;      };      двойной ywd = stringWidth(графика.шрифт, "Y");      Измерение размер = {        двойной высота = высота;        двойной ширина = ywd * 5.25;      };      двойной Оуд = stringWidth(графика.шрифт, "о");      двойной iwd = stringWidth(графика.шрифт, "я");      двойной xwd = stringWidth(графика.шрифт, "Икс");      ywd += iwd;      ywd /= 2.0;      краска(Прямоугольник р) {        двойной альфа = 1.0;        двойной альфа2 = 0.3333;        int    предел = 12;            графика {          gsave();          стираемый(0.0); // для прозрачного PNG          прямоугольный зажим(р);          setrgbcolor(imgcolor.красный, imgcolor.зеленый, imgcolor.синий);          переведите(48 * это.шкала, 44 * это.шкала);          за (п=0; п<предел; п++) {            двигаться(0.0, 0.0);            setfont(это.imagefont);            // "ручной" кернинг            Показать("Y", альфа);            если (п == 0) {              двигаться(ywd, 0.0);              Показать("о", альфа);              двигаться(ywd + Оуд - 0.3 * iwd, 0.0);              Показать("я", альфа);              двигаться(ywd + Оуд + 0.8 * iwd, 0.0);              Показать("Икс", альфа);              двигаться(ywd + Оуд + 0.8 * iwd + xwd, -это.imagefont.высота * 0.33);              setfont(это.regfont);              Показать(" xAE", альфа);              альфа = альфа2;            }            альфа *= 0.75;            вращать(30);          }           Grestore();        }      }    };    возвращаться(yoixlogo);  }  Шрифт basefont = {    Нить имя = "ClearviewATT-plain-48";  };  двойной шкала = высота / 90.0;  Шрифт imagefont = basefont.масштаб(шкала, шкала);  если (добавляет тень) {    Изображение логотип = GenImage(высота, цвет, imagefont, шкала);    изображение = новый Изображение {      int тип = TYPE_RGB_ALPHA;      Изображение источник = логотип;      Изображение img = логотип;      // сворачиваем изображение, чтобы сделать (осветленную) тень      Изображение тень = новый Изображение {        int тип = TYPE_RGB_ALPHA;        Изображение источник = img;        Множество ядро = новый Множество[100];        Указатель ptr;        за (ptr в ядро) *ptr = 0.0055;        краска() {          сворачивать(ядро);        }      };      // объединяем изображение и тень в одно изображение      краска(Прямоугольник р) {        графика {          gsave();          двигаться(0, 0);          шоуизображение(это.img);          двигаться(это.img.размер.высота * 0.005, это.img.размер.высота * 0.02);          шоуизображение(это.тень);          Grestore();        }      }    };  } еще {    изображение = GenImage(высота, цвет, imagefont, шкала);  }  возвращаться(изображение);}// элементарная обработка аргументов (также доступна функция getopt)// первый аргумент - высота изображениядвойной sz = (argc > 1) ? atof(argv[1]) : 270;int shdw = 1;int Распечатать = 0;// второй аргумент: если 0/1 выключить / включить тень, иначе// предполагаем, что это имя файла для печати.если (argc > 2) {  если (argv[2] =~ "^[01]$") {    shdw = атой(argv[2]);  } еще {    Распечатать = 1;  }}Изображение yoixlogo = BuildYoixLogoImage(sz, Цвет.чернить, (sz >= 72) && shdw);если (Распечатать) {  Транслировать выход;  если ((выход = открыто(argv[2], "ш")) != НОЛЬ) {    encodeImage(yoixlogo, "png", выход);    Закрыть(выход);  }} еще {  JFrame jf = {    int видимый = ИСТИННЫЙ;    Измерение размер = НОЛЬ;    Множество макет = {      новый JPanel {        Измерение предпочтительный размер = {          двойной ширина = yoixlogo.размер.ширина;          двойной высота = yoixlogo.размер.высота;        };        Цвет фон = Цвет.белый;        Изображение фоновая картинка = yoixlogo;        int подсказки = SCALE_NONE;      },    };  };}

Рекомендации

  1. ^ "Язык сценариев Yoix®". Интернет-архив Wayback Machine. 1 июля, 2016. Архивировано с оригинал 21 сентября 2015 г.. Получено 20 ноября, 2016.

внешняя ссылка