Desafortunadamente, las consecuencias del doble proceso de
interpretación involucrados en el uso de Convert (ya que Lisp generalmente
era interpretado) no se hicieron esperar. El tiempo de ejecución de
las primeras aplicaciones de Convert se vieron multiplicados por
un factor de mil. Para mejorar el rendimiento del lenguaje se
planteó la necesidad de compilarlo para evitar el doble proceso e
interpretación. Uno de estos intentos se esbozó y parcialmente desarrolló
en la tesis profesional de Raymundo Segovia.
Los principios de programación del lenguaje Convert se pueden
resumir en la programación descrita con ejemplos, esto es:
``si ves algo de esta naturaleza, identifica los elementos que los conforman
y sustitúyelos de esta otra manera''. En su definición concluyeron dos
deseos:
Un programa en Convert es una colección de reglas que se confrontan
con un texto hasta que alguna de ellas se le puede aplicar. Las reglas pueden
ser terminales o iterativas, estas últimas, reinician la confrontación del
texto.
Con patrones y esqueletos se forman las reglas de transformación en
Convert. Una regla consiste de un patrón y su esqueleto. Al confrontar la
regla con el texto, se intenta el ajuste del patrón, si la correspondencia
se verifica, el texto se transforma de acuerdo con el esqueleto.
Los patrones se clasifican en simples o compuestos. Los patrones simples
pueden ser constantes o variables. Los primeros son secuencias de símbolos
que se indican textualmente, los variables deben marcarse para distinguirlos
entre los constantes.
La manera de marcar los patrones variables, depende del medio en que se
describe el programa. En forma manual se puede emplear letra cursiva, o el
recurso del subrayado. Pero en una computadora es más conveniente el uso de
símbolos especiales para este propósito. En Convert se emplean
los paréntesis angulares para distinguir a los patrones variables de los
constantes.
Los patrones compuestos se obtienen a partir de otros patrones por medio
de la composición (concatenación), de las combinaciones lógicas y del
uso de funciones, en este acto, con el empleo de una notación que
utiliza paréntesis redondos para indicar el nombre de la función y sus
argumentos.
Un texto corresponde con un patrón cuando los elementos de ajuste incluídos en el patrón permiten establecer la correspondencia del patrón con el texto. En este proceso, se utiliza la flexibilidad que aportan los elementos variables del patrón, ya que con los elementos constantes, la correspondencia debe ser literal.
Cuando se establece la correspondencia del texto con el patrón, los
elementos variables del patrón adquieren una definición que se emplea para
transformar el texto original, sustituyendo las definiciones de los elementos
variables del patrón en el esqueleto asociado.
Un esqueleto puede ser simple o compuesto. Los esqueletos simples son
constantes o variables, en este último caso, la referencia es al valor de
la variable. Como en el caso de los patrones, los esqueletos compuestos, se
obtienen a partir de otros por concatenación y con el uso de funciones
que se denotan en la misma forma con el uso de paréntesis redondos.
En Convert, el usuario puede definir patrones y esqueletos
complejos y referirlos por medio de un identificador para abreviar la
descripción de las reglas. En realidad, un programa consiste de cuatro elementos, la definición de PATRONES, ESQUELETOS, VARIABLES y REGLAS.
La forma de notación para las diferentes instancias del lenguaje, variables,
funciones y combinaciones lógicas son algunos de los elementos que le
imprimen al programa en Convert su aspecto característico.
Los lenguajes orientados al manejo de símbolos tradicionalmente han
adolecido de programas para realizar aritmética y para manejar arreglos,
Convert no fue tampoco la excepción. No obstante ofrece algunas ventajas
para la manipulación de símbolos. Algunas de sus principales
aplicaciones se citan a continuación: