spații vs. file: o dezbatere de 20 de ani reaprinsă de Golang de la Google

Geeks au ales părțile în ultimii 16 ani – ar trebui programatorii să-și indenteze codul folosind spații sau File? Dar acum, infamul banal flame war a primit o nouă proeminență printr — un studiu de la Google-posibil inspirat de dialogul dintr-un episod recent al Silicon Valley al HBO.

„adevărul trebuie spus, Am o ușoară preferință pentru File. Dar asta doar pentru că sunt anal și pentru că prefer precizia.”

” Ei bine, nu pentru a alege o luptă aici, dar dacă vă pasă cu adevărat de precizie, nu ați folosi spații? Dar orice, odată ce trece prin compilator, este același lucru, nu…?”

” dacă este la fel, de ce nu folosiți doar file?”

” pentru că ar putea arăta diferit pe computerele altor persoane.”

” filele creează dimensiuni mai mici de Fișiere, bine…? Adică, de ce nu folosiți Vim peste Emacs?”

„eu folosesc Vim peste Emacs.”

” O, Doamne ajută-ne!”

în sfârșit anul acesta – chiar înainte de weekendul Zilei Muncii-avocatul dezvoltatorului Google a decis să cântărească. „Vom analiza un miliard de fișiere între 14 limbaje de programare pentru a decide care dintre ele este în top.”Au analizat fișierele din primele 400.000 de depozite GitHub, analizând doar fișierele de cod scrise în limbile de top — iar graficul lor a arătat că spațiile erau de departe cea mai populară metodă de indentare, în fiecare limbă. Cu excepția Go și C.

„confirmat, Go este limba viitorului”, a glumit un comentator pe Reddit.

„de asemenea, vă formatează automat codul sursă”, a contracarat un alt programator. „Eu folosesc spații, și scuipă file!”

și pe Twitter, un dezvoltator a glumit că eseul a creat doar o altă controversă. „Noua discuție este acum” ce naiba este în neregulă cu Go?”

cel puțin un inginer Canadian a aplaudat efortul pe care Google l-a depus pentru a rezolva problema.

https://t.co/wuMz1gLwXT acesta este modul în care soluționați argumentul am: date.

— Ian Fosbery (@MisterZia) septembrie 8, 2016

dar, în cele din urmă, Google nu a reușit să aducă pace în lumea dezvoltatorilor.

pentru a fi clar: toți cei care folosesc spații în loc de file pentru indentare sunt iremediabil greșiți.
Lasă-mă să-ți văd codul așa cum îmi place.
perioadă.

— i Inktokaki Baz Castillo (@ibc_tw) septembrie 14, 2016

când cineva l-a referit pe Castillo la analiza Google, el a adăugat pur și simplu „știam asta. Și da, toate sunt 100% greșite.”

„ce este această nebunie”, a scris pe Twitter inginerul cloud Ed Morgan.

„nebunie toată lumea știe că filele sunt mai bune!”a răspuns Un întreținător NetApp din Londra.

„acest lucru este dezgustător”, a scris pe Twitter un designer web independent din Marea Britanie

și nu s-a încheiat aici. Postarea Google a devenit în curând virală, atrăgând 1.620 de comentarii pe Reddit și, de asemenea, apărând Gizmodo, Slashdot și Hacker News. „După peste 20 de ani de ascultare a dezbaterii tabs-vs-spaces și luând în considerare toate punctele legitime pe care le au ambele părți, mulți au făcut următoarea observație și este ceea ce rezonează cel mai mult cu mine”, a scris un programator pe Hacker News.

„într-o lume perfectă ideală, _all_ de programatori și _all_ instrumente editor de text ar folosi file special pentru indentare și spații special pentru aliniere. Dar, nu trăim în acea lume perfect coordonată, astfel încât spaces menține cea mai mare fidelitate — în detrimentul programatorilor care nu pot personaliza instantaneu indentarea de la lățimi de 2,4,6,8.”

s-au certat geeks cu adevărat despre asta de peste 20 de ani? Așa se pare. Era deja descris ca un „argument interminabil” de Jamie Zawinski, unul dintre programatorii de la începutul Netscape Navigator browser — înapoi în 2000. Postarea sa a explicat cum să configurați doi editori de text Linux (Emacs și Vi) pentru a schimba filele la diferite lățimi. „Duceți-vă și desfaceți-vă!”)

