Jump to content

S-только

S-только
Разработчик(и) Джон Э. Дэвис [1]
Стабильная версия
2.3.3 [2]  Отредактируйте это в Викиданных / 5 августа 2022 г.
Написано в Язык сценариев S-Lang
Операционная система ПОСИКС
Тип Набор инструментов для виджетов
Лицензия GPL-2.0 или новее [3]
Веб-сайт www .jedsoft .org /сленг / Отредактируйте это в Викиданных

Библиотека программирования 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], " "));
     }
}

См. также

[ редактировать ]
  1. ^ Дэвис, Джон (26 ноября 2017 г.). «Немного обо мне» . Программное обеспечение Джона Э. Дэвиса . Архивировано из оригинала 1 июня 2020 года . Проверено 1 июня 2020 г.
  2. ^ «сленговые релизы» .
  3. ^ Дэвис, Джон (4 марта 2018 г.). «Информация о лицензии на программное обеспечение S-Lang» . Программное обеспечение Джона Э. Дэвиса . Архивировано из оригинала 1 июня 2020 года . Проверено 31 мая 2020 г.
  4. ^ Библия Linux, издание 2010 г.: загрузка Ubuntu, Fedora, KNOPPIX, Debian, openSUSE и 13 других дистрибутивов , Кристофер Негус, Wiley , 2009 г., ISBN   978-0-470-48505-7 , стр.775
  5. ^ «Краткая история S-Lang» . Проверено 6 июня 2017 г.
  6. ^ Получение большего от многоядерности: использование OpenMP из языка числовых сценариев с открытым исходным кодом , Noble, MS, Concurrency and Computation: Practice and Experience Том 20, выпуск 16, страницы 1877–1891, 2008 г., doi: 10.1002/cpe.1296
  7. ^ «Руководство по установке Mutt» . Проверено 4 октября 2015 г.
  8. ^ Библиотека разработчиков MySQL , Пол Дюбуа, Pearson Education, 2009 г., ISBN   9780672329388 , раздел 6.1
  9. ^ Разработка приложений для Linux , Майкл К. Джонсон и Эрик В. Троан, Аддисон-Уэсли, 2005 г., ISBN   9780321219145 , стр. 513
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 60a3f85edf8fb7b7b053762de8a627b7__1717451760
URL1:https://arc.ask3.ru/arc/aa/60/b7/60a3f85edf8fb7b7b053762de8a627b7.html
Заголовок, (Title) документа по адресу, URL1:
S-Lang - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)