Taba ou des espaces pour l'indentation? Statistiques sur les 3.8 millions de Perl de fichiers créés 24 ans

L'une des questions intemporelles dans la programmation — les caractères à utiliser dans le code du programme pour la mise en retrait de taba ou des espaces.

Parfois pas le choix. Par exemple, dans Makefile est indispensable de taba. Dans la langue la programmation go a mis en place un utilitaire gofmt qui formate le code et cet utilitaire utilise taba pour l'indentation. B эзотерическом langage de programmation Whitespace de taba et des espaces ne peut pas remplacer l' l'autre. Mais de nombreux langages de programmation n'imposent pas le choix, et permettent au programmeur vous-même de décider quels caractères à utiliser.

Il y a assez de l'opinion populaire quels caractères à utiliser pour l'indentation. L'opinion suivante: ce n'est pas que de l'utiliser, l'essentiel cohérence. Si tu utilises taba, il faut toujours les utiliser. Si utilisez des espaces, vous devez utiliser uniquement des espaces et de ne pas utiliser de taba.

Il y a même comique comique de la bande dessinée sur ce thème:

(deux personnes tout à fait d'accord les uns avec les autres si vous voulez utiliser taba ou des lacunes, mais tout à fait d'accord qu'il faut utiliser une seule chose):

Et comment les choses fonctionnent dans le monde réel? Que fait-il utilisé?

C'est assez simple à comprendre. Besoin de prendre le code source d'un programme, compter quels sont les symboles utilisés et voir les résultats.

Cet article est le résultat d'une petite recherche sur l'utilisation de табов et des lacunes dans le monde du langage de programmation Perl. Il y a une énorme référentiel dans lequel sont stockés Perl la bibliothèque — CPAN. J'ai téléchargé toutes les versions de toutes les bibliothèques qui est désormais disponible sur le CPAN (ils ont trouvé environ 135 mille) et a considéré les caractères qui est utilisé pour le retrait.

Avant de lire plus loin, je vous propose une minute de réfléchir et d'essayer supposer que le plus populaire pour le retrait:

  • taba
  • des espaces
  • ou un mélange de табов et des lacunes

?

L'écriture de code

Donc, le problème est clair. Vous devez prendre toutes les bibliothèques avec CPAN et vérifier que vous utilisez pour indentation.

Pour commencer, vous devez télécharger le CPAN. Cela se fait à l'aide d'une équipe:

time /usr/bin/rsync -av --delete cpan-rsync.perl.org::CPAN /project/CPAN/

3 heures et CPAN скачен. Il prend environ 27 GB.

CPAN est un ensemble de fichiers qui sont organisés dans une structure particulière. Voici un extrait:

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

Dans cet exemple, AADLER — est le login de l'auteur, et Games-LogicPuzzle-0.10.tar.gz et Games-LogicPuzzle-0.12.tar.gz — c'est la presse.

Maintenant sur CPAN il ya plus de 7 milliers d'auteurs qui ont téléchargé la bibliothèque sur le CPAN. Pour ne pas stocker les 7 les milliers de dossiers dans un dossier, ajouté quelques les niveaux (système de contrôle de version git stocke ses données de manière similaire).

Sur le CPAN, vous pouvez télécharger la bibliothèque qui inclus les différents outils d'archivage.

J'ai commencé avec un a compté le nombre de différentes extensions de fichiers dans le dossier CPAN/authors/id/. Voici le script et le résultat de son travail . Top des extensions d'archives:

  • .tar.gz 135571
  • .tgz 903
  • .zip 652
  • .gz 612
  • .bz2 243

.tar.gz gagne avec une telle marge, que j'ai décidé qu'il sera suffisant de compter quels sont les symboles utilisés dans d'indentation uniquement dans les bibliothèques, qui sont inclus dans .tar.gz

Plus loin, j'ai écrit plusieurs scripts. Initialement, je n'est pas jusqu'à la fin, c'était clair dans je veux obtenir des données sur les табах et les lacunes, j'ai donc décidé de faire système composé de plusieurs composants. Tout d'abord le pré-traitement toutes les 135 milliers de fichiers avec des versions et de mettre les données sur табах et les lacunes dans la base de données. J'attends que ce sera long. Et continuer à utiliser les données de la base de données afin d'obtenir rapidement des données dans les différents formats.

Le résultat avait été un script fill_db . Ce script étaient inondés de données dans la base de un peu plus de cinq heures. Mais ces cinq heures, quand tout était réglementé. Loin d'être la première fois le script s'arrête. Les principaux problèmes étaient Unicode. Tout d'abord eu un problème avec la sortie de μ-0.01.tar.gz de l'auteur APEIRON, puis il y a des problèmes avec les fichiers de type t/words_with_ß.dat de sortie Lingua-DE-ASCII-0.06 de l'auteur BIGJ. Mais en fin de compte tous les problèmes ont été résolus et que le script avec succès s'est promené sur tous .tar.gz version.

Le script va sur tous les .tar.gz fichiers dans le CPAN. Décompresse .tar.gz dans un dossier temporaire. Trouve dans ce dossier temporaire, tous les fichiers dont les extensions .pm, .pl, .t ou .pod, lit tous les retraits et vérifie si ces indentation des espaces et ou de taba. Dans les versions il y a les autres les fichiers, mais j'ai décidé de limiter les fichiers qui appartiennent clairement à Perl.

Le résultat de ce script est de 2 tables dans la base de données. Voici un exemple de données:

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)

