Vous êtes sur la page 1sur 13

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

FACULTAD DE INGENIERÍA DE SISTEMAS E INFORMÁTICA


E.A.P. INGENIERÍA DE SOFTWARE

METODOLOGIA DE DIFERENTES ALGORITMOS DE


PROGRAMAS Y USABILIDAD DE UN COMPILADOR WEB

Asignatura: MATEMÁTICAS DISCRETAS

Docente:
Integrantes:

i
INDICE
CAPÍTULO 1: Planteamiento del problema ............................. 3

1.1. Antecedentes ....................................................................... 3


1.2. Definición del problema ..................................................... 5
1.3. Objetivos ............................................................................. 5
1.3.1 General ............................................................................... 5
1.4. Alcances .............................................................................. 5

CAPÍTULO 2: Marco Teórico .................................................... 7

CAPÍTULO 3: Estado del arte ................................................... 8

3.1. Trabajos relacionados ......................................................... 8


3.2. Métodos, modelos, técnicos de solución ............................ 8
3.3. Aplicaciones software ....................................................... 10

CAPÍTULO 4: Conclusiones ..................................................... 11

Justificación.................................................................................. 12
Referencias Bibliográficas ........................................................... 13

ii
3

CAPÍTULO 1: Planteamiento del


problema
1.1. Antecedentes
En informática cuando nos referimos a compilador sabemos que se trata de
un programa informático que transforma código fuente escrito en un
determinado lenguaje de programación, lenguaje informático o también
llamado lenguaje fuente, en otro lenguaje informático (también llamado
lenguaje objetivo, estando este a menudo en formato binario el cual es
conocido como código objeto). La razón más común para querer transformar
este código fuente es el de poder crear un programa ejecutable.
Cualquier programa escrito en un lenguaje de programación de alto nivel debe
ser traducido a código objeto antes de que pueda ser ejecutado, para que todos
los programadores que usen tal lenguaje usen un compilador o un intérprete.
Por esto, los compiladores son muy importantes para los programadores.
Cualquier mejora hecha a un compilador lleva a un gran número de programas
mejorados.
Los compiladores son al ser programas grandes y complejos, gracias al análisis
sistemático y la investigación de los científicos informáticos ha llevado a un
entendimiento más claro de la construcción de los compiladores y una gran
cantidad de teoría ha sido desarrollada sobre ellos a lo largo de estas últimas
décadas. La investigación en la construcción de compiladores ha conducido a
herramientas que hacen mucho más fácil el crear compiladores, de modo que
los estudiantes de informática de hoy en día pueden crear sus propios lenguajes
pequeños y desarrollar un compilador simple. Pero para ello tendríamos que
remontarnos varios años atrás para ver como esto ha ido evolucionando con el
paso de los años.
El primer compilador fue escrito por Grace Hopper, en 1952, para el
lenguaje Sistema A-0. El término compilador nuevo para ese entonces fue
acuñado por Hopper. El equipo FORTRAN dirigido por John W.
Backus de IBM está generalmente acreditado por haber presentado el primer
compilador completo, en el año 1957. El primer compilador FORTRAN
necesitó de 18 años para su creación.
En 1960, un compilador FORTRAN extendido, ALTAC, estaba también
disponible en el Philco2000, por lo que es probable que un programa
FORTRAN fuera compilado para ambas arquitecturas de computadores a
mediados de los años 60. El primer lenguaje de alto
nivel multiplataforma demostrado fue COBOL. Esta demostración fue llevada
a cabo en diciembre de 1960, en ese entonces un programa COBOL fue
compilado y ejecutado en el UNIVAC II y el RCA 501.

MATEMATICAS DISCRETAS COMPILADOR WEB


4

El compilador COBOL para el UNIVAC II fue probablemente el primero en


