NodeXL: Programovací jazyky Ruby a C++ očima Twitter diskuzí

Členové projektu

Zuzana Dostálová, Studia nových médií, e-mail: dostalovaz@gmail.com

Popis projektu

Cíl této práce je porovnat programovací jazyky Ruby a C++ tak, jak jsou v současnosti probírané na sociálních sítích, konkrétně na Twitteru. Pro svou analýzu jsem si vybrala nástroj NodeXL - volně dostupný doplňěk pro Excel, který importuje data přímo z různých sociálních sítí a zpracovává na jejich základě vizualizace sociálních sítí.

Mou hypotézou byla domněnka, že moderní jazyk, jako je Ruby, bude mít odlišný diskurz, než jazyk více tradiční a také podstatně více nízkoúrovňový jako je C++. Ruby vzniklo v roce 1995 (ruby-lang.org) ale široké a globální pozornosti veřejnosti se mu dostalo až s příchodem Ruby on Rails, frameworku pro dělání webových aplikací, v roce 2003. Jedná se o jazyk s jednoduchou syntaxí, který je přístupný začátečníkům. C++ je oproti tomu jazyk s dlouhou (přes 30 let) historií a širokým polem působnosti, který je však mnohem obtížnější na naučení. V programovací komunitě je považován za mnohem spolehlivější a výkonější, kdežto Ruby je někdy vnímáno až hanlivě, viz. například výňatek ze slavného blogpostu Bjorna Tiplinga:

NodeXL C++.png NodeXL Ruby.png

