[Lisboa][2007.11.14] Linguagens Dinâmicas, com Mahesh Prakriya
A última reunião do GASP Lisboa aconteceu na Gare Marítima de Alcântara, aproveitando o convite do CodeBits para utilizar um espaço no local, com uma apresentação e discussão com Mahesh Prakriya da Microsoft sobre Linguagens Dinâmicas. A sessão foi em modo "walk-in", com uma participação alargada e interactiva.
O Mahesh fez uma apresentação relativamente rápida sobre linguagens dinâmicas e as suas diferenças face a ""linguagens tradicionais"" como C# ou Java, nomeadamente no facto de utilizarem "dynamic typing" e permitirem "object morphability" (por exemplo, adicionar métodos a uma classe em run-time, ou até a instâncias de uma classe). Fez também a ligação aos universos de duas linguagens "decanas", o Lisp e o SmallTalk.
Aquilo que se nota mais à primeira vista ao ver exemplos de código é obviamente a sintaxe não totalmente familiar, mas também um dos "selling points" destas linguagens, o facto de serem menos verbosas (diria que uma maior relação signal-to-noise). Igualmente interessante foi a ligação ao modelo de Test Driven Development (TDD), que geralmente caminha braço-a-braço com linguagens dinâmicas, até porque a flexibilidade e dinamismo também tem um custo, quando se troca as verificações em compile-time por um ambiente runtime.
A sessão acabou por ser guiada para algumas questões mais técnicas e específicas da implementação do Dynamic Language Runtime (DLR), IronPython e IronRuby, e o Mahesh fez demos que incluíram invocação a web services, Ink/reconhecimento de texto, Speech, e utilização em conjunto com SilverLight. Bastante elucidativas.
Em termos do universo .Net, uma limitação da DLR é que apesar de se poderem invocar assemblies com código "não dinâmico", o inverso não é infelizmente verdade devido à diferença no modelo de execução. Claramente seria uma potencialidade interessante, permitindo trazer este tipo de linguagens a mais cenários, especialmente empresariais.
Pessoalmente, sou grande adepto de modelos de Domain Specific Languages (DSL's), e enquadro este tipo de linguagens nesse universo. Existe um conjunto de universos aplicacionais em que as linguagens dinâmicas são especialmente interessantes.