S-Lang (programozási nyelv)
S-Lang | |
S-Lang alapú szerkesztő, JED | |
Fejlesztő | John E. Davis[1] |
Legfrissebb stabil kiadás | preferred |
Programozási nyelv | S-Lang scripting language |
Operációs rendszer | POSIX |
Kategória | Widget toolkit |
Licenc | GPL-2.0-or-later[2] |
[www.jedsoft.org/slang/ A S-Lang weboldala] |
Az S-Lang egy programozási könyvtár Unix, Windows, VMS, OS/2, and Mac OS X rendszerekhez. Rutinokat biztosít az S-Lang szkriptnyelv interpreterének beágyazásához, valamint a szövegalapú alkalmazások létrehozását megkönnyítő komponenseket.[3] A funkciók utóbbi csoportjába tartoznak a billentyűzetkiosztás (keymaps) létrehozására és kezelésére szolgáló rutinok, egy interaktív sorszerkesztési lehetőség, valamint alacsony és magas szintű képernyő/terminál kezelési funkciók. A GNU General Public License feltételei szerint kerül terjesztésre.
Rövid története
Az S-Lang programkönyvtárat 1992-ben John E. Davis indította el, mivel úgy gondolta, hogy az általa egy szövegszerkesztőhöz írt függvények más programokban is hasznosak lehetnek.[4] A könyvtár legkorábbi verziója a számítógépes terminálokkal való interakcióhoz szükséges beviteli/kimeneti rutinokat és egy egyszerű, PostScript-szerű szintaxissal rendelkező stack-alapú interpreter implementációját tartalmazta, amelyet egy tudományos rajzolóprogramban való használatra fejlesztett ki. A JED szövegszerkesztő volt az első olyan program, amely mind az interpreter beágyazását, mind a könyvtár terminál I/O komponenseinek használatát lehetővé tette.
Interpreter
Az interpreter alkotja az S-Lang könyvtár nagy részét, és itt történik a legtöbb fejlesztés is. Bár az értelmező által támogatott eredeti szintaxis hasonlított a PostScriptre, a szintaxis sokkal inkább C-szerűvé fejlődött, az objektumorientált stílusú konstrukciók további támogatásával. Davis fizikai hátterét és a tudományos számítástechnika iránti szakmai érdeklődését tükrözi, hogy a nyelv a MATLAB-hoz és az IDL-hez hasonlóan számos vektorizált tömb alapú műveletet támogat.[5]
A 2.0 verzióig az értelmező nem volt önálló program. Davis inkább az alkalmazásokba való beágyazását támogatta, hogy azok bővíthetők legyenek. Az értelmező használata vagy egy C programba való beágyazást jelentett, vagy egy másik alkalmazás (pl. a JED szerkesztő) kontextusában való használatát. Az S-Lang shell, az slsh, egy demonstrációs program volt, amely nem tudott mást, mint szkripteket futtatni. A 2005-ben kiadott 2.0-ás verzió interaktívvá tette az slsh-t, és önálló alkalmazássá fejlődött, számos külső modullal a használatához. Mint ilyen, az S-Lang értelmezőjévé vált.
Sok interpretertől eltérően az S-Lang értelmező támogatja az összes natív C egész szám típust (a char, short, int, long és long long előjeles és előjel nélküli változatait), valamint az egyszeres és kétszeres pontosságú típusokat, valamint a kétszeres pontosságú összetett típust. Az értelmező által támogatott egyéb adattípusok közé tartoznak a karakterláncok, listák , asszociatív tömbök (hash-ek), felhasználó által definiált struktúrák, valamint bármilyen adattípusú többdimenziós tömbök.
Képernyőkezelés
A kilencvenes évek közepén, amikor a sc[6] az S-Lang könyvtárba portolta, Davis kifejlesztette a könyvtár képernyőkezelési lehetőségét. Ezt a komponenst úgy tervezték, hogy optimalizálja a képernyő kimenetet (a terminálra küldött karakterek számának minimalizálásával), és egyszerű módot biztosítson a különböző terminálok támogatására az alkalmazáskód és a terminál közötti extra absztrakciós réteg segítségével. Az slrn hírolvasó volt az első olyan alkalmazás, amely teljes mértékben kihasználta ezt a felületet. Azóta számos más program (pl. Mutt is kihasználta a könyvtár ezen tulajdonságát, és vitathatatlanul ez lett a könyvtár leggyakrabban használt aspektusa, mivel ezt a komponenst a curses alternatívájának tekintik.[7][8] A 2.0-s verzió óta a képernyőkezelő rutinok transzparensen támogatják az UTF-8 formátumot.
táblázatkezelőtPélda forráskód
#! /usr/bin/env slsh
% Az alábbi program a következő problémát oldja meg:
% Rendezzen egy ilyen sorokból álló bemeneti fájlt
%
% 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)
{
% A karakterlánc felosztása karakterláncok tömbjére %
% a fehér karakterek (white char) és az = elválasztó használatával
%
line = strtok (line, " \t\n=");
len = length(line)/2;
if (len == 0)
continue;
% A páros elemek kulcsok, a páratlanok az értékek
% A [0::2] egy tömb, amely indexeket tartalmaz 2-es lépéssel,
% és indexeket hoz létre 0-tól a hosszúságig (sor)
Keys = line[[0::2]];
vals = line[[1::2]];
% A változó fentebb már deklarálva
Values = atoi (vals);
i = array_sort ([0:len-1], &sort_fun);
% Az eredmény írásának különböző módjai vannak.
% Itt van egy gyors módja annak, hogy elkerülje a hurkot.
% Az üres zárójel () változó deklarációt jelöl,
% és megadja, hogy a visszatérési értéket el kell vetni.
() = printf ("%s\n", strjoin (Keys[i] + "=" + vals[i], " "));
}
}
Lásd még
Jegyzetek
- ↑ A little bit about me. John E. Davis Software , 2017. november 26. [2020. június 1-i dátummal az eredetiből archiválva]. (Hozzáférés: 2020. június 1.)
- ↑ S-Lang Software License Information. John E. Davis Software , 2018. március 4. [2020. június 1-i dátummal az eredetiből archiválva]. (Hozzáférés: 2020. május 31.)
- ↑ Linux Bible 2010 Edition: Boot Up to Ubuntu, Fedora, KNOPPIX, Debian, openSUSE, and 13 Other Distributions, by Christopher Negus, Wiley, 2009, ISBN 978-0-470-48505-7, p.775
- ↑ A Brief History of S-Lang. (Hozzáférés: 2017. június 6.)
- ↑ Getting more from your multicore: exploiting OpenMP from an open-source numerical scripting language, Noble, M. S., Concurrency and Computation: Practice and Experience Volume 20, Issue 16, pages 1877–1891, 2008, doi: 10.1002/cpe.1296
- ↑ sc táblázatkezelő a GitHub-on
- ↑ MySQL Developer's Library, by Paul Dubois, Pearson Education, 2009, ISBN 9780672329388, section 6.1
- ↑ Linux application development, by Michael K. Johnson and Erik W. Troan, Addison-Wesley, 2005, ISBN 9780321219145, p513
További információk
- S-Lang Library Information Page, by John E. Davis
- S-Lang Releases
- S-Lang Documentation
- S-lang scripting programming language
Fordítás
- Ez a szócikk részben vagy egészben a S-Lang című angol Wikipédia-szócikk fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.