Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Dal palco di Proofpoint Protect 2025 emerge la strategia per estendere la protezione dagli utenti agli agenti IA con il lancio di Satori Agents, nuove soluzioni di governance dei dati e partnership rafforzate che ridisegnano il panorama della cybersecurity
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
Recensione Borderlands 4, tra divertimento e problemi tecnici
Recensione Borderlands 4, tra divertimento e problemi tecnici
Gearbox Software rilancia la saga con Borderlands 4, ora disponibile su PS5, Xbox Series X|S e PC. Tra le novità spiccano nuove abilità di movimento, un pianeta inedito da esplorare e una campagna che lascia al giocatore piena libertà di approccio
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 31-03-2008, 07:52   #381
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Comunque per il discorso del "multiparadigma" lo ripeto per l'n-esima volta: quando parli di Python lo fai senza avere conoscenza di ciò che dici.
Invece tu sei bravissimo a travisare volontariamente le parole degli altri, perché ti avevo già spiegato cosa intendevo e nuovamente l'hai travisato.
Mi riferisco al fatto di poter mischiare programmazione procedurale, programmazione ad oggetti e programmazione a moduli nello stesso programma.

Ultima modifica di cionci : 31-03-2008 alle 08:05.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2008, 08:50   #382
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Mi avete fatto venire una voglia matta di scrivere cpuid in ruby. Maledetti!
Fallo.
Quote:
OT, ci gioco ancora.
Non sei il solo (quando riesco ad avere qualche briciola di tempo e non ci sono i miei figli a torturarmi ).
Quote:
Originariamente inviato da xblitz Guarda i messaggi
scusate se mi intrometto nella conversazione però avrei qualcosa da dire che reputo abbastanza interessante ma prima ci tengo subito a precisare che non voglio scatenare flames

sarò breve: sul libro postato da cdimauro si legge:


ma allora perché la virtual machine mi esegue correttamente il seguente codice:

Codice:
def trerigevuote ():
    unarigavuota()
    unarigavuota()
    unarigavuota()

def unarigavuota ():
    print 

print ("prima riga vuota")
trerigevuote()
print ("seconda riga vuota")
non mi pare abbia molto senso: oltre a essere in contradizione con quello che ce scritto sopra (se ho capito bene quello che ce scritto, altrimenti sono proprio rincoglionito) è una cosa che non ho mai visto su altri linguaggi (C++,Java e PBASIC)
Quote:
Originariamente inviato da xblitz Guarda i messaggi
ok grazie della spiegazione, però, se ho capito bene questo non dovrebbe funzionare:

Codice:
def trerigevuote ():
    unarigavuota()
    unarigavuota()
    unarigavuota()

print ("prima riga vuota")
trerigevuote()
print ("seconda riga vuota")

def unarigavuota ():
 print
e invece fa eppure: ok trerigevuote (mamma mia che errore grammaticale speriamo sia la stanchezza ) è una definizione ma viene evocata prima della definizione di unarigavuota () non mi torna...
Quote:
Originariamente inviato da xblitz Guarda i messaggi
credo di aver risolto l'arcano: non so come ma devo aver mandato in esecuzione una versione salvata in precedenza corretta : copiando l'ultimo codice postato effettivamente da errore (come era giusto che facesse del resto):

Codice:
NameError: global name 'unarigavuota' is not defined
Molto probabilmente lavorando con la shell interattiva avevi definito già "unarigavuota", che era rimasta quindi disponibile. Ecco perché il tuo secondo sorgente funzionava ugualmente.

