Quanto è rischioso usare Coffeescript senza conoscere Javascript? [chiuso]


15

Sono un programmatore abbastanza esperto che cerca di imparare lo sviluppo del web. Sto cercando di sviluppare un'applicazione Web sul lato client che utilizza svg o canvas per la grafica. Ho deciso di scrivere il codice dell'applicazione in Coffeescript. Non conosco né Javascript né Coffeescript.

Quanto è necessario conoscere Javascript per lo sviluppo web di Coffeescript? Probabilmente colpirò qualche problema nodoso che mi richiede di capire Javascript? Posso lavorare felicemente con le API Javascript di Coffeescript?

Modifica : potrei facilmente imparare le basi di Javascript in una settimana. Sono più preoccupato che Javascript sembra avere molti spigoli vivi nascosti. Nel linguaggio più strano, la domanda su StackOverflow Javascript è una delle lingue più comuni. Ha un oggetto e un modello di classe insoliti. Ha regole di scoping del nome non ovvie. Trovo che ci voglia più di una settimana per conoscere davvero una lingua.

Lavorerò su un piccolo progetto semplice per imparare lo sviluppo web. Sarebbe meglio usare Javascript o Coffeescript? Penso che a lungo andare preferirò Coffeescript, ma sono disposto a iniziare con Javascript se avrò bisogno di una conoscenza approfondita di Javascript per usare Coffeescript.


Tieni presente che CoffeeScript si compila semplicemente in JavaScript. Mentre CS semplifica la gestione di alcune sfumature di JavaScript, non le rivive; è ancora soggetto alle stesse funzionalità e stranezze. Ad esempio, la classparola chiave in CS non fa nulla di magico; utilizza semplicemente i meccanismi di ereditarietà prototipo nativo di JavaScripts. Per questo motivo, consiglierei di avere almeno una conoscenza accessoria di alcune delle "caratteristiche" più oscure di JavaScripts.
Michelle Tilley,

2
CS non è un proiettile d'argento magico che rende tutto più facile, è JS con una sintassi diversa. Se scrivi JS o CS è una preferenza di stile.
Raynos,

Risposte:


12

Immagino che non sarebbe assolutamente necessario, ma se non lo facessi avresti colto di sorpresa nel lungo periodo.

Devi capire cosa succede sotto il cofano e a cosa trascrive il compilatore CoffeeScript, poiché è quello che dovranno interpretare i browser (supponendo che stiamo parlando dell'uso di CoffeeScript in un ambiente browser). Ciò significa che è anche ciò di cui avrai bisogno per eseguire il debug , specialmente considerando che CoffeeScript è abbastanza recente e potremmo ancora imbatterci in alcuni bordi e bug nel suo meccanismo di trascrizione. Inoltre, se non si utilizzano strumenti di debug su misura per il debug, è necessario passare attraverso il codice JavaScript generato per eseguire il debug utilizzando Firebug o Chrome Dev Tools o la console JS preferita. In alcuni casi sarai in grado di vedere come l'errore JS si collega direttamente all'istruzione CoffeeScript di origine. In altri, poiché la trascrizione non è banale,

Prendi in questo modo: puoi sviluppare molto bene software in Java e C # senza aver mai fatto uno sviluppo di basso livello. Eppure ti divertiresti molto a capire cosa sta succedendo e perché colpisci i colli di bottiglia delle prestazioni e i problemi di memoria se non hai idea e non sei in grado di fare un'ipotesi educata su ciò che i tempi di esecuzione di queste lingue devono fare per te in background, e quale parte delle congetture potrebbero rovinare perché semplicemente non possono fare miracoli.

Inoltre, se impari JavaScript, ti renderai conto di quanto sia incredibilmente più difficile di quanto sembri in origine e apprezzerai CoffeeScript per la sua sintassi concisa e pulita ancora di più :)


1
Oppure sarai infastidito da CoffeeScript per non essere JavaScript;). ES5 è un linguaggio adorabile.
Raynos,

@Raynos: rossetto su un maiale, ancora un maiale; tuxido su una capra, ancora una capra, ecc ... :) Sono d'accordo che ECMAScript è in realtà un linguaggio molto interessante una volta che lo conosci, ma ha troppe incoerenze e trappole e insidie ​​che lo rendono un peso per entrambi nuovi studenti e anche per programmatori esperti. Tuttavia, è la nostra moderna lingua web franca e sta migliorando e maturando nel tempo. Mi piace l'idea di CoffeeScript in quanto nasconde alcune cose fastidiose di ECMAScript, praticamente nello stesso modo in cui l'uso di alcune librerie per Java (o anche un linguaggio sopra di esso) lo rende sopportabile.
haylem,

2
Meh, devi solo leggere le parti buone e il tuo bene per andare. Le insidie ​​non sono così difficili da evitare.
Raynos,

@Raynos: Eppure faccio fatica a trovare sviluppatori JS avanzati da assumere, sfortunatamente. Quelli davvero buoni sono piuttosto difficili da trovare.
haylem,

Oh, sono d'accordo, la comunità JS è satura di sviluppatori mediocri. Non dove li dovresti trovare. So solo alcuni sviluppatori buoni dalla stanza JS chat.SO . Immagino per il semplice fatto che non ci siano buoni sviluppatori JS, JS deve essere difficile. Penso solo che nessuno si preoccupi di impararlo correttamente.
Raynos,

4

Tu chiedi:

Probabilmente colpirò qualche problema nodoso che mi richiede di capire Javascript?

Posso dire, inequivocabilmente, sì. In generale, se stai facendo qualcosa di interessante, ad un certo punto dovrai almeno capire cosa sta succedendo nei livelli sotto di te. (A volte Google + cut + paste può salvarti, ma non vuoi essere quel ragazzo.)

