[gugs] Re: [asamblea-sd] Cursos de los de gugs por emilio?

Esteve Fernàndez esteve en sindominio.net
Lun Oct 21 00:46:41 CEST 2002


On Sun, 20 Oct 2002 23:41:35 +0200
Javier <outermind en eresmas.net> wrote:

> Discrepo, Python es un buen lenguaje para programar (es cómodo) pero
> no para aprender (poco genérico), en mi opinión es mucho mejor empezar
> con lenguajes fuertemente tipados que, por otro lado, no me parecen
> más difíciles de aprender; pero aprender con lenguajes débilmente
> tipados puede suponer un trauma fuerte al pasarse a un lenguaje
> fuertemente tipado  (o eso comentan) sobre todo un lenguaje orientado
> a objetos (de no tener tipos a que todo sea un tipo).

Pero en la teoría de metodología de programación no se enseña: "esto es
de este tipo exacto", sino "aquí hay esto, que no necesitamos saber
exactamente de qué tipo es" sino que se centra en saber dividir un
problema en pequeñas cosas. La cosa cambia con la POO (sobretodo con
UML), en la que hay que decidir cómo se comporta una clase, de qué tipo
es, etc.

> A pesar de que la gente suele estar en contra, a mi Java me parece un
> buen lenguaje para aprender, se enseña directamente el paradigma de la
> OOP y así te ahorras el tener que corregir vicios después (que a mi en
> particular, me supuso un esfuerzo grande). Me consta que ya hay
> universidades donde enseñan a programar con Java así que no debe ser
> imposible como afirman algunos...

Yo estoy estudiando en la UB, donde se enseña Java en primero como
lenguaje de programación. Por lo que veo, es un auténtico desastre (que
no dudo que sea también por culpa del profesor). La gente que no tiene
no ha visto un código fuente en su vida, tienen una empanada increíble
(no ven claramente el concepto de objeto, cuando el día anterior les
acaban de enseñar lo que es un bucle). Seguro que si aprendes primero
procedural y luego aprendes objetos, coges vicios (yo también los
tenía... y sigo teniendo), pero aprender directamente POO es inservible.
La POO requiere saber abstraer las cosas mucho más, pero para ello es
bueno tener la base anterior de la procedural, aunque se tarde más
tiempo.

Haciendo un símil, probablemente no cojas muchos vicios si aprendes a
conducir trailers (en lugar de primero conducir coches, luego camiones y
finalmente trailers), pero te arriesgas a tener que aprender tantos
conceptos nuevos si no has cogido nunca un coche, que probablemente
aburras (o nunca comprendas) la conducción.

Creo que es mejor aprender un lenguaje que te permita programar de
manera procedural, sin imponerte la OO (aunque realmente, esté
funcionando con OO). Por ejemplo, <spam>Ruby</spam> es un lenguaje cuya
OO está mucho menos limitada que en Java (al estilo de SmallTalk), pero
que no fuerza a usarla; aunque la estés usando constantemente, todo son
objetos, todo son métodos, el propio programa es un objeto, tiene cosas
como librerías específicas para el diseño UML de software (patrones
Singleton, Visitor, Delegation, etc.), permite la inspección de los
propios objetos mientras se están ejecutando, marshalling (como la
serialización de Java), etc. Su defecto es que su tipado muy muy débil
(declaración dinámica de variables). En ese sentido, Python te permite
requerir la declaración de las variables (aunque no les especifiques el
tipo), pero su OO no llega a la de Ruby.

Adéu.

PD: vaya parrafada ;) pero en temas de guerras de lenguajes de
programación, es obligatorio :D

--
To understand recursion, one must first understand recursion
esteve en sindominio.net
Key fingerprint = EC56 9368 0DBA B56E F67E  D938 27F0 3F30 C1B7 00AA
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre     : no disponible
Tipo       : application/pgp-signature
Tamaño     : 189 bytes
Descripción: no disponible
Url        : /pipermail/gugs/attachments/20021021/7fc3aab7/attachment.pgp


Más información sobre la lista de distribución Gugs