Newsgroup: it.comp.lang.c++
Titolo: Mozilla C++ portability guide

Sul sito dedicato al rilascio dei sorgenti di Mozilla
(aka Netscape Navigator 5) c'e' un'interessante
pagina sulla portabilita' del C++:
http://www.mozilla.org/docs/tplist/catBuild/portable-cpp.html
Il contenuto mi sembra molto interessante anche se in alcuni punti
l'autore e' un po' drastico.
Che ne pensate?
-am


E' la triste verita' - "drastico" non si applica ai problemi di
portabilita'! ;-)
C'e' comunque da tener presente che i requisiti di portabilita'
sono decisamente meno stringenti per applicazioni 'normali',
non commercial e di cui, per lo meno, si conoscono le piattaforme
bersaglio, il cui numero e' di solito decisamente minore di 25!!
(25 piattaforme.. un incubo!)
Comunque, ottima lettura: non ce ne sono mai abbastanza, e gli 
spaghetti code prosperano oggi quanto vent'anni fa (per non
parlare dello spaghetti analysis & design :^) ).
Saluti,
	Cris
-- 
Cristiano Sadun
Software Engineering & Consulting
email address: crsadun#tin$it 
(for actual address please replace # by @ and $ by .)

 (25 piattaforme.. un incubo!)
Su questo concordo, ma non completamente. Il problema nasce quando ti
viene assicurato che il tuo applicativo dovra girare solo sotto
Solaris e poi, quando l'hai completato, i commerciali ti dicono:
"Vogliamo venderlo anche sotto AIX, SCO Unix, Win-NT, OS/2, Amiga,
ecc.".
Inoltre le piattaforme cambiano e il software resta, sempre piu' a
lungo di quanto avevano immaginato gli autori. Il problema dell'anno
2000 e' un esempio illuminante.
Riassumendo, una buona dose di prudenza non guasta.
-- 
am

Riassumendo, una buona dose di prudenza non guasta.
Dipende da quanto ti costa quella prudenza.
Quando hai in mano una fattura esigibile a 90 giorni e denominata
in lire, per che frazione ti copri dal rischio di un crollo della lira
rispetto al dollaro, che aumenterebbe i tuoi costi di lavorazione
(hardware, software, ecc) denominati in lire?  Coprirti al 100% dei
rischi ti costebbe oggi attono a 80-90 punti-base; al 50%, sotto i
30 punti-base.  Qual'e` dunque la dose giusta di prudenza?  Tu,
personalmente, come ti regoli?
E supponendo che, come il 90% dei business italiani secondo gli
ultimi sondaggi, tu sia pesantemente sotto-coperto dai rischi di
cambio (sotto il 30%...!), allora non mi sembra che tu possa con
sincerita` consigliare "una buona dose di prudenza"...:-).
Non usare il grosso delle feature introdotte nello standard C++
negli ultimi 4/5 anni (dai template in avanti) mi sembra un po' come
coprirsi al 100% dei rischi di cambio, girare con cintura E bretelle,
_e_ ombrello, salvagente, _e_ impermeabile...
Non dico di usare feature completamente non portabili, tipo
le __declspec(property(get=getIt,put=putIt)) del VC++ 5.0.  Dico
solo di usare con serenita` lo standard C++, per quel che viene
coperto dal proprio compilatore attuale.  Se fra un annetto si dovra`
portare su di un'altra piattaforma, per allora ci sara` con grande
probabilita` un compilatore standard anche li` (probabilmente c'e`
gia` adesso, fra egcs e i vari derivati dal front-end ECG...!).
Io ho la "cultura della portabilita`" nel sangue -- dai Serie/1 ai
mainframe IBM con varie versioni VM e MVS, ai VAX, ai PC con
CP/M e UCSD Pascal, a Xenix sul 68000, poi PC con vari DOS,
Deskview, Windows, e ancora, Apollo con Aegis, poi con Unix,
e tante altre versioni di Unix e Xenix, e Linux, e Windows/NT, e
Win32s, e Windows/95... insomma, ho perso il conto delle volte
che ho dovuto portare del mio software su varie piattaforme, o
scriverlo sin dall'inizio in modo che girasse su tante di esse.  E
in tutti questi anni, usare tutte le feature standard di un linguaggio
(Fortran, Pascal, Modula-2, C...) non e` mai stata la cosa che puo`
avere inibito la portabilita` del mio codice.  Il segreto della portabilita`
(segreto di Pulcinella, certo) e` _sapere_ quali cose non-standard
si stanno facendo (quindi farle solo quando servono davvero!) e
isolare le "cose non-standard" in librerie apposite, ben progettate,
con interfacce tali da poterle re-implementare adeguatamente su
qualsiasi piattaforma possa emergere domani.
Alex