Torna indietro   Hardware Upgrade Forum > Software > Programmazione

OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
Abbiamo partecipato all'OVHcloud Summit 2025, conferenza annuale in cui l'azienda francese presenta le sue ultime novità. Abbiamo parlato di cloud pubblico e privato, d'intelligenza artificiale, di computer quantistici e di sovranità. Che forse, però, dovremmo chiamare solo "sicurezza"
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a
Abbiamo potuto mettere le mani in anteprima sul nuovo monitor MSI dedicato ai giocatori: un mostro che adotta un pannello QD-OLED da 26,5 pollici con risoluzione 2560 x 1440 pixel, frequenza di aggiornamento fino a 500 Hz e tempo di risposta di 0,03 ms GtG
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro
DJI aggiorna la sua linea di droni ultraleggeri con Neo 2, un quadricottero da 160 grammi che mantiene la compattezza del predecessore ma introduce una stabilizzazione meccanica a due assi, sensori omnidirezionali e un sistema LiDAR
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-07-2005, 00:35   #1
atragon
Senior Member
 
L'Avatar di atragon
 
Iscritto dal: Sep 2000
Messaggi: 886
Ereditarietà multipla

Domanda frutto di una chiaccherata con alcuni sviluppatori. Mio quesito: come mai in tanti linguaggi moderni si tende a non supportare l'ereditarietà multipla? Per quanto ne so tra quelli "diffusi" solo C++ e Smalltalk la supportano, anzi anche Python se non erro... Delphi, Java, C#, per non parlare di VB, per citarne altri, invece no. Alcune idee:
"ci sono le interfaccie che bastano e avanzano". Può darsi che bastino ma non mi sembra proprio la stessa cosa
"troppo complessa e soggetta a bug la programmazione". Questo mi sembra più sensato ma poichè non lo dice il medico (ho chiesto anche a mia moglie per conferma ) di usarla per forza non vedo perchè non supportarla. Almeno non mi sembra una ragione sufficiente
"il codice è meno efficiente" Questa mi sembra piovuta dal cielo... non saprei proprio su che si basi un'affermazione simile... a occhio direi che esattamente il contrario, semmai.
"Rende problematica la gestione di progetti complessi". May be...

Non uso C++ da una vita ma questa, l'ereditarietà multipla, mi era sempre parsa come uno strumento molto potente e che, se usato cum grano salis poteva anche ridurre i tempi di sviluppo.
Che ne dite?
__________________

1986/2008 - 22 anni di rabbia cancellati in un giorno. Adesso passeranno altri 22 anni.. Learn Falcon language sul sito ufficiale e sul mio
RIP NBA3D

Ultima modifica di atragon : 02-07-2005 alle 00:40.
atragon è offline   Rispondi citando il messaggio o parte di esso
Old 02-07-2005, 02:16   #2
Alvaro Vitali
Member
 
L'Avatar di Alvaro Vitali
 
Iscritto dal: Apr 2005
Messaggi: 224
"troppo complessa e soggetta a bug la programmazione"

La verità credo sia questa, l'ereditarietà multipla, anche se uno strumento molto potente, è causa di grossa complessità e può dar luogo a comportamenti imprevisti a causa, ad esempio, di situazioni ambigue quali l'overriding di un metodo che è presente in entrambe le classi "madri", per quanto risolvibile richiamandolo in modo esplicito con l'operatore di risoluzione dello scope "::" ed il nome della classe.

Concordo con te che non essendo obbligatorio usarla potevano permetterla lasciando al programmatore il "rischio" di usarla.
CIAO!
Alvaro Vitali è offline   Rispondi citando il messaggio o parte di esso
Old 02-07-2005, 02:39   #3
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Lasciare in un linguaggio tutti questi "rischi" significa quasi sempre incorrere negli errori. Tutti i linguaggi moderni sono progettati per fare in modo che li programmatore non incappi negli errori, java soprattutto spinge molto in questa direzione, per cui si tende ad evitare certe funzionalità che spesso complicano di molto la semantica e la sintassi di un linguaggio per apportare benefici minimi oltre a favorire gli errori.
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 02-07-2005, 15:09   #4
atragon
Senior Member
 
L'Avatar di atragon
 
Iscritto dal: Sep 2000
Messaggi: 886
Quote:
Originariamente inviato da anx721
Lasciare in un linguaggio tutti questi "rischi" significa quasi sempre incorrere negli errori. Tutti i linguaggi moderni sono progettati per fare in modo che li programmatore non incappi negli errori, java soprattutto spinge molto in questa direzione, per cui si tende ad evitare certe funzionalità che spesso complicano di molto la semantica e la sintassi di un linguaggio per apportare benefici minimi oltre a favorire gli errori.
Questo è senz'altro vero, ad esempio anche C# fa suo questo aspetto a livello di specifiche di progettazione. Quello che mi pare è che la modellazione per così dire "realistica" degli oggetti può venire un po' castrata da questa mancanza ed è una limitazione che non approvo, personalmente. Mi pare una lacuna che in alcuni casi costringe a dei giri non proprio ortodossi. Per me, tanto per dirne una, le interfaccie sono un poco elegante trucchetto per non far sentire troppo questa assenza ai programmatori.
__________________

