Svatá válka programátorů má vítěze: mezery vydělají více než tabulátory

Na funkci aplikace nemají neviditelné znaky žádný vliv, ale mezi programátory se už dlouho řeší, zda je lepší používat k odsazení mezerník, nebo tabulátor. Výsledky nového průzkumu StackOverflow znovu rozdmýchaly plameny této programátorské svaté žabomyší války.
„Svatá programátorská válka“ mezi tabulátory a mezerníky

„Svatá programátorská válka“ mezi tabulátory a mezerníky | foto: Pavel Kasík - Technet.cz

„Čím odsazuješ? Mezerou, nebo tabulátorem?“
„Je to jedno. Jak to projde kompilátorem, nezáleží na tom.“
„Technicky vzato nezáleží, ale...“

Jen málokterý profesní spor působí zvenčí tak nesmyslně jako vleklá programátorská válka mezi mezerníky a tabulátory. Do povědomí veřejnosti se dostala především díky roli v seriálu Silicon Valley (HBO). Ještě, než se dostaneme k výsledkům velkého průzkumu mezi programátory, se tedy v rychlosti podívejme, v čem jádro této žabomyší „svaté války“ spočívá.

Ukázka zdrojového kódu bez odsazení (github/Bitcoin)

Vše se točí kolem toho, jakým způsobem programátoři píší tzv. „zdrojový kód“, tedy textový soubor obsahující příkazy pro daný skript nebo aplikaci. Zdrojový kód se poté prožene kompilátorem (případně interpretem) daného programovacího jazyka. Kompilátor přitom obvykle ignoruje prázdná místa - mezery, tabulátory, komentáře. Tato prázdná místa tedy slouží prakticky výhradně k tomu, aby se programátoři snáze orientovali v kódu. Odsazení zleva (tzv. indentation) slouží například k vizuálnímu zvýraznění vnořených funkcí nebo cyklů.

Odsazení pomocí mezer (dodatečně doplněny zelené šipky)
Ukázka kódu s odsazením tabulátory (doplnili jsme zelené šipky)

Odsazení pomocí mezer a tabulátorů (dodatečně doplněny zelené šipky)

Zastánci tabulátorů se ohánějí především tím, že je to rychlejší a jednodušší, není potřeba odpočítávat mezery. Programátoři, kteří odsazují mezerníkem, zase připomínají, že mezera se všem zobrazí stejně, bez ohledu na editor.

Tak, a teď k tomu novému průzkumu, který - zjevně zcela neplánovaně - přinesl do této klasické války novou munici.

Používáte mezerník? Dostáváte více peněz

„Nikdy jsem si nemyslel, že volba mezer, nebo tabulátorů je nějak zvlášť důležitá. Ale nyní zveřejňujeme data týkající se našeho výzkumu programátorů a ukázalo se, že na tom zřejmě záleží více, než jsem čekal,“ uvedl na blogu programátorské komunity StackOverflow datový analytik David Robinson.

Na základě analýzy více než 12 tisíc respondentů, kteří odpověděli na otázku, zda preferují mezerník, či tabulátor, a také na otázku, kolik berou peněz, sestavil Robinson několik grafů. Ty celkem jasně ukazují, že zastánci mezer mají vyšší měsíční výplatu. A to překvapivě bez ohledu na to, jak dlouho programují, v jakém jazyce programují nebo v jakém oboru programují.

Programátoři, kteří k odsazení zleva používají mezery (červená linka), vydělávají významně více, než programátoři, kteří používají tabulátory (zelená) nebo obojí (modrá). Tento rozdíl zůstává zachovaný bez ohledu na roky zkušeností v oboru

