|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jul 2011
Messaggi: 126
|
python vs java
Buon giorno a tutti sono uno studente di ingegneria informatica prossimo alla laurea di primo livello.Al fine di conseguire tale laurea devo svolgere una monogroafa ("tesi"). per tale monografia mi sono rivolto al professore di programmazione a oggetti. tale corso è imporontato sul linguaggio java e siccome tale professore intende spostare negli anni futuri il corso dal linguaggio java al linguaggio python mi ha assegnato di svolgere la mia monografia sulle differenze (e similitudini) tra i due linguaggi.L
La monografia deve essere composta di due parti: -una parte introduttiva che descriva (brevemente) i linguaggi a oggetti e che si addentri nella spiegazione di differenze e similitudini tra java e python (con maggiore attenzione all'implementazione piu che a complessità e efficienza) -una parte contenente la "traduzione" delle esercitazione del corso dal java al python. dato che non ho mai avuto a che fare col pyton mi chiedevo fosse opportuno acquistare un manuale o affidarmi al materiale reperibile in rete e che ambiente di sviluppo mi conviene utilizzare e nel caso avessi dei problemi dove chiedere "aiuto". mi rivolgo a questo sito perchè lo utilizzo per informazoni anche se prevalentemente riguardanti hardware sperando che sappiate darmi qualche consiglio o indicazioni su siti a cui postrei appoggiarmi. Ringrazio tutti per la disponibilità |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Per un'introduzione veloce a Python, visto che non sei un novellino: Learn Python in 10 minutes.
Per l'obiettivo che ti poni: Python for Java Programmers. Non penso che ti serva altro. Eventualmente puoi dare un'occhiata al libro che ho in firma, ma penso che servirà più che altro al tuo professore se vuole introdurre alla programmazione degli studenti usando Python. In ogni caso in questo forum troverai sicuramente qualcuno disposto ad aiutarti nel caso in cui avessi bisogno.
__________________
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 |
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Jul 2011
Messaggi: 126
|
Quote:
durante il mio "corso di java" si è utilizzato eclipse puo andar bene o conviene usarne un altro? |
|
|
|
|
|
|
#4 | |||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Più che altro sei stato fortunato che mi son trovato a dare un'occhiata veloce al forum.
Quote:
PyPy è un progetto più recente che sta riscuotendo un notevole successo e che probabilmente è destinato a diventare la futura versione mainstream. Implementa un compilatore JIT x86 (quello ARM è quasi pronto) e presenta delle buone prestazioni. Quote:
Quote:
Poi, alla fine, è sempre una questione di gusti, eh!
__________________
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 |
|||
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Feb 2001
Città: Foggia
Messaggi: 2519
|
quoto cesare su tutta la linea, in più ti segnalo: http://pythonconquerstheuniverse.wor...va-and-python/
Per quanto riguarda l'IDE: per Java ho sempre utilizzato netbeans con somma soddisfazione ma devo dire che, dal mio punto di vista, ho trovato il plugin per python ancora (purtroppo) troppo acerbo. Al contrario invece Eclipse+pyDev va una favola ma oggettivamente eclipse fa abbastanza pena. L'IDE python di elezione per me è pycharm, ma, come detto, è a pagamento. @cdimauro: quando dici "La mainstream si chiama CPython, che non è dotata di compilatore JIT a runtime, per cui un confronto con la JVM standard è a dir poco impietoso." intendi che la JVM ha prestazioni superiore a CPython ?
__________________
mi sembra di essere tornato adolescente ai bei tempi.. che figata essere di nuovo su questo forum |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Jul 2011
Messaggi: 126
|
ringrazio entrambi per le rispsote quanto prima provvederò a "rinfrescare" le mie conoscenze (piu che altro quelle teoriche) di java e inizierò a leggere il materiale da voi indicatomi iniziando a buttare giu qualche riga di confronto su cui (spero) avrete voglia di discutere in modo da poter fornire un lavoro piu accurato e preciso.
|
|
|
|
|
|
#7 | |||||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
Quote:
Non vorrei assaggiare la Nutella e poi avere l'ossessione di volerla mangiare sempre. Quote:
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 |
|||||
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Jul 2011
Messaggi: 126
|
in seguito a una breve descrizione della programmazione orientata agli oggetti volevo inserire una "breve" analisi comparativa delle caratteristiche "pratiche" dei due linguaggi (ad esempio java è tipizzato python no).Le caratteristiche di python sono facilmente deducibili dal tutorial (Learn Python in 10 minutes) che mi avete linkato sopra ma quelle del java non le trovo conoscete mica un totorial simile ma relativo a java?
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Credo che la parola "tipizzato" in italiano non esista, volevi forse dire "tipato"?
Ad ogni modo Java rientra nella categoria dei linguaggi staticamente tipati (statically typed languages), mentre Python in quella dei linguaggi dinamicamente tipati (dinamically typed languages). In una vecchia intervista su aritma ho letto che Guido Van Rossum (il papà di Python) parlava della sua creatura in termini di "runtime typed language". Entrambi poi fanno parte della categoria dei linguaggi "fortemente tipati" (strongly typed vs weakly typed). Un abbozzo sulle principali differenze tra queste categorie (static vs dinamyc e strong vs weak) lo trovi in uno dei link precedenti. Poi se vuoi leggere qualcosa di più puoi provare a dare un'occhiata su wikipedia alla voce "Type System" e da li cercare altre letture.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#10 | |
|
Member
Iscritto dal: Jul 2011
Messaggi: 126
|
Quote:
Al momento sto svolgendo quella di java evidenziando caratteristiche (sia positive che negative) come: Codice:
Java è un linguaggio di programmazione orientato agli oggetti, creato da James Gosling e altri ingegneri di Sun Microsistem. Java è un marchio registrato di Oracle. Le principali caratteristiche del linguaggio Java sono: 1. sintassi; 2. gestione delle eccezzioni e memoria efficiente 3. indipendenza della piattaforma 4. orientato agli oggetti 5. sicurezza 6. risorse per l’esecuzione 2.1 Sintassi La sintassi del Java è molto simile a quella del C e del C++ (con ovvie differenze) e quindi, per un programmatore, non è molto traumatico il passaggio dai linguaggi sopracitati al Java. 2.2 Gestione di eccezioni e memoria Il Java ha un sistema di gestione delle eccezioni molto efficiente e anche un sistema di deallocazione della memoria molto funzionale utilizzando il Garbage Collector e sollevando così il programmatore alla deallocazione manuale della memoria allocata precedentemente. La gestione della memoria molto efficiente conferisce al Java un requisito di robustezza molto elevato. 2.3 indipendenza della piattaforma Questo è uno dei punti di forza principali del Java. Infatti con questo linguaggio, una volta compilato il codice sorgente - utilizzando la Java Virtual Machine l'applicativo potrà essere eseguito su macchine aventi sistema Windows, Machintosh o Linux. La JMV è un software che compie, principalmente, un lavoro di interprete del codice compilato. Una volta compilato il linguaggio non avremo un file in linguaggio macchina che può essere eseguito immediatamente, ma bensì avremo un listato in bytecode. Il bytecode ottenuto è indipendente dalla piattaforma di compilazione e l'indipendenza della piattaforma è ottenuta grazie alla JMV che traduce il bytecode nel linguaggio macchina relativo per la piattaforma di esecuzione. Inoltre la JVM conferisce al Java la caratteristica di essere multithreading ovvero avere la possibilità di mandare in esecuzioni più processi in maniera parallela. 2.4 Orientato agli oggetti Il Java è un linguaggio puramente orientato agli oggetti. La scrittura di linguaggio orientato agli oggetti in Java, è più semplice rispetto agli altri linguaggio orientati agli oggetti come per esempio C++. Come detto prima, il Garbage Collector si preoccupa della gestione della memoria e quindi in Java non è presente l'aritmetica dei puntatori come in C o C++. Questo conferisce al linguaggio Java una facilità di apprendimento molto elevato in quanto la gestione dei puntatori e l'allocazione della memoria è considerato il punto debole, dal punto di vista della rapidità di apprendimento, dei linguaggi che consentono queste operazioni. 2.5 Sicurezza Altro punto di forza del linguaggio Java è la sicurezza nell'esecuzione delle aplicazioni. Prima di tutto con il Java, dato che la gestione della memoria non viene gestita dall'utente, non ci sarà più il pericolo di andare a scrivere in celle di memoria sbagliate magari sovrascrivendo dati importanti. Si ha dunque che il lancio di un'applicazione scritta in Java viene completamente gestita dalla JVM e quindi molti problemi di overflow dei dati ed errori nella gestione della memoria sono scongiurati. 2.6 Risorse per l’esecuzione Questo è uno dei punti di debolezza più evidenti del Java. La mancanza dell'aritmetica dei puntatori rende il Java molto più avido per quanto riguarda la richiesta delle risorse necessarie per l'esecuzione. Questo perchè se in un'applicazione viene instanziato un array, una volta terminate le operazioni da eseguire sull'array sarebbe molto più efficiente poter deallocarlo in maniera manuale, rilasciando la memoria invece di far compiere questa operazione al Garbage Collector alla fine dell'applicazione. Dunque se dobbiamo sviluppare applicazioni per sistemi con memoria limitata come potrebbe essere un sistema embedded come una telecamera che supporta l'installazione di applicazioni, non è assolutamente consigliabile l'utilizzo del Java. In questi ambienti è molto più indicato utilizzare linguaggi come il C e il C++ che, anche se di più difficile apprendimento, garantisticono una gestione della memoria manuale per poter sfruttare al meglio le risorse limitate del sistema. questo è quello che ho "recuperato" dalle slide del mio corso e dalla rete ma volevo sapere se |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
In questo momento ho poco tempo. Appena posso mi smazzo quello che ho scritto. Per il resto concordo con banryu.
__________________
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 |
|
|
|
|
|
#12 |
|
Member
Iscritto dal: Jul 2011
Messaggi: 126
|
devo "consegnare" la monografia ai primi di settembre quindi ho tutto il tempo (volendo anche per farla 2 volte XD) penso che la parte piu costosa (in termini di tempo)sia la traduzione delle esercitazioni dal java al python ma vorrei fare un bel lavoro in modo da poterlo poi sfruttare come partenza per la tesi della laurea specialistica. oggi pomeriggio mi leggo un po di recensioni e analisi di python e vedo di elaborarne qualche cosa in modo da terminare la parte introduttiva e chiedere il vostro parere sull'insieme
grazie ancora della disponibilità |
|
|
|
|
|
#13 | ||
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Premessa Fondamentale:
Non ho una preparazione rigorosa alle spalle, quindi osservazioni e correzioni a quanto segue sono le benvenute. JcBobo, prendi cum grano salis le osservazioni che seguono. Quote:
Fatta questa premessa, possiamo prendere Java e Python e metterli a confronto andando a vedere quali paradigmi di programmazione ognuno dei due linguaggi supporta; nel caso in cui un eventuale paradigma sia supportato da entrambi i linguaggi possiamo andare a vedere come un linguaggio lo supporti rispetto all'altro. Ad esempio: Python supporta il paradigma funzionale, mentre Java no. Altro esempio: il paradigma orientato agli oggetti è supportato sia in Java che in Python, ma non nello stesso modo. Quote:
Il linguaggio fornisce alcuni strumenti (costrutti, tipi primitivi) che non c'entrano con il paradigma OO. E' il paradigma di programmazione ad essere OO; il linguaggio offre un supporto a tale paradigma più o meno solido. Ci sarebbero altre cose da rivedere con calma, perchè ho l'impressione che tu abbia "mescolato" alcuni concetti facendo un po' di confusione, per non parlare di alcune affermazioni decisamente false. Ad esempio quando citi la presenza di un garbage collector per la memoria nel paragrafo titolato "2.4 Orientato agli oggetti" (la gestione automatica della memoria non c'entra niente con l'orientamento agli oggetti), oppure quando dici che non potendo deallocare manualmente la memoria, un array allocato in Java verrà deallocato dal g.c. solo al termine dell'applicazione (è falso) e che questo determinerebbe un uso inefficiente delle risore (questo è decisamente contestabile quando ancora non falso).
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 27-07-2011 alle 16:45. |
||
|
|
|
|
|
#14 | ||
|
Member
Iscritto dal: Jul 2011
Messaggi: 126
|
quindi se ho ben capito dove ho scritto che java è un linguaggio a oggetti dovrei mettere che java è un linguaggio che supporta il paradigma della programmazione a oggetti (oltre altri paradigmi).
il corso che ho seguito si è occupato esclusivamente del java "applicato" alla programmazione a oggetti (infatti il nome del corso è "programmazione a oggetti") assolutamente ignorando questo aspetto. Quote:
Quote:
le informazioni che ho unito al fine di svolgere quell'analisi le ho reperite in rete o da miei vecchi appunti, quindi non è detto che siano esatte (anzi) Ultima modifica di JcBobo : 27-07-2011 alle 16:58. |
||
|
|
|
|
|
#15 |
|
Member
Iscritto dal: Jul 2011
Messaggi: 126
|
ho riguardato il tutto e corretto alcune cose(nel file ho lasciato i titoli dei paragrafi che intendo inserire nella monografia)
ultima versione del mio "lavoro" e aggiunta la parte introduttiva a python http://www.megaupload.com/?d=XUN9H37L Ultima modifica di JcBobo : 29-07-2011 alle 18:12. |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Jul 2011
Messaggi: 381
|
Secondo me una parte interessante sarebbe il confronto dei rispettivi bytecode e virtual machine.
Per esempio un progetto (a mio parere interessante) è Jython. Un'altra parte interessante può essere il raffronto sulla parte di programmazione concorrente e distribuita e la gestione dinamica della memoria. Ma già credo che sul primo punto ci sarebbe da scriverci più di un libro ciao
__________________
Concluso positivamente con: Kamzata, Ducati82, Arus, TheLastRemnant, ghost driver, alexbull1, DanieleRC5, XatiX |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12919
|
Secondo me è perfettamente lecito parlare di Java come linguaggio "orientato agli oggetti", proprio perché "orientato" significa che è pensato per quel tipo di paradigma.
D'altronde è evidente che quello è il paradigma predominante in Java (basta vedere anche come sono strutturate le API che mette a disposizione). Ultima modifica di WarDuck : 30-07-2011 alle 17:46. |
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Di seguito le mie osservazioni: 1.1) "Definire una classe coincide essenzialmente con la definizione dei propri membri: • attributi (dati, esattamente come i membri di un record) • metodi (procedure che operano su un oggetto)" Per quanto mi riguarda, definire una classe coincide con la definizione di un comportamento o, più formalmente, di un protocollo. Quindi una classe la definisco come X se e solo se è in grado di accettare i messaggi del protocollo previsto per X e rispondere "come ci si aspetta" . Esempio classico (in Python): una classe può comportarsi come un file (a sola lettura) se implementa almeno il metodo read, accetta gli stessi parametri, e restituisce la risposta attesa a causa della sua invocazione. Per maggiori dettagli: http://it.wikipedia.org/wiki/Duck_typing 1.2) Quanto sopra influenza anche la definizione di oggetto. 1.2) L'information hiding si può realizzare in maniere diverse, ad esempio tramite l'uso delle proprietà (Delphi, C#, ecc.). Inoltre non è un requisito quando si parla di OOP. 1.2) In Python non si usa self per identificare esplicitamente l'istanza di una classe. Primo, self non è una parola riservata. Secondo, in Python il parametro può essere passato implicitamente (tramite il classico istanza.metodo, ad esempio), ma viene sempre referenziato esplicitamente. Il primo parametro di ogni metodo contiene sempre l'istanza su cui si lavora, e il programmatore ha l'obbligo di darle un nome, che CONVENZIONALMENTE è self, ma potrebbe essere chiamato s, this, it, ecc.. Questo per i metodi d'istanza; per i metodi di classe il discorso è analogo, salvo che il primo parametro rappresenta l'oggetto classe e in genere lo si chiama cls. 1.2) In Python il costruttore standard è il metodo speciale __init__, mentre il distruttore (o finalizzatore, per la precisione) è __del__. 1.5) "In linguaggi in cui le variabili non hanno tipo" In Python tutte le variabili hanno un ben preciso tipo. Python è un linguaggio a forte tipizzazione. 2) "memoria efficiente" Opinabile. Ad esempio, quanto occupa un booleano? Un bit, un byte, o una word di processore/virtual machine (32 o 64 bit)? 2) "indipendenza della piattaforma" Non sempre. In rari casi alcune caratteristiche funzionano esclusivamente su particolari piattaforme. 2) "I programmi scritti in linguaggio Java sono destinati all'esecuzione sulla piattaforma Java, ovvero saranno lanciati su una Java Virtual Machine Ciò fornisce un livello di astrazione che permette alle applicazioni di essere interamente indipendenti dal sistema su cui esse saranno eseguite (paragrafo 2.3)" Idem come sopra. 2.3) "Inoltre la JVM conferisce al Java la caratteristica di essere multithreading ovvero avere la possibilità di mandare in esecuzioni più processi in maniera parallela." Attenzione al concetto di esecuzione "parallela" del codice. Ad esempio, una CPU con singolo core eseguirà tutti i processi sequenzialmente. 2.4) "La scrittura di linguaggio orientato agli oggetti in Java" Non è chiaro. Vorresti dire "La scrittura di codice in un linguaggio orientato agli oggetti come Java"? 2.4) "La scrittura di linguaggio orientato agli oggetti in Java, è più semplice rispetto agli altri linguaggio orientati agli oggetti come per esempio C++." Opinabile. Dipende sempre dal problema da risolvere. Ad esempio C++ consente di utilizzare classi virtuali o ereditarietà multipla che in alcuni risolvono molto più semplicemente un problema rispetto a Java o altri linguaggi. 2.6) "Questo è uno dei punti di debolezza più evidenti del Java. La mancanza dell'aritmetica dei puntatori rende il Java molto più avido per quanto riguarda la richiesta delle risorse necessarie per l'esecuzione. Dunque se dobbiamo sviluppare applicazioni per sistemi con memoria limitata come potrebbe essere un sistema embedded come una telecamera che supporta l'installazione di applicazioni, non è assolutamente consigliabile l'utilizzo del Java." Opinabile anche questo. Spesso il maggior uso di risorse dipende dall'implementazione della virtual machine, che fa uso di compilatori JIT. Inoltre per Java esistono delle "micro VM" che occupano pochissime risorse e vengono impiegate in sistemi embedded "poveri" di hardware (CPU scarse e poca memoria). 3.1) "Le caratteristiche più immediatamente riconoscibili di Python sono le variabili non tipizzate" Come già detto in 1.5, tutte le varibili hanno un preciso tipo. Forse sarebbe meglio che parlassi di linguaggi a tipizzazione statica (Java) e dinamica (Python). 3.1) "Altre caratteristiche distintive sono l'overloading di operatori e funzioni" In realtà non esiste l'overloading delle funzioni, visto che è possibile definire una sola funzione con un preciso nome, che avrà quindi soltanto una firma. Riguardo agli operatori, per lo stesso motivo sarebbe meglio dire che è possibile ridefinirli. 3.2) "Caratteristica distintiva è il supporto nativo, oltre che ai classici tipi quali interi, floating point, stringhe, anche a tipi più evoluti quali interi a grandezza arbitraria" A partire da Python 3 c'è un solo tipo intero, ed è precisione arbitraria. 3.2) "Molti altri tipi sono importabili da librerie standard, e nuovi tipi possono essere creati attraverso il costrutto di classe." Grazie alla metaprogrammazione che mette a disposizione, è possibile creare nuovi tipi (tipi e classi sono la stessa cosa in Python; in ogni caso sono sempre oggetti) senza passare dal costrutto sintattico "class". 3.2.2) "Il primo elemento della coppia rappresenta l'indice, detto "chiave", mentre il secondo è il suo valore corrispondente." La chiave dev'essere sempre un oggetto immutabile o, in generale, "hashable" (per il quale è possibile ottenere un valore hash numerico "stabile", cioè che allo stesso insieme di dati che costituisce una chiave ritorni sempre lo stesso valore di hash). 3.2.2) "Un insieme è una collezione non ordinata che non contiene elementi duplicati al suo interno." Vale lo stesso che per le chiavi dei dizionari. 3.3) "while che cicla fin tanto che l'espressione booleana indicata risulterà vera" Non esiste il concetto di espressione booleana in Python, ma di espressione logicamente vera o logicamente falsa. Esempio: una stringa vuota è logicamente falsa, mentre una che ha almeno un carattere è logicamente vera. 3.3.1) "Python invece di usare parentesi o parole chiave, usa l'indentazione stessa per indicare i blocchi nidificati (si può usare sia una tabulazione, sia un numero arbitrario di spazi bianchi, ma lo standard Python è di 4 spazi bianchi). " Mai mischiare tab e spazi in un sorgente Python, proprio perché vengono usati per definire i blocchi. 3.3.2) "Le funzioni sono considerate degli oggetti" Qualunque cosa in Python è un oggetto: anche le classi (o tipi che dir si voglia). 3.3.5) Potresti parlare anche di PyPy, Cython, e Shedskin, che consentono, ciasciuno nei rispettivi ambiti di utilizzo, di ottenere prestazioni anche molto elevate e comparabili a volte a quelle di linguaggi come Java e C.
__________________
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 |
|
|
|
|
|
|
#19 | ||||||||||||
|
Member
Iscritto dal: Jul 2011
Messaggi: 126
|
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
|
||||||||||||
|
|
|
|
|
#20 | ||||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Non va bene in un linguaggio a tipizzazione dinamica, dove i membri possono essere definiti al volo, o "emulati" (intercettandone l'accesso), o addirittura aggiunti / rimossi alla bisogna (esempio: posso aggiungere il metodo read in un momento, e rimuoverlo quando non serve più). Quel che conta è che un oggetto (inteso come istanza di una classe) in un determinato momento sia in grado di "rispondere" a un determinato protocollo. P.S. Per semplificare ho diviso i linguaggi in due insiemi, a tipizzazione statica o dinamica, ma ovviamente non è sempre così. Quote:
Considera, comunque, che esistono appositi costrutti sintattici in Python che semplificano molto un certo tipo di metaprogrammazione, e che sono diventati di uso comune. Mi riferisco ai decoratori, di funzione/metodo e di classe, e non parlarne sarebbe una grave mancanza, IMHO. Quote:
Tra l'altro nel documento che definisce il coding style per il codice di sistema/libreria di Python, è specificato a chiare lettere che è sempre preferibile l'uso degli spazi oltre che fortemente raccomandato. 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 |
||||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:09.




















