Re: [Python] Alcune cose sono interessanti, altre non so se hanno senso
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 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-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 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 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
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
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 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 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 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
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 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
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