Domanda

Dopo alcune riflessioni stupide sui linguaggi Klingon, che provenivano da questo Post ho iniziato un progetto hobby sciocca la creazione di un linguaggio di programmazione Klingon che compila a Lua byte-code. Durante la fase iniziale di progettazione lingua ho guardato informazioni su Klingon programmatori , e scoperto su questa regola di programmazione Klingon:

  

Un VERO Klingon Warrior non commenta il suo codice!

Così ho deciso la mia lingua sarebbe non supportare commentando , come ogni buon Klingon non avrebbe mai usarli.

Ora, molti dei modi Klingon non sembrano ragionevoli per noi programmatori umani, tuttavia mentre dilettarsi con la progettazione e la realizzazione del mio linguaggio mio hobby mi sono reso conto che questa regola Klingon circa commentare è davvero molto ragionevole, se non grande.

La rimozione la possibilità di commentare da un linguaggio di programmazione significava I HA di scrivere codice letterato , senza eccezioni.

Così mi ha fatto chiedo se ci sono tutte le lingue là fuori che non supportano i commenti?

E 'ci sono veramente buoni argomenti per non rimuovere commentare da una lingua?

Edit: Alcune buoni esempi di commenti richieste


P.S.> La mia lingua passatempo di cui sopra è parzialmente stupido comunque, in modo da non concentrarsi troppo sulla mia realizzazione, per quanto il concetto di commenti richiesti in generale

È stato utile?

Soluzione

Non sono sicuro sono d'accordo con il "avere" nella dichiarazione "Rimozione la possibilità di commentare da un linguaggio di programmazione significa che ho dovuto scrivere il codice, senza eccezioni letterato", poiché non è come se tutto il codice è documentato. La mia ipotesi è che la maggior parte delle persone scrivere codice illeggibile.

Più precisamente, io personalmente non credo nella realtà del programma di auto-esplicativo o API nel mondo pratico.

La mia esperienza da analizzare manualmente la documentazione di interi API per la mia tesi suggerisce che troppo spesso che avrebbe dovuto trasportare più informazioni di quanto si possa trasmettere nella firma da solo. Se si eliminano i commenti di interfaccia dalla tua lingua, quali sono le alternative? Nessuna documentazione non è un'opzione. documentazione esterna è meno probabilità di essere letto.

Per quanto riguarda la documentazione interna, posso vedere il tuo punto nel voler ridurre la documentazione per convincere la gente a scrivere meglio. Tuttavia, i commenti servono molti scopi di collaborazione e di coordinamento e hanno lo scopo di aumentare la consapevolezza delle cose. Bandendo questi dettagli alle posizioni extenral, si stanno riducendo le probabilità che essi vengono a conoscenza di un futuro del lettore, a meno che la vostra attrezzatura è grande.

Altri suggerimenti

Non commento quello che state facendo, ma perché si sta facendo.

Il Qual è curata dal codice pulito, leggibile e semplice con una corretta scelta dei nomi delle variabili per sostenerlo. Commenti mostrano una struttura di livello superiore per il codice che non può essere (o è difficile da) mostrare dal codice stesso.

Ugh, non essendo in grado di commentare rapidamente una linea (o linee) durante il test suona fastidioso per me, soprattutto quando lo scripting.

In commenti generali sono una verruca che indica cattiva progettazione, i commenti particolarmente lungo sconnesso dove la sua chiara lo sviluppatore non ha avuto un indizio che cosa diavolo hanno dove fare e cercato di fare per essa scrivendo un commento.

Luoghi dove i commenti sono utili:

  • Lasciando un numero di ticket accanto ad una correzione così i futuri programmatori in grado di capire le esigenze di business
  • Spiegando un hack particolarmente difficile
  • Commento sulla logica di business per un pezzo di codice
  • descrizioni troppo succinti a documentazione API in modo da una terza parte possibile utilizzare l'API

In ogni caso i programmatori dovrebbero cercare di scrivere codice che è descrittivo e non scrivere commenti che descrivono il codice scritto male. Detto questo penso che ci sono un sacco di validi motivi che le lingue dovrebbero e devono sostenere commenti.

Il tuo codice ha due tipi di pubblico distinte:

  • Il compilatore
  • Gli esseri umani come noi

Se si sceglie di rimuovere i commenti del tutto, l'ipotesi che si sta assumendo è che vi sarà approvvigionando solo al compilatore, e niente altro.

Naturalmente, essendo Klingon, non può avere bisogno di commenti perché non sei umano. Forse si potrebbe chiaramente dimostrare a noi la vostra capacità parlando in IL, invece?

Non necessità una sola asserzione nel codice perché, nella modalità di rilascio, sono tutti andati. Ma quando C ++ non ha avuto affermazioni built-in, qualcuno ha scritto la macro assert per sostituirlo.

Naturalmente non necessità commenti, o, per più o meno la stessa ragione. Ma se si progetta un linguaggio senza commenti, la gente comincerà a fare le cose come:

HelperFunctionDoesNothing("This is a comment! Blah Blah Blah...");

