Hot topics:
57 minuti

Microsoft e l'evoluzione dei Linguaggi di Programmazione

Microsoft è da sempre prim'attore nel mondo dello sviluppo e in questo articolo scopriremo i 40anni di linguaggi di sviluppo made in Redmond

Microsoft e l'evoluzione dei Linguaggi di Programmazione

Introduzione

image1

Molti associano Microsoft primariamente al mondo Windows, Office ed ai software applicativi. Ma Microsoft è da sempre prim'attore nel mondo dello sviluppo, anzi: ricordiamo che Gates ed Allen fondano Microsoft proprio per commercializzare varianti del proprio BASIC realizzato per l'Altair.

In questo nuovo viaggio scopriremo i 40anni dei linguaggi di sviluppo mande in Redmond.

Leggi anche: L'evoluzione di Microsoft Office, dagli albori a Cortana

Dal Basic ad un mondo di linguaggi

Nel 1975 la Micro Instrumentation & Telemetry Systems, Inc. (MITS) di Ed Roberts presenta l'Altair 8800, il primo microcalcolatore disponile al grande pubblico. Si tratta di una vera e propria rivoluzione tanto che il numero di gennaio della rivista Popular Electronics con esso da ufficialmente inizio all'era dell'informatica per tutti presentandolo in copertina. 

image2
La copertina del numero di Popular Electronics dedicata all'Altair 8800

Su questo sistema Bill Gates e Paul Allen sviluppano una versione specifica del linguaggio Basic che servirà da traino per la fondazione della Micro-Soft (notare il trattino) focalizzata, nei primi anni, proprio sulla sua commercializzazione ad una serie eterogenea di clienti, tra cui General Electric.

L'MS Basic è decisamente diverso dalla concezione odierna di compilatore/interprete ed inoltre è possibile averlo in modalità stand-alone, ovvero con capacità di boot del sistema. Nello specifico la versione per l'Altair occupa circa 4 KB di memoria ed è riversata su nastro perforato, l'unico supporto di input accettato dal sistema. Una delle cose che hanno fatto storia è la scrittura del programma di boot dell'interprete che viene scritto da Paul Allen sul volo per Albuquerque per la consegna dell'interprete stesso.

image3
L'Altari 8800 Basic

Lo step evolutivo successivo è BASIC-A (Basic Advance) il BASIC per DOS, ancora interpretato e, ovviamente, a riga di comando. Questa versione può essere eseguita solo su PC IBM originali (non cloni), andando a leggere una particolare configurazione nel BIOS, spingendo Microsoft, decisa a vendere il proprio DOS anche a produttori terzi (Compaq in primis), a iniziare lo sviluppo di un BASIC cross-partner da includere nell'MS DOS e che acquista il prefisso GW. Sul significato di questo prefisso, che non è mai stato spiegato ufficialmente, ancora oggi restano in piedi due possibili ipotesi:

  • Graphics and Windows BASIC o Gee Whiz ("diamine", "perbacco") per il grande numero di istruzioni grafiche in 2D contenute nel linguaggio
  • GW sarebbero le iniziali di Greg Whitten, dipendente Microsoft, che contribuì agli standard BASIC;

Il GW Basic diventa il complemento standard dell'MS-DOS tanto che come il sistema operativo, anch'esso viene personalizzato dal vendor specifico.

image4
Manuale GW Basic Olivetti Branded

Il GW Basic si evolve velocemente, trasformandosi in QuickBASIC e aggiungendo il supporto ai tipi

definiti dall'utente, alle strutture avanzate, ad una grafica migliore, un supporto al disco

avanzato e, soprattutto, un compilatore che consente di distribuire direttamente l'applicazione e non il sorgente. Siamo nel 1985 e l'intero ambiente viene distribuito esclusivamente su floppy da 5,25", mentre per la disponibilità sui supporti da 3,5" bisognerà aspettare la release 2.0 rilasciata l'anno successivo.  La versione 2.0 porta in dote la tipica interfaccia utente che accompagnerà il prodotto per il suo intero ciclo di produzione/vendita.

image5
Microsoft Quick Basic

