I grandi problemi aperti dell'informatica

Tuesday, 08 May 07
Un robot donna giapponese Qualche giorno fa c'era un thread su reddit in cui un utente chiedeva di rispondere alla domanda (facendo riferimento al meraviglioso talk You And Your Research) Quali sono i grandi problemi aperti dell'informatica? Ho risposto con un commento in quattro punti, che traduco e riporto qui di seguito.








  • La complessita' dei programmi: i programmi grandi non scalano, ma allo stesso tempo abbiamo bisogno di diversi grandi sistemi nella realta'. Non e' un invito al disegno di un nuovo linguaggi di programmazione e non e' strettamente correlato a cose come le prove di correttezza dei programmi. La sfida riguarda la compresione di cosa sia davvero la programmazione, del perche' i programmi grandi siano cosi' complessi, e dopo che verra' sviluppata una teoria di tutto questo magari ci saranno modi per abbattere tale complessita'.
  • Interfacce utente. Siamo con la tastiera e il mouse, e lo stesso tipo di interfacce grafiche da... un sacco di tempo. A me pare che non ci sia stato nessun progresso reale dai tempi dell'Apple Lisa, ma questo non significa affatto che le interfacce utente di oggi siano perfette.
  • Compressione. Il progresso nella compressione dei dati ha generato mp3, jpg, divx, e altro ancora, cose che stanno cambiando il nostro mondo. La capacita' di comprimere molto meglio dei tipi di dato particolarmente imporatanti puo' portare a grandi cose.
  • Algoritmi in grado di capire il linguaggio umano. Google e' scarso ormai! Cerchi qualcosa e poiche' non e' in grado di capire la tua richiesta, tanto meno di capire cosa c'e' scritto nelle pagine web, cio' che ottieni molto spesso e' una lista di risultati che non hanno nulla a che fare con cio' che cercavi. C'e' ogni giorno sempre piu' informazione generata dagli umani su internet e i computer dovrebbero essere in grado di riuscire a comprenderla per permetterci di gestirla.
Se volete dire la vostra sull'argomento leggero' con grande interesse.

Nell'immagine, un robot donna di fabbricazione giapponese. Il problema della comprensione del linguaggio parlato e' di importanza vitale per lo sviluppo della robotica.
12655 views*
Posted at 12:18:13 | permalink | 11 comments | print
Do you like this article?
Subscribe to the RSS feed of this blog or use the newsletter service in order to receive a notification every time there is something of new to read here.

Note: you'll not see this box again if you are a usual reader.

Comments

riffraff writes:
08 May 07, 15:28:39
sottoscrivo in pieno i tuoi punti, e i miei li ho messi su:
http://riffraff.blogsome.com/2007/05/08/i-problemi...

In effetti però alcuni di essi possono essere visti come rielaborazioni dei tuoi.
antirez writes:
08 May 07, 17:22:50
@riffraff: Grazie! tutti punti interessanti ma quello che ha di piu' stimolato la mia attenzione e' questo:

"In pratica abbiamo deciso che siccome è difficile trovare pezzi compatibili, e non abbiamo cacciaviti & saldatori adatti, allora conviene ricostruire ogni televisore da zero"

Ho l'impressione che molto spesso il limite del riuso e' la complessita'! Alcune librerie e moduli esterni sono talmente complessi che la loro comprensione finisce per portare via cosi' tanto tempo che non e' folle pensare di reimplementare la piccola parte che avremmo utilizzato.

Penso che se gli sviluppatori di software che diventano oggetto di riuso, e dunque specialmente gli sviluppatori di free software, si sforzassero di dedicare tempo per creare una API solida e una implementazione semplice invece di mettere l'ennesima feature, il riuso avrebbe piu' successo.

Anche il tuo punto sul rapporto tra utente e sviluppatore mi sembra di grande rilievo, ma le applicazioni web forse stanno aiutando uno sviluppo positivo da questo punto di vista.
iceseyes writes:
08 May 07, 19:08:56
trovo i tuoi punti molto azzecati. Soprattutto l'ultimo punto diventerà cruciale per passare ad una nuova generazione di motori di ricerca. Ma non solo! Diventerà fondamentale, anche dal punto di vista delle interfaccie perché, come giustamente fai notare tu, i programmi sempre più complessi richiedeno interfaccie di controllo altrettanto complesse e quindi l'unica soluzione per "semplificarle" è introdurre la possibilità di formulare azioni complesse. Quindi, attraverso il NLP.

