Qual o risco de usar o Coffeescript sem conhecer o Javascript? [fechadas]

15

Sou um programador razoavelmente experiente, tentando aprender o desenvolvimento da web. Estou tentando desenvolver um aplicativo Web do lado do cliente que usa svg ou canvas para gráficos. Decidi que gostaria de escrever o código do aplicativo no Coffeescript. Eu não sei Javascript ou Coffeescript.

Quão necessário é conhecer o Javascript para o desenvolvimento web do Coffeescript? É provável que eu encontre algum problema genérico que exija que eu entenda o Javascript? Posso trabalhar com APIs Javascript do Coffeescript?

Edit : Eu poderia facilmente aprender o básico do Javascript em uma semana. Estou mais preocupado que o Javascript pareça ter muitas arestas afiadas ocultas. Na questão de recurso de idioma mais estranha do StackOverflow, o Javascript é um dos idiomas mais comuns. Possui um objeto incomum e modelo de classe. Possui regras de escopo de nome não óbvias. Acho que leva mais de uma semana para eu realmente conhecer um idioma.

Vou trabalhar em um pequeno projeto simples para aprender o desenvolvimento da web. Seria melhor usar Javascript ou Coffeescript? Acho que, a longo prazo, prefiro o Coffeescript, mas estou disposto a começar com o Javascript, se precisar de um entendimento completo do Javascript para usar o Coffeescript.

Peter Graham
fonte
Lembre-se de que o CoffeeScript simplesmente compila para JavaScript. Embora o CS facilite o gerenciamento de algumas das nuances do JavaScript, ele não as revive; ainda está sujeito a todas as mesmas funcionalidades e peculiaridades. Por exemplo, a classpalavra - chave no CS não faz nada de mágico; simplesmente usa mecanismos nativos de herança prototípica JavaScripts. Por esse motivo, eu recomendaria ter pelo menos um conhecimento auxiliar de alguns dos "recursos" JavaScripts mais obscuros.
precisa
2
O CS não é uma bala mágica de prata que facilita tudo, é JS com uma sintaxe diferente. Se você escreve JS ou CS é uma preferência de estilo.
Raynos

Respostas:

12

Acho que não seria absolutamente necessário, mas você enfrentaria obstáculos a longo prazo se não o fizesse.

Você precisa entender o que está acontecendo sob o capô e o que o compilador CoffeeScript transcreve, pois é para isso que os navegadores (assumindo que estamos falando sobre o uso do CoffeeScript em um ambiente de navegador) precisarão interpretar. O que significa que também é o que você precisará depurar , especialmente considerando que o CoffeeScript é bastante recente e ainda podemos encontrar algumas arestas e erros no mecanismo de transcrição. Além disso, se você não estiver usando nenhuma ferramenta de depuração personalizada para depuração, precisará percorrer o código JavaScript gerado para depurar usando o Firebug ou o Chrome Dev Tools ou o console JS de sua escolha. Em alguns casos, você poderá ver como o erro JS está diretamente relacionado à instrução CoffeeScript de origem. Em outros, como a transcrição não é trivial,

Faça o seguinte: você pode muito bem desenvolver software em Java e C # sem nunca ter feito nenhum desenvolvimento de baixo nível. No entanto, é muito difícil entender o que está acontecendo e por que você enfrenta gargalos de desempenho e problemas de memória, se você não tem idéia e não consegue adivinhar o que o tempo de execução desses idiomas precisa fazer por você em segundo plano, e que parte da suposição eles podem estragar, porque simplesmente não conseguem fazer milagres.

Além disso, se você aprender JavaScript, perceberá como é incrivelmente mais difícil do que parece originalmente e apreciará o CoffeeScript por sua sintaxe clara e concisa ainda mais :)

haylem
fonte
1
Ou você ficará irritado com o CoffeeScript por não ser JavaScript;). ES5 é uma linguagem adorável.
Raynos
@ Raynos: batom em um porco, ainda um porco; smoking em uma cabra, ainda uma cabra, etc ... :) Eu concordo que o ECMAScript é realmente uma linguagem muito interessante quando você a conhece, mas tem muitas inconsistências, armadilhas e armadilhas que o tornam um fardo para ambos. novos alunos e até mesmo para programadores avançados. Ainda assim, é a nossa moderna língua franca da web e está melhorando e amadurecendo ao longo do tempo. Eu gosto da ideia do CoffeeScript, que esconde algumas coisas irritantes do ECMAScript, da mesma maneira que o uso de algumas bibliotecas para Java (ou mesmo uma linguagem em cima) o torna suportável.
precisa saber é
2
Meh, você só precisa ler as Boas Partes e pronto. As armadilhas não são tão difíceis de evitar.
Raynos
@ Raynos: No entanto, luto para encontrar desenvolvedores avançados de JS para contratar, infelizmente. Os realmente bons são bastante difíceis de encontrar.
haylem
Ah, eu concordo, a comunidade JS está saturada de desenvolvedores medíocres. Não sei onde você os encontrará. Conheço apenas alguns bons desenvolvedores da sala de chat JS . Acho que pelo simples fato de não haver bons desenvolvedores de JS, o JS deve ser difícil. Só acho que ninguém se incomoda em aprender direito.
Raynos
4

Você pergunta:

É provável que eu encontre algum problema genérico que exija que eu entenda o Javascript?

Eu posso dizer, inequivocamente, sim. Em geral, se você estiver fazendo algo interessante, em algum momento precisará pelo menos entender o que está acontecendo nos níveis abaixo de você. (Às vezes, o Google + cortar + colar pode salvar você, mas você não quer ser esse cara.)

