Capítulo 8: Ejemplos y otras tecnologías
Hay miles de ejemplos que se pueden hacer con esta tecnología. Es tan sencillo como coger un ejemplo cualquiera de otro lenguaje y ver cómo se escribiría en STxT. Quizá lo más simple sea un ejemplo que venga de XML, ya que tienen muchos paralelismos con STxT
Muchos ejemplos los he obtenido de Wikipedia.
Un ejemplo (inventado) de xml sería:
<Library> <Book id="1"> <Title>The Fellowship of the Ring</Title> <Author>J.R.R. Tolkien</Author> <Language>EN</Language> <Published>29 July 1954</Published> <Genre>High fantasy Adventure</Genre> </Book> <Book id="2"> <Title>The Two Towers</Title> <Author>J.R.R. Tolkien</Author> <ISBN>76542</ISBN> <Language>EN</Language> <Published>11 November 1954</Published> <Genre>High fantasy Adventure</Genre> </Book> <Book id="3"> <Title>The Return of the King</Title> <Author>J.R.R. Tolkien</Author> <ISBN>12345</ISBN> <Language>EN</Language> <Published>20 October 1955</Published> <Genre>High fantasy Adventure</Genre> </Book> </Library>
Lo mismo pasado a STxT:
Library (www.examples.com/demo.stxt): Book: id: 1 Title: The Fellowship of the Ring Author: J.R.R. Tolkien Language: EN Published: 29 July 1954 Genre: High fantasy Adventure Book: id: 2 Title: The Two Towers Author: J.R.R. Tolkien ISBN: 76542 Language: EN Published: 11 November 1954 Genre: High fantasy Adventure Book: id: 3 Title: The Return of the King Author: J.R.R. Tolkien ISBN: 12345 Language: EN Published: 20 October 1955 Genre: High fantasy Adventure
Otro ejemplo en XML:
<email> <from>John Smith</from> <to>Mery Adams</to> <cc>Keyla Brown<cc> <title>Project report</title> <body>Hello Mery!! The book is finished!!</body> </email>
En STxT se transforma en:
Email (www.example.com/email.stxt): From: John Smith To: Mery Adams Cc: Keyla Brown Title: Project report Body: Hello Mery!! The book is finished!!
Vemos que la conversión entre los 2 formatos es instantánea, aunque mucho más bonito el STxT.
Por cierto, hay un capítulo oculto, STXT y XML, por si lo queréis leer. Lo hice en 2013 y es... curioso. Leer bajo vuestra responsabilidad ;-)
Wikipedia (*)
Tengo gran admiración por la wikipedia. Creo que es uno de los mejores proyectos que se han creado en Internet.
¿Como se podría beneficiar de STxT?
Bien, la wikipedia podría tener plantillas diferentes: actores, políticos, serie tv, película, ciudades, países, ríos,... compartiendo gramáticas en muchos casos. Por ejemplo, tanto actores como políticos pueden tener biografía, pero los actores también tendrían un listado de películas.
Además, sería muy interesante la mezcla de STxT con el lenguaje propio de la wikipedia. Creo que éste es un punto en el que STxT gana a la mayoría de lenguajes. La mezcla con los llamados "lightweight markup languajes" es realmente espectacular.
Así, se pueden hacer textos mixtos del estilo:
City (www.wikipedia.org/city.stxt): Name: Barcelona Autonomous Community: Catalonia Country: Spain History: {{Main|History of Barcelona}} The founding of Barcelona is the subject of two different legends. The first attributes the founding of the city to the mythological [[Hercules]]. The second legend attributes the foundation of the city directly to the historical [[Carthage|Carthaginian]] [[Hamilcar Barca]], father of [[Hannibal]], who named the city ''Barcino'' after his family in the 3rd century BC. ...
Otra ventaja es que con STxT no solamente tendríamos "plantillas" de cómo debe ser la información de una ciudad, sino que también podríamos aplicar estilos y formatos dependiendo del tipo de documento.
STxT y otras tecnologías
Lightweight markup language
Los lenguajes ligeros de marcado han tenido un auge espectacular gracias a proyectos como la Wikipedia. Gracias a ellos se puede definir texto de forma mucho más simple que teniendo que escribir etiquetas como HTML. Pero tienen una gran carencia: No tienen una estructura ni una semántica clara.
Es más, prácticamente todos se ocupan del estilo del texto:
- Negrita
- Cursiva
- Listas de elementos
- Tablas de datos
- ...
Resulta sorprendente ver lo que podemos conseguir si unimos estos lenguajes con STxT. Obtenemos texto fácil de interpretar, con una semántica definida y con la expresividad de ambos lenguajes.
Un ejemplo:
Producto: Nombre: Magic memory Precio: 10€ Descripción: Este producto produce un _mágico rejuvenecimiento_ de la memoría y proporciona un **inmediato** efecto en todas las personas que lo prueban. Efectos: * Rápida memorización * Aprendizaje automático * Mayor concentración
Vemos que hemos dado estructura gracias a STxT, pero la descripción se ha dado al estilo wikipedia.
La unión de STxT con Lightweight markup languages es simplemente espectacular
Tex, Latex
Perdonad si critico mucho. Nunca lo hago sin dar una alternativa o un motivo. Me gustan las críticas constructivas ;-) He visto que uno de los objetivos de TeX es que un documento se imprima igual ahora y dentro de 100 años. Me había parecido perfecto... hasta hoy. Ahora creo que el objetivo debería ser que significara lo mismo ahora que dentro de 100 años, y que se entienda ahora y dentro de 100 años. Y cuanta más gente mejor. Esto no se consigue con TeX, pero Sí con STxT. Un documento se entiende hoy y dentro de 100 años. ¿Como creo que debe evolucionar? Yo haría documentos en STxT, especificaría una gramática para los distintos tipos de documentos, permitiría elementos de TeX (como fórmulas) de la misma forma que se hace con los lenguajes de marcado ligeros, y usaría TeX como motor de renderizado.
Me atrevo a afirmar que TeX es imbatible en cuanto a renderizado; y creo que lo va a ser durante al menos 100 años más ;-)
¿Cómo quedaría un documento? Bien, un ejemplo sencillo sería algo así:
Article (www.latex.com/article.stxt): Title: Author: References: Reference: Title: Year: ISBN: Reference: Title: Year: ISBN: Paragraph: This is a mathematical formula: Formula: \begin{eqnarray} x&=&y\\ x^2&=&xy\\ x^2-y^2&=&xy-y^2\\ (x+y)(x-y)&=&y(x-y)\\ x+y&=&y\\ 2y&=&y\quad \mbox{(first ecuation)}\\ 2&=&1 \end{eqnarray} Paragraph: Hello World!!
De hecho, ahora ya podemos pensar en STxT, quizá sea el momento de hacer fórmulas de otra forma, o notación más simplificada, como por ejemplo:
Article (www.latex.com/article.stxt): Title: Author: References: Reference: Title: Year: ISBN: Reference: Title: Year: ISBN: Paragraph: This is a mathematical formula: Formula: Array: Element: x&=&y Element: x^2&=&xy Element: x^2-y^2&=&xy-y^2 Element: (x+y)(x-y)&=&y(x-y) Element: x+y&=&y Complex: Element: 2y&=&y\quad Element: mbox{(first ecuation)} 2&=&1 Paragraph: Hello World!!
Bien, hay miles de posibilidades y formas de enfocar el problema, os lo dejo como ejercicio ;-D
¿Qué hemos ganado con respecto a sólo TeX?
- Facilidad en la creación de documentos
- UTF-8
- Estructura definida
- Texto semántico
- Texto legible
Y además, hemos mantenido la compacidad en la creación de fórmulas matemáticas y otros elementos dónde TeX sí es realmente un gran lenguaje.
JSON
JSON en principio no tiene nada que ver con STxT, pero hay ciertos momentos en los que pueden entrar en competencia. Estoy pensando en ficheros de configuración, por ejemplo. Además, es más flexible y fácil de leer cuando incrustamos gran cantidad de texto, cosa que en JSON hay que tener en cuenta siempre todos los caracteres de escapamiento.
Pero no hace falta preocuparse mucho. No creo que JSON y STxT sean competencia directa, debido a su distinto ámbito de aplicación.
YAML
Quizá YAML sea el que más se parezca en enfoque, aunque también es muy distinto. Nosotros creemos que con nuestra estructura se puede mostrar lo mismo que YAML, y mucho más simple. Además, podemos añadir semántica al documento con los namespaces, al mismo tiempo que permite un texto legible para la mayoría de personas, independientemente de sus conocimientos informáticos.