SlideShare una empresa de Scribd logo
1 de 7
Descargar para leer sin conexión
Ejercicio 1 .1 .1: ¿Cuál es la diferencia entre un compilador y un intérprete?
• Un intérprete traduce instrucciones de alto nivel en una forma intermedia para ser ejecutado.
En contraste, un compilador, traduce instrucciones de alto nivel directamente en lenguaje de
máquina.
• El intérprete traduce un programa línea a línea mientras que el compilador traduce el
programa entero y luego lo ejecuta.
• El intérprete detecta si el programa tiene errores y permite su depuración durante el proceso
de ejecución, mientras que el compilador espera hasta terminar la compilación de todo el
programa para generar un informe de errores.
• Un programa compilado es más seguro que uno interpretado, porque no contiene el código
fuente, que puede ser modificado incorrectamente por el usuario.
• Ambos, intérpretes y compiladores están disponibles en la mayoría de los lenguajes de alto
nivel.
Ejercicio 1 .1 .2: ¿Cuáles son las ventajas de (a) un compilador sobre un intérprete, y (b) las de un
intérprete sobre un compilador?
(a)Ventajas de un compilador sobre un intérprete:
 Se compila una vez, se ejecuta n veces.
 En bucles, la compilación genera código equivalente al bucle, pero interpretándolo se
traduce tantas veces una línea como veces se repite el bucle.
 El compilador tiene una visión global del programa, por lo que la información de mensajes
de error es más detallada. Ventajas del intérprete frente al compilador:
 Un intérprete necesita menos memoria que un compilador. En principio eran más
abundantes dado que los ordenadores tenían poca memoria.
 Permiten una mayor interactividad con el código en tiempo de desarrollo.
