È considerata una cattiva pratica compilare in Javascript come una questione di preferenza linguistica? [chiuso]

7

Capisco che la compilazione in Javascript sia talvolta necessaria e anche in alcuni casi si traduce in un'applicazione più veloce .

Tuttavia mi chiedo se la compilazione in Javascript, per la creazione di applicazioni web, da una lingua come ruby, sia considerata una cattiva pratica. Specificamente per lo scopo delle preferenze linguistiche e per il compito di eseguire tipiche funzioni front-end.

    
posta ryanSrich 26.08.2013 - 16:49
fonte

2 risposte

8

Nel suo articolo Javascript è linguaggio assembly per il web Scott Hanselman argomenta in modo abbastanza convincente che JavaScript è un basso linguaggio di livello e che ha perfettamente senso, laddove possibile, sfruttare un cross-compiler se ciò ti renderà più produttivo.

La stessa domanda potrebbe essere posta per quanto riguarda il linguaggio dell'Assemblea. E mentre molte persone si sono scagliate contro il concetto di linguaggi di alto livello, alla fine hanno perso questa discussione, proprio come le persone che si sono lamentate delle prestazioni perse quando usano linguaggi come Java e C # che non compilano il codice macchina ma invece sono compilati contro un macchina virtuale (JVM o .NET Runtime, rispettivamente).

JavaScript è come IL per il web, il fatto che possiamo usare i linguaggi di livello superiore per programmare JS significa che possiamo essere più produttivi e sfruttare il compilatore per ottenere prestazioni abbastanza buone (e in molti casi migliori). una buona pratica.

Quando dico basso, intendo metaforicamente. Proprio come C possiamo ignorare cose come registri e simili. Usando un cross-compilatore, ignoriamo cose come navigare / manipolare il DOM. Ci stiamo togliendo dai dettagli di cosa fa Javascript e concentrandoci sulla logica dell'app. Questo ha abilitato cose come un emulatore completo x86 che esegue linux nel browser o Motore irreale in esecuzione nel browser

Per rispondere alla domanda di Robert Harvey, se guardi progetti come LLVM, puoi praticamente scegliere la lingua che preferisci (e quindi usare tutti gli strumenti che ti piacciono) e fargli generare Javascript valido.

Inoltre, come follow-up, Scott ha chiesto al creatore di JavaScript e al creatore di JSON le loro opinioni sull'argomento Brendan Eich rispose:

I said "JS is the x86 of the web" a couple of years ago [likely at JSConf], but I can't claim it's original. [Nick Thompson said it on Hacker News this year as well.]

The point is JS is about as low as we can go. But it also has higher-level facilities. Shaver's right, assembly without a great macro processor is not good for programmers or safety. JS is. So the analogy needs some qualification or it becomes silly.

The mix of high-level functional programming and memory safety, with low-level facilities such as typed arrays and the forthcoming ES.next extension of typed arrays, binary data, make for a more powerful programming language than assembly, and of course memory safety is the first differentiator.

    
risposta data 26.08.2013 - 17:25
fonte
2

Non lo definirei come una cattiva pratica. Tuttavia, più ti allontani da JS nella lingua in cui lavori (nel tuo caso apparentemente Ruby), maggiori sono le possibilità che il compilatore crei errori. Per esempio. TypeScript è un superset chiuso di JS, ma immagino che Ruby non condivida molto con JS (potrei sbagliarmi).
Non mi piace particolarmente JS me stesso, ma ho scoperto che quando si tenta di aggirare l'uso di un linguaggio, prima o poi ti raggiunge e sarai comunque obbligato a usare effettivamente quella lingua. Tanto vale abbracciarlo fin dall'inizio.

    
risposta data 26.08.2013 - 17:55
fonte

Leggi altre domande sui tag