Entries Tagged as 'language design'
Outro dia me apresentaram o código abaixo com um dúvida bem boba. Esse código em C# abusa um pouco de uma das novidades da última revisão da linguagem, tipos genéricos variantes. Vamos ao código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
interface A<in B> { }
interface B<in A> { }
class X : A<B<X>> { }
class Y : B<A<Y>> { }
class Test
{
static void Main [...]
[Read more →]
Tags: Programming · Programming language Theory · language design
January 9th, 2010 · 1 Comment
Retomando a questão sobre como implementar Haskell em VMs tradicionais, vamos ver um dos aspectos mais complicados, thunking, de implementar de forma eficiente. Um dos aspectos que surpreende a maioria dos que usam Haskell pela primeira vez é o fato da linguagem ser lazy evaluated, isto é, o valor de uma expressão só é computado [...]
[Read more →]
Tags: Performance · Programming language Theory · language design · mono
September 10th, 2009 · 2 Comments
Outro dia uma discussão me levou a pensar se era possível implementar Haskell em cima de uma VM tradicional, tal qual JVM ou CLR, de forma eficiente. Em termos dos mecanismos que a VM precisa suportar de forma eficiente os principais são tail call, thunking, type classes e algebraic types. Nesse artigo vou apenas discutir [...]
[Read more →]
Tags: java · language design · mono
August 30th, 2009 · 1 Comment
Toda linguagem de programação pode ser analisada pela sua junção de três elementos distintos: forma, comportamento e taxonomia. Cada um define um aspectodistinto de como o conjunto de valores que compõe um programa é usado.
Cada um destes valores possui um forma, que é a representação concreta para o conceito abstrato que cada um significa. Um [...]
[Read more →]
Tags: Programming · Programming language Theory · language design
January 12th, 2009 · 5 Comments
A parte que mais odeio no C é ser minha melhor opção. Sim, sério, para aquilo que faço hoje em dia, realmente não existe linguagem melhor. E isso de deixa maluco pois se trata de uma linguagem anacrônica, cheia de problemas enormes que aparentemente toda comunidade de PLR esqueceu de tentar resolver.
Para quem já programou [...]
[Read more →]
Tags: Programming · anger management · language design
December 1st, 2008 · 1 Comment
Em artigos anteriores eu descrevi algum dos problemas associados com herança, ou subtipagem, e questões ligadas a co/contravariância. Porém outra questão me chamou muito a atenção recentemente, é o fato de classes e objetos como normalmente vemos em linguagens com tipagem explícita são uma mistura de conceitos que talvez não deveriam estar juntos.
O que exatamente [...]
[Read more →]
Tags: Programming · Programming language Theory · language design
September 30th, 2008 · 2 Comments
Interpretadores voltaram a ser um assunto muito discutido devido aos resultados alcansados pela SquirrelFish (interpretador de javascript do Webkit) e ao fato da VM do Android também usar um. Curiosamente, ambas VMs são baseadas em registradores em vez de pilha, como as máquinas virtuais tradicionais como JVM e CLR.
A grande diferença está na forma como [...]
[Read more →]
Tags: Performance · Programming · language design
Sempre que leio qualquer coisa feita pelo Iam Piumarta fico impressionado. Outro dia ao ler os slides sobre o progresso do grupo dele para construir uma linguagem que seja uma real evolução ao que temos hoje, me dei conta de como aquilo que eles propõem é radicalmente diferente ao que a prática de que estamos [...]
[Read more →]
Tags: Programming · language design
Muito se fala em como as implementações de Ruby estão ficando rápidas, que estão evoluindo rapidamente. Porém não consigo pensar em como todas elas parecem mas preocupadas em repetir o caminho das pedras que outras linguagens dinâmicas passaram em décadas passadas.
Hoje a maioria ainda está no estágio de possuir um interpretador razoável e estar começando [...]
[Read more →]
Tags: Programming · java · language design · mono · ruby
Finalmente o óbvio atingiu a comunidade de desenvolvedores de Ruby. Enfim descobriram que meta-programação sem disciplina é um engôdo. No começo produz resultados fabulosos rapidamente, só que mais adiante se torna um inferno de integração. Não falta gente calejada em Rails para te contar uma miríade de problemas ao integrar frameworks que modificam classes como [...]
[Read more →]
Tags: Programming · java · language design · ruby