|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#21 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#22 | |||||||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Questo è niente: in genere sono decisamente più prolisso.
Quote:
Quote:
Quote:
Quote:
Poi, come hai detto, si può anche fare a meno dell'ereditarietà multipla (e io generalmente ne faccio a meno, ma in alcuni casi m'è tornata molto comoda e utile). Quote:
Utilizzare delle classi (con l'ereditarietà multipla) per definire un "comportamento" non è un'emulazione né tanto meno una loro "castrazione", ma una precisa scelta di design. Quote:
Quote:
IN PIU' hai la possibilità di cambiare il comportamento di singole istanze o di un'intera classe a runtime, se il modello del tuo progetto lo prevede oppure ti accorgi che lo semplifica (il modello). Riassumendo il tutto: con Python non hai nulla di meno di quanto offrono linguaggi come Java in termini di modellazione di una soluzione tramite il concetto di oggetto. Anzi, hai una semplificazione (grazie anche al weak typing) ed eventualmente degli strumenti aggiuntivi.
__________________
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 |
|||||||
|
|
|
|
|
#23 | |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
__________________
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 |
|
|
|
|
|
|
#24 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
__________________
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 |
|
|
|
|
|
#25 |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Ma sei quasi altrettanto zelota
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
#26 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
__________________
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 |
|
|
|
|
|
#27 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7263
|
in effetti è jsp/servlet/java beans ecc.. JEE non è altro che una specifica in realtà. poi i vari tomcat, jboss, glassfish implementano più o meno parti di questa specifica
|
|
|
|
|
|
#28 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#29 | |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7263
|
no per me non è un linguaggio adatto. forse perchè lo conosco molto poco, ma visto che sono in buona compagnia ci sarà un motivo
Quote:
|
|
|
|
|
|
|
#30 | ||||||||
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Quote:
![]() Quote:
Quote:
Io faccio una classe che contiene e gestisce degli elementi. Inizialmente per implementare questo comportamento uso una lista (in python) come attributo, poi però l'implementatore della classe si accorge di non avere bisogno di una lista perchè la classe non deve modificare gli elementi, così decide di cambiare l'implementazione usando una tupla. Con accesso libero ai membri niente vieta ad un cliente della classe di prendersi la lista e farci un "obj.attributo.append(x)" che , dopo il cambiamento da lista a tupla diventerà un espressione invalida. Definendo l'attributo come private e regolando l'accesso allo stesso attraverso dei metodi si sarebbe potuto evitare questo inconveniente. Quote:
Quote:
Quote:
Quote:
Quote:
Ciao
__________________
GPU Compiler Engineer |
||||||||
|
|
|
|
|
#31 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Ehm, veramente mi riferivo a te che tiri spesso in ballo Gunnerson, Fowler, (Santo. Subito!) Kent, ecc.
__________________
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 |
|
|
|
|
|
#32 | ||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
Un po' come il linguaggio macchina: ci puoi fare tutto, anche la metaprogrammazione. Chissà perché...
__________________
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 |
||
|
|
|
|
|
#33 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Tanto piu' che nel padre dei linguaggi OO (Smalltalk) e' una cosa assolutamente naturale. Ammetto pero' di essere di parte, in quanto sono un amante del duck typing e riesco ad apprezzare vincoli piu' statici solo in linguaggi che implementano un sistema di tipi decente (il che ne esclude la maggior parte, C++, Java e C# compresi).
__________________
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 |
|
|
|
|
|
|
#34 | ||
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Quote:
Parlavo di "rigorosità" in senso didattico. A mio parere più un linguaggio è rigido e definisce bene ciò che vuole esprimere con le sue strutture sintattiche e più è adatto all'insegnamento , aldilà della capacità espressiva grezza del linguaggio stesso. Tanto per intenderci all'epoca il pascal era uno di quelli. Quote:
__________________
GPU Compiler Engineer |
||
|
|
|
|
|
#35 | ||||||||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Ah. Sei fortunato che non sono in vena oggi.
Quote:
Quote:
Purtroppo è una cosa che m'è capitata non poche volte. Quote:
Quote:
Poi sui problemi di design sono d'accordo: non avendo maturato adeguatamente lo strumento potrebbero presentarsi più facilmente nel primo caso piuttosto che nel secondo (ma anche col secondo è facile farsi scappare la mano e tirare fuori interfacce per la qualunque, anche quando non ce ne sarebbe bisogno Quote:
Quote:
Ma le classi astratte non ci sono anche in Java? Quote:
Quote:
Ciao. Anzi: notte.
__________________
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 |
||||||||
|
|
|
|
|
#36 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
__________________
|
|
|
|
|
|
#37 | |||
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Quote:
Quote:
E' anche una questione di punto di vista. In python puoi definire gli attributi quando vuoi, basta avere l'oggetto sottomano. Punto. Non mi sembra complicato, quelli che elenchi sono casi particolari (a parte il primo: non si possono definire attributi di istanza nella definizione della classe, e d'altra parte non si ha alcuna istanza sottomano per farlo...).
__________________
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 |
|||
|
|
|
|
|
#38 | ||||||||
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Quote:
In questo contesto speravo fosse un po' meno equivocabile, ma per me va bene continuare ad usare il termine "capacità espressiva" o al max "potere espressivo" Quote:
Quote:
Quote:
Comunque per me non è una questione di naturalezza o meno nell'apprendimento. Converrai con me che una volta capito cos'è l'ereditarietà , che è la parte difficile, l'apprendere l'ereditarietà singola o multipla non è difficile. All'inizio è solo una regola : "Non puoi ereditare da più di una classe" . Il significato viene da se dopo Quote:
Quote:
Quote:
Python è un linguaggio che mi piace, lo ammetto. Odio di esso solo la sintassi e certe scelte , come ad esempio quella di permettere certi costrutti che se usati impropriamente possono veramente rendere un programma illeggibile e vietare scritture come "+=" , "*=", ... etc usando come scusa che diminuiscono la leggibilità ![]() Quote:
__________________
GPU Compiler Engineer Ultima modifica di AnonimoVeneziano : 08-02-2008 alle 23:59. |
||||||||
|
|
|
|
|
#39 | ||||
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Quote:
) tutto ciò che in python è scritto con doppio underscore (ed è uno dei motivi che mi fa odiare la sintassi python ), concordo con te che è un comportamento "non critico" se si segue una certa convenzione...Certo, a mio parere le costrizioni sono meglio delle convenzioni, anche se in parte ti limitano la libertà (basta che siano a fin di bene), ma è ancora più vero se tutto ciò è a fini didattici. Visto che il thread starter voleva un linguaggio con cui imparare l'OO credo che un po' di "costrizioni buone" possano fargli solo bene. Quote:
Quote:
EDIT: Ah, scusa, mi sono dimenticato una cosa ... Quote:
Codice:
class classe2: a = [1,2] def __init__(self): return >>> b = classe2() >>> b.a [1, 2]
__________________
GPU Compiler Engineer Ultima modifica di AnonimoVeneziano : 09-02-2008 alle 00:26. |
||||
|
|
|
|
|
#40 | ||||||||||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
![]() Quote:
Quote:
Quote:
Quote:
L'ereditarietà multipla è "naturalmente semplice" da apprendere perché si ferma a una sola regola: una classe può ereditare da una o più classi. E facendo l'esempietto del gatto che è un felino ed è pure un mammifero, oppure del carro armato che è composto da un carro e da un cannone, se ne esce fuori abbastanza agevolmente (sono due esempi del kaiser, ma a chi è digiuno di programmazione servono cose terra-terra per comprendere velocemente concetti come questo Quote:
![]() Quote:
Quote:
Ad esempio se prendiamo i numeri interi, linguaggi come Java hanno dei tipi base limitati, mentre noi esseri umani siamo abituati a pensare e trattare numeri "virtualmente illimitati". Con Python quando usi un interi non ti preoccupi di quanto spazio e fino a quale numero puoi rappresentare: li usi e basta. Con Java, dopo esserti sorbito il concetto di dimensione di byte, short, long, poi ti viene detto che se ti serve rappresentare numeri più grandi devi ricorrere a BigInt (o BigInteger, adesso non ricordo): quindi per lavorare con gli interi "a 360°" hai bisogno di conoscere 4 cose. Quote:
Quote:
Personalmente tendo a usarli poco perché sono troppo C-like, e IMHO abbassano troppo la leggibilità del codice. A questo Codice:
Count += 1 Codice:
Count = Count + 1
__________________
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 |
||||||||||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:59.












Ma le classi astratte non ci sono anche in Java?









