Newsgroup: it.comp.lang.c++
Titolo: Borland/microsoft...

Salve a tutti,
sti iniziando un corso di c++ da zero, visto che posso comprare un solo
programma di compilazione & co. mi potreste dare una mano a scegliere se
sono migliori i prodotti della Borland (e quale fra i tanti...) o della
Microsoft.
Ovviamanete mi gioverebbe anche un consiglio su un libro (o piu' di
uno...) che forniscano le basi per imparare il c++ e per imparare a
usare un compilatore specifico (Borland o microsoft a vostra
preferenza).
Ringrazio tutti anticipatamente...    ImpraK
Ps se volete spedirmi suggerimenti privati dovrete mandare le vostre
lettere a 
imp...@hotmail.com
 altrimenti non potro' leggere.
--
Automatic posted from root@[194.184.21.130]
via Mailgate Server - 
http://www.mailgate.org

Microsoft.
Il solito dilemma!
personalmente non amo i prodotti Microsoft e soprattutto le sue tecnologie.
Tuttavia Microsoft rappresenta uno standard e Visual C++ e' il compilatore
C/C++ piu' utilizzato dalle grandi aziende, dove la stabilita' e le
dimensioni
della societa' garantiscono assistenza (discutibile) ed aggiornamenti.
Borland dal suo canto, e' sempre stata all'avanguardia sugli ambienti di
sviluppo. Basti pensare all'anziano Turbo C++ ed al suo fratello Turbo
Pascal.
Negli ultimi anni, vicissitutini aziendali, hanno visto cadere grosse teste
dovute a scelte sbagliate ed a tracolli finanziari (adesso vive una fase di
grande crescita). Nonostante cio', gli sviluppatori hanno prodotto i
migliori
ambienti di sviluppo. Attualmente i prodotti di punta sono l'ormai
consolidato
Delphi (Pascal ad oggetti) ed il suo derivato C++Builder. Credo che
quest'ultimo sia un ottimo punto di partenza per avvicinare i programmatori
al
non facile C++. Bisogna pero' sapere alcune particolarita': per C++
intendiamo quello standardizato da comitato ANSII C++. Infatti, C++ Builder
pur consentendo di programmare in ANSII C++ e di utilizzare perfettamente le
API di Windows, dispone di una libreria di classi chiamata VCL, che possiede
delle estensioni del linguaggio.
In altre parole di tratta di un C++ leggermente personalizzato per garantire
compatibilita' con l'ambiente Delphi da cui ha ereditato la VCL.
A titolo di cronaca, anche la libreria di classi MFC di Microsoft, non e'
per nulla
ANSII C++ e soprattutto non e' molto Object Oriented!
Allora cosa consigliarti. Acquista una versione standard del C++ Builder
della Borland. E' immenente la versione 3.0 al prezzo di meno di 200.000.
E' disponibile una versione con manualistica in Italiano.
Per imparare il C++, personalmente vedo ai primi posti:
Programmare in C++ di BRUCE ECKEL, anche se non recente e' uno
ottimo maestro. E dello stesso autore Thinking in C++, purtroppo in
inglese. Ti informo che programmare in C++ prima o poi riuscirai, non e'
altrettanto facile "pensare in C++", ovvero object oriented.
Buona fortuna.
Dimenticavo, dopo aver usato Borland potrai pensare di passare a
Microsoft...!
Oswald.cpp





Scusa,
ma quali sono le "estensioni al linguaggio" operate da Borland
per implementare la VCL?
Ciao.


Vi sono key-word quali __property, una tra le piu'
evidenti.
Con __property Borland permette di effettuare operazioni di read
and write sulle variabili private di una classe in modo piu'
amichevole. 
Ad esempio:
class B{
private:
int i;
...
public:
void Set(int n);
int Get();
...
};
Attraverso __property sara' possibile indicare che nelle operazioni 
di Read il compilatore dovra' chiamare la funzione Get() ed in
quelle di Write chiamera' Set(...). Saranno possibili le
seguenti istruzione non ammesse dal C++:
B obj;
obj.i = 10;
cout << obj.i;
Personalmente, una volta compreso il meccanismo, le estensioni
sono vantaggiose. Ma qualche purista si rifiuta di accettarle.
A presto.

