stringtranslate.com

Сленг

Библиотека программирования 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] ) воспользовались этой функцией библиотеки, и она стала, возможно, наиболее используемым аспектом библиотеки, поскольку этот компонент считается альтернативой curses . [8] [9] Начиная с версии 2.0, процедуры управления экраном имели прозрачную поддержку UTF-8 .

Пример исходного кода

#! /usr/bin/env slsh % Программа ниже решает следующую задачу: % Сортировка входного файла, состоящего из таких строк % % var1=23 other=14 ditto=23 fred=2частная  переменная  Ключи ,  Значения ; частная  определить  sort_fun  ( i ,  j ) {  переменная  s ,  a ,  b ; s  =  Значения [ i ]  -  Значения [ j ];  ! if  ( s )  return  strcmp  ( Ключи [ i ],  Ключи [ j ]);  return  s ; }define  slsh_main  () {  variable  line ,  len ,  i ,  vals ;  foreach  line  ( stdin )  { % Разделить строку на массив строк % % используя пробелы и = в качестве разделителя % line  =  strtok  ( line ,  " \t\n=" ); len  =  length ( line ) / 2 ; if  ( len  ==  0 )  continue ;% Четные элементы являются ключами, нечетные — значениями % [0::2] — это массив, содержащий индексы с шагом 2, % и создающий индексы от 0 до длины (строки) Keys  =  line [[ 0 :: 2 ]]; vals  =  line [[ 1 :: 2 ]];% Переменная объявлена ​​выше Values  ​​=  atoi  ( vals );i  =  array_sort  ([ 0 : len - 1 ],  & sort_fun ); % Есть разные способы записи результата. Вот % быстрый способ, позволяющий избежать цикла. % Пустые скобки () обозначают объявление переменной и указывают, % что возвращаемое значение должно быть отброшено ()  =  printf  ( "%s\n" ,  strjoin  ( Keys [ i ]  +  "="  +  vals [ i ],  " " ));  } }

Смотрите также

Ссылки

  1. ^ Дэвис, Джон (26 ноября 2017 г.). «Немного обо мне». John E. Davis Software . Архивировано из оригинала 1 июня 2020 г. Получено 1 июня 2020 г.
  2. ^ "сленговые релизы".
  3. ^ Дэвис, Джон (4 марта 2018 г.). «Информация о лицензии на программное обеспечение S-Lang». John E. Davis Software . Архивировано из оригинала 1 июня 2020 г. Получено 31 мая 2020 г.
  4. ^ Linux Bible 2010 Edition: Загрузка Ubuntu, Fedora, KNOPPIX, Debian, openSUSE и 13 других дистрибутивов , Кристофер Негус, Wiley , 2009, ISBN 978-0-470-48505-7 , стр.775 
  5. ^ "Краткая история S-Lang" . Получено 6 июня 2017 г.
  6. ^ Получаем больше от многоядерного процессора: использование OpenMP из открытого языка численных скриптов , Noble, MS, Параллелизм и вычисления: практика и опыт, том 20, выпуск 16, страницы 1877–1891, 2008, doi: 10.1002/cpe.1296
  7. ^ "Руководство по установке Mutt" . Получено 2015-10-04 .
  8. ^ Библиотека разработчика MySQL , Пол Дюбуа, Pearson Education, 2009, ISBN 9780672329388 , раздел 6.1 
  9. ^ Разработка приложений Linux , Майкл К. Джонсон и Эрик В. Троан, Addison-Wesley, 2005, ISBN 9780321219145 , стр. 513 

Внешние ссылки