domingo, 2 de septiembre de 2012

Lenguajes de programación.

JAVA vs. C#

Diferencias:
Orientación a objetos:
Java es puramente orientado a objetos; cualquier función debe pertenecer a alguna clase (es un método). Existe la función main, pero es un método,
pero es un método estático de una clase (la clase principal).
Control sobre la plataforma (hardware+S.O.):
C#: el programador tiene control del procesador.
Java: el programa se ejecuta sobre un procesador virtual (JVM) que abstrae al programador de la plataforma concreta.

Código de máquina generado:
C#: el compilador genera código de máquina para una plataforma concreta
Java: el compilador genera código de máquina (bytecode) para el procesador JVM; dicho código debe ser interpretado a posterior.

Liberación de Memoria:
C#: a cargo del programador (delete)
Java: automática; los objetos creados son destruidos automáticamente cuando se quedan sin referencias. Un proceso de la JVM llamado recolector de basura (garbage collector).

Punteros:
C#: existen punteros con una aritmética bien definida, y entre otras cosas, permiten programador explorar la memoria del computador físico.
Java: no existe el concepto de puntero; los objetos son accedidos mediante referencias (una referencia se puede considerar como el propio identificador del objeto); no existe aritmética de referencias.

Paquetes:
C#: No existe tal concepto; lo más aproximado son los archivos de biblioteca (.h)
Java: un paquete es una entidad organizativa que permite agrupar clases, interfaces y excepciones, así como que sus elementos dispongan de una determinada visibilidad con respecto a elementos externos al paquete.

Conversión implícita de tipos:
C#: existe (flexibilidad para el programador)
Java: no existe por considerarse un mecanismo objeto de errores potenciales.

¿JAVA?
Java es un lenguaje de programación de alto nivel orientado a objetos, desarrollado por James Gosling en 1995. El lenguaje en sí mismo toma mucha de su sintaxis de C, Cobol y Visual Basic, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria. La memoria es gestionada mediante un recolector de basura. Las aplicaciones Java están típicamente compiladas en un bytecode, aunque la compilación en código máquina nativo también es posible. En el tiempo de ejecución, el bytecode es normalmente interpretado o compilado a código nativo para la ejecución, aunque la ejecución directa por hardware del bytecode por un procesador Java también es posible.
¿C#?
C# es un lenguaje de programación orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma. C# es uno de los lenguajes de programación diseñados para la infraestructura de lenguaje común. Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma .NET, similar al de Java, aunque incluye mejoras derivadas de otros lenguajes. El nombre C Sharp fue inspirado por la notación musical, donde '#', indica que la nota  es un semitono más alta, sugiriendo que C# es superior a C/C++. Además, el signo '#' se compone de cuatro signos '+' pegados.

¿Cual es mejor?

En mi opinión, el mejor lenguaje de programación es Java por que se adapta a cualquier dispositivo sea computadoras, laptops, tablets o celulares. También permite conectarse a diversas bases de datos e interconectarse con otros sistemas. 

Bibliografia: