No Cross-platform –> No IT evolution !

Mi sono laureato in ingegneria informatica nel 1995: erano i tempi in cui il Sistema Operativo era MS-DOS (in Italia le macchine Apple erano più o meno diffuse solo tra chi faceva grafica e Desktop-publishing). Gli ambienti di sviluppo software (linguaggi di programmazione, annessi e connessi) più popolari erano essenzialmente due: Turbo Pascal e Turbo C (della Borland) – infatti nella mia università o eri religiosamente Pascal-ista, oppure eri un devoto del C, punto; i Pascal-isti privilegiavano gli algoritmi e le logiche di funzionamento dei programmi (il Pascal è infatti un linguaggio di alto livello), mentre i devoti del C amavano scendere nei meandri dei singoli bit e dei puntatori (il C è un linguaggio di basso livello, molto vicino all’hardware della macchina).

Windows intanto prendeva piede: per programmare con le finestre (l’acronimo era WIMP: Windows, Icons, Mouse, Pointer) o ancora meglio “per eventi”, in quell’epoca hanno iniziato ad affermarsi ambienti di sviluppo più o meno visuali e parecchie librerie esterne (tipicamente basate su famigerate Classi e su misteriosi Oggetti).

Oggi come allora, imparare un nuovo linguaggio di programmazione è una cosa relativamente semplice (soprattutto se si conoscono già altri linguaggi), mentre la curva di apprendimento delle varie librerie object-oriented risulta molto ripida – non solo per l’intrinseca complessità, ma anche perché ogni nuova versione “travolge” quella precedente. Oggi però, a differenza di allora, i Sistemi Operativi (o “Piattaforme”, se preferite) si sono moltiplicati; oltre a Windows ed Apple sui computer, ci sono anche le Piattaforme “nomadiche” come iPod/iPhone (insieme al nuovo iPad), Android, Windows Mobile, Blackberry, Palm, ecc; per ciascuna esiste un ambiente di sviluppo con il suo linguaggio, i suoi strumenti, le sue (complesse) librerie – insomma, una miriade di curve di apprendimento…

Pensate a una software-house che voglia sviluppare un’applicazione che giri sulle Piattaforme più diffuse: quante squadre di Programmatori specializzati dovrà avere ? Sì, perché viste le ripide curve di apprendimento, per un Programmatore professionista la specializzazione è l’unica strada da seguire. I costi di sviluppo rischiano concretamente di diventare insostenibili.

E gli ambienti di sviluppo Cross-platform ? Permettono, in teoria, di scrivere il codice una volta e di produrre poi eseguibili per tutte le piattaforme; in pratica funzionano poco e male,e difficilmente permettono di sfruttare in pieno le specificità benefiche che caratterizzano ciascuna Piattaforma.

Eppure sviluppare applicazioni che girano su tutte le piattaforme è già oggi possibile, anche se con notevoli limitazioni. Limitazioni che nel tempo, ne sono convinto, spariranno – perché il buonsenso, anche nel variegato mondo dell’informatica, fortunatamente esiste…

Mi riferisco a Javascript (ed alle sue estese librarie), il linguaggio di programmazione incorporato praticamente in qualunque Web-browser – come Internet Explorer, Firefox, Opera, Safari, ecc. Qualunque Piattaforma propone almeno uno dei Web-browser di cui sopra, e come tale può far girare programmi scritti in Javascript; attualmente questi programmi sono piuttosto lenti ed hanno serie difficoltà ad accedere alle risorse locali (file-system, camera, accelerometri, ecc.) – problematiche che sono fortunatamente in via di risoluzione: le prestazioni via via aumentano grazie a tecniche di pre-compilazione ed ottimizzazione del codice sorgente; il limitato accesso alle risorse locali è più che altro una condizione auto-imposta per ragioni di IT Security – e come tale, con le dovute precauzioni, superabile. Per fare un esempio pratico, recentemente Safari (il browser di Apple basato su Webkit che gira sui computer con la mela e su iPhone, iPod ed iPad) ha incorporato un utilissimo Database SQL per gestire il local-storage.

Javascript sarà la lingua-franca dell’ICT ? Forse, comunque attualmente non vedo candidati migliori…

Visto che l’argomento mi appassiona, tornerò sicuramente sull’argomento.

I vs. commenti sono graditissimi, come sempre.

Andy Cavallini (andy.cavallini@tin.it)

2 risposte a “No Cross-platform –> No IT evolution !

  1. Ciao Andy,
    condivido la tua vision e piacerebbe molto anche a me che JS diventasse la tanto agognata lingua franca nel panorama ICT ma…mio malgrado vedo diversi ostacoli (più o meno superabili) che allo stato attuale impediscono questo processo evolutivo.

    In primis i (produttori di) browser (web e mobile); nel guazzabuglio del mercato dei browser c’è letteralmente da impazzire per implementare un’applicazione che possa utilizzare al meglio le tante funzionalità messe a disposizione da JS.

    Attualmente mi sto occupando della creazione del canale mobile di una banca online.
    I browser supportati dai diversi dispositivi sono davvero tanti e molto frequentemente fonte di frustrazione per le incompatibilità (anche perché basati su Webkit NON standard) e il mancato supporto di funzioni fondamentali per garantire una corretta fruizione dell’applicazione agli utenti.

    E’ purtroppo croce e delizia di un linguaggio nato con ottimi propositi di semplificazione e alleggerimento delle operazioni, introducendo una logica client-side, ma cresciuto forse in modo un po’ troppo anarchico.😉

    Angelix

  2. JS dovrebbe essere cross-platform, ma è sufficiente avere la versione “sbagliata” del browser affinché non funzioni più nulla – è proprio vero !

    JavaScript è nato per validare le form sul Web e per fare qualche animazione, ed oggi si trova ad essere il linguaggio multi-purpose più utilizzato del mondo: rischia effettivamente di fare tutto e male.
    Alcune problematiche vengono risolte dai framework esterni (in pratica delle librerie); io uso JQuery + JQuery UI e qualche piccolo aiuto per il cross-platform in realtà lo forniscono.

    Vedremo in futuro se JS raggiungerà una relativa “maturità”; molto dipenderà dall’adozione/supporto di HTML5 da parte dei principali browser. Ed anche da come finirà la guerra di Apple contro Flash…

    Staremo a vedere.

    Bye,

    Andy Cavallini (andy.cavallini@tin.it)

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...