Re: [Python] Alcune cose sono interessanti, altre non so se hanno senso

2015-02-28 Per discussione enrico franchi
2015-02-28 19:17 GMT+00:00 Manlio Perillo manlio.peri...@gmail.com:

 Diciamo che quando li ho usati seriamente la prima volta copiando del
 codice C che faceva manipolazione di bits, ottenevo molti errori
 (-xxx overflows uint32, e così via).


Effettivamente ha senso. Non ci avevo pensato.

-- 
.
..: -enrico-
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Alcune cose sono interessanti, altre non so se hanno senso

2015-02-28 Per discussione Manlio Perillo
2015-02-28 19:40 GMT+01:00 enrico franchi enrico.fran...@gmail.com:

 [...]


 A me piace come è implementato in Go (anche se ci ho messo un pò a
 capirlo).


 Allora mi sa che io non lo ho capito, nel senso che lo ho liquidato come
 qualcosa in cui non c'e' niente da capire.
 Si ok... il concetto di untyped constant non e' agevolissimo su carta, ma
 usandolo fa praticamente sempre la cosa giusta.


Diciamo che quando li ho usati seriamente la prima volta copiando del
codice C che faceva manipolazione di bits, ottenevo molti errori
(-xxx overflows uint32, e così via).

Poi si, fanno la cosa giusta (come molte cose in Go).

 [...]

Ciao  Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Alcune cose sono interessanti, altre non so se hanno senso