Obrázek č. 1 Ruby versus C++ (http://bjorn.tipling.com/)

Analýzu jsem prováděla na full-text vyhledávání pojmů "ruby programming" a "c++ programming". Po vygenerování socilní sítě jsem se zaměřila na její tvar, obsah diskuzí ve formě nejčastěji používaných slov a tzv. hashtagů a na nejvýznamnější účatsníky diskuzí. Pracovala jsem s 2000 tweetu pro obě téma z doby za poslední týden (Twitter uplatňuje své vlastní omezení a není bohužel možné pracovat se staršími daty (dev.twitter.com)).

Dle výzkumů spoluautorů NodeXL Marca Smitha, Lee Rainee, Bena Shneidermana a Itai Himelboim se dají Twitter sociální sitě kategorizovat do 6 hlavních skupin dle jejich tvaru. Jedná se o “divided, unified, fragmented, clustered, and inward and outward hub and spoke” (Smith 2014), volně přeloženo jako polarizované, sjednocené, fragmentované, shlukované, směřující ven a směřující dovnitř.

NodeXL typy siti.png

Obrázek 2. Typy sítí sociálních médií (Smith 2014

Jelikož jsem neanalyzovala konkrétní termín, ale více obecný, vztahující se k celému jazyku, očekávála jsem fragmentovanou síť, která znamená, že lidé se lidé o tématu zmiňují, ale nerozebírají ho mezi sebou. Výkřiky typu “Začala jsem se učit #Ruby” jsou typickým příkladem neadresného tweetu, který daný termín jen zmiňuje izolovaně.

Zde jsou výsledné sítě Twitter diskurzů pro jednotlivé jazyky:

NodeXL Twitter C++.png

Obrázek 4. Sociální síť Twitteru pro dotaz "C++ programming"

NodeXL Twitter Ruby.png

Obrázek 5. Sociální síť Twitteru pro dotaz "Ruby programming"

Na první pohled je zřejmé, že jsou si diagramy nápaditě podobné. Oba případy se vyznačují dominantním množstvím izolovaných jedinců, jak bylo popsáno výše a jak bylo očekáváno. Nicméně je nutné prozkoumat výsledky podrobněji, v tabulce 1. jsou hodnoty tzv. “graph density”, což je ukazatel hustoty sítě. Formálněji pak:

"Network density is a general indicator of how connected people are in a network. Network density is the proportion of links in a network relative to the total number of links possible”"(Social Network Analysis).

Ruby programming C++ programming
Hustota sítě 0,00106595461370655 0,000641017490771467

Tabulka 1. hustota sítě

Čím vyšší číslo, tím více lidí je v síti propojených, neboli vedou mezi s sebou více konverazci (tím, že v tweetech zmiňují své jména a odpovídají si). Ruby si v tomto ohledu vede o poznání lépe. Síť pro dotaz "Ruby programming" také vykazuje vícero skupin, charakterizovaných jako "unified" - např. tři skupiny v horním pravém quadrantu. Druhá siť oproti tomu vykazuje vícero skupin typu "in-hub and spoke", což v praxi znamená že jedna významná osobnost o tématu mluví a ostatní jí poslouchají a retweeatují, mezi sebou se ale nebaví.

Analýza také odhalila nejpoužívanější slova ve spojení s danými jazyky. Pro Ruby to byla slova jako "programming", "ruby", "python", "javascript", "languages", "php", "java" a "c". V rámci skupin pak se pak také opakoavalo "beginners" a "yukihiro matz" (pozn. autor jazyka Ruby). Pro C++ byly slova: "c", "programming", "gamedev", "language", "web", "freelance", "right", "art" a v rámci skupin pak také "assembly" a "game". Z toho plyne překvapivé zjištění a to že Ruby je nejčastěji spojováno s jinými programovacími jazykami, kdežto C++ se pojí s různorodými termíny.

Jako poslední jsem se dívala na významené osobnosti v těchto diskurzech a také na to, jak se jejich jména objevovala v častých slovech nebo hashtazích. Již zmíněný Yukihiro Matz je na seznamu nejvlivnějších aktérů pro Ruby, kdežto C++ zde žádnou významnou osobu (např, hlavního contributora, autora apod.) nemá.

Celkově z těchto výsledků mohu posoudit, že Ruby jako jazyk se projevuje více komunitně. Sociální síť diskurzu jazyka na Twitteru je sicee převážně tvořená jednotlivci, nicméně objevují se zde i komunitní vzorce, kde lidé téma probírají. Jedním ze středů těchto debat je pak i samotný autor. Jazyk je často zmiňován v kombinaci s jinými jazyky, či o něm mluví twitter účty jako např.: @retweetjava, což naznačuje že je komunita otevřená a že programátoři z jiného prostředí se na Ruby ptají či ho jinak řeší. Možná za to může i fakt, že je to jazyk přivětivý k nováčkům a jak bylo zmíněno i v diskuzích, jednoduchý.

C++ oproti tomu vykazuje mnohem zřetelněji tzv. "Broadcast pattern" (Smith 2014), kdy jeden mluví a ostatní jen retweetují. Je to ale téma obecně více probírané (870 unikátních vztahů oproti 783 na stejném počtu prozkoumaných tweetu) a vícero lidí o něm mluví aniž by se jinak zapojila do sociální sítě. Je spojován s termíny jako např. "gamedev" či "game" což naznačuje jeho využití v oblasti, kde je důležitý výkon a spolehlivost (počítačové hry), obecně je ale spojován s různými termíny, nerozpoznala jsem zde žádný jasně viditelný vzorec, jako to bylo u Ruby. Jelikož se jedná o jazyk, který má v pověsti horší přístupnost a učící křivku, je možné že díky těmto vlastnostem také není tolik otevřený v debatách na Twitteru. Nováčci ho nevyhledávájí a programátoři jiných jazyků o něm necítí potřebu tolik mluvit či se ho začít učit.

Na druhou stranu, je to také jazyk používaný mnohonásobně více než Ruby (ať už kůli jeho historii či užitečnosti). Mohu se ale jen domnívat, že programátoři daného jazyka, ať už C++ či Ruby, budou při svých debatách spíše označovat konkrétní témata, nikoliv obecné pojmy jako "Ruby". Toto téma je ale spíše návrhem na další možný sociální vyzkum, který by otázku pomohl osvětlit.


Zdroje

  1. Položka číslovaného seznamu

SMITH, Marc a . Mapping Twitter Topic Networks: From Polarized Crowds to Community Clusters. Pew Internet [online]. 2014 [cit. 2015-10-03]. Dostupné z: http://www.pewinternet.org/2014/02/20/mapping-twitter-topic-networks-from-polarized-crowds-to-community-clus

  1. Položka číslovaného seznamu

"Social Network Analysis". Field Manual 3-24: Counterinsurgency (PDF). Headquarters, Department of the Army. pp. B–11 – B–12.

  1. Položka číslovaného seznamu

TIPLING, Bjorn. If programming languages were weapons [online]. [cit. 2015-10-03]. Dostupné z: http://bjorn.tipling.com/if-programming-languages-were-weapons

  1. Položka číslovaného seznamu

The Search Api. Twitter [online]. [cit. 2015-10-03]. Dostupné z: https://dev.twitter.com/rest/public/search