Kdykoli se v datech objeví korelace, kterou je těžké vysvětlit, vyplatí se hledat, jakým dalším atributem by mohla být způsobena (tzv. confounding factor, tedy třetí závislá proměnná). Například kdyby bylo používání tabulátorů rozšířenější v zemích, kde programátoři vydělávají méně (všechny mzdy byly přepočítány na dolary), nebo kde jsou platy obecně nižší (např. Indie), snadno by se tak dal rozdíl vysvětlit. Robinson však ukázal, že žádná z proměnných, které v průzkumu měřil, nedokáže tento rozdíl ve mzdách „mezerovníků“ a „tabulátorníků“ vysvětlit.

Rozdíly mezi programátory, kteří preferují mezery, tabulátory nebo nemají preferenci, je víceméně zachován napříč různými zeměmi.

Rozdíl mezi platem vývojářů používajících mezery a těmi, kteří preferují tabulátory, zůstal zachován i u různých programovacích jazyků nebo různých oborů

„Tento jev zůstal patrný u jakékoli podskupiny vývojářů, a to dokonce i když jsem výběr omezil jen na konkrétní zemi nebo konkrétní obor či délku praxe,“ popisuje Robinson.

Na základě regresní analýzy odhadl i velikost tohoto „mezerníkového“ vlivu na mzdu: používání mezerníku indikuje v průměru o 8,6 % vyšší plat. „Řečeno jinak, používání mezerníku je pro programátora asi taková výhoda, jako kdyby měl navíc 2,4 roku zkušeností v oboru.“

Několik programátorů, které jsme oslovili, se k tomuto závěru stavěli pobaveně a skepticky. Skepsi a bouřlivou debatu si analýza vysloužila i na odborných fórech. Svůj účel tedy článek StackOverflow zjevně splnil - mluví se o něm všude.

Ostatně otázka „Tabs or spaces?“ byla zřejmě položena napůl v žertu, jako odpočinek uprostřed průzkumu. Nebylo tak třeba definováno, zda se tím myslí „kterou klávesu mačkáte“ nebo „jaký znak vkládáte“ (některé editory vkládají po stisku tabulátoru přednastavený počet mezer).

Kontroverzní výsledek bez jasného vysvětlení

Hned po publikaci analýzy se programátoři z celého světa ozvali a debata pokračovala na Twitteru i Hacker News několik dnů. Další analytici přispěchali s vylepšenými grafy, například do grafů doplnili intervaly nejistoty.

15.června 2017 v 18:15, příspěvek archivován: 20.června 2017 v 16:05

Salaries of tab-users vs. space-users in @drob 's report are too close to call, so I added bootstrapped conf intervals. Still holds, nice. https://t.co/wbHwa4n6Z9

Jednou z nejlepších hypotéz, které by vysvětlily tento rozdíl, byla ta od Richarda Gaywooda: „Mám podezření, že menší množství velkých firem, které vyplácejí velké mzdy, vyžaduje od svých programátorů používání mezer, což ovlivnilo průměrné mzdy v dotazníku.“ Ovšem Robinson ukázal, že rozdíl zůstal zachován, i když vzal v potaz velikost firmy, pro kterou respondent pracuje.

16.června 2017 v 01:23, příspěvek archivován: 20.června 2017 v 16:12

If a few large, space-mandating companies skewed the results, the tabs/space difference would be larger in big companies. But it isn't: https://t.co/5kJV1NpjPx

Sám Robinson nicméně připomíná klasickou poučku, že korelace není kauzalita. „Nikdy si nemůžeme být jistí, že jsme vzali v úvahu všechny závislé proměnné, které by mohly tento rozdíl vysvětlit,“ uvedl Robinson, který proto vyzývá další datové analytiky, aby si stáhli surová data průzkumu a pomohli jeho analýzu reprodukovat.

Češi v průzkumu

Pro zajímavost: průzkumu se zúčastnilo i 411 Čechů. Rozdělení mezi nimi bylo vyrovnané: 31 % preferovalo tabulátory, 30 % mezery, 17 % obojí a zbývající na otázku neodpověděli. Jde o příliš malou podskupinu na to, abychom z ní vyvozovali další závěry.