Qualquer "programador razoavelmente experiente" que escolha um novo idioma não deve demorar muito. JavaScript é uma linguagem bastante simples. Qualquer coisa difícil vem do ambiente em que está sendo executado: a saber, vários navegadores da Web diferentes, com idéias diferentes de como fazer as coisas.

Muitas das informações "como fazer" que você encontrará na Web serão escritas com o JavaScript em mente, portanto você provavelmente terá mais facilidade se aprender a ler o JavaScript e traduzi-lo para o equivalente CoffeeScript.

Honestamente, a menos que você tente deliberadamente permanecer ignorante, provavelmente aprenderá JavaScript como um efeito colateral de trabalhar no CoffeeScript. Então, basta começar.

benzado
fonte
4

Como " A regra de ouro do CoffeeScript é: 'É apenas JavaScript' ", recomendo pelo menos uma familiaridade básica com o JavaScript. Em particular, dê uma olhada no livrinho de Douglas Crockford , JavaScript: The Good Parts . Você também pode assistir à excelente apresentação introdutória de Crockford sobre o assunto.

O CoffeeScript basicamente agrupa as partes boas do JavaScript em um pacote diferente: "O CoffeeScript é um experimento simples para imaginar uma linguagem que expõe uma sintaxe mínima para o belo modelo de objeto subjacente ao JavaScript " . Você não precisa conhecer todos os detalhes, apenas o suficiente para entender que o JavaScript, por si só, não é uma linguagem orientada a objetos baseada em classe. Não tem aulas. Em vez disso, ele usa " protótipos " e isso faz algumas diferenças em relação a outras linguagens OO. Jeremy Ashkenas limpou algumas das partes ruins da sintaxe do JavaScript, adicionou alguns aprimoramentos e o tornou um pouco mais de Python .

O JavaScript tem algumas "dicas" conhecidas a serem observadas. Caso contrário, é uma ótima linguagem e é muito usada atualmente. Não teríamos AJAX ou jQuery sem ele, entre outras coisas.

Boa sorte com o seu CoffeeScript!

John Tobler
fonte
Compre as peças boas. Não seja um barato!
Raynos 23/08/11
@ Raynos - eu fiz. Eu não estou! : D Mas excluí a sugestão de pesquisa potencialmente inadequada. Obrigado por apontar isso!
John Augler
3

Sim. Não é o fim do mundo, se não, mas sim.

Por quê? Bem, primeiro, o JavaScript é realmente fácil de aprender. Levei literalmente 4 dias para aprender (bem, a maioria). Além disso, acredito que seja mais valioso que o CoffeeScript. Realmente acho que você nem precisa do CoffeScript. Mas ainda é uma boa ferramenta.

Dinâmico
fonte
3
Estou aprendendo JavaScript há anos e ainda não diria que realmente o conheço. De vez em quando eu descubro coisas que me surpreendem. Pode ser fácil aprender como fazer o "Olá Mundo", mas aprender a prever o comportamento da conversão e fechamento implícito de tipos não é.
Zach
@Zach Você pode estar interessado no livro JavaScript Enlightenment . Uma resenha diz: "Na verdade, eu realmente não consegui encontrar nada faltando. Se você já se perguntou por que o JSLint está reclamando de algo, é provável que a causa raiz seja explicada em algum lugar deste livro".
precisa saber é o seguinte
1
Os fechamentos @Zach não são tão difíceis assim, a conversão de tipos é uma dor. O grande problema com o JS é saber o que as versões mais antigas do IE estão fazendo.
Raynos
@Zach: Eu sei que não conheço todo o Javascript. Eu não estou nem perto. Mas eu sei que o básico e algumas das coisas intermediárias são muito fáceis de aprender.
Dinâmico
0

Depende.

Se o CoffeeScript abstrair o JavaScript o suficiente, para que você não precise conhecê-lo (como C # abstraindo a Linguagem Intermediária), sim, você poderá fazer o que quiser no CoffeeScript sem aprender JavaScript.

Mas minha experiência me diz que, por mais que eu tente fugir do JavaScript, quando se trata de cliente, às vezes eu realmente preciso sujar as mãos e escrever JavaScript puro.

Sim você está certo. embora a sintaxe do JavaScript seja fácil e você possa aprendê-la de maneira fraca, mas você leva anos para dominar.

IMHO, como eu vejo o CoffeeScript, não é maduro o suficiente para envolver totalmente todos os meandros do JavaScript. Portanto, não corro o risco de não aprender ou trabalhar diretamente com JavaScript.

Saeed Neamati
fonte
CoffeeScript é uma abstração muito fina. Você pode aprender o coffeescript diretamente, mas depurar js compilados será uma dor. msgstr "suja minhas mãos e escreve javascript puro". JavaScript não está sujo.
Raynos 23/08/19
1
@ Rayons, eu não quis dizer que o JavaScript está sujo. :). Este é o tipo de expressão que significa que você deve chegar a camadas subjacentes mais profundas.
Saeed Neamati
é como dizer "Estou fazendo alguma programação de jogos, melhor sujar minhas mãos e escrever c ++" ou "Estou fazendo alguma IA, melhor sujar minhas mãos e escrever LISP". A única mais profunda subjacente camada temos no navegador é NaCl
Raynos
0

A documentação coffeescript define coffescript em termos de javascript equivalente. Se você não entender o javascript, também não entenderá o coffeescript.

Sean McMillan
fonte