Está en la página 1de 4

Taller # 2

Materia: Compiladores
Temas: Compiladores, interpretes, tokens, expresiones regulares
Estudiante: Dagoberto Angulo J
Docente: Luis Cardozo

Lenguajes compilados
Un compilador es, a grandes rasgos, un traductor. Es el encargado de transformar el código fuente
del programa que hemos creado (generalmente usando un lenguaje de alto nivel), junto con todas
las dependencias y librerías necesarias para que el programa pueda ejecutarse y funcionar sin
problemas, en un archivo binario. Este compilador se encarga de comprobar que no hay errores en
el código (para evitar fallos críticos), así como de analizar y agrupar la sintaxis y la estructura del
programa. Si todo está correcto, lo pasa a un lenguaje intermedio común, ensamblador, para,
posteriormente, optimizarlo y traducirlo a lenguaje binario. De esta manera, a través del sistema
operativo, el programa se puede ejecutar en la máquina.

lenguajes interpretados
En ciencias de la computación, intérprete o interpretador es un programa informático capaz de
analizar y ejecutar otros programas. Los intérpretes se diferencian de los compiladores o de los
ensambladores en que mientras estos traducen un programa desde su descripción en un lenguaje de
programación al código de máquina del sistema, los intérpretes solo realizan la traducción a medida
que sea necesaria, típicamente, instrucción por instrucción, y normalmente no guardan el resultado
de dicha traducción.
Los programas interpretados suelen ser más lentos que los compilados debido a la necesidad de
traducir el programa mientras se ejecuta, pero a cambio son más flexibles como entornos de
programación y depuración (lo que se traduce, por ejemplo, en una mayor facilidad para reemplazar
partes enteras del programa o añadir módulos completamente nuevos), y permiten ofrecer al
programa interpretado un entorno no dependiente de la máquina donde se ejecuta el intérprete, sino
del propio intérprete (lo que se conoce comúnmente como máquina virtual).
Tokens
Así, un token puede ser una palabra, una sub-palabra (es decir una parte de una palabra) o por
ejemplo un signo de puntuación. Es decir que la codificación con tokens es un punto intermedio
entre la codificación a nivel de caracteres y la codificación a nivel de palabra de la que hablamos
hace un momento.
Entendamos este concepto con algunos ejemplos.
La palabra “una” es tokenizada (es decir convertida a tokens) como “una”, es decir es exactamente
igual a 1 token.
Pero la palabra “puntos” es tokenizada con 2 tokens: “punt” y “os”. Y esto se debe a que la
secuencia de caracteres “punt” aparece en varias palabras del Español y por tanto, por ser
relativamente común, se codifica como un sólo token.
Por ejemplo, podemos encontrar las palabras puntillas y puntapié que tienen exactamente la misma
secuencia inicial de caracteres “p”, “u”, “n” y “t”.
Así, dependiendo del lenguaje y de la palabra en particular, un token puede ser exactamente una
palabra o una porción de una palabra.

La importancia de los tokens en los Grandes Modelos de Lenguaje


Y entender este concepto de tokens resulta esencial para poder usar los diferentes Grandes Modelos
de Lenguaje disponibles.
El límite máximo de tokens
La primera razón es que estos modelos tienen un límite máximo de tokens de entrada y de salida.
Por ejemplo, ChatGPT, que se basa en el modelo GPT-3.5 turbo de OpenAI, tiene un límite de 4.096
tokens. Esto quiere decir que si sumamos los tokens de entrada y de salida al momento de usar la
aplicación el valor máximo será precisamente 4.096.
Para entender esto asumamos que tenemos un texto en Español de 25.000 caracteres a la entrada de
ChatGPT. Como en promedio en el Español 1 token equivale aproximadamente a 9 caracteres, el
texto en mención tendrá aproximadamente 25.000/9 = 2.800 tokens.
Por tanto, a la salida la aplicación podrá generar máximo 4.096 - 2.800 = 1.296 tokens, es decir
unos 1.296 x 9 = 11.600 caracteres.
Expresiones regulares
Una expresión regular es un modelo con el que el motor de expresiones regulares intenta buscar una
coincidencia en el texto de entrada. Un modelo consta de uno o más literales de carácter, operadores
o estructuras.
Cada sección de esta referencia rápida enumera una categoría determinada de caracteres, operadores
y construcciones que puede usar para definir expresiones regulares.
Ejemplo:
Así se utilizan las expresiones regulares en JavaScript
Una expresión regular usa caracteres y metacaracteres para definir, de forma abierta, patrones
concretos en cadenas de texto. Esos caracteres, combinados unos con otros de forma especial,
permiten extraer patrones o elementos concretos de esas cadenas para buscar o manipular el texto
(identificadores, correos electrónicos…). En el caso de JavaScript, hay dos tipos de expresiones
regulares:
Expresiones regulares mediante una cadena literal para encontrar un patrón: para ello se usa el
constructor de objeto RegExp. Para crear un literal RegExp se utiliza esta expresión: var re =
/regular expression/;. El patrón de expresión regular se encuentra entre la apertura y el cierre de las
barras diagonales, una estructura que suele ser habitual y obligatoria.

- Expresiones regulares de aplicación en varias cadena: expReg.test(cadena). Si existe


coincidencia, se devuelve true; y si no existe una coincidencia ente la expresión y un
posible patrón, se devuelve false.

Algunos elementos esenciales para hacer expresiones regulares en JavaScript:


- [A-Z]: cualquier carácter entre la A mayúscula y la Z mayúscula.
- {1,2}: uno o dos caracteres.
- \s: un espacio en blanco.
- \d: un dígito.
- {4}: cuatro dígitos.
- \s: un espacio en blanco.
- ([B-D]|[F-H]|[J-N]|[P-T]|[V-Z]): cualquier carácter entre la B mayúscula y la Z
mayúscula, excepto las vocales.
- {3}: tres caracteres.
- $: el emparejamiento se debe realizar hasta el final de la cadena.

Referencias:
https://www.softzone.es/programas/lenguajes/que-es-compilador/
https://es.wikipedia.org/wiki/Int%C3%A9rprete_(inform%C3%A1tica)
https://www.codificandobits.com/blog/tokens-y-llms/#qu%C3%A9-son-los-tokens

También podría gustarte