Gli algoritmi di NLP diventeranno sempre più fondamentali anche per migliorare gli attuali sistemi di notifica (argomento che sto trattando nella mia tesi) in quando solo comprendendo il contenuto di un messaggio siamo in grado di determinare se il messaggio sia interessante/importante per un utente.

Vorrei comunque aggiungere anche altre due sfide dell'informatica oggi:
- il Quantum Computer (su computer quantistici il concetto di programma potrebbe mutare radicalmente!)

- e il ben noto problema NP = P, soprattutto per il fatto che da esso dipende tutta la crittografia!
davidonzo writes:
09 May 07, 07:15:31
Una delle più grandi pecche della programmazione è quella di essere vista molto spesso come un mondo a se. E sono gli stessi componenti che rendono la cosa tale.

Il problema della "comprensione" non è solo dei motori di ricerca, ma anche di chi il motore lo guida :)

Le nuove tecnologie permettono automatismi eccezionali. Risultati che fino a qualche anno fa erano impensabili.
Il vero problema è che spesso non si tiene conto di come arrivare al risultato.
Chi programma dovrebbe pensare in termini di risultato anche la modalità di raggiunta.

"Tu" crei "Y" che mi permetterà di risolvere il problema. Ma per usare "Y" (che magari costa 1000) sono costretto a fare un corso di aggiornamento che mi costerà altre 1000. Andrà a finire che userò il programma "Z" che mi da quasi lo stesso risultato, ma costa 1200 di base e non prevede addestramento.

Era solo un esempio. L'addestramento c'è e dovrà sempre esserci. Ma un programma con due features ed un manuale di 5000 pagine, ha qualcosa da rivedersi.

Per la riutilizzabilità sono più che d'accordo!
Nell'era in cui tutti "condividono" sembra esserci una corsa a chi lo fa più grosso...
Le utilità si limitano al solo fine specifico del primo programmatore. Altre possibili implementazioni sono difficili e scoraggiate.

API? Vanno tanto di moda, ma servizi fra loro quasi identici usano API diverse...
E' però questa una questione procedurale che spesso si scontra con interessi aziendali e soprattutto concorrenziali. La vedo di difficile soluzione...
riffraff writes:
09 May 07, 07:59:52
concordo, un grosso limite del riuso è la complessità, ancor prima di problemi di compatibilità "concettuale" (usare Parsec per haskell da un programma C sarebbe folle, credo).

Ma il problem è: come combatto la complessità? Come faccio a far si che chiunque possa usare facilmente una sola funzionalità della mia libreria leviatano da 80MLOC ? E come far si che questo accada superando i confini del linguaggio in cui è scritta?

Si tratta di un gran bel problema per il quale non ho idea della soluzione :)
Christopher Gabriel writes:
09 May 07, 10:42:00
Aggiungerei alla lista dei grandi problemi aperti dell'informatica un altro elemento: le donne!!!

:)
antirez writes:
09 May 07, 10:46:28
@Christopher Gabriel: sei incredibile, non ti sento da anni e parlavi di donne l'ultima volta che ti ho letto, e ora parli di donne.

Voglio sperare che mentre non ci siamo sentiti non hai fatto una lunga pausa ma hai continuato ininterrottamente a parlare di donne.
Christian Surchi writes:
09 May 07, 11:38:03
Ciao antirez!
Non ti preoccupare, non ha mai smesso!
Domenico writes:
11 May 07, 05:37:28
Sono come sempre spunti interessanti, ma, mi chiedo, possiamo e dobbiamo considerare l'informatica solo come un'insieme di tecnologie, o vogliamo guardarla come la scienza che partendo dal basso collega tutte le principali scienze del passato.

Mi spiego: parlando di comprensione del linguaggio, dal mio punto di vista non significa pensare a programmi e algoritmi, ma prima ancora pensare a concetti di semantica, sintassi e ovvimente linguistica.

Prima di pensare di comprendere, credo che occorra porsi il problema di riuscire ad esprimere tutti i concetti e le strutture del nostro pensiero.

Ma attenzione noi siamo abituati a pensare in italiano, qualcuno ci aggiunge l'inglese che sono comunque lingue indoeuropee, in altre lingue ci sono strutture diverse (in ebraio non esiste il verbo avere), la ricerca di strutture universali è forse il primo passo, il secondo è la modellazione di un linguaggio veramente universale che abbia la capacità espressiva della somma dei linguaggi.

