Technology Experience

Contenuti gestiti da Igor Damiani
posts - 949, comments - 2741, trackbacks - 15120

My Links

News

  • Questo blog si propone di raccogliere riflessioni, teoriche e pratiche, su tutto quello che riguarda il world-computing che mi sta attorno: programmazione in .NET, software attuale e futuro, notizie provenienti dal web, tecnologia in generale, open-source.

    L'idea è quella di lasciare una sorta di patrimonio personale, una raccolta di idee che un giorno potrebbe farmi sorridere, al pensiero di dov'ero e cosa stavo facendo.

    10/05/2005,
    Milano

Archives

Post Categories

Generale

Managed code Vs Native code - commenti

Ho trovato molto interessanti i due post dove ha avuto luogo il “confronto” tra native code e managed code. Ognuno dei due blogger ha voluto giustamente dire la sua, descrivendo accuratamente i punti di forza dell’uno o dell’altro ambiente. Credo però che come al solito la verità non sta né da una parte né dall’altra. I vantaggi del native code sono indiscussi, mentre secondo me quelli dovuti al managed sono piuttosto oscuri e, volendo dirla tutta, riguardano soprattutto lo sviluppatore.
Cosa importa al cliente finale se sviluppiamo in C++ piuttosto che in VB.NET ? Nulla. Anzi, tutte le volte che preparo un’analisi e un’offerta per il mio software indico sempre in che cosa scriverò il programma, evidenziando per esempio qualcosa tipo: VB.NET, linguaggio di programmazione Microsoft evoluto e adatto agli standard moderni, possibilità di usare SQL Server, pubblicare sul Web, utilizzare palmari, bla bla bla.
Ma il cliente mi guarda stranito, e allora spiego io a voce, davanti a lui, cosa significa. Mettevi un attimo nei suoi panni: lui vuole spendere poco (!!), vuole un prodotto funzionante subito, il prima possibile. E qui entra in gioco la grande differenza. Se scrivere un software in C# mi porta via 4 settimane, in C++ quanto porterebbe?
Produttività.
Ecco la parola magica, ecco (credo) dove tutta l’architettura .NET abbia fallito. Oddio, fallimento è una parola grossa: d’altronde, per far evolvere VB le cose devi pur cambiarle, per far convergere tutto nel grande framework le cose devi pur cambiarle, e i cambiamenti non sono mai indolori e mai lo saranno. Come (mi sembra) abbia detto Andrea Saltarello nel suo blog, l’adesione a .NET è stata inferiore alle aspettative proprio per la scarsa produttività (almeno iniziale) dei programmatori (come me) con .NET. Scarsa dovuta alla “difficile” (per alcuni, fra cui me) conversione da vecchi progetti C/VB6 in managed code.

Tutte le altre considerazioni tecniche che sono state fatte secondo me passano in secondo piano: come giustamente è stato detto, un’applicazione “Hello world” in native code ha x linee di codice, mentre in C++ la linee diventano y*x, però in C++ il periodo di sviluppo diminuisce drasticamente, perché gran parte delle linee di codice vengono prodotte dal compilatore. Nonostante quindi l’apparente perdita di prestazioni, i vantaggi sono innumerevoli e indiscussi, basti guardare la (giusta e motivata) diffusione di C/C++ ai suoi tempi e VB al giorno d’oggi – mi riferisco esplicitamente alle classiche applicazioni di office-automation in cui sono un po’ più ferrato. Con il managed code la faccenda è più complessa, e riassumendo i punti dolenti si riassumono in:

