Perché coffeescript invece di javascript? [chiuso]


24

Penso che in qualche modo costruire una lingua che si compili in un'altra lingua sembri una cattiva idea dall'inizio, invece di imparare javascript correttamente dall'inizio. Guarda Douglas Crockfords Good Parts e poi sei appassionato. E javascript non è difficile: scrivere un buon codice è difficile indipendentemente dalla lingua! Se scrivi codice scadente in javascript, allora probabilmente scriverai codice scadente in coffeescript o lattescript o quale sarà il sapore del giorno. E dire che la sintassi di coffeescript è bellissima mi passa. Mi piacciono i miei parentesi graffe e la sintassi C - e preferibilmente lavorerei in una lingua che è così (scusate VB!). E più giocattoli, lingue e strutture per fare sempre la stessa cosa non mi sembrano più progressi!


5
Quindi, compilare Java in bytecode e C #, VB.NET e altri linguaggi .NET in compilazione in IL sono anche cattive idee?
Oded,

10
La differenza è che le persone di solito non programmano direttamente in bytecode e IL (a meno che non mi sbagli) mentre la programmazione in Javascript è comune, quindi la sua sorpresa / domanda.
Wildpeaks

14
questa "domanda" contiene tre punti esclamativi e nessun punto interrogativo
azheglov,

Se ti piace programmare in IL, allora mi sbaglio. Sto solo pensando che javascript sia sufficiente. E quando si passa a ECMAScript 5 e la modalità rigorosa verrà implementata nei browser, allora sarà ancora meglio. Ma non sto dicendo che fare qualcos'altro sia completamente sbagliato. Voglio una discussione sui pro e contro, sul perché preferiresti qualcos'altro rispetto a js.
marko,

3
___ fa schifo, vero?
TRiG,

Risposte:


21

CoffeeScript è principalmente una sintassi diversa su JavaScript.

Se capisci JavaScript e capisci veramente JavaScript, allora puoi usare CoffeeScript se dici, preferisci gli spazi bianchi e ->

Ritengo che la differenza tra JS e CS sia la stessa della discussione

if (thing)
{
  // code
}

if (thing) {
  // code
}

(il secondo è migliore. Chiunque faccia il primo dovrebbe essere colpito).

Ad ogni modo, il problema principale con coffeescript è che le persone vi entrano (principalmente dalle rotaie) e poi scrivono coffeescript senza conoscere javascript.

Pertanto coffeescript ha tutti gli stessi difetti di jQuery. Sono solo più punti di accesso per i programmatori cattivi per scrivere più JavaScript non validi. Dobbiamo davvero risolvere la qualità del codice in qualche modo.


8
offopic : the latter is better. Anyone who does the former should get shot- dipende dalla lingua - mi piace il primo stile, ma non è compatibile con JS, che è la mia lingua principale;)
c69,

1
it depends on the language.Penso che intendesse rispetto a JavaScript.
Vardhaman Deshpande,

1
Ci sono anche cose che semplicemente non puoi fare in CoffeeScript. Hai un controllo notevolmente meno granulare sulla creazione di oggetti e simili.
Erik Reppen,

Basta aggiungere al commento di c69, la formattazione del primo modo può portare a problemi reali: encosia.com/…
Buzzology

1
(il secondo è migliore. Chiunque faccia il primo dovrebbe essere colpito) - Provalo! L'estremismo è solo un male, non importa chi, quando, dove.
hrishikeshp19,

13

C'è un malinteso di JavaScript come linguaggio "giocattolo". Ciò induce le persone a considerarlo come qualcosa con cui giocare, piuttosto che usato per qualcosa di sostanziale. Aggiungilo alla barriera bassa per l'ingresso (cioè hai già un browser e un editor di testo, quindi puoi iniziare a scrivere JavaScript) e finirai con masse di persone che non capiscono la lingua che scrive grandi quantità di codice e imitando il nome "JavaScript".

Non è una maggiore (assoluta) quantità di JS male che altre lingue a causa di questo maggiore visibilità. Le cattive abitudini diventano all'ordine del giorno in quanto il codice errato si propaga in tutto il Web e le persone visualizzano la fonte su pagine che non sono state verificate per accuratezza o buone pratiche e JavaScript finisce con un nome negativo a causa di ciò.

Per questi motivi, le persone sentono il bisogno di costruire linguaggi più familiari (più "reali") che si trasformano in JavaScript. Vogliono il comfort di OO classico, la digitazione statica e altre funzionalità che appaiono in altre lingue. Vedono le mostruosità create da programmatori inesperti usando JS e pensano che debba essere il risultato dei "difetti fondamentali" (per citare Google) nella lingua.

</ Rant>

Ad ogni modo, usa quello che vuoi. Continuerò con i miei oggetti letterali, la digitazione dinamica e il prototipo di OO, grazie.


2
Ehi, ma il dardo non risolverà tutti i nostri problemi! (</sarcasm>)
Raynos,

Amen per questo! (Non il commento del dardo!)
marko,

È il 2018 e JavaScript ha ceduto alla pressione di class: - /
ankush981

4

Penso che il vantaggio (disclaimer: non ho usato CoffeeScript oltre a giocare con l'esempio sul sito Web) è che rende JavaScript un po 'più intuitivo per il pubblico a cui si rivolge: cioè le persone Ruby / Python.

Personalmente non vedo la necessità di CoffeeScript, poiché mi piace la sintassi JavaScript. Tuttavia, vedo come potrebbe essere utile.


1
Sì, penso che la sintassi ruby ​​/ python mi sembri sospetta, perché per lo più ho codificato in linguaggi in stile C come Javascript, C #, PHP, actionscript e java.
marko,

4
Mi sembra buono principalmente (tranne il ->e la =>sintassi) poiché ho usato Ruby / Python un po ', ma penso che non dovremmo provare a nascondere JavaScript a causa dell'onnipresente. Sì, alcuni sono ingombranti ma l'apprendimento di JavaScript "puro" è l'IMO un migliore ritorno sugli investimenti a causa della proliferazione di JavaScript "puro" in natura.
Wayne Molina,

0

Se ti piace la sintassi o no è soggettivo, tuttavia il fatto è che CofeeScript si prende cura di alcune fastidiose verruche JavaScript. Naturalmente, rimane ancora poco chiaro se vale la pena introdurre una nuova lingua e affrontare il passo della compilazione.


6
"fastidiose verruche javascript" CoffeeScript no, dà solo zucchero e sintassi. Posso evitare le verruche da solo, e lo faccio.
Raynos,
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.