> Me avisaron varias personas por mail privado que en esta lista no se 
> puede hablar de Java. ¿Qué onda?
> O sea, si hay posturas distintas, me parece que deberian compartirse 
> para enriquecer la lista.

No creo que no se pueda hablar de Java. De hecho, hay mucha gente razonable
en esta lista. Lo que sí tengo en claro es que a la inmensa mayoría de la
lista no les gusta mucho Java ;-)

La pregunta original era entre Java y C#, con la aclaración de que no quería
una salida laboral, sino aprender.

Así que vamos por partes:

1) Entre Java y C#, para aprender, prefiero C#. Las diferencias sintácticas
y semánticas son pocas, pero C# tiene abstraídos algunos conceptos que - a
mi jucio - lo hacen mejor para aprender.

2) Se ha dicho mucho, en la lista, que Java es un subconjunto de C++, tal
vez con mayores bibliotecas (esto último lo entendí yo, implícitamente).
Esto de acuerdo casi totalmente. Ahora bien, creo que Java (y C# también),
lo que hacen en gran medida, es abstraer más que C++: por ejemplo, el tema
de referencias, de recolección de basura, etc. C#, al introducir conceptos
como propiedades y eventos, abstrae en estas áreas más que Java. Y la
abstracción no la veo necesariamente como un problema. Yo enseño con Java /
C#, por dos razones:
- los alumnos que llegan a Algoritmos III ya han trabajado con C++
- Java / C# me permiten explicar conceptos más elaborados sin entrar en
tanto nivel de detalle (una ventaja de la abstracción), y Algoritmos III
tiene como objetivo enseñar POO, no un lenguaje Cuál es mejor o peor,
entonces, es un tema de qué quiero lograr. Me queda totalmente claro que C++
me da mayores posibilidades, aunque con dos contras: más trabajo (no le
rehuyo al trabajo, pero a veces la comodidad es una ventaja), y mayor
propensión a errores (que, obviamente, los programadores más experimentados,
como los de esta lista, no cometen ;-) ).
Coincido con un artículo que leí hace un tiempo en la web:
http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
En el que postula que es mejor, para formar buenos programadores, enseñar
lenguajes más complejos, como C++. Léanlo, que no tiene desperdicio.
Incluso, habla bien de la FIUBA, que enseña Java / C# después de que los
alumnos ya se toparon con problemas complejos de C y C++.
Pero eso no quita que, para enseñar conceptos más avanzados, nos venga mejor
un lenguaje que nos abstraiga más. Esa es la razón por la que uso Java / C#.

4) Se recomendaron también lenguajes interpretados y/o de tipeo dinámico,
como Python, Ruby, ¿Smalltalk?.
Me parece una excelente opción para aprender objetos de una manera sencilla,
y que te va a permitir aprender cosas nuevas. El único peligro que veo es
que termines creyendo que POO va solamente con lenguajes interpretados y/o
de tipeo dinámico, como he oído decir a mucha gente. Si te cuidás de esto,
te los recomiendo.
Si alguien pregunta por qué no los uso para enseñar POO, la razón es que,
para alumnos que ya vienen de lenguajes compilados y con tipos estáticos, me
resulta más sencillo enseñar con lenguajes parecidos, lo que, nuevamente, me
facilita centrarme en los conceptos y abstraerme de los detalles.

3) Se aprovechó para recomendar lenguajes de otros paradigmas (funcional,
sobre todo).
Personalmente, trabajé mucho con lenguajes funcionales (y lógicos, como
Prolog) hace un par de décadas. Creo que son buenos para abrir la cabeza.
Sin embargo, me pasa lo mismo que Leandro: me cuesta seguir la lógica
("sintaxis fea" me parece un poco subjetivo). Será un problema de formación,
supongo...
De nuevo, si querés aprender cosas nuevas, me parece una buena opción.

Dijo Leandro Lucarella:
> Ya hemos tenido alguna discusión que pasó tangencialmente por el tema 
> con Carlos Fontela =)
Espero esta vez haber sido más mesurado y no llegar a tanto...

Saludos,

Carlos Fontela
(profesor de Algoritmos III)
(docente de POO desde 1994, antes de la existencia de Java)
(usuario de POO desde 1990, 10 años después del surgimiento de Smalltalk)




_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a