Home
Dalla Software Development Conference alle ultime novità

02 Aprile 1998

Dalla Software Development Conference alle ultime novità

di

Nell'ultimo mese ho assistito a molte discussioni su Java e ho partecipato ad una conferenza neutrale, la Software Development Conference, durante la quale ho sentito parlare l'autore di Java, James Goslin, e uno dei principali detrattori di questo linguaggio, l'autore di C++ Bjarne Stroustup.

Java continua ed essere al centro della cronaca. Nell’ultima settimana i fatti più noti sono stati l’ingiunzione a Microsoft di non usare il logo 100% Pure Java sulla scatola dei suoi prodotti e l’annuncio di HP che farà concorrenza a Sun per i piccoli sistemi. La prima parte di questo articolo descrive alcuni interventi ad una conferenza di programmatori, per cui il taglio è molto tecnico, mentre la seconda parte è più discorsiva, e leggibile da tutti. Un po’ me ne scuso, ma quando si parla di Java si parla appunto di un linguaggio di programmazione, che è un po’ difficile valutare senza entrare in considerazione tecniche. Se non si arriva a questo livello si resta molto nel mondo delle chiacchiere, cosa che vorrei evitare.

Goslin: “Java è per tutti”

Ma andiamo con ordine e partiamo dall’intervento di James Goslin, autore del linguaggio e vice presidente di JavaSoft, alla Software Development Conference. Sostanzialmente è stato noioso. Un intervento molto blando, con tanto marketing come tipico di Sun, e un tono sostanzialmente dimesso. Mi è piaciuta la parte introduttiva, in cui Goslin ha ripercorso le origini di Java con molta onestà, ricordando che il linguaggio “è stato sviluppato per me e alcuni amici”, che “non avevo nessuna illusione sulla sua diffusione”e che “non c’erano problemi di compatibilità”, quindi era potuto partire praticamente da zero. Goslin ha ripercorso tutti i motivi classici per cui i programmi devono essere sviluppati con tecnologie object-oriented, basati su componenti e con un forte concetto di programmazione contrattuale (che però Java non supporto esplicitamente, come invece fanno altri linguaggi di programmazione come Eiffel, di cui vi parlerò poi più avanti).

Uno dei problemi che JavaSoft sta affrontando, sempre secondo Goslin, è la notevole difficoltà di realizzare una Java Virtual Machine (definita “The unsung hero”, l’eroe dimenticato) per computer molto grandi come i mainframe e computer molto piccoli come le smartcard mantenendo una sostanziale compatibilità con la JVM oggi disponibile per la categoria intermedia di computer (personal e workstation). Ovviamente l’idea di Sun e’ che presto tutti svilupperanno con Java, in quanto… è il miglior linguaggio di programmazione. Sarà, ma questa idea di avere un unico linguaggio di programmazione non mi sembra molto sensata.

Java, infatti, supporto solo un ben preciso modello di programmazione, la programmazione a oggetti, che per quanto diffuso non è né l’unico possibile, né il migliore in ogni circostanza. Il linguaggio C++, ad esempio, offre contemporaneamente diversi modelli di programmazione, tra cui quella che viene chiamata la “generic programming”, ovvero la programmazione basata sul costrutto dei template (che, mi scuso, è un’idea un po’ difficile da spiegare a chi non è del settore: si tratta di una delle possibilità di scrivere codice che funziona indipendentemente dagli oggetti a cui fa riferimento, cioè scrivere programmi che sono generici rispetto al tipo di oggetti che utilizzano, e non specifici per una determinata categoria di oggetti). Non solo Goslin non riconosce l’importanza per questo tipo di programmazione (“in tutti i casi concreti i tipi generici possono essere simulati con il polimorfismo”, un costrutto leggermente diverso e un po’ meno robusto e sicuro) ma addirittura usa dei termini volutamente sbagliati per indicare i tipi generici (“polimorphic types”) e fa affermazioni (“sono un fanatico dei controlli fatti dal compilatore”) che in realtà vanno nettamente in contrasto con ciò che propone.

Questioni tecniche a parte, dall’intervento di Goslin e altri interventi di Sun è emersa la loro proposta di avere per l’estate la versione 1.2 di Java con una nuova JVM e una nuova politica di distribuzione. Invece di avere la macchina virtuale Java all’interno dei vari browser, distribuiamo noi a tutti una JVM che si integra con i browser più diffusi. Il vantaggio per Sun è quello di assicurare un’ottima compatibilità e di rendere disponibile la nuova JVM indipendentemente dalle date di rilascio delle nuove versioni dei browser. Anche se questo non viene detto, in realtà questa nuova politica di distribuzione è semplicemente una mossa contro Microsoft.