(b) Ventajas del intérprete frente al compilador:
• El programa se puede ejecutar de inmediato, sin esperar a ser compilado.
• Puede ser interrumpido con facilidad.
• Puede ser rápidamente modificado y ejecutado nuevamente.
• Resultan muy apropiados durante la fase de desarrollo de un programa, ya que la
compilación no permite la ejecución paso a paso del programa y con ello impide la edición
seguimiento y depuración del programa.
Ejercicio 1 .1 .3: ¿Qué ventajas hay para un sistema de procesamiento de lenguajes en el cual el
compilador produce lenguaje ensamblador en vez de lenguaje máquina?
• Velocidad
El proceso de traducción que realizan los intérpretes, implica un proceso de cómputo adicional al
que el programador quiere realizar. Por ello, nos encontraremos con que un intérprete es siempre
más lento que realizar la misma acción en Lenguaje Ensamblador, simplemente porque tiene el costo
adicional de estar traduciendo el programa, cada vez que lo ejecutamos.
• Tamaño
Los compiladores e intérpretes generan más código máquina del necesario; por ello, el programa
ejecutable crece. Así, cuando es importante reducir el tamaño del ejecutable, mejorando el uso de la
memoria y teniendo también beneficios en velocidad, puede convenir usar el lenguaje Ensamblador.
Entre los programas que es crítico el uso mínimo de memoria, tenemos a los virus y manejadores de
dispositivos (drivers). Muchos de ellos, por supuesto, están escritos en lenguaje Ensamblador.
• Flexibilidad
Las razones anteriores son cuestión de grado: podemos hacer las cosas en otro lenguaje, pero
queremos hacerlas más eficientemente. Pero todos los lenguajes de alto nivel tienen limitantes en el
control; al hacer abstracciones, limitan su propia capacidad. Es decir, existen tareas que la máquina
puede hacer, pero que un lenguaje de alto nivel no permite. Por ejemplo, en Visual Basic no es
posible cambiar la resolución del monitor a medio programa; es una limitante, impuesta por la
abstracción del GUI Windows. En cambio, en ensamblador es sumamente sencillo, pues tenemos el
acceso directo al hardware del monitor.
Ejercicio 1 .1 .4: A un compilador que traduce un lenguaje de alto nivel a otro lenguaje de alto nivel
se le llama traductor de source-to-source. ¿Qué ventajas hay en cuanto al uso de C como lenguaje
destino para un compilador?
Las ventajas de que C sea su lenguaje destino son las siguientes:
• Es un lenguaje muy eficiente puesto que es posible utilizar sus características de bajo nivel
para realizar implementaciones óptimas.
• A pesar de su bajo nivel es el lenguaje más portado en existencia, habiendo compiladores
para casi todos los sistemas conocidos.
• Proporciona facilidades para realizar programas modulares y/o utilizar código o bibliotecas
existentes.
Ejercicio 1 .1 .5: Describa algunas de las tareas que necesita realizar un ensamblador.
• Convertir los códigos (“opcode” o mnemónicos: ej. LDA, STX) a su código equivalente en
lenguaje de máquina
• Convertir los operandos simbólicos (las etiquetas o variables) en las direcciones
correspondientes de los operandos
• Construir las instrucciones en lenguaje de máquina en el formato apropiado
• Convertir las constantes definidas en el programa en su verdadera representación
• Escribir el “listing” en lenguaje de ensamblador con el código en lenguaje de máquina
correspondiente
• Procesar las directrices al ensamblador (las directrices son instrucciones o comandos
dirigidos al ensamblador, que éste procesa y ejecuta al hallarlos en el programa en lenguaje
de ensamblador; estas directrices no se traducen a lenguaje de máquina, si no que el
ensamblador ejecuta alguna acción, como reservar memoria para variables, entre otras)
JavaScript
JavaScript es un lenguaje de programación que se utiliza principalmente para crear páginas web
dinámicas.
Una página web dinámica es aquella que incorpora efectos como texto que aparece y desaparece,
animaciones, acciones que se activan al pulsar botones y ventanas con mensajes de aviso al usuario.
Técnicamente, JavaScript es un lenguaje de programación interpretado, por lo que no es necesario
compilar los programas para ejecutarlos. En otras palabras, los programas escritos con JavaScript se
pueden probar directamente en cualquier navegador sin necesidad de procesos intermedios.
A pesar de su nombre, JavaScript no guarda ninguna relación directa con el lenguaje de programación
Java. Legalmente, JavaScript es una marca registrada de la empresa Sun Microsystems.
Las acciones controladas por JavaScript pueden ser el despliegue de un menú, hacer aparecer,
desaparecer o cambiar texto e imágenes, realizar cálculos y mostrar resultados, mostrar mensajes de
aviso (por ejemplo, si faltan datos en un formulario) y “efectos animados” en general.
Arquitectura de la plataforma .NET Framework
Los programas de C# se ejecutan en .NET Framework, un componente integral de Windows que
incluye un sistema de ejecución virtual llamado Common Language Runtime (CLR) y un conjunto
unificado de bibliotecas de clases. El CLR es la implementación comercial de Microsoft de Common
Language Infrastructure (CLI), un estándar internacional que es la base para la creación de entornos
de ejecución y desarrollo en los que los lenguajes y las bibliotecas trabajan juntos sin problemas.
El código fuente escrito en C# se compila en un lenguaje intermedio (IL) que guarda conformidad con
la especificación de CLI. El código y los recursos IL, como mapas de bits y cadenas, se almacenan en
disco en un archivo ejecutable denominado ensamblado, normalmente con la extensión .exe o .dll. Un
ensamblado contiene un manifiesto que proporciona información sobre los tipos, la versión, la
referencia cultural y los requisitos de seguridad del ensamblado.
Cuando se ejecuta el programa de C#, el ensamblado se carga en el CLR, el cual podría realizar diversas
acciones en función de la información en el manifiesto. Luego, si se cumplen los requisitos de
seguridad, el CLR realiza la compilación Just in time (JIT) para convertir el código IL en instrucciones
máquina nativas. El CLR también proporciona otros servicios relacionados con la recolección de
elementos no utilizados, el control de excepciones y la administración de recursos. El código que se
ejecuta en el CLR se conoce a veces como "código administrado", a diferencia del "código no
administrado" que se compila en lenguaje de máquina nativo destinado a un sistema específico. En el
siguiente diagrama se ilustran las relaciones de tiempo de compilación y tiempo de ejecución de
archivos de código fuente de C#, las bibliotecas de clases de .NET Framework, los ensamblados y el
CLR.
¿Qué es el procesamiento de lenguaje natural?
El Procesamiento del Lenguaje Natural es el campo de conocimiento de la Inteligencia Artificial que
se ocupa de la investigar la manera de comunicar las máquinas con las personas mediante el uso de
lenguas naturales, como el español, el inglés o el chino.
Virtualmente, cualquier lengua humana puede ser tratada por los ordenadores. Lógicamente,
limitaciones de interés económico o práctico hace que solo las lenguas más habladas o utilizadas en
el mundo digital tengan aplicaciones en uso.
Las lenguas naturales pueden expresarse de forma oral (mediante la voz), escrita (un texto) o por
signos. Obviamente, la expresión escrita está mucho más documentada y es más fácil de conseguir y
tratar que la oral o el lenguaje de signos. Por lo tanto, el Procesamiento del Lenguaje Natural está
mucho más avanzado en el tratamiento de textos escritos.
En teoría, cualquier lengua humana puede ser interpretada y tratada por un ordenador, aunque esto
en la práctica no se hace, dadas las limitaciones económicas o las escasas aplicaciones que tendría
interpretar las más de 3.000 lenguas catalogadas existentes en el mundo.
Modelos para procesamiento del lenguaje natural
Tratar computacionalmente una lengua implica un proceso de modelización matemática. Los
ordenadores solo entienden de bytes y dígitos y los informáticos codifican los programas
empleando lenguajes de programación como C, Python o Java.
Los lingüistas computacionales se encargan de la tarea de “preparar” el modelo lingüístico para que
los ingenieros informáticos lo implementen en un código eficiente y funcional. Básicamente, existen
dos aproximaciones generales al problema de la modelización lingüística:
Modelos Lógicos: gramáticas
Los lingüistas escriben reglas de reconocimiento de patrones estructurales, empleando un
formalismo gramatical concreto. Estas reglas, en combinación con la información almacenada en
diccionarios computacionales, definen los patrones que hay que reconocer para resolver la tarea
(buscar información, traducir, etc.).
Estos modelos lógicos pretenden reflejar la estructura lógica del lenguaje y surgen a partir de las
teorías de N. Chomsky en los años 50.
Modelos probabilísticos del lenguaje natural: basados en datos
La aproximación es a la inversa: los lingüistas recogen colecciones de ejemplos y datos (corpus) y a
partir de ellos se calculan las frecuencias de diferentes unidades lingüísticas (letras, palabras,
oraciones) y su probabilidad de aparecer en un contexto determinado. Calculando esta
probabilidad, se puede predecir cuál será la siguiente unidad en un contexto dado, sin necesidad de
recurrir a reglas gramaticales explícitas.
Es el paradigma de “aprendizaje automático” que se ha impuesto en las últimas décadas en
Inteligencia Artificial: los algoritmos infieren las posibles respuestas a partir de los datos observados
anteriormente en el corpus.
Componentes del procesamiento del lenguaje natural
A continuación, vemos algunos de los componentes del procesamiento del lenguaje natural. No
todos los análisis que se describen se aplican en cualquier tarea de PLN, sino que depende del
objetivo de la aplicación.
1. Análisis morfológico o léxico. Consiste en el análisis interno de las palabras que forman
oraciones para extraer lemas, rasgos flexivos, unidades léxicas compuestas. Es esencial para
la información básica: categoría sintáctica y significado léxico.
2. Análisis sintáctico. Consiste en el análisis de la estructura de las oraciones de acuerdo con el
modelo gramatical empleado (lógico o estadístico).
3. Análisis semántico. Proporciona la interpretación de las oraciones, una vez eliminadas las
ambigüedades morfosintácticas.
4. Análisis pragmático. Incorpora el análisis del contexto de uso a la interpretación final. Aquí
se incluye el tratamiento del lenguaje figurado (metáfora e ironía) como el conocimiento del
mundo específico necesario para entender un texto especializado.
Un análisis morfológico, sintáctico, semántico o pragmático se aplicará dependiendo del objetivo de
la aplicación. Por ejemplo, un conversor de texto a voz no necesita el análisis semántico o
pragmático. Pero un sistema conversacional requiere información muy detallada del contexto y del
dominio temático.
Linkografia
https://danielrodriguezmonroyvespertinocompiladores.wordpress.com/2012/01/13/tareas-que-realiza-
un-lenguaje-ensamblador/
https://danielrodriguezmonroyvespertinocompiladores.wordpress.com/2012/01/13/que-ventajas-hay-
en-cuanto-al-uso-de-c-como-lenguaje-destino-para-un-compilador/
https://danielrodriguezmonroyvespertinocompiladores.wordpress.com/2012/01/13/que-ventajas-hay-
para-un-sistema-de-procesamiento-de-lenguajes-en-el-cual-el-compilador-produce-un-lenguaje-
ensamblador-en-vez-de-un-lenguaje-maquina/
http://equipo5241v.blogspot.com/2010/05/comparacion-interpretes-y-compiladores.html
http://www.cavsi.com/preguntasrespuestas/cual-es-la-diferencia-entre-interprete-y-compilador/
http://www.iic.uam.es/inteligencia/que-es-procesamiento-del-lenguaje-natural/
http://www.vicomtech.org/t4/e11/procesamiento-del-lenguaje-natural
https://medium.com/@pharesdiego/javascript-un-lenguaje-compilado-o-interpretado-962ee405e123
https://uniwebsidad.com/libros/javascript/capitulo-1
https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=777:ique-es-
javascript-principales-usos-servidor-y-cliente-html-css-y-programacion-efectos-
cu01103e&catid=78&Itemid=206
https://docs.microsoft.com/es-es/dotnet/csharp/getting-started/introduction-to-the-csharp-language-
and-the-net-framework

Más contenido relacionado

La actualidad más candente

Interprete vs compilador
Interprete vs compiladorInterprete vs compilador
Interprete vs compiladorElba Sepúlveda
 
Lenguajes de alto nivel
Lenguajes de alto nivelLenguajes de alto nivel
Lenguajes de alto nivelGrace Laguna
 
Actividad 3 programacion de sistemas
Actividad 3 programacion de sistemasActividad 3 programacion de sistemas
Actividad 3 programacion de sistemasJESSIKADG86
 
Computación
ComputaciónComputación
Computaciónkateshita
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacionnecrosteel
 
Presentación computación 1_compiladores_e_interpretes
Presentación computación 1_compiladores_e_interpretesPresentación computación 1_compiladores_e_interpretes
Presentación computación 1_compiladores_e_interpretesMichael Vreys
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensambladoriagardea
 
Presentación lenguajedeprogramacion
Presentación lenguajedeprogramacionPresentación lenguajedeprogramacion
Presentación lenguajedeprogramacionmichelledelgado97
 
Actividades ac 2 computacion mtra elisa navarro lectura
Actividades ac 2 computacion mtra elisa navarro lecturaActividades ac 2 computacion mtra elisa navarro lectura
Actividades ac 2 computacion mtra elisa navarro lecturaacdurcor
 
Lenguaje de programación
Lenguaje de programaciónLenguaje de programación
Lenguaje de programaciónJSPN
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programaciónAdraian Felipe
 
Presentacion_Lenguajes_Programacion
Presentacion_Lenguajes_ProgramacionPresentacion_Lenguajes_Programacion
Presentacion_Lenguajes_Programacionymendal
 
lenguaje de Programacion
lenguaje de Programacionlenguaje de Programacion
lenguaje de ProgramacionLauracks
 

La actualidad más candente (19)

Interprete vs compilador
Interprete vs compiladorInterprete vs compilador
Interprete vs compilador
 
Ensayo
EnsayoEnsayo
Ensayo
 
Lenguajes de alto nivel
Lenguajes de alto nivelLenguajes de alto nivel
Lenguajes de alto nivel
 
Herramientas
HerramientasHerramientas
Herramientas
 
Actividad 3 programacion de sistemas
Actividad 3 programacion de sistemasActividad 3 programacion de sistemas
Actividad 3 programacion de sistemas
 
Taller saberes previos
Taller saberes previosTaller saberes previos
Taller saberes previos
 
Computación
ComputaciónComputación
Computación
 
LENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADORLENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADOR
 
Software
SoftwareSoftware
Software
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
Presentación computación 1_compiladores_e_interpretes
Presentación computación 1_compiladores_e_interpretesPresentación computación 1_compiladores_e_interpretes
Presentación computación 1_compiladores_e_interpretes
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 
Presentación lenguajedeprogramacion
Presentación lenguajedeprogramacionPresentación lenguajedeprogramacion
Presentación lenguajedeprogramacion
 
Actividades ac 2 computacion mtra elisa navarro lectura
Actividades ac 2 computacion mtra elisa navarro lecturaActividades ac 2 computacion mtra elisa navarro lectura
Actividades ac 2 computacion mtra elisa navarro lectura
 
Lenguaje de programación
Lenguaje de programaciónLenguaje de programación
Lenguaje de programación
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programación
 
Presentacion_Lenguajes_Programacion
Presentacion_Lenguajes_ProgramacionPresentacion_Lenguajes_Programacion
Presentacion_Lenguajes_Programacion
 
lenguaje de Programacion
lenguaje de Programacionlenguaje de Programacion
lenguaje de Programacion
 

Similar a Investigación Ensambladores y Decompiladores

Procesadores de Lenguajes
Procesadores de LenguajesProcesadores de Lenguajes
Procesadores de LenguajesGLORIABELEN3
 
Introducción a la Programación :: Unidad 01 :: Parte 01
Introducción a la Programación :: Unidad 01 :: Parte 01Introducción a la Programación :: Unidad 01 :: Parte 01
Introducción a la Programación :: Unidad 01 :: Parte 01Facultad de Ciencias y Sistemas
 
lenguaje de programación
lenguaje de programación lenguaje de programación
lenguaje de programación j3palacios
 
Traductores de lenguajes de programación
Traductores de lenguajes de programaciónTraductores de lenguajes de programación
Traductores de lenguajes de programaciónDaniela Brignolo
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretadorFrancisco Leal
 
Investigacion sobre traductor, interprete y compilador
Investigacion sobre traductor, interprete y compilador   Investigacion sobre traductor, interprete y compilador
Investigacion sobre traductor, interprete y compilador ADOLFOISAIASGARCIASI
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programaciónKareliaRivas
 
Diseño de Algoritmos
 Diseño de Algoritmos Diseño de Algoritmos
Diseño de AlgoritmosTaniaCalle
 
