INVESTIGACION AUTOMATAS II

Embed Size (px)

DESCRIPTION

UNIDAD 1 LENGUAJES Y AUTOMATAS II

Citation preview

Temas 1.4 Diciplina de datoDaniel Caballlero Morales 113205211.4. Disciplina de tipos.

En todos estos aos que llevo en el mundo del cmputo, en particular en la enseanza de la programacin de computadoras, he enfrentado toda clase de paradigmas e ideas. Por ejemplo, estn los lenguajes imperativos, de cuarta generacin que les dicen, en donde el programador debe decirle al sistema, mediante instrucciones muy precisas, qu queremos que haga la mquina. As, tenemos que ver esta serie de instrucciones como un algoritmo, una especie de receta de cocina que se debe ejecutar rigurosamente para obtener los resultados deseados.

Para ello hay lenguajes como Pascal o C, el segundo quizs el ms popular en el mundo, en donde la expresividad del lenguaje permite hacer muchsimas cosas. Los lenguajes modernos deben contar con estructuras de datos dinmicas, que permiten, en muchos casos, una manera mucho ms eficiente de hacer programas y de hacer que estos convivan unos con otros dentro del mismo sistema operativo. Por ello mismo, cuando llegan alumnos que me dicen que programan en Visual Basic, o cualquier variedad de Basic les indico que eso no califica como lenguaje, sino como un dialecto de la tierra primitiva. Y no exagero. Basic en cualquier modalidad adolece de las estructuras dinmicas asociadas a los lenguajes modernos. S, es cierto que Visual Basic ha incorporado algunas ideas de esta naturaleza, pero el problema es que no son estndar, sino que dependen de cada implementacin. Por ende, es probable que un programa escrito en Visual Basic sea prcticamente imposible de portar a otro Basic en otra mquina, para hablar de alguna de las deficiencias. Igualmente, la incorporacin de apuntadores (o punteros, como suelen decirles en los libros espaoles), es bastante primitiva y de difcil uso. An as, la popularidad del Basic es evidente porque permite generar prototipos rpidamente, aunque no se utilicen las mejores capacidades expresivas de otros lenguajes.

Otros lenguajes han sido desarrollados para hacer aplicaciones para la Internet, para pginas web y ah hay cientos de lenguajes de todo gnero. Tenemos Java, creado por Sun Microsystems, que permite programar prcticamente en cualquier plataforma pues Mac, PC, Linux, o incluso sistemas en computadoras de alto desempeo. Para ello Sun escribi para cada plataforma un intrprete de java, que es una mquina virtual. El intrprete est escrito para una implementacin nica en cada sistema operativo y por ende los programas en Java son portables de una mquina a otra. Adems, la cantidad de bibliotecas de funciones para todo gnero de aplicaciones es extraordinaria. Se cuentan por miles y hay para todas las necesidades. Java tiene sintaxis mezclada de C y Pascal, por lo que la curva de aprendizaje es menor. Adems, funciona en un sandbox, una especie de caja cerrada en donde la aplicacin corre, impidiendo que se puedan crear virus malignos. Es quizs una de las mejores herramientas para programar en la web.

Hay otros lenguajes, como PHP, que es un sistema para generar pginas dinmicas, es decir, pginas que cambian de acuerdo a las necesidades y peticiones de los usuarios. Por ejemplo, Amazon, la tienda virtual de libros, tiene un gran sistema de bases de datos y cada usuario ve cosas diferentes de acuerdo a las peticiones y bsquedas que hacen al sistema. PHP se encarga de presentar los resultados personalizados para cada usuario. Y aunque este sistema es muy robusto y adems, se lleva muy bien con MySQL, un manejador de bases de datos escrito para la web, tiene el inconveniente de que es muy poco estricto con los tipos de datos. As, una variable entera puede recibir un dato de punto flotante o incluso como cadena de caracteres. Eso va contra la disciplina en programacin pues da pie a muchsimos errores porque las variables intercambian su propiedad inicial de ser reales, enteras, de caracteres o de cadenas de caracteres. Es difcil debugear, es decir, depurar los programas en PHP por este simple hecho de que las variables cambian de tipo y van contra la disciplina en programacin. Y aunque es un lenguaje con muchas aplicaciones interesantes, PHP no es un buen candidato para ensear a nadie a programar.

Ms de uno dir que exagero, pero lo dudo. Los lenguajes de programacin se parecen a los lenguajes de los seres humanos, los cuales nos llevan aos para ms o menos hablarlos con propiedad y soltura. Para ello seguimos reglas que no nos podemos brincar fcilmente pues la comunicacin se hace entonces difcil. Imaginen los dobles sentidos para alguien que est aprendiendo a comunicarse. Seguramente lo confundirn estas sutilezas semnticas y en lugar de ayudarlo a comprender las palabras y sus significados, lo confunden ms. Eso creo que pasa en mayor o menor grado con PHP, aunque de acuerdo a los amantes de este lenguaje, el asunto de las variables sin tipo (o sin ser estricto en los tipos), es una caracterstica asombrosa que cuando seamos expertos en dicho lenguaje sabremos apreciar. Ser cierto?EN LOS LENGUAJES DE PROGRAMACIN CON DISCIPLINA DE TIPOS, CADA TIPO REPRESENTA UNA COLECCIN DE VALORES O DATOS SIMILARES. EL CONOCER LOS TIPOS DE LAS FUNCIONES AYUDA A DOCUMENTAR LOS PROGRAMAS Y EVITAR ERRORES EN TIEMPO DE EJECUCIN.

DISCIPLINA: Es la coordinacin de actitudes con las cuales se instruye para desarrollar habilidades, o para seguir un determinado cdigo de conducta u "orden". Un ejemplo es la enseanza de una materia, ciencia o tcnica, especialmente la que se ensea en un centro (Docente asignatura).En los lenguajes de programacin con disciplina de tipos, cada tipo representa una coleccin de valores (datos) similares. Una funcin cuyo tipo sea A1 -> ... An -> espera n parmetros con tipos A1, ... An y devuelve un resultado de tipo R. El conocer los tipos de las funciones ayuda a documentar los programas y a evitar errores en tiempo de ejecucin.

Disciplina esttica de tipos: Los programas bien tipados se pueden reconocer en tiempo de compilacin, un programa bien tipado se puede utilizar sin efectuar comprobaciones de tipo en tiempo de ejecucin. Estando garantizado que no se producirn errores de tipo durante el cmputo.