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

Rispondere a