Perché i linguaggi di programmazione non separano lo stile dal contenuto?

-3

Il mio linguaggio di programmazione ideale mi consente di definire un css personalizzato che distribuirà il codice in base alle mie specifiche di posizionamento colonne / spazio / parentesi ecc. e di controllare solo il contenuto. Ognuno ottiene i propri layout - e quindi evitiamo tutte le lunghe discussioni a spirale sugli stili. Un linguaggio che potrebbe fare il refactoring di nomi di variabili / nomi di funzioni secondo i miei requisiti di stile sarebbe migliore. Un altro che potrebbe tradurre in lingua locale sarebbe fantastico!

Esiste una tale variante linguistica di C / C ++? Quali sono i negativi di questo?

    
posta Subu Sankara Subramanian 19.05.2011 - 16:39
fonte

6 risposte

15

Quelle sono funzioni degli strumenti per le lingue. Molti ambienti di programmazione dispongono di strumenti di refactoring. Eclipse ha quelli abbastanza decenti per Java. Molti ambienti di programmazione consentono inoltre di definire uno stile di formattazione (non so se è effettivamente memorizzato come CSS o qualche altra rappresentazione). Potresti quindi eseguire automaticamente la formattazione di tutto il codice non appena lo controlli fuori dal controllo del codice sorgente e quindi riformattarlo con uno stile standard aziendale al momento del check-in.

Quello che stai chiedendo non credo che cada nella specifica lingua . Suppongo che potrebbe ma non ne ho mai sentito parlare. Secondo la mia esperienza, questa funzionalità è implementata negli strumenti per un linguaggio.

    
risposta data 19.05.2011 - 16:59
fonte
6

Vedo alcuni problemi con quello che stai suggerendo.

Per esempio, la sintassi e la spaziatura sono a volte parte fondamentale della definizione del linguaggio. Non è possibile dire, ad esempio, "Non voglio vedere parentesi graffe in C #" perché le parentesi graffe sono parte integrante del linguaggio e svolgono una funzione importante. Non puoi usare la lingua senza di loro. Altri linguaggi, come Python, sono molto specifici su spaziatura e indentazione. In tal caso, non è una questione di preferenze personali.

Ora, la domanda è: "perché queste cose sono necessarie in una lingua?" E penso che parte della risposta sia che l'analisi della grammatica di una lingua può essere non banale. Diventa sempre più complesso più ti rilassi le regole della sintassi del linguaggio. E anche i linguaggi più naturali hanno ancora parole chiave "marker" che denotano l'inizio o la fine dei blocchi se il codice e così via.

Un'altra considerazione è la possibilità di comunicare con altri sviluppatori. Se tu fossi in grado di definire la tua "vista" sul codice, come ne parleresti con altre persone che stanno potenzialmente guardando qualcosa di completamente diverso?

Anche la traduzione basata su computer non è al punto in cui sarebbe affidabile. Come decideresti quali parti tradurre? Solo le parole chiave? Parole chiave e stringhe letterali? Vorresti inserire un nuovo codice nella tua lingua locale e aspettarti che venga tradotto accuratamente in una lingua di base comune?

Ci sono alcuni plugin IDE (come ReSharper per Visual Studio) che aiuteranno a rafforzare uno stile di codifica, ma quello stile deve essere mantenuto attraverso l'intero team di sviluppo che lavora sul codice e, come dici tu, che spesso lo stile deve essere discusso. Non lo vedo come una cosa negativa. Una squadra che non può essere d'accordo su qualcosa di semplice come uno stile di codifica ha probabilmente più problemi di quella.

    
risposta data 19.05.2011 - 17:00
fonte
1

La maggior parte dei linguaggi di programmazione utilizza il testo normale come codice sorgente. Introducendo un (nel peggiore dei casi, obbligatorio - i formati di testo semplice hanno ENORME vantaggi, come la facile diffusione, pochi requisiti di archiviazione, visualizzabili da ogni singola macchina ancora in uso, e molti altri ancora) il contenuto reale solo per il gusto di questo mi sembra eccessivo.

Inoltre, è già possibile in qualche misura con testo normale. Gli strumenti possono convertire i rientri, rinominare automaticamente le cose, magari anche convertirli da mixedCase a minuscoli_con_underscores ecc. Se l'input usa uno stile in modo coerente. Anche giocare con la spaziatura tra parentesi sembra possibile, anche se non l'ho mai visto e la maggior parte degli stili sembra essere d'accordo in questo senso. Tradurre (bene) è al momento impossibile per le macchine e non ne vedo il bisogno - la programmazione avviene in inglese, punto, nuovo paragrafo.

Ci sono linguaggi che non usano testo semplice ma vivono in un ambiente grafico. Non li conosco molto bene, ma in linea di principio dovrebbe essere possibile visualizzare lo stesso programma in diversi modi: dovresti solo replicare le funzionalità di editing, il che potrebbe essere un po 'di lavoro.

    
risposta data 19.05.2011 - 16:59
fonte
1

Sembra che quello di cui hai bisogno sia un sistema che memorizza l'AST o qualche altro modulo parzialmente compilato, e quindi ricostituisce il "codice" per la modifica. C'erano sistemi basati su repository che facevano qualcosa di simile (conservavano moduli in formato tokenizzato / condensato) negli anni '80, ma non conosco nessun sistema che faccia questo oggi.

In passato ho avuto fortuna con i formattatori di codice collegati al controllo della versione; formattano il codice in base alle mie preferenze quando controllo le cose e lo formattano in formato "standard" al momento del check-in. In questo modo, tutti potranno lavorare con il codice nel modo in cui lo gradiscono, ma non ci ritroviamo con enormi differenze a causa delle modifiche di formattazione nel controllo della versione.

    
risposta data 19.05.2011 - 16:59
fonte
0

Dovresti dare uno sguardo a Squeak Smalltalk come esempio di linguaggio / ambiente in cui è possibile, e le persone lo fanno relativamente spesso, visualizzare il codice in formati specifici per il programmatore.

    
risposta data 19.05.2011 - 16:58
fonte
0

Se vuoi solo la formattazione, puoi farlo usando git (The awesome distributed VCS). Ovviamente dovrai trovare / scrivere i tuoi script stand alone che formattano il codice. Penso che ci siano strumenti disponibili per fare ciò che legge in un xml e applichi lo stile al codice sorgente.

link

It turns out that you can write your own filters for doing substitutions in files on commit/checkout. These are the “clean” and “smudge” filters. In the .gitattributes file, you can set a filter for particular paths and then set up scripts that will process files just before they’re checked out (“smudge”) and just before they’re committed ("clean")

    
risposta data 19.05.2011 - 19:21
fonte

Leggi altre domande sui tag