Utente:LorenzoCacciotti/Sandbox

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

I TCL (Technically Complete Languages) sono una serie di recenti linguaggi teorici a scopo didattico. Finora non ci sono state applicazioni pratiche considerevoli. La peculiarità di questa famiglia di linguaggi è una metodicità e sistematicità maniacale nella loro progettazione.
I TCL attualmente riconosciuti come tali sono:

  • TCML (Technically Complete Markup Language)
  • TCKRL (Technically Complete Knowledge Representation Language)

Caratteristiche fondamentali[modifica | modifica wikitesto]

La sistematicità nella progettazione è percepibile innanzitutto dalla definizione delle caratteristiche di un linguaggio TCL, infatti un linguaggio TCL deve necessariamente rispondere a 30 caratteristiche fondamentali, ufficialmente ed equalmente suddivise in caratteristiche primarie, caratteristiche secondarie e caratteristiche techniche.

Caratteristiche primarie[modifica | modifica wikitesto]

Le caratteristiche primarie sono considerabili linee guida da seguire durante la progetazione di un linguaggio TCL. Infrangere una caratteristica primaria significa divergere completamente dalla filosofia dei TCL.

  1. Definizione del linguaggio: Prima della progettazione del linguaggio va stabilito quali esigenze andrà a ricoprire, in che ambiti verrà usato e qual'è il suo scopo.
  2. Definizione del criterio: Prima della progettazione del linguaggio va stabilito un criterio oggettivo (tenendo in considerazione tutte le caratteristiche primarie e secondarie) da rispettare durante la creazione, secondo il quale il proprio linguaggio è considerabile "tecnicamente completo".
  3. Applicazione informatica: Il linguaggio deve applicarsi perfettamente nel campo dell'informatica (eventualmente avere un personale formato file).
  4. Completezza negli ambiti: La generalità deve essere elevatissima tanto da ricoprire tutti campi di tutti gli ambiti scelti nella definizione del linguaggio (punto 1).
  5. Coerenza e didattica: La coerenza deve essere elevatissima e si devono ridurre quanto più possibile le forme sintattiche, per aumentare notevolmente la didattica (e la leggibilità).
  6. Forme quasi grafiche: Il linguaggio deve avere delle forme (equivalenti a quelle tradizionali) che puntano ad una leggibilità altissima (con sintassi quasi grafiche).
  7. Forme quasi esoteriche: Il linguaggio deve avere delle forme (equivalenti a quelle tradizionali) che puntano al risparmio della memoria occupata dal codice (con sintassi quasi esoteriche).
  8. Ispirazione: Il lingauggio deve ispirarsi ai principali linguaggi dello stesso tipo e agli altri linguaggi TCL in semantica, sintassi e lessico.
  9. Efficenza: Il linguaggio (al di là delle opzioni di ottimizzazione che offre) deve essere generalmente estremamente efficente.
  10. Unicità del linguaggio: Non devono esistere altri linguaggi TCL dello stesso genere.

Caratteristiche secondarie[modifica | modifica wikitesto]

Le caratteristiche secondarie sono anch'esse considerabili linee guida, non importanti quanto le primarie, ma comunque obbligatorie. Infrangere una caratteristica secondaria (senza infrangere caratteristiche primarie) significa ottenere un linguaggio filosoficamente simile ad uno TCL ma non propriamente uno TCL.

  1. Lessico: Il lessico deve essere il più esteso e completo possibile, rigorosamente in inglese e prefiribilmente il più possibile simile a quello di altri linguaggi TCL.
  2. Documentazione completa: la documentazione ufficiale non deve tralasciare alcun dettaglio del linguaggio. Preferibile se tradotta in più lingue.
  3. Librerie superflue: si deve rendere il linguaggio in modo da rendere gran parte librerie (che comunque è preferibile che ci siano) superflue.

Caratteristiche tecniche[modifica | modifica wikitesto]