ser escrito en un lenguaje de alto nivel, siendo llamado FLOW-MATIC, por un
equipo dirigido en ese entonces por Grace Hopper.
Como cualquier otro software, hay beneficios obtenidos al hacer la
implementación de un compilador en un lenguaje de alto nivel. En particular,
un compilador puede ser auto-alojado, es decir, escrito en el lenguaje de
programación que lo compila. Construir un compilador auto-alojado es un
problema de bootstrapping, el primer compilador para un lenguaje debe ser
compilado o en un compilador escrito en un lenguaje distinto, o compilado
ejecutando el compilador en un intérprete.
El primer compilador auto-alojado (excluyendo ensambladores) fue escrito
para Lisp por Tim Hart y Mike Levin en el MIT en 1962. Ellos escribieron un
compilador en Lisp, probándolo en un intérprete de Lisp ya existente. Una vez
que ellos hubieron mejorado el compilador hasta el punto de que se pudiera
compilar en su propio código fuente, este fue auto-alojado.
El compilador tal como existe en la cinta de compilador estándar es un
programa en lenguaje de máquina que fue obtenido al tener la definición de
la Expresión S del trabajo de compilador en sí mismo a través del
intérprete. (AI Memo 39).
Posteriores compiladores, como el compilador Fortran IV de IBM, priorizó
más en los buenos diagnósticos y en ejecutarse más rápidamente, a costa de la
optimización del código objeto. No fue hasta las series IBM 360en las que
IBM proveyó dos compiladores separados en las que estuvo disponible: un
comprobador de ejecución de código rápido y un optimizador más lento.

MATEMATICAS DISCRETAS COMPILADOR WEB


5

1.2. Definición del problema


Visto ya en los antecedentes del compilador, el avance y desarrollo que obtuvo
este no fue sencillo, sin embargo, los resultados obtenidos posteriormente son
parte fundamental de la programación hoy en día.

Uno de los grandes retos a los que nos enfrentamos nosotros los estudiantes de
ingeniería de software también es la creación de nuestro propio compilador, pero
siendo este un trabajo en conjunto el problema en concreta será la realización de
un compilador web, es decir un compilador disponible en internet mediante el
cual cualquier persona pueda acceder, escribir su código sin importar el lenguaje
en cual se haga y este se ejecute sin ningún tipo de inconveniente

La realización de dicho compilador viene a ser nuestro centro de enfoque en el


presente trabajo el cual será desarrollado con mayor detenimiento en los
posteriores capítulos.

1.3. Objetivos

1.3.1 General

Realizar la implementación de un compilador web, que permita a los


programadores ahorrar recursos en el ordenador, pues como sabemos los
programadores suelen trabajar con compiladores de confianza, pero en la gran
mayoría muchos de ellos no tienen un control sobre el uso de la memoria RAM.

1.4. Alcances

