Some parts of this page were machine translated.
Powered by Yandex.Translate
http://translate.yandex.com/
Eine der ewigen Fragen in der Programmierung — welche Zeichen im Code verwenden für die Einrückung — Tabs oder Leerzeichen.
Eine der ewigen Fragen in der Programmierung — welche Zeichen im Code verwenden für die Einrückung — Tabs oder Leerzeichen.
Manchmal gibt es keine Wahl. Zum Beispiel, in Makefile
unbedingt verwenden müssen, Taba. In der Sprache
Programmierung go
gibt es ein offizielles Tool gofmt
die Code formatiert und dieses Tool
nutzt Tabs für Einrückungen.
B esoterischen Programmiersprache Whitespace
Tabs und Leerzeichen dürfen nicht durch einander
Freund. Aber viele Programmiersprachen nicht legen Wahl und ermöglichen dem Programmierer
selbst entscheiden, welche Zeichen zu verwenden.
Es gibt genug Volksmeinung welche Zeichen zum Einrücken verwenden. Meinung folgende: egal was Sie verwenden, Hauptsache Konsistenz. Wenn die Tabs verwendest, dann müssen Sie immer verwenden. Wenn verwendest Leerzeichen, dann müssen Sie verwenden, nur Leerzeichen und keine Tabs verwenden.
Es gibt sogar Comic Comic Comic zu diesem Thema:
(zwei Personen absolut nicht einverstanden mit einander, ob die Taba oder Leerzeichen, aber absolut einig, dass Sie nur eine Sache):
Und wie die Dinge in der realen Welt? Was eigentlich verwendet?
Es ist ganz einfach herauszufinden. Muss man den Quellcode der Programme aufzuzählen welche Symbole werden verwendet und die Ergebnisse sehen.
Dieser Artikel ist das Ergebnis einer kleinen Studie über die Verwendung von Tabs und Leerzeichen in der Welt der Programmiersprache Perl. Es gibt ein riesiges Repository ist eine Sammlung von Perl Bibliothek — CPAN. Ich habe alle Versionen aller Bibliotheken, die jetzt auf CPAN (Sie war etwa 135 tausend) und fand welche Symbole verwendet, um Einrückungen.
Bevor Sie weiterlesen, empfehle ich Ihnen für eine Minute zum nachdenken und ausprobieren davon ausgehen dass zum Einrücken beliebter:
?
Also, die Aufgabe ist klar. Müssen alle Bibliotheken mit CPAN und wird verwendet, um zu überprüfen, dass Einrückungen.
Zuerst müssen Sie das ganze CPAN. Dies geschieht mit einem einzigen Befehl:
time /usr/bin/rsync -av --delete cpan-rsync.perl.org::CPAN /project/CPAN/
3 Stunden und CPAN heruntergeladen. Es dauert etwa 27 GB.
CPAN ist eine Zusammenstellung von Dateien, die in einer bestimmten Struktur organisiert. Hier ist ein Ausschnitt:
CPAN/authors/id
├── A
│ ├── AA
│ │ ├── AADLER
│ │ │ ├── CHECKSUMS
│ │ │ ├── Games-LogicPuzzle-0.10.readme
│ │ │ ├── Games-LogicPuzzle-0.10.tar.gz
│ │ │ ├── Games-LogicPuzzle-0.12.readme
│ │ │ ├── Games-LogicPuzzle-0.12.tar.gz
In diesem Beispiel AADLER
— ist der Benutzername des Autors und Games-LogicPuzzle-0.10.tar.gz
und Games-LogicPuzzle-0.12.tar.gz
— Releases ist.
Jetzt auf CPAN gibt es mehr als 7 tausend Autoren luden die Bibliothek auf CPAN.
Um nicht zu speichern alle 7 tausend Ordner in einem einzigen Ordner, noch ein paar mehr
Ebenen (Versionskontrollsystem git
speichert seine Daten in ähnlicher Weise).
Auf CPAN herunterladen der Bibliothek, sind die verschiedenen Entpacker.
Ich begann mit der Tatsache, dass zählte die Anzahl der verschiedenen Dateiendungen
im Ordner CPAN/authors/id/
.
Hier ist ein Skript und das Ergebnis seiner Arbeit .
Top-Erweiterungen Archive:
.tar.gz gewinnt mit einem solchen Vorsprung, dass ich beschloss, dass es genug zu berechnen welche Symbole verwendet Einrückungen enthalten nur in den Bibliotheken, sind die in .tar.gz
Weiter schrieb ich ein paar Skripte. Ursprünglich ich war nicht bis zum Ende klar welcher Form erhalte ich die Daten über Tabah und Lücken, so dass ich beschloss zu tun System bestehend aus mehreren Komponenten. Zunächst vorab zu behandeln alle 135 tausend Dateien mit Releases und setzen Daten über Tabah und Lücken in der Datenbank. Erwarte es würde zu lange dauern. Und dann verwenden Sie die Daten aus der Datenbank, um schnell an Daten in verschiedenen Formaten.
Das Ergebnis war ein Script fill_db .
Dieses Skript schwemmt die Daten in die Datenbank etwas mehr als fünf Stunden. Aber diese fünf Stunden ist, wenn bereits alles ausgetestet.
Nicht das erste mal das Skript gearbeitet.
Die Hauptprobleme waren mit Unicode. Zuerst gab es ein Problem mit der Veröffentlichung μ-0.01.tar.gz
Autor APEIRON
,
dann gab es Probleme mit Dateien der Art t/words_with_ß.dat
aus der Veröffentlichung Lingua-DE-ASCII-0.06
Autor BIGJ
.
Aber am Ende sind alle Probleme gelöst wurden und das Skript erfolgreich ging auf alle .tar.gz Veröffentlichungen.
Das Skript geht auf alle .tar.gz Dateien im CPAN. Dekomprimiert .tar.gz in einen temporären Ordner. Findet
in diesem temporären Ordner alle Dateien die Erweiterung .pm
, .pl
, .t
oder .pod
, liest
alle Einzüge und überprüft, ob in diesen Leerzeichen und Einrückungen enthalten oder Taba. In Veröffentlichungen gibt es auch andere
Dateien, aber ich entschied mich darauf beschränken, nur die Dateien explizit beziehen sich auf Perl.
Das Ergebnis dieses Skripts ist die 2 Tabelle in der Datenbank. Hier ist ein Beispiel der Daten:
mysql> select * from releases limit 1;
+------------+--------+---------------------------------------------------------------+------------+
| release_id | author | file_name | timestamp |
+------------+--------+---------------------------------------------------------------+------------+
| 1 | RUFF | /cpan/authors/id/R/RU/RUFF/DJabberd-Authen-Dovecot-0.1.tar.gz | 1359325895 |
+------------+--------+---------------------------------------------------------------+------------+
1 row in set (0.00 sec)
mysql> select * from files where release_id = 1;
+---------+------------+--------------------------------------------------------+------+---------------------+-------------------+
| file_id | release_id | file_name | size | has_space_beginning | has_tab_beginning |
+---------+------------+--------------------------------------------------------+------+---------------------+-------------------+
| 1 | 1 | DJabberd-Authen-Dovecot/lib/DJabberd/Authen/Dovecot.pm | 2047 | 1 | 1 |
| 2 | 1 | DJabberd-Authen-Dovecot/t/compiles.t | 64 | 0 | 0 |
+---------+------------+--------------------------------------------------------+------+---------------------+-------------------+
2 rows in set (0.02 sec)
mysql> mysql> selec(*) from releases;
+----------+
| count(*) |
+----------+
| 135343 |
+----------+
1 row in set (0.04 sec)
mysql> select count(*) from files;
+----------+
| count(*) |
+----------+
| 3828079 |
+----------+
1 row in set (5.71 sec)
Gesamt in der Datenbank über jede Datei in einer Pressemitteilung gibt es die 2 Fahnen:
Entsprechend der beiden Flags kann 4 Kombinationen:
Die ersten drei Varianten ist eine ganz erwarteten Situation, genau Sie wollte ich finden und
wissen was beliebter. Aber die Option 00
— "sind weder Tabs noch Leerzeichen" — das ist es, worüber ich überhaupt nicht gedacht,
aber es stellte sich heraus, dass auch das kommt vor. "Wie?" — Fragen Sie Sie. Hier ist ein Beispiel.
mysql> select releases.release_id, files.file_name, files.size, has_space_beginning, has_tab_beginning from releases join files on releases.release_id = files.release_id and author = 'KOHA';
+------------+---------------------------------------------------+------+---------------------+-------------------+
| release_id | file_name | size | has_space_beginning | has_tab_beginning |
+------------+---------------------------------------------------+------+---------------------+-------------------+
| 118147 | Bundle-KohaSupport-0.31/lib/Bundle/KohaSupport.pm | 2169 | 0 | 0 |
| 118147 | Bundle-KohaSupport-0.31/t/Bundle-KohaSupport.t | 487 | 0 | 0 |
| 118147 | Bundle-KohaSupport-0.31/t/pod.t | 130 | 0 | 0 |
+------------+---------------------------------------------------+------+---------------------+-------------------+
3 rows in set (0.05 sec)
Der Autor KOHA
gibt es ein Release Bundle-KohaSupport-0.31
. In dieser Version gibt es 3 Dateien die Erweiterung aus der Liste .pm
, .pl
, .t
oder .pod
.
Über all diese Dateien in der Datenbank geschrieben, dass in Ihrer Einrückungen enthalten keine Leerzeichen, keine Tabs. Wie kann das sein?
Es stellt sich heraus, alle elementar. Wenn wenn man auf diese Dateien, dann sind Sie einfach nur keine Einrückungen.
Hier zum Beispiel der Inhalt der Datei t/Bundle-KohaSupport.t
:
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl Bundle-KohaSupport.t'
#########################
# change 'tests => 1' to 'tests => last_test_to_print';
use Test::More tests => 1;
BEGIN { use_ok('Bundle::KohaSupport') };
#########################
# Insert your test code below, the Test::More module is use()ed here so read
# its man page ( perldoc Test::More ) for help writing this test script.
So dass zusätzlich zu den drei ganz erwarteten Situationen:
noch ist die Situation:
Nachdem bei mir gab es die verarbeiteten Daten in der Datenbank habe ich beschlossen, zu sehen für jeden Autor, dass er zum Einrücken verwendet.
Ich hatte erwartet, dass die beliebteste wird nur die Verwendung von Leerzeichen, auf dem zweiten Platz nach der popularitt wird nur die Verwendung von Registerkarten und auf dem Dritten Platz nach der Popularität wird die gleichzeitige Verwendung von Tabs und Leerzeichen.
Aber es stellte sich heraus, dass ich war völlig falsch.
Ich schrieb das Skript .
Dieses Skript überprüft, welche Symbole werden von den Autoren in allen Dateien .pm
, .pl
, .t
, .pod
,
die gibt es in allen Versionen die jetzt auf CPAN.
Hier ist, was passiert:
$ cat app/data/users.log | perl -nalE 'say if /^##/'
## 00 (nothing) - 50 (0.7%)
## 01 (only tabs) - 51 (0.7%)
## 10 (only spaces) - 1543 (21.9%)
## 11 (both) - 5410 (76.7%)
Die Daten absolut nicht wie ich erwartet hatte!
Vollständige Liste aller Autoren in aufgeteilten Gruppen über eine in einer Datei auf GitHub .
Aber jupyter notebook mit dessen Hilfe wurde diese Kreisdiagramm.
Aber diese Daten gebildet auf alle Veröffentlichungen, die jetzt gibt es auf CPAN. Diese Versionen entstanden im Laufe der letzten 24 Jahre. Vielleicht werden im Laufe der Zeit das Verhältnis irgendwie ändert sich?
Jede Datei mit der Veröffentlichung auf CPAN Zeit der Modifikation ist die Zeit, Wann dieses Release geladen wurde auf CPAN.
Diese Daten werden in die Datenbank geladen. Jetzt auf CPAN das älteste Release ist Ioctl-0.5
— er wurde geladen auf CPAN 1995-08-20
:
mysql> select author, file_name, from_unixtime(timestamp) from releases where timestamp = (select min(timestamp) from releases);
+--------+----------------------------------------------+--------------------------+
| author | file_name | from_unixtime(timestamp) |
+--------+----------------------------------------------+--------------------------+
| KJALB | /cpan/authors/id/K/KJ/KJALB/Ioctl-0.5.tar.gz | 1995-08-20 07:26:09 |
+--------+----------------------------------------------+--------------------------+
1 row in set (0.08 sec)
Und in diesem Tag eingegossen wurde ein 8 Releases:
mysql> select * from releases where from_unixtime(timestamp) < '1995-08-21' order by timestamp;
+------------+--------+--------------------------------------------------------------+-----------+
| release_id | author | file_name | timestamp |
+------------+--------+--------------------------------------------------------------+-----------+
| 112505 | KJALB | /cpan/authors/id/K/KJ/KJALB/Ioctl-0.5.tar.gz | 808903569 |
| 23026 | TYEMQ | /cpan/authors/id/T/TY/TYEMQ/FileKGlob.tar.gz | 808903636 |
| 134031 | WPS | /cpan/authors/id/W/WP/WPS/Curses-a8.tar.gz | 808903647 |
| 112546 | KJALB | /cpan/authors/id/K/KJ/KJALB/Term-Info-1.0.tar.gz | 808903748 |
| 70278 | MICB | /cpan/authors/id/M/MI/MICB/TclTk-b1.tar.gz | 808910379 |
| 70274 | MICB | /cpan/authors/id/M/MI/MICB/Tcl-b1.tar.gz | 808910514 |
| 19408 | GBOSS | /cpan/authors/id/G/GB/GBOSS/perl_archie.1.5.tar.gz | 808930091 |
| 81551 | JKAST | /cpan/authors/id/J/JK/JKAST/StatisticsDescriptive-1.1.tar.gz | 808950837 |
+------------+--------+--------------------------------------------------------------+-----------+
8 rows in set (0.06 sec)
Ich entschied mich zu sehen wie sich die Verteilung der Verwendung verschiedener Symbole für die Einzüge über die Zeit. Dazu schrieb ich ein Skript .
Hier ist die snippet-Dateien mit Daten, die ein Skript erstellt:
$ cat app/data/releases_date.csv | head
date,00,01,10,11
1995-08-20,0,1,0,7
1995-08-21,0,0,0,0
1995-08-22,0,0,0,0
1995-08-23,0,0,0,0
1995-08-24,0,0,0,1
1995-08-25,0,0,0,0
1995-08-26,0,0,0,0
1995-08-27,0,0,0,0
1995-08-28,0,0,0,0
D.h. über jedes Datum ab 1995-08-20
gibt es Daten darüber wie viele Versionen aufgeschlüsselt nach dem
welche Symbole wurden verwendet, um Einrückungen.
00
— in Einrückungen enthalten keine Leerzeichen, keine Tabs
01
— in Einrückungen enthalten werden nur Tabs
10
— in Einrückungen enthalten nur Leerzeichen verwendet werden
11
— in отсутпах verwendet und Tabs und Leerzeichen
Weiter schrieb ich jupyter notebook in dem Malte Zeitplan. Auf der Grafik habe ich отображаю nicht die absolute Zahl der Veröffentlichungen, aufgeschlüsselt nach Art der Einrückung, und der Prozentsatz der Gesamtzahl der Veröffentlichungen an diesem Tag:
In der Tabelle sehen Sie fast 9 tausend Tage. Zeigt, dass ein Trend vorhanden ist, aber der Zeitplan laut und schlecht drauf ist alles sichtbar. Denn anstelle von Tagen wurde ich группировал Releases für Monat.:
Überraschend aber nachvollziehbar Trend. Die Anzahl der Releases bei denen nur Tabs oder gar nicht verwendet Einrückungen nahezu unverändert, aber der Anteil der Veröffentlichungen in denen nur Leerzeichen verwendet werden ständig wächst und dieses Wachstum geschieht auf Kosten des Anteils der Veröffentlichungen in denen die Mischung von Tabs und Leerzeichen.
Ich schaute auf die Daten und ich habe eine andere Hypothese, warum verringert sich die Anzahl der Releases
die und die Probleme und Taba. Meine Gedanken über die Perl-Bibliothek
Module::Install . Wenn bei der Abfassung seiner
Bibliothek verwendet Module::Install, wird in der Pressemitteilung auf CPAN enthalten Dateien aus dieser Bibliothek.
Und in diesen Dateien verwendet eine Mischung aus Leerzeichen und Tabs. Hier ist ein Beispiel-Dateien von Module::Install in einer Pressemitteilung
Devel-PeekPoke-0.04
:
mysql> select * from files where release_id = 284 and file_name like '%inc/Module/Install%';
+---------+------------+----------------------------------------------------+-------+---------------------+-------------------+
| file_id | release_id | file_name | size | has_space_beginning | has_tab_beginning |
+---------+------------+----------------------------------------------------+-------+---------------------+-------------------+
| 10328 | 284 | Devel-PeekPoke-0.04/inc/Module/Install.pm | 12381 | 1 | 1 |
| 10329 | 284 | Devel-PeekPoke-0.04/inc/Module/Install/Metadata.pm | 18111 | 1 | 1 |
| 10330 | 284 | Devel-PeekPoke-0.04/inc/Module/Install/Fetch.pm | 2455 | 1 | 1 |
| 10331 | 284 | Devel-PeekPoke-0.04/inc/Module/Install/Makefile.pm | 12063 | 1 | 1 |
| 10332 | 284 | Devel-PeekPoke-0.04/inc/Module/Install/Base.pm | 1127 | 0 | 1 |
| 10333 | 284 | Devel-PeekPoke-0.04/inc/Module/Install/WriteAll.pm | 1278 | 0 | 1 |
| 10334 | 284 | Devel-PeekPoke-0.04/inc/Module/Install/Win32.pm | 1795 | 1 | 1 |
| 10335 | 284 | Devel-PeekPoke-0.04/inc/Module/Install/Can.pm | 3183 | 1 | 1 |
+---------+------------+----------------------------------------------------+-------+---------------------+-------------------+
8 rows in set (0.03 sec)
Meine Hypothese ist, dass die Entwickler verwenden Sie Leerzeichen zum Einrücken, aber aufgrund der Tatsache, dass in der Pressemitteilung ist Module::Install dann in der Statistik berücksichtigt und Leerzeichen und Tabs. Module::Install Stahl weniger verwenden (da gab es alle Arten von Dist::Zilla, Dist::Milla, Minilla) und deshalb Module::Install aufgehört, die Verzerrung.
Diese Hypothese zu überprüfen. Zuerst habe ich beschlossen, zu sehen, ob Module::Install werden immer weniger und weniger. Ich baute Zeitplan. Jeder Punkt ist die Anzahl der Releases pro Monat in die verwendete Module::Install. Ist ersichtlich, dass ein Teil der Hypothesen Verne — wirklich, Module::Install Stahl verwenden weniger.
Aber ob die Verwendung von Module::Install so wirkt sich auf den Anteil der Verwendung von Leerzeichen oder Tabs und Leerzeichen für Einrückungen. Um dies herauszufinden, ich habe noch zwei Grafiken. Dies ist die Anzahl der verschiedenen Arten von Einrückungen in Releases nach Monaten. Die erste Grafik nur Versionen in denen Module::Install, auf der zweiten Grafik nur Veröffentlichungen in denen es nicht verwendet wird.
Da sieht man was wirklich, wenn Sie die Bibliothek Module::Install, dann meistens in der Bibliothek verwendet wird es ist ein Gemisch aus Tabs und Leerzeichen.
Und hier ist der Zeitplan auf denen werden nur jene Veröffentlichungen, in denen nicht verwendet Module::Install. Wenn wir diese der Zeitplan mit dem Zeitplan auf dem richten alle Releases, das ist ein Unterschied, aber nichts grundlegend verändert.
Stellt sich heraus, dass die Vermutung falsch ist. Wenn in der Pressemitteilung verwendet Module::Install, dann ist die Veröffentlichung meistens fällt in die Gruppe "Tabs und Leerzeichen", aber wenn Sie berücksichtigen nicht alle Releases in denen Module::Install, ist es immer noch ein Trend — der Anteil der Veröffentlichungen in denen nur Tabs als Einrückung steigt auf Kosten des Anteils der Veröffentlichungen in denen Sie verwendet werden die Mischung aus Tabs und Leerzeichen.
Warum immer noch wachsende Zahl von Releases bei denen nur Tabs? Vielleicht gibt es einige so rüber aktiver Autor, die produzieren sehr viele Veröffentlichungen und Autor diese so wirken sich auf die gesamte Statistik?
Ich habe versucht, es zu überprüfen. Malte Chart der Ihnen zeigt, dass der Anteil von Veröffentlichungen in denen wurden nur Leerzeichen, sondern aufgeschlüsselt nach dem ersten Buchstaben des namens des Autors. Wenn du wirklich etwas der Autor leistet einen großen Beitrag über in Allgemeine Statistiken, welche Linie sehr stark war oben. Auf dieser Grafik, die ich sah, alle Linien Plus-minus glatte. So dass die Bestätigung dieser Hypothese habe ich nicht erhalten könnte.
Aus den Grafiken ist ersichtlich, dass im Laufe der Zeit immer mehr Releases werden nur Leerzeichen für die Einrückung. Und dieser Anteil wächst aufgrund der Veröffentlichungen in denen das Gemisch verwendet wird Leerzeichen und Tabs.
Meine erste Vermutung war, dass dies aufgrund der Tatsache, dass die Releases früher aktiv enthalten Code library Module::Install verwendet, in denen die Mischung von Leerzeichen und Tabs, diese Bibliothek verwenden Sie immer kleiner, und daher der Anteil der Veröffentlichungen in denen das Gemisch verwendet wird, Registerkarten und Leerzeichen verringert. Es stellte sich heraus, dass ein Teil der Wahrheit drin, aber selbst wenn man von Prüfung alle Releases die Module::Install, der Allgemeine Trend ist nicht zu ändern — trotzdem der Anteil der Veröffentlichungen in denen nur Leerzeichen steigt auf Kosten des Anteils der Veröffentlichungen in denen mit einer Mischung aus Leerzeichen und Tabs.
Meine zweite Hypothese ist, so dass Auswirkungen auf die Statistik sehr kleine Gruppe von sehr aktiven Autoren. Ich konnte eine Bestätigung dieser Hypothese.
Meine Dritte Hypothese besteht darin, dass die Autoren erscheinen mehr als komfortable Text-Editoren und IDE, mit denen einfacher zu verwenden консистентно nur Leerzeichen und keine Mischung von Leerzeichen und Tabs. Aber leider Ideen wie diese Hypothese zu überprüfen habe ich nicht. In die Daten liegen auf dem CPAN gibt keine Informationen darüber, welche der Editor wurde verwendet bei der Erstellung dieser Veröffentlichung. Ich schaute auf die Erscheinungsdaten der beliebtesten Editoren/IDE:
Emacs
— 1985
vim
— 1991
IntelliJ IDEA
— январяь 2001
Eclipse
— November 2001
Sublime Text
— Januar 2008
Atom
— Februar 2014
VS Code
— April 2015
Auf dem vorherigen Chart ist ersichtlich, dass im Laufe der Zeit immer mehr Releases werden Leerzeichen und keine Mischung von Tabs mit Leerzeichen. Deshalb habe ich beschlossen, zu sehen, welche die Verteilung der Arten von Einrückungen wird von den Autoren nur auf Grund Ihrer Releases pro Jahr 2019.
Daten aus den Ergebnissen der Arbeit des Skripts :
$ cat app/data/users_2019.log | perl -nalE 'say if /^##/'
## 00 (nothing) - 12 (1.4%)
## 01 (only tabs) - 9 (1.0%)
## 10 (only spaces) - 355 (41.2%)
## 11 (both) - 486 (56.4%)
Vergleicht man die Daten der Autoren für 2019 und Daten für alle Jahre, so zeigt sich, dass der Prozentsatz der Autoren nur die die Taba nahezu unverändert, aber der Anteil der Autoren verwenden nur die Lücken hat stark zugenommen.
Die Quellen für diese Kreisdiagramm:
Für die Bildung von zahlen und Grafiken wurden verwendet alle .tar.gz Releases die auf dem CPAN zu Beginn des Schreibens dieses Artikels, mit Ausnahme des Releases Programmiersprache Perl.
CPAN ermöglicht das löschen von Mitteilungen, Daten, die in diesem Artikel gezeigt gelöschte Versionen werden nicht beteiligt. Es ist unklar, wie stark tauschen Daten wenn berücksichtigen Zeichen Einrücken in bereits gelöschte Versionen. Es ist durchaus möglich, dass die Daten stark verändert. Es gibt ein Archiv backpan speichert alle Versionen, wenn die dann aber auf CPAN. Also in der Theorie gibt es die Möglichkeit alles neu zu berechnen Anzahl der Releases unter Berücksichtigung der auf CPAN.
Der zweite Punkt, der Einfluss auf die Genauigkeit der Daten ist berücksichtigt, dass die Zeichen Einrückungen nur in Versionen, die waren sind in .tar.gz Archiv. Andere Arten von Archive wurden nicht verwendet. Die überwiegende Mehrheit der Veröffentlichungen ist .tar.gz deshalb wurde eine solche Annahme. Wenn eine Neuberechnung der Daten in allen Archiven werden die Daten sicherlich ändern sich. Ich vermute, dass die änderung wird nicht mehr als ein paar Prozent.
Eine ganze Reihe von Skripten, die verwendet wurden für die Datenerfassung, die Daten selbst und jupyter Notebooks werden alle in einem Repository auf GitHub.
Der Code geschrieben wird — er ist gerade sehr weit von der Vollkommenheit entfernt. Alles, was geschrieben wurde geschrieben mit Ideen so schnell wie möglich ein Ergebnis zu bekommen, anstatt das perfekte Code.
Zum Zeitpunkt des Schreibens dieses Textes im Repository CPAN Perl-Bibliotheken befand sich etwa 135 tausend
Releases. Das erste Release wurde vor 24 Jahren (1995-08-20). In diesen Releases befindet sich fast 4 Millionen Dateien
mit den Erweiterungen .pm
, .pl
, .t
oder .pod
.
Wenn man die Daten für die ganze Zeit, es wird sich herausstellen, dass 76.7%% Autoren im Einrückungen enthalten eine Mischung von Leerzeichen und Tabs, 21.9% verwendet Einrückungen enthalten nur Leerzeichen und 0.7% — nur Tabs.
Aber wenn man die Daten nur für 2019, dann wird immer mehr Autoren, die ausschließlich Leerzeichen verwendet für Einrücken, aber immer noch die Mehrheit verwendet eine Mischung aus Tabs und Leerzeichen (56.4% — nutzen und Tabs und Leerzeichen,Leerzeichen 41.2% — nur Leerzeichen, 1.0% — nur Tabs).
Und wenn man sich den Zeitplan der vernderung der Anteil der Nutzung der verschiedenen Arten von Einrückungen, dann ist ersichtlich, dass der Anteil der Verwendung nur Leerzeichen steigt dieser Anteil steigt auf Kosten des Anteils derer, die Mischung aus Tabs und Leerzeichen zum Einrücken.
Weiß nicht genau, warum dieser Anteil wächst. Es ist möglich, dass dies geschieht aufgrund der Tatsache, dass die Autoren verwenden bequemer Text-Editoren, die es ermöglichen, einfacher und sicherer zu installieren welche Zeichen zum Einrücken verwenden.