Sunteți pe pagina 1din 10

Universidad de Panamá

Centro Regional Universitario de Veraguas.


Facultad de Informática, Electrónica y Comunicación.

Materia:
Estructura de los lenguajes
de programación.

Facilitador:
Santimateo, Diego.

Laboratorio 2:
Los 7 pecados capitales
de la programación

Realizado por:
Santillana, Fabricio.

Cédula:
2-718-1147

II semestre.

17 de Diciembre del 2007


Los siete pecados capitales de la introducción al
Diseño de los lenguajes de programación
Laboratorio #2

Objetivos
 Analizar debilidades del diseño de los lenguajes de
programación, particularmente en el proceso de enseñanza
aprendizaje de los mismos.
 Proponer mejoras tendientes a minimizar las debilidades del
diseño en función de la curva de aprendizaje de los
lenguajes.
 Utilizar espacio virtual como apoyo al proceso de
aprendizaje.

Procedimiento
1. Proceda a leer con mucho detenimiento y concentración el
artículo que presentamos en la referencia. Tome apuntes,
consulte y proceda a hacer su propio análisis de la lectura
(No más de cuatro párrafos). Revise el concepto de análisis
antes de publicar el suyo en
http://www.esnips.com/web/estructuraLP. (10 ptos).
2. Ejemplifique utilizando algún lenguaje de programación, tres
de los siete pecados capitales, solo un ejemplo en cada caso.
Puede usar varios lenguajes. En cada caso proponga y
explique una alternativa para eliminarlos. Presente su
ejecutoria impresa.(10 ptos)
3. En un documento impreso describa el resultado de la
evaluación de dos lenguajes de programación, utilizando los
criterios propuestos en el documento de lectura. Justifique la
selección de los lenguajes y la ponderación dada en cada
criterio. (15 ptos).
4. Después de esta experiencia usted debe estar en disposición
de opinar sobre el análisis que han presentado sus
compañeros en el punto #1. Haga conocer su opinión o
reflexión sobre el análisis de otros, utilizando comentarios de
texto en http://www.esnips.com/web/estructuraLP (15 ptos).

Referencia
Linda Mciver & Damian Conway. Department of Computer
Science. Monash University, Victoria, Australia.
http://www.csse.monash.edu.au/~damian/papers/PDF/SevenDea
dlySins.pdf

Observaciones
 Usted debe ser lo más original posible, ya que copiar y pegar
será evaluado con cero puntos.
 http://www.esnips.com/web/estructuraLP/ está en Internet,
de manera que sus aportes recorrerán todo el mundo, por
favor revise su sintaxis y semántica antes de hacer su
aportación.
1. Análisis de la lectura

Los siete pecados capitales de la programación es un documento que


trata sobre los problemas que surgen en la enseñanza de lenguajes
de programación. Según el documento los lenguajes de programación
están en constante evolución tomando en cuenta las experiencias de
los usuarios y de esta manera incorporar nuevas rutinas, mejorar en
la semántica y en la estabilidad, lograr una sintaxis más clara y más
restricciones, pero en este proceso de desarrollo se omite la idea de
la sencillez y la estandarización de los lenguajes lo cual facilitaría su
enseñanza y evitando así cometer alguno o todos de los sietes
pecados capitales.

Más es menos, es el primer pecado capital, el cual nos plantea que


aquellos lenguajes basados en la abstracción y en la sencillez son los
mejores para la enseñanza, pero el problema radica en que pueden
haber múltiples enfoques para resolver un problema ocasionando que
no existe la especialización por parte de los estudiantes, los que nos
lleva al segundo pecado capital: más es más aquí se considera
pecado la gran funcionalidad aplicable de los lenguajes como C++ y
Ada en la enseñanza de los lenguajes por que no es posible enseñar
todo o es ignorado partes del lenguaje en si. Otro pecado capital son
los tiempos gramaticales en donde la equivalencia de conceptos
dificulta a los estudiantes la diferencia entre uno u otro; tal es el caso
de las listas en Haskell y Prolog.

Otro pecado mencionado en el documento es: La dependencia de


hardware. Este pecado dificulta a la enseñanza por que muchos
lenguajes de programación limitan el uso de memoria, además la
portabilidad se ve comprometida. En la mayoría de los lenguajes
existen rangos para los distintos tipos datos, si se sobrepasa este
limite pude generar resultados y errores confusos para un estudiante.
Otro punto destacado es la compatibilidad atrasada de los lenguajes
de programación. Muchos lenguajes de programación derivan de
otros lenguajes por lo que, una vez diseñado, se espera que
introduzca nuevos conceptos, pero como ocurre en C y C++ en donde
se perpetúa el uso de módulos, se siguen cometiendo los mismos
errores.

El documento también hace referencia al hecho de no conocer como


se realizan los procesos en un nivel bajo de programación como un
pecado capital el cual lo llama excesiva habilidad. El poder que
ofrecen muchos lenguajes para la realización de algoritmos en donde
todo se resume en una simple palabra reservada o función de librería.
El estudiante podrá aprender como usar las herramientas que les
ofrece el lenguaje, pero las mismas no lo obligara a conocer el
funcionamiento a un nivel bajo del lenguaje o realmente el significado
de las expresiones. Ahora, cuando se inicia la enseñanza de lenguajes
de programación el estudiante tiende a considerar que el resto de los
lenguajes posee semánticas iguales y que sólo se difieren en la
sintaxis, esto es la violación de expectativa.