CURSO DE SELECCIÓN_SESIÓN 02.pptx
CURSO DE SELECCIÓN_SESIÓN 02.pptxCURSO DE SELECCIÓN_SESIÓN 02.pptx
CURSO DE SELECCIÓN_SESIÓN 02.pptxALE TUD
 
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADOCONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADOadark
 
Evolución y clasificación de los lenguajes de programación
Evolución y clasificación de los lenguajes de programaciónEvolución y clasificación de los lenguajes de programación
Evolución y clasificación de los lenguajes de programaciónjuanbryanc
 

Similar a Investigación Ensambladores y Decompiladores (20)

Procesadores de Lenguajes
Procesadores de LenguajesProcesadores de Lenguajes
Procesadores de Lenguajes
 
Lenguaje de programación
Lenguaje de programaciónLenguaje de programación
Lenguaje de programación
 
Introducción a la Programación :: Unidad 01 :: Parte 01
Introducción a la Programación :: Unidad 01 :: Parte 01Introducción a la Programación :: Unidad 01 :: Parte 01
Introducción a la Programación :: Unidad 01 :: Parte 01
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
lenguaje de programación
lenguaje de programación lenguaje de programación
lenguaje de programación
 
Traductores de lenguajes de programación
Traductores de lenguajes de programaciónTraductores de lenguajes de programación
Traductores de lenguajes de programación
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretador
 
Apuntes c
Apuntes cApuntes c
Apuntes c
 
Investigacion sobre traductor, interprete y compilador
Investigacion sobre traductor, interprete y compilador   Investigacion sobre traductor, interprete y compilador
Investigacion sobre traductor, interprete y compilador
 
Informática
InformáticaInformática
Informática
 
Informática
InformáticaInformática
Informática
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programación
 
Diseño de Algoritmos
 Diseño de Algoritmos Diseño de Algoritmos
Diseño de Algoritmos
 
CURSO DE SELECCIÓN_SESIÓN 02.pptx
CURSO DE SELECCIÓN_SESIÓN 02.pptxCURSO DE SELECCIÓN_SESIÓN 02.pptx
CURSO DE SELECCIÓN_SESIÓN 02.pptx
 
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADOCONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Evolución y clasificación de los lenguajes de programación
Evolución y clasificación de los lenguajes de programaciónEvolución y clasificación de los lenguajes de programación
Evolución y clasificación de los lenguajes de programación
 
Clases/Tipos de lenguajes de programación
Clases/Tipos de lenguajes de programaciónClases/Tipos de lenguajes de programación
Clases/Tipos de lenguajes de programación
 
Herramientas
HerramientasHerramientas
Herramientas
 

Más de RubnPilca

TALLER DE COMPILADORES (Flex y Bison).
TALLER DE COMPILADORES  (Flex y Bison). TALLER DE COMPILADORES  (Flex y Bison).
TALLER DE COMPILADORES (Flex y Bison). RubnPilca
 
Análisis sintáctico
Análisis sintácticoAnálisis sintáctico
Análisis sintácticoRubnPilca
 
Compilando un programa manualmente Java, C++, Visual Basic
Compilando un programa manualmente Java, C++, Visual BasicCompilando un programa manualmente Java, C++, Visual Basic
Compilando un programa manualmente Java, C++, Visual BasicRubnPilca
 
Fortran con el compilador Gfortran.
Fortran con el compilador Gfortran. Fortran con el compilador Gfortran.
Fortran con el compilador Gfortran. RubnPilca
 
Instalar compiladores cruzados
Instalar compiladores cruzadosInstalar compiladores cruzados
Instalar compiladores cruzadosRubnPilca
 
Emsambladores
EmsambladoresEmsambladores
EmsambladoresRubnPilca
 
PROGRAMAS DECOMPILADORES
PROGRAMAS DECOMPILADORESPROGRAMAS DECOMPILADORES
PROGRAMAS DECOMPILADORESRubnPilca
 
Emulador de ensamblador EMU8086.
Emulador de ensamblador EMU8086.Emulador de ensamblador EMU8086.
Emulador de ensamblador EMU8086.RubnPilca
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacionRubnPilca
 

Más de RubnPilca (9)

TALLER DE COMPILADORES (Flex y Bison).
TALLER DE COMPILADORES  (Flex y Bison). TALLER DE COMPILADORES  (Flex y Bison).
TALLER DE COMPILADORES (Flex y Bison).
 
Análisis sintáctico
Análisis sintácticoAnálisis sintáctico
Análisis sintáctico
 
Compilando un programa manualmente Java, C++, Visual Basic
Compilando un programa manualmente Java, C++, Visual BasicCompilando un programa manualmente Java, C++, Visual Basic
Compilando un programa manualmente Java, C++, Visual Basic
 
Fortran con el compilador Gfortran.
Fortran con el compilador Gfortran. Fortran con el compilador Gfortran.
Fortran con el compilador Gfortran.
 
