Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
POCO F9 Pro arriva sul mercato con l'obiettivo di portare prestazioni da smartphone top di gamma in una fascia di prezzo "più aggressiva", senza rinunciare a un comparto fotografico finalmente all'altezza. Dopo averlo testato sul campo, emerge uno smartphone molto più completo rispetto alla generazione precedente, ma anche con alcuni piccoli compromessi che diventano difficili da ignorare quando il prezzo di listino sfiora i 1.000 euro.
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Snapdragon Soung Gen 2 è la piattaforma Qualcomm per i dispositivi audio sempre più integrati nel mondo dell'intelligenza artificiale: al prorpio interno tanta potenza elaborativa per gestire al meglio le necessità d'uso dell'agentic AI
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
In occasione del proprio Snapdragon Summit Qualcomm annuncia i due nuovi chip per dispositivi mobile di fascia alta che entreranno nel mercato nel corso del 2027: tanta potenza a disposizione per elaborazioni di intelligenza artificiale sempre più complesse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-03-2009, 16:22   #1
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
[Python/Scheme] The Adventures of a Pythonista in Schemeland

Per chi non conoscesse l'argomento, le "avventure" sono una serie di articoli di Michele Simionato che esplorano la programmazione funzionale in scheme partendo da un background differente (python, appunto).
L'autore è brillante e acuto e la lettura è piacevole ed illuminante, anche se richiede ovviamente un pò d'impegno da parte del lettore (gli argomenti non sono banalissimi). Le linko dato che sono state finalmente raccolte in un corpus ragionato.
Buon divertimento

http://www.phyast.pitt.edu/~micheles/scheme/

Sono disponibili anche in pdf: http://www.phyast.pitt.edu/~micheles...Schemeland.pdf
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 21-03-2009, 21:01   #2
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Il materiale è tantissimo: mi ci vorrà un bel po' per "digerirlo" tutto, pur avendo studiato piacevolmente (ai tempi) Scheme all'università.
Ma le opinioni e le esperienze di Michele meritano sicuramente di essere studiate.

Comunque con gli occhi di oggi per quanto mi riguarda rimane un grande, grosso "problema":

http://shootout.alioth.debian.org/de...=mzscheme&id=1

http://shootout.alioth.debian.org/de...ng=python&id=2

__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 22-03-2009, 10:21   #3
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Comunque con gli occhi di oggi per quanto mi riguarda rimane un grande, grosso "problema":
http://shootout.alioth.debian.org/de...=mzscheme&id=1
http://shootout.alioth.debian.org/de...ng=python&id=2
Umh... non so se l'ho capita. Il problema è che python è più lento?
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 22-03-2009, 11:43   #4
javaboy
Registered User
 
Iscritto dal: May 2005
Città: far away from home
Messaggi: 1038
Quote:
Originariamente inviato da shinya Guarda i messaggi
Umh... non so se l'ho capita. Il problema è che python è più lento?
Forse si riferisce al numero di righe di codice.
javaboy è offline   Rispondi citando il messaggio o parte di esso
Old 22-03-2009, 13:54   #5
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
No, mi riferivo alla leggibilità del codice: trovo Python di gran lunga migliore rispetto a Scheme (e ai linguaggi funzionali in generale) da questo punto di vista.

Ovviamente è una questione di gusti personali.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 22-03-2009, 15:05   #6
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
A me piacciono poco entrambe le versioni, in quella python tutto quel bit-shifting confonde non poco la lettura, e forse era meglio fattorizzarlo in un paio di funzioni.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 22-03-2009, 17:44   #7
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Nemmeno a me piacciono, ma ho scelto questo esempio perché non è né troppo semplice né troppo lungo. Mi serviva per mettere in evidenza come già con codice un po' più complicato la differenza in termini di leggibilità risulta marcata, sebbene, come giustamente hai affermato, il codice si poteva migliorare.

Le scelte fatte penso siano figlie di un compromesso fra "complicazione" e velocità di esecuzione.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 26-03-2009, 15:21   #8
javaboy
Registered User
 
Iscritto dal: May 2005
Città: far away from home
Messaggi: 1038
Nel tempo libero sto studiando scheme/lisp.

Sto cominciando a capire il perchè di affermazioni come queste:
http://lispers.org/
javaboy è offline   Rispondi citando il messaggio o parte di esso
Old 26-03-2009, 15:43   #9
||ElChE||88
Senior Member
 
