Spaces vs. Tabs: A 20-Year Debate Reignited by Google’s Golang

Geeks haben in den letzten 16 Jahren Seiten gewählt – sollten Programmierer ihren Code mit Leerzeichen oder Tabulatoren einrücken? Aber jetzt hat der berüchtigt triviale Flammenkrieg durch eine Studie von Google eine neue Bedeutung erlangt – möglicherweise inspiriert durch den Dialog in einer kürzlich erschienenen Folge von HBOs Silicon Valley.

„Um ehrlich zu sein, ich habe eine leichte Vorliebe für Tabs. Aber das liegt nur daran, dass ich anal bin und weil ich Präzision bevorzuge.“

„Nun, um hier keinen Kampf zu führen, aber wenn Sie sich wirklich für Präzision interessieren, würden Sie dann keine Leerzeichen verwenden? Aber was auch immer, sobald es den Compiler durchläuft, ist es dasselbe, oder …?“

„Wenn alles gleich ist, warum nicht einfach Tabs verwenden?“

„, weil es auf den Computern anderer Leute anders aussehen könnte.“

„Tabs erzeugen kleinere Dateigrößen, in Ordnung …? Ich meine, warum nicht einfach Vim über Emacs verwenden?“

„Ich benutze Vim über Emacs.“

„Oh, Gott helfe uns!“

Schließlich entschied sich der Developer Advocate von Google in diesem Jahr — kurz vor dem Labor Day—Wochenende – abzuwägen. „Wir werden eine Milliarde Dateien in 14 Programmiersprachen analysieren, um zu entscheiden, welche oben steht.“ Sie haben Dateien aus den Top 400.000 GitHub-Repositories geknackt und sich nur Dateien mit Code angesehen, die in den Top—Sprachen geschrieben wurden – und ihr Diagramm zeigte, dass Leerzeichen bei weitem die beliebteste Methode zum Einrücken in jeder Sprache waren. Außer Go und C.

„Bestätigt, Go ist die Sprache der Zukunft“, scherzte ein Kommentator auf Reddit.

„Es formatiert auch automatisch Ihren Quellcode“, konterte ein anderer Programmierer. „Ich benutze Leerzeichen und es spuckt Tabs aus!“

Und auf Twitter scherzte ein Entwickler, der Aufsatz habe nur eine weitere Kontroverse ausgelöst. „Die neue Diskussion ist jetzt“Was zum Teufel ist los mit Go?“

Mindestens ein kanadischer Ingenieur lobte die Bemühungen von Google, die Frage zu klären.

https://t.co/wuMz1gLwXT so begleichen Sie ein Argument: Daten.

– Ian Fosbery (@MisterZia) September 8, 2016

Aber am Ende konnte Google der Entwicklerwelt keinen Frieden bringen.

Um es klar zu sagen: Alle, die Leerzeichen anstelle von Tabulatoren zum Einrücken verwenden, sind irreparabel falsch.
Lassen Sie mich Ihren Code so sehen, wie ich es mag.
Zeitraum.

– Iñaki Baz Castillo (@ibc_tw) September 14, 2016

Als jemand Castillo auf die Analyse von Google verwies, fügte er einfach hinzu: „Das wusste ich. Und ja, sie sind alle 100% falsch.“

„Was ist das für ein Wahnsinn“, twitterte Cloud-Ingenieur Ed Morgan.

„Wahnsinn, jeder weiß, dass Tabs besser sind!“ antwortete ein in London ansässiger NetApp-Betreuer.

„Das ist ekelhaft“, twitterte ein freiberuflicher Webdesigner in Großbritannien

Und es endete nicht dort. Googles Beitrag wurde bald viral, zeichnete 1.620 Kommentare auf Reddit und tauchte auch bei Gizmodo, Slashdot und Hacker News auf. „Nach mehr als 20 Jahren, in denen ich der Tabs-vs-Spaces-Debatte zugehört und alle legitimen Punkte beider Seiten berücksichtigt habe, haben viele die folgende Beobachtung gemacht, und das ist es, was mich am meisten anspricht“, schrieb ein Programmierer auf Hacker News.

„In einer idealen perfekten Welt würden _all_ von Programmierern und _all_ Texteditor-Tools Tabulatoren speziell für Einrückungen und Leerzeichen speziell für die Ausrichtung verwenden. Aber wir leben nicht in dieser perfekt koordinierten Welt, so dass Spaces die meiste Genauigkeit beibehält – auf Kosten von Programmierern, die nicht in der Lage sind, die Einrückung von Breiten von 2,4,6,8 sofort anzupassen.“

Haben Geeks wirklich seit über 20 Jahren darüber gestritten? Sieht so aus. Es wurde bereits von Jamie Zawinski, einem der Programmierer des frühen Netscape Navigator—Browsers, im Jahr 2000 als „endloses Argument“ beschrieben. In seinem Beitrag wurde erläutert, wie zwei Linux-Texteditoren (Emacs und Vi) konfiguriert werden, um die Registerkarten in verschiedene Breiten zu ändern. („So geh hin und entfessle!“)