2015-02-28 Per discussione enrico franchi
2015-02-27 17:29 GMT+00:00 Manlio Perillo manlio.peri...@gmail.com:

 2015-02-27 16:12 GMT+01:00 enrico franchi enrico.fran...@gmail.com:



 2015-02-27 10:17 GMT+00:00 Carlos Catucci carlos.catu...@gmail.com:


 La const in se fa comodo ma si vive anche senza (per convenzione io uso
 una var maiuscola e so che e' una costante per cui non la cambio mai,
 inoltre uso i namespaces, quindi mi basta uno chiamato CONST seguito da
 .nomecostante e evito il problema.


 A me const piace.


 const è un concetto abbastanza inflazionato.


Ovviamente.

A me piace come è implementato in Go (anche se ci ho messo un pò a capirlo).


Allora mi sa che io non lo ho capito, nel senso che lo ho liquidato come
qualcosa in cui non c'e' niente da capire.
Si ok... il concetto di untyped constant non e' agevolissimo su carta, ma
usandolo fa praticamente sempre la cosa giusta.
Si anche a me piace.


 In D ci sono sia const che immutable.


Gia'.


 In C const è complicato.


In C nemmeno troppo...


Oh, ognuno ci ha la sua nozione. C'e' il final di Java, il val di Scala. In
generale quello che a me piace e' avere valori immutabili e binding
immutabili. Ogni tanto voglio alternative, ma per il me il default dovrebbe
essere quello.

-- 
.
..: -enrico-
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Alcune cose sono interessanti, altre non so se hanno senso

2015-02-27 Per discussione Carlos Catucci
2015-02-27 13:53 GMT+01:00 Luca Bacchi bacch...@gmail.com:

 Nel tuo esempio intanto c'è una cosa poco chiara parlando in termini di
 Javascript: le variabili si dichiarano all'interno delle funzioni con var
 e lo si fa una volta sola. Quindi nel tuo codice già è presente un var
 pippo 2 volte, e questo potrebbe portare a dei fraintendimenti. La
 dichiarazione var pippo ovunque tu la metta (tu l'hai messa sia fuori che
 dentro) abbiamo detto che si comporta come se tu l'avessi messa una sola
 volta e all'inizio della funzione. Quindi si comporta esattamente come
 dovrebbe.


Infatti pero' se dichiaro due volte la variabile, dentro e fuori di un
blocco (ovvio in linguaggi che permettono la dichiarazione) mi attendo che
siano due diverse variabili.



 Ti faccio un esempio un po' diverso:

 (function () {
 var pippo = 0;

 _.each([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], function (element) {
 var pippo = i;
 });

 console.log(pippo);
 })();

 (_.each è roba di undercorejs ma non te ne curar)


Conosco e apprezzo


 Non ho provato ma direi che in questo caso dovrebbe stampare pippo = 0.
 Function Scope.


Certo, la hai dichiarata dentro una funzione interna. Io parlavo dello
scope a livello di blocco non di funzione.

Carlos
-- 
EZLN ... Para Todos Todo ... Nada para nosotros
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Alcune cose sono interessanti, altre non so se hanno senso

2015-02-27 Per discussione Manlio Perillo
2015-02-27 16:12 GMT+01:00 enrico franchi enrico.fran...@gmail.com:



 2015-02-27 10:17 GMT+00:00 Carlos Catucci carlos.catu...@gmail.com:


 La const in se fa comodo ma si vive anche senza (per convenzione io uso
 una var maiuscola e so che e' una costante per cui non la cambio mai,
 inoltre uso i namespaces, quindi mi basta uno chiamato CONST seguito da
 .nomecostante e evito il problema.


 A me const piace.


const è un concetto abbastanza inflazionato.

A me piace come è implementato in Go (anche se ci ho messo un pò a capirlo).
In D ci sono sia const che immutable.
In C const è complicato.


Ciao  Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Alcune cose sono interessanti, altre non so se hanno senso

2015-02-27 Per discussione Luca Bacchi
var pippo = element;

è la cosa correta...

Il giorno 27 febbraio 2015 13:53, Luca Bacchi bacch...@gmail.com ha
scritto:

 @carlos

 Nel tuo esempio intanto c'è una cosa poco chiara parlando in termini di
 Javascript: le variabili si dichiarano all'interno delle funzioni con var
 e lo si fa una volta sola. Quindi nel tuo codice già è presente un var
 pippo 2 volte, e questo potrebbe portare a dei fraintendimenti. La
 dichiarazione var pippo ovunque tu la metta (tu l'hai messa sia fuori che
 dentro) abbiamo detto che si comporta come se tu l'avessi messa una sola
 volta e all'inizio della funzione. Quindi si comporta esattamente come
 dovrebbe.

 Ti faccio un esempio un po' diverso:

 (function () {
 var pippo = 0;

 _.each([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], function (element) {
 var pippo = i;
 });

 console.log(pippo);
 })();

 (_.each è roba di undercorejs ma non te ne curar)

 Non ho provato ma direi che in questo caso dovrebbe stampare pippo = 0.
 Function Scope.

 Il giorno 27 febbraio 2015 13:26, Nadir Sampaoli nadirsampa...@gmail.com
 ha scritto:


 Il 27/feb/2015 11:18 Carlos Catucci carlos.catu...@gmail.com ha
 scritto:
  Arrow function mi fa tanto PHP, e non ho capito come funziona. Il tipo
 fa prima un esempio dove scrive
 
  employees.forEach(function(emp) {
  totalAge += emp.age;
  });
 
  E va bene, ma qui emp la definisce lui come parametro passato alla
 funzione, poi scrive
 
  employees.forEach(emp = {
  totalAge += emp.age;
  });
 
  che sarebbe la lambda, ma scritto cosi' e' poco chiaro.

 Quell'esempio secondo me spiega poco. La cosiddetta fat arrow (scritta
 `=`) è presa da coffeescript che ha due notazioni per le funzioni anonime.
 Una è `-` (o thin arrow) e dovrebbe essere equivalente ad una normale
 `function () {}`.

 La fat arrow invece fa il bind automatico del `this` alla funzione, cioè
 dovrebbe equivalere a `(function(){}).bind(this)`.

 Se non si è pratici di come funziona il this in JS la cosa può
 risultare poco chiara.

 --
 Nadir

 ___
 Python mailing list
 Python@lists.python.it
 http://lists.python.it/mailman/listinfo/python



___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Alcune cose sono interessanti, altre non so se hanno senso

2015-02-27 Per discussione Nadir Sampaoli
Il 27/feb/2015 11:18 Carlos Catucci carlos.catu...@gmail.com ha scritto:
 Arrow function mi fa tanto PHP, e non ho capito come funziona. Il tipo fa
prima un esempio dove scrive

 employees.forEach(function(emp) {
 totalAge += emp.age;
 });

 E va bene, ma qui emp la definisce lui come parametro passato alla
funzione, poi scrive

 employees.forEach(emp = {
 totalAge += emp.age;
 });

 che sarebbe la lambda, ma scritto cosi' e' poco chiaro.

Quell'esempio secondo me spiega poco. La cosiddetta fat arrow (scritta
`=`) è presa da coffeescript che ha due notazioni per le funzioni anonime.
Una è `-` (o thin arrow) e dovrebbe essere equivalente ad una normale
`function () {}`.

La fat arrow invece fa il bind automatico del `this` alla funzione, cioè
dovrebbe equivalere a `(function(){}).bind(this)`.

Se non si è pratici di come funziona il this in JS la cosa può risultare
poco chiara.

--
Nadir
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Alcune cose sono interessanti, altre non so se hanno senso

