¿Qué tan riesgoso es usar Coffeescript sin saber Javascript? [cerrado]

15

Soy un programador razonablemente experimentado que intenta aprender el desarrollo web. Estoy tratando de desarrollar una aplicación web del lado del cliente que use svg o canvas para gráficos. Decidí que me gustaría escribir el código de la aplicación en Coffeescript. No conozco Javascript ni Coffeescript.

¿Qué tan necesario es saber Javascript para el desarrollo web Coffeescript? ¿Es probable que encuentre algún problema complicado que me obligue a comprender Javascript? ¿Puedo trabajar felizmente con las API de Javascript de Coffeescript?

Editar : podría aprender fácilmente los conceptos básicos de Javascript en una semana. Me preocupa más que Javascript parezca tener muchos bordes afilados ocultos. En la pregunta de la característica de idioma más extraña en StackOverflow, Javascript es uno de los idiomas más comunes. Tiene un objeto inusual y un modelo de clase. Tiene reglas de alcance de nombre no obvias. Creo que me lleva más de una semana saber realmente un idioma.

Voy a trabajar en un pequeño proyecto simple para aprender desarrollo web. ¿Sería mejor usar Javascript o Coffeescript? Creo que, a la larga, preferiré Coffeescript, pero estoy dispuesto a comenzar con Javascript si es que voy a necesitar una comprensión profunda de Javascript para usar Coffeescript.

Peter Graham
fuente
Tenga en cuenta que CoffeeScript simplemente compila a JavaScript. Si bien CS facilita la administración de algunos de los matices de JavaScript, no los revive; todavía está sujeto a la misma funcionalidad y peculiaridades. Por ejemplo, la classpalabra clave en CS no hace nada mágico; simplemente usa mecanismos de herencia de prototipos nativos JavaScripts. Por esta razón, recomendaría tener al menos un conocimiento auxiliar de algunas de las "características" más oscuras de JavaScripts.
Michelle Tilley
2
CS no es una bala de plata mágica que facilita todo, es JS con una sintaxis diferente. Si escribe JS o CS es una preferencia de estilo.
Raynos

Respuestas:

12

Supongo que no sería absolutamente necesario, pero a largo plazo te toparías con obstáculos si no lo haces.

Debe comprender lo que sucede debajo del capó y a qué se transcribe el compilador CoffeeScript, ya que eso es lo que los navegadores (suponiendo que estamos hablando de usar CoffeeScript en un entorno de navegador) deberán interpretar. Lo que significa que también es lo que necesitará para depurar , especialmente teniendo en cuenta que CoffeeScript es bastante reciente y aún podemos encontrar algunos bordes ásperos y errores en su mecanismo de transcripción. Además, si no utiliza ninguna herramienta de depuración a medida para la depuración, deberá saltar el código JavaScript generado para depurar utilizando Firebug o Chrome Dev Tools o su consola JS de elección. En algunos casos, podrá ver cómo el error JS se relaciona directamente con la declaración de origen de CoffeeScript. En otros, como la transcripción no es trivial,

Tómelo de esta manera: puede desarrollar software en Java y C # sin haber realizado ningún desarrollo de bajo nivel. Sin embargo, pasaría un mal momento entendiendo lo que está sucediendo y por qué tiene problemas de rendimiento y problemas de memoria si no tiene idea y no puede hacer una suposición educada sobre lo que los tiempos de ejecución de estos idiomas deben hacer en el fondo, y qué parte de las conjeturas pueden arruinar porque simplemente no pueden hacer milagros.

Además, si aprende JavaScript, se dará cuenta de cuán increíblemente más difícil puede ser de lo que parece originalmente, y apreciará CoffeeScript por su sintaxis clara y limpia aún más :)

haylem
fuente
1
O se molestará con CoffeeScript por no ser JavaScript;). ES5 es un lenguaje encantador.
Raynos
@Raynos: lápiz labial en un cerdo, todavía un cerdo; tuxido en una cabra, todavía una cabra, etc ... :) Estoy de acuerdo en que ECMAScript es en realidad un lenguaje muy interesante una vez que lo conoces, pero tiene demasiadas inconsistencias y trampas y trampas que hacen que sea una carga para ambos nuevos alumnos e incluso para programadores avanzados. Aún así, es nuestra lingua franca web moderna, y está mejorando y madurando con el tiempo. Me gusta la idea de CoffeeScript, ya que oculta algunas cosas molestas de ECMAScript, casi de la misma manera que el uso de algunas librerías para Java (o incluso un lenguaje encima) lo hace soportable.
haylem
2
Meh, solo necesitas leer las partes buenas y listo. Las trampas no son tan difíciles de evitar.
Raynos
@Raynos: Sin embargo, me cuesta encontrar desarrolladores avanzados de JS para contratar, desafortunadamente. Los realmente buenos son bastante difíciles de encontrar.
haylem
Oh, estoy de acuerdo, la comunidad JS está saturada de desarrolladores mediocres. No sé dónde deberías encontrarlos. Sólo sé unos buenos desarrolladores de la sala de JS chat.SO . Supongo que por el simple hecho de que no hay buenos desarrolladores de JS, JS debe ser difícil. Simplemente creo que nadie se molesta en aprenderlo correctamente.
Raynos
4

Usted pregunta:

¿Es probable que encuentre algún problema complicado que me obligue a comprender Javascript?

Puedo decir, inequívocamente, sí. En general, si está haciendo algo interesante, en algún momento al menos necesitará comprender lo que está sucediendo en los niveles por debajo de usted. (A veces, Google + cortar + pegar puede salvarte, pero no quieres ser ese tipo).

