A Smalltalk programozási nyelv

Bevezetés

Történet

Az 1970-es évek elején a Silicon Valley-nél a Xerox Palo Alto Research Center Learning Research Group nevű csoport elkezdte megvalósítani azt a nagy rendszert, amellyel az emberek hatásosan és könnyedén kezelhetnék a számítógépet. 1981-ben a csoport nevét Software Concept Group-ra (SCG) változtatták. Az SCG célja az volt, hogy egy erőteljes információs rendszert készítsenek, amiben a felhasználó információt tud tárolni és kezelni úgy, hogy a felhasználó ötleteinek bővülésével párhuzamosan bővül a rendszer. Az SCG két terület fejlesztésére koncentrált: a nyelv definíciójára, és a programozói interface-re. A Smalltalk-ot folyamatosan fejlesztették, hogy mindig megoldást tudjon adni a felmerülő problémákra.

A nyelv létrehozói közül kiemelhetjük Alan Kay, Daniel H. Ingalls és Adele Goldberg nevét. Ők 1987-ben az ACM (Association for Computing Machinery) Software Systems Award-ját kapták a Smalltalk létrehozásáért.

A Smalltalk-nak két, kicsit eltérő szabványa terjedt el: a Smalltalk/V (Visual) és a Smalltalk80. Az előbbi Windows 3.x alá készült, az utóbbi például Unix környezetben is megtalálható.

A Smalltalk őseinek a Simula és a LISP programnyelvet tekinthetjük.

Koncepciók

Régebben a strukturált programozás számított a legmodernebb technikának és az objektumorientált rendszerfejlesztés még legfeljebb kísérleti fázisban állt. Ezért nagy meglepetést okozott, hogy a Smalltalk a Simula elveit követve objektumok használatát követelte meg. Sőt, a Smalltalkban minden objektum, és az objektumok, osztályok kezelésén kívül meglepően kevés szolgáltatást nyújt a nyelv magja. A strukturált programtervezés elveivel szakítva nincsen főprogramunk, sőt még a vezérlési szerkezeteket is objektumok biztosítják.

Újabb különlegesség a nyelvben a fejlesztői környezet, amely szintén nem volt "divat" akkoriban. A nyelv interpreteres, azaz nincs külön fordítóprogram, hanem minden utasítást azonnal végrehajt a rendszer. Ez a szemlélet és az igény, hogy objektumaink szerkezetét bármikor lekérdezhessük, fontossá tette egy ilyen segédprogram létrehozását.

A grafikus megjelenítés tekintetében, a maga idejében forradalmi újítással jelentkezett a Xerox. A cég az egér, a grafikus, nagyfelbontású képernyő, és a billentyűzet kombinálásával egy olyan rendszert épített ki, mely alapötletül szolgált a későbbi windowsos felületek kidolgozásában.

Ezekre a koncepciókra egyrészt a könnyű kezelhetőség, másrészt az egységes objektumorientáltság miatt volt szükség.

Van néhány eszköz, amelyet a mai modern nyelvektől elvárunk, de a Smalltalkban még nem található meg. Ilyen például a generic osztályok készítése, az operátortúlterhelés, többszörös öröklődés, kivételkezelés, párhuzamosság. Ezek többségét feleslegessé teszi az, hogy a Smalltalk nem végez típusellenőrzéseket (ha egy változó eddig számot tárolt, attól még bármikor beleírhatunk egy sztringet). A maradékot a Smalltalk legújabb, kereskedelmi verzióiban már megvalósították.

Fejlesztői környezet

A Smalltalk a programozási nyelv és a fejlesztői környezet egysége.

A fejlesztői környezettel szemben számos követelményt határoztak meg:

Ezen lehetőségek támogatását a nyelvtől is megkövetelték, így logikus, hogy a fejlesztői környezet megalkotására a Smalltalk (mint programozási nyelv) volt a legalkalmasabb eszköz. A Smalltalk példáját ebből a szempontból is sok más nyelv követte, körülbelül egy évtizeddel később.

A leírás elsősorban a Digitalk Inc. Smalltalk/V rendszerével foglalkozik. A Smalltalk/V környezetben teljesen különálló ablakokat használhatunk, amelyek a többitől független szolgáltatást nyújtanak.

A Smalltalk mint nagy rendszer

A ST sok komponensből áll. Olyan objektumokat tartalmaz, amik az operációs rendszerrel tartják a kapcsolatot. Pl. automatikus memóriakezelés, a fájlrendszer, a megjelenítés eszközei, szöveg- és képszerkesztés, billentyűzettel és egérrel történő adatbevitel, debugger, processzorütemezés, fordítás. A modell lényege, hogy objektumok kommunikálnak egymással. A rendszer így sokkal egyszerűbbé vált. A ST kiterjesztésének legfőbb eszközei az osztályok. A felhasználó által definiált osztályok a rendszer részeivé válnak, ezek után nincs különbség köztük és a predefinit osztályok között, minden teljesen ugyanúgy működik.

A nyelv megvalósítása

A nyelv első ránézésre teljesen interpreteres: nem készül semmilyen lefordított állomány és egyesével végrehajtathatjuk parancsainkat a szövegszerkesztő ablakokban. Azonban amikor változtatásokat végzünk egy osztályon, akkor a Transcript ablakban megjelenő üzenetekből megtudhatjuk, hogy a rendszer mégis végez valamilyen fordítást. Ennek a fordításnak az eredménye egy byte-kód, amelyet a Smalltalk Virtual Machine hajt végre. Ez a kód azonban gépfüggetlen, ami a teljes platformfüggetlenséget biztosítja számunkra.