2015-02-27 Per discussione enrico franchi
2015-02-27 10:17 GMT+00:00 Carlos Catucci carlos.catu...@gmail.com:


 La const in se fa comodo ma si vive anche senza (per convenzione io uso
 una var maiuscola e so che e' una costante per cui non la cambio mai,
 inoltre uso i namespaces, quindi mi basta uno chiamato CONST seguito da
 .nomecostante e evito il problema.


A me const piace. Personalmente il fatto che in Python tutti i modi per
rendere qualcosa immutabile (almeno rispetto a cambiamenti accidentali)
siano lunghi dispiace. Di fatto l'unico modo di avere qualcosa di
*veramente* immutabile in pure Python e' fare information hiding con delle
chiusure lessicali (sempre a meno che qualcuno non si metta a smacchinare
con i frame a mano... ma bisogna un po' cercarsela, ecco) e l'altro modo e'
usare delle property... Ovviamente dal punto di vista del compilatore non
ci sono garanzie a sufficienza per fare le ottimizzazioni che si potrebbero
fare altrimenti e dal punto di vista dell'utente va bene (ed e' comodo)
solo se appunto si sta lavorando con degli oggetti.

Fosse per me, tutti gli assegnamenti dovrebbero essere const salvo
istruzione contraria.

Riguardo al const di Javascript non mi e' chiaro -- dovrei leggere la
specifica -- se si riferisce al binding o anche all'oggetto... ma per come
funziona Javascript credo la prima.



 Destructuring non e' male forse, ma mi sembra un poco contorto, in fondo
 e' un array no?


Destructuring mi sembra abbastanza analogo al pattern matching, che e' una
cosa *comodissima* in vaste classi di linguaggi (Scala, Haskell, ML).
Ovviamente la versione di Javascript e' pesantemente unsafe e non sono
particolarmente convinto che semplifichi la vita.

Il giochetto poi dei valori skippati fatto con le virgole mi sembra
veramente un'idea che poteva venire in mente a Lerdorf.

Spread e' un passare una lista come parametro ad una funzione che si
 aspetta una serie di parametri. Avrei preferito una evolusione del tipo
 *args,**kwargs alla Python.


Sintassi. Sono con te sul fatto che quella di Python sia piu' bella, ma
alla fine ... viene usato con un significato simile in Java, C++, C e Go (e
suppongo anche altri) e penso che abbia senso per JS andare avanti cosi',
visto che tanto la cagata di prendere un linguaggio bellino e rovinarlo con
features e sintassi che non hanno nulla a che vedere venne fatta fin
dall'inizio.


 Arrow function mi fa tanto PHP, e non ho capito come funziona. Il tipo fa
 prima un esempio dove scrive

 employees.forEach(function(emp) {
 totalAge += emp.age;
 });

 E va bene, ma qui emp la definisce lui come parametro passato alla
 funzione, poi scrive

 employees.forEach(emp = {
 totalAge += emp.age;
 });

 che sarebbe la lambda, ma scritto cosi' e' poco chiaro. Questioone di
 leggibilita', tutto qui.


Non vedo perche' PHP. Ok, forse - era piu' chiaro (come fanno in C++, Java
e Scala; e tanti altri). Non e' che = invece di - mi cambi la vita.
Poi il fatto e' che mi fa molto dispiacere come le persone non comprendano
la bellezza del paradigma funzionale, ne prendano dei pezzi e proseguono a
scrivere codice imperativo, con tutte le eventuali complicazioni di mappare
concetti funzionali nel mondo imperativo e tutti gli svantaggi logici ed
effettivi del mondo imperativo.

Cioe'... capirei un esempio del tipo

employees.sum(emp = emp.age) o qualcosa di simile...

Ma prendere una variabile e mutarla e' una cosa cosi' brutta... ti spacca
un'eventuale auto-parallelizzazione (che vabbe', in Javascript non si
potrebbe fare visto la semantica dei numeri). Ti incasina un sacco di cose
quando vuoi usare veramente higher order functions... ma voglio dire...

Vabbe'...


Non ho ancora visto bene il resto, gli iterators forse sono una cosa buona,
 idem per i generators, ma devo ancora darci un'occhio bene.


Ma si... alla fine e' quasi tutto sensato. Diciamo che cosi' Javascript non
sembra essersi perso 20 anni di evoluzione dei linguaggi.

