Portabilità, miti e leggende

Gli autori dei due software più noti per scaricare la posta in Pop3 da Libero danno il via a una interessante discussione sulla portabilità del codice.



[ZEUS News - www.zeusnews.it - 04-02-2004]

I programmatori di LiberoPOPs hanno scelto di rendere il codice portabile su un gran numero di piattaforme; l'autore di HTML2POP3 ha invece preferito concentrarsi sullo sviluppo per un'unica piattaforma, privilegiando la semplicità. Due visioni contrapposte, ciascuna con le proprie motivazioni. Vorremmo coinvolgere anche i lettori di Zeus News nella discussione, in particolar modo gli sviluppatori. Cosa ne pensate? La parola a Matteo Baccan, ideatore di HTML2POP3.

Nei giorni scorsi leggevo con rammarico la nota rilasciata da LiberoPOPs sulla portabilita' del codice. Com'e' vero che ognuno puo' esprimere una propria opinione, e' anche vero che chiunque puo' dissentire.

Ho letto con attenzione il documento che hanno scritto e devo dire che, per alcuni aspetti lo condivido.

Condivido che, negli anni 60-70, al posto di scrivere tutto un sistema operativo in ASM, si decise per l'utilizzo di un linguaggio di piu' alto livello che potesse dare una maggiore portabilita', e da questo l'utilizzo di C.

Concordo il fatto che questo linguaggio sia, probabilmente, il linguaggio piu' diffuso al mondo come supporto in piattaforme diverse.

Dissento pero' su alcuni passaggi e, a favore di queste mie osservazioni, riporto una vecchia intervista a Bjarne Stroustrup, autore di C++, che ho potuto fare nel lontano dicembre 2000, pubblicata a marzo 2001 su DEV.

C e' sicuramente un linguaggio con un libreria di base povera, dato che le librerie standardizzate si possono veramente contare sulla punta delle dita, mentre C++ diverge da questo fatto, dato che integra un maggior numero di librerie standardizzate di base. Entrambi pero', se guardiamo allo standard, sono inferiori a Java. Per voler fare degli esempi semplici, possiamo parlare di Thread e Socket, due aspetti importanti per lo sviluppo di un prodotto come HTML2POP3 o LiberoPOPs.

Stroustrup stesso lamentava questa carenza, dicendo pero' che, grazie alle librerie di terze parti, queste lacune erano colmate. Criticava inoltre il fatto che, implementazioni come Java o Ada, che hanno questo tipo di supporto, possono non sfruttare al massimo un sistema per il fatto che non supportano i Thread in maniera nativa, ma astratta.

Inoltre affermava che, le librerie per C++, erano sicuramente superiori in numero e funzionalita', rispetto a quelle Java. Questo almeno 3 anni fa. Quindi, per non trasformare questo discorso in pura accademia, vediamo di fissare dei punti sulla carta e capire a quale conclusione arrivare.

C e C++ sono sicuramente linguaggi piu' diffusi di Java, ma necessitano di ricompilazione obbligatoria sulle piattaforme dove devono essere utilizzati.

C e C++ soffrono di problemi di buffer overflow, problemi sconosciuti a Java, soprattutto per la mancanza di puntatori, per tale ragione si ricorre all'utilizzo di libreria di terze parti per evitare di incorrere in questi problemi.

Java ha una libreria di base sicuramente piu' ricca di C e C++, che suppliscono a queste carenze con librerie di terze parti.

Alla luce di questo, si puo' tranquillamente parlare di linguaggi, tutto sommato, paritetici, se parliamo di funzionalita' date, sia dalle librerie standard che dalle librerie di terze parti.

Inoltre e' importante pensare che Java, in realta', si basa su un kernel C, e quindi, quando usiamo Java, stiamo usando un motore C che fa girare del bytecode Java, anche se, grazie ai nuovi compilatori JIT, quello che viene eseguito e' molto piu' vicino a del codice nativo che a un mero interpretato.

Tutto questo discorso per arrivare a una conclusione o meglio, a una non conclusione. Possiamo scrivere tutti i programmi che vogliamo in tutti i linguaggi che vogliamo, questo non e' importante. I linguaggi moderni sono in grado di avere, nativamente, o grazie a librerie esterne, tutte le funzionalita' che ci servono.

E' vero pero' che alcuni linguaggi siano piu' "facilmente" portabili di altri, questo pero' non significa che siano piu' "portabili" di altri.

C e' piu' portabile di Java, Java e' piu' facilmente portabile di C. Questo lo si deduce anche dal numero di righe di codice personalizzato che occorre scrivere in un programma C per poterlo portare, ad esempio, da Unix a Windows o viceversa, oltre agli errori che vengono dati da una gestione diversa delle librerie standard, dato che sono sviluppate da aziende diverse e non concentrate sotto una sola azienda, problema notato anche da Stroustrup.

Quindi, non focalizziamo i problemi sul linguaggio utilizzato, vanno bene tutti. Mi ricordo quando ho iniziato a pensare a HTML2POP3, la prima implementazione che ho trovato, dei suoi concetti di base, era un pezzo di codice scritto in PERL da un altro programmatore.

Per quanto riguarda la moda, questo e' un altro discorso. Ho lavorato per anni in ASM, Clipper, C e C++, passando giornalmente da un linguaggio all'altro. Poi ho studiato Delphi, Java e C#. Ognuno di questi linguaggi ha pregi e difetti, ma con ognuno di questi si sarebbe potuto scrivere un prodotto come HTML2POP3, bastava pazienza e applicazione.

Lavorando in ASM si poteva provare a usare un metacompilatore, o per assurdo si poteva scrivere un codice e poi eseguirlo in emulazione su altre piattaforme, partendo da un prodotto come bochs, ed adattandolo, anche se entrambe le soluzioni sarebbero state un bagno di sangue.

