S-только
Разработчик(и) | Джон Э. Дэвис [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
% The program below solves the following problem:
% Sort an input file that consists of lines like this
%
% var1=23 other=14 ditto=23 fred=2
private variable Keys, Values;
private define sort_fun (i, j)
{
variable s, a, b;
s = Values[i] - Values[j];
!if (s)
return strcmp (Keys[i], Keys[j]);
return s;
}
define slsh_main ()
{
variable line, len, i, vals;
foreach line (stdin)
{
% Split string into an array of strings %
% by using white chars and = as delimite
%
line = strtok (line, " \t\n=");
len = length(line)/2;
if (len == 0)
continue;
% Even elements are keys, odd are values
% The [0::2] is an array containing indexes with a 2 specifying step
% and creating indexes from 0 to the length(line)
Keys = line[[0::2]];
vals = line[[1::2]];
% The variable is declared above
Values = atoi (vals);
i = array_sort ([0:len-1], &sort_fun);
% There are different ways of writing the result. Here is a
% fast way that avoids a loop.
% The empty parenthesis () denote variable declaration and specifies
% that return value should be discarded
() = printf ("%s\n", strjoin (Keys[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