PHP è il male se devi imparare in modo serio a programmare, qualsiasi cosa tu debba imparare, PHP puoi casomai utilizzarlo quando hai già conoscenze salde e quindi sai come puoi aggirare tutti i vari problemi che lui ti crea!
Se C# sta a PHP come una divinità sta ad un comune mortale non vedo perché non utilizzare C#. Anche se comunque la cosa non è affatto ovvia e ad esempio per alcuni progetti web potrebbero risultare assai più utili linguaggi diversi dal C#.
Con PHP se riesci a capire a che ti serve un oggetto sei fortunato. Se si può fare tutto implementando le cose a forza di primitive e quella parte di libreria standard che c'è è totalmente procedurale, perché devo io (un io generico) mettermi ad utilizzare gli oggetti che mi creano solo problemi ad usarli col resto, anche con gli operatori di confronto che operano esattamente all'opposto con gli oggetti e con i tipi primitivi.
Il metodo di insegnamento è discutibile, partire già con l'idea di oggetto e delinearla per bene o partire da una concezione procedurale per poi aggiungere gli oggetti è una questione di gusto. Certo se parti da una concezione procedurale vedi gli oggetti come un surplus e un qualcosa che non fa altro che appesantire (cosa che secondo me è vera in molti casi, quando effettivamente l'ereditarietà è portata troppo all'estremo e non fa altro che indurre complicazioni, ripeto: in certi casi e quando l'ereditarietà è portata all'estremo, l'ereditarietà che è scollegata dall'incapsulamento, tanto che gli oggetti esistono anche senza ereditarietà, non voglio creare guerre ideologiche). E in ogni caso ci sono tanti altri linguaggi che ti permettono di sviluppare (apparentemente) senza oggetti, ad esempio il sopra citato Python, oppure Ruby, ...
In C# sei costretto a introdurre subito gli oggetti, altrimenti non scrivi neanche il main. Questo comunque, come già ho detto, ha sia vantaggi che svantaggi, dipende dal metodo d'insegnamento e c'è chi (insegnante) preferisce uno e chi preferisce l'altro. Io personalmente preferisco l'introduzione immediata degli oggetti, ma è solo una mia opinione.
In ogni caso per il "non capisce niente" pensa a tutte le tecniche di insegnamento (anche delle lingue parlate ad esempio) ad immersione, ai corsi in lingua, ai laboratori e all'apprendimento per sperimentazione, in cui l'apprendimento è graduale perché i concetti vengono spiegati gradualmente e si capiscono appunto per sperimentazione.
Ad ogni modo tu hai capito comunque, dato che stai usando C# e non è detto che tutti i manuali comincino come il tuo.
Per fare un analogo con la programmazione procedurale: tanti corsi C cominciano col dire "devi sempre scriveree in mezzo metterci il codice perché la funzione main è fondamentale e devi sempre includere le librerie" per spiegare il tutto solo poi, il punto è lo stesso: come non sai cos'è un oggetto, non sai cos'è una funzione. E non dire che già la conosci prima di cominciare a programmare perché l'idea che si ha di funzione è profondamente diversa da quella che ne ha un linguaggio di programmazione non puramente funzionale.codice:#include <stdio.h> int main(int argc, char **argv) { return 0; }


Rispondi quotando