http://jonoscript.wordpress.com/2008/07/21/language-based-interfaces-part-1-the-problem/
Traduzione parziale dell'articolo Language-Based Interfaces, part 1: The Problem di Jono
Come deve essere un'UI linguistica ideale?
Basandosi su tutte queste esperienze [espresse nella parte di articolo non tradotta N.d.T.], riporto qui il mio pensiero attuale su come dovrebbe essere una UI basata sul linguaggio ideale.
Per soddisfare il requisito semplicità di apprendimento, dovrebbe:
- Accettare comandi in un linguaggio molto simile a quello umano col quale siamo già familiari.
- Fornire suggerimenti su quali comandi sono disponibili.
- Fornire suggerimenti su come concludere il comando che si sta digitando.
- Dare un'idea di quello che potrebbe succedere una volta eseguito il comando.
- Dare suggerimenti su altri comandi ai quali lui pensa io potrei essere interessato.
- Aiutare a capire quale gamma di argomenti è valida per il comando, e che cosa significano quei comandi.
- Proporre comandi appropriati al contesto di lavoro o al tipo di dati selezionati.
Per efficenza, dovrebbe:
- Permettere all'utente di iniziare il comando con il nome o con il verbo.
- Permettermi di autocompletare un comando premendo un tasto.
- Riconoscere le parole persino se super-abbreviate.
- Ricordare quali proposte sono state scelte in passato e proporle la volta successiva si reimmette lo stesso input.
- Permettermi di inserire un comando parziale, mostrare dei suggerimenti, scegliere tra questi il più simile a quello che voglio lanciare e infine permettermi di editare questo comando prima di eseguirlo.
- Indovinare, a partire dal contesto e dalla selezione, che cosa vuole l'utente, quindi mostrare i sugerimenti e permettere all'utente di modificare il comando nel caso questo sia sbagliato.
Per essere espressiva, dovrebbe:
- Gestire comandi con argomenti multipli, inclusi argomenti opzionali, e che possono richiedere diversi tipi di dati.
- Se ho selezionato dei dati, permettermi di usare quella selezione come input per tutti gli argomenti oppure per solo qualcuno di questi.
- Permettermi di concatenare i comandi tra di loro, l'output di uno dovrebbe poter essere usato come input per un altro, come le pipe di Unix.
- Se il mio input può avere più di una interpretazione, darmi la possibilità di risolvere l'ambiguità in modo appropriato.
- Permettermi di comporre comandi complessi a partire da parti più semplici, sfruttando la flessibilità dei linguaggi naturali.
- Permettermi di salvare un comando complesso che ho creato e dargli un nome semplice in modo da poterlo riutilizzare in futuro.
- Darmi un modo facile per creare miei programmi e condividerli con gli altri.
Una lista di richieste notevole? Si!
Conflitti tra gli obiettivi? Probabilmente!
Impossibile? Non credo!