Marco Russo

.NET, Business Intelligence e dintorni

News

Microsoft SQL Server & Business Intelligence Conference 2012

Torino Technologies Grou

Corsi

Libri

Miei blog in inglese

Archives

Programmatori Visual Basic 6: Ultima Chiamata

Pochi giorni fa in una chiacchierata ho fatto alcune considerazioni che mi hanno portato a scrivere questo post che qualcuno potrebbe considerare provocatorio, ma dal mio punto di vista non lo è affatto.

Il messaggio è destinato a chi ancora oggi sceglie come ambiente di sviluppo Visual Basic 6.

Dieci anni fa uscì sul mercato la versione finale di Visual Basic, la numero 6. Fu anche l'ultima versione di un ambiente di sviluppo che, con .NET, avrebbe visto un rinnovamento completo (anche se non definitivo). In realtà, per molti Visual Basic 6 fu semplicemente uno dei tanti miglioramenti seguiti a Visual Basic 3. Molti usarono Visual Basic 6 esattamente come usavano Visual Basic 3. Altri ne apprezzarono i miglioramenti, qualcuno ne scoprì alcune capacità solo alcuni anni dopo.

Nel 2000 arrivò .NET, o per lo meno fu annunciato, visto che la prima versione fu rilasciata nel 2002. La migrazione non fu cosa semplice, e infatti molti si rifiutarono di passare al nuovo ambiente. In questi dieci anni ho visto molte applicazioni scritte in Visual Basic 6 morire di morte naturale e passare a nuova vita in .NET, in C# o Visual Basic (o in qualunque altro linguaggio .NET, è poco importante). Ma, e questo è il motivo per cui scrivo, in questi dieci anni (e in particolare negli ultimi 5) ho anche visto nuovi progetti creati in Visual Basic 6. Sempre meno, ma più di quanti sarebbe sensato (per me) vedere.

Tra pochi giorni ci sarà il lancio di Visual Studio 2008. Visual Basic ha perso il suffisso .NET, ma solo perché ormai si dà per scontato che sia tale. Nonostante gli appelli, nessuna nuova versione retro-compatibile con Visual Basic 6 è stata rilasciata da Microsoft. Nessuna speranza, nonostante gli appelli, che ciò possa avvenire in futuro.

Se con .NET 1.0 e Windows Forms un programma scritto in Visual Basic 6 poteva non sfigurare, oggi la situazione si fa complicata. Troppe tecnologie sono diventate inaccessibili a chi è rimasto ancorato al passato. Windows Presentation Foundation (WPF) è l'elemento più importante. Siamo solo agli inizi di quello che sarà un vero cambiamento nell'interfaccia utente Windows che siamo abituati a usare quotidianamente, ma chi ostinatamente non accetta il nuovo oggi è esattamente nella stessa posizione di chi, conoscendo soltanto il Cobol, con l'avvento di Windows pretendeva di continuare a programmare in Cobol in un ambiente a finestre che richiedeva un modello di programmazione orientato agli eventi.

WPF è solo lo strato più visibile di un grande cambiamento che investe (e investirà) non solo l'intera infrastruttura, ma anche i paradigmi di programmazione oggi più diffusi. Pensate a un modello di programmazione più dichiarativo che iterativo, a ragionare per servizi anziché per componenti, a immaginare una reale componentizzazione nel processo di realizzazione del software, a servizi di infrastruttura che non sono usati esternamente al bisogno, ma che diventano la struttura portante di un sistema informativo in cui l'applicazione custom non è più il collante di oggetti diversi ma essa stessa il risultato di un'architettura dove la personalizzazione avviene su alcuni componenti "annegati" in un ambiente eterogeneo.

Siete spaventati? Non dovreste. Quando avete iniziato a programmare, la novità non vi spaventava. Perché deve farlo oggi?

Comunque la pensiate, signori programmatori Visual Basic 6, per voi questa è l'ultima chiamata.