Con Clipper si sarebbe usato Harbour, la sua versione cross-platform, C-based. Con C e C++ si sarebbero usati i compilatori nativi Unix o le versioni portabili Windows, OS/2 etc, come Cygwin. Con Delphi occorreva usare FreePascal, supportato per Amiga, QNX, SunOS, Win32, Linux, FreeBSD e altri. Java viene fotunatamente supportato da casa Sun su piattaforme diverse. C# poteva girare in ambiente Windows, con .NET SDK, e in Linux/Unix grazie a Mono. Quindi, non importa quale compilatore usare, ma quali sono gli obiettivi del progetto.

Personalmente non volevo spendere notti su notti su questo programma. Due giorni per la prima implementazione e un po' di lavoro per l'ottimizzazione sono stati abbastanza per ottenere un prodotto utilizzabile su un numero decente di piattaforme, non tutte, lo riconosco, ma almeno senza aver speso un solo secondo a pensare a file di make, switch di compilazione, parametri gestiti in maniera non standard da un compilatore piuttosto che un altro, codice condizionale e cosi via.

Sono contento del risultato raggiunto, soprattutto in relazione allo sforzo fatto. Potessi ripartire potrei anche riscrivere tutto in un altro linguaggio, in C++, ad esempio, ma per pura sfida personale, anche se pensandoci tutto questo non avrebbe minimamente senso.

Se questo articolo ti è piaciuto e vuoi rimanere sempre informato con Zeus News ti consigliamo di iscriverti alla Newsletter gratuita. Inoltre puoi consigliare l'articolo utilizzando uno dei pulsanti qui sotto, inserire un commento (anche anonimo) o segnalare un refuso.
© RIPRODUZIONE RISERVATA

Commenti all'articolo (4)

Fabrizio
Un oasi.. Leggi tutto
17-2-2004 11:14

Romano
Tutti buoni ma forse no Leggi tutto
10-2-2004 11:18

Giovanni
Mah.... Leggi tutto
6-2-2004 11:16

fatto bene Leggi tutto
6-2-2004 09:37

La liberta' di parola e' un diritto inviolabile, ma nei forum di Zeus News vige un regolamento che impone delle restrizioni e che l'utente e' tenuto a rispettare. I moderatori si riservano il diritto di cancellare o modificare i commenti inseriti dagli utenti, senza dover fornire giustificazione alcuna. Gli utenti non registrati al forum inoltre sono sottoposti a moderazione preventiva. La responsabilita' dei commenti ricade esclusivamente sui rispettivi autori. I principali consigli: rimani sempre in argomento; evita commenti offensivi, volgari, violenti o che inneggiano all'illegalita'; non inserire dati personali, link inutili o spam in generale.
E' VIETATA la riproduzione dei testi e delle immagini senza l'espressa autorizzazione scritta di Zeus News. Tutti i marchi e i marchi registrati citati sono di proprietà delle rispettive società. Informativa sulla privacy. I tuoi suggerimenti sono di vitale importanza per Zeus News. Contatta la redazione e contribuisci anche tu a migliorare il sito: pubblicheremo sui forum le lettere piu' interessanti.
Sondaggio
Una donna è stata querelata per una recensione negativa di un ristorante scritta su Trip Advisor. Quale di queste affermazioni trovi più vicina al tuo pensiero?
Non è giusto che un'opinione scritta su Internet sia considerata pari a un articolo su un giornale. Bisogna rivedere al più presto le leggi sulla difesa dell'onore e sulla diffamazione.
E' giusto che anche sui forum o su Facebook o sui siti di recensioni si applichino le leggi relative alla diffamazione. Un'opinione negativa può rovinare la reputazione di un locale.
Gli utenti devono poter esprimere con la massima libertà la propria opinione su ristoranti, alberghi, ma anche prodotti o servizi acquistati. Un'opinione negativa non dovrebbe essere considerata diffamazione.
Trovo che oggi più che mai sia necessario prestare la massima attenzione a quello che si scrive online.
Le recensioni su Internet sono in gran parte inaffidabili: quelle positive sono scritte dai proprietari, quelle negative dalla concorrenza. In ogni caso l'opinione dei pochi singoli onesti non è significativa.
Vorrei dire la mia sul forum di Zeus News ma temo che prima dovrei procurarmi un buon avvocato, non si sa mai.

Mostra i risultati (4283 voti)
Agosto 2026
DayFrame, il rivale di Outlook che riporta in vita le Live Tiles di Windows 8
Tu, il truffato!
Office si ferma su Windows 10: Microsoft congela le funzioni
Claude adesso progetta i chip di Samsung: i tempi si riducono drasticamente
Microsoft aumenta il prezzo delle licenze Windows: i nuovi PC costeranno di più
Linus Torvalds: la IA ha reso enormi gli aggiornamenti del kernel Linux
Prezzi della memoria alle stelle: vent'anni di progressi cancellati in un attimo
Gmail, stop definitivo alla funzione ''Invia come''
Cambio di proprietà per PagoPA: Poligrafico e Poste completano l'acquisizione da mezzo miliardo
Ammodernare Windows 11 è un processo lunghissimo: Microsoft spiega perché
DuckDuck Go lancia gli anti-smart glass con autonomia infinita e modalità offline permanente
Immagini sintetiche su mappe di Google Earth: funzione sospesa dopo appena due giorni
Luglio 2026
IA e distributori automatici, il test è un successo economico ma un disastro etico
Il fondatore di Telegram ricercato a livello internazionale
Studenti beccati a barare all'esame col trucco del prompt invisibile
Tutti gli Arretrati
Accadde oggi - 18 agosto


web metrics