Roberto De Ioris wrote: > #callback based: > > def pluto(): > print("fine"); > > def topolino(): > wait_for('pluto', pluto) > > def pippo(): > wait_for('topolino', topolino) > > wait_for('pippo', pippo) > > # coroutine/greenthread/stackswitch/blah blah based: > > wait_for('pippo') > pippo() > wait_for('topolino') > topolino() > wait_for('pluto') > pluto() > > > Personalmente trovo molto piu' leggibile la seconda forma (anche se > internamente l'implementazione e' piu' complessa) Se sei un fan di Go mi > darai regione (visto che e' come funzionano le goroutine) ;)
Ti do ragione completamente. Anch'io trovo poco leggibile dover saltellare per il codice alla ricerca di callback annidate o agganciate, e la sintassi pseudosincrona permette di usare il modello a eventi asincroni, unico modo per scalare tanto, senza doversi aggrovigliare appresso alle callback. Ai tempi di Twisted favorivo la sintassi pseudosincrona delle inline callback a quella nativa, e questa è una delle tante cose che non mi piacciono di Javascript. Se capisco bene, le promise sono un tentativo di avere sintassi pseudosincrona anche lì. E ci hai preso in pieno con l'accenno a goroutine e channel in Go. :-) Anche in Tornado puoi avere la sintassi pseudosincrona usando gen.coroutine, quindi magari puoi ripensare se includere di default il relativo plugin in uWSGI. ;-) (Gli scatoloni chiamano, ma non potevo non rispondere. :-) ) -- Nicola Larosa - http://www.tekNico.net/ We need whistleblowers. We need to know exactly how the NSA and other agencies are subverting routers, switches, the Internet backbone, encryption technologies and cloud systems. I already have five stories from people like you, and I've just started collecting. I want 50. There's safety in numbers, and this form of civil disobedience is the moral thing to do. - Bruce Schneier, September 2013 _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python