Il 1988 segna il rilascio dell'ultima versione di QuickBasic, la 4.5, ambiente messo in secondo piano dallo sviluppo del nuovo (e per certi versi rivoluzionario) Visual Basic, disponibile nella versione 1.0 anche per DOS. In realtà il supporto da parte di Microsoft continuerà per diversi anni tant'è che nel 1990 viene rilasciata una nuova versione 4.5 proposta in un package completamente rivisto, così come rivista risulta la manualistica. Curiosità è che anche in questa nuova veste, l'ambiente viene reso disponibile sia su floppy da 3,5" che sugli ormai obsoleti dischi da 5,25".

Dal QuickBasic 4.5 viene "estratta" una versione light denominata QBasic e fornita con l'MS-DOS dalla versione 5.0 (il PC DOS 5.0 include QBasic ma viene rimosso nella prima versione di fix  5.00.1, in seguito alla completa rottura di IBM con Microsoft). Rispetto al fratello maggiore, QBasic dispone del solo interprete, manca di alcune funzioni e moduli e può eseguire solo applicazioni di dimensioni modeste.

Insieme a QBasic, Microsoft fornisce il codice di due giochi di esempio: l'onnipresente Snake(Nibbles) e Gorillas, anche se quest'ultimo, ad essere precisi, è scritto da IBM e non dalla casa di Gates.

image6
Gorillas

QBasic ha una vita più longeva del QuickBasic, tanto da essere presente addirittura in Windows 95 e Windows NT e alcune versioni di OS/2, anche se resta sostanzialmente immutato nel tempo. Solo dal 2000 Microsoft annuncia ufficialmente che non includerà più l'interprete nei suoi sistemi operativi, creando così un ecosistema di interpreti/compilatori QBasic like, come ad esempio FreeBasic disponibile per DOS, Windows e Linux.

image7
Free Basic

Nel giro di un quinquennio, praticamente tutti i linguaggi di programmazione più popolari entrano nell'orbita del big di Redmond. Cronologicamente parlando è il Fortran il "secondo amore" di Microsoft, rilasciato nel 1977.

In realtà il Fortran è anche il primo linguaggio con cui Gates è venuto a contatto. Infatti durante i suoi studi liceali gli viene assegnato il compito di scrivere un programma per organizzare la composizione delle classi ("class scheduling"), compito che il giovane Bill porta brillantemente a termine. Si racconta, inoltre, che Gates scrive anche una versione speciale dello scheduler che lo posiziona in classi composte solo da lui e da tutte le ragazze che lo ritengono carino.

Il compilatore realizzato da Microsoft, in parte scritto proprio da Gates e pensato per i sistemi CP/M, si impone sul mercato per l'alta qualità, rafforzata anche dall'ottima documentazione a corredo.

image8
Microsoft Fortran

Nel 1981 è la volta di MASM ovvero il Microsoft Macro Assembler, il compilatore Assembler targato Microsoft per la piattaforma x86. MASM è lo strumento di più basso livello dell'ecosistema MS e il preferito dagli utenti esperti che devono "spremere" al massimo i propri sistemi. Inoltre MASM diventa velocemente il leader del settore incontrando nell'omologo Intel l'unico vero antagonista.

Del Macro Assembler vengono realizzate anche delle versioni spurie con suffisso "-80", pensate per le CPU 8080 e Z80 e aventi come target il sistema operativo CP/M.

image9
Microsoft Assembler

Nel 1983 per rafforzare lo standard MSX e l'MSX-DOS, Microsoft rilascia versioni specifiche del BASIC (80), del FORTRAN (80) e addirittura una specifica versione del COBOL (80).  In realtà la casa di Gates aveva già inserito nella propria offerta il COBOL, particolarmente rilevante per le applicazioni finanziarie e per gli istituti bancari. L'MS COBOL viene sviluppato durante tutti gli anni '80 e raggiunge la veneranda versione 4.5 all'inizio del decennio successivo, con il COBOL 4.5 per DOS, WINDOWS e OS/2.

image10
Microsoft COBOL 4.5

Anche il Fortran si evolve negli anni fino ad arrivare al FORTRAN PowerStation 4.0 (1994), con il supporto agli standard Fortran 66Fortran 77 e Fortran 90, e ai sistemi operativi Windows NT e Windows 95. Ufficialmente Microsoft sospenderà il supporto a questo linguaggio a partire dal 1 Aprile del 1997.

