mejor lenguaje para empezar en poo?

Iniciado por linux1, 18 Octubre 2010, 18:54 PM

0 Miembros y 2 Visitantes están viendo este tema.

globsharp

Hola Littlehorse :)

No es que C++ cadezca de elementos de OO, pero sí lo encuentro mas complicado que Java para empezar a adentrarse en la POO, digamos que en Java creo que podría concentrarse mejor en la POO en sí sin tener que atender a la necesidad de programar destructores, gestionar la memoria dinámica y distraerse con los elementos no OO del lenguaje.

Lo de que C# es una mejora de Java no lo podría haber expresado mas inadecuadamente, cierto, no es una mejora de Java, quise expresar que parece una mejora de Java dado a que está influenciado por Java y C++ pero corrigiendo algunas fallas o desventajas de Java, pero no está hecho sobre Java, es un lenguaje diferente influenciado por otros lenguajes, ciertamente.

C# está cerrado a sistemas Windows, pero sé que una parte de .NET fue liberada y que el proyecto MONO aprovecha esto para dar compatibilidad de C# a otros sistemas, pero parte de .NET si no me equivoco sigue estando cerrado, y la compatibilidad que ofrece MONO es por tanto incompleta, hay que tenerlo en cuenta.
Duérmete

[D4N93R]

" una parte de .NET fue liberada y que el proyecto MONO aprovecha esto para dar compatibilidad de C# a otros sistemas,"

Falso :) Mono no puede implementar ni una línea de código parecida a la de Microsoft, por la licencia de éste último. Mono es una implementación del CLR totalmente basada en el standard ECMA de C#.

" la compatibilidad que ofrece MONO es por tanto incompleta"

Falso :), la versión 2 y 3.5 están totalmente estables, lo único que no se va a hacer es WPF. y ya están trabajando en 4.0.

Mono está tan bien desarrollado que tiene casi el mismo performance que Java en un Ubuntu. Un ejemplo de estabilidad son algunos juegos de EA que implementan mono dentro del core como lenguaje de scripting o la misma página de Mono está en Asp.net / Apache.

Aportando al tema, C# aparte de como dice globsharp de estar influenciado (al principio) por Java y C++, también lo estuvo por Delphi ya que fue el mismo creador que lo diseñó. Aparte de eso, la OO en C# es superior a java, ya que en java si no me equivoco aún todo no hereda de Object. Aunque creo haber leído una noticia de que ya habían hecho esto.

Con respecto a cual es mejor? pues C++ tiene algo que no tiene Java ni C#, herencia múltiple, y que si se trata con cuidado es algo muy poderoso.

Para aprender POO no hace falta elegir uno, ya que con el que te sientas más cómodo aprenderás lo mismo en el mismo tiempo, son los mismo conceptos y no hay nada complicado ni oculto.

Un saludo.

globsharp

Gracias por las rectificaciones, [D4N93R] :)

Solo un detalle, la herencia multiple no existe ni en Java ni en C# porque estos tienen soporte para interfaces.
Duérmete

linux1

Cita de: [D4N93R] en 23 Octubre 2010, 00:00 AM

Para aprender POO no hace falta elegir uno, ya que con el que te sientas más cómodo aprenderás lo mismo en el mismo tiempo, son los mismo conceptos y no hay nada complicado ni oculto.

Un saludo.
tienes razon el problema es que trato de buscar los fundamentos de la poo y solo encuentro articulos relacionados con otros lenguajes java, c++, javascript...


gracias por la ayuda creo que me voy a lanzar por java y asi mato dos pajaros de un tiro...
ya que tambien me interesa el desarrollo para moviles...



[D4N93R]

Cita de: globsharp en 23 Octubre 2010, 01:01 AM
Gracias por las rectificaciones, [D4N93R] :)

Solo un detalle, la herencia multiple no existe ni en Java ni en C# porque estos tienen soporte para interfaces.

Nop, Las interfaces son para otra cosa. La herencia multiple no existe ni en Java ni en C# simplemente para evitar problemas como bases duplicadas y hace también que la implementación tenga más complejidad que puede tener impactos en casting, generics, acceso a campos, serialización, reflection, etc.