Il primo sorgente invece funziona perfettamente perché le varie def portano soltanto alla creazione dei rispettivi oggetti, e il loro codice viene semplicemente compilato in bytecode. E' soltanto nella fase di esecuzione che, una volta trovato dentro "trerigevuote" che si deve eseguire una chiamata a "unarigavuota", la virtual machine va a recuperare quest'oggetto e prova a eseguirlo (se è "callable").
Quote:
Originariamente inviato da cionci Guarda i messaggi
Invece tu sei bravissimo a travisare volontariamente le parole degli altri, perché ti avevo già spiegato cosa intendevo e nuovamente l'hai travisato.
Mi riferisco al fatto di poter mischiare programmazione procedurale, programmazione ad oggetti e programmazione a moduli nello stesso programma.
E ti ho già risposto, e più volte, che Python è rigorosamente MONOPARADIGMA.

In particolare nell'ultimo messaggio ti ho fatto anche vedere il perché sia così (ma te l'avevo già spiegato qui http://www.hwupgrade.it/forum/showpo...&postcount=195 ).

Per il resto, io non ci trovo nulla di male a mischiare paradigmi di programmazione diversi per risolvere un problema (con buona pace del buon PGI-Bis ).

D'altra parte tu sostieni che Java sia monoparadigma ( http://www.hwupgrade.it/forum/showpo...&postcount=200 ), il che è semplicemente falso:
Codice:
public class Prova {
    public static void main(String[] args) {
        int i, j, k;
        i = 1
        j = 2
        k = i + j;
    }
}
Dove sta la programmazione a oggetti qui? E' codice puramente procedurale: i, j e k sono dati scalari, NON oggetti, e non c'è nessuna spedizione di messaggi fra di loro né tanto meno invocazione di metodi.

Ma anche:
Codice:
public class Prova {
    private static int i() {
      return 1;
    }

    private static int j() {
      return 2;
    }

    private static int k() {
      return i() + j();
    }

    public static void main(String[] args) {
      k();
    }
}
e questo è puramente funzionale.

Non sono io che "traviso": sei tu che ti ostini a ignorare quello che dicono gli altri...

Per inciso, guarda qui:
Codice:
>>> dir(1)
['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__', '__delattr__', '__div__', '__divmod__', '__doc__', '__float__', '__floordiv__', '__getattribute__', '__getnewargs__', '__hash__', '__hex__', '__index__', '__init__', '__int__', '__invert__', '__long__', '__lshift__', '__mod__', '__mul__', '__neg__', '__new__', '__nonzero__', '__oct__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__str__', '__sub__', '__truediv__', '__xor__']
Sono tutti i METODI che l'oggetto 1 (che è un numero intero) mette a disposizione (in Python).

Fammi vedere qualcosa di simile in Java per "int i = 1".

P.S. La programmazione a moduli non esiste. Esiste quella procedurale.
__________________
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

Ultima modifica di cdimauro : 31-03-2008 alle 08:53.
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2008, 08:54   #383
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da Mazda RX8 Guarda i messaggi
up!
Ti avevo già risposto qui http://www.hwupgrade.it/forum/showpo...&postcount=373

Te lo ripeto:
E' molto semplice, ma se vuoi una guida completa usa questa http://www.python.it/doc/Howtothink/...l-it/index.htm
__________________
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 31-03-2008, 08:56   #384
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Secondo me è un male mescolare paradigmi diversi nello stesso linguaggio (PS: ma mi sembra o hai parlato anche te di mischiare paradigmi ?). Se per te è una feature valida, come la chiami ?
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
P.S. La programmazione a moduli non esiste. Esiste quella procedurale.
Come la chiami allora la possibilità di mettere codice nudo e crudo dentro ad un file .py ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2008, 09:04   #385
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Fallo.

Per inciso, guarda qui:
Codice:
>>> dir(1)
['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__', '__delattr__', '__div__', '__divmod__', '__doc__', '__float__', '__floordiv__', '__getattribute__', '__getnewargs__', '__hash__', '__hex__', '__index__', '__init__', '__int__', '__invert__', '__long__', '__lshift__', '__mod__', '__mul__', '__neg__', '__new__', '__nonzero__', '__oct__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__str__', '__sub__', '__truediv__', '__xor__']
Sono tutti i METODI che l'oggetto 1 (che è un numero intero) mette a disposizione (in Python).

