Az R programozási nyelv és története

Korcsmáros István
2016. április 26.

Foglalkoztatja, hogy az előrejelzés önmagát beteljesítő jóslat-e vagy matekkal kiszámolható jövő?
Írt már VBA makrót? Vagy SQL szkriptet? Esetleg ABAP programot? Itt egy programozási nyelv, amit már régen felkapott a világ, és ha nem szokott, vagy már nagyon utál programozni, esetleg nem is tud, a történetét akkor is érdemes elolvasni.

Hallott már az R-ről?

Az R nyelv előnyeit és hátrányait a legfrappánsabban Bo Cowgill, a Google munkatársa
foglalta össze: „A legjobb az R-ben az, hogy statisztikusok fejlesztették ki. A legrosszabb az R-ben az, hogy statisztikusok fejlesztették ki."


Frappáns. De adatokkal kötelezően foglalkozó szakemberként biztosan örülni fog néhány további
részletnek.

Egy különleges karrier a programozási nyelvek világában

Létezik egy számítógépes programozási nyelv, amelyről nem csak szakmai körökben születik számos publikáció, hanem már a New York Times és a Forbes Magazine is közölt róla terjedelmes cikkeket [1, 2]. A Forbes egyenesen a „Nevek, melyeket ismernie kell” című sorozatában méltatta öt éve, 2011-ben. Akkor csodálkoznánk ezen, ha valami radikálisan új, nem csak aktuálisan világmegváltónak kikiáltott megoldásról lenne szó. Ennek a nyelvnek a gyökerei azonban az 1970-es évekig nyúlnak vissza. Mi lehet ennek a megújuló és felettébb kitüntető érdeklődésnek a hátterében? Talán az, hogy mostanság ért meg rá az idő. Miért éppen mostanság ért meg rá az idő? Mert az R nem csupán egy programozási nyelv, hanem egyúttal egy interaktív adatelemző környezet is.

Mára közismert mondássá vált, hogy a következő évtizedek legvonzóbb foglalkozása a statisztikusé lesz [3]. Tudjuk, hogy az adatok feldolgozásának és megértésének képessége, jártasság az adatokban rejlő összefüggések feltárásában, vizualizálásában és kommunikálásában igen nagy jelentőséggel bír, és tudjuk, hogy ez így marad a közeli és a távolabbi jövőben is.

„Ha olyan karrierre vágyik, ahol szolgáltatásai iránt nagy lesz a kereslet, akkor valami olyasmit kell kitalálnia, amely ritka, kiegészítő szolgáltatásként járul hozzá valami olyasmihez, ami mindenütt jelen van és olcsó. Na, és mi az, ami mindenütt jelen van és olcsó? Az adat. Milyen járulékos szolgáltatás teljesítheti ki az adatok értékét? Az elemzés.” [4]

Szóval, az adatelemzőknek, illetve újabb generációjuknak az adattudósoknak az egyik de facto szabványos munkaeszközévé az R nyelv vált. Népszerűségének folyamatos emelkedését jól illusztrálja az IEEE Spectrum által rendszeresen közzétett lista, mely 10 adatforrás alapján 12 mutatót összesítve állítja elő a programozási nyelvek elterjedtségi rangsorát [5].

Az R programozási nyelv a 6. legnépszerűbb

 

A bal oldali oszlop a 2015. évi rangsor, a jobb oldali pedig a 2014. évi. Látható, hogy az R programozási nyelv egy év alatt a kilencedik helyről a hatodikra ugrott fel, és az első tíz között ez volt az egyetlen nyelv, mely előrelépett a listán.

Érdemes tehát röviden áttekintenünk az R programozási nyelv történetét, a mögötte munkálkodó tervezők adatelemzésről vallott felfogását és filozófiáját. Így lehetőségünk lesz az R legfontosabb tulajdonságait összehasonlítani más elterjedt adatelemző környezetek, pl. az SPSS vagy a SAS jellemzőivel. Először egy kis történelem.

Az R származása

Egészen röviden: az R az S nyelv egy dialektusa. Mi akkor az S? Az S nyelvet 1976-ban John Chambers és négy kollégája kezdte el kifejleszteni a ma már nem működő Bell Laboratories-ban. Céljuk egy saját statisztikai elemző környezet létrehozása volt a cégen belüli kutatások eredményeinek kiértékelésére. Kissé előreugorva az időben, 1998-ban Chambers megkapta az ACM (Association for Computing Machinery) igen nagy presztízzsel bíró Software System Award díját. Az indoklásban az szerepelt [6], hogy „az S rendszer mindörökre megváltoztatta annak módját, ahogy az emberek elemzik, vizualizálják és kezelik az adatokat.”