Mi sembra però che in questo caso Sun pecchi un po’ di ingenuità: quante persone, soprattutto in paesi senza una grande connettività, sono disposti a scaricarsi probabilmente più di un megabyte per avere la nuova macchina virtuale Sun, per cui ci saranno poi pochi programmi a disposizione all’inizio? E chi scaricherà la macchina virtuale Sun se sarà meno ottimizzata per Windows di quella Microsoft? C’è ancora un po’ di tempo, per cui staremo a vedere.

Stroustup: “Java è solo un altro linguaggio”

Come mi aspettavo, da Bjarne Stroustup sono venute invece critiche abbastanza feroci a Java. Un po’ è naturale che chi ha sviluppato un linguaggio di programmazione di successo, come il C++, possa essere un po’ invidioso del battage pubblicitario che ruota attorno ad un nuovo linguaggio che vuole scalzare la popolarità del proprio. Ma non è certamente solo questo: Stroustrup ha sviluppato un linguaggio che la sua società (l’AT&T, la maggiore compagnia telefonica americana) ha rilasciato nel pubblico dominio, mantenendone un certo controllo per garantire a tutti la compatibilità ma senza volerci mai guadagnare realmente. È importante osservare che nonostante i tanti compilatori il linguaggio C++ è fortemente uniforme sulle varie implementazioni, mentre Sun sostiene che solo mantenendo il controllo totale del linguaggio questo può essere standard.

Ma torniamo alla presentazione di Stroustup, che in mezzo alle molte dissertazioni tecniche che vi risparmio, ha toccato diversi elementi critici di Java. Il primo punto, fondamentale, è che agli utenti di un programma non dovrebbe interessare in che linguaggio è scritto, ma solo se funziona bene. A volte la pubblicità di Sun trascende questa ovvia constatazione: i linguaggi di programmazione sono degli strumenti, non delle soluzioni. Usando gli strumenti si ottengono le soluzioni.

Uno dei passaggi chiave dell’intervento di Stroustup è stata l’associazione dei linguaggi di programmazione alle culture, riprendendo una nota frase “i linguaggi modificano il modo di pensare” (“languages shape the way we think”) che si applica altrettanto bene ai linguaggi di programmazione e alle lingue naturali. Parlare italiano e pensare in italiano modificano il nostro modo di pensare. Conoscere una seconda lingua e immergersi nella relativa cultura implicano molto più che poter comunicare con altri. E come nella vita reale, anche nel mondo della programmazione chi conosce un solo linguaggio vive di una monocoltura che certamente non fa bene all’apertura mentale. Spesso i programmatori che conoscono più linguaggi sono più bravi di chi ne conosce uno solo (a patto che li conoscano bene, però). Per usare le parole di Stroustup, i pericoli di una monocoltura sono legati al fatto che “una misura non va bene per tutti: principianti, professionisti, esperti di vari settori”, che “l’immaginazione delle persone risulta compressa”e che “si formano atteggiamenti bigotti verso un linguaggio”. Ancora, “non c’è un programmatore medio, siamo tutti fuori dalla media e fuori dallo standard”, nel senso che non è possibile cercare di soddisfare tutti stando nel mezzo. Le persone sono troppo diverse per usare un linguaggio solo.

Notate che quando Stroustup fa queste affermazioni, ci sono chiari riferimenti al modello americano dominante ma un po’ limitante, fatte da un europeo che ha lavorato molti anni negli Stati Uniti e pur potendo prendere il passaporto USA ha deciso di non farlo, perché non si sente molto “yankee”(termine che lui usa per ironizzare sugli americani). Tutto questo non lo dice in pubblico, ma certamente la sua esperienza culturale incide poi sul modo di vedere la programmazione.

Oltre che a Sun, Stroustup ha lanciato alcuni strali ai “contabili che gestiscono le società”che vorrebbero togliersi di torno programmatori pagati troppo, spesso vestiti male, e molte volte anche un po’ scontrosi. La soluzione? Ne era stata trovata una tempo fa, il linguaggio COLBO, che avrebbe permesso ai contabili di scriversi i programmi. Non è andata proprio così, ma il mondo della programmazione è pieno di scommesse mancate, e Java potrebbe essere la prossima…

Notizie più fresche