Seuls les espaces, seulement taba, taba et les lacunes, et...

Total dans la base de données de chaque fichier dans le communiqué il y a 2 drapeau:

  • utilise-t-il des espaces d'indentation
  • utilise-t-il de taba d'indentation

En conséquence des deux indicateurs peut être 4 combinaisons:

  • 11 — utilisés et les lacunes et de taba
  • 10 — utilisés uniquement par des espaces
  • 01 — seulement taba
  • 00 — n'utilise pas d'espaces ni de taba

Les trois premières options est tout à fait escomptés de la situation, c'est eux, je voulais trouver et savoir que plus populaire. Et voici une variante de 00 — "ne sont pas utilisés ni taba, ni les espaces" — c'est ce que je n'ai absolument pas pensé mais il s'est avéré que si il arrive aussi. "Comment?" — demandez-vous. Voici un exemple.

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)

L'auteur KOHA un communiqué Bundle-KohaSupport-0.31. Dans cette version, il y a 3 fichier dont l'extension de la liste des .pm, .pl, .t ou .pod. Toutes ces fichiers dans la base écrit que, dans leur indentation n'a ni espaces, ni табов. Comment est-ce possible?

Il s'avère tout simplement. Si ces fichiers, ils ont tout simplement pas d'indentation. Voici, par exemple, le contenu du fichier 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.

De sorte que, outre les trois attendus de situations:

  • utilise uniquement des espaces
  • utilisé seulement taba
  • utilisés et les lacunes et de taba

encore et parfois des situations:

  • n'utilise pas les lacunes et ne sont pas utilisés taba

Les données sur les auteurs

Une fois que j'avais des données traitées dans la base, j'ai décidé de voir pour chaque auteur qu'il utilise pour l'indentation.

Je m'attendais à ce que le plus populaire est l'utilisation de seulement les lacunes, le deuxième plus populaire est l'utilisation de seulement табов, et à la troisième place de la popularité sera l'utilisation simultanée de табов et des lacunes.

Mais il s'est avéré que j'étais tout à fait tort.

J'ai écrit le script . Ce script a vérifié quels sont les symboles utilisés par les auteurs dans tous les fichiers .pm, .pl, .t, .pod, dans toutes les versions qui est désormais disponible sur le CPAN.

Voici ce qui est arrivé:

$ 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%)