Estas páginas web son herramientas online para ejecutar, depurar y compilar
código, además permiten a los programadores ahorrar recursos en el ordenador.
Son programas informáticos cuyo objetivo es traducir el lenguaje de
programación (Java, C#, C++, PHP, Python…) a lenguaje de máquina. En otras
palabras, son herramientas que permiten al ordenador comprender y ejecutar el
código que escriben los programadores. Todos los profesionales trabajan con uno
o varios compiladores de confianza, pero a menudo estos programas abusan de la
memoria y de la RAM del sistema.

MATEMATICAS DISCRETAS COMPILADOR WEB


6

Una solución para este problema es compilar el código en una plataforma online.
De esta manera, los programadores pueden ejecutar el software y descargar un
ejecutable en su ordenador mediante un entorno de desarrollo online.
Incluye un área para el código, otra para las entradas y una última, a la región
derecha de la pantalla, para las salidas. Esto permitirá programar más ágilmente
y ejecutar el código al instante. También soporta la mayoría de lenguajes de
programación e incluye una función para autocompletar y para trabajar a pantalla
completa.
Es un compilador e intérprete online que cuenta con una herramienta de
colaboración muy fácil de usar. Solo hay que pegar el código y se obtiene una URL
corta que se puede compartir con otros miembros de la comunidad. Funciona muy
bien en muchos smartphones actuales, así que es el complemento ideal para poder
trabajar en nuestros proyectos en cualquier lugar y momento.
Es compatible con más de 60 lenguajes de programación diferentes como: C, C++,
Pascal, Java… La consola es muy intuitiva y el programa, en general,
sorprendentemente ligero. Los usuarios también pueden disponer de una biblioteca
de ejemplos y acceder a una comunidad activa de programadores.

MATEMATICAS DISCRETAS COMPILADOR WEB


7

CAPÍTULO 2: Marco Teórico


Es el proceso por el cual se traducen las instrucciones escritas en un determinado
lenguaje de programación a lenguaje máquina. Además de un traductor, se pueden
necesitar otros programas para crear un programa objeto ejecutable. Un programa
fuente se puede dividir en módulos almacenados en archivos distintos. La tarea de
reunir el programa fuente a menudo se confía a un programa distinto, llamado
preprocesador. El preprocesador también puede expandir abreviaturas, llamadas a
macros, a proposiciones del lenguaje fuente.
Normalmente la creación de un programa ejecutable (un típico archivo .exe para
Windows o DOS) conlleva dos pasos. El primer paso se llama compilación
(propiamente dicho) y traduce el código fuente escrito en un lenguaje de
programación almacenado en un archivo a código en bajo nivel (normalmente en
código objeto, no directamente a lenguaje máquina). El segundo paso se llama
enlazado en el cual se enlaza el código de bajo nivel generado de todos los ficheros
y subprogramas que se han mandado a compilar y se añade el código de las
funciones que hay en las bibliotecas del compilador para que el ejecutable pueda
comunicarse directamente con el sistema operativo, traduciendo así finalmente el
código objeto a código máquina, y generando un módulo ejecutable.
Estos dos pasos se pueden hacer por separado, almacenando el resultado de la fase
de compilación en archivos objetos (un típico.obj para Microsoft Windows, DOS o
para Unix); para enlazarlos en fases posteriores, o crear directamente el ejecutable;
con lo que la fase de compilación se almacena solo temporalmente. Un programa
podría tener partes escritas en varios lenguajes (por ejemplo C, C++ y Asm), que
se podrían compilar de forma independiente y luego enlazar juntas para formar un
único módulo ejecutable.

MATEMATICAS DISCRETAS COMPILADOR WEB


8

CAPÍTULO 3: Estado del arte


3.1. Trabajos relacionados

En internet se pueden encontrar numerosos compiladores web y aplicaciones para


el celular. Como se ha aclarado antes, estas páginas de internet son para ejecutar
y compilar código, además que permite a los programadores ahorrar recursos del
ordenador.
Como algunos ejemplos tenemos:
 Ideone, es una herramienta que nos permite compilar y también depurar el
código online. Es compatible con más de 60 lenguajes de programación
diferentes como: C, C++, Pascal, Java, etc. El programa es bastante
intuitivo y ligero. Los usuarios también pueden disponer de una biblioteca
de ejemplos e incluso acceder a una comunidad activa de programadores.
 Codepad, es un compilador e interprete online que cuenta con una
herramienta de compilación muy fácil de usar. Donde solo se tiene que
pegar el código y se obtiene una URL corta que se puede compartir con
otros miembros de la comunidad. Un complemento ideal para poder
trabajar en proyectos de gran escala en cualquier momento y lugar.
 JDoodle, destaca por su diseño limpio y sencillo. Se puede encontrar las
herramientas más básicas de un compilador (cuadro de texto, guardar,
ejecutar…) donde podrán revisar su código de Java, C, y C++. Es una web
muy práctica que permite a los programadores ahorrar recursos del
ordenador compilando en Internet.
 IDEDr, incluye un área para el código, otra para las entradas y una última,
a la región derecha de la pantalla, para las salidas. Esto permitirá programar
más ágilmente y ejecutar el código al instante. Soporta la mayoría de
lenguajes de programación e incluye una función para autocompletar y para
trabajar a pantalla completa.
 Programming Hub, desarrollada por Nexino Labs en colaboración con
expertos de Google, es una aplicación para iOS y Android, donde no solo
tiene acceso a un compilador para probar los códigos creados por el
usuario, sino que también posee una gran variedad de tutorial, así
mejorando el entorno de un programador.

3.2. Métodos, modelos, técnicos de solución

Existen muchos métodos y modelos para crear un compilador eficiente, la


mayoría de libros empiezan creando un analizador léxico.
La fase de análisis léxico lee los caracteres de un programa fuente y los agrupa
en una cadena de componentes léxicos en los que cada componente representa

MATEMATICAS DISCRETAS COMPILADOR WEB


9

una secuencia lógicamente coherente de caracteres, como un identificador, una


palabra clave (if, while, etc), un carácter de puntuación, o un operador de varios
caracteres, como :=.
Luego un analizador sintáctico y semántico, durante el análisis semántico el
compilador intenta detectar construcciones que tengan la estructura sintáctica
correcta, pero que no tengan significado para la operación implicada, por ejemplo,
si se intenta sumar dos identificadores. Uno de los cuales es el nombre de una
matriz, y el otro, el nombre de un procedimiento. Después de los análisis sintáctico
y semántico, algunos compiladores generan una representación intermedia
explícita del programa fuente. Se puede considerar esta representación intermedia
como un programa para una máquina abstracta. Esta representación intermedia
debe tener dos propiedades importantes; debe ser fácil de producir y fácil de
traducir al programa objeto.
La fase de optimación de código trata de mejorar el código intermedio de modo
que resulte un código de máquina más rápido de ejecutar. Finalmente se genera
el código.

Así es como funcionan los compiladores paso a paso:

Ahora, después de explicar el funcionamiento de un compilador, vemos que


requiere de varios recursos. Dicha problemática ronda en un entorno de un
programador que no posee recursos suficientes para su desarrollo como
programador. A tal problemática surgió una solución la de crear Compiladores de
entorno online. Dichos compiladores no necesitaran de grandes recursos para su
funcionamiento, dándole así al programador una herramienta muy potente para su
desenvolvimiento como programador.

MATEMATICAS DISCRETAS COMPILADOR WEB


10

3.3. Aplicaciones software

Un software de aplicación es un tipo de software diseñado para realizar un grupo


de funciones, tareas o actividades coordinadas para el beneficio del usuario. En
este trabajo se plantea la realización de un Compilador Web, ya que los
compiladores son de suma importancia dentro de la programación, y estos se
encargan de traducir o trasladar el programa realizado a lenguaje máquina, es
decir, que dicho programa desarrollado pueda ser entendido por la máquina.
Y por qué el uso de un Compilador Web, esto se debe a que algunos de los
compiladores, que los desarrolladores suelen usar, tienden a ser pesados o
consumir grandes recursos de los equipos como consumir drásticamente la
memoria RAM del sistema, es por ello que es de gran utilidad compilar el código
en una plataforma online. Ya algunos compiladores web existentes en la
plataforma fueron nombrados anteriormente.
Las aplicaciones de un Compilador Web son diversas, nombraremos algunas de
ellas:
 Entornos de desarrollo con soportes para la gran mayoría de lenguajes de
programación.
 Las aplicaciones online son una gran solución, compilar el código en una
plataforma virtual es la mejor opción. De esta manera los programadores
pueden ejecutar el Software y descarga un ejecutable en su ordenador
mediante un entorno de desarrollo online.
 Facilidad de acceso en un entorno online, ya que a veces, por distintos
motivos, un programador no tiene herramientas de trabajo a mano, como
un editor o compilador de código, y por ello no podemos desarrollar fuera
de nuestro entorno.
 Creaciones de páginas y aplicaciones web, puesto que, con un simple editor
de texto plano se puede hacer, pero con la ayuda de un compilador web, el
trabajo se nos facilita, ya que siempre viene bien contar con el soporte que
nos brinda ciertas herramientas especializadas.
 Existen Compiladores web que te brindan una gran ayuda, y este es el de
guardar tus proyectos y acceder a ellos cuando lo necesites, una gran ayuda
para un programador, un claro ejemplo de esto es JDoodle. No solo eso,
sino que también pueden sincronizarse automáticamente con GitHub.
 Otros compiladores web te permiten compartir tu código o mantenerlo en
privado y usar códigos de otros usuarios.

MATEMATICAS DISCRETAS COMPILADOR WEB


11

CAPÍTULO 4: Conclusiones

MATEMATICAS DISCRETAS COMPILADOR WEB


12

Justificación
Este compilador web, nos permite ciertamente ser capaz de diseñar y desarrollar
un compilador de un lenguaje de programación: esto incluye métodos e
implementación de cada fase del compilador, en particular, las herramientas de
generación de compiladores.
En sentido estricto, este compilador es un sistema extrínsecamente ligado a la
programación, que a su vez, es una de las tareas fundamentales del informático.
Por lo tanto, el conocimiento de los compiladores influirá en la maestría con que
se lleve a cabo esta tarea.
Es capaz de afianzar la tarea de programar, es decir, añadir una serie de
perspectivas y conocimientos que ya tiene la persona a programar. Se enfatizan
los factores de sistematización de la definición de la definición de los lenguajes
de programación y como segundo factor la comprensión de los modelos de
implementación de los lenguajes de programación.
Otro punto a mencionar del proyecto es que este compilador es capaz de
identificar y resolver problemas. Aquí será importante, primero, comprender que
la aplicación de los conocimientos de compiladores incluye el concepto general
de lenguaje formal, segundo, ser capaz de identificar problemas que parecen
alejados de la compilación como problemas de procesamiento de lenguajes, y
tercero, comprender que los algoritmos y las herramientas de generación de
compiladores se convierten entonces en utensilios relevantes para el profesional
informático.

MATEMATICAS DISCRETAS COMPILADOR WEB


13

Referencias Bibliográficas

MATEMATICAS DISCRETAS COMPILADOR WEB

Vous aimerez peut-être aussi