Podobné průzkumy, které nejsou zaměřeny na konkrétní otázku, ale namísto toho sbírají velké množství rozmanitých dat, nejsou ideální k hledání odpovědí na konkrétní otázku. Mohou ale naznačit oblast, která si zaslouží další výzkum. V redakci jsme si data také stáhli a spekulovali jsme, že rozdíl je možná částečně způsoben tím, že mezerníky používají k odsazování programátoři, kteří jsou zvyklí pracovat v rozmanitém týmu (mezery se zobrazí všem stejně, u tabulátorů to jisté není). To by mohla být vlastnost, která je užitečná pro spolupráci, a schopnost spolupráce by mohla být lépe finančně ohodnocena.

Může za vyšší mzdy open-source?

Letošní průzkum StackOverflow vyprovokoval k analýze „těžko uvěřitelných“ dat řadu dalších analytiků, mezi nimi i Evelinu Gabasovou. Ta replikovala Robinsonovu regresní analýzu a dále na ni navázala: „Použila jsem dva ANOVA regresní modely, abych zjistila, jak dobře dokáží předpovědět výši platu.“

  • Jeden z modelů bral v potaz všechny možné proměnné: zemi původu, roky zkušeností, používání tabů nebo mezerníků, programovací jazyk, dosaženou úroveň vzdělání, zda přispívají do open-source projektů, zda programují pro zábavu či profesionálně, velikost firmy, pro kterou pracují.
  • Druhý - redukovaný - model zahrnoval všechny tyto proměnné, tedy kromě jediné: právě oněch diskutovaných tabulátorů/mezerníků

Oba modely dokázaly předpovědět (vysvětlit) plat programátora přibližně stejně. To podle Gabasové znamená, že údaj o tom, zda programátor používá tabulátory nebo mezerníky, nenese sám o sobě mnoho informací o tom, kolik dolarů najde daný programátor na výplatní pásce (Gabasová se ve své analýze zaměřila pouze na podskupinu amerických programátorů).

Další analýza ji přivedla k tomu, že lepším prediktorem vyššího platu bylo to, zda programátor uvedl, že se aktivně podílí na nějakém open-source projektu. „Ukázalo se, že lidé, kteří přispívají do open-source, používají mnohem častěji mezery. Ve skupině, která do open-source nepřispívá, byly mezery a tabulátory zastoupeny přibližně stejně.“

Vývojáři, kteří přispívají do open-source projektů, častěji používají mezery (vzorek: svět)

To může podle Gabasové přispět k vysvětlení zdánlivě nepochopitelného rozdílu v platech: „Podle mojí teorie se lidé, když pracují na projektu, který nemá jednotně daný styl formátování, častěji shodnou na mezerách, protože je to pro všechny konzistentnější.“

A proč že více vydělávají přispěvatelé do open-source? To není jisté, jedním z vysvětlení může být, že ti, kteří vydělávají více peněz, mají více času. Fungovat by to ale mohlo i opačně - vývojáři, kteří mají více zkušeností z open-source projektů, mohou být nadšenější, schopnější, flexibilnější atd.

Gabasová pak analyzovala i další aspekty, které už se netýkají mezer/tabulátorů, mimo jiné narazila i na ochotu/neochotu programátorů sdělovat svůj plat, což samozřejmě nadále ovlivňuje použitelnost dat pro takovouto analýzu.

20.června 2017 v 16:14, příspěvek archivován: 20.června 2017 v 21:23

My conclusions: it's more about your whole environment and how modern or old-school your company is, rather than if you use tabs and spaces https://t.co/5r5aNk9THr

Každopádně na všechny, kdo se rádi rochní v datech, čeká téměř 90MB CSV soubor na stránkách StackOverflow. Celkem obsahuje 154 sloupců a data od 51 392 respondentů, takže se v něm jistě skrývají i zajímavější témata, než je onen údajný (a vzápětí zpochybněný) vliv mezer a tabulátorů.