Iscritto dal: Dec 2003
Messaggi: 4908
Quote:
Originariamente inviato da javaboy Guarda i messaggi
Nel tempo libero sto studiando scheme/lisp.

Sto cominciando a capire il perchè di affermazioni come queste:
http://lispers.org/
Si ma alcune...

“Historically, languages designed for other people to use have been bad: Cobol, PL/I, Pascal, Ada, C++. The good languages have been those that were designed for their own creators: C, Perl, Smalltalk, Lisp.”

||ElChE||88 è offline   Rispondi citando il messaggio o parte di esso
Old 26-03-2009, 16:01   #10
javaboy
Registered User
 
Iscritto dal: May 2005
Città: far away from home
Messaggi: 1038
Quote:
Originariamente inviato da ||ElChE||88 Guarda i messaggi
Si ma alcune...

“Historically, languages designed for other people to use have been bad: Cobol, PL/I, Pascal, Ada, C++. The good languages have been those that were designed for their own creators: C, Perl, Smalltalk, Lisp.”


Concordo!
Questa affermazione è fuori di testa. Pascal è un linguaggio estremamente semplice ed elegante, c++ certamente NO ma nella sua nicchia non ha rivali.
Perl oltre ad essere orribile può essere rimpiazzato in ogni situazione da linguaggi estremamente migliori come Ruby o Python.
javaboy è offline   Rispondi citando il messaggio o parte di esso
Old 26-03-2009, 16:32   #11
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da javaboy Guarda i messaggi