Vesel ne-am rostogolit de-a lungul, și în 2004, un post pe Microsoft Developer Network a preluat aceeași problemă, menționând că unii oameni combină spații și File, și argumentând că le-am mizat de fapt, o poziție a patra: instrumente de codificare ar trebui să fie configurabile pentru a afișa vizualizarea preferată a fiecărui utilizator, în timp ce salvarea cod în conformitate cu un set convenit de reguli. Dar nu toată lumea era atât de deschisă. În 2009, Jeff Atwood, unul dintre co-fondatorii Stack Overflow, a scris o postare pe blog numită Death to The Space Infidels!. El face lobby pentru poziția sa citând iubitul cod de carte din 1984 complet.

„studiile noastre susțin afirmația că cunoașterea planurilor de programare și a regulilor discursului de programare pot avea un impact semnificativ asupra înțelegerii programului… nu este doar o chestiune de estetică ca programele să fie scrise într-un anumit stil… programatorii au așteptări puternice ca alți programatori să urmeze aceste reguli de discurs. Dacă regulile sunt încălcate, atunci utilitatea oferită de așteptările pe care programatorii le-au construit în timp este efectiv anulată.”

și Atwood citează mai multe experimente — unul de la începutul anilor 1970 — care au constatat că informațiile sunt păstrate mai bine atunci când sunt aranjate într-o ordine semnificativă. „Deci, da”, concluzionează Atwood, ” oricât de absurd ar părea, Lupta pentru caracterele spațiului alb și alte probleme aparent banale ale aspectului codului este de fapt justificată. Desigur, în mod rezonabil — atunci când este făcut în mod deschis, într-un mod corect și de construire a consensului și fără a-ți înjunghia coechipierii în față pe parcurs.”

patru ani mai târziu, întrebarea a apărut în inima națiunii geek — într-o discuție despre depășirea stivei.

„spații”, citește un argument. „O filă ar putea fi un număr diferit de coloane în funcție de mediul dvs., dar un spațiu este întotdeauna o coloană.”

” file”, citește argumentul contra. „Sunt un personaj special conceput pentru indentare. Acestea permit dezvoltatorilor cu preferințe diferite în dimensiunea indentării să schimbe modul în care arată codul fără a schimba codul”

Deci, acolo!

Silicon Valley - spații vs file

dar partea file a paginii lovește în cele din urmă o notă conciliantă. „Desigur, coerența contează mai mult decât oricare dintre ele, iar un IDE bun face ca diferențele să fie neglijabile.”Dar de ce strica un argument bun? „Acestea fiind spuse, scopul acestui subiect este să fie un război sfânt, așa că …”

și Jeff Atwood însuși pare să fie de acord — la un punct. În 2009, el a scris „Nu contează de fapt ce stiluri de codificare alegeți. Ceea ce contează este că tu și toți ceilalți din echipa ta respectați aceste convenții și le folosiți în mod consecvent.”Dar nu a putut rezista să adauge încă o propoziție.

„acestea fiind spuse, doar un idiot ar folosi File pentru a-și formata codul.”

  • oamenii de știință de la Stanford construiesc o modalitate de a tasta fără mâini citind semnalele creierului.
  • NASA împărtășește câteva imagini spectaculoase de pe Marte.
  • America își numește primul șef Federal de securitate a informațiilor.
  • Amazon vrea să invadeze mall – ul dvs. de cartier-și casa ta!
  • Raspberry Pi sărbătorește 10 milioane de vânzări.
  • John Le Carre publică în sfârșit povestea propriei sale vieți pline de evenimente.
  • „scurta istorie a omenirii” a lui Yuval Noah Harari a urmat cu o istorie speculativă a zilei de mâine.
  • Nicholas Carr se uită la lumea pe care am făcut-o și scrie „Utopia este înfiorătoare.”
    pe blogul său, Carr întreabă putem aplica standardele companiei media pe Facebook?
  • amintindu — ne de discursul „curaj” al lui Steve Jobs-în timp ce unii utilizatori Reddit batjocoresc configurarea căștilor numai fără fir a noului iPhone.