La distanza che vi separa dai moderni ambienti di sviluppo è grande, ma tutto sommato potete ancora riconoscere qualcosa di familiare negli strumenti che avete oggi a disposizione. Domani, probabilmente, questa distanza sarà definitivamente incolmabile.

Pensateci. Provateci.

Altrimenti, tra poco, dovrete appendere la tastiera al chiodo.

Comments

Antonio said:

# febbraio 18, 2008 10:26

davides77 said:

Ciao Marco, seguo sempre con interesse i tuoi interventi. Stavolta, però, vorrei dire anche la mia.

Non sono uno strenuo difensore di VB6 anche se programmo ancora in VB6 perchè nella sw-house per cui lavoro è il linguaggio scelto. Da anni, da VB5, tutto nella sw-house viene sviluppato in VB... mi verrebbe da dire che sono miliardi di righe di codice... Molte form, classi e varie sono personalizzate per il cliente... ai nostri clienti (a cui il programma gira liscio come l'olio) non interessa niente di VB.net... interessa che "giri" bene il programma. Saprai anche tu che "convertire" un'applicazione è possibile ma farla andare come Dio comanda ci vogliono mesi se non anni. Certo che, ragionando così, nessun upgrade è possibile. Faccio, però, 2 considerazioni:

1. vb in versione .net è la 3a volta che subisce modifiche... con un nuovo .net framework esce una nuova versione di vb... e neanche poco modificata... wpf, xaml... e altro sono nel .net framework 3! Io, x la mia ditta, ho iniziato con vb.net 2005 alcuni nuovi lavori e anche pesantemente x non rimanere legati a vb6. A questo punto mi trovo a dover rimettere mano anche a questo codice? Voglio dire, è vero che non è un lavoro enorme, ma è pur sempre un lavoro da spenderci ancora tempo... mesi... x quale motivo? la cara MS non dovrebbe stabilizzare meglio le proprie scelte e, anzi, dare una strategia che duri x anni?

2. collegato al punto precedente. Nelle sw-house che seguono il cliente finale i cambiamenti sono mooooolto + lenti che in MS. Adottare una scelta come .net significa mantenerla x molti anni. Se inizio con il .net framework 1.1 non posso tutti gli anni passare alla nuova versione del framework. Però, così, rischio nel tempo di rimanere nuovamente spiazzato e tagliato fuori. Aziende come Adobe e Sun non "buttano fuori" release così a raffica come mamma MS. Un'azienda piccola come quella in cui lavoro (5-6 programmatori) come fa a ponderare una scelta senza rimanere "affossati" dalle nuove versioni?

Grazie. Ciao

# febbraio 19, 2008 12:23

marco.pappalepore said:

ciao Marco,

 a me capita occasionalmente di sviluppare piccole applicazioncine in VBA su Access, perciò mi ero già posto il quesito per loro... In effetti mi aspettavo che già con Office 2007 arrivasse il passaggio obbligato a .NET, ma fortunatamente ho potuto convertire sulla nuova piattaforma dei vecchi db che così continuano a funzionare normalmente. Per il mondo VBA dunque si aspetta ancora una versione ? O durerà più a lungo?

grazie, ciao

            Marco

p.s. lo segnalo anche a te, non riesco a loggarmi sul blog(faccio signin con le credenziali ma rimango fuori) con Firefox (2.0.0.12), mentre tutto va liscio con Explorer (7.0.5730.11)

# febbraio 20, 2008 10:02

Davide.Dolla said:

Ciao Marco, è la prima volta che leggo il tuo blog e devo dire che concordo pienamente con ciò che hai scritto. Anzi sono rimasto basito quando ho letto di nuovi progetti pensati e scritti in VB6!!!

Premetto che ognuno, aziende comprese, è libero di scegliere linguaggi/ambienti/mercati, ma come in tutte le scelte ci sono dei pro e dei contro.

Nei vari anni ho scarabocchiato un po' di SW in Clipper (DBIII e cugini ... anni 88/90... non so se tu o chi legge era già in mezzo ai bit) [Gestione dai ragioneria VVFF] , in VB6 [penso l'unico programma al mondo con "il naso"] e poi in ASP 1.0.

