Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Sono molte le novità che ASUS ha scelto di presentare al CES 2026 di Las Vegas, partendo da una gamma di soluzioni NUC con varie opzioni di processore passando sino agli schermi gaming con tecnologia OLED. Il tutto senza dimenticare le periferiche di input della gamma ROG e le soluzioni legate alla connettività domestica
Le novità ASUS per il 2026 nel settore dei PC desktop
Le novità ASUS per il 2026 nel settore dei PC desktop
Molte le novità anticipate da ASUS per il 2026 al CES di Las Vegas: da schede madri per processori AMD Ryzen top di gamma a chassis e ventole, passando per i kit di raffreddamento all in one integrati sino a una nuova scheda video GeForce RTX 5090. In sottofondo il tema dell'intelligenza artificiale con una workstation molto potente per installazioni non in datacenter
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-07-2011, 17:02   #1
JcBobo
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à
JcBobo è offline   Rispondi citando il messaggio o parte di esso
Old 23-07-2011, 17:28   #2
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
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
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 23-07-2011, 17:38   #3
JcBobo
Member
 
Iscritto dal: Jul 2011
Messaggi: 126
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
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.
ti ringrazio per al prontezza nella risposta...colgo l'occasione per chiederti se sai dove posso trovare una breve analisi comparativa sulle prestazioni dei due linguaggi e se hai qualche consiglio sull'ambiente di sviluppo perchè cercando su internet ho trovato che praticametne il 90% dei compilatori è in grado di gestire python con appisti plug-in e quinid non saprei quale utilizzaire (non ho preferenze sll'utilizzo di sistemi operativi unix o windows avendoli a disposizione entrambi).


durante il mio "corso di java" si è utilizzato eclipse puo andar bene o conviene usarne un altro?
JcBobo è offline   Rispondi citando il messaggio o parte di esso
Old 23-07-2011, 21:40   #4
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da JcBobo Guarda i messaggi
ti ringrazio per al prontezza nella risposta...
Più che altro sei stato fortunato che mi son trovato a dare un'occhiata veloce al forum.
Quote:
colgo l'occasione per chiederti se sai dove posso trovare una breve analisi comparativa sulle prestazioni dei due linguaggi
Di Python esistono diverse implementazioni. 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.

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:
e se hai qualche consiglio sull'ambiente di sviluppo perchè cercando su internet ho trovato che praticametne il 90% dei compilatori è in grado di gestire python con appisti plug-in e quinid non saprei quale utilizzaire (non ho preferenze sll'utilizzo di sistemi operativi unix o windows avendoli a disposizione entrambi).
Uso NetBeans 6.9.1 con l'apposito plug-in per Python, ma ho sentito parlare molto bene di WingIDE e, di recente, di PyCharm, ma questi ultimi sono a pagamento purtroppo.
Quote:
durante il mio "corso di java" si è utilizzato eclipse puo andar bene o conviene usarne un altro?
Guarda, Eclipse ha degli ottimi plug-in per qualsiasi cosa, ma come IDE lo trovo veramente malfatto.

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
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 24-07-2011, 00:42   #5
cdere
Senior Member
 
L'Avatar di cdere
 
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
cdere è offline   Rispondi citando il messaggio o parte di esso
Old 24-07-2011, 01:17   #6
JcBobo
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.
JcBobo è offline   Rispondi citando il messaggio o parte di esso
Old 24-07-2011, 07:44   #7
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da cdere Guarda i messaggi
quoto cesare su tutta la linea, in più ti segnalo: http://pythonconquerstheuniverse.wor...va-and-python/
Questo l'avevo visto qualche tempo fa, ma non sapevo come recuperarlo. Grazie.
Quote:
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.
Infatti. PyDev è ottimo, anche se in versione base (perché altre funzionalità le offre a pagamento), ma purtroppo è Eclipse che fa schifo, e una volta assaggiato NetBeans, pur con tutti i suoi limiti, l'ho abbandonato.
Quote:
L'IDE python di elezione per me è pycharm, ma, come detto, è a pagamento.
In tutta onestà non l'ho mai provato. Come non ho provato WingIDE, proprio perché sono a pagamento.