E veniamo al commento di un po’ di notizie più fresche. La prima, di una decina di giorni fa, è l’annuncio del nuovo ambiente di sviluppo Java di Microsoft, che si chiamerà Visual J++ 6.0. Si tratta di una specie di controrivoluzione, perché Microsoft vuole rendere il linguaggio Java il miglior linguaggio per la programmazione Windows, integrandolo con il proprio sistema operativo, ma facendogli perdere tutti gli attributi di portabilità. A quale scopo, direte voi? Molteplice. Contrastare la strategia multi-piattaforma di Sun salvando però Java come linguaggio; contrastare Borland che propone una soluzione di sviluppo Windows di successo (Borland Delphi) basata su un modello di oggetti/componenti simile a quello di Java e in qualche modo intermedia tra Visual C++ e Visual Basic, gli attuali strumenti Microsoft; contrastare CORBA per spingere DCOM come soluzione di oggetti distribuiti; e certamente anche molte altre motivazioni che mi sfuggono. Per questo progetto Microsoft ha prelevato alcuni dei migliori “cervelli”delle società concorrenti, pagandoli a peso d’oro, per cui non si tratta certo di un progetto marginale.

È chiaro che Microsoft si vuole servire del linguaggio Java per i propri scopi, ma non è forse vero che Sun sta cercando di fare esattamente lo stesso? Sun ormai sta promuovendo un sistema operativo, non un linguaggio, e sul sistema operativo conta di fare un bel mucchio di dollari, come dimostra anche l’annuncio di HP. Questa società, a causa del costo eccessivo della licenza Sun per avere Java su dispositivi di piccole dimensioni (ad esempio sul tutte le proprie stampanti), ha deciso di fare una propria versione. Far sviluppare una JVM compatibile con il metodo cosiddetto “clean room”(ovvero lo sviluppo fatto da persone che non conoscono la struttura interna del prodotto ma semplicemente lo rifanno ex-novo per ottenere gli stessi risultati; si tratta di un metodo molto diffuso nel mondo hardware usato ad esempio per creare CPU compatibili con quelle Intel) per non avere problemi legali legati al proprio contratto con Sun. E fin qua andrebbe tutto bene, se non fosse che per poter far funzionare la JVM su computer poco potenti, HP ha effettuato delle modifiche e delle semplificazioni, che rischiano di frammentare ulteriormente il mercato di Java. E tutto questo non sarebbe niente se HP non avesse accettato l’offerta di Microsoft di comprare questa nuova versione della JVM per i propri computer “hand-held”WindowsCE.

La reazione di Sun a questo annuncio è stata un po’ confusa. Da una parte Sun non vuole concedere nulla a Microsoft o a suoi pur temporanei alleati, e ha annunciato che valuterà se fare causa ad HP. D’altra parte se la causa fosse percepita come un difesa del fatto che chiunque vuole usare una JVM deve pagare Sun, quindi una difesa di interessi solo economici, l’immagine della società come paladino dell’apertura ne risentirebbe parecchio. Ma il vero problema è che HP in pratica ha sviluppato una propria versione non standard di quello che Sun chiama “Embedded Java”e può fare ora concorrenza a Sun (offrendo licenze a prezzi più bassi e soprattutto a prezzi fisse e non per copia). L’altro problema poi e che Embedded Java è un sottoinsieme della JVM standard, mentre la JVM-HP è sempre un sottoinsieme, ma probabilmente un po’ diverso; questo può portare all’esistenza di due standard diversi per questa area di Java, una di quelle che per Sun è più promettente.

Infine, la prima piccola vittoria legale di Sun nei confronti di Microsoft, che però potrebbe non avere nessuna ripercussione sulla vittoria finale. Il giudice Whyte ha fatto un’ingiunzione preliminare al processo, vietando a Microsoft l’uso del logo Java della tazza di caffè con la scritta “100% Java”. Per il momento come vittoria non è niente di speciale, perché Microsoft può continuare a distribuire i prodotti, ma gli avversari di Bill Gates hanno certamente esultato per l’annuncio, fatto tra l’altro proprio alla vigilia della conferenza JavaOne, la più importante conferenza annuale su Java organizzata proprio da Sun. Pur non avendo potuto partecipare alla conferenza, sto raccogliendo un po’ di materiale, che farà presto parte di un nuovo articolo. A presto.

Marco Cantù è un esperto di linguaggi di programmazione a oggetti, tra cui C++, Object Pascal e Java. È autore di libri sulla programmazione con C++ e Delphi pubblicati in Italia, negli Stati Uniti, e tradotti in molti altri paesi. Potete contattarlo attraverso il suo sito web, www.marcocantu.com o all’indirizzo di posta elettronica [email protected].

Iscriviti alla newsletter

Novità, promozioni e approfondimenti per imparare sempre qualcosa di nuovo

Gli argomenti che mi interessano:
Iscrivendomi dichiaro di aver preso visione dell’Informativa fornita ai sensi dell'art. 13 e 14 del Regolamento Europeo EU 679/2016.