1. difficoltà iniziale a traslare vecchi progetti. Nel mio caso, questa situazione ha portato a gestire i progetti in diversi modi: mantenere i vecchi progetti nel linguaggio, produrre nuovi software in VB.NET/C#
2. perdita di prestazioni considerevoli. E, attenzione, non mi riferisco banalmente a vedere le dimensioni in Kb di notepad.exe, o al numero di risorse occupate. Ovvio che passando dal FW il sistema ha un carico di lavoro maggiore. Però effettivamente lavorando con applicazione managed sembra davvero tutto più lento (tempi di reazione dei forms dalla semplice visualizzazione a qualcosa di più complesso, per esempio)
3. managed secondo me (attualmente) significa espressamente applicazioni windows forms o asp.net. Si possono creare web services, servizi, però (almeno è il mio punto di vista) se devo sviluppare componenti lato server ottimizzati e ad un certo livello (evitando memory leak, etc.) credo sia meglio usare altri linguaggi a basso livello

Oggi, proprio in questo periodo, sto raggiungendo una buona velocità di esecuzione con .NET e quindi il fattore “scarsa produttività” comincia a calare Ma questo potrebbe non valere per chissà quanti altri sviluppatori. Le prestazioni invece, non so, può essere che mi sbagli io a vederla in questo modo, e comunque dipende dalla qualità del codice o dalle caratteristiche hardware del PC su cui si lavora.

In conclusione, nonostante i punti dolenti, credo che il managed code abbia dei forti vantaggi sul native: ma questo vale dal mio punto di vista. Una volta acquisita dimestichezza e un certo modo di pensare le applicazioni, con .NET si sviluppa davvero alla svelta, la qualità della UI è notevole, la pulizia del codice che si raggiunge mi piace davvero molto. Quindi per me non c’è paragone: sviluppando prevalentemente applicazioni Windows Forms per uffici (agenzie di spettacolo, veterinari, applicazioni gestionali, etc.) sarebbe un incubo programmare tutto in C++, per cui non cambierei il managed code con nessun’altra cosa al mondo.

Managed Code Vs Native Code (5 - 3)
Il managed vince il derby, ma la difesa non si è dimostrata solida e si è fatta trovare impreparata in situazioni in cui avrebbe dovuto dare di più.
:-)))

Print | posted on martedì 19 aprile 2005 13:45 |

Feedback

Gravatar

# re: Managed code Vs Native code - commenti

concordo con tutto quello che ha detto Roberto...

Anche se credo che .NET ha fallito dove regnavano Access e/o i programmi "semplici" fatti in VB, mentre eccelle quando ci si ritrova a spremere VB6 per fargli fare quello che riusciva a fare solo con molta difficoltà...
19/04/2005 15:04 | Lorenzo Barbieri
Gravatar

# re: Managed code Vs Native code - commenti

Beh... questo penso che valga in assoluto...
Il mio primo programma in C era lungo venti righe e ci avevo messo quasi due giorni a farlo andare... poi dopo un mese andavo che era un piacere...

Penso che sia un problema di qualsiasi piattaforma...

Prova a chiedere ad un programmatore PHP di passare ad ASP.NET e vedi quanto ci mette all'inizio e dopo due mesi a scrivere la stessa applicazione...

E' la vita... ;-)
19/04/2005 16:11 | Lorenzo Barbieri
Gravatar

# re: Managed code Vs Native code - commenti

Perdonami Igor, ma la tua osservazione non mi sembra particolarmente "brillante". Quello che descrivi non ha nulla a che fare con .NET nello specifico. è una questione che si verifica in qualsiasi ambito della vita quando si passa da qualcosa che si conosce perfettamente a qualcosa di nuovo. ma non sta sinceramente in piedi dire "la cosa nuova non è che sia poi così bella" solo perchè all'inizio la devi imparare. Inoltre non credo sia una buona idea scartabellare l'help dell'sdk come unica attività, io ad esempio l'help dell'sdk lo uso come reference, non certo per imparare tecniche o per avere un'verview per quella o quell'altra tecnica o namespace. per questo c'è internet in tutte le sue accezioni (portali, blogs, ng, webcast), qualche buon libro (Code complete, Programming .NET components e mille altri) e possibilmente qualche seminario (ce ne sono di gratuiti!).
saluti
19/04/2005 17:31 | Roberto Messora
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET