Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tarea parcial I
Ingeniería en Computación
ESTRUCTURA DE UN COMPILADOR:
Otra forma alternativa de estructurar las fases de las que se compone un compilador
es distinguiendo entre: front-end, parte en la que se analiza el código, se comprueba
su validez, se genera el árbol de derivación y se rellena la tabla de símbolos; y backend,
donde se genera el código máquina.
Compiladores de una sola pasada: generan el código máquina a partir de una única lectura del
código fuente.
Compiladores de varias pasadas: necesitan leer el código fuente varias veces antes de poder
producir el código máquina.
Compiladores JIT (Just In Time): forman parte de un intérprete y compilan partes del código
según se necesitan.
Auto compilador: Compilador que está escrito en el mismo lenguaje que va a compilar.
Meta compilador: Es programa que recibe como entrada las especificaciones del lenguaje para
el que se desea obtener un compilador y genera como salida el compilador para ese lenguaje.
LENGUAJE: El concepto de lenguaje puede ser entendido como un recurso que hace posible
la comunicación. En el caso de los seres humanos, esta herramienta se encuentra
extremadamente desarrollada y es mucho más avanzada que en otras especies animales, ya
que se trata de un proceso de raíces fisiológicas y psíquicas. El lenguaje, como sabrán muchos
de ustedes, le brinda la posibilidad al hombre de seleccionar, citar, coordinar y combinar
conceptos de diversa complejidad.
TIPOS DE LENGUAJES:
Lenguaje natural
El lenguaje natural es el tipo de lenguaje que utilizamos en nuestro día a día, de forma
espontánea y sin prepararlo previamente. Es decir, es el modo en el que nos expresamos de
forma natural.
Lenguaje artificial
En el lado opuesto tenemos el considerado como lenguaje artificial, que se diferencia del
natural por el hecho de que este lenguaje está preparado previamente, es decir, no sale de
forma natural, sino que requiere una preparación y organización previas.
Lenguaje literario
El lenguaje literario es el tipo de lenguaje que es utilizado por los escritores, y dependiendo de
cada caso puede presentar múltiples variaciones en función del público objetivo, haciendo uso
en muchos casos de tecnicismos orientados a los conocedores de una determinada materia.
Por otra parte tenemos el lenguaje científico que se basa en aquel que es utilizado dentro de
un núcleo cerrado de profesionales, consiguiendo de esta forma mejorar la comunicación
siempre orientada al conocimiento del campo en cuestión.
Dentro de este tipo de lenguaje podemos encontrar algunas variedades como el lenguaje
matemático y el lenguaje de programación entre otros diversos.
Lenguaje matemático
Lenguaje de programación
Se trata de un tipo de lenguaje artificial, literario, científico y técnico que es utilizado con el
objetivo de establecer una comunicación con ordenadores y otros sistemas informáticos.
Lenguaje formal
Por otra parte tenemos el lenguaje formal que es el utilizado para comunicarse dentro de
grupos en los que prima la formalidad en la comunicación, ya sean grupos académicos o
grupos profesionales.
FORMAS DE REPRESENTAR UN LENGUAJE : Los algoritmos pueden ser expresados de
muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes
de programación entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y
extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje
natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no
obstante, se mantienen independientes de un lenguaje de programación específico.
Descripción formal. Se usa pseudocódigo para describir la secuencia de pasos que encuentran
la solución.
También es posible incluir un teorema que demuestre que el algoritmo es correcto, un análisis
de complejidad o ambos.
Lenguaje natural
Son aquellas lenguas que han sido generadas espontáneamente en un grupo de hablantes con
propósito de comunicarse, a diferencia de otras lenguas, como puedan ser una lengua
construida, los lenguajes de programación o los lenguajes formales usados en el estudio de la
lógica formal, especialmente la lógica matemática.
Los algoritmos escritos en este lenguaje se caracterizan por seguir un proceso de ejecución
común y lógico, describiendo textualmente paso a paso cada una de las actividades a realizar
para resolver un problema determinado.
Pseudocódigo
Es una descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural
con algunas convenciones sintácticas propias de lenguajes de programación, como
asignaciones, ciclos y condicionales, aunque no está regido por ningún estándar. Es utilizado
para describir algoritmos en libros y publicaciones científicas, y como producto intermedio
durante el desarrollo de un algoritmo, como los diagramas de flujo, aunque presentan una
ventaja importante sobre estos, y es que los algoritmos descritos en pseudocódigo requieren
menos espacio para representar instrucciones complejas.
Diagramas de Flujo
Son descripciones gráficas de algoritmos; usan símbolos conectados con flechas para indicar la
secuencia de instrucciones y están regidos por ISO.
Los diagramas de flujo son usados para representar algoritmos pequeños, ya que abarcan
mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son usados como
introducción a los algoritmos, descripción de un lenguaje y descripción de procesos a personas
ajenas a la computación.
Los diagramas estructurados, son una técnica que permite formular algoritmos mediante una
representación geométrica y de asignación de espacios de un bloque específico.
La gramática, por lo tanto, se puede definir como el grupo de principios, reglas y preceptos que
rigen el empleo de un lenguaje en particular (al respecto, hay que decir que cada lenguaje
posee su propia gramática). Como ciencia, está contemplada como parte de la lingüística.
SINTAXIS: Se trata de la rama de la gramática que ofrece pautas creadas para saber cómo unir
y relacionar palabras a fin de elaborar oraciones y expresar conceptos de modo coherente. En
la informática, la sintaxis se entiende como el grupo de normas que marcan las secuencias
correctas de los elementos propios de un lenguaje de programación.
Existen palabras adoptadas de otras lenguas, es lo que se denomina calco semántico. Por otro
lado, la ciencia semiótica se encarga de estudiar los signos, sus relaciones y significado.
Análisis semántico.
Partes de un compilador.
Tipos de compiladores.
El lenguaje Java es un derivado del lenguaje C, por lo que sus reglas de sintaxis se parecen
mucho a C: por ejemplo, los bloques de códigos se modularizan en métodos y se delimitan con
llaves ({ y }) y las variables se declaran antes de que se usen.
Cuando usted programa para la plataforma Java, escribe el código de origen en archivos .java y
luego los compila. El compilador verifica su código con las reglas de sintaxis del lenguaje, luego
escribe los códigos byte en archivos .class. Los códigos byte son instrucciones estándar
destinadas a ejecutarse en una Java Virtual Machine (JVM). Al agregar este nivel de
abstracción, el compilador Java difiere de los otros compiladores de lenguaje, que escriben
instrucciones apropiadas para el chipset de la CPU en el que el programa se ejecutará.
Al momento de la ejecución, la JVM lee e interpreta archivos .class y ejecuta las instrucciones
del programa en la plataforma de hardware nativo para la que se escribió la JVM. La JVM
interpreta los códigos byte del mismo modo en que una CPU interpretaría las instrucciones del
lenguaje del conjunto. La diferencia es que la JVM es un software escrito específicamente para
una plataforma particular. La JVM es el corazón del principio "escrito una vez, ejecutado en
cualquier lugar" del lenguaje Java. Su código se puede ejecutar en cualquier chipset para el
cual una implementación apropiada de la JVM está disponible. Las JVM están disponibles para
plataformas principales como Linux y Windows y se han implementado subconjuntos del
lenguaje Java en las JVM para teléfonos móviles y aficionados de chips.
El lenguaje C y Python
En términos de paradigmas de programación, C y Python pueden ser clasificados como
lenguajes procedurales, y como tales comparten muchos de sus componentes fundamentales:
expresiones, variables, sentencias, condicionales, ciclos, funciones, etcétera.
Sintácticamente, ambos lenguajes se ven diferentes a simple vista, pero veremos que muchas
de las diferencias son sólo cosméticas:
es_primo = True
if n % d == 0:
es_primo = False
break
es_primo = 1;
if (n % d == 0) {
es_primo = 0;
break;
Más allá de las diferencias visibles en el código, ambos lenguajes son fundamentalmente
diferentes en la manera que usan los recursos del computador. Estas diferencias no son
apreciables con sólo mirar el código, sino que deben ser comprendidas desde el principio. La
imagen mental que uno se forma sobre el programa que está escribiendo es mucho más
importante al programar en C que en Python.
Cuando programamos en Python, en cierto modo estamos haciendo trampa. El código Python
no es ejecutado físicamente por el computador, sino por un intérprete, que es el programa
que ejecuta los programas. El lenguaje C permite hacer «menos trampa», ya que sí es un
medio para dar instrucciones al procesador.
C y Python son lenguajes tales, pero difieren en la forma en que son ejecutados. Python es un
lenguaje pensado para ser interpretado, mientras que C debe ser compilado.
Microsoft Visual Studio, IDE por excelencia de este lenguaje, versión 2002, 2003, 2005, 2008 y
2010(beta).
Lenguaje C++
C++ es un lenguaje imperativo orientado a objetos derivado del C. En realidad un súper
conjunto de C, que nació para añadirle cualidades y características de las que carecía. El
resultado es que como su ancestro, sigue muy ligado al hardware subyacente, manteniendo
una considerable potencia para programación a bajo nivel, pero se la han añadido elementos
que le permiten también un estilo de programación con alto nivel de abstracción.
Estrictamente hablando, C no es un subconjunto de C++; de hecho es posible escribir código C
que es ilegal en C++. Pero a efectos prácticos, dado el esfuerzo de compatibilidad desplegado
en su diseño, puede considerarse que C++ es una extensión del C clásico. La definición "oficial"
del lenguaje nos dice que C++ es un lenguaje de propósito general basado en el C, al que se
han añadido nuevos tipos de datos, clases, plantillas, mecanismo de excepciones, sistema de
espacios de nombres, funciones inline, sobrecarga de operadores, referencias, operadores
para manejo de memoria persistente, y algunas utilidades adicionales de librería (en realidad
la librería Estándar C es un subconjunto de la librería C++)
El los lenguajes compilados el proceso de traducción sólo se hace una vez. El programa
compilador toma como entrada el código fuente del programa, y da como salida un fichero
que puede ser ejecutado por el ordenador directamente. Una vez compilado, el programa
ejecutable es autónomo, y ya no es necesario disponer del programa original ni del compilador
para ejecutarlo. Cada opción tiene sus ventajas e inconvenientes, y algunas características que
son consideradas una ventaja, pueden ser un inconveniente en ciertas circunstancias, y
viceversa.
Los lenguajes interpretados son fácilmente modificables, ya que necesitamos tener el
código fuente disponible en el ordenador. En los compilados, estos ficheros no son
necesarios, una vez compilados.
Los lenguajes interpretados necesitan un programa externo, llamado intérprete o a
veces máquina virtual, o framework. Este programa actúa como intermediario entre la
fuente y el sistema operativo. En los compilados ese papel lo desempeña el
compilador, pero al contrario que con el intérprete, una vez ha hecho su trabajo, no es
necesario que esté presente para ejecutar el programa.
Estas dos características, lógicamente, hacen que los programas compilados requieran
menos espacio de memoria que los interpretados (si contamos el espacio usado por el
intérprete), y en general, los compilados son más rápidos, ya que sólo se compilan una
vez, y el tiempo dedicado a esa tarea no se suma al de ejecución.
Autoevaluación
Trabajo Evaluado 4
Información de internet 5
Presentación 5
Originalidad 5
Desempeño 5
Trabajo completo 5
Segunda tarea
CODIFICACIÓN: Codificación es el proceso de conversión en símbolos de una determinada
información con el fin de ser comunicada, y a efectos de ser entendida por el receptor,
aplicando las reglas de un código predeterminado. Es decir que en la codificación el emisor
convierte sus ideas en signos que sean fácilmente comprendidos por quienes reciben la
información. En el proceso comunicacional, el emisor de un mensaje es la persona que
comunica la información a otra persona o receptor, que es quien recibe dicha información.
Los signos lingüísticos o fonéticos transmitidos en el mensaje (codificación), son asociados por
parte del receptor a la idea que se quiso transmitir, interpretando los signos empleados
(decodificación) con representaciones mentales vinculadas a la idea que se transmite (hola,
por ejemplo, es decodificado como saludo).
Una manera alternativa para establecer la producción de una gramática es usar esta forma, los
símbolos no terminales suele comenzar con "<" y terminar con ">". La producción S->T se
escribe S::=T.
S::=T1|T2|...|Tn.
TIPOS DE METASÍMBOLOS:
| Metasímbolo de alternativa. Indica que puede elegirse uno y sólo uno de los elementos
separados por este metasímbolo.
{} Metasímbolos de repetición. Indican que los elementos incluidos dentro de ellos se
pueden repetir cero o más veces.
[] Metasímbolos de opción. Indican que los elementos incluidos dentro de ellos pueden ser
utilizados o no.
Reglas:
Las reglas son normativas o preceptos que deben respetarse. Lo habitual es que las reglas
surjan por un acuerdo o convenio y que, una vez instauradas, sean de cumplimiento
obligatorio: “La sanción es correcta ya que el jugador tocó el balón con la mano y, por lo tanto,
violó una regla esencial de este juego”, “¿Cómo se te ocurre venir vestido de esta forma? ¿No
has leído las reglas de vestimenta de esta empresa?”, “La regla del concurso indica que está
prohibido presentar obras manuscritas”.
Trabajó en filología y dos años después de haber publicado su tesis o Mémoire fue profesor de
Sánscrito y de Gramática comparada en la Universidad de Ginebra.
El sistema de signos que es la lengua debe estudiarse dentro de una ciencia general,
la semiología, que abarca toda la teoría de los signos. Diseña el signo lingüístico como la
unidad de la lengua que tiene dos caras, el significante, esto es, los sonidos y las formas de las
palabras, y el significado, lo que esos sonidos y palabras significan dentro y sólo dentro del
sistema que es la lengua. Con él se fundamenta la fonología, que otros desarrollarán después.
Hijo mayor de William Chomsky, un distinguido erudito judío Ashkenazi nacido en Ucrania que
escapó a los Estados Unidos en 1913. Su madre fue la bielorrusa Elsie Simonofsky.
Su hermano menor, David Eli Chomsky, nació cinco años después que él. Fueron criados en un
ambiente judío, aprendieron hebreo y a debatir las teorías políticas de sionismo; ya que su
familia estaba influenciada por sionistas de izquierda como Ahad Haam.
Cursó estudios en la universidad de Pennsylvania, donde recibió las influencias de Zellig Harris.
Doctorado en 1951, pasó cuatro años en Harvard (1951-55), mas adelante se trasladó a la
universidad de Pennsylvania (1955).
La teoría de Chomsky sugiere que cada elocución humana tiene dos estructuras: estructura
superficial, el combinar superficial de las palabras, y de la "estructura profunda" que son reglas
y mecanismos universales. En términos más prácticos, la teoría discute que los medios para
adquirir un lenguaje sean naturales en todos los seres humanos y están accionados tan pronto
como un niño comienza a aprender los fundamentos de un lenguaje.
Activista político, se caracterizó por sus críticas al capitalismo y a la política exterior de los
Estados Unidos. En 1967, hizo su incursión en el activismo político con la oposición a la
participación de Estados Unidos en la guerra de Vietnam y obteniendo reconocimiento gracias
a su ensayo The Responsibility of Intellectuals. Asociado con la New Left, fue arrestado en
varias ocasiones por su activismo contra la guerra. Chomsky desarrolló un modelo de
propaganda crítica en los medios junto a Edward S. Herman. Tras retirase de la enseñanza,
continuó con su activismo dando su apoyo a Occupy y otros movimientos.
Estuvo casado con Carol Schatz Doris desde 1949 hasta su muerte en 2008. Tuvieron tres hijos:
Aviva, Diane, y Harry. En 2014, se casó con Valeria Wasserman.
Obras seleccionadas:
Lingüística
1986 — Barriers
Diría que la principal diferencia se encuentra en que para De Saussure, la lengua es una
realidad externa y objetiva, que tiene su expresión en el signo lingüístico (entidad biplánica de
significado - significante), esta es su unidad de análisis.
Creo, que no he sido clara. Pero como dije es muy largo y difícil de explicar. Lo mejor que
puedes hacer es leer para Ferdinand de Saussure: Curso de lingüística General.
Noam Chomsky, con posterioridad a Saussure, al analizar el lenguaje habla de dos conceptos
nuevos, competence (competencia) y performance (actuación). Chomsky dice que no entiende
qué es la langue saussureana. Chomsky para superar las limitaciones que él encuentra en la
teoría estructuralista de Saussure, crea una nueva teoría, fundamentada en que la lengua-
lenguaje es un proceso de la mente del hablante, donde éste tiene una capacidad innata
(genética) para adquirir y usar una lengua, la competencia. Es un proceso que es inconsciente.
La competencia le da al ser humano la capacidad virtual de producir y/o comprender un
número indefinido de frases de una lengua.
La actuación (performance) para Chomsky es el uso real por parte del hablante de la lengua en
situaciones concretas. Es el acto particular de producción o interpretación de un enunciado, en
función de la competencia. Es la manifestación del saber lingüístico en los actos del hablar. En
definitiva, meramente empírica.
Respecto al habla y a la actuación, ambos teóricos los consideran actos del individuo, donde se
concreta el saber lingüístico en un momento determinado. Coinciden ambos en no considerar
excesivamente relevantes ambos conceptos.
Autoevaluación
Trabajo Evaluado 4
Información de internet 5
Presentación 5
Originalidad 5
Desempeño 5
Trabajo completo 4
Conclusión