Fammi vedere qualcosa di simile in Java per "int i = 1".

P.S. La programmazione a moduli non esiste. Esiste quella procedurale.
Integer i = new Integer(1);
e poi vai di reflection sull'oggetto "i" per recuperare i nomi dei metodi.

Però è vero, ci sono anche i normali int...
Ma Java è diverso da Python, sono due linguaggi diversi e se fanno cose simili fanno anche cose molto diverse.

Alla fine uno usa lo strumento che ritiene migliore (oggettivamente, in teoria; soggettivamente, nella pratica) per risolvere lo specifico problema.

Ritengo molto importante la sensazione di "comodità, e familiarità" che un linguaggio ti da, anche se nell'usarlo sulla carta magari stai facendo una scelta leggermente meno produttiva di un altro linguaggio: l'ideale sarebbe poi provare ad imparare il linguaggio alternativo e farci esperienza per farsi un'idea propria.

Giusto per non essere troppo OT:
Mazda, il mio consiglio non è su che linguaggio usare, il 3D è già pieno di idee in merito; quello che ti consiglio è di sceglierne tu uno, e cominciare a darci dentro.

Se ti interessa la programmazione sappi che ti aspetta un sacco di studio, ci sono molte cose da imparare, per cui non darti una scadenza temporale: comincia con un buon manuale del linguaggio scelto, scaricati il relativo compiler/ide e preparati alla scoperta di un nuovo mondo!
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2008, 09:08   #386
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da cionci Guarda i messaggi
Secondo me è un male mescolare paradigmi diversi nello stesso linguaggio (PS: ma mi sembra o hai parlato anche te di mischiare paradigmi ?). Se per te è una feature valida, come la chiami ?
Sul fatto che per te sia un male e per me potremmo continuare a parlarne a non finire: non ne usciremmo più.

A me premeva chiarire un concetto fondamentle: Python è MONOPARADIGMA (è puramente a oggetti).

Poi, proprio grazie agli oggetti che mette a disposizione, è possibile "simulare", nella stesura del codice, paradigmi di programmazioni diversi.

Fino a qui siamo d'accordo? Così ci mettiamo una pietra sopra.
Quote:
Come la chiami allora la possibilità di mettere codice nudo e crudo dentro ad un file .py ?
Dipende. Potrei mettere il codice in un file .py (o di testo, ecc.), per poi leggerlo e compilarlo al volo "integrandolo" nell'attuale namespace. In soldoni: è quello che altri linguaggi di programmazione fanno con la famigerata direttiva (o istruzione) "include" (che Python non possiede, ma... si simula ).

L'operazione di suddividere il codice in moduli/unit/package, ecc. è chiamata "modularizzazione", o anche "programmazione modulare", ma NON è un paradigma di programmazione, quanto più che altro una "best practice".

I paradigmi di programmazione sono i seguenti:
- procedurale;
- funzionale;
- logico;
- a oggetti;
- ad aspetti (questo è il più recente, ma non me ne sono mai interessato).

__________________
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 31-03-2008, 09:10   #387
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Integer i = new Integer(1);
e poi vai di reflection sull'oggetto "i" per recuperare i nomi dei metodi.

Però è vero, ci sono anche i normali int...
Esatto: non è un caso se abbia usato un int anziché un Integer... Per la serie: "bastardi dentro".
__________________
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 31-03-2008, 09:22   #388
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Chi ha parlato di suddividere il codice in moduli ?????
Ora ci attacchiamo alla terminologia ? Hai capito bene a cosa mi riferisco. Parlo di mettere le istruzioni, senza una funzione, senza una classe, direttamente all'interno di un modulo. Come lo chiami ?
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Sul fatto che per te sia un male e per me potremmo continuare a parlarne a non finire: non ne usciremmo più.