Concordo!
Questa affermazione è fuori di testa. Pascal è un linguaggio estremamente semplice ed elegante, c++ certamente NO ma nella sua nicchia non ha rivali.
Perl oltre ad essere orribile può essere rimpiazzato in ogni situazione da linguaggi estremamente migliori come Ruby o Python.
Quell'affermazione e' del 2001 circa e va considerata in quel contesto. All'epoca Python era ancora giovane visto che era appena arrivato alla versione 2 (i.e. appena introdotti garbage collector decente e unicode).
Ruby era conosciuto praticamente solo in Giappone.
In compenso Perl era considerato il linguaggio per la programmazione web per eccellenza. (PHP arrivera' solo qualche anno dopo)
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 26-03-2009, 16:49   #12
||ElChE||88
Senior Member
 
Iscritto dal: Dec 2003
Messaggi: 4908
Quote:
Originariamente inviato da marco.r Guarda i messaggi
In compenso Perl era considerato il linguaggio per la programmazione web per eccellenza. (PHP arrivera' solo qualche anno dopo)
Anche se ai tempi non c'erano alternative non cambia il fatto che è/era un linguaggio orribile.
E resta comunque la cazzata sul Pascal...

Ultima modifica di ||ElChE||88 : 26-03-2009 alle 16:51.
||ElChE||88 è offline   Rispondi citando il messaggio o parte di esso
Old 26-03-2009, 18:25   #13
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da ||ElChE||88 Guarda i messaggi
Anche se ai tempi non c'erano alternative non cambia il fatto che è/era un linguaggio orribile.
E resta comunque la cazzata sul Pascal...
Ripeto, l'affermazione va contestualizzata.
Ecco una spiegazione un po' piu' lunga che da Paul Graham (l'autore della suddetta citazione) in http://www.paulgraham.com/icad.html che permette di capire meglio come era python nel 2002.

Quote:
As an illustration of what I mean about the relative power of programming languages, consider the following problem. We want to write a function that generates accumulators-- a function that takes a number n, and returns a function that takes another number i and returns n incremented by i.

(That's incremented by, not plus. An accumulator has to accumulate.)

In Common Lisp this would be
Codice:
(defun foo (n) (lambda (i) (incf n i)))
and in Perl 5,
Codice:
sub foo { my ($n) = @_; sub {$n += shift} }
which has more elements than the Lisp version because you have to extract parameters manually in Perl.

...

If you try to translate the Lisp/Perl/Smalltalk/Javascript code into Python you run into some limitations. Because Python doesn't fully support lexical variables, you have to create a data structure to hold the value of n. And although Python does have a function data type, there is no literal representation for one (unless the body is only a single expression) so you need to create a named function to return. This is what you end up with:
Codice:
def foo(n):
    s = [n]
    def bar(i):
        s[0] += i
        return s[0]
    return bar
Python users might legitimately ask why they can't just write
Codice:
def foo(n):
    return lambda i: return n += i
or even
Codice:
def foo(n):
    lambda i: n += i
and my guess is that they probably will, one day. (But if they don't want to wait for Python to evolve the rest of the way into Lisp, they could always just...)

In OO languages, you can, to a limited extent, simulate a closure (a function that refers to variables defined in enclosing scopes) by defining a class with one method and a field to replace each variable from an enclosing scope. This makes the programmer do the kind of code analysis that would be done by the compiler in a language with full support for lexical scope, and it won't work if more than one function refers to the same variable, but it is enough in simple cases like this.

Python experts seem to agree that this is the preferred way to solve the problem in Python, writing either
Codice:
def foo(n):
    class acc:
        def __init__(self, s):
            self.s = s 
        def inc(self, i):
            self.s += i
            return self.s
    return acc(n).inc
or
Codice:
class foo:
    def __init__(self, n): 
        self.n = n
    def __call__(self, i):
        self.n += i
        return self.n
I include these because I wouldn't want Python advocates to say I was misrepresenting the language, but both seem to me more complex than the first version. You're doing the same thing, setting up a separate place to hold the accumulator; it's just a field in an object instead of the head of a list. And the use of these special, reserved field names, especially __call__, seems a bit of a hack.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 26-03-2009, 18:43   #14
||ElChE||88
Senior Member
 
Iscritto dal: Dec 2003
Messaggi: 4908
Quote:
Originariamente inviato da marco.r Guarda i messaggi
Ripeto, l'affermazione va contestualizzata.
A quei tempi Perl era orribile senza alternative migliori, ora invece è orribile con alternative migliori. Alternative o no resta comunque orribile.
E poi nella sua affermazione non dice che Perl è il miglior linguaggio per la programmazione web (affermazione che a quei tempi sarebbe stata vera), ma dice che Perl è un buon linguaggio di programmazione.

PS:
Quote:
sub foo { my ($n) = @_; sub {$n += shift} }

Ultima modifica di ||ElChE||88 : 26-03-2009 alle 18:45.
||ElChE||88 è offline   Rispondi citando il messaggio o parte di esso
Old 27-03-2009, 07:14   #15
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da marco.r Guarda i messaggi
Ripeto, l'affermazione va contestualizzata.
Ecco una spiegazione un po' piu' lunga che da Paul Graham (l'autore della suddetta citazione) in http://www.paulgraham.com/icad.html che permette di capire meglio come era python nel 2002.
Permettimi: non si può giudicare un linguaggio di programmazione da UNA sola caratteristica che gli manca, e per la quale sono necessari dei workaround "poco eleganti".

Carattistica tipica di linguaggi funzionali (e Python non ha questa pretesa, mi pare), e che non ti cambia la vita (anche se l'accesso alle variabili "non locali" è stato introdotto con Python 3.0; ma certamente non passerò a questa versione per le "nonlocal", quanto per altre cose ben più utili ).

Detto poi da uno che fa affermazioni che lasciano il tempo che trovano sulla programmazione oggetti...

Quanto a PERL, anche se permette di sfruttare quella caratteristica, basti vedere il codice prodotto per "apprezzarlo". Penso sia in assoluto il linguaggio di programmazione più brutto che sia mai stato concepito da mente (perversa) umana.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole! realme 16 Pro Harry Potter Edition: il nuovo mid...
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Il cervello umano insegna all'IA a fare ...
WhatsApp prepara una nuova barra di navi...
Tesla anticipa il nuovo Roadster con un ...
Tesla FSD nelle zone 30 di Bruxelles: il...
Xiaomi aggiorna la gamma di tablet con i...
Ha percorso 1.338 km senza mai ricaricar...
TCL annuncia l'arrivo in Italia dek Kids...
WINDTRE migliore operatore in Italia com...
Apple Watch SE 3 Cellular da 44 mm a 289...
PEC compromesse inviano falsi solleciti ...
Samsung Galaxy A57 5G a 399€ invece di 5...
Google Maps si aggiorna su Android Auto,...
Nuova auto che sembra una Twingo? S&igra...
Schneider Electric verso l'acquisizione ...
WhatsApp prepara i promemoria per i comp...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:09.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v