Stephen Wolfram: An Elementary Introduction to the Wolfram Language
A Wolfram programozási nyelv rövid története
A Wolfram nyelv mindössze néhány éve kapott végleges nevet, noha fejlesztése még az elmúlt évezredben kezdődött el.
A felhasználók a nyelvvel először a Mathematica nevű programcsomagban találkozhattak [5]; ma úgy tekintünk e szoftverrendszerre, mint a Wolfram nyelv első fő implementációjára. E sorok írása előtt 28 évvel (és 2 nappal) jelent meg a Mathematica legelső változata, most hamarosan a 11-es változatnál járunk. A Mathematica felhasználói tábora jelenleg néhány milliósra tehető.
A Wolfram nyelv történetében a következő mérföldkövet a Wolfram|Alpha keresőszolgáltatás 2009-es beindítása jelentette [6]. A Wolfram|Alpha abban tér el a hagyományos internetes keresőktől, hogy folyamatosan karbantartott és frissített tudásbázisa segítségével olyan kérdések megválaszolására is képes, amelyhez általános értelemben vett számításokra van szükség (angolul ezt computational knowledge engine-nek, vagy answer engine-nek hívják). A Wolfram|Alpha áll például az Apple cég telefonjaiban megtalálható Siri beszédfelismerő szoftver mögött. A Wolfram|Alpha keresőmotorjának több tízmillió soros programkódja nagyrészt Wolfram nyelven íródott. 2009-ben ezt úgy fogalmaztuk meg, hogy a Wolfram|Alpha keresőmotorja a Mathematica rendszerre épül. Az elkövetkezendő hónapokban aztán fokozatosan lehetővé vált, hogy az internetkapcsolattal rendelkező felhasználó számítógépén futtatott Mathematica kód egyszerű kérdéseket intézhessen a Wolfram|Alpha tudásbázisához. Ma már e két óriási rendszer szimbiózisa elválaszthatatlan: a Wolfram|Alpha a keresésekhez a Mathematica számára kifejlesztett algoritmusokat (is) használja, míg a Mathematica működése közben szinte észrevétlenül merít a Wolfram|Alpha tudásanyagából. Ebből következik a Wolfram nyelv egyik kulcsfontosságú tulajdonsága: a Wolfram nyelv tudásalapú nyelv (knowledge-based language).
A nyelv elterjedését nagyban segíti a http://demonstrations.wolfram.com/ [7] weboldalon programkóddal együtt szabadon elérhető mintegy tízezer, Wolfram nyelven megírt példaprogram és interaktív alkalmazás, amelyek valamely tudományterületről (beleértve a művészeteket is) mutatnak be egy-egy érdekes modellt. Pozitív elbírálás esetén a weboldalon mi magunk is közzétehetjük igényesen megírt kódunkat.
A Wolfram nyelvvel a felhőben [8] is találkozhatunk. A 2016 januárja óta működő Wolfram Programming Lab oldalon [4] például ki-ki maga is megkezdheti a nyelvvel való ismerkedést: a böngészőnkből közvetlenül (és előfizetés nélkül) futtathatunk Wolfram nyelvű kódokat.
Ami a hardvert illeti, a Raspberry Pi − pár tízezer forintért kapható − miniszámítógépen alapértelmezésben elérhető a Wolfram nyelv. A Wolfram nyelvet egyébként folyamatosan készítik fel a Dolgok Internetével (Internet of Things, IoT) való „találkozásra”: a [9] adatbázisban gyűjtik össze azokat a készülékeket és eszközöket, amelyek az internetre kapcsolódva valamilyen adatot továbbítanak a felhőbe, és ezeket az adatokat a Wolfram nyelvvel feldolgozhatjuk. A Wolfram nyelv tehát a Dolgok Internetének egyik általános leíró nyelve lehet.
A Wolfram nyelv az elmúlt csaknem három évtizedben stabilnak és időtállónak bizonyult. A Mathematica korábbi változataiban íródott programok (az esetek legnagyobb részében) gond nélkül lefutnak az újabb Mathematica-változatok alatt is. Az idők során ugyanakkor a Wolfram nyelv képességei rohamosan bővültek. A nyelv jelenleg mintegy 5000 parancsot tartalmaz. Stephen Wolfram szerint saját maga is sokszor meglepődik a nyelv kifejezőerején: korábban elérhetetlennek tűnő dolgokat tudnak most sikerrel megvalósítani (gondoljunk például a Wolfram|Alpha-hoz kifejlesztett természetes nyelvi feldolgozás roppant bonyolult kérdéskörére).
A Wolfram nyelv legfontosabb tulajdonságainak összefoglalásaként elmondható, hogy a nyelv
- kis számú, jól megválasztott és egyszerű alapelvre épül;
- sokféle programozási stílust ötvöz (pl. procedurális, funkcionális, objektumorientált, szabályalapú);
- tudásalapú: (i) a nyelvben közvetlenül használható a Mathematica és a Wolfram|Alpha számára három évtized során kifejlesztett algoritmusok óriási gyűjteménye, valamint (ii) a nyelvben közvetlenül elérhető rengeteg, a valós világra vonatkozó aktuális információ (pl. fizikai-, kémiai-, földrajzi-, csillagászati- vagy tőzsdei adatbázisok);
- mindent szimbolikus kifejezésként reprezentál. A szimbolikus jelleg folytán egy f[x_]:= kezdetű függvénydefinícióban az x szimbólum jelenthet például egy lebegőpontos számot, egy komplex számot, egy integrált, egy gráfot, egy dokumentumot, egy internetről letöltött ábrát, egy programot, vagy akármit.
A Wolfram nyelv teljes dokumentációja [10] jelenleg nagyságrendileg 50 000 nyomtatott oldalon férne el (és akkor még nem is említettük a Mathematica szoftver alkalmazásairól szóló sok tucat komoly könyvet). A Wolfram nyelv megalkotója ezért szükségét látta annak, hogy egy rövid, bevezető jellegű könyvet adjon a nyelv iránt érdeklődők kezébe.
A könyv felépítése
Stephen Wolfram: An Elementary Introduction to the Wolfram Language c. könyve 2015. december 8-án jelent meg. E recenzió megírásához a 324 oldalas papíralapú könyv interneten szabadon elérhető angol nyelvű változatát vettük alapul [1].
- A mű 47 rövid, egymásra épülő fejezetből áll. Minden fejezet egy-egy új fogalomkörbe vezeti be az olvasót. Egy fejezet nem más, mint 10-20 egyszerű, az adott témakörbe illeszkedő példa felsorolása. Minden példa egy 1-2 soros angol nyelvű leírással kezdődik, amely után egy Wolfram nyelven megfogalmazott − egysorosnál ritkán hosszabb − lehetséges megoldás található. Az adott példát az inputhoz tartozó output megjelenítése zárja. A kidolgozott példák után minden fejezetben egy-két tucat feladat szerepel. Általában minden feladatra számos, egyenértékű megoldás adható Wolfram nyelven. Az illető fejezet végén néhány kitekintő megjegyzés, valamint a részletesebb dokumentációra való hivatkozás áll.
A könyv legvégén az előző 47 fejezetben felsorolt összes feladat megoldása megtalálható – a közölt megoldások döntő többségükben egysorosak, ezzel is kidomborítva a Wolfram nyelv kifejezőképességét.
Minden fejezet egy kattintással letölthető Mathematica-jegyzetfüzet formájában is − a példákat saját gépünkön interaktívan módosítva, illetve az inputokkal kedvünk szerint kísérletezve a nyelvtanulás hatékonyságát sokszorosára növelhetjük.
Kedvcsinálóul álljon itt a könyvben érintett témakörök felsorolása (zárójelben néha egy-egy önkényesen kiragadott példával).
- Elemi aritmetika (pl. mi történik nullával osztás után).
- Kifejezések és függvények (pl. véletlenszámok generálása).
- Listák és megjelenítésük (pl. grafikonok, oszlop- és tortadiagramok).
- Listaműveletek és listák létrehozása (pl. összesen hány nulla található egy szám 10-es számrendszerbeli alakjában).
- Színek és szövegstílusok (pl. egy száztagú, véletlen színekből álló lista létrehozása).
- Alapvető grafikai elemek (pl. egy sárgára festett gömb megjelenítése).
- Dolgok interaktív manipulálása (pl. csúszkák segítségével változtatható színű és oldalszámú sokszögek kirajzolása).
- Képek és elemi képszerkesztési eljárások (pl. éldetektálás).
- Karakterek és sztringek (pl. egy mondat szavai hosszának oszlopdiagramos ábrázolása).
- Zenei hangok és akkordok.
- Tömbök és mátrixok (pl. mátrixműveletek karakterek pixeles képével).
- Síkbeli és térbeli koordináták (pl. egymást metsző testek kirajzolása).
- Kapcsolat a Wolfram|Alpha-val (pl. a koffeinmolekula térbeli és forgatható szerkezetének megjelenítése).
- Mértékegységek és átváltások (ízelítő a nyelv által kezelt mintegy 10 ezer mértékegységből).
- Földrajzi, illetve a szomszédos égitestekre vonatkozó koordináták és térképek (pl. a Rómához 25 legközelebbi vulkán megjelenítése).
- Mennyiségek térben és időben (pl. a Los Angelesben és New Yorkban jelenleg mérhető hőmérséklet különbségének kiszámolása).
- Gráfok és hálózatok (pl. a Facebook-on található ismerőseink hálózatának megjelenítése).
- Gépi tanulás (szöveg- vagy képfelismerés).
Tetszőleges pontosságú aritmetika. Különféle függvénymegadási módok. Tiszta függvények. Rekurziók és iterációk. Feltételes utasítások. Mintaillesztés. Kifejezések szimbolikus reprezentációja a nyelvben. Asszociációk. Természetes nyelvi feldolgozás. Saját kód elhelyezése a felhőben, majd a futtatása a böngészőnkben. Globális és lokális változók. Azonnali és késleltetett értékadások. Különféle függvénydefiníciók. A mintaillesztésről bővebben. Mintaillesztés sztringekkel. Adatok be- és kivitele. Kapcsolat különféle adatbázisokkal. Kódunk hatékonyságának növelése, hibakeresés a kódban, illetve hogyan tegyük “szebbé” a kódot.
A Wolfram nyelvről korábban már megjelent egy csupán 30 oldalas bevezető [3], azonban az az írás olyanoknak szól, akik már járatosak valamely más programozási nyelvben. Wolfram mostani könyve nem épít előzetes programozási ismeretekre. A tárgyalás a matematikai alapműveletektől indul, ám a könyv olvasása során meglehetősen komoly fogalmakig is eljutunk. Wolfram a könyvét, illetve a nyelvet egyaránt ajánlja felnőtteknek és 12 éves kortól gyerekeknek [2], kifejezetten akár első programozási nyelvként. Wolfram könyvének magyar fordítását tehát a hazai közönség is haszonnal forgathatná – legyen szó tapasztalt programozókról vagy a programozás alapjaival most ismerkedőkről.
Lóczi Lajos
Hivatkozások
[1] https://www.wolfram.com/language/elementary-introduction/
[2] http://blog.stephenwolfram.com/2015/12/i-wrote-a-book-to-teach-the-wolfram-language/
[3] https://www.wolfram.com/language/fast-introduction-for-programmers/
[4] https://www.wolfram.com/programming-lab/
[5] https://www.wolfram.com/mathematica/
[6] http://www.wolframalpha.com/
[7] http://demonstrations.wolfram.com/
[8] https://www.wolframcloud.com/