Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TEMA 2: LENGUAJES
Al inicio de la computación, hablar de “lenguajes de programación” resultaba
confuso y hasta superfluo. En efecto, la programación de los primeros
computadores se reducía a conectar alambres y era percibida de una manera muy
similar a la forma como se opera un aparato mecánico. Luego, mediante el
concepto de programa almacenado, la programación avanzó un salto cuántico. Sin
embargo, a pesar de que los programas y datos ya residían en la memoria del
computador y permitían un proceso de programación más ágil y flexible, los
lenguajes de programación aún resultaban demasiado simples para requerir de
una sustentación teórica de tipo matemático. En esos albores de la computación,
los primeros lenguajes eran del tipo que hoy se denominan de “nivel bajo”, es decir
virtualmente idénticos a los lenguajes máquina. No fue sino posteriormente, que
se empezó a gestar la idea de desarrollar un lenguaje de “nivel alto”, por medio del
que se escribieran programas de computación que resultaran fáciles de entender,
en un estilo parecido a los idiomas humanos y, sobre todo, independientes del
lenguaje máquina.
1
Curso de Informática III; Notas de Clase; Dr. Cyrano Ruiz Cabarrús, Ph.D.
Morse. En la segunda clase pueden incluirse, por citar un par de ejemplos, los
mismos lenguajes de programación o las secuencias genéticas de los genomas.
En esta última categoría de lenguajes, el propósito de su empleo no es
precisamente el de comunicación sino que el de codificar información que permita
generar programas o seres vivientes que interactúen con su entorno y de
determinada manera.
Para los propósitos de este libro, las dos dimensiones de un lenguaje se definen
de la siguiente forma:
2
Curso de Informática III; Notas de Clase; Dr. Cyrano Ruiz Cabarrús, Ph.D.
ALFABETOS
1
En todo el libro, el término “máquina” deberá ser interpretado en un sentido matemático y no
físico. En otras palabras, en el contexto de la Teoría Matemática de la Computación, una
“máquina” no es otra cosa que un modelo abstracto cuyas reglas de construcción y operación
permiten determinar si una oración pertenece o no a un lenguaje.
3
Curso de Informática III; Notas de Clase; Dr. Cyrano Ruiz Cabarrús, Ph.D.
CUERDAS
Dado un alfabeto Σ, una cuerda se define como una secuencia, es decir una
yuxtaposición, arbitrariamente larga, de letras de ese alfabeto. Por necesidades
teóricas, se postula también la existencia de la secuencia nula o “cuerda nula”
representada por λ (que algunos autores denominan ε) y que para fines prácticos
podrá ser conceptuada como una cuerda de longitud cero, es decir una cuerda sin
letras.
2
Alternativamente, se puede definir más formalmente la noción de cuerda. Para esto se definen en
forma recursiva los conjuntos: A0 = ∅, An = An-1 ∪ { n } para todo entero natural n ≥ 1 (es decir, An =
{1, 2, 3, ....., n}). Tomando esto como base, se procede a definir una secuencia como una función
de un conjunto Ai sobre Σ. El formalismo matemático de esta definición resulta excesivo e
innecesario para los propósitos del presente libro.
4
Curso de Informática III; Notas de Clase; Dr. Cyrano Ruiz Cabarrús, Ph.D.
En el fondo, la Biblioteca de Babel imaginada por Borges resulta ser una vívida
ilustración de los alcances de la definición de la clausura de Kleene de un alfabeto
cualquiera.
3
El nombre de Kleene se deriva del matemático Stephen Cole Kleene, discípulo de Church y
responsable de importantes avances en la Lógica Matemática. Por otra parte, puede comprobarse
en forma directa que la clausura de un lenguaje junto con la operación de concatenación entre
cuerdas constituye una estructura algebraica conocida como monoide o semigrupo.
5
Curso de Informática III; Notas de Clase; Dr. Cyrano Ruiz Cabarrús, Ph.D.
a. λR = λ
b. (wa)R = awR
Para toda cuerda w y para toda letra a del alfabeto. La primera parte
corresponde al caso base, la segunda, al paso inductivo.
a. |λ| = 0
b. |aw| = |w| + 1
i. w0 = λ.
ii. Wn+1 = wnw
4
Sin embargo, la concatenación sí es una operación asociativa, cuyo elemento neutro
es la cuerda nula. Por esa razón, se indicó anteriormente que la clausura de Kleene,
junto con la concatenación constituyen una estructura algebraica conocida como
monoide o semi-grupo.
6
Curso de Informática III; Notas de Clase; Dr. Cyrano Ruiz Cabarrús, Ph.D.
LENGUAJES
Debido a que los lenguajes son conjuntos en sí, se pueden definir las operaciones
de conjuntos usuales entre lenguajes. Cuando existe más de una operación entre
dos o más lenguajes, se establece una jerarquía u orden natural en la ejecución
de dichas operaciones. La potenciación tiene la mayor jerarquía, seguida de la
concatenación y la unión. Las operaciones entre paréntesis rompen cualquier
precedencia entre las operaciones.
5
El concepto de subsecuencia juega un papel importante en algoritmos genéticos en donde se
define la “proximidad” de dos fragmentos de genoma sobre la base de la Máxima Común
Subsecuencia (MCS) entre dos fragmentos genéticos. Existen algoritmos complejos pero muy
eficientes que calculan la MCS. El estudio de tales algoritmos cae fuera del alcance de este texto.
7
Curso de Informática III; Notas de Clase; Dr. Cyrano Ruiz Cabarrús, Ph.D.
L ∪ M = {w ∈ Σ* | w ∈ L o w ∈ M }
Ln = {w ∈ Σ* | ∃x ∈ L ∋ w = x n }
∞
L* = U Li
i =0
L+ = L * −{λ}
EJEMPLOS
1. Si Σ = { a, b}, entonces:
8
Curso de Informática III; Notas de Clase; Dr. Cyrano Ruiz Cabarrús, Ph.D.