Les données n'est pas tout à fait comme je m'y attendais!

  • Plus de 75% des auteurs utilisent un mélange de lacunes et табов pour l'indentation.
  • Seuls les espaces à la deuxième place, à un peu plus de 20%,
  • et les auteurs qui utilisent uniquement taba moins d'un pour cent.
  • Nombre d'auteurs, qui généralement n'utilisent pas l'indentation est pratiquement le même que le nombre d'auteurs qui utilisent uniquement de taba.

La liste complète de tous les auteurs de la ventilation des groupes pro-dire dans un fichier sur GitHub .

Et voici jupyter notebook  qui a construit cette un camembert.

Mais ce sont les données générées par toutes les version qui est désormais disponible sur le CPAN. Ces communiqués créés au cours des dernières 24 ans. Peut-être au fil du temps le rapport que ça change?

Selon l'heure de la

Chaque fichier avec la sortie sur le CPAN le temps de modification est l'heure où ce communiqué a été téléchargé sur le CPAN. Ces données sont chargées dans la base de données. Maintenant, sur le CPAN la plus ancienne version est Ioctl-0.5 — il a été chargé sur le 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)

Et dans ce jour est 8 communiqués de presse:

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)

J'ai décidé de voir comment évolue la répartition de l'utilisation de caractères différents pour des décalages de temps. Pour ce faire, j'ai écrit le script .

Voici un extrait des fichiers de données, ce qui créé un script:

$ 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

C'est-à-dire de chaque date à partir 1995-08-20 il est combien ont été communiqués par ce quels sont les symboles utilisés pour l'indentation.

  • 00 — indentation n'a ni espaces, ni табов
  • 01 — indentation sont utilisés uniquement taba
  • 10 — indentation sont utilisés uniquement par des espaces
  • 11 — dans отсутпах utilisés et de taba et des espaces

Plus loin, j'ai écrit jupyter notebook  qui a dessiné le calendrier. Sur le graphique, j'affiche pas la quantité absolue de communiqués de presse par type d'indentation, et le pourcentage du total des communiqués de presse à ce jour:

Le graphique affiche près de 9 millions de jours. On voit qu'il y a une tendance, mais le calendrier bruyant et mal vu. Car au lieu de jours, je suis devenu regrouper des communiqués de presse par mois.:

Incroyable mais observe une tendance. Nombre de versions qui utilisent uniquement des taba ou pas utilise l'indentation n'a pratiquement pas changé, mais la proportion de rejets dans les espaces en constante augmentation, et cette croissance est due à la part des communiqués de presse qui utilise un mélange de табов et des lacunes.

Pourquoi pousse "espaces". Hypothèse numéro 1

J'ai regardé et j'ai eu une autre hypothèse pourquoi diminue le nombre de communiqués de presse qui utilisent et les problèmes et de taba. Ma pensée pro Perl bibliothèque Module::Install . Si lors de la rédaction de son la bibliothèque utilise le Module::Install, dans un communiqué sur le CPAN inclus les fichiers de cette bibliothèque. Et ces fichiers utilisent un mélange des lacunes et табов. Voici un exemple de fichier de Module::Install dans le communiqué 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)

Mon hypothèse est que les développeurs utilisent des espaces pour l'indentation, mais en raison du fait que dans le communiqué situé Module::Install dans les statistiques sont pris en compte et les lacunes et de taba. Module::Install sont devenus moins utiliser (donc comme il y avait toutes sortes de Dist::Zilla, Dist::Milla, Minilla) et donc le Module::Install a cessé de donner la distorsion.

Cette hypothèse est à vérifier. Tout d'abord, j'ai décidé de vérifier si le Module::Install sont moins utilisés et moins. J'ai construit un graphique. Chaque point est un nombre de versions pour le mois dans lequel utilisé Module::Install. On voit qu'une partie de l'hypothèse verna — vraiment, Module::Install a commencé à utiliser moins.