Non vorrei assaggiare la Nutella e poi avere l'ossessione di volerla mangiare sempre.
Quote:
@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 ?
Sì, decisamente. Posto qualche benchmark che, comunque, va preso con le pinze per diversi motivi.
Quote:
Originariamente inviato da JcBobo Guarda i messaggi
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.
Non ti preoccupare. Python ha preso abbastanza piede in questo forum, e qualcuno che ti possa dare una mano bene o male lo troverai sempre, come dicevo prima.
__________________
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 27-07-2011, 11:39   #8
JcBobo
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?
JcBobo è offline   Rispondi citando il messaggio o parte di esso
Old 27-07-2011, 12:12   #9
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da JcBobo Guarda i messaggi
...(ad esempio java è tipizzato python no).
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)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 27-07-2011, 12:28   #10
JcBobo
Member
 
Iscritto dal: Jul 2011
Messaggi: 126
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Credo che la parola "tipizzato" in italiano non esista, volevi forse dire "tipato"?
mi risulta siano sinonimi... confrontandomi con un mio compagno di corso mi è parso piu adatto inserire un superficiale analisi dei due linguaggi e poi addentrarmi nella realizzazione di codice (ad esempio gestione liste\mappe) confrontando i due linguaggi "argomento" per "argomento".
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.
mi scuso per come vi sottopongo il testo ma sono in università e non mi è possibile da qui caricare il file di testo da nessuna parte( è tutto bloccato)
questo è quello che ho "recuperato" dalle slide del mio corso e dalla rete ma volevo sapere se
JcBobo è offline   Rispondi citando il messaggio o parte di esso
Old 27-07-2011, 14:16   #11
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
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
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 27-07-2011, 14:44   #12
JcBobo
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à
JcBobo è offline   Rispondi citando il messaggio o parte di esso
Old 27-07-2011, 16:38   #13
banryu79
Senior Member
 
L'Avatar di banryu79
 
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:
Java è un linguaggio di programmazione orientato agli oggetti...
So che siamo spesso sottoposti a definizioni di questo tipo, ma la questione è diversa, nel senso che ad essere o non essere orientato agli oggetti non è il linguaggio (di programmazione) ma il paradigma di programmazione. Del linguaggio poi si potrà dire che supporta o non supporta un certo paradigma di programmazione (e spesso non è una questione del tipo sì/no, ma è una questione di grado).

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:
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.
Non è affatto vero che Java è un linguaggio *puramente* orientato agli oggetti.
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.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 27-07-2011, 16:55   #14
JcBobo
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:
Altro esempio: il paradigma orientato agli oggetti è supportato sia in Java che in Python, ma non nello stesso modo.
questa differenza dovrei espanderla ma non avendo ancora iniziato a programmare in python non ne sono in grado al momento.


Quote:
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.
se hai tempo (e voglia) potresti elencarmele\ spiegarmele?


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.
JcBobo è offline   Rispondi citando il messaggio o parte di esso
Old 28-07-2011, 22:48   #15
JcBobo
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.
JcBobo è offline   Rispondi citando il messaggio o parte di esso
Old 30-07-2011, 11:11   #16
starfred
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
starfred è offline   Rispondi citando il messaggio o parte di esso
Old 30-07-2011, 17:38   #17
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
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.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 30-07-2011, 18:32   #18
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da JcBobo Guarda i messaggi
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
Finalmente ho trovato il tempo di leggere il tuo documento. Ritieniti fortunato perché purtroppo, causa famiglia e parecchi impegni, ne ho veramente poco a disposizione.

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
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 30-07-2011, 20:40   #19
JcBobo
Member
 
Iscritto dal: Jul 2011
Messaggi: 126
Quote:
Finalmente ho trovato il tempo di leggere il tuo documento. Ritieniti fortunato perché purtroppo, causa famiglia e parecchi impegni, ne ho veramente poco a disposizione.
ti ringrazio molto

Quote:
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
non è implicito che definendo attributi e metodi che agiscono sulla classe io definisco il comportamento della classe ?

