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.
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.
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:
Minden platformon legyen egységes (Windows, Unix...)
Legyen interaktív.
Legyen könnyen kezelhető és könnyen tanulható (használjon ablakokat, menüket stb.)
Használjon egeret (vagy grafikus ceruzát) és nagyfelbontású, grafikus képernyőt.
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 legegyszerűbb ablak a Transcript. Ez arra szolgál, hogy egy-két parancsot gyorsan kipróbáljunk, ha nem tudjuk pontosan a feladatukat. Bizonyos programozási környezetekben (LISP, Basic vagy akár a szöveges módú operációs rendszerek) ez a szint körülbelül a "prompt"-nak felel meg. Azonban itt nincs prompt. Utasításainkat az ablakban bárhol begépelhetjük, majd ki kell jelölnünk azt, és ezután hajtathatjuk végre, egy menüpont segítségével. Ebből az ablaktípusból pontosan egy áll rendelkezésünkre a rendszer futása alatt, tehát kezdetben ez jelenik meg, nem nyithatunk még egy ilyen ablakot, és ha ezt bezárjuk, akkor a Smalltalk fejlesztői környezetet zárjuk be.
A Smalltalk egy másik szövegszerkesztő-szerű ablaktípust is biztosít. Ennek neve WorkSpace, azaz munkaterület. Ebből többet is létrehozhatunk, és a valamilyen szinten összefüggő utasításokat írhatunk ide.
A legösszetettebb ablaktípus az objektumok szerkezetének megjelenítésére szolgál. Itt egy hierarchikus listában láthatjuk a rendszerben éppen elérhető osztályokat. A kijelölt osztály adattagjait és metódusait külön-külön területeken láthatjuk. Az ablak alján részletes információk láthatók, például egy kijelölt metódus kódja.
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 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.