Cualquier "programador con experiencia razonable" que luego aprenda un nuevo idioma no debería llevarle mucho tiempo. JavaScript es un lenguaje bastante simple. Cualquier cosa difícil al respecto proviene del entorno en el que se está ejecutando: a saber, varios navegadores web diferentes con diferentes ideas sobre cómo hacer las cosas.

Gran parte de la información de "cómo hacerlo" que encontrará en la web se escribirá teniendo en cuenta JavaScript, por lo que probablemente le resulte más fácil si aprende a leer JavaScript y traducirlo al equivalente de CoffeeScript.

Honestamente, a menos que intentes deliberadamente permanecer ignorante, probablemente terminarás aprendiendo JavaScript como un efecto secundario de trabajar en CoffeeScript. Así que solo comienza ya.

benzado
fuente
4

Porque " La regla de oro de CoffeeScript es: 'Es solo JavaScript' ", recomiendo al menos una familiaridad básica con JavaScript. En particular, eche un vistazo al librito de Douglas Crockford , JavaScript: The Good Parts . También puedes ver la gran presentación introductoria de Crockford al respecto.

CoffeeScript básicamente envuelve las partes buenas de JavaScript en un paquete diferente: " CoffeeScript es un experimento mental simple para imaginar un lenguaje que exponga una sintaxis mínima para el hermoso modelo de objeto que subyace en JavaScript " . No es necesario conocer todos los detalles, solo lo suficiente para comprender que JavaScript, en sí mismo, no es un lenguaje orientado a objetos basado en clases. No tiene clases en absoluto. En cambio, usa " prototipos " , y eso hace algunas diferencias con respecto a otros lenguajes OO. Jeremy Ashkenas limpió algunas de las partes malas de la sintaxis de JavaScript, agregó algunas mejoras y lo hizo un poco más Python -esque.

JavaScript tiene algunas "trampas" muy conocidas para tener en cuenta. De lo contrario, es un gran lenguaje y es de uso muy común hoy en día. No tendríamos AJAX o jQuery sin él, entre otras cosas.

¡Buena suerte con tu CoffeeScript!

John Tobler
fuente
Compra las partes buenas. ¡No seas tacaño!
Raynos
@Raynos: lo hice. ¡No soy! : D Pero eliminé la sugerencia de búsqueda potencialmente inapropiada. ¡Gracias por mencionarlo!
John Tobler
3

Si. No es el fin del mundo si no lo haces, pero sí.

¿Por qué? Bueno, primero, JavaScript es realmente fácil de aprender. Literalmente me llevó 4 días aprenderlo (bueno, la mayor parte). Además, creo que es más valioso que CoffeeScript. Realmente no creo que necesites CoffeScript. Pero sigue siendo una buena herramienta.

Dinámica
fuente
3
He estado aprendiendo JavaScript durante años, y todavía no diría que realmente lo sé. De vez en cuando descubro cosas al respecto que me sorprenden. Puede ser fácil aprender cómo hacer "Hello World", pero aprender a predecir el comportamiento de la conversión de tipo implícito y los cierres no lo es.
Zach
@Zach Quizás te interese el libro JavaScript Enlightenment . Una revisión dice: "De hecho, realmente no pude encontrar nada que faltara. Si alguna vez se ha preguntado por qué JSLint se queja de algo, es probable que la causa raíz se explique en alguna parte de este libro".
Michelle Tilley
1
Los cierres de @Zach no son tan difíciles, la conversión de tipos es una molestia. El gran problema con JS es saber qué están haciendo las versiones anteriores de IE.
Raynos
@Zach: Sé que no sé todo Javascript. Ni siquiera estoy cerca. Pero sí sé que lo básico y algunas de las cosas intermedias es muy fácil de aprender.
Dinámico
0

Depende.

Si CoffeeScript abstrae JavaScript lo suficiente, de modo que no necesita saberlo (como C # abstraer lenguaje intermedio), entonces sí, puede hacer lo que quiera en CoffeeScript sin aprender JavaScript.

Pero mi experiencia me dice que no importa cuánto intente huir de JavaScript, cuando se trata del cliente, a veces realmente necesito ensuciarme las manos y escribir JavaScript puro.

Si, tienes razón. mientras que la sintaxis de JavaScript es fácil y puedes aprenderla de manera débil, pero lleva años dominarla.

En mi humilde opinión, como veo CoffeeScript, no es lo suficientemente maduro como para envolver totalmente todas las complejidades de JavaScript. Por lo tanto, no me arriesgo a no aprender o trabajar directamente con JavaScript.

Saeed Neamati
fuente
CoffeeScript es una abstracción muy delgada. Puede aprender coffeescript directamente, pero depurar js compilados será un fastidio. "ensuciarse las manos y escribir javascript puro". JavaScript no está sucio.
Raynos
1
@ Rayons, no quise decir que JavaScript está sucio. :). Esto es una especie de expresión que significa que debe llegar a capas subyacentes más profundas.
Saeed Neamati
es como decir "Estoy haciendo algo de programación de juegos, mejor ensuciame las manos y escribo c ++" o "Estoy haciendo algo de IA, mejor ensuciame las manos y escribo LISP". La única capa subyacente más profunda que tenemos en el navegador es NaCl
Raynos
0

La documentación de coffeescript define coffescript en términos del javascript equivalente. Si no comprende JavaScript, tampoco entenderá coffeescript.

Sean McMillan
fuente