Mais vraiment si l'utilisation de Module::Install affecte pas la part d'utiliser des espaces ou табов et des espaces pour indentation. Pour le savoir, j'ai dessiné les deux graphiques. C'est le nombre de différents types de retraits dans les versions par mois. Le premier graphique que des versions qui utilisent le Module::Install, sur le deuxième tableau communiqués de presse dans lesquels il n'est pas utilisé.

Ici, on voit que vraiment, si vous utilisez la bibliothèque de Module::Install, le plus souvent dans la bibliothèque de c'est un mélange de табов et des lacunes.

Et voici un graphique qui affiche uniquement les communiqués qui n'utilisent pas de Module::Install. Si l'on compare ce calendrier le calendrier sur lequel se tournent tous les communiqués de presse, puis de la différence, mais rien de vraiment ne change pas.

Il s'avère que l'hypothèse est fausse. Si dans le communiqué utilise le Module::Install, puis relâchez le plus souvent tombe dans le groupe "taba et des espaces", mais ne pas tenir compte de tous les communiqués qui utilisent le Module::Install, nous avons encore tendance la proportion de communiqués de presse qui utilisent uniquement des taba comme le retrait de croître grâce à la proportion de presse dans laquelle sont utilisés un mélange de табов et des lacunes.

Pourquoi pousse "espaces". Hypothèse numéro 2

Pourquoi, tout à augmenter le nombre de sorties qui sont taba? Peut-être il ya quelque chose au-delà de active l'auteur, qui produisent de très nombreuses versions et ces de l'auteur affectent toutes les statistiques?

J'ai essayé de le vérifier. A dessiné un graphique qui affiche la proportion des communiqués de presse dans lesquels utilisé uniquement par des espaces, mais par la première lettre du nom de l'auteur. Si vraiment quelque chose l'auteur a effectué plus de sa grande contribution dans les statistiques, ce soit une sorte de ligne de très spectaculaire soit vers le haut. Sur le graphique que j'ai vu, toutes les lignes plus ou moins droites. Ainsi que la confirmation de cette hypothèse, je ne suis pas réussi à l'obtenir.

Pourquoi pousse "espaces". Hypothèse numéro 3

Sur les horaires, vous voyez qu'au fil du temps devient de plus en plus de communiqués qui utilisent que des espaces pour l'indentation. Et cette proportion augmente de presse dans lequel est utilisé un mélange de les lacunes et les табов.

Ma première hypothèse était que cela est dû au fait que dans les communiqués avant activement comprenaient le code de la bibliothèque de Module::Install dans laquelle on utilise un mélange d'espaces et табов, cette bibliothèque utilisent de moins en moins, et donc la proportion de presse dans lequel est utilisé un mélange de табов et les lacunes diminue. Il s'est avéré qu'une partie de la vérité dans cette, mais même si l'on retirait de la l'examen de tous les communiqués qui utilisent le Module::Install, la tendance générale il ne change pas — tout de même la proportion des sorties dont les seuls espaces de croître grâce à la proportion de communiqués de presse dans lesquels est utilisé, le mélange des lacunes et табов.

Ma deuxième hypothèse est que si affectent les statistiques d'un très petit ensemble très actifs auteurs. Je n'ai pas pu trouver la confirmation de cette hypothèse.

Ma troisième hypothèse réside dans le fait que les auteurs semblent plus confortables les éditeurs de texte et IDE, grâce à laquelle il devient plus facile d'utiliser консистентно des espaces, et non pas un mélange des lacunes et табов. Mais, malheureusement, les idées de la façon de vérifier cette hypothèse, je n'ai pas. Dans les données qui se trouvent sur le CPAN pas d'information sur le l'éditeur a été utilisé lors de la création de ce communiqué. J'ai regardé sur les dates de sorties top éditeurs/IDE:

  • Emacs — 1985
  • vim — 1991
  • IntelliJ IDEA — январяь 2001
  • Eclipse — novembre 2001
  • Sublime Text — janvier 2008
  • Atom — février 2014
  • VS Code — avril 2015

