Tag Archives: JavaScript

CoffeeScript

Resolvi falar sobre CoffeeScript porque algumas pessoas com poder de influência em diversas comunidades estão evangelizando essa aberração.

História

Vou começar pelo começo, aproximadamente entre os anos de 99 e 2009 a comunidade Javascript passou se degladiando sobre o futuro da linguagem, uma parte defendia algo próximo ao ActionScript [exemplo fácil só para um termo de comparação], com classes e outras características que não existem na linguagem que é prototype-based. Venceu a turma conservadora, que defendia js se manter como estava.

Para terem uma idéia da confusão, hoje existe a especificação ECMA 262 versão 3 e versão 5, justamente porque a 4 ficou no meio dessa briga e nunca chegou a existir.

Desculpas

De 2006 pra cá algumas linguagens antigas como ruby e python influenciaram todas as comunidades de desenvolvedores com argumentos – dos quais concordo em parte – como expressividade, facilidade na leitura por humanos com menos ruído sintático em vez de apenas performance ou outra característica técnica que poderia muito bem ser trabalhada em um nível inferior (Como por exemplo, para cada linha que voce evita de escrever em Python, existem centenas em C que fazem o trabalho).

Primeiro argumento do uso de Coffeescript é justamente sobre ruído sintático do Javascript, mas inventaram uma SINTAXE NOVA que não é igual a Ruby e nem Python, mas há métodos e características de ambas para justificar seu uso. Ora bolas, porque não terem implementado um subset direto do Ruby?

Incluíram o Pattern Klass como funcionalidade dessa linguagem sendo que Frameworks antigos como Prototype já implementavam isso.

Em Javascript você consegue Closure, Currying e outras construções funcionais porque function é um cidadão de primeira classe na linguagem, consegue ter Mixin até mais fácil do que em Ruby porque além de dinâmico é de tipos fracos.

A justificativa de se usar Coffeescript por causa de sintaxe é a mesma de muitos que usam Groovy porque a “curva” de Java seria menor. Falácia grave. O problema de um desenvolvedor não aprender uma sintaxe porque é assim ou assado já demonstra em muito que ele não quer aprender as características da linguagem e vai continuar “programando em Java” usando Groovy.

Isso é muito comum, já passei por muito programador PHP programando em Ruby como PHP ou programador Java programando em javascript como Java.

Alguns entusiastas de Ruby defendem o uso porque lembraria a sintaxe que se sentem familiar e por ironia citam List Comprehensions, funcionalidade que existe no Python e não no Ruby. Como voce contorna isso no Ruby? Vamos parar com a covardia e sair da zona de conforto?

Problemas

Eu tenho um problema com linguagens intermediárias com Enhanced, mas vá lá, podemos viver com isso.

javascript tem muitos problemas, mas não é apenas sintaxe, precisamos normalizar todas as versões e especificações e atacar as fraquezas conhecidas, não sair criando pseudo-linguagem.

List Comprehensions que já citamos, tem na versão 1.7 que o SpiderMonkey implementa (usado pelo Firefox) , mas o V8 (usado no Chrome, Safari e no node.js) não implementa, Rhino implementa e assim vai, uma confusão só. Os navegadores basicamente implementam a versão 1.5 que é equivalente a ECMA 262 – versão 3 que chamamos de ES3 (ECMA Standard 3), o V8 implementa a ES5 e mantém compatibilidade com 1.5. SpiderMonkey implementa a 1.5, mas não tem compatibilidade entre ES5 e 1.5, se quiser usar funcionalidades definidas na ES5 tem que usar versão 1.8. Confuso? É assim mesmo.

Se Javascript não se encaixa no seu projeto, não a use, é porque não serve mesmo, agora tentar mudar as características (como assincronismo, só para aproveitar o momento e bater em ferramentas como Step) para se encaixar é querer usar a furadeira para pregar um prego.

Se você é obrigado, já que não existe outra alternativa na camada de apresentação em Webapps (RIP ActionScript 🙁 ), use os frameworks modernos que já implementam o Crossbrowser aceitável (nunca vai ser decente) e se beneficiam de sua idiossincrasia. Coffeescript só está em evidência por causa do node.js, já que há várias bibliotecas e até Frameworks implementados com isso, se a discussão aqui for navegador, nem invente.

Eu por exemplo sinto mais falta de incluírem o “method_missing” na especificação do que interpolação de strings.

Ainda pra completar há uma rivalidade entre os defensores de Frameworks como entre o jQuery e Mootools que não sei de onde surgiu, mas nós humanos somos assim mesmo, brigamos por religião e por Framework.