1986/2008 - 22 anni di rabbia cancellati in un giorno. Adesso passeranno altri 22 anni.. Learn Falcon language sul sito ufficiale e sul mio
RIP NBA3D
atragon è offline   Rispondi citando il messaggio o parte di esso
Old 02-07-2005, 15:24   #5
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
in ogni modo si risolve molto facilmente, anche se l'eleganza è poca: supponiamo che hai le classi A e B e che vuoi creare C che deriva contemporaneamente da A e B; in C++ ok, lo fai, in Java no; e allora che fai? fai derivare C da A (ad esempio) e includi in C una istanza di B come membro pubblico. poco elegante, ma imho la migliore.
ciao
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 02-07-2005, 15:56   #6
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da atragon
Questo è senz'altro vero, ad esempio anche C# fa suo questo aspetto a livello di specifiche di progettazione. Quello che mi pare è che la modellazione per così dire "realistica" degli oggetti può venire un po' castrata da questa mancanza ed è una limitazione che non approvo, personalmente. Mi pare una lacuna che in alcuni casi costringe a dei giri non proprio ortodossi. Per me, tanto per dirne una, le interfaccie sono un poco elegante trucchetto per non far sentire troppo questa assenza ai programmatori.
Secondo me la domanda giusta e': mi fai un esempio di caso in cui l'ereditarieta' multipla ti permette di risolvere il problema in maniera piu' semplice rispetto ad altri costrutti? Se mi fai l'esempio, siamo sicuri che non riesci a modellare il problema di modo da non aver bisogno dell'ereditarieta' multipla semplificando la soluzione?

Esistono situazioni in cui il problema non puo' essere risolto in altro modo piu' semplice, ma sono rarissimi e per questi rari casi il C++ va benissimo. Non vedo perche' si debba complicare un linguaggio per portarsi dietro un grado di flessibilita' che va usato solo molto raramente, quindi per me e' giusto che C# e Java non abbiano ereditarieta' multipla.

E le interfacce non sono un modo per nascondere questa mancanza
fek è offline   Rispondi citando il messaggio o parte di esso
Old 02-07-2005, 15:58   #7
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da 71104
in ogni modo si risolve molto facilmente, anche se l'eleganza è poca: supponiamo che hai le classi A e B e che vuoi creare C che deriva contemporaneamente da A e B; in C++ ok, lo fai, in Java no; e allora che fai? fai derivare C da A (ad esempio) e includi in C una istanza di B come membro pubblico. poco elegante, ma imho la migliore.
ciao
Oppure ancora piu' semplicemente fai "composition" fra le due classi ed esponi le due interfacce nella classe C che contiene la classe A e la classe B.

Se esporre le due interfacce porta la classe C ad avere un'interfaccia troppo complessa allora questo e' un ottimo segnale che il design e' troppo complesso e la soluzione non e' l'ereditarieta' multipla, ma e' semplificare il design e dividere la classe C secondo il principio: "Ad ogni elemento una e una sola responsabilita'".
fek è offline   Rispondi citando il messaggio o parte di esso
Old 02-07-2005, 17:52   #8
atragon
Senior Member
 
L'Avatar di atragon
 
Iscritto dal: Sep 2000
Messaggi: 886
Quote:
Originariamente inviato da fek
Secondo me la domanda giusta e': mi fai un esempio di caso in cui l'ereditarieta' multipla ti permette di risolvere il problema in maniera piu' semplice rispetto ad altri costrutti? Se mi fai l'esempio, siamo sicuri che non riesci a modellare il problema di modo da non aver bisogno dell'ereditarieta' multipla semplificando la soluzione?

Esistono situazioni in cui il problema non puo' essere risolto in altro modo piu' semplice, ma sono rarissimi e per questi rari casi il C++ va benissimo. Non vedo perche' si debba complicare un linguaggio per portarsi dietro un grado di flessibilita' che va usato solo molto raramente, quindi per me e' giusto che C# e Java non abbiano ereditarieta' multipla.

E le interfacce non sono un modo per nascondere questa mancanza
Più o meno è il pensiero corrente e cioè che il gioco non valga la candela.... nonostante, mi pare di poter dire, l'ereditarietà multipla sia il sistema più "totale", non mi viene in mente un altro termine ora, non è in realtà mai l'unico modo per risolvere i problemi.
Cmq sto anche leggendo questo:
http://weblogs.asp.net/fbouma/archiv.../04/47476.aspx
mi pare interessante....
__________________

1986/2008 - 22 anni di rabbia cancellati in un giorno. Adesso passeranno altri 22 anni.. Learn Falcon language sul sito ufficiale e sul mio
RIP NBA3D
atragon è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro DJI Neo 2 in prova: il drone da 160 grammi guada...
L'IA "seria" di Appian è diversa: inserita nei processi e rispetta dati e persone L'IA "seria" di Appian è divers...
Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
AWS Transform si evolve: agenti IA per m...
I social network hanno stancato gli ital...
Star Citizen supera i 900 milioni di dol...
Netflix ha eliminato la funzione Cast pe...
L'IA è una bolla e scoppier&agrav...
Un rapporto collega i data center di Ama...
Troppa concorrenza per Cherry (quella de...
Entro il 2035 la Cina vuole costruire de...
Tineco in super sconto: ultimo giorno di...
La Cina creerà una costellazione ...
I veicoli elettrici emettono radiazioni ...
Stai per acquistare una PS5? Attento al ...
iPhone 17 Pro Max finalmente disponibile...
Apple, Sony, Bose, Beats, Sennheiser, CM...
Arriva il Raspberry Pi 5 da 1 GB, ma por...
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: 00:36.


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