Aunque es cierto que se puede resolver el uso de MI con interfaces, la existencia de las interfaces no son la causa de la inexistencia.

Un saludo.!

Littlehorse

Exacto, uno de los objetivos de ambos lenguajes es mantener la simplicidad a toda costa, y la herencia múltiple adiciona demasiada complejidad. Por esa misma razón, Java tampoco permite la sobrecarga de operadores.


Citar
tienes razon el problema es que trato de buscar los fundamentos de la poo y solo encuentro articulos relacionados con otros lenguajes java, c++, javascript...

En las referencias de wikipedia tenes varios:


Saludos

An expert is a man who has made all the mistakes which can be made, in a very narrow field.

globsharp

Ah :D gracias a los dos por las aclaraciones, da gusto leerles.
Duérmete

MazarD

Ya no viene muy a cuento pero me quedé con las ganas de responder. xD

El problema de aprender orientación a objetos en C++ no es que no puedas hacerlo, es que abarcas un rango de posibilidades "no adecuadas" en OO que no serían posibles en c# o java, otro punto es la sintaxis, que en estos dos últimos lenguajes es más explicita. Está claro que se puede aprender en C++ pero seguramente no será el mejor para aprender.

El hecho de que puedas declarar funciones y variables fuera de una clase en C++ y no en java o c#, el que no puedas crear structs en java (o en c# debas especificar el acceso), el tener que especificar abstract para crear clases abstractas tanto en c# como en java y no en c++, etc etc etc hacen que sea mejor para aprender unos que el otro.
Aunque ruby, eiffel y demás puedan ser igual o más válidos (personalmente no he tenido la oportunidad de probarlos) de lejos no tendrán la documentación o comunidad de desarrolladores que tiene java, c# o c++.

Saludos!
-Learn as if you were to live forever, live as if you were to die tomorrow-

http://www.mazard.info
http://twitter.com/MazarD
irc://irc.freenode.org/elhacker.net

[D4N93R]

Buen post MazarD,

Sí, yo creo que tomando en cuenta lo que expones si sea un poco más adecuado Java o C# en un principio, pero dada la sintaxis no creo que sea poblema por ejemplo saltar de C# a Java, o Java a C++. Se pueden a prender los 3 sin ningún problema, obviamente cada uno tiene lo suyo, pero creo que es la mejor opción a la hora de elegir uno.

Yo mismo primero con Java que con .net, y primero fue Atari Basic  y luego VB5, aunque estuve muchos años con la sintaxis de Basic, (incluso VB.net) , yo mismo decía que esos {} no me gustaban, pero la verdad es que es muy diferente a la hora de programar y leer código.

Por lo mismo digo de nuevo, pruébalos :)

Littlehorse

@Mazard

Yo aclare el tema de las posibilidades en C++ porque en los posts anteriores se podía entender entre lineas que en C++ no se podía utilizar POO perfectamente. Mas allá de que sabia que no era eso lo que quisiste decir, es como que flotaba esa idea.
De Eiffel yo solo conozco la torre :xD, lo mencione porque la conclusión era que para aprender POO lo mejor es un lenguaje OO puro, sin embargo ningún lenguaje OO puro había sido mencionado.
De hecho, no recomiendo aprender ni Eiffel, ni Smalltalk, ya que no considero que aporten nada para aprender ni C++, ni Java, ni C#. Lo importante para aprender POO es que el lenguaje soporte el paradigma completamente y nada mas.

En cuanto al resto, estoy de acuerdo a medias por el hecho que el usuario viene de C, por lo tanto esta claro que tiene que saber reconocer los elementos de estructurada a la hora de meterse con C++.
Otra historia es cuando C++ es el primer lenguaje, se tarda un tiempo en dejar la estructurada y se tarda otro tiempo mas en programar orientado a objetos en lugar de basado en objetos. En ese caso si estaría de acuerdo con lo ultimo que dijiste.

Saludos!
An expert is a man who has made all the mistakes which can be made, in a very narrow field.