Il "codice che genera codice" è davvero eccezionale?

1

Stavo guardando le "penne popolari" di CodePen e ho notato questa piccola e animata animazione a spirale fatta da qualcuno apparentemente ridicolmente piccola quantità di codice.

Questo è piuttosto impressionante finché non fai clic sui titoli HTML e CSS per mostrare le versioni "compilate" dello stesso codice. Improvvisamente le 3 linee di HAML e ~ 40 linee di SCSS si trasformano in un gigantesco mostro di ripetizioni. Ecco dove arriva la mia domanda:

È accettabile fare qualcosa di simile in pratica? Non fraintendermi: adoro utilizzare i preprocessori per aiutarmi a scrivere codice più velocemente, ma in alcuni casi sembra che si tratti di un sistema di copia-incolla automatico.

    
posta Scott 26.10.2013 - 05:25
fonte

3 risposte

10

Alcune cose:

  • Un compilatore è un generatore di codice, accetta un linguaggio di alto livello e crea assembly o bytecode
  • Il codice generato di solito non è ottimizzato come il codice scritto direttamente perché, nonostante tutte le ottimizzazioni, il compilatore non capisce tutto il quadro generale.
  • Il codice utilizzato per generare codice è spesso più breve, più conciso e più facile da capire, il che porta a un numero considerevolmente inferiore di errori e a una manutenzione più semplice.

A mio parere si tratta di uno dei compromessi fondamentali per i linguaggi di programmazione: ottimalità del risultato rispetto alla produttività del programmatore . E per ottimalità intendo anche le cose rilevanti in questo caso, come la dimensione del sito risultante che deve essere scaricato.

In generale, "codice che genera codice" è ottimo.

    
risposta data 26.10.2013 - 10:12
fonte
6

HTML e CSS non sono linguaggi di programmazione. Quindi HTML e CSS non sono codice nello stesso senso in cui i compilatori HAML e LESS sono codice. Quindi la conversione da HAML a HTML e MENO a CSS non è 'codice di generazione di codice'. È un codice che genera dati. Per ottenere un browser per visualizzare un grafico complesso, è necessario creare molti elementi DOM. Usando HAML e LESS consente loro di essere generati automaticamente da una semplice specifica. Questo è buono.

    
risposta data 26.10.2013 - 08:04
fonte
3

Nel tuo caso specifico, avere HAML in HTML e SCSS in CSS è una buona pratica. Questo perché traducono direttamente la sorgente nel codice compilato. Le regole applicate sono abbastanza semplici rispetto ai linguaggi di programmazione. I preprocessuali ti fanno un sacco di lavoro, non fare magie.

Quindi, per rispondere alla domanda, sì: è una buona pratica usare questo "codice generato dal codice".

Ci sono altri casi in cui lo odio, come la programmazione puramente grafica. Alcuni strumenti non sono così buoni e non forniscono al programmatore un modo per personalizzare il codice finale compilato. La programmazione puramente grafica può avere i suoi limiti e non vuoi limiti con un progetto con tre o più mesi di codice. (In realtà, questo si è concluso con una completa riscrittura di uno dei nostri progetti).

    
risposta data 27.10.2013 - 09:12
fonte

Leggi altre domande sui tag