Сленг
Разработчик(и) | Джон Э. Дэвис [1] |
---|---|
Стабильная версия | 2.3.3 [2] / 5 августа 2022 г. |
Написано в | Язык сценариев S-Lang |
Операционная система | ПОСИКС |
Тип | Набор инструментов для виджетов |
Лицензия | GPL-2.0 или новее [3] |
Веб-сайт | www |
Библиотека программирования S-Lang — это библиотека программного обеспечения для Unix , Windows , VMS , OS/2 и Mac OS X. Он предоставляет процедуры для встраивания интерпретатора S-Lang языка сценариев и компоненты для облегчения создания текстовых приложений. [4] Последний класс функций включает процедуры для создания и управления раскладками клавиатуры, средства интерактивного редактирования строк, а также функции управления экраном/терминалом как низкого, так и высокого уровня. Распространяется на условиях GNU General Public License .
Краткая история
[ редактировать ]Библиотека программирования S-Lang была основана в 1992 году Джоном Э. Дэвисом, считая, что функции, которые он написал для текстового редактора, могут быть полезны в других программах. [5] Самая ранняя версия библиотеки содержала процедуры ввода-вывода для взаимодействия с компьютерными терминалами и реализацию простого стекового интерпретатора с синтаксисом, подобным PostScript , который он разработал для использования в программе построения научных графиков. Текстовый редактор JED был первой программой, в которой был встроен интерпретатор и использовались компоненты терминального ввода-вывода библиотеки.
Устный переводчик
[ редактировать ]Интерпретатор составляет большую часть библиотеки S-Lang, а также именно там происходит большая часть разработки. Хотя исходный синтаксис, поддерживаемый интерпретатором, напоминал PostScript, этот синтаксис стал более похожим на C, с дополнительной поддержкой конструкций объектно-ориентированного стиля. Как отражение опыта Дэвиса в области физики и профессионального интереса к научным вычислениям, язык изначально поддерживает множество операций на основе векторизованных массивов, подобных MATLAB и IDL . [6]
До версии 2.0 интерпретатор не был отдельной программой. Вместо этого Дэвис выступал за встраивание его в приложения, чтобы сделать их расширяемыми. Использование интерпретатора означало либо встраивание его в программу на языке C, либо использование его в контексте другого приложения (например, редактора JED ). Оболочка S-Lang, slsh, представляла собой демонстрационную программу, способную не более чем запускать сценарии. Версия 2.0, выпущенная в 2005 году, сделала slsh интерактивным, и она превратилась в самостоятельное приложение с рядом внешних модулей для использования. Таким образом, он стал интерпретатором S-Lang.
Управление экраном
[ редактировать ]В середине 1990-х годов, перенося электронную таблицу sc в библиотеку S-Lang, Дэвис разработал средство управления экраном библиотеки. [ нужна ссылка ] Этот компонент был разработан для оптимизации вывода на экран (путем минимизации количества символов, отправляемых на терминал) и обеспечения простого способа поддержки различных терминалов посредством дополнительного уровня абстракции между кодом приложения и терминалом. Программа чтения новостей slrn была первым приложением, полностью использующим этот интерфейс. [ нужна ссылка ] С тех пор ряд других программ (например, Mutt [7] ) воспользовались этой особенностью библиотеки, и она, возможно, стала наиболее используемым аспектом библиотеки, поскольку этот компонент считается альтернативой проклятиям . [8] [9] Начиная с версии 2.0 процедуры управления экраном имеют прозрачную поддержку UTF-8 .
Пример исходного кода
[ редактировать ]#! /usr/bin/env slsh % Программа ниже решает следующую проблему: % Сортировка входного файла, состоящего из таких строк % % var1=23other=14 ditto=23 fred=2 частная переменная Keys , Values ; частное определение sort_fun ( i , j ) { переменная s , a , b ; s = Значения [ i ] - Значения [ j ]; ! if ( s ) return strcmp ( Keys [ i ], Keys [ j ]); вернуть с ; } define slsh_main () { переменная line , len , i , vals ; foreach line ( stdin ) { % Разделить строку на массив строк % %, используя белые символы и = в качестве разделителя % line = strtok ( line , " \t\n=" ); len = длина ( строка ) / 2 ; если ( len == 0 ) продолжить ; % Чётные элементы — это ключи, нечётные — значения % [0::2] — это массив, содержащий индексы с шагом указания 2 % и создающий индексы от 0 до длины (строки) Ключи = строка [[ 0 :: 2 ]] ; vals = строка [[ 1 :: 2 ]]; % Переменная объявлена выше Values = atoi ( vals ); я = array_sort ([ 0 : len - 1 ] & sort_fun ); % Существуют разные способы записи результата. Вот % быстрый способ избежать цикла. % Пустая скобка () обозначает объявление переменной и указывает %, что возвращаемое значение должно быть отброшено () = printf ( "%s\n" , strjoin ( Клавиши [ i ] + "=" + vals [ i ], " " )); } }
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Дэвис, Джон (26 ноября 2017 г.). «Немного обо мне» . Программное обеспечение Джона Э. Дэвиса . Архивировано из оригинала 1 июня 2020 года . Проверено 1 июня 2020 г.
- ^ «сленговые релизы» .
- ^ Дэвис, Джон (4 марта 2018 г.). «Информация о лицензии на программное обеспечение S-Lang» . Программное обеспечение Джона Э. Дэвиса . Архивировано из оригинала 1 июня 2020 года . Проверено 31 мая 2020 г.
- ^ Библия Linux, издание 2010 г.: загрузка Ubuntu, Fedora, KNOPPIX, Debian, openSUSE и 13 других дистрибутивов , Кристофер Негус, Wiley , 2009 г., ISBN 978-0-470-48505-7 , стр.775
- ^ «Краткая история S-Lang» . Проверено 6 июня 2017 г.
- ^ Получение большего от многоядерности: использование OpenMP из языка числовых сценариев с открытым исходным кодом , Noble, MS, Concurrency and Computation: Practice and ExperienceТом 20, выпуск 16, страницы 1877–1891, 2008 г., doi: 10.1002/cpe.1296
- ^ «Руководство по установке Mutt» . Проверено 4 октября 2015 г.
- ^ Библиотека разработчиков MySQL , Пол Дюбуа, Pearson Education, 2009 г., ISBN 9780672329388 , раздел 6.1
- ^ Разработка приложений для Linux , Майкл К. Джонсон и Эрик В. Троан, Аддисон-Уэсли, 2005 г., ISBN 9780321219145 , стр. 513
Внешние ссылки
[ редактировать ]- Информационная страница библиотеки S-Lang , автор Джон Э. Дэвис
- Релизы S-Lang
- Документация S-Lang