La plupart des programmeurs ont leurs propres préférences personnelles pour les jeux de couleurs mettant en évidence la syntaxe, mais je me suis demandé si quelqu'un avait déjà fait une étude scientifique réelle sur le meilleur jeu de couleurs. J'imagine qu'une telle étude examinerait des choses comme la lisibilité du code, si les yeux du programmeur sont attirés par les parties les plus importantes, etc.
Peut-être que cela a déjà été fait pour quelque chose comme le thème Visual Studio par défaut, mais j'aimerais savoir s'il existe des études accessibles au public et ce qu'elles ont trouvé.
Les schémas de couleurs spécifiques ne peuvent pas être objectivement meilleurs que tous les autres schémas de couleurs, leur classement serait individuellement subjectif en fonction des goûts et des facteurs culturels.
Cependant, certaines règles de lisibilité/clarté, d'utilisation dans des environnements de lumière ambiante, etc., etc.
Le projet Solarized d'Ethan Schoonover est un travail intéressant: http://ethanschoonover.com/solarized
Ils ont seulement une étude modérément récente qui est liée à distance au sujet que je connais est celle de 2004: "L'impact des combinaisons de couleurs texte-fond de page Web sur la lisibilité, la rétention, l'esthétique et intention comportementale " par Hall & Hanna . Cependant, ce n'est pas pour le code mais pour les pages Web et le seul jeu de couleurs qu'ils considèrent est les couleurs de premier plan et d'arrière-plan.
J'ai posé des questions sur les schémas de couleurs liés aux études pour les programmeurs sur Skepics.SE: "Les schémas de couleurs claires sur sombres pour les écrans d'ordinateur sont-ils meilleurs pour les programmeurs?". Il n'y a pas eu de réponse depuis presque 2 ans maintenant, alors que normalement ce type de question y est répondu assez rapidement. Ce qui m'amène à croire qu'il n'existe pas de telles études scientifiques.
Nous avons récemment mené une étude utilisateur sur les présentations de code visuellement plus riches que la mise en évidence de la syntaxe. Bien que ce ne soit pas tout à fait une étude sur les schémas de mise en évidence de la syntaxe, vous pourriez trouver cela perspicace:
D. Asenov et O. Hilliges et P. Müller - L'effet des visualisations plus riches sur la compréhension du code et voici le vidéo de la conférence de 10 minutes au CHI 2016.
Nous avons comparé la mise en évidence de la syntaxe Eclipse standard à deux présentations de code plus riches avec des extras visuels tels que:
L'étude a montré que l'augmentation de la variété visuelle de la présentation avait un effet assez important sur la vitesse à laquelle les développeurs pouvaient comprendre la structure du code - le temps a été réduit jusqu'à 75%. Il est important de noter qu'il s'agit de questions simples concernant la structure du code (par exemple "Y a-t-il des boucles imbriquées dans la méthode?"). Nous n'avons pas testé des tâches qui nécessitent une réflexion complexe (par exemple, "Que fait cette méthode?"), Car elles sont dominées par les compétences de la personne plutôt que par les effets de la présentation du code.
Une conclusion intéressante de notre étude est que nous n'avons pas observé de surcharge visuelle en raison des visualisations plus riches. Même si de nombreux participants ont déclaré ressentir une surcharge visuelle ou une confusion, les données que nous avons collectées (le temps de fournir une réponse et si elle était correcte) n'ont montré une amélioration qu'avec des visualisations plus riches.
En ce qui concerne la mise en évidence de la syntaxe, nos résultats suggèrent indirectement que l'utilisation d'une plus grande variété visuelle (par exemple, plus de couleurs et de couleurs pour plus de types de constructions de programmation) sera bénéfique. Par exemple. un thème avec des couleurs distinctes pour les types intégrés, les mots clés de flux de contrôle et le reste des mots clés, est susceptible d'améliorer la compréhension de la structure du code dans certains cas, par rapport à un thème simple qui utilise une seule couleur pour tous les mots clés .
Je ne pense pas que de telles études existent. En pratique, lorsqu'une entreprise crée un nouvel IDE, la syntaxe de mise en évidence des couleurs est basée sur les schémas existants des autres IDE.
Par exemple, le thème Visual Studio par défaut n'a rien de nouveau ni d'original. La couleur bleue a été utilisée pour les mots clés pendant des années, y compris par les anciens IDE Ada. Même chose pour les commentaires verts. Certaines couleurs étaient plus ou moins "nouvelles", comme le sarcelle pour les noms des classes, mais vous pouvez facilement comprendre la raison du choix de ces couleurs: il serait raisonnable de définir une couleur qui n'est pas loin du bleu (puisque ce sont des à peu près comme des mots réservés: Int32
pour .NET, int
pour C #, etc.), mais il doit rester une couleur de base, distincte du bleu déjà utilisé.
Maintenant, qu'en est-il des schémas alternatifs, comme le texte clair populaire sur fond sombre? Ils ne sont pas créés par un scientifique qui a étudié le sujet pendant des années et fait des calculs compliqués pour obtenir la correspondance parfaite exacte. Au lieu de cela, un développeur crée un schéma qui est lisible pour lui. Il le partage sur un site Web, et cela devient populaire. C'est toute la magie.
Dernière chose: existe-t-il des règles de lisibilité? Pas trop.
Pour la plupart, c'est quelque chose de subjectif: vous ne pouvez pas affirmer qu'un mot-clé bleu est plus lisible qu'un mot-clé violet, parce que quelqu'un pourrait répondre que pour lui, sur son moniteur, le mot-clé violet est beaucoup plus lisible que le bleu.
Pour une autre partie, c'est juste logique. Un schéma en noir et blanc ne serait pas aussi lisible que celui par défaut. De la même manière, vous ne pouvez pas définir des mots clés sur jaune clair et des commentaires sur gris clair (disons #eee
) sur fond blanc, car c'est illisible, et vous n'avez même pas besoin d'expliquer pourquoi. Ce sont les mêmes règles lors de la création d'un site Web ou de l'impression d'un livre ou autre.
Comme une sorte d'étude approximative, les captures d'écran ci-dessous montrent 3 thèmes de couleurs utilisés pour mettre en évidence la syntaxe XSLT. J'ai choisi XSLT car il pose un défi particulier en raison du grand nombre d'éléments de langage - et aussi parce que de nombreux développeurs le décrivent comme laid.
Solarisé
Nuit de demain
Github
Observations
Le nombre de couleurs utilisées dans l'exemple permet de distinguer les différents éléments du langage, mais il peut s'avérer gênant pour un développeur.
Il aide à passer des couleurs froides aux couleurs chaudes si possible, en utilisant des couleurs froides pour les parties les plus neutres de la langue. Une alternative est de passer des teintes pastel à des teintes plus vives (saturation des teintes).
La couleur d'arrière-plan fait une énorme différence dans la perception des couleurs de premier plan.
Certaines couleurs de premier plan adjacentes peuvent provoquer de mauvais affrontements qui dérangent l'œil, le rouge et le vert en particulier ne semblent pas bien aller ensemble.
Avec un fond sombre, il est plus facile de fournir une large gamme de couleurs de premier plan avec un contraste suffisant entre elles et avec le fond.
Enfin, des facteurs externes tels que la lumière ambiante et la qualité et l'étalonnage du moniteur font une énorme différence.
Conclusion
Il est préférable d'utiliser des outils qui offrent un moyen extensible de définir des thèmes de couleurs car il est peu probable qu'un thème de couleur unique réponde aux besoins de tous les développeurs, et même le même développeur peut fréquemment changer ses préférences en fonction de divers facteurs.
Eh bien, je suppose que la première question sera de savoir si le fond blanc est une bonne idée. Tout simplement parce qu'il se rapproche du vrai papier et que nous pouvons trouver partout sur Internet de nos jours ne fait pas nécessairement un bon choix (ou je peux dire parfait).
Je me souviens qu'il y a (beaucoup, beaucoup) d'années, nous n'avions que le "schéma de couleurs" jaune sur noir. Et je me souviens aussi que ce n'était pas si mal. Il n'avait pas ce contraste en noir et blanc. Il n'y a pas si longtemps, j'ai appris que c'était aussi mieux pour l'œil humain.
Parfois, je me demande vraiment qui conçoit les schémas de couleurs qui, par exemple être livré avec les systèmes d'exploitation. Je les ignore habituellement, mais je me souviens avoir vu des mélanges vraiment superbes de rose et de vert et ainsi de suite. Eh bien, je ne me drogue pas ...
Il y a quelques études sur ce que les couleurs font à votre subconscient (calmez-vous, provoquez des agressions, ...). Je pense que les schémas de couleurs couramment utilisés sont quelque peu basés sur cela. Peut-être qu'ils ont juste ajouté la lisibilité. Le codage ne devrait pas être une mission suicide.
Mais en ce qui concerne le schéma de couleurs des IDE actuels, je suis d'accord avec ça. Avouons-le: l'idée simple derrière cela est de faciliter la recherche de quelque chose de différent du "bruit de code" général. Et pour être honnête, je ne me soucie pas vraiment des couleurs qu'ils utilisent pour permettre cela. Cela ne devrait pas me faire mal aux yeux ou brûler des parties du code à l'arrière de ma tête, comme un rouge éclatant sur un ton de vert.
Le codage devrait être relaxant. Et c'est ce que c'est pour moi.