• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
A L G U N O S  C O M P I L A D O R E S
 

A L G U N O S C O M P I L A D O R E S

on

  • 4,862 views

 

Statistics

Views

Total Views
4,862
Views on SlideShare
4,862
Embed Views
0

Actions

Likes
0
Downloads
38
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    A L G U N O S  C O M P I L A D O R E S A L G U N O S C O M P I L A D O R E S Document Transcript

    • UNIVERSIDAD AUTÓNOMA DE TAMAULIPAS FACULTAD DE INGENIERÍA “ARTURO NARRO SILLER” INGENIERÍA EN SISTEMAS COMPUTACIONALES NOMBRE DE LA ASIGNATURA COMPILADORES INVESTIGACIÓN UNIDAD 5 ALGUNOS COMPILADORES TITULAR DE LA ASIGNATURA M.S.I. ARMANDO BECERRA DEL ANGEL NOMBRE DEL ALUMNO NAHUM VERA HERNANDEZ 17 de noviembre de 2009
    • INDICE UNIDAD 5. ALGUNOS COMPILADORES 5.1.- COMPILADOR PARA PASCAL 3 • Características únicas • Implementaciones 5.2.- COMPILADORES PARA C 6 • Características • Elementos y terminología en C 5.3.- LOS COMPILADORES DE FORTRAN 9 • Principales características Tipos de datos soportados: • Control de secuencia • Subprogramas • Abstracción y encapsulación. Evaluación del lenguaje • Ventajas e inconvenientes de su sintaxis 5.4.- COMPILADOR OPTIMIZADOR DE MODULA-2 14 • Descripción • Dialectos • Elementos de lengua Palabras reservadas • Idiomas relacionadas • MODULA-GM • Recopiladores continuados 5.5.- COMPILADORES PARA BASIC • Los ocho principios que rigeron el diseño de BASIC 17 • Madurez • El Lenguaje Sintaxis • Procedimientos y Control de Flujo • Tipos de Datos • Disponibilidad y variantes del lenguaje BIBLIOGRFIA 2
    • UNIDAD 5. ALGUNOS COMPILADORES 5.1.- COMPILADOR PARA PASCAL Pascal fue creado inicialmente por Niklaus Wirth como un lenguaje para la enseñanza de la programación al final de los años 60. Es un descendiente de Algol y a su vez influyó mucho en otros lenguajes posteriores, como Ada. Destaca por la claridad del código y por promover «buenos hábitos» de programación. Pascal alcanzó una gran popularidad cuando la empresa Borland lanzó Turbo Pascal, un compilador para IBM-PC rápido y barato, que además introducía mejoras importantes al lenguaje. Su sucesor, también de gran éxito, es Delphi, una herramienta de programación visual basada en Object Pascal, una versión de Pascal con objetos. • Alice Pascal es un viejo (1985) entorno de programación en Pascal con sintaxis dirigida para MS-DOS y Atari ST. También está disponible el código fuente. • Autorun Pascal Builder es un entorno para Windows para crear aplicaciones RAD (presentaciones, tutoriales, álbumes multimedia, etc.) con un lenguaje de Script tipo Pascal integrado. • DPas es un compilador gratuito para MS-DOS de 32 bits. • Free Pascal es un compilador profesional de 32 y 64 bits compatible con Turbo Pascal 7 y con la mayoría de versiones de Delphi. Hay versiones para muchos sistemas, incluyendo Linux, Mac OS y Win32. Lazarus es un clon de Delphi basado en Free Pascal. Dev-Pascal es un entorno para Windows que usa Free Pascal o GNU Pascal. • GNU Pascal es un compilador de 32/64 bits que funciona en todos los sistemas operativos soportados por GNU C, incluyendo Linux, FreBSD, DOS (con DJGPP o EMX), Windows (con Cygwin o mingw32) y OS/2 (con EMX). Soporta Pascal estándar, Pascal extendido, Turbo Pascal 7.0 y partes de Delphi, Mac Pascal y Pascal-SC. • Kylix Open Edition es un entorno de desarrollo visual para Linux de Borland compatible con Delphi. Para hacer la descarga (90,7 Mb) hay que registrarse. • Nemesis Pascal es un intérprete de Pascal escrito Delphi y Kylix y que funciona en Windows y Linux. • Pascal Pro produce código ensamblador para DOS32. Requiere TASM/MASM o NASM así como TLink32 y WDOSX u otras herramientas para generar los ejecutables. Incluye casi todos los elementos de Pascal más algunas mejoras. • Pascal X es un entorno de programación en Pascal para crear aplicaciones de consola de Windows. Incluye herramientas de ayuda para programadores noveles. Pueden usarse las palabras clave estándar en inglés o traducidas al portugués. • Think Pascal es un compilador para Macintosh, desarrollado por Think Technologies (con el nombre de Lightspeed Pascal), empresa posteriormente absorbida por Symantec. En 1997 dejó de distribuirse pero ahora se puede descargar gratuitamente. • Turbo Pascal 5.5 es un viejo (1989) compilador para MS-DOS de Borland, ahora distribuido gratuitamente. • Vector Pascal es una implementación de Pascal en Java pensada para aprovechar los juegos de instrucciones SIMD (Single Instruction-stream Multiple Data-stream) de los 3
    • modernos microprocesadores, como los de MMX y AMD 3D Now!. Incluye características propias de APL y J y extensiones de Turbo Pascal y Pascal 90. Incluye también un entorno de desarrollo. • Virtual Pascal es un compilador de 32 bits completamente compatible con Turbo Pascal 7 y en gran parte con Delphi 2. Funciona en Windows y OS/2. Ya no está en desarrollo. Características únicas A diferencia de lenguajes de programación descendientes de C, Pascal utiliza el símbolo:= para la asignación en vez de =. Si bien el segundo es más conciso, la práctica ha demostrado que muchos usuarios utilizan el símbolo de igualdad para comparar valores en lugar del comparador de C que es el símbolo ==. Esta sintaxis conduce a muchos errores o bugs difíciles de rastrear en código C. Dado que Pascal no permite asignaciones dentro de expresiones y utiliza sintaxis distinta para asignaciones y comparaciones, no sufre estos errores. Además sus programas tienen definidas dos partes: declarativa y ejecutiva. En la primera debe aparecer todo lo que se usará en la segunda, de lo contrario se detecta como desconocido y evita ciertas incomprensiones como veremos más adelante. En la parte declarativa se enuncian Unit existentes, procedimientos, funciones, variables, constantes y nuevos tipos de datos estructurados. Otra diferencia importante es que en Pascal, el tipo de una variable se fija en su definición; la asignación a variables de valores de tipo incompatible no están autorizadas (En C, en cambio, el compilador hace el mejor esfuerzo para dar una interpretación a casi todo tipo de asignaciones). Esto previene errores comunes donde variables son usadas incorrectamente porque el tipo es desconocido; y también evita la necesidad de notación húngara, que vienen a ser prefijos que se añaden a los nombres de las variables y que indican su tipo. Implementaciones Las primeras versiones del compilador de Pascal, entre ellas la más distribuida fue UCSD Pascal, traducían el lenguaje en código para una máquina virtual llamada máquina-P. La gran ventaja de este enfoque es que para tener un compilador de Pascal en una nueva arquitectura de máquina solo hacía falta reimplementar la máquina-P. Como consecuencia de esto, solo una pequeña parte del interprete tenía que ser reescrita hacia muchas arquitecturas. En los años 1980, Anders Hejlsberg escribió el compilador Blue Label Pascal para la Nascom-2. Más tarde fue a trabajar para Borland y reescribió su compilador que se convirtió en Turbo Pascal para la IBM PC. Este nuevo compilador se vendió por $49, un precio orientado a la distribución masiva. El económico compilador de Borland tuvo una larga influencia en la comunidad de Pascal que comenzó a utilizar principalmente en el IBM PC. En busca de un 4
    • lenguaje estructurado muchos aficionados al PC reemplazaron el BASIC por este producto. Dado que Turbo Pascal, solo estaba disponible para una arquitectura, traducía directamente hacia el código máquina del Intel 8088, logrando construir programas que se ejecutaban mucho más rápidamente que los producidos en los esquemas interpretados. Durante los años 1990, estuvo disponible la tecnología para construir compiladores que pudieran producir código para diferentes arquitecturas de hardware. Esto permitió que los compiladores de Pascal tradujeran directamente al código de la arquitectura en que corrieran. Con Turbo Pascal versión 5.5, Borland, agregó programación orientada a objetos a Pascal. Sin embargo, Borland después decidió mejorar esa extensión del lenguaje introduciendo su producto Delphi, diseñado a partir de estándar Object Pascal propuesto por Apple como base. Borland también lo llamó Object Pascal en las primeras versiones, pero cambio el nombre a lenguaje de programación Delphi en sus últimas versiones Ejemplo de código usando la estructura lineal: program raiz(input, output); uses crt; (* Obtener la raíz cuadrada de un número real x cualquiera. *) var x, y: real; respuesta: string; begin writeln('** Calcular la raíz cuadrada de x **'); writeln('Entrar x (> 0): '); readln(x); y := sqrt(abs(x)); (* Raíz cuadrada del valor absoluto de x para evitar raíces imaginarias *) writeln; if (x<0) then (* Si x es negativo, el resultado se notifica como imaginario *) writeln('La raíz cuadrada de ', x, ' es el número imaginario ', y,'i'); else writeln('La raíz cuadrada de ', x, ' es ', y); writeln; writeln('** Fin **'); readln; (* Espera a que el usuario pulse enter para salir del programa *) end. 5
    • 5.2.- COMPILADORES PARA C C fue creado en los Bell Telephone Laboratories al principio de los 70, por Dennis M. Ritchie. Su nacimiento estuvo ligado al del sistema operativo Unix, que se desarrolló paralelamente. Sus características debían ser: eficiencia (o sea, rapidez en la ejecución de los programas), potencia (permite explotar a fondo las posibilidades de la máquina) y portabilidad (el mismo código puede compilarse en máquinas diferentes). Unix fue reescrito en C, lo cual supuso un gran éxito de este lenguaje, a partir del cual se convirtió en uno de los más extendidos. La historia del nacimiento de C, contada por Dennis M. Ritchie, puede leerse en http://cm.bell- labs.com/cm/cs/who/dmr/chist.html. A C se le ha criticado que los programas suelen ser poco legibles y propensos a errores. Por contra, casi nadie le discute su potencia y su gran implantación, que a menudo lo convierten en la elección inevitable para proyectos colectivos. A partir de 1979, Bjarne Stroustrup, de AT&T, empezó a trabajar en un descendiente de C con soporte para orientación a objetos y otras mejoras, que sería conocido como C++ (la primera versión, interna de AT&T, data de 1983). • ACC es un compilador de un subconjunto de C que genera código ensamblador en modo protegido para MS-DOS. El paquete también incluye el ensamblador A86. • Tanto el compilador como el depurador de la versión 5.5 de Borland C++Builder son distribuidos gratuitamente por Borland. • Ch es un superconjunto de C, interpretado y fácil de usar. Hay una versión estándar gratuita para todos los usos, y una profesional, sólo gratuita para uso académico. Está disponible para varios sistemas, incluyendo Windows, Linux y MacOS X. • Cilk es un lenguaje para programación paralela multihilo basado en ANSI C. Se distribuye sólo el código fuente y se ha instalado en varios sistemas POSIX incluyendo Linux y MacOS X (no les vayas a preguntar si se puede instalar en Windows NT, que parece que no les gusta). • CINT es un intérprete de C y C++ que cubre el 95% de ANSI C y el 85% de C++. Funciona en muchas plataformas, incluyendo Windows, MS-DOS, Linux y MacOS. Se distribuye el código fuente y un ejecutable para Windows. • Cyclone es un lenguaje basado en C diseñado para ser seguro. Funciona en Linux y Windows con Cygwin. Sólo se distribuye el código fuente. • Digital Mars distribuye en un solo paquete compiladores de C y C++ para DOS16, DOS32, Win16 y Win32. • eC es un subconjunto de C++, diseñado para servir como herramienta para aprender este lenguaje. Está especialmente pensado para que sea fácil la transición desde Pascal. Se distribuyen en un solo paquete compiladores e intérpretes para DOS y Windows (y muchos ejemplos). 6
    • • EiC es un C interpretado que puede usarse de forma interactiva. Hay versiones para varios sistemas Unix, Win32 y DOS con DJGPP. También se distribuye el código fuente. • GCC (GNU Compiler Collection) es un paquete GNU que incluye compiladores de C, C++ y otros lenguajes. Los compiladores de C (gcc, con minúsculas) y C++ (g++) van incluidos en todas las distribuciones de Linux, y sirven como lenguajes de programación para la mayor parte del trabajo desarrollado en GNU/Linux, incluyendo el kernel de Linux. Hay también adaptaciones para DOS (DJGPP) y Win32 (Cygwin y MinGW). Dev-C++ es un entorno de desarrollo que puede usarse con cualquier versión de GCC para Windows (incluye MinGW). • LadSoft (David Lindauer) distribuye cc386 (código fuente y ejecutable), un compilador de ANSI C para Windows y MSDOS con DPMI, y CC68K, un cross- compiler para Windows de código ejecutable de Motorola 68K (incluye también un simulador que puede ejecutar el resultado). • lcc, por Chris Fraser y David Hanson, es un compilador de ANSI C. Se distribuye el código fuente, así como archivos binarios para Windows. lcc está descrito en el libro A Retargetable C Compiler: Design and Implementation. • LCC-Win32 es un compilador de C ampliamente documentado, desarrollado por Jacob Navia a partir del documento A portable C compiler, de Dave Hanson y Chris Fraser (supongo que es una versión antigua del libro citado anteriormente). Es gratuito para uso no comercial. • Leonardo es un entorno integrado para Macintosh (con PowerPC) basado en ANSI C, incluyendo también el lenguaje de visualización ALPHA (que se inserta dentro del código fuente en comentarios especiales). Está indicado para el aprendizaje de C, la depuración de programas y la programación de «algoritmos animados». Permite la ejecución hacia atrás (!). Este proyecto ha sido abandonado en favor de Leonardo Computing Environment (a continuación). • Leonardo Computing Environment es el sucesor de Leonardo y tiene características similares. Está siendo desarrollado en Windows, Linux y MacOS. • Macintosh Programmer's Workshop es un conjunto de herramientas para programación de Macintosh. Incluye compiladores de C y C++ para micros 68k y Power PC para sistemas 7.x, 8.x y 9.x. • Open Watcom C/C++ es el sucesor de código abierto de una famosa versión comercial de C y C++. Se distribuyen gratuitamente (aunque se solicitan donaciones) el código fuente y paquetes instalables para Windows y OS/2. También se distribuye la versión 11.0c de Watcom. • Pacific C es un compilador gratuito para MS-DOS, distribuido anteriormente como shareware por HI-TECH. Incluye un entorno de desarrollo integrado. • Pelles C es un completo kit de desarrollo para Windows y Pocket PC. El compilador está basado en lcc. • Sphinx C-- es un lenguaje de medio a bajo nivel para ordenadores con microprocesadores 80x86, una especie de mezcla entre C y ensamblador. El autor original, Peter Cellik, abandonó en 1996 su desarrollo, pero otros programadores han continuado su trabajo. Parece que C-- es un lenguaje más general. • Small C es un pequeño compilador de C con códigos fuentes para distintas plataformas, entre ellas MS-DOS y CP/M. • Tiny C es un compilador para Linux muy pequeño y rápido. 7
    • • Turbo C es el viejo compilador C de Borland para MS-DOS. Borland distribuye ahora gratuitamente algunas versiones. Aquí se encuentra la 2.01. • El Visual C++ Toolkit 2003 de Microsoft incluye todas las herramientas necesarias para compilar y enlazar aplicaciones basadas en C++ para Windows y .NET Common Language Runtime. Son 32 Mb. Características La popularidad del lenguaje C se debe a sus características: • Compacto: sólo tiene 32 palabras reservadas. • Estructurado: se basa en el empleo de funciones, que son bloques de código independientes. • Portable: los programas ejecutables obtenidos funcionan en cualquier máquina (utilizando las librerías y funciones estándar). El código fuente tampoco dependerá del compilador o del sistema operativo utilizado. • Flexible: tiene pocas restricciones. • Lenguaje de tipo medio: dispone de potentes sentencias propias de los lenguajes de alto nivel y características de lenguajes de bajo nivel como el ensamblador (permite el control de la CPU a nivel de registros, e incluso a nivel de bits), con plena disponibilidad de la memoria y puertos conectados a la CPU. • Extensión: el C es un lenguaje muy extendido. Los compiladores son relativamente sencillos y reducidos, y cuando surge una nueva máquina o sistema operativo, es uno de los primeros programas que se diseñan. Elementos y terminología en C Esto es solo para introduciros un poco a los elementos que usaremos en nuestros programas, cada elemento se verá en profundidad en los siguientes capítulos. Funciones En C es la unidad básica de programación. Los programas se construyen a base de funciones que reciben unos valores de entrada y devuelven unos de salida. En nuestro primer programa hemos visto la función main, que es siempre la primera que toma el control del programa está en todos los programas. Variables Como muchos sabréis, las variables son espacios que guardan un valor que puede cambiar (variar) a lo largo del programa. Tienen un nombre (etiqueta o identificador) que identifica a la porción de memoria ocupada por la variable. Constantes Como podéis imaginar las constantes, a diferencia de las variables, guardan un valor que no se puede alterar a lo largo del programa. 8
    • Identificadores o etiquetas Los identificadores o etiquetas son los nombres que identifican a las variables, constantes y funciones. Deben respetar las siguientes condiciones: • Deben empezar con una letra o con la barra baja "_", y pueden construirse con letras, números y barras bajas. • IMPORTANTE: el C es sensible a las mayúsculas y minúsculas (denominado case sensitive), así que no sería lo mismo Variable que variable. • No se pueden usar palabras reservadas como identificadores. • Las funciones creadas por el programador pueden comenzar con mayúscula para diferenciarla de las funciones definidas en el compilador. • Las etiquetas o identificadores definidas en el compilador, también llamadas constantes simbolicas (como por ejemplo FILE), suelen escribirse en mayúscula. Sentencias Una sentencia es un conjunto de identificadores, símbolos, etc., escritos en una línea. En C las sentencias terminan con punto y coma ";". Las sentencias pueden ir en una línea cada una como es habitual, o varias en una línea, separadas por punto y coma. Operadores Son todos aquellos símbolos para realizar operaciones aritméticas o lógicas: +, *, /, etc. Bloques de sentencias Son conjuntos de sentencias agrupadas entre llaves "{}" que forman una unidad inseparable y se evalúan como una única sentencia más compleja. Comentarios Los comentarios sirven sólo para aclarar aspectos del código fuente y son ignorados por el compilador. Son de gran importancia, ya que si el código fuente debe ser modificado después de un tiempo, o si es pasado de un programador a otro, los comentarios pueden facilitarle mucho la tarea de entenderlo. Los comentarios van delimitados por las marcas "/*" y "*/", por ejemplo: /* Esto es un comentario */ Tabulación o identación Consiste en estructurar mediante tabulaciones el código del programa para facilitar su lectura. El criterio general de tabulación es tabular más las sentencias subordinadas a otras (se verá más adelante en los ejemplos). Directivas del preprocesador Son sentencias ubicadas al principio del programa y que indican al compilador 9
    • cómo debe actuar sobre el programa fuente. En el ejemplo de este capítulo hemos visto la directiva #include. Las directivas del preprocesador no finalizan con punto y coma. 5.3.- LOS COMPILADORES DE FORTRAN Fortran (Inglés: Formula Translating System) es un lenguaje características. Está fuertemente orientado al cálculo y por ende es uno de los de mayor eficiencia en la ejecución. Algunas otras versiones subsiguientes fueron: • FORTRAN IV • FORTRAN 80 • FORTRAN 77 • FORTRAN 90 de programación de alto nivel y procedural, desarrollado para propósitos generales por IBM en 1957 para el equipo IBM 704. [1] Fue el primero desarrollado con estas FORTRAN 95 Fortran ha sido ampliamente adoptado por la comunidad científica para escribir aplicaciones de cálculos intensivos. La inclusión en el lenguaje de la aritmética de números complejos amplió la gama de aplicaciones para las cuales el lenguaje se adapta especialmente; muchas técnicas de compilación de lenguajes se han implementado para mejorar la calidad del código generado por los compiladores de Fortran. Un sencillo ejemplo Principales características El lenguaje fue diseñado teniendo en cuenta que los programas serían escritos en tarjetas perforadas de 80 columnas. Así por ejemplo, las líneas debían ser numeradas y la única 10
    • alteración posible en el orden de ejecución era producida con la instrucción goto. Estas características han evolucionado de versión en versión. Las actuales contienen subprogramas, recursión y una variada gama de estructuras de control. Tipos de datos soportados: • Numéricos (enteros, reales, complejos y doble precisión). • Booleanos (logical) • Arreglos • Cadenas de caracteres • Archivos FORTRAN 90 ya es estructurado, y no requiere sentencias GOTO. Sólo admite dos ámbitos para las variables: local y global. Ejemplo más extenso: Variables y constantes • FORTRAN no es sensible a mayúsculas y minúsculas. Los nombre de variables tienen de 6 a 31 caracteres máximo y deben comenzar por una letra. Los blancos son significativos. • Declaración explicita de variables. • Enteras (I-N), el resto reales. (se modifica con IMPLICIT). 11
    • • Punteros: en los primeros FORTRAN no hay punteros y todas las variables se almacenan en memoria estática. En FORTRAN 90 se declaran INTEGER, POINTER::P. • Para memoria dinámica ALLOCATE y DEALLOCATE Tipos de datos • Arrays, pueden tener hasta 7 dimensiones y se guardan por colummnas.  REAL M(20),N(-5:5)  DIMENSION I(20,20) (tipo por nomenclatura implícita) • Cadenas de caracteres, el primer carácter es el 1, el operador // permite concatenar cadenas.  CHARACTER S*10, T*25 • Almacenamiento de datos. Se usa COMMON para datos compartidos y EQUIVALENCE cuando almacenamos una variable con dos posibles tipos en la misma posición de memoria (como union en C). Se usa DATA para inicializar datos estáticos.  DATA X/1.0/,Y/3.1416/,K/20/ • Tipos definidos por el usuario, con TYPE <nombre>... END TYPE <nombre> Control de secuencia EL conjunto de estructuras de control es limitado: • Expresiones, prioridad de operadores • Enunciados • Asignación, cuando se hace entre cadenas hay ajuste de tamaño con blancos o truncamiento. • Condicional. Permite IF ELSE IF... Para selección múltiple SELECT CASE CASE.....CASE DEFAULT.... END SELECT • Iteración. DO....END DO • Nulo, se usa solo para la etiqueta. CONTINUE. • Control de subprogramas. CALL invoca al subprograma y RETURN devuelve un valor al programa llamante. • Construcciones propensas a error: GOTO. Entrada y salida • Tipos de archivos:  Secuenciales  De acceso directo • Comandos: READ, WRITE, PRINT, OPEN , CLASE, INQUIRE (propiedades o estado del archivo) REWIND y ENDFILE (para ubicar el puntero del fichero). • Para el tratamiento de excepciones en las sentencias READ/WRITE se puede introducir la posición de la rutina de dicho tratamiento (ERR=90). Subprogramas • Hay tres tipos de subprogramas: 12
    •  Function, devuelven un solo valor de tipo numérico, lógico o cadena de caracteres.  Subroutine, devuelve valores a través de variables no locales COMMON.  Función de enunciado, permite calcular una sola expresión aritmética o lógica. • FN(X,Y)=SIN(X)**2-COS(Y)**2 • Gestión de almacenamiento.  Las variables son locales o globales (COMMON)  Recursividad: RECURSIVE FUNCTION FACTORIAL(X)  Parámetros de subprograma. Paso por referencia. Abstracción y encapsulación. Evaluación del lenguaje • La abstracción es posible mediante los subprogramas y el uso de variables COMMON, aunque su uso es propenso a errores. • FORTRAN sigue siendo utilizado en el ámbito científico y es muy eficiente realizando cálculos.  La estructura del programa suele ser dificil de entender.  En FORTRAN 90 se incluye la recursividad y la memoria dinámica.  Las etiquetas de las sentencias ya no son necesarias, ni el GOTO, pues se ha transformado en un lenguaje estructurado.  El aspecto de los programas sigue siendo de procesamiento por lotes Ventajas e inconvenientes de su sintaxis Lo que fue la primera tentativa de proyección de un lenguaje de programación de alto nivel, tiene una sintaxis considerada arcaica por muchos programadores que aprenden lenguajes más modernos. Es difícil escribir un bucle "for", y errores en la escritura de sólo un carácter pueden llevar a errores durante el tiempo de ejecución en vez de errores de compilación, en el caso de que no se usen las construcciones más frecuentes. Algunas de las versiones anteriores no poseían facilidades que son consideradas como útiles en las máquinas modernas, como la asignación dinámica de memoria. Se debe tener en cuenta que la sintaxis de Fortran fue afinada para el uso en trabajos numéricos y científicos. Muchas de sus deficiencias han sido abordadas en revisiones recientes del lenguaje. Por ejemplo, Fortran 95 posee comandos mucho más breves para efectuar operaciones matemáticas con matrices y dispone de tipos. Esto no sólo mejora mucho la lectura del programa sino que además aporta información útil al compilador. Por estas razones Fortran no es muy usado fuera de los campos de la informática y el análisis numérico, pero permanece como el lenguaje a escoger para desempeñar tareas de computación numérica de alto rendimiento. 13
    • 5.4.- COMPILADOR OPTIMIZADOR DE MODULA-2 Modula-2 es una computadora lenguaje de programación inventado cerca Niklaus Wirth en ETH alrededor 1978, como sucesor a Modula, una lengua intermedia de él. Modula-2 fue puesto en ejecución en el an o 80 para Lilith computadora, comercializada en 1982 por la compañía de lanzamiento DISER (Dato-Imagen- Sonido-Procesador-y el Emisor-Receptor-Sistema) como MC1 y MC2. DISER vendió 120 unidades por todo el mundo. La lengua Modula-2 se basa libremente sobre Lenguaje de programación del Mesa, de Xerox, ese Wirth vio durante su 1976 año sabbatical en Xerox PARC. Descripción Modula-2 es fines generales lengua procesal, suficientemente flexible hacer la programación de sistemas, pero con un uso mucho más amplio. Particularmente, fue diseñado para apoyar la abstracción separada de la compilación y de los datos de una manera directa. Mucho del sintaxis se basa en la lengua anterior y mejor- sabida de Wirth, PASCAL. Modula-2 fue diseñado para ser ampliamente similar al PASCAL, con algunos elementos quitados y la adición importante del módulo concepto, y ayuda directa de la lengua para multiprogramación. El Modula-2 módulo puede ser utilizado encapsulan un sistema de subprogramas y de estructuras de datos relacionados, y restringen su visibilidad de otras porciones del programa. El diseño del módulo puso la característica de la abstracción en ejecución de los datos de Modula-2 de una manera muy limpia. Los programas Modula-2 se componen de módulos, que se compone de dos porciones: a módulo de la definición, la porción del interfaz, que contiene solamente esas partes del subsistema que sean exportado (visible a otros módulos), y módulo de la puesta en práctica, que contiene el código de trabajo que es interno al módulo. La lengua tiene control terminante del alcance. Particularmente el alcance de un módulo se puede considerar como pared impenetrable: A excepción de identificadores estándares no hay objeto del mundo externo visible dentro de un módulo a menos que esté importado explícitamente; no hay objeto interno del módulo visible del exterior a menos que esté exportado explícitamente. Dialectos Hay dos dialectos importantes de Modula-2. El primer es PIM, nombrado después del libro “que programa en Modula-2” cerca Niklaus Wirth. Había tres ediciones importantes de PIM, las ediciones del segundo, el tercer (corregido) y el cuarto, cada las variantes leves que describían de la lengua. El segundo dialecto principal 14
    • es ISO, del esfuerzo de la estandardización por International Organization for Standardization. • PIM2 (1983) o Explícito requerida EXPORTACIÓN cláusula en módulos de la definición. • PIM3 (1985) o Quitó EXPORTACIÓN cláusula de los módulos de la definición por la observación que todo dentro de un módulo de la definición define el interfaz a ese módulo, por lo tanto EXPORTACIÓN la cláusula era redundante. • PIM4 o El comportamiento del MOD y REM especificaron a los operadores cuando sus operandos eran negativos. • ISO o La ISO Modula-2 resolvió la mayor parte de las ambigüedades en PIM Modula-2. Agregó los tipos de datos COMPLEJO y LONGCOMPLEX, excepciones, terminación del módulo (FINALMENTE cláusula) y una biblioteca completa de la entrada- salida del estándar. Hay diferencias y clarificaciones de menor importancia numerosas. Elementos de lengua Palabras reservadas PIM3 contuvo las 40 palabras reservadas siguientes: Y ELSIF LAZO REPITA EL ARSENAL EXTREMO MOD VUELVA COMIENZAN SALIDA MÓDULO FIJE CERCA EXPORTACIÓN NO ENTONCES CASO PARA DE A CONST DE O MECANOGRAFÍE LA DEFINICIÓN SI INDICADOR HASTA EL DIV EL PROCEDIMIENTO VAR DE LA PUESTA EN PRÁCTICA IMPORTACIÓN CALIFICADO MIENTRAS QUE EN EXPEDIENTE CON Idiomas relacionadas Aunque Modula-2 es la variante en gran medida el más conocida y más ampliamente utilizada, hay varias idiomas que se relacionan de un modo u otro: el la original, y absolutamente diferente, Modula (previsto para la puesta en práctica de sistemas), Modula-2+, Modula-2* (extensión paralela), ISO Modula-2 OO y extensiones genéricas, Modula-3 (por la DEC y Olivetti; agregando la colección, objetos, y generics de la basura), Oberon (diseño otros, más último, de Wirth), Oberon-2 (Oberon con extensiones de OO), Modula-2 objetivo (un híbrido de 15
    • Modula-2 y Palique) y un número de otros. Éstos no se deben mirar como “versiones mejores” o “reemplazos” para Modula-2; la mayoría son diversas idiomas con diversos propósitos, y con fuerzas y debilidades sus el propios. Modula-2 fue desarrollado como la lengua del sistema para Lilith sitio de trabajo, y formado el antepasado para Oberon lengua y proyecto del sitio de trabajo (Sistema Oberon) convertido en ETH Zurich. Muchos lenguajes de programación actuales han adoptado características de Modula-2. MODULA-GM Electrónica de Delco, entonces un subsidiario del GM Hughes Electrónica, desarrollada una versión de Modula-2 para los sistemas de control encajados que comienzan en 1985. Delco lo nombró Modula-GM. Era el primer idioma de alto nivel usado para substituir el código de la terminología de la informática para los sistemas encajados en las unidades de control de motor de Delco (los ECUs). Esto era significativo porque Delco producía sobre los 28.000 ECUs por día en 1988 para el GM; éste era entonces el productor más grande del mundo de los ECUs[1]. El primer uso experimental del Modula-GM en un regulador encajado estaba en los 1993 Gen-4 el ECU usados por CARRO (Automóvil del campeonato que compite con a equipos) y IRL (Indy que compite con a liga) equipos[2]. El primer uso de la producción del Modula-GM era su uso en carros del GM comenzando con los 1990 años modelo VCM (módulo de control del vehículo) usados para manejar GM Powertrain Vortec motores. El Modula-GM también fue utilizado en todos los ECUs para los GM Familia de 90° Buick V6 3800 la serie II utilizó en el año modelo 1997-2005 Avenida de parque de Buick. Los recopiladores Modula-GM y las herramientas de gerencia asociadas del software eran sourced por Delco de Intermetrics. Modula-2 fue seleccionado como la base para el idioma de alto nivel de Delco debido a sus numerosos fuerzas sobre otras opciones alternativas de la lengua en 1986. Después de Delco la electrónica fue hecha girar apagado del GM (con otras divisiones componentes) para formar Delphi en 1997, el sourcing global requirió que una lengua de alto nivel no propietaria del software esté utilizada. El ECU encajó el software ahora desarrollado en los compiladores C del anuncio del uso de Delphi. Recopiladores continuados • Prueba patrón Modula-2 para Amiga • Borland Turbo Modula-2 para CP/M (abandonware) • Borland Turbo Modula-2 para el MS-DOS (vendido a Jensen y a los socios, se convirtió TopSpeed Modula-2) • Logitech tenía una serie de los recopiladores Modula-2 • M2S para Amiga • Arroyo pedregoso Modula-2 16
    • • TDI Modula-2 para Amiga y Atari ST • Modula Corporation tenía una serie de los recopiladores Modula-2 para MS- DOS (M2M-PC), Apple II y Macintosh 5.5.- COMPILADORES PARA BASIC El lenguaje BASIC fue creado en 1964 por los norteamericanos John Kemeny y Thomas Kurtz, en el Dartmouth College. Su intención era diseñar un lenguaje adecuado para principiantes. No tenía, por tanto, pretensiones de gran potencia, pero era fácil de aprender y permitía abordar pronto pequeños proyectos. BASIC son las iniciales de Beginner's All-purpose Symbolic Instruction Code. El BASIC tuvo una gran expansión en los años 80, cuando se impuso como lenguaje estándar para los microordenadores domésticos de ocho bits. Se usó ampliamente en la enseñanza y también en la programación profesional. Sin embargo, era un lenguaje poco estructurado y recibió muchas críticas por promover malos hábitos de programación. Pero en lugar de desaparecer, fueron surgiendo versiones nuevas con características más avanzadas. Aún hoy, Visual Basic y su sucesor, Visual Basic .NET (aunque son variantes ya muy alejadas del original) son lenguajes de programación muy usados en entorno Windows. • ACE es un compilador de BASIC para ordenadores Amiga que produce código fuente ensamblador 68000. Se puede bajar de aminet. • Alvyn es un intérprete BASIC multiplataforma compatible con AMOS Professional. La página oficial indica un estado de desarrollo del 40%. Actualmente sólo se puede descargar una versión de desarrollo para Linux. • AMOS y STOS fueron exitosas versiones comerciales de BASIC para la creación de juegos en los ordenadores Amiga y Atari ST. Clickteam (uno de cuyos fundadores es el autor de AMOS y STOS) distribuye ahora libremente el código fuente en ensamblador 68000. También permite la distribución de los disquetes originales de AMOS en forma de ficheros, principalmente dirigidos a la emulación. • LithiumBasic es un lenguaje tipo Basic para Windows 95/98 ideal para novatos por su sencillez. Incluye un entorno integrado bastante completo. El sitio oficial desapareció pero se puede bajar de la página de THE BASICs PAGE anteriormente enlazada. • MBasic (de Franck Charlet) es un intérprete para la consola de Windows hecho a partir de MINI-BASIC (de Sylvain Bizoirre), el cual, a su vez, es una adaptación de Palo Alto 8080 TINY BASIC (de Li-Chen Wang). Se distribuye también el código fuente en ensamblador. • MediaBASIC es un entorno de programación para Windows similar a Visual Basic. Su desarrollo se detuvo en estado alfa y la página oficial hace tiempo que no funciona. • MINI-BASIC, de Sylvain Bizoirre, es un intérprete muy simple para la consola de Windows basado en Palo Alto 8080 TINY BASIC (de Li-Chen Wang). Se suministra el ejecutable y el código en ensamblador para MASM32. • Mole Basic (de Remco Schellekens) es un pequeño intérprete Basic basado en flex y yacc para Linux y otros sistemas. Se distribuye también el código fuente. 17
    • • Mono es una plataforma de desarrollo libre, patrocinada por Novell, compatible con .NET de Microsoft. Incluye soporte para bastantes lenguajes de programación, Visual Basic .NET entre ellos. Funciona en Windows, Mac OS X, Solaris y distintas versiones de Linux. • Profan es un lenguaje para Windows con sintaxis tipo Basic, pero con características de otros lenguajes, como Pascal y dBase III. Creo que la versión actual es de pago y las antiguas son gratis. Aunque las versiones originales están en alemán, hay una versión (muy antigua) completamente traducida al inglés y parches para traducir otras posteriores. • uBASIC, de Adam Dunkels, es un intérprete de BASIC muy simple y pequeño creado para servir como lenguaje de script sencillo para aplicaciones con limitaciones importantes de memoria. Se distribuye el código fuente en C. • Visual Studio Express es una versión limitada y gratuita del más importante entorno de programación de Microsoft, para la plataforma .NET. Incluye soporte para bastantes lenguajes de programación, Visual Basic .NET entre ellos. Para Windows. • Visualwindows es un entorno de programación para Windows parecido a Visual Basic. Debido a la imposibilidad de seguir manteniéndolo y dando soporte a los usuarios, el autor decidió distribuirlo gratuitamente. La página oficial dejó de funcionar pero se puede bajar una copia (y leer la reseña) del sitio THE BASICs PAGE. • VPBasicFREE (de Ricardo Ponce) es un intérprete y compilador para Windows dirigido a principiantes. Incluye entorno integrado y documentación en inglés y español. Existe una versión superior de pago. • wxBasic (de David Cuny) es un intérprete de Basic estructurado para Linux (usando controles GTK) y Windows (usando controles nativos), escrito en C y la biblioteca wxWindows. Su sintaxis es parecida a QBasic. Se distribuyen ejecutables y código fuente. • X11-Basic es un intérprete Basic con sintaxis similar al GFA-Basic de Atari-ST y gráficos para el sistema X Window. Funciona en varios tipos de Unix con X Window (incluyendo Linux, MacOS X y Windows con Cygwin). También hay una versión Windows pero está incompleta (no funcionan los gráficos). • XBasic es un moderno Basic estructurado con un completo entorno de programación. Hay versiones para Windows y Linux y está disponible el código fuente. • XBLite, de David Szafranski, es un compilador para Windows basado en XBasic. Incluye bastantes mejoras, como más velocidad y controles nativos. Se distribuye con licencias GPL y LGPL. • XST 2 es un lenguaje para Windows orientado a videojuegos que incluye un entorno de desarrollo, un intérprete rápido (también produce ejecutables) y un traductor a código C (compilable con Visual C 6). • Yabasic (de Marc-Oliver Ihm) es un intérprete tradicional de BASIC con algunas mejoras, como subrutinas y bibliotecas. También contiene algunas facilidades gráficas simples. Funciona en Unix y Windows. Hay también una versión para la PlayStation 2 que viene en un disco con la videoconsola. Entre otros… Los ocho principios que rigeron el diseño de BASIC fueron: 1. Ser fácil de usar para los principiantes. 18
    • 2. Ser un lenguaje de propósito general (no orientado). 3. Permitir a los expertos añadir características avanzadas, conservando simple el lenguaje para los principiantes. 4. Ser interactivo. 5. Proveer mensajes de error claros y amigables. 6. Responder rápido en los programas pequeños. 7. No requerir un conocimiento del hardware de la computadora. 8. Proteger al usuario del sistema operativo. El lenguaje fue en parte basado en FORTRAN II y parte en Algol 60, con adiciones para hacerlo apropiado en sistemas de tiempo compartido y con elementos que facilitaran la operación aritmética de matrices. BASIC fue implementado por primera vez para la mainframe GE-265, máquina que soportaba múltiples terminales. Contrario a la creencia popular, BASIC inicialmente no era un lenguaje interpretado sino compilado. Casi inmediatamente después de su lanzamiento, los profesionales de computación comenzaron a alegar que BASIC era muy lento y simple. Tal argumento, hasta no hace mucho, fue un tema recurrente en la industria de las computadoras. Aun así, BASIC se extendió hacia muchas máquinas y plataformas, y se popularizó moderadamente en las minicomputadoras como las de la serie DEC PDP y la Data General Nova. En estos casos, el lenguaje era implementado como intérprete, en vez de un compilador, o alternativamente, en ambas formas de funcionamiento. Madurez En este período se crearon versiones de BASIC nuevas y más poderosas. Microsoft vendió varias versiones de BASIC para MS-DOS/PC-DOS, incluyendo BASICA, GW-BASIC (una versión compatible con BASICA que no necesitaba la ROM de IBM), y Quick BASIC. El fabricante de Turbo Pascal, Borland, publicó Turbo BASIC 1.0 en 1985 (versiones sucesoras aún se venden bajo el nombre de PowerBASIC por otra compañía). Aparecieron varias extensiones de BASIC para computadores caseros, típicamente con capacidad para gráficos, sonido, y comandos DOS, así como facilidades para Programación estructurada. Hubo lenguajes que usaron la sintaxis de BASIC como base para otros sistemas totalmente diferentes, por ejemplo GRASS. Sin embargo a finales de la década de 1980 las computadoras nuevas eran mucho más complejas, e incluían características (como la Interfaz gráfica de usuario) que hacían a BASIC menos apropiado para programarlas. Al mismo tiempo las computadoras progresaban de ser interés para aficionados a herramientas usadas principalmente para ejecutar aplicaciones escritas por otros, y la programación en sí se fue haciendo menos importante para una creciente mayoría de usuarios. 19
    • BASIC comenzó a desvanecerse, aunque numerosas versiones aún estaban disponibles. La suerte de BASIC dio un giro nuevamente con la introducción de Visual Basic de Microsoft. Si bien este lenguaje utiliza prácticamente todas las palabras clave (sentencias, estructuras de control y funciones intrínsecas) y forma de manejo y tipo de datos que versiones BASIC anteriores (DOS); VB es abismalmente más potente y evolucionado; y se ha convertido en uno de los lenguajes más utilizados en la plataforma Windows; se estima que entre el 70 y el 80% del total de aplicaciones comerciales son programadas en VB. A partir de 2002, y con la introducción de la plataforma .NET Framework de Microsoft, VB comienza a utilizar el paradigma "orientado a objetos", aumentando la potencia del lenguaje y haciéndolo multiplataforma. Visual Basic for Applications (VBA) fue añadido a Microsoft Excel 5.0 en 1993 y al resto de la línea de productos de Microsoft Office en 1997. Windows 98 incluyó un intérprete de VBScript. La versión más reciente de Visual Basic es llamada VB.NET. Por otra parte, también existe la variante OpenOffice.org Basic menos poderosa pero similar a VBA de Microsoft. El Lenguaje Sintaxis La sintaxis mínima de BASIC sólo necesita los comandos LET, INPUT, PRINT, IF y GOTO. Un intérprete que ejecuta programas con esta sintaxis mínima no necesita una pila. Algunas de las primeras implementaciones eran así de simples. Si se le agrega una pila, se pueden agregar también ciclos FOR anidados y el comando GOSUB. Un intérprete de BASIC con estas características necesita que el código tenga números de línea. Los números de línea fueron un aspecto muy distintivo del BASIC clásico. Sin embargo, el uso de números de línea tiene la desventaja de requerir que el programador estime cuántas líneas ocupará la parte del programa que escribe. Este requerimiento se cumple generalmente incrementando los números de línea en un intervalo regular, como 10, pero esto lleva a problemas a la hora que el código después agregado exceda el espacio disponible entre las líneas originales. Para aliviar este problema de los primeros intérpretes de BASIC, los usuarios expertos pronto escribieron sus propios programas utilitarios para renumerar sus programas, después del ingreso inicial. Más tarde aparecieron intérpretes de BASIC que incluían un comando específico RENUMBER, el que permitía renumerar rápidamente (y las veces que se quisiera) todo el código nuevamente, con cualquier intervalo entre líneas indicado y a partir de un número entero dado; eliminando así el principal problema de la numeración de líneas obligatoria. En los dialectos modernos de BASIC MIUN ya no es necesario incluir números de línea (aunque son permitidos), y la mayoría (o todos) han añadido control de flujo estructurado y los constructores de declaración de datos similares a los de otros lenguajes, tales como C y Pascal: 20
    • • do • loop • while • until • exit • on... goto • gosub • select ... case Variantes recientes como Visual Basic han introducido algunas características orientadas a objetos, y hasta herencia en la última versión. La administración de memoria es más fácil que con muchos otros lenguajes de programación procedurales por el uso de un Recolector de basura (y a costas de la velocidad de ejecución). Procedimientos y Control de Flujo BASIC no tiene una biblioteca externa estándar como otros lenguajes como C. En cambio, el intérprete (o compilador) contiene una biblioteca incorporada de procedimientos intrínsecos. Estos procedimientos incluyen la mayoría de las herramientas que un programador necesita para aprender a programar y escribir aplicaciones sencillas, así como funciones para realizar cálculos matemáticos, manejar cadenas, entrada desde la consola, gráficos y manipulación de archivos. Viejos dialectos de BASIC no permitían a los programadores escribir sus propios procedimientos. Los programadores en cambio debían escribir sus programas con un gran número de enunciados GOTO para hacer las derivaciones de flujo y retorno del programa. Esto podía producir un código fuente muy confuso (la mayoría de las veces era así), comúnmente conocido como Código espagueti; el cual era sumamente difícil de mantener, mucho menos por programadores ajenos al desarrollo del software. Con la inclusión posterior de enunciados GOSUB (Go-Subroutine) se ramificaba el programa a especies de subrutinas, sin parámetros o variables locales. Ellas proveen una forma de implementar una suerte de procedimientos (realmente no lo son, sencillamente es un "salto y retorno") y estructurar más el programa, evitando bastante la utilización de la dañina sentencia GOTO. La mayoría de las versiones de BASIC más modernas, como Microsoft QuickBASIC (1985-1988) y BASIC PDS (Profesional Developmen System - 1990) añadieron soporte completo para subrutinas, funciones y programación estructurada. Esta es otra área donde BASIC difiere de muchos lenguajes de programación. Sin embargo la primitiva GOSUB se ha mantenido hasta las versiones actuales, por razones compatibilidad. 21
    • BASIC, como Pascal, hace una distinción entre un procedimiento que no devuelve un valor (llamado subrutina) y un procedimiento que lo hace (llamado función). Muchos otros lenguajes (como C) no hacen esa distinción y consideran todo como una función (algunas que devuelven un valor “void” [vacío]). Mientras que las funciones que devuelven un valor son una adición relativamente reciente a los dialectos de BASIC, muchos de los primeros sistemas soportaban la definición de funciones matemáticas en línea, con DEF FN (“DEFine FunctioN” [DEFinir FuncióN]). El Dartmouth BASIC original también soportaba funciones al estilo de Algol, así como subrutinas desde sus primeros tiempos. Tipos de Datos BASIC es reconocido por tener muy buenas funciones para manipular cadenas de caracteres. Los primeros dialectos ya tenían un juego de funciones fundamentales (LEFT$, MID$, RIGHT$) para extraer y/o reemplazar subcadenas cadenas fácilmente. Como las cadenas son utilizadas en aplicaciones diarias, esta era una ventaja considerable sobre otros lenguajes al momento de su introducción. El Dartmouth BASIC original soportaba únicamente datos de tipo numérico y cadenas. No había un tipo entero. Todas las variables numéricas eran de punto flotante. Las cadenas eran de tamaño dinámico. Soportaba arreglos de ambos, números y cadenas, en una o dos dimensiones. Cada dialecto moderno de BASIC posee al menos los tipos de datos numérico y string (cadena). Estos tipos de datos se pueden distinguir usando un posfijo: los identificadores de cadenas terminan con $ (signo pesos, ejemplo la variable NOMBRE$), mientras que los numéricos sencillamente no llevan posfijo; a menos que se requiera indicar y forzar explícitamente qué tipo de numérico es, por ejemplo A% es entero, A! es real simple precisión y A# es real doble precisión. En BASIC las variables no necesitan forzosamente ser declaradas antes de usarse, excepto los arreglos de más de 10 elementos; aunque versiones BASIC relativamente modernas poseen la opción (considerada buena práctica de programación) para obligar al programador a declarar toda variable antes de su uso (una directiva como OPTION EXPLICIT). La declaración de variables en BASIC se hace usando la palabra clave DIM. Muchos dialectos también soportan tipos numéricos adicionales, como enteros de 16 y 32 bits (simple y long, respectivamente), además de sus números de punto flotante. Adicionalmente algunos permiten la utilización de tipos de datos definidos por el usuario, similar a los "records" de Pascal, o las "structs" de C. Versiones modernas de BASIC (como VBA) soportan una gran variedad de tipos de datos primitivos (o intrínsecos), además de los definidos por el usuario. 22
    • La mayoría de los dialectos de BASIC soporta arreglos en todos sus tipos de datos; es común también el soporte para arreglos mulidimensionales. Ejemplos: DIM MatrizDeEnteros(100,100) AS INTEGER DIM VectorDeEnteros%(30) DIM ListaDeNombres(50) AS STRING DIM ListaDeCiudades$(50) Dependiendo del dialecto de BASIC y del uso del enunciado OPTION BASE, el primer índice de los arreglos que se declaren será 1, por defecto es cero. En los ejemplos anteriores, si no se declara previamente "OPTION BASE 1", el primero es un arreglo en dos dimensiones de enteros 16 bits, con índices que van desde 0 hasta 100 (matriz de 101 x 101 elementos); en tanto que el segundo es un arreglo de enteros en una sola dimensión, de 0 a 30 (vector de 31 elementos). Observar que las dos formas de declaración de enteros son equivalentes, explicitándolo o con el uso del posfijo %. Análogamente para cadenas o string de caracteres, que en este caso además son de longitud variable (dinámicas, por defecto). Disponibilidad y variantes del lenguaje BASIC está disponible para casi todas las plataformas y sistemas operativos existentes. Una implementación gratuita que cumple con estándares y es multiplataforma es Bywater BASIC (bwBASIC). El intérprete está escrito en C y viene bajo la licencia GNU. Está diseñado para interfaz de texto o consola (no gráfica), no incluye soporte para crear interfaces gráficas de usuario (GUI's, Graphical User Interface). Hay un BASIC gratuito que si incluye soporte para GUI, es similar a Visual Basic y se ejecuta en Windows y GNU/Linux, es Phoenix Object BASIC. Las versiones de intérpretes/compiladores más conocidos son la línea de productos Quick BASIC y QBASIC, éste último es sólo intérprete, ambos son de Microsoft. En la actualidad lo es el moderno Visual BASIC, que Microsoft ha tratado de mantener al menos mínimamente compatible con incluso las primeras versiones de sus BASIC (en realidad es escasamente compatible). Otras versiones incluyen PowerBASIC de PowerBASIC, así como TrueBASIC de TrueBASIC, que cumple con los últimos estándares oficiales de BASIC. (True BASIC Inc. fue fundada por los creadores originales de Dartmouth BASIC.) REALbasic es una variante disponible para Mac OS Classic, Mac OS X, Microsoft Windows y GNU/Linux. Una versión de un dialecto simple de BASIC para la parrot 23
    • virtual machine, muestra como se implementa un intérprete de BASIC en un lenguaje similar al ensamblador. SmallBASIC es un dialecto que ejecuta en muchas plataformas (Win32, DOS, GNU/Linux y PalmOS) y viene bajo la licencia GNU (GPL). FreeBASIC es un compilador libre, compatible en sintaxis con QuickBASIC. Ejemplos de código fuente Ejemplo 1: Simple Saludo PRINT "Hola mundo" Ejemplo 2: BASIC original no estructurado (Applesoft BASIC) 10 INPUT "Cuál es su nombre:"; NN$ 20 PRINT "Bienvenido al 'asterisquero' ";NN$ 25 PRINT 30 INPUT "con cuántos astericos inicia [Cero sale]:"; N 40 IF N<=0 THEN GOTO 200 50 AS$="" 60 FOR I=1 TO N 70 AS$=AS$+"*" 80 NEXT I 90 PRINT "AQUI ESTAN:"; AS$ 100 INPUT "Desea más asteriscos:";SN$ 110 IF SN$="" THEN GOTO 100 120 IF SN$<>"S" AND SN$<>"s" THEN GOTO 200 130 INPUT "CUANTAS VECES DESEA REPETIRLOS [Cero sale]:"; VECES 140 IF VECES<=0 THEN GOTO 200 150 FOR I=1 TO VECES 160 PRINT AS$; 170 NEXT I 180 PRINT 185 REM A repetir todo el ciclo (comentario) 190 GOTO 25 200 END BIBLIOGRFIA • K. N. Rey, Modula-2, un texto comprensivo y claramente escrito, continuamente en la impresión por ahora cerca de dos décadas, ISBN 0-669-11091-4 • Richard J. Sutcliffe, “Modula-2: Abstracciones para los datos y las estructuras de programación, “(con Modula-2 ISO-Estándar) edición 2004-2005 24
    • http://wapedia.mobi/es/Fortran http://www.desarrolloweb.com/articulos/1550.php http://www.worldlingo.com/ma/enwiki/es/Modula-2/1 25