2. Ejemplos:
1. Dependencia del hardware: existe un rango en los tipos de
datos. Para un estudiante pude resultar confuso dado que cada
lenguaje establece sus propias pautas en el rango dependiendo de la
máquina y la implementación

Este código genero la siguiente salida: el cual muestra un resultado


totalmente inesperado, un número con valor negativo dado que la
operación se realizo mediante el uso de dos números positivos.

Posibles alternativas:
El lenguaje C es ampliamente utilizado en la enseñanza, pero por ser
de nivel medio es fácil cometer este tipo de errores. Además, C no
cuenta con un sistema de excepciones lo cual le indicaría con mayor
claridad al estudiante lo que esta haciendo, esto sería una posibilidad
solución, pero alejada un poco de realidad por que sería necesita la
mejora del propio lenguaje. Otra posible solución sería implementar
en la enseñanza de los lenguajes los errores más comunes que se
producen o pueden ser producto de un mala uso del lenguaje.
2. Habilidad excesiva: el típico problema de estructuras de datos el
cual consiste en mantener u ordenar los datos almacenado en una
array. Muchos lenguajes ofrecen herramientas para ordenar array,
pero un programador novato puede caer en el pecado de depender
de estas, lo cual no es malo, pero ¿qué ocurre cuando se deben
ordenar el o los arrays y la herramienta del lenguaje falla, por que el
tipo o la cantidad de argumentos con la cual puede funcionar la
herramienta no es el adecuado?.

Posibles alternativas:
Es bueno que se utilice el uso de métodos en el lenguaje java que
permiten el ahorro de tiempo y de líneas de códigos, pero se pueden
evitar muchas confusiones para los estudiantes cuando estos
métodos fallan mediante la enseñanzas de algoritmos que permitan
manipular los datos de un array, ya sea, para la realización de
búsquedas u ordenarlos.
3. Violación de expectativas: Lenguajes como Prolog utilizan el
operados (=) para ligar variables. Prolog utiliza el sistema de
programación basada en predicados, si un predicado falla también lo
hará toda la cláusula y se detiene la ejecución del programa. Un
estudiante esperaría, que el programa no terminara su ejecución y
que el uso del operador (=) fuese usado para asignar o verificar, no
parar ligar variables.

La ejecución del código Prolog inicia con la consulta de la cláusula


consulta. Luego la variable A es ligada con el valor leído e inicia la
comparación del valor ligado a A con 0. Cuando la verificación es
positiva un literal es ligado a la variable B, la verificación termina
cuando algunos de los predicados fallas y es impreso el valor de B.

Posibles alternativas:
Para una mejor enseñanza deberá dejarse claro que los distintos
lenguajes de programación pertenecen a distintos estilos o
paradigmas de programación desde el principio y así evitar futuras
confusiones
3. Resultado de la evolución del lenguaje C y Java
Se han elegido los lenguajes C y Java por su sintaxis similar y por que
muchos lenguajes, incluyendo Java, derivan de C.
El desarrollo del lenguaje C ha desencadenado la enseñanza de los
lenguajes de programación dado que, desde sus inicios se convirtió
en uno de los lenguajes más populares. Se trata de un lenguaje de
nivel medio, pero con muchas de las características de un lenguaje de
bajo nivel, lo que lo hace ideal para la implementación de sistemas
operativos. Con el lenguaje C es posible enseñar programación en un
nivel muy bajo mediante el uso de punteros y con el cual es posible
iniciar el desarrollo de otros lenguajes. Dispone de las estructuras típicas de
los lenguajes de alto nivel y Los compiladores suelen ofrecer extensiones al lenguaje
que posibilitan mezclar código en ensamblador con código C o acceder directamente a
memoria o dispositivos periféricos. Uno de los objetivos de diseño de este lenguaje fue
que sólo fueran necesarias unas pocas instrucciones en lenguaje máquina para traducir
cada elemento del lenguaje, sin que hiciera falta un soporte intenso en tiempo de
ejecución. Es muy posible escribir C a bajo nivel de abstracción; de hecho, C se usó
como intermediario entre diferentes lenguajes. En consecuencia, el lenguaje C está
disponible en múltiples plataformas. Además, a pesar de su naturaleza de bajo nivel, el
lenguaje se desarrolló para incentivar la programación independiente de la máquina.

Java es un lenguaje que toma mucha de su sintaxis de C, pero tiene un modelo de


objetos más simple y elimina herramientas de bajo nivel como punteros y que cuenta
con independencia del hardware gracias al uso de la máquina virtual desarrollada por
Sun Java que en un principio era una máquina virtual interpretada el cual generaba
programas que se ejecutaban comparativamente más lentos que aquellos escritos en C.
El código Java puede ser a veces redundante en comparación con otros lenguajes esto es
en parte debido a las frecuentes declaraciones de tipos y conversiones de tipo manual.
En si, Java es un lenguaje que cuenta con una gran cantidad herramientas que facilitan
la reutilización de códigos y que se ha convertido en un lenguaje muy popular ideal para
la enseñanza.
Evaluación en ambos lenguajes

Pecados Lenguaje C Lenguaje Java


Menos es Más
Más es Más • •
Tiempo Gramaticales •
Dependencia del •
Hardware
Compatibilidad • •
atrasada
Habilidad excesiva •
Violación de • •
expectativa
Puntos 5 4

S-ar putea să vă placă și