La parte che mi fa paura sono le classi. Cioe'... Gia' per fare OOP in
Javascript c'erano tipo 3-4 modi diversi, ci mancava proprio il 5o. E poi
voglio vedere come mappano il modello di OO tradizionale con quello a
prototipi in modo che tutto funzioni senza sorprese (io ho idea che ci
sara' un altro manualetto di 200 pagine con tutti i gotcha su come le due
cose interagiscono).

-- 
.
..: -enrico-
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Alcune cose sono interessanti, altre non so se hanno senso

2015-02-27 Per discussione Carlos Catucci
2015-02-27 11:42 GMT+01:00 Luca Bacchi bacch...@gmail.com:

Ciao Luca, ben riletto

Ti spiego la let poi la tua mail è troppo lunga e mi fermo...

 In js il costrutto var definisce le variabili. Lo scope delle variabili è
 sempre funzionale: ovunque tu scriva var x = 1; è sempre come se tu lo
 scrivessi all'inizio della tua funzione. Functional Scope, appunto. Prova
 tu a immaginare l'attenzione che bisogna avere quando hai a che fare
 blocchi annidati, cicli, o cose simili.

 let permetterà di definire delle variabili con Block Scope, cioè potrai
 definire una variabile nel punto in cui ti serve e diciamo che il suo scope
 sarà limitato al blocco in cui è stata definita.


Si ma se io faccio uan cosa del tipo

