[Python] .net e visual studio open source e versione community
enrico franchi
enrico.franchi a gmail.com
Gio 22 Gen 2015 11:39:30 CET
2015-01-22 9:44 GMT+00:00 Vincenzo Campanella <vinz65 a gmail.com>:
> Il 22.01.2015 10:31, Carlos Catucci ha scritto:
>
>> Una perplessita': C++ non mi sembra multipiattaforma di suo. Certo se usi
>> Qt o WxWidget, ad esempio, hai un layer di aastrazione dall'OS sottostante,
>> ma di suo non nasce WORM come Python, Perl e Java.
>>
>
> Intendo nel senso che il codice scritto in C/C++ può essere compilato, e
> quindi eseguito, su qualsiasi sistema operativo abbia un compilatore per
> quei linguaggi (parlo della totalità o quasi); naturalmente, da questo
> discorso va escluso codice scritto in Visual C++.
>
Allora, ci fermiamo un attimo? C++ e' multipiattaforma di suo? Certamente.
C'e' un corposo standard (quando perusavo il manualazzo ricordo con dolore
la corposita', appunto) che ha come obiettivo proprio quello della
*portabilita'* di C++. Codice C++ aderente allo standard e' *perfettamente*
portabile.
Portabile su ogni piattaforma con un'implementazione conforme di C++ (eh,
ma anche Python e' portabile solo sulle piattaforme dove si trova Python...)
Avere una GUI non e' legato al concetto di essere portabile. Quella e' solo
una libreria, che e' una cosa un po' diversa da un linguaggio. Poi
storicamente (e saggiamente) C++ (e C prima di lui) hanno tenuto fuori
dallo standard molte cose. Il che ha perfettamente senso: lo standard e'
sufficientemente corposo di suo per vari motivi buoni e meno buoni. Non
c'e' bisogno di appendici per ogni libreria che un buon numero di persone
ritiene utili. Le librerie possono vivere di vita propria.
Non a caso un buon numero di progetti *pesantemente* cross-platform sono
stati scritti in C++ (e in C, che da quest punto di vista aveva lo stesso
approccio).
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.
> Chiaramente però in questo caso parliamo di potenzialità cross-platform,
> dato che C e C++ sono linguaggi compilati e non interpretati;
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.
> poi, il fatto che scrivere nativamente un programma cross-platform in
> C/C++ sia un casino della miseria rispetto a ciò che va fatto in Python o
> Java, soprattutto per quanto concerne l'interfacciamento ai servizi e alle
> librerie del sistema operativo su cui deve girare, lo sappiamo tutti... ;-)
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.
E la cosa favolosa e' che farlo in C e C++ e' ancora piu' facile... visto
che tipicamente l'OS espone servizi e librerie proprio in C. ;)
Infatti, io non direi che il punto di scrivere roba cross platform e'
interfacciarsi a servizi e librerie dell'os... tutt'altro.
--
.
..: -enrico-
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20150122/e2899b6f/attachment-0001.html>
Maggiori informazioni sulla lista
Python