[gugs] Re: [asamblea-sd] Cursos de los de gugs por emilio?
Esteve Fernàndez
esteve en sindominio.net
Lun Oct 21 14:53:38 CEST 2002
On Mon, 21 Oct 2002 16:09:25 +0200
Marcos Serrano <makros en sindominio.net> wrote:
> Yo creo que para aprender de verdad a programar (y no a usar las
> palabras clave
> de un compilador específico) son necesarias dos cosas:
>
> - pseudocódigo y estudio de técnicas de programación basado en
> los principios
> matemáticos (invariantes, postcondiciones, precondiciones, etc). Hacer
> estudios de infalibilidad de bucles, asegurarte de que un código no es
> inconsistente, etc.
Eso es fundamental. Saber programar es saber estructurar las ideas,
dividirlas los problemas más complejos en varios problemas más pequeños,
etc. pero también es bueno acompañarlo con ejemplos de lenguajes.
> - empezar con un lenguaje procedural y tipado (aunque esto
> último estás más
> influenciado por la opinión personal), un lenguaje que te obligue a
> crear procedimientos, funciones, definición de variables, tener
> cuidado con los tipos que se usan.
Ningún lenguaje te obliga a crear procedimientos o funciones... o acaso
no has visto programas enteros escritos dentro de un main inmenso? ;)
Con respecto al tipado fuerte, creo que para un principiante eso hace
que se distraiga, algo que es necesario es que el lenguaje de
aprendizaje te obligue a declarar las variables (más que nada, para
evitar errores), pero no así su tipo. Así se pueden centrar más en los
conceptos importantes que caracterizan la programación ¿es necesario que
un novato sepa que un int ocupa 4 bytes en plataformas ia32 en UNIX? En
el momento que necesite acceder de una manera más directa al ordenador
donde se está ejecutando el código o mejor rendimiento, puede adentrarse
en otros lenguajes, pero lo importante es que tenga los conceptos bien
claros y centrarse en el diseño y el análisis, no en la implementación.
> En la uned tenemos "programación-II" que te enseña pseudocódigo
> de una forma
> bastante fuerte, con práctica incluida (es de las que tiene más índice
> de suspensos) y "programación-I" que te enseña modula-2, lenguaje
> creado por niklaus wirth (también creó pascal) y tiene fuerte tipado
> de objetos, diferencia procedimientos y funciones, encapsulamiento de
> datos (el principio de la POO), modularización, memoria dinámica muy
> cuidada, etc. Tengo que reconocer que al principio no me gustaba pero
> ahora creo que es una muy buena forma de empezar, lo malo es que
> modula-2 es un lenguaje, digamos, muerto, muy poca comunidad de
> desarrollo y pocas aplicaciones para usar.
El problema de Modula-2 es que sólo tiene su base dentro de las clases
de programación :/ Es decir, no le vés una utilidad realmente práctica y
eso desmoraliza (no implica que sea buen o mal lenguaje). A veces te
frustas, cuando compruebas que no puedes utilizar de manera práctica lo
que te han enseñado, aunque también está el peligro de creer que todo el
monte es orégano y te pongas a picar código como un loco "porque
consigues hacer muchas cosas en poco tiempo" (léase, síndrome de
VisualBasic :P en el que puedes forzar el tipado, pero en el que mucha
gente usa el tipo "Variant" para todo)
Lenguajes como Python permiten mostrar los conceptos e insistir en
ellos, dejando algunos detalles. Cubre mucho del espectro de POO y
procedural, manteniendo el código limpio, etc. y encima ves que es un
lenguaje que sí se usa y que sirve para cosas grandes.
Adéu.
--
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/a7cbebb0/attachment.pgp
Más información sobre la lista de distribución Gugs