var pippo = 0;
for( i = 0;i  10; i++) {

var pippo = i;




-- 
EZLN ... Para Todos Todo ... Nada para nosotros
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Alcune cose sono interessanti, altre non so se hanno senso

2015-02-27 Per discussione Carlos Catucci
2015-02-27 11:42 GMT+01:00 Luca Bacchi bacch...@gmail.com:

Partita per errore quella prima


Ti spiego la let poi la tua mail è troppo lunga e mi fermo...

 In js il costrutto var definisce le variabili. Lo scope delle variabili è
 sempre funzionale: ovunque tu scriva var x = 1; è sempre come se tu lo
 scrivessi all'inizio della tua funzione. Functional Scope, appunto. Prova
 tu a immaginare l'attenzione che bisogna avere quando hai a che fare
 blocchi annidati, cicli, o cose simili.

 let permetterà di definire delle variabili con Block Scope, cioè potrai
 definire una variabile nel punto in cui ti serve e diciamo che il suo scope
 sarà limitato al blocco in cui è stata definita.


Si ma se io faccio una cosa del tipo

var pippo = 0;
for( i = 1;i = 10; i++) {

var pippo = i;
}

console.log(pippo);

mi attendo che pippo torni perche' renizializzando una var dentro un blocco
la dichiarazione var pippo interna nulla ha a che fare con quella esterna.
Invece js riassegna fregandosene. A me sembra piu un errore strutturale di
progettazione, che una cosa da patchare alla come viene con una istruzione
apposita. Boh, aggiunge a mio parere complessita' senza dare poi dei
vantaggi cosi' grandi ne essere cosi necessaria.

Carlos
-- 
EZLN ... Para Todos Todo ... Nada para nosotros
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Alcune cose sono interessanti, altre non so se hanno senso

2015-02-27 Per discussione Alessandro Re
On Feb 26, 2015 8:27 PM, Carlos Catucci carlos.catu...@gmail.com wrote:

 http://www.dotnetcurry.com/showarticle.aspx?ID=1090

 Lo so e' ECMA Script, ma tanto prima o poi ci dovremo interagire con la
v. 6


Secondo te cosa non ha senso?

Personalmente ho sempre pensato che il bello di javascript era la
semplicità del linguaggio... Dopo aver letto questo mi è caduto tutto, a
parte le let, praticamente tutto il resto aggiunge complessità.

E poi la sintassi di molte cose nuove è esteticamente orribile :p
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Alcune cose sono interessanti, altre non so se hanno senso

2015-02-27 Per discussione Carlos Catucci
2015-02-27 11:02 GMT+01:00 Alessandro Re a...@ale-re.net:

 Secondo te cosa non ha senso?

 Personalmente ho sempre pensato che il bello di javascript era la
semplicità del linguaggio... Dopo aver letto questo mi è caduto tutto, a
parte le let, praticamente tutto il resto aggiunge complessità.

 E poi la sintassi di molte cose nuove è esteticamente orribile :p

Correggetemi se ho frainteso ma:

In effetti la let non la ho capita. Si va bene lo scope e' piu' chiaro, ma
una var interna potrebbe fare la stessa cosa senza aggiungere un ulteriore
reserved keyword.
La const in se fa comodo ma si vive anche senza (per convenzione io uso una
var maiuscola e so che e' una costante per cui non la cambio mai, inoltre
uso i namespaces, quindi mi basta uno chiamato CONST seguito da
.nomecostante e evito il problema.
Destructuring non e' male forse, ma mi sembra un poco contorto, in fondo e'
un array no?
Spread e' un passare una lista come parametro ad una funzione che si
aspetta una serie di parametri. Avrei preferito una evolusione del tipo
*args,**kwargs alla Python.
Arrow function mi fa tanto PHP, e non ho capito come funziona. Il tipo fa
prima un esempio dove scrive

employees.forEach(function(emp) {
totalAge += emp.age;
});

E va bene, ma qui emp la definisce lui come parametro passato alla
funzione, poi scrive

employees.forEach(emp = {
totalAge += emp.age;
});

che sarebbe la lambda, ma scritto cosi' e' poco chiaro. Questioone di
leggibilita', tutto qui.


Default parameters mi ricorda tanto Python, se esiste ok oppure assegna
questo valore.
Rest Parameters appunto sembra essere *args, solo he inevec che un array
gli passo una seire di parametri. Non vedo ancora il vantaggio, ma magari
sono io.
Non ho ancora visto bene il resto, gli iterators forse sono una cosa buona,
idem per i generators, ma devo ancora darci un'occhio bene.

Carlos
--
EZLN ... Para Todos Todo ... Nada para nosotros
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Alcune cose sono interessanti, altre non so se hanno senso

2015-02-27 Per discussione Luca Bacchi
Ciao Carlos, come stai?

Ti spiego la let poi la tua mail è troppo lunga e mi fermo...

In js il costrutto var definisce le variabili. Lo scope delle variabili è
sempre funzionale: ovunque tu scriva var x = 1; è sempre come se tu lo
scrivessi all'inizio della tua funzione. Functional Scope, appunto. Prova
tu a immaginare l'attenzione che bisogna avere quando hai a che fare
blocchi annidati, cicli, o cose simili.

let permetterà di definire delle variabili con Block Scope, cioè potrai
definire una variabile nel punto in cui ti serve e diciamo che il suo scope
sarà limitato al blocco in cui è stata definita.

Il giorno 27 febbraio 2015 11:17, Carlos Catucci carlos.catu...@gmail.com
ha scritto:


 2015-02-27 11:02 GMT+01:00 Alessandro Re a...@ale-re.net:
 
  Secondo te cosa non ha senso?
 
  Personalmente ho sempre pensato che il bello di javascript era la
 semplicità del linguaggio... Dopo aver letto questo mi è caduto tutto, a
 parte le let, praticamente tutto il resto aggiunge complessità.
 
  E poi la sintassi di molte cose nuove è esteticamente orribile :p

 Correggetemi se ho frainteso ma:

 In effetti la let non la ho capita. Si va bene lo scope e' piu' chiaro, ma
 una var interna potrebbe fare la stessa cosa senza aggiungere un ulteriore
 reserved keyword.
 La const in se fa comodo ma si vive anche senza (per convenzione io uso
 una var maiuscola e so che e' una costante per cui non la cambio mai,
 inoltre uso i namespaces, quindi mi basta uno chiamato CONST seguito da
 .nomecostante e evito il problema.
 Destructuring non e' male forse, ma mi sembra un poco contorto, in fondo
 e' un array no?
 Spread e' un passare una lista come parametro ad una funzione che si
 aspetta una serie di parametri. Avrei preferito una evolusione del tipo
 *args,**kwargs alla Python.
 Arrow function mi fa tanto PHP, e non ho capito come funziona. Il tipo fa
 prima un esempio dove scrive

 employees.forEach(function(emp) {
 totalAge += emp.age;
 });

 E va bene, ma qui emp la definisce lui come parametro passato alla
 funzione, poi scrive

 employees.forEach(emp = {
 totalAge += emp.age;
 });

 che sarebbe la lambda, ma scritto cosi' e' poco chiaro. Questioone di
 leggibilita', tutto qui.


 Default parameters mi ricorda tanto Python, se esiste ok oppure assegna
 questo valore.
 Rest Parameters appunto sembra essere *args, solo he inevec che un array
 gli passo una seire di parametri. Non vedo ancora il vantaggio, ma magari
 sono io.
 Non ho ancora visto bene il resto, gli iterators forse sono una cosa
 buona, idem per i generators, ma devo ancora darci un'occhio bene.

 Carlos
 --
 EZLN ... Para Todos Todo ... Nada para nosotros

 ___
 Python mailing list
 Python@lists.python.it
 http://lists.python.it/mailman/listinfo/python


___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python