Les données sur les auteurs en 2019

Sur les précédents graphiques on voit qu'au fil du temps devient de plus en plus de communiqués qui utilisent des espaces, et non un mélange de табов avec des espaces. J'ai donc décidé de voir la distribution de quels types d'indentation utilisé par les auteurs uniquement sur la base de leurs rejets en 2019.

Les données des résultats du travail de script :

$ 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%)

Si l'on compare les données sur les auteurs en 2019 et les données pour toutes les années, on voit que le pourcentage d'auteurs qui utilise uniquement taba n'a pratiquement pas changé, mais la part de les auteurs qui utilisent uniquement des espaces fortement augmenté.

Le code source pour ce diagramme circulaire:

Facteurs influant sur l'exactitude des données

Pour former les nombres et les graphiques ont été utilisés .tar.gz communiqués de presse, qui étaient sur le CPAN au moment de commencer la rédaction de cet article, à l'exception des communiqués plus le langage de programmation Perl.

CPAN vous permet de supprimer des communiqués de presse, dans les données qui sont présentées dans cet article supprimé les communiqués de presse n'ont pas participé. Il est incompréhensible de savoir combien seront données si compte des caractères en retrait déjà supprimés versions. Il est possible que les données seront fortement. Il existe une archive backpan  qui stocke tous les communiqués de presse, qui ont été sur le CPAN. Donc en théorie, il existe la possibilité de recalculer tous les les nombres en fonction communiqués de presse qui n'est pas déjà sur le CPAN.

Le deuxième point, qui affecte l'exactitude des données — c'est ce que compte tenu de caractères retrait uniquement dans les versions qui ont été inclus dans le .tar.gz l'archive. D'autres types de les archives n'ont pas été utilisés. La grande majorité des communiqués de presse est .tar.gz donc a fait une telle hypothèse. Si recalculer les données de tous les fichiers de données certainement changé. Je suppose que le changement ne sera pas plus de quelques pour cent.

Le code source

Tout un ensemble de scripts qui ont été utilisés pour la collecte des données, données et jupyter tous les ordinateurs portables sont disponibles dans le dépôt GitHub.

Le code qui est écrit — elle très loin de la perfection. Tout ce que l'on il est écrit avec les idées le plus rapidement possible pour obtenir le résultat, et ne pas donner le code complet.

Résumé

Au moment de la rédaction de ce texte dans le référentiel de bibliothèques Perl CPAN, il y avait environ 135 millions de communiqués de presse. La première version a été faite 24 ans (1995-08-20). Dans ces versions se trouve près de 4 millions de fichiers avec les extensions de .pm, .pl, .t ou .pod.

Si l'on tient compte des données de tous les temps, on a que 76.7%% des auteurs d'indentation utilisent un mélange de lacunes et табов, 21.9% utilisent d'indentation que des espaces, et 0.7% seulement de taba.

Mais si l'on tient compte uniquement des données en 2019, il est de plus en plus d'auteurs qui utilise uniquement des espaces pour l'indentation, mais en tout cas la plupart utilise un mélange de табов et des lacunes (56.4% — utilisent et taba et des espaces,des espaces 41.2% seulement des espaces, 1.0% seulement de taba).

Et si vous regardez le calendrier des modifications des parts de l'utilisation de différents types d'indentation, on voit que la part de utiliser uniquement des lacunes augmente et ce pourcentage augmente au détriment de la part de ceux qui utilise un mélange de табов et d'espaces pour l'indentation.

On ne sait pas exactement pourquoi cette proportion est en augmentation. Peut-être que c'est dû au fait que les auteurs utilisent de plus en plus confortables, les éditeurs de texte qui permettent le plus facile et le plus fiable pour installer quels sont les caractères à utiliser pour l'indentation.

D'autres articles