Sono curioso. Come si fa a impedire a qualcuno di dichiarare una stringa statica che contiene un commento e poi ignorando la variabile per il resto del func / metodo / procedura / scontro / qualcosa?

var useless_comment = "Can we destroy our enemies?"
if (phasers on full) return Qapla'

Lingue bisogno di commenti. Almeno il 95% dei commenti può essere sostituito da codice più chiaro, ma ci sono ancora ipotesi è necessario documentare e assolutamente bisogno di documentare se c'è qualche problema esterno che si sta lavorando intorno.

Non ho mai scrivere un commento senza prima considerare se posso cambiare il codice per eliminare la necessità di esso, ma a volte non è possibile.

Mentre tutto il codice sorgente è coperto da copyright per impostazione predefinita. Spesso è bello:

  1. ricordare la persona che legge il codice sorgente che è soggetto a copyright

  2. dire alla gente quali sono i termini di licenza sono per quel file di codice sorgente

  3. dire loro anche se non sono alla ricerca di un segreto commerciale protetto

Purtroppo, senza commenti, è difficile fare questo.

Sono l'unico che commenta fuori un paio di linee di codice per una serie di scopi?

Mentre è vero che gli esseri umani devono essere in grado di commentare il codice, non è assolutamente necessario che la lingua direttamente supporta commentando: per la maggior parte delle lingue, sarebbe banale per scrivere uno script che elimina uno commenti di linea (ad esempio, tutti i linee che iniziano con '#' o qualche altro carattere) quindi esegue il compilatore.

In realtà, però, mi sono sorpreso e deluso di apprendere che anche i miei preferiti linguaggi di programmazione esoterici supportano commenti: Brainf ** k e Whitespace . Queste lingue sono destinate ad essere difficile da leggere, quindi sembra che essi non dovrebbero sostenere commentando. (Al contrario di mia altra lingua preferita esoterica: LOLCODE , che è destinato ad essere auto-documentazione, in lolcats-speech )

Vorrei dissentire dagli altri answerers su questo punto: io dico, essere fedele alla tua visione di un linguaggio di programmazione Klingon, e non supportano i commenti

!

Un punto contro i commenti è che tendono a cadere spesso non aggiornati con il codice. Ogni volta che si aggiunge un licenziamento, si sta rischiando questa sorta di incoerenza.

In realtà c'è alcune interessanti ricerche che ho visto quando un gruppo ha utilizzato la PNL per analizzare i commenti bloccaggio in qualche sistema di grandi dimensioni e poi confrontarle con i risultati delle analisi statica e sono stati in grado di risolvere alcuni bug in questo modo.

Non è programmazione letterata tanto commento in quanto è il codice? Certo, molto di ciò che ho visto di programmazione letterata ha tanto spiegazione di codice, se non di più commenti.

Si potrebbe pensare che gli sviluppatori che scrivono in lingua faranno uno sforzo supplementare per scrivere codice chiaro, ma l'onere sarà effettivamente essere sul per la progettazione di un linguaggio che è così espressiva che non ha bisogno di essere commentato. L'inferno, neanche inglese è così (abbiamo ancora parenthesize!). Se la vostra lingua non è così concepito può benissimo essere utilizzabile come Brainfuck e godersi la popolarità e il rispetto dei Brainfuck.

Devo aggiungere link o sono collegamenti considerato commentlike?

Inoltre, la gente troverà modi per aggiungere commenti se hanno bisogno di da dirottamento stringhe e abuso nomi delle variabili (che non fanno altro che stare in per i commenti). Hai letto Godel Escher Bach

Sarà una cattiva idea per rimuovere l'impianto commentando tutto. Sicuramente gli sviluppatori devono imparare a scrivere codice con i commenti minimi cioè di scrivere di sé il codice che documentano, ma c'è un sacco di casi in cui si deve spiegare perché qualcosa è stato fatto il modo in cui è. Considerate i seguenti casi:

  • un nuovo sviluppatore potrebbe iniziare mantenere il codice e il dev originale ha lasciato / out del progetto
  • un cambiamento nella specificazione o esigenza di mercato porta a qualcosa che è contro intuitivo
  • copiare preavviso giusto soprattutto se open source (alcune librerie open source richiedono di fare questo)

E 'anche la mia esperienza che i nuovi programmatori tendono a lasciare un commento, di più e come si sviluppano le competenze loro codice tende a diventare auto documentazione e concisa. In generale, i commenti dovrebbero essere sul perché e non come o che cosa.

NO -. Non c'è un solo linguaggio di programmazione là fuori che richiede commenti

Il linguaggio è per il computer. I commenti sono per gli esseri umani. È possibile scrivere un programma con 0% commenti. Sarà eseguire, a torto oa ragione. Non è possibile scrivere un programma con 100% di commenti. Sarà o non compilare - non principale (), ecc. - o, per i linguaggi di scripting, fare esattamente nulla

E, inoltre, programmatori reali non commentano il loro codice . Proprio come i Klingon.