Va da se che queste riflessioni, toccano forzatamente anche la filosofia, la psicologia, oltre che matematica e linguistica.

Volendo aggiungere problematiche, in termini tecnici, mi sento di citare la gestione del tempo, di cui esiste una teoria (tsql) ma nessuna implementazione, che ci ricollega subito a quanto detto prima con i concetti di tempo telico e Atelico.

Inoltre, la capacita di fare ricerche di immagini e di video (aspetti più tecnici) che ci portano a studiare quali processi mentali effettuiamo noi umani per riconoscere lo stesso volto in immagini diverse.


Ciao!

P.S.
Mi piacerebbe conoscere la tua (vostra) opinione su queste riflessioni
antirez writes:
11 May 07, 05:52:17
@iceseyes: Condivido i discorsi sulla NPL, sul quantum computer e' una frontiera cosi' nuova e aperta che potrebbe crollare un po' come hanno fatto in passato reti neurali e programmazione genetica. Sembravano delle svolte enormi e si sono rivelati solo degli utili strumenti per attaccare alcuni problemi.

@davidonzo: per quanto riguarda la complessita' dei sistemi, un limite alla semplicita' dei programmi e' il seguente:

Word e' spesso citato come esempio di applicazione super-complessa che potrebbe essere semplificata perche' ogni utente usa si e no il 5% di quello che offre.

Ecco il problema e' che diversi utenti a volte usano 5% diversi! Nonostante tutto credo che il fallimento di molti software sia quello di non poter essere utilizzati "a diversi livelli".

Prima l'interfaccia dovrebbe presentare tutte le feature ovvie in maniera molto intuitiva. Se "scavi" trovi un altro livello per fare le cose piu' complesse, e cosi' via. Word e' una applicazioni in cui invece tutto e' mostrato sullo stesso piano o quasi, se si tolgono le funzioni davvero banali come che so... il bold. Per modificare i margini o inserire una figura
si entra gia' nel livello "complessivo" della applicazione che include tutto e il contrario di tutto.

@Christian: Ciao :) Mi rassicuri, grazie.

@Domenico: Non la farei cosi' complicata ;) Nel senso che si possono ottenere grandi risultati partendo dal basso. Google attualmente non e' in grado di analizzare la semantica di base, se in una pagina c'e' scritto "antirez is red" e io cerco "color of antirez", lui non sa che sono "red".

Piu' che altro probabilmente iniziando seriamente ad utilizzare su larga scala le cose piu' semplici si puo' capire dove stanno davvero i problemi e farsi aiutare dai teorici, dai linguisti, e dalla semantica, per cercare di superarli.

Tra l'altro la semiotica, la linguistica e tutto il resto continuano ad andare avanti (e in molti casi a toccare terreni quali i linguaggi di programmazione) senza che cio' stia influenzando particolarmente l'informatica, in che mi fa pensare che i primi passi a questo punto li dovrebbe fare l'informatica.

@all: scusate il ritardo nella risposta, sono stato un po' impegnato con lloogg e diotorni.
Giorgio writes:
24 May 07, 04:46:16
Sul primo punto sono d'accordo con iceseyes per quanto riguarda P=NP.. penso sia il problema più grande dell'informatica moderna ovvero se fosse dimostrata la disuguaglianza fra i due insiemi di complessità allora avremmo la certezza che alcuni problemi sono intrinsecamente non risolvibili da macchine deterministiche in tempo polinomiale.. e come iceseyes giustamente aveva fatto notare cose come la crittografia RSA si basano essenzialmente sul fatto che alcuni problemi siano in NP. Per inciso questo è uno dei problemi del millenio come l'ipotesi di Riemman.

Per l'ultimo punto da 7 anni (articolo di Berners Lee) le comunità scientiche stanno lavorando ai vari strati del Web semantico che dovrebbe essere la vera differenza fra il web odierno che poi è lo stesso di 5 anni fa a parte Ajax e due "cavolatine". L'utilizzo di tecnologie come RDFS/OWL e procedure di ragionamento automatico che devono attualmente essere ottimizzate porteranno al web of trust e a dati semantici utilizzabili dalle macchine per fare inferenza logica.

a presto
comments closed