Spaces vs. Tabs: 20 — letnia debata ponownie zainspirowana przez Golanga Google
maniacy wybierają strony w ciągu ostatnich 16 lat-czy programiści powinni wciąć swój kod za pomocą spacji lub kart? Ale teraz niesławnie trywialna wojna płomienia zyskała nowe znaczenie dzięki badaniu z Google-być może zainspirowanym dialogiem w ostatnim odcinku Doliny Krzemowej HBO.
„prawdę mówiąc, mam niewielkie preferencje dla zakładek. Ale to tylko dlatego, że jestem anal i dlatego, że wolę precyzję.”
” cóż, nie chcę się tu kłócić, ale jeśli naprawdę zależy ci na precyzji, nie użyłbyś spacji? Ale nieważne, gdy przejdzie przez kompilator, to jest to samo, prawda…?”
” jeśli wszystko jest takie samo, dlaczego nie używać tylko kart?”
” bo może wyglądać inaczej na komputerach innych ludzi.”
” zakładki tworzą mniejsze rozmiary plików, w porządku…? Dlaczego nie używać Vima zamiast Emacsa?”
” używam Vima zamiast Emacsa.”
„Boże dopomóż!”
wreszcie w tym roku-tuż przed weekendem z okazji Święta Pracy-rzecznik deweloperów Google postanowił się zastanowić. „Zamierzamy przeanalizować miliard plików wśród 14 języków programowania, aby zdecydować, który z nich jest na szczycie.”Przeglądali pliki z 400 000 najlepszych repozytoriów GitHub, przeglądając tylko pliki kodu napisane w najlepszych językach — a ich Wykres pokazał, że spacje były zdecydowanie najpopularniejszą metodą wcięć w każdym języku. Z wyjątkiem Go i C.
„potwierdzam, Go jest językiem przyszłości”, zażartował jeden z komentatorów na Reddicie.
„również automatycznie formatuje Twój kod źródłowy” – odparł inny programista. „Używam spacji i wypluwa zakładki!”
a na Twitterze jeden z programistów żartował, że esej wywołał tylko kolejną kontrowersję. „Nowa dyskusja brzmi:” co do cholery jest nie tak z Go?'”
co najmniej jeden kanadyjski inżynier pochwalił wysiłek, jaki Google włożył w rozwiązanie tego problemu.
https://t.co/wuMz1gLwXT tak się rozstrzyga argument am: data.
— Ian Fosbery (@MisterZia) wrzesień 8, 2016
ale w końcu Google nie przyniosło pokoju światu deweloperów.
dla jasności: wszyscy ci, którzy używają spacji zamiast tabulatorów do wcięcia, są nieprawdopodobnie źli.
Pokaż mi swój kod tak jak lubię.
kropka.— Iñaki Baz Castillo (@ibc_tw) wrzesień 14, 2016
kiedy ktoś odniósł się do analizy Google ’ a, po prostu dodał „wiedziałem o tym. I tak, wszystkie są w 100% błędne.
Co to za szaleństwo
” szaleństwo każdy wie, że karty są lepsze!”odpowiedział londyński opiekun NetApp.
” to jest obrzydliwe”, napisał na Twitterze jeden z niezależnych projektantów stron internetowych w Wielkiej Brytanii
i na tym się nie skończyło. Post Google szybko stał się wirusowy, rysując 1620 komentarzy na Reddicie, a także pojawiając się na Gizmodo, Slashdot i Hacker News. „Po ponad 20 latach słuchania debaty tabs-vs-spaces i biorąc pod uwagę wszystkie uzasadnione punkty, które obie strony mają, wielu poczyniło następujące spostrzeżenia i to jest to, co rezonuje ze mną najbardziej”, napisał jeden programista na Hacker News.
” w idealnym idealnym świecie, _all_ programistów i _all_ narzędzi edytora tekstu używałyby tabulatorów specjalnie do wcięć i spacji specjalnie do wyrównania. Ale nie żyjemy w tym doskonale skoordynowanym świecie, więc spaces zachowuje największą wierność-kosztem programistów, którzy nie są w stanie natychmiast dostosować wcięcia z szerokości 2,4,6,8.”
czy maniacy naprawdę kłócą się o to od ponad 20 lat? Na to wygląda. Był już opisywany jako „niekończący się argument” przez Jamiego Zawinskiego, jednego z programistów wczesnej przeglądarki Netscape Navigator — w 2000 roku. Jego post wyjaśnił, jak skonfigurować dwa edytory tekstu Linuksa (Emacs i Vi), aby zmienić karty na różne szerokości. („Idźcie więc naprzód i rozwiążcie!”)
wesoło szliśmy, a w 2004 roku post w Microsoft Developer Network podjął ten sam problem, zauważając, że niektórzy ludzie łączą spacje i karty, i argumentując, że faktycznie postawili czwartą pozycję: Narzędzia do kodowania powinny być konfigurowalne, aby wyświetlić preferowany widok każdego użytkownika, jednocześnie zapisując kod zgodnie z uzgodnionym zestawem reguł. Ale nie wszyscy byli tak otwarci. W 2009 roku Jeff Atwood, jeden ze współzałożycieli Stack Overflow, napisał post na blogu zatytułowany Death To The Space Infidels!. Lobbuje za swoją pozycją, powołując się na ukochaną książkę Code Complete z 1984 roku.
„nasze badania potwierdzają tezę, że znajomość planów programowych i zasad dyskursu programistycznego może mieć znaczący wpływ na rozumienie programów… nie chodzi tylko o estetykę pisania programów w określonym stylu… programiści mają silne oczekiwania, że inni programiści będą przestrzegać tych reguł dyskursu. Jeśli zasady zostaną naruszone, użyteczność zapewniona przez oczekiwania, które programiści zbudowali w czasie, jest skutecznie anulowana.”
i Atwood cytuje więcej eksperymentów-jeden z początku lat 70-tych-które wykazały, że informacje są lepiej przechowywane, gdy są uporządkowane w znaczącej kolejności. „Więc tak”, podsumowuje Atwood, ” absurdalne, jak to może brzmieć, walka o białe znaki i inne z pozoru trywialne kwestie układu kodu jest rzeczywiście uzasadniona. Oczywiście w granicach rozsądku – gdy odbywa się to otwarcie, w uczciwy i konsensusowy sposób i bez dźgania kolegów z drużyny w twarz po drodze.”
cztery lata później pytanie pojawiło się w sercu geek nation — w dyskusji na temat Stack Overflow.
„spacje” czyta jeden argument. „Zakładka może mieć inną liczbę kolumn w zależności od środowiska, ale spacja to zawsze jedna kolumna.”
„Tabs”, czyta kontrargument. „To postać przeznaczona specjalnie do wcięć. Pozwalają programistom o różnych preferencjach w rozmiarze wcięcia zmienić wygląd kodu bez zmiany kodu ”
więc tam!
ale część zakładek na stronie ostatecznie uderza w ugodową notatkę. „Oczywiście spójność ma większe znaczenie niż jedno z nich, a dobre IDE sprawia, że różnice są znikome.”Ale po co psuć dobry argument?
a sam Jeff Atwood zdaje się zgadzać — do pewnego stopnia. W 2009 napisał ” nie ma znaczenia, który styl kodowania wybierzesz. Ważne jest to, że ty i wszyscy inni w Twoim zespole trzymacie się tych konwencji i konsekwentnie ich używacie.”Ale nie mógł się oprzeć dodaniu jeszcze jednego zdania.
„To powiedziawszy, tylko Kretyn użyłby tabulatorów do sformatowania kodu.”
- naukowcy ze Stanford budują sposób pisania bez użycia rąk poprzez odczytywanie sygnałów mózgowych.
- NASA dzieli się spektakularnymi zdjęciami z Marsa.
- Ameryka mianuje swojego pierwszego federalnego szefa bezpieczeństwa informacji.
- Amazon chce zaatakować twoje sąsiedzkie Centrum handlowe-i twój dom!
- Raspberry Pi świętuje swoją 10 milionową sprzedaż.
- John le Carre w końcu publikuje historię swojego pełnego wydarzeń życia.
- „krótka historia ludzkości” Yuvala Noah Harari była kontynuacją spekulatywnej historii jutra.
- Nicholas Carr patrzy na świat, który stworzyliśmy i pisze ” Utopia jest przerażająca.
na swoim blogu Carr pyta Czy możemy zastosować standardy firmy medialnej do Facebooka? - pamiętając przemowę Steve ’ a Jobsa „Courage” -niektórzy użytkownicy Reddita drwią z bezprzewodowej konfiguracji słuchawek nowego iPhone ’ a.