Rodrigo Kumpera Weblog

Meus achados sobre tecnologia

Entries Tagged as 'language design'

A beleza do sistema de tipos do C#

July 14th, 2011 · No Comments

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

Implementando Haskell em VMs tradicionais (parte 2)

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

Implementando Haskell em VMs tradicionais (parte 1)

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

Limites da orientação a objetos

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

Ode ao C

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

Herança não funciona, parte III

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

A Nova onda de interpretadores

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

O futuro da programação – hoje

June 14th, 2008 · 7 Comments

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

Como fazer uma linguagem dinâmica ser rápida?

May 22nd, 2008 · 2 Comments

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

Monkeypatching: gambiarra du-jour

March 3rd, 2008 · 3 Comments

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