Un programma che non abbia a che fare con la manipolazione di testi è una rarità. Pensate alle più comuni interfacce grafiche, con la loro mania di chiedere dati numerici attraverso campi testuali. Già che ci siete, pensate anche alla creazione dinamica di messaggi di testo - magari in più lingue.
Pensate alla validazione dei dati e alla verifica della loro adesione ad un modello sintattico formale. E già che ci siete, pensate anche all'analisi e all'interpretazione semantica di un blocco di testo scritto in un microlinguaggio di scripting.
Se siete programmatori C++, e pensare a tutto ciò vi ha fatto venire un gran mal di testa, oppure (peggio ancora) vi ha ricordato le parole "printf", "sprintf", "atoi" o altre orripilanti funzioni di derivazione C... questa serie fa per voi!
| 116 | Luglio 2007 | Un programma che capisce! |
|
I programmatori, anche se spesso non se ne rendono conto, sono circondati da informazioni scritte in veri e propri micro-linguaggi. Stendere a mano il codice per l'interpretazione di questi dati può rivelarsi davvero frustrante e una sorprendente fonte di bug. Per compiti di micro-parsing, boost::spirit è la soluzione ideale: in questo articolo si spiega come, grazie alla potenza della metaprogrammazione, è possibile descrivere delle grammatiche in un linguaggio simile al BNF, il tutto in un C++ perfettamente standard e sicuro. |
||
| 115 | Giugno 2007 | Il C++ incontra le Regex |
|
Lo standard C++ non prevede alcun supporto per le espressioni regolari. Quest'articolo offre una panoramica sulla sintassi e sulle possibilità di questi indispensabili strumenti. L'implementazione di riferimento è boost::regex, che è stata presa a modello per il TR1, e costituirà con tutta probabilità la base per le espressioni regolari nel "C++ del futuro" (il fatidico C++09). |
||
| 114 | Maggio 2007 | Gestiamo in modo sicuro le stringhe |
|
In quest'articolo si parte da un'analisi di std::string, vedendone la struttura, le principali possibilità e operazioni, nonché le attuali limitazioni sul fronte degli algoritmi. Per superarle, si introduce l'estensione alla libreria standard contenuta in boost::string_algo. |
||
| 113 | Aprile 2007 | Sicurezza: quando il testo conta |
|
La creazione di stringhe e l'estrazione di dati in C sono una continua fonte di bug critici. In C++, invece, esistono soluzioni leggibili e versatili, sicure rispetto ai tipi e agli overflow. Vediamo quali. | ||
| Bibliografia: | ||
|
L'equivalente bibliografico della peste nera si diverte ad accanirsi proprio sui miei articoli. E siccome la natura ha paura del vuoto, per compensare, è spuntato fuori un boxino dell'articolo scorso che nulla c'entrava. Ecco la bibliografia scomparsa: Se quest'articolo vi è interessato, non potete perdervi The string formatters of manor farm. Un piccolo capolavoro di Herb Sutter, in cui si esaminano molte delle soluzioni viste qui, con un mucchio di analisi comparative e considerazioni approfondite. Un'analisi arguta e spiritosa, e una soluzione alternativa a boost::format, con qualche critica dichiaratamente non-neutrale a questa classe e all'intero sistema degli stream C++, viene da Andrei Alexandrescu nel suo articolo Type-Safe Formatting. Per imparare il meccanismo degli stream standard in maniera completa e piacevole, consiglio fortemente The C++ Standard Library: A Tutorial and Reference, di Nicolai Josuttis. |
||
| Il caso del Boxino Olandese Mancante: | ||
|
Riporto qui un boxino laterale scomparso sulla rivista. Il testo, ovviamente, ha senso solo per chi ha sottomano l'articolo. Conoscere dall'inizio le possibili lingue in cui verrà localizzata l'applicazione può esser utile, perché piccole modifiche possono comportare grandi difficoltà. Se sappiamo che il gioco sarà localizzato in olandese, ad esempio, e vogliamo aggiungere un verbo variabile alla frase, come: "Ho preso la spada di Re Artù", dovremo creare in realtà due nuove variabili. In: "Ik heb het zwaard van Koning Arthur gepakt", infatti, l'ausiliare ("ik heb", "ho") e il participio ("gepakt", "preso") sono due entità separate, poste agli estremi della frase. | ||
Copyright Roberto Allegra, 2006. All rights reserved.
I codici sorgenti sono presentati in via provvisoria per gentile concessione della Edizioni Master, che ne detiene ogni diritto.