Non riesco a capire!

di il
56 risposte

56 Risposte - Pagina 4

  • Re: Non riesco a capire!

    “It is practically impossible to teach good programming to students that have had a prior exposure to C++: as potential programmers they are mentally mutilated beyond hope of regeneration.”

    ? Edsger Dijkstra
  • Re: Non riesco a capire!

    Grazie a tutti
    cercherò di mettere a frutto le vostre lezioni
    e di risolvere il problema
  • Re: Non riesco a capire!

    jj2007 ha scritto:


    “It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.”

    ? Edsger Dijkstra
    Ad esempio:
    https://programmingisterrible.com/post/40132515169/dijkstra-basic

    E' BASIC non C++
  • Re: Non riesco a capire!

    Nel Suo caso, caro migliorabile, è C++:
    C'e' un ASSIOMA che si DEVE SEMPRE tenere presente quando si programma in C/C++ (almeno per i principianti)
    DEALLOCA CHI ALLOCA
    perche' SOLO chi ha allocato SA quando e come deallocare.
    Questo "assioma" sarebbe valido solo nel caso esotico che passa una variabile ad una routine che
    a) non ha scritto Lei
    b) non sa che tipo di allocazione è fatta (si potrebbe passare quest'informazione tranquillamente alla routine)
    c) e/o si tratta di un programma multi-threaded.

    Altrimenti quel "assioma" è una sciocchezza da C++ confusionale, nient'altro.
  • Re: Non riesco a capire!

    Mi genufletto alla Vostra millisecondaria esperienza .
    Ho tutto da imparare!
    Ma si, curiamo il cancro con il bicarbonato, perche' la malattia e' solo uno squilibrio dell'anima
  • Re: Non riesco a capire!

    @migliorabile
    bel quesito mi hai posto!
    Al momento non posso realizzarlo perché ho altri progetti in via di sviluppo ma l’idea mi scompifferà
    Quando avrò tempo libero magari lo realizzo!
    Comunque Dovrei fare un allocutore di memoria
    a livello Teorico io lo risolverei nel seguente modo:
    mi allocherei due grandi aree distinte
    la prima area conterrebbe puntatori, dimensioni ed un codice di liberta, un byte che se il puntatore e stato assegnato o meno.
    nella seconda area ci sarebbero tutti i dati.
    alla prima allocazione il puntatore della prima area, naturalmente, punterebbe alla seconda area.
    funzionerebbe pressa poco cosi:
    quando vado ad allocare andrei a vedere il primo codice di libertà disponibile e
    andrei a vedere se era già aveva una dimensione.
    se già l’aveva verifico che richiesta e disponibilità siano uguali se lo sono rioccupo il codice utilizzato
    e terminerei la procedura.
    altrimenti vado a cercare un altro codice di libertà.
    Altrimenti lo andrei ad occupare inserendo nel campo precedente il numero dei byte da utilizzare
    andrei nella seconda struttura a puntatore + numero byte da utilizzare +1 e metterei un codice di fine variabile.
    tornerei alla prima area e mi calcolerei un nuovo puntatore, al fine di poter fare altre allocazioni, che sarebbe ultimo puntatore occupato + numero di byte utilizzati + 2 e nel campo codice di libertà metterei il codice di disponibilità, io utilizzerei 0 ma ogni uno potrebbe mettere quello che vuole!
    e cosi via tutte le allocazioni successive.
    Per i campi adattabili, cioè quelli che cambiano dimensioni i più rognosi!, la cosa è leggermente più complessa perché prima si dovrebbe trovare un codice di libertà con dimensione 0 attivarlo con le nuove dimensioni del campo e poi tornare a liberare il vecchio puntatore.
    nel qual caso non si dovessero trovare codici di libertà liberi:
    o si segnala l'errore cosa da evitare!
    oppure si crea una terza area, con la stessa struttura della prima, più grande della prima si copia la prima area nella terza e si dealloca la prima area.
    Nel caso in cui dovesse finire lo spazio della seconda area
    Se non si vuole segnalare l’errore!
    Si dovrebbe creare una terza area più grande della seconda ricopiare tutti i dati
    Ricalcolare tutti i puntatori e poi deallocare la seconda area.
    Per quanto riguarda le deallocazioni basterà fare al record che si vuol deallocare porre nel codice di libertà il codice di disponibilita.
  • Re: Non riesco a capire!

    Dimenticavo
    quando allocherei le 2 strutture in entrambe metterei un byte BAH che non verrebbe conteggiato nel calcolo dei puntatori.
    ma servirebbe come controllo di esistenza.
    il byte in più dopo ogni dato,seconda area, lo utilizzerei come controllo anti sfondamento dei campi.
    cosi come mi hai spiegato.
  • Re: Non riesco a capire!

    Se vuoi scrivere un gestore di memoria personalizzato o un garbage collector la questione è tutt'altra e non c'entra molto con quello che scrivi in questo e in altri thread.

    Con le librerie standard non è previsto nulla perché ti confermo è assolutamente inutile
  • Re: Non riesco a capire!

    Queste diatribe sullo stile di programmazione mi fanno
    perchè
    sia che stiamo parlando di guru della programmazione sia di normali professionisti o di persone alle prime armi.
    ogni uno sviluppa un suo stile di programmazione basato, o quanto meno si avvicina, alle proprie strutture mentali!
    ergo lo stile di uno il più delle volte non è comprensibile ad un altro, e secondo me, è giusto cosi perchè ogni uno affronta i problemi in modo/stile diverso e si esprime, molto spesso, in maniera differente da un altro!
    secondo me fin quando un programmatore scimmiotterà lo stile di quelli più bravi di lui non comprenderà le conoscenze che questi ultimi gli vogliono trasferire anche se le metterà in pratica!
    le conoscenze da acquisire devono essere portate e adattate al proprio stile solo cosi si potranno apprendere ed essere usate in maniera corretta!
  • Re: Non riesco a capire!

    oregon ha scritto:


    Se vuoi scrivere un gestore di memoria personalizzato o un garbage collector la questione è tutt'altra e non c'entra molto con quello che scrivi in questo e in altri thread.

    Con le librerie standard non è previsto nulla perché ti confermo è assolutamente inutile
    lo so che non centra niente con il thred
    non voglio scrivere un allocatore di memoria o un garbage collector,non ne ho il tempo e forse le conoscenze!
    mi avevano chiesto come avrei risolto un determinato problema e io ho spiegato come avrei risolto il problema nulla di più nulla di meno.
    comunque per me il thred si piò anche chiudere.
    credo di aver capito, grazie al vostro aiuto, come risolvere il problema che avevo postato.
  • Re: Non riesco a capire!

    Hai capito che non si può, spero...
  • Re: Non riesco a capire!

    Naturalmente lo leggerò sono sempre pronto ad apprendere nuove cose
    grazie ancora
Devi accedere o registrarti per scrivere nel forum
56 risposte