Fröhlich rollten wir entlang, und im Jahr 2004 nahm ein Beitrag im Microsoft Developer Network das gleiche Problem auf und stellte fest, dass einige Leute Leerzeichen und Tabulatoren kombinieren, und argumentierten, dass sie tatsächlich eine vierte Position abgesteckt haben: Codierungstools sollten konfigurierbar sein, um die bevorzugte Ansicht jedes Benutzers anzuzeigen und gleichzeitig Code gemäß einem vereinbarten Regelwerk zu speichern. Aber nicht alle waren so aufgeschlossen. Im Jahr 2009 schrieb Jeff Atwood, einer der Mitbegründer von Stack Overflow, einen Blogbeitrag mit dem Titel Death to the Space Infidels!. Er setzt sich für seine Position ein, indem er das beliebte Buch Code Complete von 1984 zitiert.

„Unsere Studien stützen die Behauptung, dass die Kenntnis von Programmierplänen und Regeln des Programmierdiskurses einen signifikanten Einfluss auf das Programmverständnis haben kann … Es ist nicht nur eine Frage der Ästhetik, dass Programme in einem bestimmten Stil geschrieben werden sollten … Programmierer haben starke Erwartungen, dass andere Programmierer diesen Diskursregeln folgen werden. Wenn die Regeln verletzt werden, wird der Nutzen, den die Erwartungen bieten, die Programmierer im Laufe der Zeit aufgebaut haben, effektiv zunichte gemacht.“

Und Atwood zitiert weitere Experimente – eines aus den frühen 1970er Jahren —, bei denen festgestellt wurde, dass Informationen besser erhalten bleiben, wenn sie in einer sinnvollen Reihenfolge angeordnet sind. „Also ja“, schließt Atwood, „so absurd es auch klingen mag, der Kampf um Leerzeichen und andere scheinbar triviale Probleme des Code-Layouts ist tatsächlich gerechtfertigt. Natürlich im Rahmen des Zumutbaren – wenn dies offen, fair und konsensorientiert geschieht und ohne Ihren Teamkollegen dabei ins Gesicht zu stechen.“

Vier Jahre später tauchte die Frage im Herzen von Geek Nation auf – in einer Diskussion über Stack Overflow.

„Leerzeichen“, liest ein Argument. „Eine Registerkarte kann je nach Umgebung eine andere Anzahl von Spalten enthalten, aber ein Leerzeichen ist immer eine Spalte.“

„Tabs“, lautet das Gegenargument. „Sie sind ein Zeichen, das speziell für Einrückungen gedacht ist. Sie ermöglichen Entwicklern mit unterschiedlichen Einstellungen in der Einrückungsgröße, das Aussehen des Codes zu ändern, ohne den Code zu ändern“

Also da!

Silicon Valley - spaces vs tabs

Aber der Tabs-Teil der Seite trifft letztendlich eine versöhnliche Note. „Natürlich ist Konsistenz wichtiger als beides, und eine gute IDE macht die Unterschiede vernachlässigbar.“ Aber warum ein gutes Argument verderben? „Das heißt, der Sinn dieses Threads ist es, ein heiliger Krieg zu sein, also …“

Und Jeff Atwood selbst scheint zuzustimmen — bis zu einem gewissen Punkt. Bereits 2009 schrieb er: „Es spielt keine Rolle, welche Codierungsstile Sie auswählen. Wichtig ist, dass Sie und alle anderen in Ihrem Team sich an diese Konventionen halten und sie konsequent anwenden.“ Aber er konnte nicht widerstehen, noch einen Satz hinzuzufügen.

„Das heißt, nur ein Idiot würde Tabs verwenden, um seinen Code zu formatieren.“

  • Stanford-Wissenschaftler entwickeln eine Möglichkeit, ohne Hände zu tippen, indem sie Gehirnsignale lesen.
  • Die NASA teilt einige spektakuläre Bilder vom Mars.
  • Amerika ernennt seinen ersten Federal Chief Information Security Officer.
  • Amazon will in Ihr Einkaufszentrum in der Nachbarschaft eindringen – und in Ihr Zuhause!
  • Der Raspberry Pi feiert seinen 10-millionsten Verkauf.
  • John le Carre veröffentlicht endlich die Geschichte seines eigenen bewegten Lebens.
  • Yuval Noah Hararis „kurze Geschichte der Menschheit“ folgte mit einer spekulativen Geschichte von morgen.
  • Nicholas Carr betrachtet die Welt, die wir geschaffen haben, und schreibt: „Utopia is Creepy.“
    In seinem Blog fragt Carr, können wir Medienunternehmen Standards auf Facebook anwenden?
  • Erinnerung an die Steve Jobs „Courage“ -Rede – da einige Reddit-Benutzer das neue iPhone verspotten nur drahtlose Kopfhörer-Setup.