Sempre nei primi anni '80 arriva il compilatore Microsoft Pascal, pensato per offrire una versione made in Redmond del linguaggio principe per scopi didattici. Qui, tra l'altro, incontriamo Tandy Trower, responsabile dello sviluppo di parte dei linguaggi di BigM, ma, soprattutto, uomo chiave per le prime due release di Windows (Da Interface Manager a Windows 8). Come per il Basic, anche in questo caso arriva rapidamente il QuickPascal con l'IDE integrato stile Turbo Pascal.

image11
Microsoft QuickPascal 1.0

Il matrimonio tra Microsoft ed il Pascal è, comunque, di breve durata e termina (1988) proprio con il QuickPascal, incapace di contrastare Borland, anche e soprattutto sul fronte dei prezzi: 400$ contro meno di 100$ per il secondo.

Il 1983 è l'anno del C targato Redmond: Microsoft C 1.0, basato sul Lattice C (il primo compilatore C per PC IBM, nato per Amiga, e disponibile per un numero decisamente ampio di sistemi). La versione per DOS è particolarmente importante poiché grazie ad essa viene effettuato il porting di una serie rilevante di applicativi da CP/M, scritti in BDS C. Lo step di rilievo successivo è il rilascio (1985) della versione MS C 3.0, la prima interamente sviluppata da Microsoft ed utilizzata per lo sviluppo di Windows.

Le versioni successive aggiungono il debugger CodeView (C 4.0), il primo compilatore a 32bit per processori i80386 (C 5.0), un primo supporto al C++ (C 6.0, 1989) fino ad arrivare all'ultima versione non "visual", la C/C++ 7.0 (1992), che supporta nativamente il C++ e introduce le MFC  (Microsoft Foundation Classes) 1.0 (Microsoft Foundation Classes) per lo sviluppo di interfacce grafiche.

Parallelamente nasce QuickC (1987) che porta con sé l'IDE ormai standard della serie "Quick", compatibile con lo standard ANSI C e la versione 5 del Microsoft C. Neanche a dirlo, il diretto competitor è ancora una volta Borland con il proprio Turbo C (omologo del Tubo Pascal) cosa che spinge Microsoft ad offrire la propria soluzione per 99$. Questa versione è comunque più limitata rispetto al fratello Microsoft C, soprattutto nella massima memoria utilizzabile, nella velocità del compilatore e nelle feauture di ottimizzazione del codice.

Nel complesso le tre versioni "Quick" (Basic, Pascal e C) dimostrano che già nella seconda metà degli anni '80 il big di Redmond intuisce la necessità di uniformare i propri ambienti che, anche restando separati tra loro, cercano di assomigliarsi quanto più possibile per permettere agli sviluppatori cross-language di lavorare con ambienti familiari.

Nel 1987, Microsoft stringe un accordo con Sybase per realizzare un RDBMS per il nuovo OS/2. L'accordo prevede che Sybase mantenga i diritti sulle release per piattaforme Unix, mentre Microsoft su quelle per OS/2 e per i propri sistemi operativi.

