martes, 12 de agosto de 2008

Vb or C#

A menudo me preguntan los novatos me preguntan ¿Qué es mejor VB.NET o C#? o a veces platico con los no tan novatos y discutimos de porque uno y porque otro.

La verdad es que la inmensa mayoría de las cosas que se pueden hacer un lenguaje se pueden hacer en el otro, esto debido a que comparten el Framework de .NET y a que ambos se ajustan a las especificaciones del CLR.

Elegir el lenguaje al iniciar un desarrollo es importante, muchas veces se elige por las razones equivocadas.

“Este lo conozco bien”

“Me han dicho que éste es el mejor”

“Siempre he trabajado con éste y me ha funcionado”

Cada lenguaje fue diseñado para atacar un tipo de problemas en particular, si una vez que conoces un nuevo lenguaje y tu manera de pensar sobre la programación no cambia, entonces es un lenguaje que no merece la pena ser aprendido.

El caso de VB.NET y C# es particular, puesto que .NET es una plataforma que muchas veces es usada para soluciones empresariales (Hay muchas otro tipo de aplicaciones que se pueden desarrollar con .NET) y bien podríamos decir que ambos lenguajes pueden cumplir con este tipo de tareas.

Yo prefiero C# por una razón mucho más simple que los complicados argumentos de mis colegas, yo prefiero C# porque tiene una sintaxis más clara, mucho menos verbosa y más intuitiva.

Esto podría parecer secundario pero no lo es. La mayor parte del tiempo el código es modificado y muchas veces esta tarea la realizan programadores distintos al que originalmente creo el código y es importante que ese código sea los más claro y sencillo posible, esto al final es tiempo y el tiempo es dinero.

Cualquier tonto puede escribir código que entienden las computadoras. Los buenos programadores escriben código que entienden las personas.

-Martin Fowler

Aquí el diagrama de una clase sencilla, la clase Persona con sólo algunas propiedades básicas.

DIAGRAMA[1]

El código en C#

    class Persona

    {

        public String Nombre { get; set; }

        public String ApellidoPaterno { get; set; }

        public String ApellidoMaterno { get; set; }

        public String Domicilio { get; set; }

        public int Edad { get; set; }

        public String EstadoCivil { get; set; }

        public Boolean EsHombre { get; set; }

    }

El código en VB.NET

Public Class Persona

    Private _nombre As String

    Public Property Nombre() As String

        Get

            Return _nombre

        End Get

        Set(ByVal value As String)

            _nombre = value

        End Set

    End Property

 

    Private _apellidoPaterno As String

    Public Property ApellidoPaterno() As String

        Get

            Return _apellidoPaterno

        End Get

        Set(ByVal value As String)

            _apellidoPaterno = value

        End Set

    End Property

 

    Private _apellidoMaterno As String

    Public Property ApellidoMaterno() As Integer

        Get

            Return _apellidoMaterno

        End Get

        Set(ByVal value As Integer)

            _apellidoMaterno = value

        End Set

    End Property

 

    Private _domicilio As String

    Public Property Domicilio() As String

        Get

            Return _domicilio

        End Get

        Set(ByVal value As String)

            _domicilio = value

        End Set

    End Property

 

    Private _edad As Integer

    Public Property Edad() As Integer

        Get

            Return _edad

        End Get

        Set(ByVal value As Integer)

            _edad = value

        End Set

    End Property

 

    Private _estadoCivil As Integer

    Public Property EstadoCivil() As Integer

        Get

            Return _estadoCivil

        End Get

        Set(ByVal value As Integer)

            _estadoCivil = value

        End Set

    End Property

 

 

    Private _esHombre As Boolean

    Public Property EsHombre() As Boolean

        Get

            Return _esHombre

        End Get

        Set(ByVal value As Boolean)

            _esHombre = value

        End Set

    End Property

End Class

Si usted nunca a usado ninguno de los dos lenguajes, ¿cuál le parece más legible? Usted amigo lector que no conoce de software, ¿cuál elige? ¿Es más explicito y claro VB? ¿Le gusta la simplicidad de C#? ¿VB.NET es una burda aproximación a un lenguaje de OOP? ¿Sigue siendo Vb realmente el lenguaje más sencillo de aprender?,  Si tiene a su cargo un grupo de programadores, ¿con cual lenguaje cree que serán más efectivos?

Saludos

2 comentarios:

Anónimo dijo...

Ahora intenta hacer late binding con c#, o xml literals o simplemente programar con office desde c#. A ver que código sale más verboso.

Rulas dijo...

XML Literals ni siquiera existe en C# =( y pues sí, definitivamente hay de gustos a gustos y no todos los problemas se deberían resolver igual.

Saludos anónimo!