giovedì 16 aprile 2009

questioni generali sulla programmazione

Alcune persone mi fanno notare che il loro livello di partenza nella programmazione è quello che è, o si interessano per capire meglio come questa attività può venir inquadrata nell'esame di fisica. Qui si potrebbe dire (e proporre e replicare) molto.. Per non intasare la pagina principale del blog uso questo post solo per aprire la discussione, che continuo con alcuni auto-commenti a questo post.

7 commenti:

  1. Auto-commento 1.
    Ai fini dell'esame posso immaginare una molteplicità di possibilità: può essere argomento di un pezzo di orale, o di una discussione, come posso seguire uno studente che metta in piedi un programma che rimpiazzi praticamente l'intero esame, etc. Sono tutte possibilità che non voglio "canonizzare", proprio perchè rientrano nell'ambito del facoltativo, e perchè l'interesse dei soggetti può variare molto. E poi questo è un terreno scivoloso (per me intendo), su cui è meglio muoversi con prudenza, dopo aver visto gli interessati in faccia.
    Quindi non esiste un "livello richiesto" relativamente alla tecnica di programmazione. Il livello richiesto dipende da quello che uno si ripromette di fare.
    Gli interessati devono tenere conto che il mio sguardo è rivolto alla fisica e alla modellizzazione, non alla programmazione come disciplina autonoma. Per dire, in un esame di programmazione C un errore nell'uso dei puntatori è grave, a me nel contesto esame di fisica non me ne può fregar di meno.

    RispondiElimina
  2. Auto-commento 2. Ma questa roba serve?

    Non lo so. Di mio istinto direi "moltissimo", ma più a freddo non ne sono sicuro.
    Escludiamo dal discorso la laurea specifica in ingegneria informatica, e consideriamo le altre, in particolare la nostra. Quindici anni fa i corsi di informatica non credo neanche che fossero tra quelli obbligatori, però la maggioranza di quelli che si laureavano (5 anni) un qualche tipo di programma lo aveva scritto e soprattutto usato, per una volta almeno. Adesso, ammesso che uno li sappia scrivere o usare, di programmi numerici nelle tesi di laurea se ne vedono molto pochi e l'aria è che se ne vedano sempre meno, dato che certi tipi di tesi sono diventate decisamente antieconomiche. Questo vale sia per le tesi al 3o che al 5o anno.
    Uno può domandare: in università si usano meno, ma poi? Anche qui mi verrebbe da dire che se quindici anni fa la cosa aveva un peso adesso ne ha quindici volte di più, però poi in pratica si può fare il medico senza essere specializzati in chirurgia, si può fare l'infermiere senza una laurea in medicina, il portantino senza un diploma di infermiere. E se uno deve fare il portantino, arrivare fino alla specializzazione in chirurgia sarebbe una perdita di tempo colossale. Inoltre, qui non siamo nella Silicon Valley, se sei l'unico in giro che sa fare una cosa finisce che nessuno ti chiede mai di farla.
    Io noto che quegli studenti che al terzo anno sanno programmare sono anche studenti più brillanti, ma non so quale delle due sia la causa e quale l'effetto.

    RispondiElimina
  3. se conoscessimo C o qualsiasi altro programma in modo approfondito, allora sicuramente sarebbe utile...poi certo nella vita uno la conoscenza deve procurarsela...

    RispondiElimina
  4. Funzioni.

    Alcuni mi segnalano che nei corsi di info non si arriva alle funzioni. Se uno le usa nel modo più semplice, è una cosa molto elementare.

    il programma:

    ------------------------------------------

    int main() {
    double x = 8;
    double y = (x*x);
    print y .....
    }

    ----------------------------------------------
    diventa:
    ----------------------------------------------

    double quadrato(double a) {
    return a*a;
    }

    int main(){
    double x = 8;
    double y = quadrato(x);
    print y.....
    }

    -------------------------------------------------
    Devo spiegarla 'sta storia? penso che si capisca senza commenti. Naturalmente il discorso si può complicare all'infinito, ma fino a che non si introducono i puntatori o i vettori le varianti sul tema sono ovvie.

    Nei miei programmi, dove sono presenti serie variazioni sul tema, le ho spiegate.

    RispondiElimina
  5. Auto-commento 3: che livello serve?

    Non distinguo il problema esame dai problemi più generali, perdonatemi.

    Il livello veramente essenziale è quello dell'italiano che capisce un libro scritto in spagnolo, anche se ovviamente in una scuola di Madrid un suo tema non passerebbe l'esame di quinta elementare.

    Questo è il livello che io ho su molti linguaggi di programmazione che non uso mai: fortran, basic, pascal, java, C, perl, python. Una volta volevo capire che cosa erano gli algoritmi genetici, quando finalmente ho trovato un programma in java me lo sono scaricato e studiando quello ho capito tutto quello che sui libri era arabo.

    Definirei questo livello "lettura essenziale".

    Poi c'e' il livello "costruttivo minimo": conoscere quel tanto che basta di UN linguaggio da poter scrivere programmi che risolvano qualsiasi problema.

    E poi si può andare oltre, ma è chiaro che occorrono anni. Secondo un famoso articolo, dieci anni circa di studio ed esperienza intensi.

    Notate che uno può essere bravo a scrivere programmi, ma fare fatica a capire quelli degli altri o viceversa.

    Secondo me, se uno riesce a capire quei programmi che ho pubblicato, capisce la fisica molto meglio che sui libri. E soprattutto, capisce molto della matematica associata. E capisce ancora di più se riesce a riscriverseli per conto suo, i programmi. Perchè allora si chiarisce il senso di certe scelte.

    I linguaggi di programmazione si somigliano molto. Questo deriva dal fatto che la logica dei ragionamenti matematici è universale. Quando programmi sei obbligato a scarnificare quella logica.

    RispondiElimina
  6. Domanda che non c'entra niente col post: sulla lezione di oggi non ho capito molto bene l'ultimo esempio che ha fatto in merito alla legge di Keplero, non capisco l'analogia col problema precedente del tavolo col "buco" (che mi sembra di aver compreso).

    RispondiElimina
  7. In un certo senso anche il pianeta si muove (col senno del poi) su una "tavola", l'unica differenza restando che nel caso planetario la corda è elastica. In tutti e due i casi la forza che impedisce all'oggetto di andare dritto per inerzia è sempre diretta verso lo stesso centro immobile che usiamo come centro di riduzione per il calcolo dei momenti.

    RispondiElimina