2.1 Visión del problema.
Proporciona modelos de diseño que permitan caracterizar el desarrollo de aplicaciones utilizando un lenguaje de programación se necesita un lenguaje de modelado que sea capaz de capturar la semántica del modelo al que se ajusta el lenguaje de programación.
El modelado de diseño proporcionado por el lenguaje de modelado debe ser capas de capturar la semántica del programa que implementa la especificación de requisitos.
En los últimos años, una de las artes mas predominantes en el mundo de la programación ha sido el diseño de lenguaje de programación. El numero de lenguajes de programación propuesta y diseñados son extremadamente grandes. Aun el numero de de lenguajes para el que un compilador ha aplicado es inmenso. Sammet (1976) indica 167 en su lista 1974–1975. Aun que los primeros lenguajes de programación primitivos nacieran cerca 25 años atrás, hasta que reciente
Los primeros lenguajes fueron los pioneros, explorando un nuevo campo. No es de sorprenderse que carecieran de un buen diseño. No se debería criticar a los diseñadores o FORTRAN; puesto que suficientes problemas tenían con diseñar y aplicar uno de los primeros lenguajes de alto nivel Si hay cualquier crítica de ser concedida con respecto a FORTRAN, Nadie razonablemente los podría esperar que a la crítica sean concedidos con respecto a 25 años más tarde, sus objetivos deben ser los usuarios que se han adherido tan tenazmente a ciertos diseñadores caídos en desuso del lenguaje que tienen tan perpetuaron con entusiasmo los desperfectos de FORTRAN. Se debe notar que nuestras referencias a FORTRAN en el párrafo anterior y a través de este capítulo se refiere a FORTRAN IV antes que FORTRAN 77.
Después que el desarrollo inicial del lenguaje de alto nivel y la implementación de los primeros pocos compiladores, allí resultó un período bastante largo en el que las tentativas conscientes se hicieron para diseñar nuevos lenguajes sin los desperfectos de los viejos. La mayor parte de estas tentativas eran los fracasos, no tanto de una falta de ideas en cómo diseñar mejores lenguajes como de un superávit de ideas. Una buena ampliación de este proceso es la noción que “si podría significar algo, debería” (Radin y Rogoway, 1965), que llevó a PL/YO. Más recientemente, la experiencia de errores pasados había llevado al conocimiento verdadero acerca de cómo construir mejores lenguajes de programación. Las ideas y los principios básicos se establecen suficientemente bien para indicar las pautas explícitas para el diseño del lenguaje. Esas áreas que aun no han sido comprendidas se encuentran bajo investigación.
Esta discusión procurará por consiguiente acentuar un sistema. El enfoque ordenado al diseño del lenguaje, se debe recordar, sin embargo, hacer la justificación apropiada a muchos temas que a menudo son necesarios para discutir detalles así como generalidades. El campo del diseño del lenguaje no es de ninguna manera completamente desarrollada, y muchas áreas no han sido bien unificadas. También, muchas áreas interrelacionan y son difícil de discutirlos separadamente.
Por la necesidad, esta discusión sin embargo, restringe su alcance. Las descripciones elaboradas de las características posibles del lenguaje se limitarán se asume que el diseñador potencial del lenguaje tiene las bases suficientes en lenguajes de programación para estar enterado de las ideas prinsipales. Las características específicas se discutirán para especificar razones , pero ninguna tentativa se hará para dar un catálogo general. Hay ya varios catálogos , como: (Elson, 1973; Pratt, 1975; Nlcholls, 1975). Una proposición básica de este capítulo entero es que un buen lenguaje no es apenas una colección casual de características de un total unificado. Se asumirá que los lenguajes, bajo la discusión son” de alto nivel” los idiomas. La discusión será restringida también en gran parte a idiomas procesales para escribir software (“software” se utiliza aquí en sus la mayoría de los sentidos generales para significar “los programas para ser utilizados por otra persona”). Mucho de lo que se dice será aplicable a otras clases de lenguajes.
El diseñar completamente un lenguaje. Si es que es el enfoque se toma, como sea, se debe tomar con cuidado para no hacer una extensión tan grande y compleja como se llega a ser, el hecho, de un nuevo lenguaje. En tales casos, la necesidad de retener algunas interfaces con un viejo lenguaje probablemente cederá gravemente el diseño de la extensión. También, si uno extiende un lenguaje existente, es necesario escoger cuidadosamente un lenguaje base para que el trabajo de la extensión se aminorare y la extensión elegantemente quede dentro del lenguaje. El objetivo debe ser el de producir un lenguaje el cual se más grande aun que igualmente bien construido.
¿Sería posible el modificar un lenguaje existente, utilizando posiblemente un macroprocessor o algo similar? Aun que con facilidad un macro contrario de menor parámetro (sustituyendo simplemente un texto especificado para cada ocurrencia de una identificación definida) podría producir modificaciones mayores en la sintaxis de un lenguaje, si se utilizara diestramente (por ejemplo, RATFOR definido por Kernighan y Plauger, 19746) sin embargo, el poder de este enfoque para una tarea más compleja, tal como la introducción de nuevas estructuras de datos, se limitan.
Algunas consideraciones serias deben ser dadas a estas técnicas como alternativas para un nuevo lenguaje, con el simple motivo de aminorar el trabajo y el tiempo implicado. Quizás no haya ningún otro problema relacionado con la computadora que observe tan tentadoramente fácil y sea sumamente terrible un buen trabajo de diseño de lenguaje. Prescinda de la noción que es posible agitar un diseño el fin de semana y el comenzar aplicando un traductor para el lunes. Un mes luego habrá de asentarse todavía los puntos secundarios del diseño del idioma y la implementación no habrá obtenido casi en ningún lugar. Asumiendo la decisión que se ha hecho de que ninguno de los enfoques anteriores seria suficiente, el próximo punto interesante es:
¿Cuál es el propósito de un lenguaje?
Un lenguaje es diseñado a menudo para su aplicación en un área específica. La mayor atención es dada a restringir el área de la aplicación del lenguaje, el mejor lenguaje será para problemas en esa área. De hecho no es conveniente el procurar diseñar un lenguaje de uso general conveniente para ningún problema. Todo intento ha sido desilusionando (notablemente PL/YO y ALGOL 68).
Actualmente, toda evidencia indica que nadie sabe cómo hacer un trabajo apropiado de diseñar un idioma que será “bueno para todo”.
Finalmente, la relación de un nuevo lenguaje hacia lenguajes existentes se debe considerar. Weinberg (1971) discute el fenómeno psicológico de “la inhibición,” que ocurre cuando un viejo lenguaje y un lenguaje nuevo no son semejantes pero idénticos. El usuario es susceptible a confundirse gravemente con la incertidumbre acerca de cuánto del viejo lenguaje conservara en el nuevo. Por ejemplo. Los programadores de FORTRAN que aprende que PL/YO formatear E/S tiene gran problema con Ey formatos DE TIPO F, que no son semejantes pero idéntico a la construcción del FORTRAN. En el resumen es preferible hacer el nuevo lenguaje claramente diferente que hacerlo semejante a algún lenguaje existente. Si los nuevos y los viejos lenguajes Los lenguajes de programación existentes pueden ser la fuente para mejores ideas para la programación de diseñadores de lenguaje. Los diseñadores deben ser muy cuidadosos inclusive acerca de ideas tales en su propio producto, sin embargo, porque los diseñadores del pasado han hecho grandes errores en el pasado.
Algunos principios despreciables se pueden pronunciar para distinguir buenas ideas dignas de la perpetuación y de malas ideas dignas sólo de la extinción.
¿Quizás el principal principio deberá preguntar “por qué se hizo esa manera?”
Una vez que usted obtiene una respuesta a esta pregunta, se pregunta “Es esa razón (todavía) válida” a menudo la respuesta a esta pregunta será no. Para el ejemplo FORTRAN las extrañas restricciones en subíndices de serie dirigiendo las características de su hardware y tuvo miedo que esto no se podría hacer si ninguna expresión permitiéndolo como un subíndice. Aunque esto se pueda considerar quizás razonable (u optar menos entendible) en la circunstancia que lo ciertamente no es hoy defendible, acerca de la reducción grave en valor práctico resultante.
Aunque vale la pena para recordar el que incluso si el juicio general en un lenguaje sea (un diseño malo” esto no significa que identificación no oculta las características que valen la pena en algún lugar mas profundamente. Por ejemplo, aunque APL se pueda criticar en muchas veces, bien puede valer la pena el copiar sus poderosos operadores.
Semejantemente, el hecho que una características está comúnmente disponible no puede implicar que sistema operativo una idea buena. Muchos idiomas han seguido ALGOL 60’s principal en permitir el tamaño de series para ser decidido en corre tiempo, una característica que introduce los problemas considerables de la implementación e interviene con verificar de error de compilatiempo.
Esta característica puede ser del valor sólo limitado en ciertas áreas de aplicaciones. El fenómeno de declaraciones predefinidas, heredado de FORTRAN, es otro ejemplo de palabrotas diseña. Esta característica en el detalle ilustra la grasa que algún arte actualmente popular de características de hecho totalmente perjudicial programar la calidad. Semejantemente, el hecho de que una de las características están comúnmente disponibles no se puede implicar que sea una buena idea su sistema operativo. Muchos lenguajes han seguido ALGOL 60’s principalmente el permitir el tamaño de series para ser decididazas con mayor rapidez, característica que presenta considerablemente la implementación de problemas e interfiere con el tiempo de compilación del cheque de errores. Esta característica puede ser del valor sólo limitado en ciertas áreas de aplicación. El fenómeno de preferido declaraciones, heredado de FORTRAN, es otro ejemplo de un mal diseño de programación.
Esta característica en particular cláusula; entonces probablemente sería irrazonable requerir ELSE en todo IF. La noción relativamente reciente de experimentación con cambios de diseño en condiciones controladas ofrece básicamente los mismos tipos de conclusiones indudablemente la investigación seguirá en las áreas de medir el empleo de los lenguajes de programación y experimentar en el diseño de los lenguaje de programación.
Competencias Digitales (Tic’s Basicas) a practicar con este TEMA:
- Usar (click en )www.Google.com para buscar y localizar UN material academico apropiado y que se pueda recomendar para el tema, ver VIDEO BUSQUEDAS abajo en esta pagina.
- En el post ( o tema ) apropiado en el Libro de Blogger, pegar el material localizado y que se recomienda para este tema, ver VIDEO BLOGGER abajo en esta pagina.
pd: Recordar incluir la fuente del tema usando el formato de citacion apropiado, ver VIDEO WIKIPEDIA abajo en esta pagina.
- En el editor de Blogger usar colores para destacar los parrafos mas importantes y usar subrayados para las citas mas relevantes.
- En el post ( o tema ) apropiado en el libro en Blogger, para incluir ecuaciones o notacion matematica se debera usar el icono del editor de Blogger IMAGE y construir esta notacion matematica con imagenes Latex, ver VIDEO LATEX ABAJO.
- Construir al final y despues de la fuente del material, un breve resumen ( no mas de 2–3 parrafos) explicando palabras propias el contenido del tema.
pd: Se pueden usar alguna de las citas que encontradas dentro del tema, solo recordar encerrarla entre comillas.
pd: Se pueden usar tambien cambios en fonts para darle mas visibilidad, consistencia y relevancia al resumen del tema.
- PUNTOS EXTRAS Si se usa una segunda fuente valiosa de informacion y recordar encadenar los dos materiales mediante uno o dos parrafos apropiados.
- Enviar a el maestro o compañeros un correo electronico que incluya la liga a el tema en blogger para revision, recomendacion, sugerencias y evaluacion, ver VIDEO LIGAS GMAIL abajo.
- Sacar una cuenta (click en)http://docs.google.com, usando el correo de Gmail y tratar de conseguir el mismo usuario que se construyo en Gmail y Blogger ver VIDEO GOOGLE DOCS abajo en esta pagina.
pd: Si ya se tiene una cuenta ignorar esta competencia digital.
pd: Google Docs es el equivalente a OFFICE pero con la caracteristica que todos sus componentes ( procesador de palabras, presentacion electronica y hoja de calculo) estan completamente en internet, es decir todos los archivos o material estaran en linea, seguros y siempre disponibles, ademas de que se pueden trabajarlos desde cualquier pc, ya sea la personal, la del laboratorio de la escuela o la de un lugar publico como la biblioteca o un cafe internet.
- Construir una Presentacion Electronica ( usando muy pocos slides) del tema en GOOGLE DOCS e incrustrarla en el tema de bloger ver VIDEO GOOGLE DOCS en esta pagina abajo.
pd: Recordar que una presentacion electronica, es solamente un resumen muy condensado del tema ( o mapa o guia mental ), que ayuda a recordar los elementos y conceptos mas basicos del tema, cuando se estan exponiendo frente a un grupo.
pd: No olvidar incluir un primer slide con el titulo de la presentacion electronica, un segundo slide con un indice de la presentacion electronica y un ultimo slide con dos o tres parrafos de conclusiones y bibliografia.
- Buscar en Google Imagenes o www.Flickr.com o www.PhotoBucket.com una galeria de fotos o de imagenes apropiadas al tema actual,
- Para los casos de Photobucket y Flicker, ambos sitios proporcionan ligas a sus imagenes y tambien objetos (los recuerdan??), que se pueden incluir en el tema del libro apropiado en Blogger.
pd: para estos sitios deberan obtener una cuenta usando el correo de gmail y de preferencia obtener el mismo usario que se ha venido manejando a lo largo del curso.
pd: Tratar de usar resoluciones y tamaños de imagenes chicos o medianos, recordar que todo este material termina en el post del tema en Blogger y esa pagina no tiene mucho espacio para desplegar fotos o imagenes.
pd: El formato apropiado para fotos o imagenes es JPG, tratar de no usar otros formatos.
pd: Se puede construir y conseguir esta coleccion o galeria de imagenes con:
1) Usando Google Imagenes, recordar conseguir solo imagenes que tengan permiso de publicacion abierto, no usar imagenes o fotos que tengan derechos reservados.
pd: Estas fotos almacenarlas en un folder en el desktop o escritorio de su computadora y subirlas a el post en blogger usando el icono IMAGE del editor de Blogger.
2) Flickr y Photo Bucket tambien tienen una gran cantidad de imagenes que se pueden usar o mejor dicho enlazar a el tema o post en Blogger.
3) Tambien se puede usar la camaras digitales o las camaras de sus telefonos celulares.
4) Tambien se puede usar el programa o aplicacion llamado Srip32.exe( solo buscar srip32 en google) bajarlo e instalarlo, este programa permite capturar una pantalla de la pc, es decir si se encuentra un sitio con imagenes o incluso texto apropiado o relevante al tema, capturar la pantalla con srip32 y ya se tendra la imagen, ver VIDEO Srip32 abajo.
- Incluir al menos una imagen de cada uno de los dos sitios (flickr y Photobucket) en el tema o post que se esta construyendo en Blogger.
- PUNTOS EXTRAS Si se incluyen una galeria completa de imagenes apropiadas desde cualquiera de estos sitios de FLICKR o Photobucket.
- Sacar una cuenta (click en)www.DivShare.com, usando el correo de Gmail y tratar de conseguir el mismo usuario que se consiguio en Gmail y Blogger y Flickr ver VIDEO DIVSHARE abajo en esta pagina.
pd: Si ya se tiene una cuenta ignorar esta competencia digital.
pd: Usar Divshare para almacenar material en audio (MP3) apropiado a el tema ( no usarlo para almacenar material comercial o les suspenden la cuenta)
pd: El material en Audio, con formato MP3 se debera producir usando un microfono en la pc y programas de aplicacion apropiados, llamados editores de audio, un ejemplo de ellos es el SOUND RECORDER que ya viene en Windows, pero se recomienda usar mejor AUDACITY ( solo buscar en google AUDACITY) bajarlo e instalarlo, ver VIDEO AUDACITY abajo.
- Crear al menos dos archivos de audio mp3:
1) El primero de ellos sera la lectura completa de este tema en voz apropiada. ( o aprender a editar con audacity la voz)
2) El segundo de ellos sera un resumen del tema. ( buena voz o editarla con audacity)
3) Ambos archivos subirlos a Div Share (recordor que tienen que ser MP3) y el reproductor que proporciona gratis Div Share, ver VIDEO DIVSHARE abajo e insertarlo en el lugar apropiado del tema que se esta construyendo en Blogger.
4) Ejemplo del reproductor incrustado en una pagina:
- Sacar una cuenta (click en)www.YouTube.com, usando el correo de Gmail y tratar de conseguir el mismo usuario que se consiguio en Gmail y Blogger y Flickr.
pd: Si ya se tiene una cuenta ignorar esta competencia digital.
- Para producir video se pueden usar tres fuentes:
1) Localizar Videos apropiados en Youtube.
2) Usar nuestras camaras digitales o nuestros telefonos celulares para producir video.
3) Producir un video de la propia pantalla de la computadora ( muy similar a lo que se hizo con Srip32) pero usando un programa especializado en video, tal como CAMSTUDIO (click en www.CamStudio.org) bajar e instalar ( no olvidar bajar e instalar el CODEC que esta abajo en el mismo sitio.
3.1) para Usar Camstudio solo recordar que es muy similar a Srip32 Solo que el resultado final es un archivo de video AVI.
- Producir un video de resumen del tema (usar camstudio con el fondo de la pagina con el tema e irlo comentando en voz apropiada)
- Producir un video en vivo con la exposicion del tema ( pueden usar la presentacion electronica de fondo o cualquier otro material, pizarron, filminas, rotafolios, etc.)
- Subir los videos a su cuenta en Youtube e incluirlos o ligarlos en la pagina en Blogger, tambien los pueden subir directamente a BLOGGER ver VIDEO BLOGGER VIDEO abajo.
Saludos y suerte prof Lauro Soto, Ensenada, BC, Mexico.