Mi az a látásmód, mi az a filozófia, amelynek megvalósítása ehhez a sikerhez vezetett? John Chambers „Az S fejlődésének fázisai” című cikkében [7] ezt írja: „Azt akartuk, hogy a felhasználók legyenek képesek elkezdeni dolgozni egy olyan interaktív környezetben, amelyben nem úgy tekintenek magukra, mint programozókra. Később aztán, amikor az igényeik egyre világosabbá válnak számukra, a rendszer használatában való jártasságuk megnő, legyenek képesek a programozásra való fokozatos áttérésre.”

A lényeg tehát, hogy a felhasználók először úgy kezelhetik a rendszert, mint egy statisztikai funkciókkal felvértezett zsebszámológépet. Később, ha bonyolultabb feladatokat kell megoldaniuk, lépésről lépésre, öntanuló módon elsajátíthatják a környezet nyelvi, programozási aspektusait. Mindehhez a rendszer minden támogatást megad. Mivel az R nyelv az S-ből nőtt ki, ugyanezt a megközelítést viszi tovább.

Az S nyelvvel kapcsolatos jogok később többször is gazdát cseréltek. Néhány kényelmi szolgáltatással kiegészítve S-PLUS néven került kereskedelmi forgalomba, majd 2008-ban a TIBCO vásárolta meg. Jelenleg az S-PLUS-t még támogatja, ugyanakkor az R nyelvet – lévén az nyílt forráskódú szoftver – a meglévő S nyelvbéli tapasztalatok alapján teljesen az alapoktól újra implementálta, TERR (TIBCO Enterprise Runtime for R) néven a kereskedelemben forgalmazza, és beépíti saját elemző szoftvereibe (pl. TIBCO Spotfire).

Az R története

Az R az S-hez képest újabb fejlesztés, 1991-ben fogott hozzá az új-zélandi University of Auckland egyetemen két úriember, Ross Ihaka és Robert Gentleman. Mindketten statisztika professzorok voltak, céljuk az egyetemi statisztikai oktatás megkönnyítése volt. Azt hamar eldöntötték, hogy mintaként az S környezetet veszik alapul. A névválasztásról talán annyit elég tudni, hogy a szerzők azt szerették volna, hogy alkotásuk elnevezése némiképpen utaljon a származására, azaz az S-re. Miért nem a T-t választották akkor, hiszen az ABC-t vizsgálva ez lett volna a logikusabb? Nos, állítólag azért, mert mindkét szerző keresztneve R-rel kezdődik.

A publikumnak 1993-ban jelentették be a szoftvert, 1995-ben pedig nyílt forráskódúvá tették, aminek a nyelv későbbi karrierje szempontjából döntő jelentősége volt. 1996-ban létrejött két nyilvános levelezési lista (R-help és R-devel), egyik a felhasználók, másik a fejlesztők számára. 1997-ben megalakult az R Core Group (R Központi Csoport), melynek tagjai sorában nagyon sok korábbi S-PLUS fejlesztő is fellelhető. Ez a csoport koordinálja az R nyelv forráskódjának fejlesztését. 2000-ben megjelent az R 1.0.0 verzió, 2003-ban napvilágot látott az R Foundation, egy nonprofit szervezet, 2015-ben pedig az R Consortium, mely komoly összegeket fektet az R továbbfejlesztésének támogatásába. Tagjai között olyan cégek szerepelnek, mint a Microsoft, a Google, az Oracle, a HP és a TIBCO.

Pár nappal ezelőtt pedig a 3.2.5 verzió is napvilágot látott.

Az R jó tulajdonságai

Statisztikusok fejlesztették statisztikusok számára. Ezért a fejlesztők teljesen tisztában voltak azzal, hogy felhasználóiknak mik a valós igényei. Ugyanakkor olyan, a felhasználók elképzeléseit és képességeit szem előtt tartó környezet jött létre, mely támogatja a programozásra való fokozatos áttérést.

Szinte minden számítástechnikai platformon fut (Windows, Linux, Mac, PlayStation). Nyílt forráskódú, ingyenes szoftver. A programot bárki letöltheti, és bármilyen célból futtathatja. A forráskód is szabadon letölthető, tanulmányozható és módosítható. Nagyon gyakran jönnek ki új verziók, és aktív, segítőkész felhasználói és fejlesztői közösség gondoskodik róla.

Több adat-vizualizációs csomaggal is rendelkezik, melyekkel publikációra kész minőségű grafikonok állíthatók elő. (A New York Times is az R-t használja infografikái előállítására.)

Moduláris szerkezetű (az egyes modulokat csomagoknak nevezik), szinte minden adatelemzési problémára található megoldás. Mivel először egyetemi környezetben terjedt el (nem kis mértékben ingyenességénél fogva), a legtöbb kutató R programozási nyelven valósította meg az elképzeléseit. Jelenleg kb. 9000, minőségileg ellenőrzött csomag tölthető le.

Mivel az egyetemeken nem csak kutatási, hanem oktatási célra is használják, sok fiatal szakember ismerkedik meg vele. Ennek ellenére képzett R programozókból még mindig hiány van. (Jelenleg az R felhasználók számát kétmillióra becsülik.)