Le caratteristiche techniche sono carattristiche fondamentali oggettive che riguardano tecnicismi. Non per questo facoltative.

  1. Nome: Il nome del linguaggio deve essere un acronimo (di parole inglesi) di massimo 6 lettere e minimo 3, iniziante per TC (con significato di Technically Complete). Eventuali formati derivati dovranno avere lo stesso nome in caratteri minuscoli.
  2. Commenti: Il linguaggio deve avere almeno due sintassi per i commenti (una per i commenti a riga singola, una per i multi-riga). Preferibilmente le stesse del linguaggio C++.
  3. Inserimento di altro codice: Il linguaggio deve offrire la possibilità di inserire dei blocchi di codice scritto in linguaggi diversi (inclusi tutti i linguaggi a cui ci si è ispirati [punto 7 delle caratteristiche primarie]).
  4. Convertibilità: Tutti i linguaggi a cui ci si è ispirati (punto 7 delle caratteristiche primarie) devono essere facilmente (e senza casting) convertibili nel linguaggio che si sta creando.
  5. Uncasesensitive: I linguaggio deve essere rigorosamente uncasesensitive (insensibile alle differenze tra lettere maiuscole e minuscole).
  6. Stringa completa: Il linguaggio deve offrire la possibiltà di inserire stringhe (od altri valori testuali) contenenti pure delle parti di codice che ne modificherebbero la natura (come le doppie virgolette che in genere delimitano le stringhe) tramite degli escamotage.
  7. Magic number: Il magic number deve iniziare per 54 43 4C ed essere seguito da altri tre numeri (possibilmente la conversione dei caratteri dell'acronimo [esclusi i caratteri T e C iniziali] in numeri esadecimali)

TCML[modifica | modifica wikitesto]

il TCML (Technically Complete Markup Language) è un linguaggio di markup appartenente ai TCL che si ispira all'HTML ed al SGML.

Esso è utilizzabile sia per la creazione di file di testo semplice, sia per file di testo formattato, che per veri e propri documenti impaginati.

Sintassi[modifica | modifica wikitesto]

Esso è costituito principalmente da TAG annidabili reciprocamente seguiti da una serie di attributi con rispettivi valori tra parentesi tonde e dal contenuto tra parentesi graffe:

nome_TAG(attrributo1=valore1, attributo2=valore2, ...){contenuto}

I commenti hanno la stessa sintassi del C++:

// commento singola riga
/* commento
multiriga */


TAG struttura[modifica | modifica wikitesto]

I TAG struttura sono gli unici TAG che non possono essere contenuti da altri TAG e rappresentano la struttura del documento (nonostante siano quasi tutti facoltativi). Eccone un elenco con relativi attributi:

TAG Descrizione Attributi Caratteristiche
metadatas Contiene i metadati notspecified (indica la motivazione dell'assenza dei metadati non specificati) con valori: empty/unknown/reserved/editor (che significano rispettivamente: assenza di informazioni/informazioni sconosciute/informazioni riservate/l'editor usato non permette l'inserimento [empty è il valore di default]) TAG facoltativo, non contenibile in altri TAG, contenente esclusivamente TAG metadati (non può contenere testo)
pagesettings Impaginazione original (indica se l'impaginazione è la stessa del documento originale e accetta i valori true e false) e notspecified (indica che standard rispettare in caso di assenza di TAG impaginazione) con valori: nothing/standard (rispettivamente: nessuno standard/standard del linguaggio [nothing è il valore di default]) TAG facoltativo, non contenibile in altri TAG, contenente esclusivamente TAG impaginazione (non può contenere testo)
body corpo del documento non ha attributi l'unico TAG obbligatorio, non contenibile in altri TAG, contenente tutti i TAG (esclusi gli altri TAG struttura, i TAG metadati ed i TAG impaginazione)

TAG metadati[modifica | modifica wikitesto]

I TAG metadati sono gli unici TAG contenibili nel TAG metadatas, non possono essere contenuti in nuessun altro TAG e non possono contenere alcun TAG (solo testo). Eccone un elenco:

TAG Significato
Title Testo della cella
Subtitle Testo della cella
Testo della cella Testo della cella
Testo della cella Testo della cella
Testo della cella Testo della cella
Testo della cella Testo della cella
Testo della cella Testo della cella
Testo della cella Testo della cella
Testo della cella Testo della cella
Testo della cella Testo della cella
Testo della cella Testo della cella
Testo della cella Testo della cella
Testo della cella Testo della cella