A me premeva chiarire un concetto fondamentle: Python è MONOPARADIGMA (è puramente a oggetti).
Ok, allora tanto per chiarire dammi un termine per definire la possibilità mescolare la creazione di funzioni e di classi.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2008, 09:40   #389
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da cionci Guarda i messaggi
Chi ha parlato di suddividere il codice in moduli ?????
Ora ci attacchiamo alla terminologia ? Hai capito bene a cosa mi riferisco.
No, non l'avevo capito. Parlando di programmazione "a moduli" pensavo ti riferissi alla più nota "programmazione modulare".
Quote:
Parlo di mettere le istruzioni, senza una funzione, senza una classe, direttamente all'interno di un modulo. Come lo chiami ?
Indipendentemente da quello che ci vai a mettere, parliamo di programmazione modulare nel caso in cui esiste il concetto di modulo/unit/package, ecc. che racchiude degli "oggetti" (non nel senso della programmazione a oggetti, ovviamente).

Esteso da tempo anche a linguaggi che non hanno il concetto di "modulo", ma devono far ricorso ai file include per separare l'interfaccia dall'implementazione.

Ma questo, ripeto, non è un paradigma di programmazione, quanto una "best practice" incoraggiata in ingegneria del software.
Quote:
Ok, allora tanto per chiarire dammi un termine per definire la possibilità mescolare la creazione di funzioni e di classi.
Nel caso di Python, si parla di creazione di oggetti (di tipo diverso).

Sì, se non si fosse capito, ci sto girando attorno. Anche perché POSSO FARLO, visto che Python è un linguaggio puramente a oggetti e non sto facendo altro che descrivere cosa avviene quando si "definiscono" funzioni e classi.

Per contro, in Java come giustifichi / classifichi la possibilità di creare funzioni e classi nello stesso package? Tipo l'esempio che ti ho riportato sopra?
__________________
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 31-03-2008, 09:56   #390
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
E' chiaro che anche in Java si può fare programmazione procedurale, come in C si può fare programmazione ad oggetti, ma è comunque scoraggiata dalle caratteristiche stesse del linguaggio. Al contrario in Python le caratteristiche del linguaggio incoraggiano a fare programmazione procedurale, ma incoraggiano anche a mettere codice non strutturato, perdonami ma non so come chiamarlo, visto che nemmeno tu mi hai suggerito come, all'interno del modulo. Quale miglior modo per confondere le idee a chi lo studia ? Siamo addirittura ai livelli di PHP per queste caratteristiche.

Visto che ti piace girare intorno al problema, noto anche sull'inserimento di codice non strutturato all'interno dei moduli, ne deduco che non ti interessi la discussione, quindi per me si chiude qui. Dopo tutto sono riuscito a spiegare cosa intendevo, nonostante i tuoi tentativi di sviare la discussione, quindi per me la questione è chiusa qui.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2008, 10:00   #391
Mazda RX8
Senior Member
 
L'Avatar di Mazda RX8
 
Iscritto dal: Jun 2007
Città: Palermo
Messaggi: 34432
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Ti avevo già risposto qui http://www.hwupgrade.it/forum/showpo...&postcount=373