Quote:
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.
pensavo di modificare cosi:
Quote:
Sintatticamente, i metodi di una classe vengono invocati "su" un particolare oggetto, e ricevono come parametro (spesso implicito) l'oggetto su cui sono stati invocati. Questo parametro, anche se passato implicitamente, normalmente può essere referenziato esplicitamente; per esempio, a tale scopo in Java si usa la parola chiave this mentre in Python si usa il nome dell'oggetto(per convenzione self)nonostante l'oggetto venga referenziato esplicitamente (anche con l'uso di istanza.metodo) poiché il primo parametro di ogni metodo contiene l'istanza su cui lavora
Quote:
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)?
l'aggettivo efficiente voleva riferirsi a gestione (di memoria e eccezzioni)

Quote:
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).
aggiungo le tue due frasi.
Quote:
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).
ho trovato informazioni "contrastanti" dicevano che in python le variabili nn hanno tipo e 2 righe sotto che è un linguaggio a forte tipizzazione ...adesso ho capito (si vede che non ho ancora iniziato a "programmarci")

Quote:
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.
ho messo interi non perchè ci siano piu tipi interi ma per correttezza "linguistica" mi suonava male oltre che ai classici tipo quali intero,floating point stinghe.

Quote:
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".
questo penso che sia un livello di programmazione troppo elevato per quanto richiestomi dal professore
Quote:
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).
inserisco la precisazione utile a cui non avevo assolutamente pensato.
Quote:
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.
ah...metto che si usa la tabulazione allora.
Quote:
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.
questo volevo farlo ma non ho "reperito" una qta di informazioni sufficiente per buttar giu qualche riga (e non solo accennarli vagamente)
JcBobo è offline   Rispondi citando il messaggio o parte di esso
Old 31-07-2011, 08:59   #20
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da JcBobo Guarda i messaggi
non è implicito che definendo attributi e metodi che agiscono sulla classe io definisco il comportamento della classe ?
Il problema sta appunto nella definizione, cioè nel dover definire (prima) i membri in questione. Questo va bene per un linguaggio a tipizzazione statica, dove avviene a compile-time.

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:
questo penso che sia un livello di programmazione troppo elevato per quanto richiestomi dal professore
Sì, quello che avevo scritto in questo preciso punto del discorso è una caratteristica abbastanza avanzata di Python, e per questo la si vede poco in giro.

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:
ah...metto che si usa la tabulazione allora.
No, ti prego! Si usano sempre gli spazi proprio per evitare problemi. Se n'è discusso anche qui, di recente, in un thread.

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:
questo volevo farlo ma non ho "reperito" una qta di informazioni sufficiente per buttar giu qualche riga (e non solo accennarli vagamente)
Potresti prendere qualche informazione dalla home page dei rispettivi progetti (PyPy, Cython, Shedskin). Penso sia più che sufficiente per offrire qualche utile informazione allo scopo, visto che si tratta di progetti che meritano senza dubbio attenzione per il pythonista che ha bisogno di ottenere elevate prestazioni (senza discostarsi troppo da quello che ha già scritto in Python, e soprattutto dal linguaggio).
__________________
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


Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Le novità MSI del 2026 per i videogiocatori Le novità MSI del 2026 per i videogiocato...
I nuovi schermi QD-OLED di quinta generazione di MSI, per i gamers I nuovi schermi QD-OLED di quinta generazione di...
Le migliori offerte Amazon del weekend: ...
La crisi dell'hardware spinge i negozi g...
Apple Watch SE 3 scontato su Amazon: il ...
Robot aspirapolvere davvero scontati: si...
DDR5 troppo cara: il passato di AMD potr...
5 sconti TOP nuovi di zecca e altre offe...
Il più venduto e apprezzato: ECOV...
Era e resta un super top di gamma: il TV...
DOOGEE T10 Pro, il miglior tablet di tut...
Il miglior deumidificatore su Amazon sce...
Prosegue lo sviluppo del telescopio spaz...
28 astronauti cinesi hanno condotto un'e...
Dal Padiglione Italia al mercato globale...
POCO M8: display AMOLED luminoso, batter...
ECOVACS, tante novità a Las Vegas...
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