OOP discorso serio

Hobet

Utente Attivo
609
222
CPU
i5 6600k
Dissipatore
AIO H100
Scheda Madre
ASUS z170 Deluxe
HDD
1 WD Blue 1 TB; evo 850 500gb
RAM
Vengeance 4x4
GPU
GTX 1070ti MSI
Audio
Nope
Monitor
MG278Q
Case
750D Corsair
Net
Fastweb 200/30
OS
PucyBuntu
Attualmente sto scrivendo un testo universitario riguardo il mio personale parere sulla programmazione OOP aka Object-oriented programming (Programmazione orientata agli oggetti).

Per i novizi rimando il tutto qui: https://it.wikipedia.org/wiki/Programmazione_orientata_agli_oggetti.

Il testo riassume le mie perplessità e i miei elogi sempre rimanendo nel personale, pro e contro di questo paradigma e dei suoi vantaggi in determinati ambiti e svantaggi, e di paradrugmi alternativi in ambiti alternativi prendendo come spunto soprattutto il C++ e del suo andamento anti OOP pur rimanendo un linguaggio OOP, dunque non parlo di linguaggi come small talk o altri ma principalmente di C C++ python e un personale e negativo parere su Java vista la sua popolarità in ambito didattico e sul suo andamento abbastanza deludente col tempo. Il tutto scritto da un utente fortemente unix che ama cimentarsi con il vecchio C.

Cercherò di inoltrarmi inoltre in argomenti molto vasti come i sistemi operativi e la loro progettazione e su sistemi basati su paradigma oop e di sistemi popolari con kernel linux, windows macosx e ovviamentedi poco conosciuti come Phantom os. Inoltre aprirò una parentesi su Windows:Longhorn e del suo completo fallimento.

Per chi non lo sapesse il tutto si riassume in:
Net. nel core di windows al posto di win32 API

Detto ciò oltre ai soliti parere familiari(inteso come amici) di cui ne conosco già l'esito sono curioso di sentire il vostro e anche di aprire questo thread nella speranza di vivacizzare la sezione Programmazione come lo è stato linux con
di cui ne sono stato felicemente taggato dall'autore.

P.s: ero ev0ss

Inoltre mi prendo la libertà di taggare delle persone che a mio avviso sono molte attive e ben informate sull'argomento: Mursey cdtux @DispatchCode

P.P.S: Qualunque vostra citazione se venissa presa da me e messa, verrà messa nella sezione fonti niente plagio qui :popo:
 
Ultima modifica:

icox

Utente Attivo
497
246
E' un argomento molto vasto, non so che risposte ti aspetti di avere.