Te lo ripeto:
E' molto semplice, ma se vuoi una guida completa usa questa http://www.python.it/doc/Howtothink/...l-it/index.htm
ok, THK!
__________________
Case: Fractal Design Pop XL Air | PSU: Seasonic PRIME TX-1000 | CPU: Intel® Core™ i7 6950X Extreme Edition @ 4.0GHz w/ Alphacool Eisbaer Pro (Solo) + EK-Quantum Surface S280
MB: ASUS RAMPAGE V EXTREME/U3.1 | RAM: G.SKILL Trident Z DDR4 64GB @ 3200MHz (F4-3200C15Q-64GTZ) | VGA: ASUS ROG Strix GeForce® RTX 3080 Ti OC Edition 12GB
Audio: Creative Sound Blaster® ZxR | SSD_1: Samsung SSD 980 PRO NVMe 1TB | SSD_2: Samsung SSD 870 QVO SATA 4TB | Monitor: ViewSonic ColorPro VP2776
Mazda RX8 è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2008, 10:19   #392
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da cionci Guarda i messaggi
E' chiaro che anche in Java si può fare programmazione procedurale, come in C si può fare programmazione ad oggetti, ma è comunque scoraggiata dalle caratteristiche stesse del linguaggio. Al contrario in Python le caratteristiche del linguaggio incoraggiano a fare programmazione procedurale, ma incoraggiano anche a mettere codice non strutturato, perdonami ma non so come chiamarlo, visto che nemmeno tu mi hai suggerito come, all'interno del modulo. Quale miglior modo per confondere le idee a chi lo studia ? Siamo addirittura ai livelli di PHP per queste caratteristiche.
Non scherziamo: PHP non è né carne né pesce. E' una versione del C mascherata da linguaggio di scripting, realizzato sul modello del "mi serve qualcosa, aggiungo una pezza" (ma soprattutto: "mi servono delle nuove funzionalità, e aggiungo n-mila funzioni all'interprete").

In Python il codice che tu pensi sia "non strutturato" è sempre racchiuso in un "modulo": anche l'applicazione "principale" (ossia il file lanciato con python.exe) lo è:
Codice:
>>> __name__
'__main__'
e il codice eseguito è quello che viene chiamato di "inizializzazione" in altri linguaggi che mettono a disposizione il concetto di "modulo" (che in Python... è sempre un oggetto).

In PHP non esiste il concetto né di modulo (come sopra) né tanto meno di codice di "inizializzazione": tutto viene eseguito così com'è, partendo dall'inizio fino alla fine.
Quote:
Visto che ti piace girare intorno al problema, noto anche sull'inserimento di codice non strutturato all'interno dei moduli, ne deduco che non ti interessi la discussione, quindi per me si chiude qui. Dopo tutto sono riuscito a spiegare cosa intendevo, nonostante i tuoi tentativi di sviare la discussione, quindi per me la questione è chiusa qui.
Sviare? Ti ho semplicemente DIMOSTRATO come stanno le cose: Python è un linguaggio puramente a oggetti, Java no.

Per il resto, è il programmatore che fa la differenza: ti ho fatto vedere che in Java si può benissimo lavorare con la programmazione procedurale o funzionale, senza utilizzare MAI il concetto di classe / oggetto.

E' inutile che tendi di nascondere il tutto dietro la parola "incoraggiare": sono i FATTI che contano, quelli che ti ho portato con tanto di esempi che dimostrano qual è la situazione REALE con entrambi i linguaggi.
__________________
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 31-03-2008, 10:28   #393
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Per inciso, guarda qui:
Codice:
>>> dir(1)
['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__', '__delattr__', '__div__', '__divmod__', '__doc__', '__float__', '__floordiv__', '__getattribute__', '__getnewargs__', '__hash__', '__hex__', '__index__', '__init__', '__int__', '__invert__', '__long__', '__lshift__', '__mod__', '__mul__', '__neg__', '__new__', '__nonzero__', '__oct__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__str__', '__sub__', '__truediv__', '__xor__']
Sono tutti i METODI che l'oggetto 1 (che è un numero intero) mette a disposizione (in Python).

Fammi vedere qualcosa di simile in Java per "int i = 1".

P.S. La programmazione a moduli non esiste. Esiste quella procedurale.
Cesare, questo e' capzioso da morire. Sai benissimo che i numeri sono trattata in Java (e in ogni linguaggio che si rispetti) come tipi puri per questioni di performance. Questo non vuol dire che scrivendo 2+2 si stia programmando con paradigma procedurale. Non arrampichiamoci sui vetri qui.

Scrtivere (-1).abs non rende il linguaggio particolarmente cool. Solito cute code senza motivo di esistere, quando il linguaggio poi non ti prende gli errori di sintassi a tempo di compilazione facendoti perdere tempo. Sono queste le cose importanti.