La scelta di BigM è dettata, fondamentalmente, dalla volontà di inserirsi nel mercato dei DB per PC, quasi completamente dominato da dBase (nelle varie incarnazioni III e III+). Stranamente, però, Microsoft decide di non dichiarare guerra ad Ashton-Tate (com'è nel suo stile), ma di coinvolgerla nello sviluppo di strumenti per una facile migrazione dei dati su OS/2, annunciando Ashton-Tate/Microsoft SQL Server

image12
Il SAF di SQL Server 1, con i copyright delle tre società

Prima della fine del decennio, in concomitanza con il lancio di dBase IV, la partnership tra Microsoft e Ashton-Tate si dissolve per la presunta complessità di realizzare uno strumento di dev/frontend che permetta di scambiare i dati tra la nuova versione di dBase e SQL Server. Ashton-Tate/Microsoft SQL Server viene così rinominato semplicemente in Microsoft SQL Server, mentre Sybase, ancora co-sviluppatore dello stesso, rinomina le proprie release in Sybase SQL Server per UNIX e VMS.

I primi IDE a finestre e la convergenza degli ambienti

image13

Gli anni '90 si caratterizzano per l'esplosione di Windows e del "mondo a finestre". L'ottica MS cambia con una visione a più lungo respiro e arrivano i primi e veri IDE (Integrated Development Environment), ovvero i primi ambienti integrati di sviluppo. Si inaugura così l'era "VISUAL" e il portabandiera non poteva non essere che Visual Basic. Il "papà" di VB è Alan Cooper, che, il 6 marzo del 1988, si presenta da Bill Gates per mostrargli un prototipo di shell drag-and-drop chiamata Tripod (scritto interamente in C), in grado di trascinare dei widget su un'area applicativa e gestirli attraverso un modesto linguaggio di sviluppo. Gates ne intuisce subito le potenzialità e Microsoft acquista il concept, rinominandolo in Ruby.

Cooper racconta così l'incontro con Gates:

AlanCooper

Because I was in the business of inventing programs and selling them to publishers, I began to show Tripod around the industry. Many companies in Silicon Valley saw it, but few expressed serious interest. However, in March of 1988, I showed this prototype to Bill Gates, and he immediately saw its potential. He declared that it was "cool" and that it would have significant impact across their entire product line. Bill said he wanted to buy it, and over the next few months we hammered out a deal. Because the name Tripod had had so much exposure, we promptly changed it to "Ruby." Meanwhile, I put together a team of skilled programmers to build a release-quality program.

[Poiché ero nel business di chi creava programmi per poi cercare una software house che lo vendesse, cominciai a far visionare Tripod alle industrie di settore. Molte compagnie della Silicon Valley videro il sistema, ma poche espressero un reale interesse. Nel marzo del 1988 mostrai il prototipo a Bill Gates che immediatamente ne vide le potenzialità. Da subito dichiarò che Tripod era "cool" e che poteva avere un impatto significativo su tutta la loro linea di prodotti. Bill disse di volerlo acquistare,  e nei mesi successivi raggiungemmo un accordo. Poiché il nome Tripod era stato molto esposto, rinominammo il sistema in "Ruby". Nel frattempo misi insieme un team esperto per realizzare una build di qualità del programma]

Tre anni dopo (20 Marzo 1991), dal matrimonio tra Quick Basic (che sostituì l'iniziale linguaggio di scripting) e Ruby, nasce Thunder, rilasciato ufficialmente come Visual Basic 1.0 a Maggio del 1991, durante il Comdex/Windows World Trade Show in Atlanta, Georgia. Si tratta di un linguaggio di terza generazione di tipo event-driven, dotato di un ambiente che permette lo sviluppo rapido e semplificato di applicazioni Windows, con tanto di accesso al DB point-and-click, sulla falsa riga di PowerSoft Powerbuilder.

Una curiosità che ricorda le origini di VB: i controlli creati dal runtime di VB hanno avuto per molto tempo il nome interno che iniziava con il prefisso Thunder (ad esempio i bottoni, internamente, erano conosciuti come ThunderCommandButton).

image14
Visual Basic 1.0 (fronte)
image15
Visual Basic 1.0 (retro)

Nella seconda metà del 1992 (settembre) viene rilasciato Visual Basic per DOS. Al di là del nome, questa versione non ha nulla a che fare con quella Windows, essendo più che altro un'evoluzione del QuickBasic. Inoltre il linguaggio stesso è incompatibile con quello di VB per Windows.

image16
Visual Basic per DOS

A Visual Basic bastano un paio d'anni per raggiungere la prima versione matura di VB, ovvero la 3.0, rilasciata a giugno del 1993. Passando per la versione 2, VB si arricchisce di alcuni tool prodotti da terzi (come lo Sheridan Software's VBAssist Debuts), nonché della prima implementazione di ODBC, delle FORM MDI e diverse migliorie al linguaggio in sé. Sicuramente, però, il grande valore aggiunto è l'integrazione del motore JET 1.1 di Access e la capacità di supportare pienamente OLE (Object Linking and Embedding) 2.0.

image17
L'IDE di VB 3.0

Nella scala temporale, il secondo ambiente con cui veniamo a contatto è FoxPro (1993, ancora non "visual"). Originariamente pubblicato dalla Fox Software (1984) per DOS, Windows, Macintosh e UNIX, entra nella sfera Microsoft nel 1992, quando il big di Redmond decide di acquistare l'intera società.

image18

Si tratta di un linguaggio di programmazione procedurale orientato alla gestione dei dati relazionali e basato su un potente engine DBMS (Database Management System) senza funzionalità transazionali e quindi non adatto ad ambienti Enterprise.

Microsoft ne decide l'acquisizione per entrare in modo deciso nel mondo xBase, considerando il proprio "Ciruss" (al secolo: Access) una soluzione da integrare nella suite Office, ideale per lo sviluppo di applicazioni DESK, sulla falsa riga di Borland Paradox, ma non sufficiente per il mondo professional. In particolare l'acquisto di Fox porta a Redmond la tecnologia "Rushmore", un sistema di ottimizzazione delle interrogazioni SQL di cui beneficerà anche lo stesso motore Jet di Access.  A differenza dei pasticci combinati da Borland nella gestione parallela di Paradox e dBase (divenuto di Borland in seguito all'acquisizione di Ashton-Tate), Microsoft riesce a gestire brillantemente i due sistemi, anche se le attività di marketing e promozione sono tutte concentrate su Access.

image19 JPG
FoxPro diventa "Microsoft"

A febbraio del 1993 arriva anche Visual C++, successore della serie dei compilatori C/C++, QuickC. Inizialmente rilasciato solo nell'edizione a 16bit, viene subito affiancato da quella a 32bit, e riunito in un unico package "16/32 bit", anche se le versioni sono differenti: 1.5 (rilasciata a dicembre del 1993) per quella a 16bit, 1.0 per quella a 32bit.  C'è da precisare che la prima versione a 32bit non ha il supporto a OLE 2.0 e ODBC, cosa che favorisce, ancora per un po', l'utilizzo di quella a 16bit.

image20
Visual C++ 1.5

La versione 1.5 è l'ultima release a 16-bit, anche se non mancheranno dei fix update che porteranno la 1.5 alla 1.52c, incluse in Visual C++ 2.x, disponibile solo nella versione a 32bit e dotato delle MFC 3.0.

Nel 1994 la partnership tra le Microsoft e Sybase, in relazione ai database, si dissolve, soprattutto per volontà della prima che decide di concentrarsi sui prodotti per NT ed ha la necessità di essere libera nelle scelte delle modifiche relative alla propria soluzione RDBMS. Così BigM prende il pieno controllo dello sviluppo di SQL Server, con l'accordo di riservare a Sybase una corsia preferenziale per il rilascio delle proprie soluzioni su OS/2 e Windows NT.

Nel giro di 18mesi vengono rilasciati SQL Server 6.0 e SQL SERVER 6.5, interessati da una completa riscrittura e significativamente differenti dalla versione 4.2 per OS/2. Ma queste non sono le uniche novità. Infatti Microsoft decide di investire in maniera capillare sui sistemi di data management, assumendo diversi GURU del settore e pianificando una release rivoluzionaria chiamata Sphinx, alias SQL Server 7, che faccia dell'espandibilità la propria arma vincente e che verrà rilasciata nel 1998.

La seconda metà degli anni '90 si apre, per il settore DEV di Microsoft, con Visual C++ 4.0 (1995, la versione 3 viene saltata, probabilmente per allineare l'ambiente al numero di release di Windows 95 -4.0- e del futuro NT 4, essendo disegnato proprio per tali sistemi) che porta in dote le nuove MFC 4.0 e segna il progressivo abbandono per le Win32s (le api di Win 3.1x), che avviene definitivamente con la minor release 4.2.

image21

Anche FoxPro si evolve e si trasforma in Visual FoxPro (3.0, 1995), facendo proprio un IDE similare a quello degli altri prodotti di sviluppo Microsoft.  A differenza della maggior parte dei sistemi di gestione di database, Visual FoxPro si presenta come un linguaggio di programmazione completo e dinamico che non richiede l'uso di un ambiente di programmazione supplementare (ad esempio Management Studio per SQL Server), utilizzabile per scrivere applicazioni tradizionali "Fat Client" così come middleware e Web Application. Da notare che con l'arrivo della versione "visual", scompare il supporto al DOS a UNIX e, progressivamente, a Mac OS.

Il destino di Visual FoxPro è però segnato: infatti Microsoft ha da poco ridisegnato la propria strategia nel settore dei DB con Access ed SQL Server tanto che nel 1996, a solo un anno di distanza dalla prima versione Visual e poco prima della nuova versione 5 (inizio 1997, la 4 viene saltata) presenta il vademecum "Choosing the Appropriate Database Development Tool" [scegliere l'ambiente di sviluppo database appropriato] dove Visual FoxPro viene completamente sminuito, soprattutto a causa delle sue scarse performance e del mancato supporto alla transazioni, relegandolo, di fatto, alle micro applicazioni. In sostanza il big di Redmond consiglia di usare Access per le applicazioni desktop e SQL Server per le applicazioni client/server.

Nel frattempo lo sviluppo di Visual Basic continua senza sosta, visto anche l'incredibile successo che l'ambiente ha riscosso, soprattutto in ambiti semi-professionali. Dopo l'arrivo di Visual Basic for Application (VBA, presentato il 29 giugno del 1993 da Bill Gates in persona), pensato per realizzare macro per le applicazioni Office (inizialmente solo Excel e Project), si passa rapidamente a Visual Basic 4 (14 novembre del 1994), che permette di creare i propri add-on e introduce nel linguaggio le classi, ma non la programmazione object oriented (manca assolutamente il supporto all'ereditarietà). Si tratta, inoltre, della prima versione a permette la creazione di applicazioni a 32-bit oltre che quelle a 16-bit, grazie agli OCX (32 bit) che vanno ad affiancarsi ai classici VBX (16 bit) delle versioni precedenti. Qualche mese dopo viene rilasciato l'NT Option Pack 4 che porta in dote IIS 3.0, ASP e VB Script.

Prima dell'uscita di VB4, al Windows World conference di Atlanta GA del 1994, Bill Gates premia Alan Cooper con uno dei sette "Windows Pioneer Awards", per il grande impatto che VB ha avuto nella diffusione di Windows.

A febbraio del 1997 arriva Visual Basic 5.0 che incorpora, finalmente, un compilatore nativo, un accesso ottimizzato ai dati e il supporto ai famigerati controlli ActiveX oltre a un sensibile miglioramento dell'IDE.

image22
Visual Basic 5 Splash Screen

Ma Microsoft, si sa, è sempre stata attenta ai trend di mercato e il suo settore Dev non poteva di certo non capire l'importanza di Java. Così nel 1996 nasce Visual J++, ovvero un IDE targato Redmond per il linguaggio di SUN, creato, ovviamente, per il sistema operativo Windows ed abbinato alla MSJVM (Microsoft Virtual Machine for Java).

image23
Microsoft Visual J++

La sintassi di Visual J++ rispetta le convenzioni grammaticali previste da Java, ma Microsoft non implementa tutte le funzionalità presenti nella versione SUN (ad esempio, Java Remote Methods Invocation e Java Native Interface), mentre estende il linguaggio con caratteristiche proprietarie come callback e delegate per la gestione degli eventi.

Con il finire del decennio si chiude l'era pre-dotNet. Siamo nel 1998 e Microsoft presenta: Visual Basic 6 , Visual C++ 6 e Visual J++ 6. VB 6 porta in dote una serie impressionante di migliorie: WebClass, Controlli Windowless, un DataDesigner, un Reporting Designer, la possibilità di creare DataSource personalizzati e molto altro. Con la nuova versione arriva anche il supporto allo sviluppo di applicazioni (D)HTML based, il tutto integrato in un IDE decisamente più funzionale e maturo, grazie anche ai numerosissimi feedback degli sviluppatori.

Al contrario, VC6 delude un po' le aspettative, presentandosi con MFC 6 non all'altezza delle aspettative e un debugger non particolarmente efficiente, soprattutto con una serie di bug in ambiente Windows XP, risolti solo in seguito con la patch denominata "Visual C++ 6.0 Processor Pack".  Questa versione include, inoltre, una serie di tool identificati come eMbedded Visual C++ (vers. 4) che permettono lo sviluppo per la piattaforma Windows CE.

image24
Embedded Visual C++ 4 (contenuto in VC6)

VJ6 (terza versione dopo la 1.0 e la 1.1) segna la fine dell'avventura Java targata Microsoft, visto che per le differenze sopra citate, SUN decide di citare legalmente il big di Redmond (con cui inizialmente era in accordo per l'implementazione di Visual J++), costringendolo, in sintesi, a ritirare Visual J++.

image25
Visual Basic 6.0
image26
Visual C++ 6.0
image27
Visual J++ 6.0
Continua a pagina 2
AREE TEMATICHE
Vuoi ricevere aggiornamenti su #Software?
Iscriviti alla newsletter!