Non ho il tempo di approfondire la questione, ma penso che
__property sia una una classe template. Se così è, allora non
è una estensione al linguaggio e dovrebbe essere portabile.
Infatti una proprietà si può vedere come una classe in cui
il metodo "set" è dato dalla ridefinizione dell'operator=, mentre
il metodo "get" è dato dalla ridefinizione di un opportuno operatore
di conversione. Ad esempio, questa è una classe che implementa
una proprieta di tipo stringa:
class StringProperty {
public:
    StringProperty() {value="";}
    //questo è il metodo "set"
    void operator=(const String& s) {
        value=s;
    }
    //questo è il metodo "get"
    operator String () {
        return value
    }
private:
    String value;
}
E' chiaro che questo esempio si può parametrizzare sul tipo,
qui solo String, e farlo diventare un template.
Ciao.
din...@writeme.com


Assolutamente no! A monte il compilatore potrebbe fare qualcosa
del genere, ma e' insito nel compilatore del linguaggio
e' per nulla portabile. __property e le altre
key-word sono state una scelta obbligata da parte di Borland
che hanno voluto creare un ambiente di sviluppo uguale
a Delphi al punto che la libreria di classi che untilizza,
la VCL, e' proprio quella scritta in pascal per l'ambiente
Delphi. Una __property viene implementata piu' o meno cosi':
class TExample{
private:
   int Val;
public:
   void Set(int i) { Val = i; }
   int  Get( ) { return Val; }
   __published: //Perche' queste proprieta' possono essere
                //impostate a livello del Property Inspector...
      __property int Valore = { read=Get, write=Set, default=50 }
};
Come vedi sono possibili altre operazioni come default, stored
ed altro.
Valore potra' essere impostata a livello del Property Inspector
e presentera' il valore di default = 50.
A presto.
oswald.cpp

Hai ragione, ma a questo punto penso che alla Borland qualcuno
si sia bevuto il cervello, per far uscire prima il prodotto hanno
compromesso la portabilità del codice che poteva risultare indipendente
dalla piattaforma. A pensarci bene l'effetto collaterale potrebbe essere
desiderato (loro sviluppano solo per Windows e non è simpatico vedere un
cliente che usa anche altri sistemi operativi).
Il problema delle property poteva trovare una elegante soluzione come già
descritto, bah...


Il prodotto ti consente di utilizzare la via RAD in ambiente
Windows a 32 bit con uso della VCL, tuttavia e' possibile utilizzarlo
in altri ambienti rinunciando alla VCL. In fondo il motore che
genera l'eseguibile non e' altro che Borland C++ 5.02.
Tale compilatore e' stato scritto seguendo scrupolosamente
lo standard ANSII C++. Aggiungo che prima ancora che fosse
definito tale standard, Borland distribuiva un compilatore
che anticipava cio' che poi e' diventato uno standard.
Seguendo la storia degli ambienti di sviluppo di Borland
mi sembra di rivivere cio' che e' accaduto in ambiente DOS.
Il successo dell'ambiente Pascal che utilizzava la libreria 
di classi Turbo Vision ha determinato il lancio del Turbo C++
con la stessa libreria. Stesso e' valso per Windows, dove
il declino del compilatore C++ e' stato bloccato con
C++ Builder. Il trampolino di lancio e' stata la versione 1.0,
che per la verita' e' identico a Delphi, ma con la versione 3.0
e' diventato piu' dedicato al C++, con alcune particolarita'
non ancora presenti in Delphi.
Infine credo che il motivo della scelta __property e'
piu' lungimirante. Attualmente con C++Builder e' possibile
scrivere applicazioni scrivendo codice Pascal e C++.
Infatti C++Builder ha incorporato anche il compilatore 
Pascal. Non e' detto che presto possa possedere anche 
il compilatore Java, permettendo allo sviluppatore,
e piu' in particolare ai team di sviluppo, di utilizzare
lo stesso ambiente con linguaggi diversi e tutti potenti.
A presto.

 Email: sostituire "nospam" con "netsis"
Si, e' disponibile in Italia da qualche giorno... anche se 
la sto apprazzando da quasi un mese!
E' una vera belva C++!
Se vuoi sapere altro...
oswald.cpp