In C#, per altro, il boxing permette di passare da scalare a oggetto ed invocarne eventuali metodi.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2008, 10:33   #394
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Sviare? Ti ho semplicemente DIMOSTRATO come stanno le cose: Python è un linguaggio puramente a oggetti, Java no.
Falso. Anche Java e' un linguaggio puramente ad oggetti.

2 + 3

Invoca il metodo + sull'oggetto 2 con parametro 3. La sintassi e' una questione di semplice comodita'. Il 2 e' trattato (giustamente) come scalare a tempo di esecuzione per questioni di performance.

Ultima modifica di fek : 31-03-2008 alle 10:35.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2008, 10:46   #395
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da fek Guarda i messaggi
Cesare, questo e' capzioso da morire. Sai benissimo che i numeri sono trattata in Java (e in ogni linguaggio che si rispetti) come tipi puri per questioni di performance. Questo non vuol dire che scrivendo 2+2 si stia programmando con paradigma procedurale. Non arrampichiamoci sui vetri qui.
Nessuna "capziosità": int, float, bool, ecc. NON sono oggetti in Java, e questo è un dato di fatto.

Mi premeveva sottolineare due cose:
- le differenze fra Python (ma anche Ruby, SmallTalk, ecc.) e Java;
- il fatto che anche in Java si può benissimo programmare in maniera procedurale, funzionale o anche mischiando entrambi i paradigmi, senza utilizzare minimamente il concetto di "classe" / "oggetto".

Forse sono stato un po' troppo irruento nel farlo.

Non condivido però il "linguaggio che si rispetti" col fatto che dia la possibilità o meno di utilizzare tipi scalari senza che questi siano oggetti, quindi per questioni puramente legate alle prestazioni: dipende dal tipo di applicazioni che si sviluppano.
E, come tu insegni, se un codice non è particolarmente performante, profiler alla mano si individuano i punti deboli, e in primis si cerca una soluzione algoritmica. Se non c'è possibilità, si può pensare (nel caso di Python, visto che esiste) di utilizzare un compilatore JIT. Se ancora non è soddisfacente, si riscrive quella parte in un linguaggio di più basso livello.

In 3 anni e mezzo non sono dovuto ricorrere a nessuna delle tre possibilità.
Quote:
Scrtivere (-1).abs non rende il linguaggio particolarmente cool. Solito cute code senza motivo di esistere.
Su questo concordo, anche se preferisco questa notazione a quella funzionale.

Per inciso, in Python si scrive abs(-1), oppure len('Pippo'), ma NON condivido questa notazione: personalmente, visto che si tratta di oggetti, preferisco nettamente -1.abs() e 'Pippo'.len.

