@sur3: Das Argument, dass man bei Tabs einfach einstellen kann was man selbst mag, stimmt nicht. Weder kann man überall einstellen wo die Tabstopp-Positionen sind, noch bleibt dabei die Darstellung sauber erhalten.
Das man nicht überall einstellen kann, führt im Terminal, Webbrowser, oder E-Mail-Programm beispielsweise in der Regel zu Tabstopp alle 8 Zeichen. Was Dir selbst ja aus DOS-Erfahrung zu viel ist.
Wenn man etwas anderes einstellt als das, was beim Schreiben des Quelltextes verwendet wurde, dann muss das nicht mehr einheitlich und so ausgerichtet bleiben, wie dass der Autor mit seiner Einstellung gemacht hat.
Geschrieben mit Tabstopps alle 4 Zeichen, angezeigt mit Tabstopps alle 2 Zeichen:
| #define START_YEAR 1882
#define END_YEAR 2025
#define DM_TO_EUR_YEAR 2002
|
Die Zahlen sollten alle untereinander ausgerichtet sein. Auch bei Tabstopps alle 8 Zeichen sind die Zahlen nicht alle da wo sie sollten.
Bei der Einrückung am Zeilenanfang kann es auch Probleme geben:
printf("%.2f %s in %"PRIu16" = %.2f %s in %"PRIu16".\n",
amount, start_currency, start_year, result, result_currency, year);
Das a von amount sollte eigentlich unter den Anführungszeichen in der Zeile darüber stehen.
Das Du einiges mehr tippen müsstest um Zeichen aufzuholen, stimmt nicht, weil das Mehr an Leerzeichen kein Mehr an Tastendrücken bedeutet. Für vier Leerzeichen muss man in der Regel genau so viel tippen wie für ein Tabulatorzeichen. Niemand der Leerzeichen zum Einrücken verwendet, tippt da tatsächlich vier Leerzeichen ein. Das ist auch nur ein Druck auf die Tab-Taste. Fortgesetzte Einrückung aus der vorhergehenden Zeile bekommt man gratis beim betätigen der Eingabetaste. Wenn der Editor was taugt, dann auch gleich plus eine Ebene wenn in der vorherigen Zeile am Ende ein : steht, wenn man Python-Quelltext bearbeitet.
Grossbuchstaben lassen sich besser komprimieren? Und das FAT-Dateisystem macht das? Das ist beides falsch.
DOS hat Dateinamen in Grossbuchtaben von CP/M abgeschaut. CP/M hat das von vorhergehenden Mini- und Grossrechnern abgeschaut. Unter anderem technisch bedingt wohl auch deshalb, weil in den Anfangstagen von CP/M, wie bei den Mini- und Grossrechnern, Fernschreiber für die Daten-Ein und -Ausgabe verwendet wurden. Klassisch zum Beispiel ein TeleType 33 ASR. Man kann nur Grossbuchtaben eingeben und das Gerät kann auch nur Grossbuchtaben zu Papier bringen, aber es kann Kleinbuchstaben empfangen, die dann als Grossbuchtaben ausgegeben werden. Und die integrierten Einheiten zum Lochstreifen lesen und stanzen können auch Gross- und Kleinbuchstaben, beziehungsweise ist das da im Grunde egal, die können halt Lochstreifen mit 8 Spuren. Das hat zur Folge, dass man Datenaustausch mit vollem ASCII-Zeichenvorrat per Lochstreifen hat, selbst aber nur über Grossbuchstaben mit dem Rechner kommunizieren kann. Damit es keine Dateinamen geben kann, die man nicht über die Tastatur eingeben kann, müssen die in Grossbuchstaben sein.
Welche ganzen grossen Python-Projekte? Wo würden durch Tabs statt Leerzeichen mindestens 24 MiB eingespart? Die Zahl hast Du Dir doch Ad Hoc ausgedacht. Und solange die nicht in ein Verhältnis zur gesamten Grösse der Dateien im Projekt gesetzt wird, sagt die noch nicht mal wirklich etwas aus.
@snafu1: Funktionen sind schon okay, aber nur um Bytes im Quelltext zu sparen, für Ausdrücke, die lang genug sind und oft genug vorkommen, das man da etwas einsparen kann. 😉
Vorsicht bei Assembler: Da wird der Quelltext in der Regel länger als ein Programm in einer ”Hochsprache”. Und Finger weg von kompilierten Sprachen. Die linken in der Regel zu jedem Kompilat mindestens einen Teil der Laufzeitbibliothek dazu. Am besten eine interpretierte Sprache, die den Quelltext nicht als reinen Text, sondern schon in einem optimierten Zwischenformat bekommt. Da wären wir dann wieder bei BASIC & Co. \o/
@timothy2068: So ein Skript ist ein kleines bisschen aufwändiger als man auf den ersten Blick denken mag. Man sollte beispielsweise keine Leerzeichen in Zeichenkettenliteralen durch Tabs ersetzen, da können Dinge kaputt gehen, denn man weiss nicht wo solche Texte am Ende landen.
Einfach nach einer Anzahl von Leerzeichen suchen, die der gewünschten Tab-Breite entsprechen und durch "\t" ersetzen geht auch nicht, weil das von der Spalte abhängt, wo diese Leerzeichen starten. Ein "\t" ersetzt ja nicht eine feste Anzahl an Leerzeichen, sondern springt zum nächsten Tabstopp, der auch weniger Leerzeichen entfernt sein kann als die gewünschte Tab-Breite.
Weiteres Problem: Was macht man mit Dateien, die bereits Tabs enthalten? Müsste man eigentlich neu ”tabben” wenn die gewünschte Tab-Breite nicht mit der überein stimmt, die der Autor verwendet hat. Welche das ist, kann man aber gar nicht ermitteln, das muss man wissen. Tabs sind toll, yeah. =:O)