<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2015-01-22 9:44 GMT+00:00 Vincenzo Campanella <span dir="ltr"><<a href="mailto:vinz65@gmail.com" target="_blank">vinz65@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Il 22.01.2015 10:31, Carlos Catucci ha scritto:<span class=""><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
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.<br>
</blockquote>
<br></span>
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++.<br></blockquote><div><br></div><div>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.</div><div><br></div><div>Portabile su ogni piattaforma con un'implementazione conforme di C++ (eh, ma anche Python e' portabile solo sulle piattaforme dove si trova Python...)</div><div> </div><div>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.</div><div><br></div><div>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). </div><div><br></div><div>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.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Chiaramente però in questo caso parliamo di potenzialità cross-platform, dato che C e C++ sono linguaggi compilati e non interpretati; </blockquote><div><br></div><div>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. </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">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... ;-)</blockquote><div><br></div><div>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....</div><div><br></div><div>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. </div><div><br></div><div>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. ;)</div><div><br></div><div>Infatti, io non direi che il punto di scrivere roba cross platform e' interfacciarsi a servizi e librerie dell'os... tutt'altro.</div></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"> .<br>..: -enrico-</div>
</div></div>