Nel 2002/2003 ho deciso seriamente di sviluppare solo SW e di lasciar perdere HW, server, reti, ecc.

A quel punto mi sono chiesto dove sviluppo... in quale linguaggio, con quali tools/componenti???

Devo ringraziare un mio amico che aveva stava sviluppando Rainbow in ASP.Net e lui... "... usa il C#."

Meno male che gli ho dato ragione!!!

Sono almeno 5 anni che sviluppo applicazioni WindowsForm su misura per diversi clienti ed in modalità prototipale con un notevole successo (a 360°, dall'usabilità, stabilità, integrità dei dati, umanità, aproccio naturale, curva d'apprendimento tendenzialmente nulla).

Il target dei clienti è aziendale/professionale, nel senso che i SW aiutano a far girare milioni di € al mese e devono garantire, come giustamente diceva davides77, che tutto fili liscio... sempre!

Bene vi posso assicurare che siamo passati indenni e senza sforzi e senza contraccolpi da .Net 1.0 a 1.1 a 2.0 e a 3.5!!!

E la cosa divertente e che ad oggi io ed il mio team riusciamo a sviluppare un'applicazione nuova che deve gestire dati d'ufficio (tipo una decina di dataTables, che sostituisocno alcuni delle decine di files Excel e/o MDB che oggi popolano tutti gli ufficio del mondo), farne il deploy in produzione e formare le persone in un paio di giorni. Sempre che il cliente abbia le idee chiare.

Inoltre lo strumento creato rimane manutenzionabile/evolvibile/integrabile nel tempo e regge qualsiasi evoluzione di UI e/o di .Net.

Questo mio solo per trasmettere la mia esperienza molto positiva con .Net e C#.

Inoltre come sviluppatore posso affermare che il VB 6 o Net limita enormemente la fantasia dello sviluppatore. In C# si posso scrivere le stesse cose con mooolti meno caratteri, e quindi più leggibile, e si può scrivere degli algoritmi inimagginabili in VB e il tutto mantenendo leggibilità e naturalezza.

Quindi davides77 comprendo quanto sia traumatico anche solo pensare di dover passare il vs. SW alle nuove tecnlogie... ma è un notevole sforzo, che se ben pensato nei suoi primi passi, può portare NOTEVOLI vantaggi sia a te/voi che ai clienti.

E ti assicuro che i vantaggi, economicamente riscontrabili, ci sono, anche per team medi/grandi. E solo questione di fare un scelta difficile e di impostare bene il percorso verso il "nuovo". Chiaramente bisogna farsi seguire da chi ha già una notevole esperienza nella realizzazione pratica di SW in .Net/C# in quanto ritengo che i corsi o l'auto-formazione non siano sufficienti per imbastire il passaggio dal vecchio al nuovo.

Senza una giusta guida si rischia un fallimento.

Un ultimo consiglio spassionato ed amichevole per chiunque voglia divertirsi a scirvere SW... usate C# .Net e le versioni Express (gratuite ) degli ambienti di sviluppo Microsoft, provare per credere.

Spero di non essere stato prolisso... non riesco a capire quanto ho scritto...

Un cordiale saluto e complimenti ancora per il blog.

Davide.

PS: io ogni 3 mesi passo ad una nuova versione dei componenti Windows che uso ... il tutto sempre liscio come l'olio.

Ma sarà vero che più sono grandi e più sono pachidermici?

Davide contro Golia?

# febbraio 23, 2008 7:56

marco said:

Per Davide

Visual Basic 1.0 è stato rilasciato nel 1991 e Visual Basic 6.0 nel 1998. 6 versioni in 8 anni significa una versione ogni anno e mezzo.

