Postado em março 29, 2010 às 2:16 am

Comparação de linguagens

Pessoal, esse é um post pequeno, sobre uma comparação que me bateu a curiosidade de fazer durante essa semana que passou. Uma das maneiras de se medir a produtividade de uma linguagem, é o quão enxuto é o seu código, sem perder a coesão. Ou seja: Quantas linhas essa linguagem me economiza de escrever, sem que fique difícil de entender o que o código escrito faz. Atualmente, eu trabalho com VB.NET, embora eu prefira C# e esteja me apaixonando lentamente pelo Ruby(com ou sem o Rails). Então, resolvi comparar o quanto de código eu gastaria para escrever um objeto de negócio simples.

Utilizei accessors para as propriedades da classe em questão. Para quem não está acostumado com o conceito de accessors(linguagens como Java, PHP e C++ dentre outras, não tem este recurso), explico: Accessors são jeitos de implementar os getters e setters dos atributos de uma classe, com pouco código. Isso varia de linguagem para linguagem, e no .NET por exemplo, os accessors são chamados de Properties.

A classe em questão é uma classe chamada Pessoa, com os atributos Nome, CPF, RG e Data de nascimento, coisas necessárias para alguns cadastros básicos. Sem mais demoras, vamos aos códigos. Iniciemos pelo Ruby:

class Pessoa
attr_accessor:Nome, :Nascimento, :RG, :Cpf
end

Em Ruby, foram necessárias apenas 3 linhas para a criação da classe. Aos que não conhecem a linguagem e perceberam que não declarei nenhum atributo com tipo, a explicação é simples: O Ruby, apesar de ser uma linguagem fortemente tipada, é dinamicamente tipada, ou seja: Decide o tipo do atributo em tempo de execução. Passemos agora para o C#:

public class Pessoa{
public string Nome{get;set;}
public DateTime DataNascimento{get;set;}
public string RG{get;set;}
public string CPF{get;set;}
}

Em C# foram necessárias 6 linhas. Repare que o C# “abrevia” os getters e setters. Essa é a declaração dos accessors da linguagem. Apesar de aparentemente nessa declaração os atributos da classe estarem sendo declarados como públicos (o que violaria o encapsulamento), na verdade está sendo definida a visibilidade dos getters e setters. Vejamos agora como ficaria a classe em Visual Basic .NET

Public Class Pessoa
         Dim name,registro,cadastro As String
            Dim nascimento As Date
        Public Property Nome() As String
            Get
                Return name
            End Get
            Set(ByVal Value As String)
                name = Value
            End Set
        End Property

        Public Property RG() As String
            Get
                Return registro
            End Get
            Set(ByVal Value As String)
                registro = Value
            End Set
        End Property

        Public Property CPF() As String
            Get
                Return cadastro
            End Get
            Set(ByVal Value As String)
                cadastro = Value
            End Set
        End Property

            Public Property DataNascimento() As Date
            Get
                Return nascimento
            End Get
            Set(ByVal Value As String)
                nascimento = Value
            End Set
        End Property
End Class

No Visual Basic .NET foram necessárias TRINTA E SEIS linhas para fazer a mesma classe, mesmo utilizando accessors(apesar de não parecer, esses são os accessors do VB.NET) . Mesmo com o intellisense (também conhecido como autocomplete) do Visual Studio, é um trabalho muito maior de se criar a classe, gastando ainda mais tempo para a escrita do código. Eu acho o Visual Basic uma boa linguagem para quem está aprendendo a programar, pois a sintaxe deixa extremamente explícito o que faz o código. Mas há outras maneiras de se fazer entender sem precisar escrever tanto.

Em tempo: Quando a Microsoft iniciou o desenvolvimento do OS/2 com a IBM, a produtividade dos programadores era medida pela IBM em quantidade de código escrito, ou seja: Quanto mais código, maior o pagamento. Isso fazia com que os desenvolvedores escrevessem código sem nenhuma optimização e até mesmo desnecessário, para que não tivessem seu pagamento afetado. Quando a Microsoft optimizou o código e diminuiu a quantidade de linhas escritas para fazer a mesma coisa, houve um pequeno mal entendido entre as empresas, que foi logo resolvido. Curiosidades do mundo da programação.

Bem, é isso. Espero em breve ter tempo para escrever os artigos sobre Ruby que pretendo publicar aqui. É uma linguagem muito completa e gostosa de mexer. Espero que tenham gostado do artigo.

Abraços e keep coding!

Tags:, , , , ,

Uma Resposta para “Comparação de linguagens”

  1. richardprg em agosto 7th, 2010 at 23:23 says:

    puts cara isso do ruby parece ser muito bom mesmo…

Deixar um comentário