Domanda

Spesso ho letto che alcuni linguaggi di programmazione sono chiari di altri e mi sono chiesto più volte se esiste un modo oggettivo per misurare la chiarezza di un linguaggio per la progettazione, data una sintassi astratta, una sintassi concreta il più chiaro e umana friendly possibile. Forse esiste un qualche tipo di modelli di disegni a tal fine?

In breve: come è possibile ottenere la massima chiarezza di una sintassi? Conoscere un modo per quantificare la "chiarezza" o "espressività" di una lingua?

Ha senso cercare di misurare questi aspetti?

Grazie.

È stato utile?

Soluzione

Ho sentito questa frase troppe volte incautamente gettati in diverse lingue, e diverse persone sceglierà lingue diverse in base a criteri diversi.

Bella Codice , Yukihiro Matsumoto (designer di Ruby) fa una discussione su come molto più semplice è quello di scrivere un programma Ciao mondo in Ruby che in Java. Anche se non credo che questo esempio ha lo scopo di scala, punto dell'autore è che la quantità di cruft si deve aggiungere al vostro codice riflette la deficulty nel comprendere un programma scritto in un tale lingua. Cioè, la meno distrazione che si ottiene, più "leggibile" il programma è.

Ora, nella mia esperienza, buoni programmatori scrivere codice chiaro in tutte le lingue che programmare in, anche se ancora più chiaramente in lingue che sono più familiarità con. il talento dell'autore, così come l'ampiezza della sua esperienza in questo fine lenguage fino fa impallidire il linguaggio stesso del chiarezza o espressività.

Un altro punto da considerare è la quantità di librerie disponibili e la qualità delle API. Se si deve scrivere meno "codice di supporto" per ottenere il lavoro fatto, allora è probabile che il programma risultante è più chiara perché sembra più dritto al punto.

Altri suggerimenti

Ci sono stati alcuni studi in quella che viene chiamata "la programmazione naturale", che possono essere di interesse per voi:

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

Tentano di progettare lingue per soddisfare le aspettative umane, invece di cercare di conformarsi le persone a ciò che è più semplice per un computer. E stanno basandosi su esperimenti. Ad esempio studiando quante persone riportare una pera da una scatola di frutta quando si istruirli a "riportare qualcosa non è una mela o una pera". (Non ho tenuto il passo con i loro risultati, ma sembrava un progetto promettente.)

Ancora, "chiarezza" e "espressività" sono cose nebulosi per valutare. Ci sono degli studi del corso che fanno misura quantitativa delle lingue uno contro l'altro, come il Linguaggio benchmark Gioco . Alcune persone hanno preso i dati da soluzioni offerte in quella partita e graficamente le tendenze come "codice di prestazioni dimensioni vs":

http: //blog.gmarceau .qc.ca / 2009/05 / velocità-size-and-affidabilità-of.html

Si potrebbe essere in grado di fare alcune proposte traballante metriche basate su un general-purpose lingua in base alle tendenze in termini di dimensioni del codice che serve per eseguire in modo efficiente un determinato compito. Ma allora sei pinning giù nozioni abbastanza soggettiva di ciò che "chiarezza" e "espressività" sono. (Io sono di parte a credere programmi più brevi che fanno lo stesso lavoro più veloce, spesso più chiara, ma ci sono molti controesempi.)

Quindi direi che, in assenza di un target definito con il quale si può fare studi di usabilità con soggetti del test, non sarà possibile fare molto meglio di questo tipo di metriche per fare generalizzazioni sulle lingue.

(Nota: Mi piace Rebol e penso che abbia il potere di essere incredibilmente chiara ed espressiva. ..ma solo se lo si utilizza in un certo modo, che coinvolge lo sviluppo di dialetti DSL, come si va, che non è il modo in cui un sacco di gente pensa quando si programmano. Eppure!)

Non credo che ci sia. La chiarezza è soggettivo, e modelli di progettazione non sono una misura buona per chiarezza di una lingua (anzi, modello di progettazione di solito sono nato per aggirare la limitazione di una lingua).

Alcune persone piace una lingua con ricca e conciso semantica (ad esempio Perl) e in realtà non importa l'uso di simboli, mentre altri preferisce una sintassi che ricorda il linguaggio naturale, in modo tale che vi appaiono per parlare con il computer (ad esempio Hypercard ) e in realtà non importa il livello di dettaglio o ambiguità.

Una domanda come questa di solito si traduce in una risposta saccente.

Le lingue sono come strumenti.

Sono costruiti per soddisfare determinati scopi. linguaggio di programmazione logica risolvere alcuni problemi in un modo più elegante di un programma orientato agli oggetti avrebbe fatto. Allo stesso modo, molti soluzione flusso principale sono facilmente fatto da un linguaggio tipico orientato agli oggetti o procedurale.

Temperamento e di altri fattori dell'utente strumento, in questo caso, un programmatore è importante. Alcune persone hanno raggiunto le soluzioni ingegnose in Perl ma ha sempre guardato come la magia nera per me. Io preferisco la semplicità strutturale di Python. Per alcuni, è di uso dello spazio bianco è stato abominevole.

Sarebbe nel migliore dei casi una valutazione molto soggettiva, se non ci può essere una valutazione di una chiarezza il linguaggio ed espressività.

Come sempre, una chiara indicazione è la ricchezza della produzione di codice in quella lingua. Alcuni linguaggio come brainfuck non è stato adottato, mentre Python, Ruby ecc hanno guadagnato popolarità. Anche se, questi e molti fattore può essere solo un indicatore. Alcuni lingua, nonostante le buone costrutti non può trovare molto acquirenti.

effetto rete influisce anche l'adozione della lingua.

I trovare LOLCODE ad essere la lingua più comprensibile di tutti:

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

Misurare la comprensibilità di una lingua non è importante quanto la misurazione della comprensibilità di un programmatore.

Si può anche guardare il libro "Concetti di Linguaggi di programmazione" di ultima edizione, di R. W. Sebesta. C'è capitolo di questo libro (capitolo 1 o 2 non ricordo esattamente) discutere i criteri per valutare un linguaggio di programmazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top