Spaces vs Tabs: en 20 — årig debat genoptaget af Googles Golang

nørder har valgt sider i de sidste 16 år-skal programmører indrykke deres kode ved hjælp af mellemrum eller faner? Men nu har den berygtede trivielle flammekrig fået en ny fremtrædende plads ved en undersøgelse fra Google — muligvis inspireret af dialogen i en nylig episode af HBO ‘ s Silicon Valley.

“for at være ærlig, Jeg har en lille præference for faner. Men det er kun fordi jeg er anal, og fordi jeg foretrækker præcision.”

” nå, ikke for at vælge en kamp her, men hvis du virkelig bryr dig om præcision, ville du ikke bruge mellemrum? Men uanset hvad, når det går gennem kompilatoren, er det det samme, ikke…?”

” hvis det er det samme, hvorfor ikke bare bruge faner?”

“fordi det kunne se anderledes ud på andres computere.”

” faner skaber mindre filstørrelser, okay…? Jeg mener, hvorfor ikke bare bruge Vim over Emacs?”

“jeg bruger Vim over Emacs.”

” Åh, Gud hjælpe os!”

endelig i år — lige før Labor Day — besluttede Googles udvikleradvokat at veje ind. “Vi vil analysere en milliard filer blandt 14 programmeringssprog for at beslutte, hvilken der er på toppen.”De knuste filer fra de 400.000 GitHub-arkiver og så kun på filer med kode skrevet på de øverste sprog — og deres Diagram viste, at mellemrum var langt den mest populære metode til indrykning på alle sprog. Undtagen Go og C.

“bekræftet, Go er fremtidens sprog,” spøgte en kommentator på Reddit.

“det formaterer også automatisk din kildekode,” modvirkede en anden programmør. “Jeg bruger mellemrum, og det spytter ud faner!”

og på kvidre spøgte en udvikler, at essayet kun havde skabt en anden kontrovers. “Den nye diskussion er nu” hvad fanden er der galt med Go?'”

mindst en canadisk ingeniør bifalder den indsats, som Google har lagt i at løse spørgsmålet.

https://t.co/wuMz1gLwXT det er sådan du afregner am argument: data.

— Ian Fosbery September 8, 2016

men i sidste ende undlod Google at bringe fred til udviklerverdenen.

for at være klar: alle dem, der bruger mellemrum i stedet for faner til indrykning, er uopretteligt forkerte.
lad mig se din kode på den måde, jeg kan lide.
periode.

— Jeg elsker Castillo (@ibc_t) September 14, 2016

da nogen henviste Castillo til Googles analyse, tilføjede han simpelthen “det vidste jeg. Og ja, de er alle 100% forkerte.”

“hvad er dette vanvid,” skrev cloud engineer Ed Morgan.

” Madness alle ved faner er bedre!”svarede En London-baseret NetApp-vedligeholder.

” dette er ulækkert, ” skrev en freelance designer i Storbritannien

og det sluttede ikke der. Googles indlæg gik snart viralt, tegner 1,620 kommentarer på Reddit, og også dukker op på Dimmodo, Slashdot og Hacker nyheder. “Efter 20 + år med at lytte til tabs-vs-spaces-debatten og overveje alle de legitime punkter, som begge sider har, har mange gjort følgende observation, og det er det, der resonerer mest med mig,” skrev en programmør på Hackernyheder.

“i en ideel perfekt verden ville _all_ af programmører og _all_ tekstredigeringsværktøjer bruge faner specifikt til indrykning og mellemrum specifikt til justering. Men vi lever ikke i den perfekt koordinerede verden, så spaces opretholder den mest troskab — på bekostning af programmører, der ikke er i stand til øjeblikkeligt at tilpasse indrykket fra bredder på 2,4,6,8.”

har nørder virkelig kranglet om dette i 20+ år? Det ser sådan ud. Det blev allerede beskrevet som et” uendeligt argument ” af Jamie, en af koderne på den tidlige Netscape Navigator bro.ser — tilbage i 2000. Hans indlæg forklarede, hvordan man konfigurerer to tekstredaktører (Emacs og vi) til at ændre fanerne til forskellige bredder. (“Så gå ud og untabify!”)

glædeligt rullede vi sammen, og i 2004 tog et indlæg på Microsoft Developer-netværket det samme problem op og bemærkede, at nogle mennesker kombinerer mellemrum og faner og argumenterede for, at de faktisk har sat en fjerde position: kodningsværktøjer skal konfigureres til at vise hver brugers foretrukne visning, mens du gemmer kode i overensstemmelse med et aftalt regelsæt. Men ikke alle var så fordomsfri. I 2009 skrev Jeff, en af medstifterne af Stack overløb, et blogindlæg kaldet Death to the Space Infidels!. Han lobbyer for sin stilling ved at citere den elskede 1984-bog Code Complete.

” vores studier understøtter påstanden om, at viden om programmeringsplaner og regler for programmeringsdiskurs kan have en betydelig indflydelse på programforståelsen… det er ikke kun et spørgsmål om æstetik, at programmer skal skrives i en bestemt stil… programmører har stærke forventninger om, at andre programmører vil følge disse diskursregler. Hvis reglerne overtrædes, annulleres det værktøj, der ydes af de forventninger, som programmører har opbygget over tid, effektivt.”

og atved citerer flere eksperimenter — en fra begyndelsen af 1970 ‘ erne — som fandt ud af, at information bevares bedre, når den er arrangeret i en meningsfuld rækkefølge. “Så ja,” konkluderer han, ” absurd som det måske lyder, at kæmpe om hvide tegn og andre tilsyneladende trivielle problemer med kodelayout er faktisk berettiget. Inden for grund selvfølgelig – når det gøres åbent, på en retfærdig og konsensusopbyggende måde, og uden at stikke dine holdkammerater i ansigtet undervejs.”

fire år senere dukkede spørgsmålet op i hjertet af geek nation — i en diskussion om stakoverløb.

“mellemrum” lyder et argument. “En fane kan være et andet antal kolonner afhængigt af dit miljø, men et mellemrum er altid en kolonne.”

” faner ” læser modargumentet. “De er en karakter, der specifikt er beregnet til indrykning. De tillader udviklere med forskellige præferencer i indrykningsstørrelse at ændre, hvordan koden ser ud uden at ændre koden”

så der!

Silicon Valley - spaces vs tabs

men fanerne del af siden i sidste ende slår en forsonende note. “Selvfølgelig betyder konsistens mere end en, og en god IDE gør forskellene ubetydelige.”Men hvorfor ødelægge et godt argument? “Når det er sagt, er pointen med denne tråd at være en hellig krig, så…”

og Jeff selv synes at være enig — til et punkt. Tilbage i 2009 skrev han “det betyder faktisk ikke noget, hvilke kodningsstile du vælger. Det, der betyder noget, er, at du og alle andre på dit team holder fast ved disse konventioner og bruger dem konsekvent.”Men han kunne ikke modstå at tilføje endnu en sætning.

” når det er sagt, ville kun en moron bruge faner til at formatere deres kode.”

  • Stanford-forskere bygger en måde at skrive uden hænder ved at læse hjernesignaler.
  • NASA deler nogle spektakulære billeder fra Mars.
  • Amerika udnævner sin første føderale chef for informationssikkerhed.
  • ønsker at invadere dit nabolag indkøbscenter — og dit hjem!
  • Raspberry Pi fejrer sit 10 millioner salg.
  • John le Carre udgiver endelig historien om sit eget begivenhedsrige liv.
  • Yuval Noah Harari ‘ s “kort historie om menneskeheden” fulgte op med en spekulativ morgendagens historie.
  • Nicholas Carr ser på den verden, vi har skabt, og skriver “Utopia er uhyggelig.”
    på sin blog spørger Carr, kan vi anvende mediefirmastandarder på Facebook?
  • husker Steve Jobs “Courage” — tale-som nogle Reddit-brugere håner den nye iPhones trådløse hovedtelefonopsætning.