Linguagem como forma de abstração?
Muito se tem falado ultimamente em Domain Specific Language, Fluent Interfaces, Código Expressivo, mas o que estes conceitos trazem de novidade para nós da comunidade de desenvolvimento de software? Não estaríamos satisfeitos com a quantidade de técnicas e tecnologias que temos que lidar?
O grande questão a se responder é, estas tecnologias são suficientes para resolver os problemas que temos atualmente? Java e C# com suas implementações de Orientação a Objetos são suficientes para resolver nossos problemas como desenvolvedores?
Em uma apresentação na TSS Barcelona, Martin Fowler e Neal Ford propõem uma nova abordagem para construção de software.Em vez de utilizarmos as técnicas de modelagem padrão de hoje, baseadas em hierarquias de objetos, o principal mecanismo de abstração seria a própria linguagem. Eles acreditam que nossa atual camada de abstração (baseada hierarquias para modelar o mundo) tem falhado em alguns momentos. E é justamente nestas falhas que utilizamos coisas que aumentam ainda mais a complexidade, e nesta apresentação eles citam aspectos como exemplo. Se o fato de construir software é justamente tentar controlar a complexidade, por que estamos adicionando mais complexidade para resolver nossos problemas?