2010-10-22 Logiciel à découvrir, Ditaa

http://www.k1ka.be/pics/ditaa1.png

Ditaa est un utilitaire en ligne de commande écrit en Java, capable de convertir un diagramme dessiné en ascii (c-à-d. inclus dans un fichier texte en utilisant des caractères tels que '-', '_', '|', etc.) en un format graphique plus conventionnel.

Le schéma en haut de page a été engendré par le texte suivant.

   /--------------------------------------------------------------\
   :                                                              |
   |  +----------------+    +---------------+  +---------------+  |
   \->| Vous reprenez  |    |Merci, mais je |  |Une autre fois,+--/
   /->+ quelque chose? +--->|dois partir... +->|alors?         +------>
   |  |                |    +---------------+  +---------------+
   |  |                +--->|La même chose  |
   |  +---+------------+    +-------+-------+
   |      ^      ^                  |
   |      :      :                  |
   |      |      |                  |
   |    +-+-+  +-+-+   +-------+    |
   \----|{s}|  |{s}| <-+Patron!+----/
        |   |  |   |   +-------+
        |   |  |   |
        +---+  +---+

À la lecture de la page du projet, on sent bien que l'auteur est doté d'un sens certain de l'auto-dérision. Il justifie ce travail dont la portée pratique est loin d'être évidente par le goût du hack, le souci au demeurant très louable de contribuer à l'amélioration esthétique de documentations techniques anciennes, l'ambition d'intégrer Ditaa dans des formats plain-text capables de produire des formats de sortie plus sophistiqués...

C'est moins saugrenu qu'il n'y paraît; Il existe en effet des documents tels que le «RFC793-Transmission Control Protocol», à titre d'exemple, qui incluent des choses de ce genre:

       +------+ +-----+ +-----+       +-----+                    
       |Telnet| | FTP | |Voice|  ...  |     |  Application Level 
       +------+ +-----+ +-----+       +-----+                    
             |   |         |             |                       
            +-----+     +-----+       +-----+                    
            | TCP |     | RTP |  ...  |     |  Host Level        
            +-----+     +-----+       +-----+                    
               |           |             |                       
            +-------------------------------+                    
            |    Internet Protocol & ICMP   |  Gateway Level     
            +-------------------------------+                    
                           |                                     
              +---------------------------+                      
              |   Local Network Protocol  |    Network Level     
              +---------------------------+                      

... et il m'a suffit de soumettre tel quel ce passage à Ditaa pour obtenir ce qui suit, et il faut reconnaître que le résultat n'est quand même pas mal du tout:

http://www.k1ka.be/pics/ditaa2.png

C'est l'effet d'ombrage qui fait toute la différence...

Bien sûr, si l'on veut obtenir des choses plus rigoureuses, on fera mieux de se tourner vers Graphviz, ou l'un des multiples utilitaires gravitant autour de Latex1, tels que Metapost, Asymptote ou d'autres, qui permettent aux esprits tortueux de dessiner en alignant du code plutôt qu'en maniant la souris.

Mais cela est une autre histoire.

Footnotes:

1. On en trouve tout un catalogue dans le Latex Graphics Companion