Az R fogyatékosságai

Tény, hogy az R 40 évvel ezelőtti szoftvertechnológiákon alapszik, és ahogy idéztük: statisztikusok  fejlesztették statisztikusok számára. Félreértés ne essék, nagyon nagy tudású emberekről van szó, akik azonban mégsem voltak professzionális szoftvermérnökök.

Az is igaz, hogy szinte minden problémára van már megírt és letölthető csomag – de ha még sincs, akkor azt a kódot nekünk kell megírnunk, vagy valakit meg kell fizetnünk, hogy megírja.

Technikai korlát, hogy az R a számítógép operatív memóriájában működik, ezért annyi adatot képes feldolgozni, amennyit a számítógépünk befogad. Ezen a területen már történtek előrelépések, így már elérhetőek olyan megoldások, amelyek révén az R számítógépfürtökön, Big Data környezetben is képes futni. Ezek azonban nem az ingyenes kategóriába tartoznak.

Az R és a grafikus adatelemző környezetek

Természetesen vannak más megoldások is az interaktív adatelemzésre, amelyek nem igényelnek programozást, hanem grafikus, menüvezérelt módon teszik lehetővé az adatok közötti összefüggések feltárását. A legismertebbek közül ilyen az SPSS, a SAS, vagy a Stata. Amellett, hogy használatuk kényelmesebbnek tűnik, másik fontos tulajdonságuk, hogy ezek kereskedelmi, fizetős termékek. Ráadásul nem is a kifejezetten olcsó kategóriából. Ezek a környezetek is biztosítanak bizonyos programozási lehetőségeket pl. az adatelőkészítés területén, legújabban pedig lehetővé teszik az R programozási nyelvhez való kapcsolódást és adatcserét is.

Hogy mi a lényegi különbség ezen megoldások és az R között, az Greg Snow világította meg igazán szemléletesen, amikor összehasonlította az R-t az SPSS-szel [9].

„Amikor a felhasználóbarát szoftverekről van szó, szeretem az autók és a buszok közötti összehasonlítás analógiáját alkalmazni. A buszokat nagyon könnyű használni, csak tudnunk kell, hogy melyik buszra szálljunk, hol szálljunk fel, illetve le (és ki kell fizetnünk a menetjegy árát). Az autók használata több munkát igényel, szükségünk van valamilyen térképre (még akkor is, ha az a fejünkben van), időnként tankolni kell, és ismernünk kell a közlekedési szabályokat (szükségünk van jogosítványra is). Az autó nagy előnye, hogy egy csomó olyan helyre is eljuthatunk vele, ahová a buszok nem járnak, ráadásul gyorsabban, mert nem kell várakoznunk a buszok közötti átszállás miatt.

Ezt az analógiát használva az SPSS és társai buszokhoz, az R pedig egy négykerék-meghajtású (persze környezetbarát) SUV-hoz [10] hasonlítható, melynek hátuljára egy kerékpár van rögzítve, a tetején egy kajak található, az anyósülésen túra- és futócipők, a csomagtartójában pedig hegymászó és barlangász felszerelések vannak.

Az R-rel bárhova eljuthatunk, ha nem sajnáljuk azt az időt, amit a felsorolt eszközök használatának elsajátítása igényel. Ez nyilvánvalóan tovább fog tartani, mint annak megtanulása, hogy hol vannak a buszmegállók.”

Állandó feladatunk az adatok elemzése, hogy előbbre lássunk. Ehhez válasszon járművet, és utazzon mindenki saját komfortzónájának megfelelően. A lényeg, hogy emlékezzünk az idős turisztikai szakember, Lao-ce két és fél évezredes útmutatására [11]:

„… ezer-mérföldes utazás egyetlen lépéssel kezdődik.”

 

Hivatkozások:

  1. http://www.nytimes.com/2009/01/07/technology/business-computing/07program.html
  2. http://www.forbes.com/sites/smcnally/2010/11/10/names-you-need-to-know-in-2011-r-data-analysis-software/#7fe163e3653c
  3. http://www.mckinsey.com/industries/high-tech/our-insights/hal-varian-on-how-the-web-challenges-managers
  4. http://freakonomics.com/2008/02/25/hal-varian-answers-your-questions
  5. http://spectrum.ieee.org/computing/software/the-2015-top-ten-programming-languages
  6. http://www.hep.by/gnu/r-patched/r-faq/R-FAQ_26.html
  7. http://stackoverflow.com/questions/3787231/r-and-spss-difference
  8. https://en.wikipedia.org/wiki/Sport_utility_vehicle
  9. https://hu.wikiquote.org/wiki/Lao-ce

 

Tovább érdeklődőknek:

Az R letöltése:
https://www.r-project.org/

Ismerkedés az R nyelvvel:
https://www.datacamp.com/courses/free-introduction-to-r

http://tryr.codeschool.com/