S-Lang (programozási nyelv)

programnyelv és terminálkezelő programkönyvtár From Wikipedia, the free encyclopedia

S-Lang (programozási nyelv)
Remove ads

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(wd) 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.

Gyors adatok
Remove ads

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(wd) 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.

Remove ads

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(wd), 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.

Remove ads

Képernyőkezelés

A kilencvenes évek közepén, amikor a sc(wd) táblázatkezelőt[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(wd) 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(wd) 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(wd) 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.

Pé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], " "));
     }
}
Remove ads

Lásd még

Jegyzetek

További információk

Fordítás

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads