Capítulo 1: ¿Qué es STxT?
Este proyecto es fruto de años de inconsciente reflexión,
aunque sólo se necesitó un instante de inspiración.
Este capítulo puede parecer un poco disperso, pero son mis reflexiones al crear STxT. Perdonad si me repito un poco, si no entendéis lo que digo, o si parece un discurso incoherente. Pero es así. Se ha escrito como se ha podido, en días distintos, pero siempre se ha usado como la base de la creación.
Es La Inspiración
El resto de capítulos son La Transpiración.
Ojead este capítulo un poco por encima, y leedlo con más profundidad cuando ya sepáis más de STxT. Es un buen consejo ;-)
¿Qué es STxT?
Es un lenguaje puramente semántico, con unas reglas muy básicas, que permite la creación de documentos con un contenido estructurado y sencillo de interpretar, tanto por humanos como por máquinas. Podríais estar leyendo un documento en STxT sin daros cuenta en realidad que lo es.
STxT: Un lenguaje para la web. No significa uno más, uno más entre tantos. Significa UN lenguaje para la web. Uno sólo. Y a la vez muchos. Todos los que se quieran. Ésta es mi propuesta.
STxT es un lenguaje para escribir documentos estructurados. Permite crear documentos de forma no ambigua, ciñéndose a unas reglas muy precisas, pero consiguiendo documentos que pueden ser leídos por personas sin conocimientos informáticos.
De hecho, los documentos tienen significado por si mismos, sin ser necesaria ninguna traducción adicional. Tienen una estructura jerárquica muy parecida a documentos xml, y su traducción puede ser directa.
En un futuro STxT podría ser un reemplazo a otras tecnologías como xml o LaTex.
Declaración de intenciones :-)
Hay un serie de principios o características que queremos que tenga este nuevo lenguaje.
- Independiente del lenguaje de programación, sistema operativo y plataforma
- Fácil de leer por humanos sin conocimientos informáticos
- Fácil de aprender por humanos sin conocimientos informáticos
- Aspecto bonito e intuitivo
- Fomente la libre circulación y compartimiento de información
- Fácil de aprender por humanos con conocimientos informáticos
- Fácil de interpretar por ordenadores
- Permitir integrar fácilmente textos de otros lenguajes de programación, especialmente "lightweight languages", que tienen un especial interés. De esta forma se consigue una integración muy interesante.
- Capacidades nativas de internacionalización (I18N)
- Capacidades nativas de autodescripción
- Permitir la creación de árboles de contenido con capacidad de distinción entre distintos lenguajes de forma muy sencilla
- Ser genérico para incluir documentos de otros lenguajes
- Simplificar tanto que no sean necesarios caracteres de escape. De hecho, no hay caracteres de escape!!! ¿Es eso posible? Sí. Creo que es el primer lenguaje que puede decir esto :-D Lo hace por estructura y contenido. Sólo hay algún carácter prohibido, pero no de escape. Ya lo veréis, me acabo de extender demasiado en este punto...
¿Qué significa STxT?
Bien, originariamente STxT significa "Texto semántico". Aunque también podría tener otros significados, que a mi me gustan particularmente: SuperText y SexyText.
- SuperContent: es texto, pero super :-D
- SexyContent: es texto particularmente bonito ;-)
Cómo elegí la extensión: STxT? Yo tenía claro que los documentos tenían que ser semánticos, por lo que había algo que tenía que tener "semántico". Además, están muy de moda lenguajes con pocas letras: xml, tex, html, xsd,... por lo que stxt me pareció una buena elección. Sólo me faltaba comprobar que esto no era ya utilizado, por lo que buscando por Internet sólo encontré remotamente otro significado: sexy-text. Bien, incluso eso estaba bien, ya que semantic text tiene que ser sexy ;-)
¿Por qué un nuevo lenguaje?
Siempre he creído que nos faltaba un lenguaje sencillo para escribir textos, pero que a la vez fuera potente en lo que a estructuración se refiere. Y no lo había encontrado... hasta ahora.
Creo que el problema que ha existido siempre es que se intenta solucionar siempre el caso general, con lo que todo se complica mucho. Pero además se ha abordado mal, siempre teniendo en cuenta el punto de vista de la sintáctica, buscando un enfoque informático, nunca semántico.
Con STxT Resolvemos semántica y sintáctica a la vez,
de una forma elegante y bonita.
No os equivoquéis. Yo soy informático. Pero a veces hay que ver desde el otro lado, con una visión "limpia". De hecho es un equilibrio entre aprender de lo que sabes e intentar pensar como si no supieras nada de eso.
Otro de los objetivos es hacer la información abierta. Esto también se ha abordado en la fase de diseño. Por diseño el contenido es abierto.
Un lenguaje para todos
Intentamos hacer fácil para todos. No habría que haber problemas para los "no informáticos" el hecho de crear un documento semántico. Debería de ser intuitivo, y sencillo con las herramientas adecuadas.
Uno de los objetivos es pasar de tener 1 lenguaje relativamente complicado para hacer cosas (Ej: XML, Latex,...) para pasar a tener n muy sencillos, con contenido ligado a una estructura. Este lenguaje tiene que poder aprenderse en muy poco tiempo. Casi con un ejemplo debería ser suficiente. STxT está hecho para que sea así. Además, STxT permitirá pasar de STxT a otros lenguajes, latex, por ejemplo, para que gente más técnica pueda hacer el trabajo final. Pero el origen y la base será siempre STxT.
Es mucho mejor que sea así, ya que escribimos en semántico puro, sin tener en cuenta nada de estructura.
Al iniciar la creación de este lenguaje buscaba algo muy genérico, a la vez que fuera descriptivo. Quería que la información fuera muy clara, pero quería olvidar las gramáticas tan complejas de otros sistemas. Quería algo accesible, pero a la vez potente y útil. Por eso tenía que buscar la sencillez, y alejarme de la mayoría de trabajos ya realizados. Mi pretensión era crear un lenguaje no sólo para la gente de élite, sino para todos. También sabía que esto sería beneficioso, ya que así la cantidad de gente dispuesta a crear documentos aumentaría de forma considerable. Hay muchísima gente con grandes conocimientos, pero a veces se ven limitadas por la forma con la que tienen que traducir esta información. También pretendo solventar este problema.
Declaración caótica de intenciones :-D (**)
Bien, todo esto es lo que buscábamos, o lo que hemos conseguido, o el objetivo, o una mezcla de todas estos cosas. No sé, son ideas dispersas, que han estado por ahí durante su creación y quería que las vierais, nada más. No se puede entender nada de esta lista. Tenéis que esperar al final del libro, y ver qué se ha conseguido, qué no, y si hemos ganado algo... al final.
- Válido durante muuuucho tiempo
- Content type para web: text/plain (UTF-8)
- No hay problemas de caracteres: UTF-8 SIEMPRE
- Ampliable
- Cualquiera puede crear tipos de datos, y TIENE QUE EXISTIR la página, no como los namespaces de xml.
- Evidentemente se puede guardar en cache, para no estar preguntando siempre, pero es algo REAL.
- Traspaso de datos entre plataformas fáciles
- Migraciones de contenido fáciles
- Se pueden definir ficheros de definición, de forma que quien quiera puede crear tipos antes de hacerlos públicos
- Definir tipos de datos con url's: sólo 1 namespace, y a partir de éste todo por defecto
- Se ha hecho para ser bonito
- Fácil de leer y hacer por humanos y máquinas
- Contenido deducible, no es necesario escribir todo, lo que permite abreviar o hacer descripción más larga
- Hecho para aprender en muy poco tiempo, con pocas reglas
- Definición de tipos (gramáticas) incluido desde la fase de diseño, para integración total
- Refactorización de xml
- Gracias a la definición del tipo se puede hacer un formato super-compacto, mucho más que xml, json,...
- Mucho más fácil de crear a mano, ya que no hay que vigilar casi nunca los namespaces, ya que son casi automáticos por la situación. Los namespaces como nunca antes los habías visto ;-)
- Muy pocos tipos de datos (los números sin limitación, esto es semántico, no ningún lenguaje de programación)
- Fácil de transformar de éste a otros formatos
- Ambición: permitir avances hacia la web semántica, con la creación de vistas html bonitas y una base STxT fuerte.
- Uno de los objetivos es hacer la información abierta. Esto también se hace en la fase de diseño. Por diseño el contenido es abierto.
Aplicaciones, resultados y esperanzas
Creo que hemos creado un gran lenguaje. Sencillo, práctico y realmente muy útil.
Este libro lo he escrito en este lenguaje. Y nunca me había sentido tan cómodo. Para mí ha sido un gran descubrimiento. Cuando lo uso, pienso: la gente tiene que conocerlo. El lenguaje lo merece. No se puede esconder. Hay que probarlo. Y tiene que gustar. No quiero ser el único que lo tenga. No sería justo.
Me gustaría que en el futuro STxT tuviera un lugar de honor con otros lenguajes, y que fuera por la aceptación y utilidad que ofreció.