Dec 03
Brendan Eich vs The Lambda JavaScript Programming
Quem aparentemente perdeu a fé no jeito clássico de programar Javascript foi o próprio criador da linguagem, Brendan Eich, hoje trabalhando como CTO da Fundação Mozilla Brendan falou um pouco a respeito do assunto no evento @media Ajax London onde apresentou suas idéias de como e para onde a linguagem criada por ele a mais de uma década (ainda na Netscape) deve evoluir. Os slides da apresentação podem ser conferidos aqui:
Brendan Eich é hoje um dos maiores defensores de mudanças na estrutura da linguagem e acredita que a implementação do Javascript 2 baseado no ES4 (EcmaScript 4) nos browsers já a partir do Firefox 4 pode corrigir problemas antigos que envolvem segurança e performance. Outros especialistas, entre eles Douglas Crockford, acreditam que o modelo proposto no ES4 descaracteriza totalmente a linguagem atual deixando a programação no browser mais parecida com Java e outras linguagens igualmente rígidas.
Eu acredito que exista espaço para muitas melhorias na forma como fazemos as coisas no browser, algumas coisas citadas por Brendan em seu blog fazem muito sentido, mas como foi citado por Douglas Crockford no vídeo The State of Ajax o browser de hoje já está sofrendo os efeitos da idade. Sejamos realistas, o que as pessoas querem são experiências mais ricas e interativas, sistemas operacionais rebuscados e processadores multi-core estão pipocando pelo mundo enquanto no browser ainda ficamos maravilhados a cada drag & drop, toda vez que alguém cria uma interface relativamente inteligente e com recursos que seriam absurdamente banais se o runtime fosse por exemplo o flash e não um browser, nós aplaudimos e o cara ganha seu pequeno artigo no Ajaxian.
As aplicações Ajax do futuro, assim como as bibliotecas Javascript podem ser muito melhores e mais eficientes do que as de hoje. A proposta do ES4 fala justamente disso, de criar um ambiente onde os desenvolvedores de bibliotecas vão encontrar as ferramentas para programação séria (tipos, iterators, constantes, classes e um compilador JIT por exemplo) sem no entanto abrir mão de um subset simplificado para os webdevelopers acostumados aos prototypes da linguagem atual. Existe hoje uma corrida para fazer com que o browser seja mais multimídia e tenha uma performance melhor para conteúdos mais sofisticados, além do Tamarin e do ES4 é possível ver as equipes dos browsers competindo para implementar o “triturador de html” mais rápido da internet (até agora a vantagem é do Safari), canvas, canvas 3D, tags de vídeo e áudio… uma verdadeira festa.
Só que nesses esforços não existe coesão, a Microsoft não disse em nenhum momento que suporta o ES4, pelo contrário… provavelmente veremos uma versão do EcmaScript 3 bem mais enxuta nos próximos browsers da MS, e sem o IE não temos um padrão, nós sequer sabemos como será o Internet Explorer 8 e que novidades ele vai trazer para a comunidade de desenvolvedores. Enquanto o browser não evolui temos Silverlight e Flash correndo por fora como plataformas RIA, eu não me atreveria a dizer que uma dessas tecnologias virá a substituir o HTML e o modelo de internet que temos hoje, mas a constatação é óbvia, o ser humano não usa aquilo que é melhor… ele usa aquilo que está amplamente disponível.
Estou esperando, por mais estranho que possa parecer acredito que a única empresa realmente mirando na direção certa é a Microsoft, a idéia de usar o EcmaScript 3 como base me parece boa já que a linguagem vai continuar compacta, é diferente do monstro proposto no ES4 e a Microsoft ainda se garante com o Silverlight para quem quiser “algo a mais”.
Que Deus nos livre de viver outra era de incompatibilidades no melhor estilo Netscape vs IE.


December 3rd, 2007 at 7:38 pm
Hi, a couple of points (I hope it is ok to comment in English):
* I have not lost faith in the Lambda Calculus — how could one, it’s fundamental to computation. But I just wrote something based on reason, not faith. I think making a religion out of one style or approach to programming in JS is a mistake.
* If you think the web will survive stuck at JS1, just so long as it gets better APIs including multicore and multimedia ones, then you have to explain why the runtimes such as Silverlight and Flash have stronger languages (and by that I mean languages with greater integrity and programming-in-the-large support than JS1 has), and why these new runtimes do outperform the web browser and JS1 in language usability as well as performance. Browser performance, even JS1 performance, will improve as I noted in my keynote at @media Ajax in London. But performance is not the only goal, and ultimate performance with integrity does require JS evolution.
Instead of false religions about JS1, why not evolve JS? We evolve or improve our other tools all the time. If you are concerned that Microsoft will reject JS2, take a look at ScreamingMonkey (http://wiki.mozilla.org/Tamarin:ScreamingMonkey).
I hope this comment helps,
/be
December 4th, 2007 at 12:15 am
Brendan, first of all I want to say I agree with you when you say we really need to evolve Javascript to the next level (sorry if the title of the topic itself don’t make this more clear). What scares me the most is the possibility of have 2 different implementations of the EcmaScript, one for the Internet Explorer and the ES4 for Firefox and the others. We as webdevelopers need some standards to build our things (off corse you know that). I really hope that ScreamingMonkey can help on this.
Another thing I’m worried about is the “size” of EcmaScript 4, maybe it’s just me but JS1 is a very small language and the ES3 in comparisson with ES4 appears to be significantly small (yes, I read the “ES4 News and Opinion” on your blog).
Many thanks for your comment.
David
December 4th, 2007 at 2:41 am
David,
I understand some of the frustration when you mentioned “Que Deus nos livre de viver outra era de incompatibilidades no melhor estilo Netscape vs IE.”. However in the beginning seems like you trying to compare [1] Brendan’s Design / JS2 with a [2] Result of his previous Design ( -> JS1 ). In order to attempt a comparison here we would need to go back and get Brendan’s design prior to JS1. JS1 was a product of innovative work. Now a design to JS2 is also about innovation, and because it s new, we also need to add cases and help with technical points and analysis. I liked more your second comment - was a more clear note.
From your article I find a very interesting point ” o ser humano não usa aquilo que é melhor… ele usa aquilo que está amplamente disponível. ” . I agree, adoption comes when certain things ( good or bad ) are in the open. The open aspect of things is that makes ( as you say ) an Ajaxy solution to stick more as opposite to similar implementation in previous Flash version.