A pro programátory snad nemusíme dodávat, že pokud preferujete tabulátory, samotné přepnutí na mezery vám magicky dva a půl roku zkušeností v oboru nepřidá.

Při programování pro odsazení zleva používám:

celkem hlasů: 1964
Hlasování skončiloČtenáři hlasovali do 0:00 středa 28. června 2017. Anketa je uzavřena.
Vstoupit do diskuse (140 příspěvků)

Astronauti možná obléknou robotické kalhoty s nafukovacími svaly

Nejčtenější

Spitfire slaví 90 let. Víte, proč měl žlutě natřené náběžné hrany křídel?

Spitfire Mk I P9374

Spitfire, podle mnohých nejslavnější a nejkrásnější stíhací letoun všech dob, se poprvé vznesl do vzduchu ve své první podobě v březnu 1936. Stroj se nesmazatelně zapsal i do dějin československého...

Tento počítač vám nesmí prodat, jen na chvilku půjčit. Je příliš nebezpečný

IBM Quantum System Two

Barcelona (od zpravodaje Technet.cz) Kvůli bezpečnosti jej nikomu nesmí prodat a proto výrobce svým klientům pouze prodává jeho procesorový čas – po desetiminutových balíčcích. A ani ti k němu nesmí přistoupit napřímo, ale jen přes...

Největší elektrické letadlo na světě s vertikálním vzletem poprvé letělo

Jmenuje se V 5000 Matrix a je patrně největší eVTOL, který se odlepil od země a...

Jmenuje se V 5000 Matrix a je patrně největší eVTOL, který se odlepil od země a letěl. Jeho výrobce AutoFlight na tomto pětitunovém stroji rovnou vyzkoušel přechod z vertikálního vzletu na...

KVÍZ: Poznáte lokomotivu podle detailu? Je to jednodušší, než čekáte

Motorová lokomotiva zvaná Brejlovec

Mnohé lokomotivy ČSD a ČD mají natolik charakteristický vzhled, že je poznáte i na fotografiích nezabírající je v celé jejich kráse. Ale i méně známý typ poznáte od jiného, když se zaměříte na...

Spíše než velikost proslavila Hindenburg jeho zkáza. Vzlétl před 90 lety

Původně měl být stroj plněný heliem, to však vyráběly pouze Spojené státy a...

Počátek března před 90 lety vedle sebe staví dvě letecké legendy. Již jsme si připomněli první let stíhačky Spitfire. Jen den před ním – 4. března 1936 – se poprvé vznesla vzducholoď LZ-129...

My jsme jej vidět nemohli, ale krvavý Měsíc ohromil miliony lidí

Měsíce viditelný poblíž Transamerica Pyramid v San Franciscu v okamžiku, kdy...

V úterý krátce po poledni středoevropského času byl Měsíc v úplňku a zároveň tento den vstoupil do stínu Země, a prošel tak úplným zatměním. Z našich zeměpisných délek jsme ho tak nemohli vidět, ale...

8. března 2026

Nedostatek garáží bránil podle novin před 100 lety rozvoji automobilismu

Aerovky

Zatímco ceny automobilů v polovině 20. let 20. století postupně klesaly, jiný problém trápil motoristy stále víc. Podle Národních listů z roku 1926 brzdily rozvoj automobilismu především drahé a...

7. března 2026

Svět se zbláznil. Pes vám může zatelefonovat, vy s ním koukat po fenách

GlocalMe PetCam/PetPhone

Barcelona (Od zpravodaje Technet.cz) Ochota lidí utrácet za své chlupaté mazlíčky je bezbřehá, takže se nelze divit, že výrobci zkusí vymyslet doslova cokoli – a doufají, že se z toho stane hit. Například duo PetPhone a PetCam, za...

7. března 2026

Lidské mozkové buňky ve zkumavce se naučily hrát Doom. Bylo jich 200 tisíc