Se vuoi un parere molto personale ritengo che il paradigma OOP sia una delle pietre miliari nello sviluppo del software, aiuta ad affrontare problemi con una metodologia chiara e relativamente semplice.
L'idea di avere una serie di entita' specializzate nello svolgere uno specifico compito e' secondo me vincente. Ti permette di gestire l'interazione fra esse in maniera semplice aiutandoti al contempo a mantenere una struttura sufficientemente ordinata, ben organizzata e relativamente semplice da manutenere, aggiornare e debuggare.
Chiaramente va usata con cognizione, non e' la risposta a tutti i problemi e ci sono contesti dove altri paradigmi vanno meglio.
Fra i contro segnerei il fatto che non e' immediato imparare ad usarla e, una volta imparata, non riesci piu' a programmare in altri modi :asd:
Inoltre frammenta molto il codice, quando devi iniziare a lavorare su qualcosa di gia' iniziato ti serve un po' di tempo per capire la struttura (sopratutto se la documentazione e' scritta male, ammesso che esista).

Per quanto riguarda i linguaggi citati non so esprimermi riguardo C++ in quanto l'ho usato troppo poco per avere un'idea chiara.

Sul Java sarebbe interessante capire perche' hai un'opinione negativa: a mio avviso e' un linguaggio piuttosto versatile e potente, anche se forse un po' troppo "verboso". In generale non ha prestazioni paragonabili ad un compilato, pero' ripaga in compatibilita' e portabilita'. Usando adeguatamente le strutture messe a disposizione si riescono ad ottenere prestazioni decisamente interessanti a mio avviso.
Sulla sua diffusione a livello "didattico" devo dire che forse non e' il miglior linguaggio con cui iniziare (IMHO e' piu' indicato il C o il Python) pero' non e' nemmeno da buttare via, ha caratteristiche che aiutano in fase di apprendimento, come ad esempio: una sintassi abbastanza chiara (anche se molto verbosa), e' un linguaggio fortemente tipato, ha un livello di astrazione maggiore e non ti permette di pacioccare con gli indirizzi in memoria (nel bene e nel male), ti mette al riparo dai piu' comuni errori di gestione della memoria e falle di sicurezza.
Chiamente e' uno strumento come tutti gli altri, la bonta' del risultato finale non dipende (solo) dallo strumento ma dalla capacita' di scrive.
 
  • Mi piace
Reazioni: over_coder e BAT

BAT

Moderatore
Staff Forum
Utente Èlite
22,946
11,580
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Attualmente sto scrivendo un testo universitario riguardo il mio personale parere sulla programmazione OOP aka Object-oriented programming (Programmazione orientata agli oggetti).
non mi è chiaro: intendi dire che stai scrivendo un libro che verrà usato nelle Università? sei un docente universitario?

un personale e negativo parere su Java vista la sua popolarità in ambito didattico e sul suo andamento abbastanza deludente col tempo.
sui gusti personali non discuto, sebbene su Java concordo al 100% con quanto detto da @icox;
ma cosa intendi con "andamento abbastanza deludente col tempo"?
 

cdtux

Utente Èlite
1,829
911
CPU
I7 3770
Scheda Madre
Asrock Z77 Extreme 4
HDD
Samsung 850 pro 250GB
RAM
Corsair Vengeance LP 16GB
GPU
Gigabyte GTX1060 6GB
Monitor
Dell U2412M
PSU
Seasonic Focus Plus 650
Case
Corsair Graphite 760T
OS
Debian / Ubuntu
@Rand ≠ Rand
Ti ringrazio per la citazione.

C, C++, python, java sono linguaggi che conosco marginalmente (C++ e java quasi per niente) quindi non mi sento di esprimere un'opinione riguardo ai paradigmi di programmazione applicati a questi linguaggi (o ai linguaggi stessi).
Il mio campo è principalemte il web, quindi posso solamente discutere dell'OOP applicata a php/javascript(node).

Concordo con te che il paradigma OOP è una delle pietre miliari della programmazione in genere, tuttavia non è la panacea di tutti i mali e non è utilizzabile sempre e comunque, ad esempio poco si sposa con alcune parti del pattern architetturale tipo MVC (utilizzato in ambito web dal 99% dei framework php).
Mi spiego: in ambito web se andiamo ad analizzare i controller dei framework, questi non sono altro che un gruppo di funzioni (chiamate HTTP entry points, o actions) all'interno di una classe (il controller..), che vengono richiamate una sola volta nel ciclo tipico del web (request->response) e non sono per forza di cose modulari (le action non possono interagire fra di loro, non avrebbe nemmeno senso farlo..).
Questo a mio modo di vedere è l'antitesi del paradigma OOP.
Poi la tendenza è quella di inserire tutta la logica nei controller, il che crea una montagna di codice non riutilizzabile ma soprattutto un incubo da mantenere. Ma quest'ultima cosa è solo una cattiva abitudine dei programmatori, me compreso.. :asd:

Alla fine comunque è tutta questione di compromessi ed ogni contesto ha il modo più efficente di risolvere un determinato problema.
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,854
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Azz, non mi ha citato, vedo ora il post.
Appena ho un po' di tempo leggo tutto, edito, e rispondo
 

Hobet

Utente Attivo
609
222
CPU
i5 6600k
Dissipatore
AIO H100
Scheda Madre
ASUS z170 Deluxe
HDD
1 WD Blue 1 TB; evo 850 500gb
RAM
Vengeance 4x4
GPU
GTX 1070ti MSI
Audio
Nope
Monitor
MG278Q
Case
750D Corsair
Net
Fastweb 200/30
OS
PucyBuntu
Azz, non mi ha citato, vedo ora il post.
Appena ho un po' di tempo leggo tutto, edito, e rispondo
A!!! mi ero dimenticato :P.
Comunque sulla tesi ci sto ancora lavorando non è morta e ho anche realizzato che per esperienza non posso parlare di OOP in generale ma solo affacciarlo un pò a Java e al C++ che sono linguaggi OOP "ibridi",soprattutto il second-system effect che sta subendo il C++ che nel tempo sta letteralmente complicando il tutto e se soprattutto vorrei discutere del tentativo di rimpiazzare/modificare win32 Api "C" con net. Il mio discorso era riferito a quello ma mi sono espresso male, mea culpa:popo:.
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!