On Wed, 11 Nov 2009 16:32:09 +0100, Marco Mariani <marco.mari...@prometeia.it> wrote: > Daniele Varrazzo wrote: >> pensoche nessun linguaggio come Erlang abbia bisogno di un "progetto 3K", > > Compreso Javascript?
Fortunato bastardo, al calduccio del client side di un miliardo di browser senza alcuna concorrenza :D Se si dovesse davvero aprire una seria competizione in quell'ambiente sarebbe spacciato :) Mi sembra che la gente tenda a rimediare alla bruttezza del JS con librerie o trattandolo come linguaggio macchina (GWT, Pijamas). Certe oscenità sono incancellabili (variabili globali per default) ma per fortuna il core della sintassi è abbastanza piccolo da poterci costruire su una libreria e usare quella. Comunque no, sebbene chi abbia progettato JS fosse lobotomizzato da un linguaggio dalla sintassi ritardata (di almeno 20 anni già allora) come il Java, ma dalla spinta commerciale inesorabile come è stata quella della Sun, l'incoerenza di Erlang è qualcosa di diverso. Si vede semplicemente la mano di troppa gente che ha scritto le librerie e di pochi utenti che le hanno usate inizialmente, e di un dittatore pignolo come è stato Van Rossum. Per esempio: tutti questi oggetti rappresentano array associativi, e l'operazione è quella di ricerca di una chiave: i possibili risultati per chiave trovata o non trovata sono: lists:keyfind(Key, N, TupleList) -> Tuple | false dict:find(Key, Dict) {ok, Value} | error proplists:lookup(Key, List) -> tuple() | none gb_trees:lookup(Key, Tree) -> {value, Val} | none ets:lookup(Tab, Key) [Value] | [] dets:lookup(Name, Key) -> [Object] | {error, Reason} Nota, oltre ai diversi valori di ritorno, l'uso disinvolto di singolari (dict) o di plurali (lists, proplists), contenitori come primo (ets, dets) o ultimo (lists, dict) parametro della funzione... Come facevo notare a Lawrence mentre parlavamo del suo intervento al PyCon, le stesse primitive di concorrenza (spawn(), receive, !) sono una funzione, una keyword e un operatore. E ancora, il terminatore di riga può essere ".", "," o ";" a seconda del contesto... Certo devi sempre stare a guardare la documentazione per orientarti tra le librerie, e ad ogni refactoring uno o due errori di compilazione ci scappano. O un badmatch perchè il dict non andava più bene e l'hai sostituito con una tavola ets. Ma se perdoni questi problemi e il programma parte... gli perdoni tutto con le lacrime agli occhi :D -- Daniele Varrazzo - Develer S.r.l. http://www.develer.com _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python