Instalar compiladores cruzados
Instalar compiladores cruzadosInstalar compiladores cruzados
Instalar compiladores cruzados
 
Emsambladores
EmsambladoresEmsambladores
Emsambladores
 
PROGRAMAS DECOMPILADORES
PROGRAMAS DECOMPILADORESPROGRAMAS DECOMPILADORES
PROGRAMAS DECOMPILADORES
 
Emulador de ensamblador EMU8086.
Emulador de ensamblador EMU8086.Emulador de ensamblador EMU8086.
Emulador de ensamblador EMU8086.
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 

Último

R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Luis Olivera
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 

Último (20)

R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 

Investigación Ensambladores y Decompiladores

  • 1. Ejercicio 1 .1 .1: ¿Cuál es la diferencia entre un compilador y un intérprete? • Un intérprete traduce instrucciones de alto nivel en una forma intermedia para ser ejecutado. En contraste, un compilador, traduce instrucciones de alto nivel directamente en lenguaje de máquina. • El intérprete traduce un programa línea a línea mientras que el compilador traduce el programa entero y luego lo ejecuta. • El intérprete detecta si el programa tiene errores y permite su depuración durante el proceso de ejecución, mientras que el compilador espera hasta terminar la compilación de todo el programa para generar un informe de errores. • Un programa compilado es más seguro que uno interpretado, porque no contiene el código fuente, que puede ser modificado incorrectamente por el usuario. • Ambos, intérpretes y compiladores están disponibles en la mayoría de los lenguajes de alto nivel. Ejercicio 1 .1 .2: ¿Cuáles son las ventajas de (a) un compilador sobre un intérprete, y (b) las de un intérprete sobre un compilador? (a)Ventajas de un compilador sobre un intérprete:  Se compila una vez, se ejecuta n veces.  En bucles, la compilación genera código equivalente al bucle, pero interpretándolo se traduce tantas veces una línea como veces se repite el bucle.  El compilador tiene una visión global del programa, por lo que la información de mensajes de error es más detallada. Ventajas del intérprete frente al compilador:  Un intérprete necesita menos memoria que un compilador. En principio eran más abundantes dado que los ordenadores tenían poca memoria.  Permiten una mayor interactividad con el código en tiempo de desarrollo. (b) Ventajas del intérprete frente al compilador: • El programa se puede ejecutar de inmediato, sin esperar a ser compilado. • Puede ser interrumpido con facilidad. • Puede ser rápidamente modificado y ejecutado nuevamente. • Resultan muy apropiados durante la fase de desarrollo de un programa, ya que la compilación no permite la ejecución paso a paso del programa y con ello impide la edición seguimiento y depuración del programa. Ejercicio 1 .1 .3: ¿Qué ventajas hay para un sistema de procesamiento de lenguajes en el cual el compilador produce lenguaje ensamblador en vez de lenguaje máquina? • Velocidad El proceso de traducción que realizan los intérpretes, implica un proceso de cómputo adicional al que el programador quiere realizar. Por ello, nos encontraremos con que un intérprete es siempre más lento que realizar la misma acción en Lenguaje Ensamblador, simplemente porque tiene el costo adicional de estar traduciendo el programa, cada vez que lo ejecutamos.
  • 2. • Tamaño Los compiladores e intérpretes generan más código máquina del necesario; por ello, el programa ejecutable crece. Así, cuando es importante reducir el tamaño del ejecutable, mejorando el uso de la memoria y teniendo también beneficios en velocidad, puede convenir usar el lenguaje Ensamblador. Entre los programas que es crítico el uso mínimo de memoria, tenemos a los virus y manejadores de dispositivos (drivers). Muchos de ellos, por supuesto, están escritos en lenguaje Ensamblador. • Flexibilidad Las razones anteriores son cuestión de grado: podemos hacer las cosas en otro lenguaje, pero queremos hacerlas más eficientemente. Pero todos los lenguajes de alto nivel tienen limitantes en el control; al hacer abstracciones, limitan su propia capacidad. Es decir, existen tareas que la máquina puede hacer, pero que un lenguaje de alto nivel no permite. Por ejemplo, en Visual Basic no es posible cambiar la resolución del monitor a medio programa; es una limitante, impuesta por la abstracción del GUI Windows. En cambio, en ensamblador es sumamente sencillo, pues tenemos el acceso directo al hardware del monitor. Ejercicio 1 .1 .4: A un compilador que traduce un lenguaje de alto nivel a otro lenguaje de alto nivel se le llama traductor de source-to-source. ¿Qué ventajas hay en cuanto al uso de C como lenguaje destino para un compilador? Las ventajas de que C sea su lenguaje destino son las siguientes: • Es un lenguaje muy eficiente puesto que es posible utilizar sus características de bajo nivel para realizar implementaciones óptimas. • A pesar de su bajo nivel es el lenguaje más portado en existencia, habiendo compiladores para casi todos los sistemas conocidos. • Proporciona facilidades para realizar programas modulares y/o utilizar código o bibliotecas existentes. Ejercicio 1 .1 .5: Describa algunas de las tareas que necesita realizar un ensamblador. • Convertir los códigos (“opcode” o mnemónicos: ej. LDA, STX) a su código equivalente en lenguaje de máquina • Convertir los operandos simbólicos (las etiquetas o variables) en las direcciones correspondientes de los operandos • Construir las instrucciones en lenguaje de máquina en el formato apropiado • Convertir las constantes definidas en el programa en su verdadera representación • Escribir el “listing” en lenguaje de ensamblador con el código en lenguaje de máquina correspondiente • Procesar las directrices al ensamblador (las directrices son instrucciones o comandos dirigidos al ensamblador, que éste procesa y ejecuta al hallarlos en el programa en lenguaje de ensamblador; estas directrices no se traducen a lenguaje de máquina, si no que el ensamblador ejecuta alguna acción, como reservar memoria para variables, entre otras)
  • 3. JavaScript JavaScript es un lenguaje de programación que se utiliza principalmente para crear páginas web dinámicas. Una página web dinámica es aquella que incorpora efectos como texto que aparece y desaparece, animaciones, acciones que se activan al pulsar botones y ventanas con mensajes de aviso al usuario. Técnicamente, JavaScript es un lenguaje de programación interpretado, por lo que no es necesario compilar los programas para ejecutarlos. En otras palabras, los programas escritos con JavaScript se pueden probar directamente en cualquier navegador sin necesidad de procesos intermedios. A pesar de su nombre, JavaScript no guarda ninguna relación directa con el lenguaje de programación Java. Legalmente, JavaScript es una marca registrada de la empresa Sun Microsystems. Las acciones controladas por JavaScript pueden ser el despliegue de un menú, hacer aparecer, desaparecer o cambiar texto e imágenes, realizar cálculos y mostrar resultados, mostrar mensajes de aviso (por ejemplo, si faltan datos en un formulario) y “efectos animados” en general.
  • 4. Arquitectura de la plataforma .NET Framework Los programas de C# se ejecutan en .NET Framework, un componente integral de Windows que incluye un sistema de ejecución virtual llamado Common Language Runtime (CLR) y un conjunto unificado de bibliotecas de clases. El CLR es la implementación comercial de Microsoft de Common Language Infrastructure (CLI), un estándar internacional que es la base para la creación de entornos de ejecución y desarrollo en los que los lenguajes y las bibliotecas trabajan juntos sin problemas. El código fuente escrito en C# se compila en un lenguaje intermedio (IL) que guarda conformidad con la especificación de CLI. El código y los recursos IL, como mapas de bits y cadenas, se almacenan en disco en un archivo ejecutable denominado ensamblado, normalmente con la extensión .exe o .dll. Un ensamblado contiene un manifiesto que proporciona información sobre los tipos, la versión, la referencia cultural y los requisitos de seguridad del ensamblado. Cuando se ejecuta el programa de C#, el ensamblado se carga en el CLR, el cual podría realizar diversas acciones en función de la información en el manifiesto. Luego, si se cumplen los requisitos de seguridad, el CLR realiza la compilación Just in time (JIT) para convertir el código IL en instrucciones máquina nativas. El CLR también proporciona otros servicios relacionados con la recolección de elementos no utilizados, el control de excepciones y la administración de recursos. El código que se ejecuta en el CLR se conoce a veces como "código administrado", a diferencia del "código no administrado" que se compila en lenguaje de máquina nativo destinado a un sistema específico. En el siguiente diagrama se ilustran las relaciones de tiempo de compilación y tiempo de ejecución de archivos de código fuente de C#, las bibliotecas de clases de .NET Framework, los ensamblados y el CLR.
  • 5. ¿Qué es el procesamiento de lenguaje natural? El Procesamiento del Lenguaje Natural es el campo de conocimiento de la Inteligencia Artificial que se ocupa de la investigar la manera de comunicar las máquinas con las personas mediante el uso de lenguas naturales, como el español, el inglés o el chino. Virtualmente, cualquier lengua humana puede ser tratada por los ordenadores. Lógicamente, limitaciones de interés económico o práctico hace que solo las lenguas más habladas o utilizadas en el mundo digital tengan aplicaciones en uso. Las lenguas naturales pueden expresarse de forma oral (mediante la voz), escrita (un texto) o por signos. Obviamente, la expresión escrita está mucho más documentada y es más fácil de conseguir y tratar que la oral o el lenguaje de signos. Por lo tanto, el Procesamiento del Lenguaje Natural está mucho más avanzado en el tratamiento de textos escritos. En teoría, cualquier lengua humana puede ser interpretada y tratada por un ordenador, aunque esto en la práctica no se hace, dadas las limitaciones económicas o las escasas aplicaciones que tendría interpretar las más de 3.000 lenguas catalogadas existentes en el mundo. Modelos para procesamiento del lenguaje natural Tratar computacionalmente una lengua implica un proceso de modelización matemática. Los ordenadores solo entienden de bytes y dígitos y los informáticos codifican los programas empleando lenguajes de programación como C, Python o Java. Los lingüistas computacionales se encargan de la tarea de “preparar” el modelo lingüístico para que los ingenieros informáticos lo implementen en un código eficiente y funcional. Básicamente, existen dos aproximaciones generales al problema de la modelización lingüística: Modelos Lógicos: gramáticas Los lingüistas escriben reglas de reconocimiento de patrones estructurales, empleando un formalismo gramatical concreto. Estas reglas, en combinación con la información almacenada en diccionarios computacionales, definen los patrones que hay que reconocer para resolver la tarea (buscar información, traducir, etc.). Estos modelos lógicos pretenden reflejar la estructura lógica del lenguaje y surgen a partir de las teorías de N. Chomsky en los años 50. Modelos probabilísticos del lenguaje natural: basados en datos La aproximación es a la inversa: los lingüistas recogen colecciones de ejemplos y datos (corpus) y a partir de ellos se calculan las frecuencias de diferentes unidades lingüísticas (letras, palabras, oraciones) y su probabilidad de aparecer en un contexto determinado. Calculando esta probabilidad, se puede predecir cuál será la siguiente unidad en un contexto dado, sin necesidad de recurrir a reglas gramaticales explícitas.
  • 6. Es el paradigma de “aprendizaje automático” que se ha impuesto en las últimas décadas en Inteligencia Artificial: los algoritmos infieren las posibles respuestas a partir de los datos observados anteriormente en el corpus. Componentes del procesamiento del lenguaje natural A continuación, vemos algunos de los componentes del procesamiento del lenguaje natural. No todos los análisis que se describen se aplican en cualquier tarea de PLN, sino que depende del objetivo de la aplicación. 1. Análisis morfológico o léxico. Consiste en el análisis interno de las palabras que forman oraciones para extraer lemas, rasgos flexivos, unidades léxicas compuestas. Es esencial para la información básica: categoría sintáctica y significado léxico. 2. Análisis sintáctico. Consiste en el análisis de la estructura de las oraciones de acuerdo con el modelo gramatical empleado (lógico o estadístico). 3. Análisis semántico. Proporciona la interpretación de las oraciones, una vez eliminadas las ambigüedades morfosintácticas. 4. Análisis pragmático. Incorpora el análisis del contexto de uso a la interpretación final. Aquí se incluye el tratamiento del lenguaje figurado (metáfora e ironía) como el conocimiento del mundo específico necesario para entender un texto especializado. Un análisis morfológico, sintáctico, semántico o pragmático se aplicará dependiendo del objetivo de la aplicación. Por ejemplo, un conversor de texto a voz no necesita el análisis semántico o pragmático. Pero un sistema conversacional requiere información muy detallada del contexto y del dominio temático.
  • 7. Linkografia https://danielrodriguezmonroyvespertinocompiladores.wordpress.com/2012/01/13/tareas-que-realiza- un-lenguaje-ensamblador/ https://danielrodriguezmonroyvespertinocompiladores.wordpress.com/2012/01/13/que-ventajas-hay- en-cuanto-al-uso-de-c-como-lenguaje-destino-para-un-compilador/ https://danielrodriguezmonroyvespertinocompiladores.wordpress.com/2012/01/13/que-ventajas-hay- para-un-sistema-de-procesamiento-de-lenguajes-en-el-cual-el-compilador-produce-un-lenguaje- ensamblador-en-vez-de-un-lenguaje-maquina/ http://equipo5241v.blogspot.com/2010/05/comparacion-interpretes-y-compiladores.html http://www.cavsi.com/preguntasrespuestas/cual-es-la-diferencia-entre-interprete-y-compilador/ http://www.iic.uam.es/inteligencia/que-es-procesamiento-del-lenguaje-natural/ http://www.vicomtech.org/t4/e11/procesamiento-del-lenguaje-natural https://medium.com/@pharesdiego/javascript-un-lenguaje-compilado-o-interpretado-962ee405e123 https://uniwebsidad.com/libros/javascript/capitulo-1 https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=777:ique-es- javascript-principales-usos-servidor-y-cliente-html-css-y-programacion-efectos- cu01103e&catid=78&Itemid=206 https://docs.microsoft.com/es-es/dotnet/csharp/getting-started/introduction-to-the-csharp-language- and-the-net-framework