Opinione personale, lo ribadisco.
Quote:
In C#, per altro, il boxing permette di passare da scalare a oggetto ed invocarne eventuali metodi.
Sì, ne sono al corrente. E mi pare che pure in Java da qualche tempo il boxing (e l'unboxing) sia automatico, se non ricordo male.
Quote:
Originariamente inviato da fek Guarda i messaggi
Falso. Anche Java e' un linguaggio puramente ad oggetti.

2 + 3

Invoca il metodo + sull'oggetto 2 con parametro 3. La sintassi e' una questione di semplice comodita'. Il 2 e' trattato (giustamente) come scalare a tempo di esecuzione per questioni di performance.
Sei sicuro di questo? Vogliamo vedere il bytecode generato dal compilatore Java? Scommetto che non c'è nessuna traccia di chiamata a metodi.

EDIT: ho visto che hai modificato il messaggio precedente aggiungendo una stoccata sugli errori di sintassi. :|
__________________
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

Ultima modifica di cdimauro : 31-03-2008 alle 10:48.
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2008, 10:59   #396
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Fallo.
Non ho la più pallida idea di come mandare i vari cpuid da ruby. Se mi tocca scrivere una estensione in C sarà da suicidio.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2008, 11:17   #397
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Nessuna "capziosità": int, float, bool, ecc. NON sono oggetti in Java, e questo è un dato di fatto.
Si', lo sono invece!
Qui stai facendo una marea di confusione fra la sintassi di un linguaggio e la sua coerenza.
E' sintatticamente comodo scrivere "2 + 2" invece di 2.add(2) ma sono logicamente oggetti in Java. Infatti puoi invocarci metodi sopra via boxing.

Quote:
Sei sicuro di questo? Vogliamo vedere il bytecode generato dal compilatore Java? Scommetto che non c'è nessuna traccia di chiamata a metodi.
Ho gia' scritto nel messaggio precedente che l'implementazione per questioni di efficienza elimina totalmente qualunque invocazione. Sono ragionevolmente certo che anche l'interprete Python esegue 2 + 2 con una add e non con un'invocazione a metodo.

Ultima modifica di fek : 31-03-2008 alle 11:19.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2008, 11:18   #398
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Non ho la più pallida idea di come mandare i vari cpuid da ruby. Se mi tocca scrivere una estensione in C sarà da suicidio.
Se vuoi posso passarti la DLL di qualche pagina fa, gia' compilata dal C++
E' ovviamente banalissima.
Se da ruby si possono chiamare funzioni esterne come penso, dovrebbe essere semplice.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2008, 11:56   #399
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Se vuoi posso passarti la DLL di qualche pagina fa, gia' compilata dal C++
E' ovviamente banalissima.
Se da ruby si possono chiamare funzioni esterne come penso, dovrebbe essere semplice.
Grazie ma non avrei macchine con Windows su cui usare la dll

Scrivere una estensione è stato più facile del previsto.
Codice:
#include <ruby.h>

static VALUE do_cpuid(VALUE self, VALUE ax)
{
	int op = NUM2INT(ax);
	unsigned int regs[4];
	
    __asm__ __volatile__ (
	     "mov %%ebx, %%esi\n\t"
         "cpuid\n\t"
         "xchg %%ebx, %%esi"
         : "=a" (regs[0]), "=S" (regs[1]),
           "=c" (regs[2]), "=d" (regs[3])
         : "0" (op)
	);
	
	return rb_ary_new3(4, INT2NUM(regs[0]), INT2NUM(regs[1]), INT2NUM(regs[2]), INT2NUM(regs[3]));
}

void Init_cpuid()
{
	rb_define_global_function("do_cpuid", do_cpuid, 1);
}
Devo solo capire come mai ruby mi va in paranoia se provo a passare 0x80000001 come operando.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2008, 12:26   #400
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Devo solo capire come mai ruby mi va in paranoia se provo a passare 0x80000001 come operando.
Prova a vedere se lo stai passando come signed o come unsigned.
Io ho dichiarato apposta "unsigned int" nel passaggio, sia in C# che in C++.
Magari e' solo una specie di "mismatch" che hai introdotto...
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint Cybersecurity: email, utenti e agenti IA, la nuo...
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale TCL NXTPAPER 60 Ultra: lo smartphone che trasfor...
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming Un fulmine sulla scrivania, Corsair Sabre v2 Pro...
Logitech MX Master 4 subito disponibile ...
'Nonna Skyrim' dice addio all'RPG di Bet...
PlayStation 5 Slim a 399€ o bundle con N...
roborock Qrevo Curv S5X in offerta a 649...
Sapphire Nitro+ B850A WIFI 7: la nuova s...
CraftGPT: un giocatore costruisce ChatGP...
Il Conto Termico 3.0 è ufficiale:...
Tesla inaugura la stazione di ricarica S...
20 super sconti Amazon senza precedenti:...
Un TV 65 pollici a 399€? Si è possibile ...
Internet in Italia: Vodafone trionfa in ...
Electronic Arts: l'acquisizione è...
Apple Intelligence: ecco le app che sono...
Arriva l'aggiornamento di fine settembre...
Volete un ottimo SSD Gen.4 da 2TB e 7450...
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: 12:05.


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