Doom (1993)

Australská firma Cortical Labs vyvíjí počítač využívající místo křemíku lidské neurony. Má pro něj programovací rozhraní. Jeho prostřednictvím neurony zvládly slavnou počítačovou řežbu z devadesátých...

6. března 2026  10:32,  aktualizováno  10:32

Čínští robotí tanečníci: technická revoluce, nebo jen dobře sestříhané video?

Rozstřel
Hostem pořadu Rozstřel je Václav Hlaváč, odborník na robotiku a strojové učení...

Humanoidní roboti z Číny tančí synchronně, zvládají bojové prvky a na videích působí až nepřirozeně „bezchybně“. Je to přelom, nebo jen chytrý střih? „Není to propagační video, je to velký pokrok,“...

6. března 2026

Spíše než velikost proslavila Hindenburg jeho zkáza. Vzlétl před 90 lety

Původně měl být stroj plněný heliem, to však vyráběly pouze Spojené státy a...

Počátek března před 90 lety vedle sebe staví dvě letecké legendy. Již jsme si připomněli první let stíhačky Spitfire. Jen den před ním – 4. března 1936 – se poprvé vznesla vzducholoď LZ-129...

6. března 2026

Miniaturní špióni se blíží. Vyhrají jejich lákadla, nebo naše soukromí?

Project Maxwell od Motoroly

Barcelona (Od zpravodaje Technet.cz) Miniaturní výkonné čipy s AI otevírají dvířka zajímavému, ale trochu děsivému konceptu: vnímavým AI společníkům. Máte je stále na sobě a jejich mikrofony a kamera jsou neustále připraveny vnímat...

6. března 2026

Oživlý Labubu zaujme, životy nám ale promění jiné trendy

ZTE iMoochi na MWC 2026

Barcelona (Od zpravodaje Technet.iDNES.cz) Veletrh Mobile World Congress nejsou jen telefony a nositelná elektronika. Jsou to především důležité technologie na pozadí, které sice na sociálních sítích nezáří, ale bez kterých by nefungoval ani...

5. března 2026  11:33

Ani napotřetí to nevyšlo. Pokus o vyslání rakety Kairos skončil výbuchem

Třetí start kosmické rakety Kairos, který skončil neůspěchem.

Říká se do třetice všeho dobrého, ale toto pořekadlo se bohužel nenaplnilo japonské společnosti Space One, která se snaží dostat do vesmírného prostoru svůj nosič. Ani třetí pokus o vyslání rakety...

5. března 2026  8:39

Přesně před 45 lety se objevil předchůdce slavného „gumáka“ Sinclair ZX81

Typická sestava spojená s počítačem ZX81

Bylo to 5. března 1981, kdy Clive Sinclare představil svůj nový domácí počítač nazvaný jednoduše ZX81. Byl to nástupce stroje z předchozího roku ZX80. Byl tak úspěšný, že se jej prodalo přibližně 1,5...

5. března 2026

Akční letáky
Akční letáky

Všechny akční letáky na jednom místě!

Před 100 lety otřásl Prahou výbuch. Z vojáků zbyla jen hromádka masa a hadrů

Před 100 lety otřásl Prahou výbuch. Z vojáků zbyla jen hromádka masa a hadrů

Pražská Truhlářská ulice se 5. března 1926 během okamžiku proměnila v místo zkázy. Exploze vozu převážejícího stovky ručních granátů zabila oba vojáky doprovázející transport a zranila desítky lidí....

5. března 2026

Apple přestal ohrnovat nos nad spořivými lidmi a přichází s levným MacBookem

Nový levný notebook Apple MacBook Neo

Společnost Apple, která se doposud prezentovala jako prémiová značka, začíná obracet svůj pohled na zákazníky, kteří nechtějí zbytečně utrácet. To může být důvod, proč nyní přichází s novým...

4. března 2026  16:10
Nastavte si velikost písma, podle vašich preferencí.