Dopo 4 anni è uscito Visual Basic .NET, poi nel 2005 una nuova versione e infine nel 2008 quella di cui parliamo adesso. Fa una media di una versione ogni 3 anni. L'unica discontinuità è stata il passaggio da Visual Basic 6.0 a Visual Basic .NET, mentre sicuramente c'erano più difficoltà di migrazione tra le versioni di VB fino alla 6.0 che non sulle versioni .NET (dove andando a una versione più nuova non hai problemi di compatibilità ma chiaramente hai funzioni nuove).

Marco: forse con Office 14 vedremo il salto a .NET - chiaramente mi aspetto compatibilità con VBA (non so ancora se tenendo il "vecchio" VBA o facendoun layer di compatibilità con il nuovo). Comunque prima del 2009-2010 non se ne parla.

Davide: a volte si può aspettare di migrare a una versione nuova :-) il mio messaggio era rivolto soprattutto a chi oggi non prende nemmeno in considerazione .NET, neanche per un nuovo progetto. E non è un'accusa, ma una considerazione sul fatto che siano in una strada che non porta molto lontano.

Grazie a tutti per i feedback!

Marco

# febbraio 26, 2008 6:12

Dedalus said:

Ciao Marco.

Ma a proposito di migrazione da vb6 a .Net: hai in programma la pubblicazione di qualche nuovo libro su c# 2008?

# febbraio 27, 2008 9:05

Rosario said:

Salve. E' la prima volta che leggo questo blog e devo dire che mi piace. Lavoro in Inghilterra da molti anni ma ho anche lavorato in Italia prima di emigrare. Come molti ho cominciato con il COBOL, per poi passare a tecnologie windows e infine al web, non staró qui ad annoiarvi riguardo alle tante tecnologie che ho visto e con cui ho lavorato in vita mia. Credo che i solchi di conoscenza che vengono creati dal veloce sviluppo delle tecnologie non siano mai incolmabili altrimenti non ci sarebbero nuovi programmatori, poi il mondo del software è stato sempre cosí, anzi forse per gli open-sources è ancora piú veloce. Credo invece che sia molto piú difficile apprendere l'ingegneria del software, l'OOP, i patterns, UML etc. Capisco comunque la preoccupazione di Marco, ma anche le perplessitá di Davide e per questo motivo proveró a dare il mio contributo basato sulla mia esperienza personale.

Ci sono delle applicazioni fatte di migliaia di moduli per cui è impossibile da un punto di vista di tempi e di investimento pensare di convertire tutto a .NET o a una tecnologia equivalente non è assolutamente praticabile, ci vorrebbe troppo tempo, troppe risorse, si perderebbe di credibilitá con i clienti perchè una nuova applicazione non è mai stabile come una vecchia etc; per le piccole applicazioni la situazione è completamente opposta, non ha senso mantenere vecchie tecnologie quando si puó convertire facilmente alle nuove.

Nell'azienda per cui lavoro si tende a sviluppare tutto il nuovo con le ultime tecnologie, di convertire il vecchio dove è possibile, ma anche di mantenere il vecchio, non mi riferisco solo a VB6 ma addirittura a Sculptor (qualcosa di simile al COBOL), quindi si dovrebbe avere un approccio secondo me flessibile, in molti ambienti esistono ancora dati su mainframe in quel caso bisognerebbe ad esempio cercare di disegnare un architettura orientata ai servizi (SOA) dove i dati e il framework sono conservati su mainframe ma le richieste e i risultati con l'esterno dovrebbero essere implementati su livelli diversi: xml, web services etc, interfacciabili con ogni tipo di tecnologia client, windows o web, ovviamente questo approccio non è sempre realizzabile in ogni scenario, ma non sempre è possibile dire ricominciamo tutto da zero.

Rosario

# marzo 4, 2008 6:04