Qualsiasi "programmatore con ragionevole esperienza" che apprende una nuova lingua non dovrebbe richiedere molto tempo. JavaScript è un linguaggio abbastanza semplice. Tutto ciò che è difficile viene dall'ambiente in cui è in esecuzione: vale a dire, diversi browser Web con idee diverse su come fare le cose.

Molte delle informazioni su "come fare" che troverai sul web saranno scritte pensando a JavaScript, quindi avrai probabilmente un momento più facile se imparerai a leggere JavaScript e tradurlo nell'equivalente CoffeeScript.

Onestamente, a meno che tu non provi deliberatamente a rimanere ignorante, probabilmente finirai per imparare JavaScript come un effetto collaterale del lavoro in CoffeeScript. Quindi inizia già.


4

Perché " La regola d'oro di CoffeeScript è: 'È solo JavaScript' ," Raccomando almeno una familiarità di base con JavaScript. In particolare, dai un'occhiata al piccolo libro di Douglas Crockford , JavaScript: The Good Parts . Puoi anche guardare la fantastica presentazione introduttiva di Crockford al riguardo.

CoffeeScript fondamentalmente racchiude le parti buone di JavaScript in un pacchetto diverso: " CoffeeScript è un semplice esperimento mentale per immaginare un linguaggio che esponga una sintassi minima per il bellissimo modello di oggetti che sta alla base di JavaScript. " Non è necessario conoscere tutti i dettagli, quanto basta per capire che JavaScript, di per sé, non è un linguaggio orientato agli oggetti basato sulla classe. Non ha classi affatto. Al contrario, utilizza " prototipi " e ciò rende alcune differenze rispetto ad altri linguaggi OO. Jeremy Ashkenas ha ripulito alcune delle parti difettose della sintassi JavaScript, aggiunto alcuni miglioramenti e reso un po 'più simile a Python .

JavaScript ha alcuni "gotchas" noti a cui prestare attenzione. Altrimenti, è un ottimo linguaggio ed è molto usato oggi. Non avremmo AJAX o jQuery senza di essa, tra le altre cose.

Buona fortuna con il tuo CoffeeScript!


Compra le parti buone. Non essere un cheapskate!
Raynos,

@Raynos - L'ho fatto. Non sono! : D Ma ho eliminato il suggerimento di ricerca potenzialmente inappropriato. Grazie per segnalarlo!
John Tobler,

3

Sì. Se non lo fai, non è la fine del mondo, ma sì.

Perché? Prima di tutto, JavaScript è davvero facile da imparare. Mi ci sono voluti letteralmente 4 giorni per impararlo (beh, la maggior parte di esso). Inoltre, credo che sia più prezioso di CoffeeScript. Non penso davvero che tu abbia nemmeno bisogno di CoffeScript. Ma è ancora un buon strumento.


3
Sto imparando JavaScript da anni, e ancora non direi che lo conosco davvero. Ogni tanto scopro cose che mi sorprendono. Potrebbe essere facile imparare a fare "Hello World", ma imparare a prevedere il comportamento della conversione di tipo implicito e le chiusure non lo è.
Zach,

@Zach Potrebbe interessarti il ​​libro JavaScript Enlightenment . Una recensione recita: "In realtà, non riuscivo davvero a trovare nulla mancante. Se ti sei mai chiesto perché JSLint si lamenta di qualcosa, è probabile che la causa alla radice venga spiegata da qualche parte in questo libro."
Michelle Tilley,

1
Le chiusure @Zach non sono così difficili, la conversione dei tipi è un dolore. Il grosso problema con JS è sapere cosa stanno facendo le versioni precedenti di IE.
Raynos,

@Zach: so di non conoscere tutto Javascript. Non sono nemmeno vicino. Ma so che le basi e alcune delle cose intermedie sono molto facili da imparare.
Dinamico

0

Dipende.

Se CoffeeScript estrae abbastanza JavaScript, quindi non è necessario conoscerlo (come l'astratto C # Intermediate Language), quindi sì, puoi fare tutto ciò che ti piace fare in CoffeeScript senza imparare JavaScript.

Ma la mia esperienza mi dice che non importa quanto provo a fuggire da JavaScript, quando si tratta di client, a volte ho davvero bisogno di sporcarmi le mani e scrivere JavaScript puro.

Si hai ragione. mentre la sintassi JavaScript è semplice e puoi impararla in modo debole, ma ti ci vogliono anni per padroneggiare.

IMHO, come vedo CoffeeScript, non è abbastanza maturo per avvolgere totalmente tutte le complessità di JavaScript. Quindi, non rischio di non imparare o lavorare direttamente con JavaScript.


CoffeeScript è un'astrazione molto sottile. Puoi imparare direttamente il coffeescript ma eseguire il debug di j compilati sarà una seccatura. "sporcami le mani e scrivi javascript puro". JavaScript non è sporco.
Raynos,

1
@Rayons, non intendevo dire che JavaScript è sporco. :). Questo è un tipo di espressione che significa che dovresti arrivare a strati sottostanti più profondi.
Saeed Neamati,

è come dire "Sto facendo un po 'di programmazione di gioco, meglio sporcarmi le mani e scrivere c ++" o "Sto facendo un po' di intelligenza artificiale, meglio sporcarmi le mani e scrivere LISP". L'unico livello sottostante più profondo che abbiamo nel browser è NaCl
Raynos,

0

La documentazione di coffeescript definisce coffescript in termini di javascript equivalente. Se non capisci javascript, non capirai neanche coffeescript.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.