Il 22.01.2015 11:39, enrico franchi ha scritto:
Dopo di che... non parlerei di codice "scritto in Visual C++".
Semplicemente se scrivi codice C++ *standard* che fa uso di una
libreria non presente su una certa piattaforma, beh, quel codice non
potrai compilarlo su quella piattaforma finche' non trovi quella
piattaforma.
Sarò limitato io, ma non ho mai conosciuto sviluppatori che
utilizzassero VC++ e scrivessero codice standard e cross platform; ho
conosciuto sviluppatori che scrivono codice cross platform in C e C++,
ma nessuno di loro usa VC++, che anzi aborriscono in quanto il codice
che genera di default non è esattamente pulito (eufemismo), salvo quando
devono scrivere del codice che sicuramente girerà solo su macchine Windows.
Da qui la mia affermazione.
Io comunque VC++ non l'ho mai utilizzato (ho iniziato con C su
CodeWarrior, bei tempi che furono...), per cui riferisco per sentito
dire (cose cui comunque credo data la storica tendenza di M$ a cercare
di creare e imporre degli standard tutti suoi, vedi per esempio la fu
macchina virtuale Java di M$ o Internet Exploder per quanto concerne le
pagine web).
Ma non vedo assolutamente perche'. Questa distinzione e' tutta tua. Ci
sarebbe prima di tutto da aprire una piccola parentesi su quanto sia
scorretta la pratica comune di parlare di "linguaggi compilati" e
"linguaggi interpretati"; per il resto "cross-platform" non e' in
relazione con compilazione vs. valutazione. Prova a rifletterci: salta
fuori che niente sarebbe cross-platform se fosse come dici e tutto lo
sarebbe solo in potenza.
Guarda che io non ho detto che c'è una correlazione fra l'essere
interpretato o compilato e l'essere cross platform.
Io ho solo detto che C e C++ sono compilati (e su questo non ci piove),
per cui fra la scrittura del codice e la sua esecuzione sul computer
(indipendentemente dal sistema operativo) c'è un passo in più rispetto a
quello che c'è in Java o Python, fra l'altro non un passo di poco conto.
E su questo penso si possa essere d'accordo.
Anche qui, ovviamente dipende. Sempre dicendo cose note a tutti: Java
e' notoriamente un casino maggiore per quanto concerne
l'interfacciamento ai servizi e alle librerie del sistema operativo in
tutti i casi in cui suddetti servizi e librerie non sono state ficcate
nella JVM o nello standard di Java (o almeno fornite come estensione).
Cioe' e' proprio un casino: tra l'altro e' tipicamente anche il caso
in cui si rompe di brutto la decantata portabilita' di Java. E chi
gliene fa una colpa eh....
Python ovviamente e' una cosa a simile/dissimile. Da un lato
interfacciare Python a servizi e librerie del sistema operativo e'
parecchio piu' facile che farlo per Java, se non altro usando CPython
(vuoi che scrivere moduli Python in C e' piu' facile che usare JNI) o
addirittura grazie a ctypes.
Qui casca l'asino: in linea di massima la portatilità di Python e Java è
sì più immediata rispetto a C/C++, però la loro portatilità è limitata
da quanto la macchina virtuale è in grado di fare e ti consente di fare,
mentre su C/C++ questo problema non esiste (tant'è che il workaround si
basa su C e C++); quindi il tutto dipende sempre da che software devi
creare.
Comunque, sempre per quanto ne so, comunque, anche in Java è possibile
includere moduli scritti in C/C++.
Infatti, io non direi che il punto di scrivere roba cross platform e'
interfacciarsi a servizi e librerie dell'os... tutt'altro.
Non ho detto nemmeno questo, ho solo scritto che le cose si fanno più
"toste" quando c'è da interfacciarsi direttamente al sistema operativo,
a meno che tu non abbia un layer che funga da intermediario.
Ciao
vince
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python