Programmazione generica

di il
12 risposte

Programmazione generica

Buongiorno,
mi presento , sono Fernando e sono stato incaricato di redigere la documentazione di un'applicazione scritta in C/C++ nel lontano 1998, poi modificata negli anni per adeguarsi agli standard attuali.
Attualmente è compilata sotto linux in C++11.
Il mio problema è che è scritta tutta in programmazione "generica", quindi documentare ogni istruzioni è un bagno di sangue (se così si può dire ).
Avrei bisogno del vostro aiuto per alcune parti di codice che non comprendo, o comprendo poco...
Ad esempio non capisco il codice (i nomi sono stati cambiati per motivi di sicurezza):

template<class P, class H>
class classePadre: public classDerived1, public classDerived2
{
....
};

class classeFiglia : public classePadre<body, header>
{
public:
....
};

Che cosa fa effettivamente la riga class classeFiglia : public classePadre<body, header>

Ringrazio tutti anticipatamente per le risposte.
Grazie

12 Risposte

  • Re: Programmazione generica

    Definisce una classe!
  • Re: Programmazione generica

    È una classe template.
    https://www.learncpp.com/cpp-tutorial/class-templates

    Ti conviene prenderti un libro sul C++ moderno.
  • Re: Programmazione generica

    Mi 'pare' che un 'requirement FONDAMENTALE' per fare un lavoro del genere sia CONOSCERE il C++.

    Se non lo si conosce, ci si dovrebbe rivolgere all'antico passato, al tempo dei Greci, e fare quello che facevano loro: si STUDIA

    La vedo parecchio complicata fare un corso di C++ e programmazione generica (ALLA C++) a suon di post
  • Re: Programmazione generica

    Il tuo problema non è il tipo di programmazjone ma la conoscenza del linguaggio
  • Re: Programmazione generica

    Ho programmato in C/C++ più di 10 anni fa e facevo una programmazione molto specifica, senza tutte queste caratteristiche avanzate.
    Ho chiesto solamente la spiegazione di una riga e nello specifico che cosa faceva l'ereditarietà scritta in quella forma, se invece di dirmi di prendere un manuale o di studiarmi il linguaggio avrestre risposto semplicemente alla mia domanda avremmo guadagnato tutti tempo ed io avrei imparato qualcosa di nuovo.

    Ma evidentemente sono troppo ignorante per poter meritare la vostra considerazione.
    Scusate il disturbo.
  • Re: Programmazione generica

    Studiare il c++ 10 anni e volere che ti spieghino un template e l'ereditarietà è anche più strano. Comunque mi pare che tu possa continuare da solo sapendo che, come ti è stato suggerito, devi devi semplicemente aprire un libro e studiare i template. Un forum non sostituisce certo un testo o un corso ma dà solo indicazioni.
  • Re: Programmazione generica

    Vuol dire che 10 anni fa (2010) hai programmato in C
    NON in C++,

    I template esistono dal 1988 e le STL dal 1993 (quindi da almeno 20 anni, se riferito al 2010) e usare il C++ SENZA le STL vuol dire volersi moooolto male (ed essere defenestrati da responsabile )

    Nota: NON E' ignoranza, e' PIGRIZIA
  • Re: Programmazione generica

    migliorabile ha scritto:


    Vuol dire che per 10 anni hai programmato in C
    NON in C++,
    visto che i template esistono dal 1988 e le STL dal 1993
    e usare il C++ Senza le STL vuol dire volersi moooolto male;-).
    Ho detto che ho programmato in C/C++ 10 anni fa, da allora più niente.
    Dal 2011 ho programmato solo in PHP, jquery, ajax, javascript e mysql.

    Inoltre con tipo di programmazione che facevo, viste le scarsissime risorse a disposizione, la programmazione era C/C++ senza l'utilizzo di nessuna libreria e/o funzionalità avanzate.

    Template ed STL non erano contemplati nella mia vecchia azienda visto che si programmava al massimo con i thread e si comunicava con dispositivi tramite seriale 9 pin, al massimo l'USB.
    Le uniche librerie utilizzate erano quelle di comunicazione, protocolli TCP/IP e gestione dell'ora. Niente stringhe, mappe, iteratori, template, ecc, ecc
    Bisognava sempre cercare di capire qual'era l'istruzione più veloce per eseguire una determinata operazione, bisognava che iol programma girasse su un mini-pc, con CPU da 200Mhz e l'applicazione non doveva superare lo 0,5% - 1% dell'attività della CPU.
    L'applicazione gestiva 250.000 telegrammi al secondo (protocollo DMX) o KNX (molti meno telegrammi).

    Adesso invece mi trovo a documentare un'applicazione che gira su HP-UX, multiprocessore, memoria e disco praticamente illimitata, quindi sono state utilizzate tutte le caratteristiche possibili del linguaggio, ed io chiaramente sono rimasto indietro.

    Il tipo di programmazione che uno fa su un linguaggio come C/C++ varia a seconda di dove si programma, se io devo fare un applicativo su Windows con Visual Studio, non mi interessa per niente gestire il little endian o il big endian, non mi interessa sapere come muovere i bit all'interno del byte, perchè ho già le funzioni che lo fanno, se invece programmo un applicazione che può essere compilata ed eseguita sulla stragrande maggioranza delle architetture, allora ho un'altro problema.
    Questo è quello che non avete capito, dei template a me non è importato un bel niente fino a 6 mesi fa perchè NON MI SERVIVANO, adesso che mi servono sto facendo un full immersion in libri, esempi ed altro per mettermi al passo, ma ho perso troppo tempo nel non stare dietro ai cambiamenti, d'altra parte ho anche una vita oltre al lavoro e sinceramente non ne avevo proprio voglia di rimettermi a casa al computer dopo 9 ore di lavoro.
  • Re: Programmazione generica

    mightygandalf ha scritto:


    Ho programmato in C/C++ più di 10 anni fa e facevo una programmazione molto specifica, senza tutte queste caratteristiche avanzate.
    Ho chiesto solamente la spiegazione di una riga e nello specifico che cosa faceva l'ereditarietà scritta in quella forma, se invece di dirmi di prendere un manuale o di studiarmi il linguaggio avrestre risposto semplicemente alla mia domanda avremmo guadagnato tutti tempo ed io avrei imparato qualcosa di nuovo.

    Ma evidentemente sono troppo ignorante per poter meritare la vostra considerazione.
    Scusate il disturbo.
    Io ho risposto alla tua domanda.
    Il suggerimento non era provocatorio, ma dovuto al fatto che nel frattempo potrebbero essere cambiate molte altre cose rispetto ai template, i quali si sono evoluti, ma già c'erano.
  • Re: Programmazione generica

    Spezzo una lancia a favore di mightygandalf: l'oop non è l'unico paradigma possibile del C++.
    In ogni caso devi per forza studiare le basi di template ed eredità, sennò non ne esci. Qui ti si può dare una mano più avanti, eventualmente
  • Re: Programmazione generica

    @weierstrass, il C++ SENZA OOP e SENZA template si chiama C
    E per quello che ha scritto, e' ragionevole.

    La soluzione e' semplice:
    1) l'autore si arrotola le maniche della camicia e dedica le 24 - 9 - 8 ore a disposizione per STUDIARE quello che serve per fare il lavoro, oppure

    2) dice al responsabile che non lo sa fare e che devono prendere un consulente esterno con le competenze necessarie
  • Re: Programmazione generica

    migliorabile ha scritto:


    @weierstrass, il C++ SENZA OOP e SENZA template si chiama C
    E per quello che ha scritto, e' ragionevole.

    La soluzione e' semplice:
    1) l'autore si arrotola le maniche della camicia e dedica le 24 - 9 - 8 ore a disposizione per STUDIARE quello che serve per fare il lavoro, oppure

    2) dice al responsabile che non lo sa fare e che devono prendere un consulente esterno con le competenze necessarie
    Arrotolo...arrotolo....ma non 24 ore al giorno...solo 9!!!
Devi accedere o registrarti per scrivere nel forum
12 risposte