Question

J'ai souvent lu que certains langages de programmation sont claires que d'autres et je me suis demandé plusieurs fois s'il existe un moyen objectif de mesurer la clarté d'une langue pour la conception, étant donné une syntaxe abstraite, une syntaxe de béton clair et humain convivial que possible. Peut-être existe une sorte de modèles de dessins à cette fin?

En bref: Comment parvenir à la clarté maximale d'une syntaxe? Connaître toute façon de quantifier la « clarté » ou « expressivité » d'une langue?

est logique d'essayer de mesurer ces aspects?

Merci.

Était-ce utile?

La solution

J'ai entendu cette phrase trop souvent jetés négligemment à différentes langues et différentes personnes choisira des langues différentes en fonction de différents critères.

Beau code , Yukihiro Matsumoto (le concepteur de Ruby) fait un argument à quel point il est plus simple à écrire un programme mondial Bonjour à Ruby que dans Java. Bien que je ne pense pas que cet exemple est destiné à l'échelle, le point de l'auteur est que la quantité de cochonneries que vous devez ajouter à votre code reflète la deficulty dans la compréhension d'un programme écrit dans une langue que. Autrement dit, moins vous obtenez distraction, plus « lisible » le programme est.

Maintenant, dans mon expérience, de bons programmeurs écrire un code clair dans toutes les langues qu'ils pRogRaMMe, mais encore plus clairement dans les langues qu'ils connaissent mieux. Le talent de l'auteur ainsi que l'ampleur de son expérience en cette fin de lenguage jusqu'à nanisme la langue elle-même de la clarté ou l'expressivité.

Un autre point à considérer est la quantité des bibliothèques disponibles et la qualité des API. Si vous devez écrire moins « code de soutien » pour faire le travail, alors il est probable que le programme qui en résulte est plus clair car il semble le point le plus droit.

Autres conseils

Il y a eu quelques études dans ce qu'on appelle la « programmation naturelle » qui peut être vous intéresser:

http://www.cs.cmu.edu/~NatProg/index .html

Ils tentent de concevoir des langues pour répondre aux attentes de l'homme au lieu d'essayer de se conformer aux gens de ce qui est plus simple pour un ordinateur. Et ils se basant sur des expériences. Par exemple étudier combien de personnes ramèneront une poire d'une boîte de fruits lorsque vous Dites-leur de « quelque chose de ramener arrière n'est pas une pomme ou une poire ». (Je l'ai pas suivi leurs résultats, mais il sonnait comme un projet prometteur.)

Pourtant, la « clarté » et « expressivité » sont des choses nébuleuses à jauger. Il existe des études de cours qui ne mesure quantitative des langues uns contre les autres, comme le Computer Language Benchmarks Jeu . Certaines personnes ont des données de solutions proposées dans ce jeu et les tendances comme la représentation graphique « Code de taille par rapport à la performance »:

http: //blog.gmarceau .qc.ca / 2009/05 / vitesse taille et fiabilité-of.html

Vous pourriez être en mesure de faire des propositions basées sur des paramètres instables au sujet d'un usage de langue générale fondée sur les tendances de la taille du code qu'il faut pour effectuer une tâche donnée efficace. Mais alors vous mettre le doigt sur des notions assez subjectives de ce « clarté » et « expressivité » sont. (Je suis partial à croire des programmes plus courts qui font le même travail plus rapide sont souvent plus claire, mais il y a beaucoup de contre-exemples.)

Je dirais qu'en l'absence d'un public cible défini avec lequel vous pouvez faire des études d'utilisabilité avec des sujets de test, vous ne ferez pas beaucoup mieux que ce genre de mesures pour faire des généralisations sur les langues.

(Note: Je aime Rebol et je pense qu'il a le pouvoir d'être incroyablement claire et expressive. ..mais uniquement si vous utilisez une certaine manière qui consiste à développer les dialectes DSL que vous allez, ce qui est la façon dont beaucoup de gens pensent quand ils programment. Et pourtant!)

Je ne pense pas qu'il y ait. La clarté est subjective, et les modèles de conception ne sont pas une bonne mesure pour la clarté d'une langue (en effet, modèle de conception sont généralement nés pour contourner la limitation d'une langue).

Certaines personnes aime une langue riche et concise sémantique (par exemple Perl) et ne me dérange pas vraiment l'utilisation de symboles, tandis que d'autres préfère une syntaxe qui ressemble langage naturel, de sorte que vous semblez parler à l'ordinateur (par exemple Hypercard ) et ne pas vraiment l'esprit la verbosité ou ambigüités.

Une question comme cela se traduit généralement par une réponse pédant.

Les langues sont comme des outils.

Ils sont conçus pour répondre à certaines fins. langage de programmation logique à résoudre certains problèmes d'une manière plus élégante qu'un programme orienté objet serait. De même, beaucoup principale solution de flux sont facilement fait par un langage objet typique orienté ou de procédure.

Tempérament et d'autres facteurs de l'utilisateur de l'outil, dans ce cas, un programmeur est également importante. Certaines personnes ont obtenu des solutions astucieuses en Perl, mais il a toujours regardé comme la magie noire pour moi. Je préfère la simplicité structurelle de Python. Pour certains, il est l'utilisation de l'espace blanc a été abominable.

Il serait au mieux une évaluation très subjective, s'il peut y avoir une évaluation d'une clarté linguistique et expressivité.

Comment jamais, une indication claire est la richesse de la production de code dans cette langue. Certaines langues comme brainfuck n'a pas été adopté en Python, Ruby, etc ont gagné en popularité. Bien que, ceux-ci et beaucoup facteur peut être un indicateur seulement. Certaines langues, en dépit de bonnes constructions peuvent ne pas trouver beaucoup de preneurs.

Effet réseau affectent également l'adoption de la langue.

Je trouve LOLCODE être la langue la plus compréhensible de tous:

HAI
CAN HAS STDIO?
I HAS A VAR
IM IN YR LOOP
    UP VAR!!1
    VISIBLE VAR
    IZ VAR BIGGER THAN 10? KTHXBYE
IM OUTTA YR LOOP
KTHXBYE

Mesure de la compréhensibilité d'une langue n'est pas aussi importante que la mesure de la compréhensibilité d'un programmeur.

Vous pouvez également consulter le livre « Concepts de langages de programmation » par Dernière édition par R. W. Sebesta. Il y a dans ce livre chapitre (chapitre 1 ou 2 Je ne me souviens pas exactement) discuter des critères pour évaluer un langage de programmation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top