[Python] Julia (Was: Walks like Python. Runs like C).

Nicola Larosa nico a tekNico.net
Ven 16 Gen 2015 10:40:32 CET


Marco Ippolito wrote:
> A settembre, elettrizzato dalla possibilità che si potesse lavorare 
> come in node anche in python in modalità asincrona,

"come in node"?!? Cosa devono sentire le mie orecchie. :-P

La programmazione asincrona è vecchia come il cucco. In Python potevi
usarla fin dagli anni '90 con asyncore nella libreria standard [1].

La v.1.0 di Twisted [2] è del 2002. L'ho usato con ottimi risultati dal
2003 al 2007.

La v.1.0 di Tornado [3] è del 2010. Oggi forse userei quello piuttosto
che Twisted, se non usassi altro. :-P

La v.1.0 di node.js non è ancora uscita, si limitano a scrivere "stable"
di fianco a versioni 0.x. Che dire, complimenti.

Firmato: il vostro amichevole Storico di Quartiere.


> mi sono messo a capire async-requests ed asyncio. Risultato: non ho
> capito molto come funzionano, ma penso di aver intuito che sono molto
> lontani dalla semplicità d'uso ed efficacia del modello asincrono di
> node.js

Curioso, avevo l'impressione che fosse esattamente la stessa foresta di
callback, tanto che ultimamente è tutto un fiorire di Promise, Future e
compagnia cantante.

Twisted ha avuto le inline callback fin dai primi anni, per esempio.


> ecco quanto mi ha scritto uno degli sviluppatori di asyncio: "you
> don't have a full understanding of how asyncio functions, which is
> understandable because asyncio is a nightmare of complexity.

Preoccupante che uno degli sviluppatori sia così intimorito. Chi è costui?


> You cannot drop a random library into an asyncio project and expect it
> to function correctly. The project needs to have been written from the
> ground up to understand asyncio, or at least to have been wrapped in
> asyncio goodness.

Questo è il problema comune della programmazione asicrona, che la
rinchiude in una specie di ghetto. Almeno in Python. ;-)


[1] <https://docs.python.org/2/library/asyncore.html>
[2] <https://twistedmatrix.com/>
[3} <www.tornadoweb.org/>

-- 
Nicola 'tekNico' Larosa <http://www.tekNico.net/>

If you've spent years learning tricks to make your multithreading code
work at all, let alone rapidly, with locks and semaphores and critical
sections, you will be disgusted when you realize it was all for nothing.
If there's one lesson we've learned from 30+ years of concurrent
programming, it is: /just don't share state/. - Pieter Hintjens, 2013


Maggiori informazioni sulla lista Python