Mario Vanoni ha scritto:Blizzard ha scritto:imparare a programmare secondo un paradigma di programmazione è, sostanzialmente, indipendente dal linguaggio usato
Concordo e quoto!
Diversi paradigmi stabiliscono anche diversi modi di pensare.
Usare un calcolatore RPN o algebrico,
il modo e` diverso, ma la matematica?
La matematica è uguale come lo è la legge fondamentale che un algoritmo è un insieme finito di passi per risolvere un determinato problema.
È la programmazione dell'algoritmo che è comunque differente da paradigma a paradigma.
Per fare un esempio in C mi concentro a scrivere un sistema basato su dati identificati come strutture e funzioni che elaborano istanze delle strutture.
In C++ ho una visione per classi del mio progetto. Subentra l'ereditarietà e il polimorfismo. Nell'ottica di tutte le fasi di progettazione, sviluppo e mantenimento del software non mi basta più identificare i dati del problema come semplici blocchi ma devo pensare al dominio di appartenenza di questi blocchi e a creare magari classi virtuali che definiscono l'interfaccia di elaborazione di un grande dominio in cui implementerò i sottodomini.
In assembly ho un concetto ancora diverso. Penso che devo definire blocchi e costanti in determinate aree (.text ad esempio). I dati da elaborare devono essere necessariamente memorizzati in registri. La mia memoria è identificata come uno stack che non ha accesso casuale ma solo push e pop. Il mio programma non è formato ne da classi ne da dati+funzioni ma da unico_blocco_di_codice+stack+registri. Le procedure stesse sono solo un escamotage fatto con le label e i jump.
Ora nella progettazione di un software java, non posso pormi dinanzi un editor con lo stesso "algoritmo mentale" che utilizzerei per scrivere lo stesso software in C. È sconveniente.
Quello che dico non è lascia perdere l'assembly. Ma non studiare l'assembly con la speranza di avere un apprendimento facile del C perchè sono due metodi di pensare totalmente differenti.
Se scrivi codice C pensando come l'assembly *potrebbe* venire fuori un software decisamente mal programmato.
Stesso discorso per quelli che pensano che una volta che è stata fatta una scorpacciata di C si può passare in maniera indolore sul C++ quando pure Stroustrup ci tiene a dire che sono due linguaggi differenti.
Gio