Javascript é de tipos fracos, dinâmicos, sem classes, orientada a protótipos e assíncrono… aprenda a linguagem. Já basta de uma linguagem a mais para cada chilique de desenvolvedor por causa de um “{” ou “;”. Como alguém, que não lembro quem foi, escreveu no twitter dias desses: “Antigamente todo mundo queria seu próprio Framework, hoje todo mundo quer sua própria linguagem”.

Aproveite e vá me assistir no QCONSP 2011 que vou demonstrar algumas coisas bacanas de se fazer com Javascript e como a sintaxe não atrapalha 🙂

Typically chemist’s shop can sale to you with discreet treatments for various heartiness problems. There are numerous of safe online pharmacies that will deliver medications to your address. There are divers medicines for each afflictions. Learn more about “viagra manufacturer coupon“. Maybe “viagra discount coupons” is a so complicated matter. Matters, like “coupons for viagra“, are coupled numerous types of health problems. If you need to take recipe medications, ask your dispenser to check your testosterone levels before. Sometimes the treatment options may switch on erectile dysfunction remedies or a suction device that helps get an erection. Keep in mind web-site which is ready to sell erectile disfunction drugs like Viagra without a prescription is fraudulent. When you purchase from an unknown web-site, you run the risk of getting counterfeit remedies.

Orientação a Objetos em Javascript

Post indexador sobre o que escrevi sobre OO em Javascript nesse blog apenas para guardar como referência rápida de consulta, estou revisando todos os posts para verificar o que falta escrever.

Name Binding

Herança no javascript

Overloading e overriding no Javascript

Typically chemist’s shop can sale to you with discreet treatments for various heartiness problems. There are numerous of safe online pharmacies that will deliver medications to your address. There are divers medicines for each afflictions. Learn more about “viagra manufacturer coupon“. Maybe “viagra discount coupons” is a very complicated matter. Matters, like “coupons for viagra“, are connected numerous types of health problems. If you need to take formula medications, ask your druggist to check your testosterone levels before. Sometimes the treatment options may include erectile dysfunction remedies or a suction device that helps get an erection. Keep in mind web-site which is ready to sell erectile disfunction drugs like Viagra without a prescription is fraudulent. When you purchase from an unknown web-site, you run the risk of getting counterfeit remedies.

Curso Javascript Fundamental

Primeiro curso da Milfont Consulting aberto ao público. Estamos traduzindo nossos cursos “In Company” para um formato que se beneficie do nosso modelo para empresas, mas que seja genérico o suficiente para abordar as principais necessidades que vivenciamos nos últimos 5 ou 6 anos no desenvolvimento de software como consultores.

Nossos cursos seguiam o roteiro:

  1. Visita ao Cliente para avaliação de suas necessidades em determinada tecnologia – como Javascript;
  2. Preparação da documentação e códigos para os conceitos coletados com base naquelas necessidades;
  3. Treinamento com ênfase em “Hands on” demonstrando os conceitos dentro de uma realidade conhecida e exigida.

Esse formato é muito bom e conseguíamos atender nossos clientes com mais profundidade, geralmente esses treinamentos são dentro de um projeto maior de consultoria. O problema é o desgaste de um processo totalmente artesanal por mais que montássemos pacotes com certo grau de estabilidade de conteúdo e reaproveitássemos muitos cursos – como o de Hibernate, que praticamente não havia mudanças.

Agora estamos pegando esse modelo baseado em “mão na massa” com base no “Know How” adquirido após anos de treinamentos e não mais em necessidades de clientes. Só para se ter uma idéia, esse curso de Javascript eu ministro desde 2006/2007 quando criamos a TriadWorks, empresa que fui sócio-fundador e agora parceira/irmã da Milfont Consulting.

Sobre o Curso

Nesse curso Javascript Fundamental eu vou abordar os principais conceitos de programação funcional e orientação a objetos ao estilo Javascript, ou seja, todas as idiossincrasias que você encontrará nas principais ferramentas construídas nessa linguagem. Quero preparar o aluno a ler e entender os fontes de Frameworks famosos como Extjs, bibliotecas dominantes como jQuery e construir suas próprias ferramentas/bibliotecas, seja para o client ou server-side.

Demonstrarei alguns problemas e Cases que desenvolvemos nesses últimos anos e explicarei os fundamentos da linguagem e dos paradigmas por meio desse código.

O livro que adoto como base para esse curso é o fabuloso Professional Javascript for Web Developers do Nicholas Zakas (não incluso no material do curso).

Existem vários bons livros, inclusive já os indiquei em posts passados, veja indicações: recente e antiga.

Existem alguns bons materias gratuitos que recomendo, como: Como criar um Framework javascript, Eloquent Javascript, JavaScript Garden, jQuery Fundamentals (que apesar de ser sobre jQuery, cobre muito sobre javascript em si), Essential Javascript & jQuery Design Patterns for Beginners e o Guia e a documentação de Referência da Mozilla.

Somente com esse material gratuito e com esses livros você aprende Javascript e se torna um bom programador nessa linguagem, o que estamos vendendo é nosso Know How em situações que passamos e como esse material nos ajudou a solucionar e encontrarmos as melhores formas de construir um código limpo, claro e eficiente nessa linguagem. Estamos oferecendo um salto na abstração entre a teoria e a prática, aonde implementar e como usar aqueles conceitos, como por exemplo Closure e Currying, dentro do seu cotidiano.

O formato do curso é curto (16h), focado (direto em cases e necessidades) e baseado em mão na massa. Máximo de 6 alunos por turma para um melhor aproveitamento e acompanhamento individual.

Inscreva-se na primeira turma enquanto há vagas. A quantidade mínima de pessoas para uma turma ser montada é UMA, que no caso para essa turma nasceu garantida, já tínhamos pessoal na fila.

Sede

Av. Desembargador Moreira 2020, sala 209. Edifício Trade Center, Bairro Aldeota, Fortaleza, CE, 60.170-002 Brazil – mapa.

Typically chemist’s shop can sale to you with discreet treatments for various heartiness problems. There are numerous of safe online pharmacies that will deliver medications to your address. There are divers medicines for each afflictions. Learn more about “viagra manufacturer coupon“. Maybe “viagra discount coupons” is a highly complicated matter. Matters, like “coupons for viagra“, are connected numerous types of health problems. If you need to take prescription medications, ask your pharmacist to check your testosterone levels before. Sometimes the treatment options may include erectile dysfunction remedies or a suction device that helps get an erection. Keep in mind web-site which is ready to sell erectile dysfunction drugs like Viagra without a recipe is fraudulent. When you purchase from an unknown web-site, you run the risk of getting counterfeit remedies.