Mentre sono d'accordo con le risposte di Uri, anch'io ho fatto una lingua con commenti. ( ichbins .) La lingua doveva essere il più semplice possibile pur essendo in grado di esprimere il proprio compilatore in modo pulito; dato che è possibile farlo senza commenti, hanno ottenuto gettato fuori bordo.

sto lavorando fuori e su una revisione che supporta il commento, ma un po 'diverso: stile letterato-programmazione con il codice annidato nel testo invece di commenti incorporati nel codice. Si potrebbe anche ottenere esempi / test-casi poi come caratteristica del linguaggio di prima classe.

Buona fortuna con il Klingon di hacking. : -)

Non posso dirvi quanto sono grato per il Javadoc - che è davvero semplice da configurare all'interno dei commenti. Ecco, questo è almeno un senso in cui i commenti sono utili.

No, naturalmente una lingua non avere commenti. Ma un (utile) programma non avere commenti ... Non sono d'accordo con la tua idea che il codice alfabetizzata manca commenti. Alcuni molto buon codice è facilmente comprensibile, con i commenti, ma solo con difficoltà senza.

Credo che i commenti sono tenuti in molte situazioni.

Per esempio, pensare di quelli algoritmici. Supponiamo che ci sia una funzione scritta in C che risolve il viaggio Salesperson problema , ci sono un'ampia gamma di tecniche che possono essere utilizzate per far fronte a questo problema. E i codici sono di solito criptico per sua natura.

senza descrivere esplicitamente i parametri e l'algoritmo utilizzato, tramite i commenti, è quasi impossibile riutilizzare questo pezzo di codice.

Possiamo vivere senza commenti sul codice? Certo, ma che non farà vivere più facile.

  

Sono commenti necessari per un linguaggio di programmazione?

No. Nel grande schema delle cose un compilatore non poteva fregare di meno un commento e vuole solo il codice per macinare fino a un più basso comune denominatore.

  

E 'utile per un linguaggio di programmazione per fornire un commento costrutto?

Sì. I commenti sono molto utili per un programmatore e non solo fingere come sanno quello che stanno facendo, ma in debug e utilmente documentare pure.

I commenti sono utili perché rassicurare la persona che legge il codice - probabilmente il "futuro te" -. Che avete pensato per il suo benessere

Sta andando essere più difficile di quanto si pensi di fare un linguaggio in cui i commenti sono impossibili.

if (false) {
    print("This is a comment. Chew on that, Klingons!")
}

Credo che la questione può diventare come autosufficiente sarebbe la lingua senza commenti essere? Se, per esempio, si compila verso il basso per le DLL che vengono utilizzati all'interno altro codice, allora come si fa a sapere nulla al di là della firma funzione in termini di ciò che richiede, modifiche e torna? Non vorrei avere i nomi delle funzioni di essere decine di personaggi per cercare di esprimere ciò che può essere facilmente fatto con commenti sopra la funzione che può essere utilizzato come documentazione entro qualcosa di simile al Visualizzatore oggetti all'interno di Visual Studio, per esempio.

Naturalmente !!

Il motivo principale è sviluppatori alle prime armi. Non tutti sanno come scrivere il codice e scrivere. In realtà ci sono milioni là fuori non si ottiene un NullPointerException quando vedono uno.

Partiamo tutti a un certo punto.

Ma se ci si rivolge a "esperti" sviluppatori solo, perché preoccuparsi nella lingua in primo luogo. Si dovrebbe essere utilizzando farfalle !!! Questo è quello che usa vero sviluppatore!

commenti è un must, cercare di rendere più difficile, se lo si desidera (come l'utilizzo di # // ## / sequenza per creare un commento o qualcosa di simile), ma non lasciare fuori.

:)

Sono d'accordo con te che il codice ben scritto non ha bisogno di commenti come "Codice è solo una buona documentazione a disposizione dei programmatori. Tuttavia questo è stato molto ideale, non tutti scrive buon codice di tutti i tempi. Quindi, per rendere il codice scritto male buona in è necessario commenti futuri.

Una volta ho scritto un VB app (un gioco da tavolo ispirato stupido Monopoli) senza qualsiasi commenti. Ma l'ho fatto solo per pisciare fuori il mio maestro, che ci aveva detto commenti sono stati per "tutto ciò che abbiamo trovato rilevanti , in modo che potessimo ricordare in un secondo momento".

Codice perfetta ha bisogno di zero commenti. Dovrebbe essere semplice, e understandible dai neofiti.

Ogni codice ha bisogno commenti, cerco di spiegare il motivo e il funzionamento di ogni funzione che scrivo in 1 o 2 linee.

Il codice che si spiega solo esiste in un mondo perfetto, c'è sempre qualche trucco strano o un motivo per fare qualcosa di veloce-n-sporco al posto del modo Propper. La cosa migliore da ricordare è quello di lasciare un commento, PERCHE codice fa quello che fa, buon codice spiega quello che fa il 99% del tempo.

Scrivi qualcosa di semplice, come un pezzo di codice che può risolvere un puzzle Sudoku (3 ragionevolmente semplice while) e provare a leggere che 3 mesi dopo. Si immidiatly trovare qualcosa che non è esattamente chiaro.

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