5 messaggi dal 02 giugno 2012
Cari amici, un collega mi ha inviato queste 4 righe di codice e mi ha detto "prova a rifarle oggi e dimmi di cosa hai bisogno e quanto impieghi"...

var tTitolo = "", dtPub=date(), nPrzLis = 0
@06, 10 say "Titolo" get tTitolo pict("!@150") valid(fnCheckTitle()) message "inserisci il titolo del libro"
@08, 10 say "Data Pubblicazione" get dtPub
@10, 10 say "Prezzo Listino" get nPrzLis picture "¤#,###,##0.00" valid(fnCheckPrzList())
READ

Con queste poche righe 20 anni fa avevi:
- Un solo linguaggio di programmazione;
- Bastava dichiarare la variabile per controllare formalmente il dato che veniva inserito dall'utente e in caso renderlo obbligatorio
- visualizzare un messaggio (tooltip) di descrizione per guidare l'utente, richiamare una funzione che controllasse nel database quanto inserito;

Oggi avrei bisogno di:
- un linguaggio per il Database (SQL);
- un linguaggio per il DataLayer (c#);
- un "linguaggio" di markup per il PresentationLayer (asp.net / html);
- un linguaggio per il ClientLayer (javascript);
- conoscere JQuery / kendoUi / Juice per poter aprire una finestrella o fare qualche semplice controllo di validità formale del dato (per sicurezza comunque da rifare lato server);


In effetti mi sembre che la programmazione del PresentationLayer sia diventata troppo prolissa, debole, inefficace e dispendiosa.

Ripensando a 20 anni fa, in applicazioni dataEntry, con poche righe di codice, era possibile fare cose che oggi risultano complesse o anche impossibili.

Ad esmepio potete confrontare la AspNet TextBox con il corrispondente comando GET del Clipper:
(http://www.itlnet.net/programming/program/Reference/c53g01c/ngacf16.html)


Sono passati quasi 15 anni da AspClassic, gli anni hanno 'smorzato' queste carenze. Inizialmente quel poco che si riusciva a fare sembrava entusiasmante perché nuovo. Nello stesso momento i programmatori RPG e Cobol se la ridevano, preoccupandosi al contempo perché già immaginavano che prima o poi sarebbe diventato lo standard del futuro (che ginepraio di tecnologie e linguaggi!!).

Penso che i giovani programmatori nemmeno possano immaginare quanto fosse più semplice un tempo... altrimenti... alle conference in tanti si alezerebbero e direbbero:
"Hey! 20 anni fa ci mettevo 3 minuti a fare questa cosa, oggi ne impiego 15 e non funziona su tutti i browser. Questo è quello che mi vorresti vendere come il sistema di sviluppo più evoluto al mondo?"

Sarebbe bello se qualche Evangelist possa postare un bel blog mettendo a confronto lo sviluppo di un dataEntry in Clipper con uno in Asp.Net WebForms.

In questo modo saprei cosa rispondere al mio amico... in caso contrario..

I dinosauri siamo noi!

ciao
max
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Max, benvenuto nel forum, apprezzo che tu abbia voluto chiedere un parere alla community.

Penso che non ci sia bisogno di un evangelist ad elencare i vantaggi di dotnet. Bisogna solo fermarsi e capire il punto di vista del tuo collega. Infatti, sono convinto che dotnet non c'entri in questo discorso, e neanche Clipper, SQL o ajax.

Anch'io conosco un paio di professionisti che, come lui, hanno quell'opinione. Questi conoscenti, nel corso degli anni, hanno maturato sul campo una grande esperienza e la loro capacità è comprovata dal successo delle aziende in cui lavorano.
Tuttavia succede che, come qualsiasi altra persona, ognuno ami costruire attorno a sé una "zona di comfort" in cui si sente competente e un valido aiuto per gli altri.
I cambiamenti nel mondo circostante premono costantemente su questa zona e possono essere recepiti come fastidi. Immagina di doverti alzare dal letto in pieno inverno, alle 6 di mattina, e di scoprire che il riscaldamento non è partito. Non è una sensazione piacevole dato che avevi una bella temperatura, sotto le coperte.
Allo stesso modo, in ambito informatico come in tanti altri ambiti della vita, ogni mese qualcuno si inventa qualcosa di nuovo di cui non conosciamo nulla: né l'origine né i problemi che dovrebbe risolvere.
Almeno finché non iniziamo ad interessarcene ma quando si è già esperti in qualcosa, sentirsi di nuovo dei principianti non è piacevole. La prima inclinazione è quella di ricacciare indietro questa sensazione e rimarcare con più forza i confini della propria zona di comfort. Però così inizi ad innalzare un muro, che ti isola dagli altri e ti rende un aiuto meno valido per loro.

E' importante aprirsi alle novità e accettare che, se vuoi fare questo mestiere, è bene restare in perenne apprendimento.

Ti dimostro che posso riscrivere quelle righe di codice Clipper anche in C#, su un'applicazione Console, a testimonianza che i linguaggi ad alto livello che usiamo oggi non sono diventati prolissi o inefficienti.
var tTitolo = ""; var dtPub = DateTime.Now; var nPrzLis = 0m;
do { Console.Write("Inserisci il titolo del libro: "); } while (!Regex.IsMatch(tTitolo = Console.ReadLine(), "^.{1,150}$"));
do { Console.Write("Data pubblicazione: ");} while (!DateTime.TryParse(Console.ReadLine(), out dtPub));
do { Console.Write("Prezzo Listino: ¤"); } while (!decimal.TryParse(Console.ReadLine(), out nPrzLis));
Questo programma chiederà all'utente di inserire 3 valori e ne validerà l'input. Si tratta di 4 righe di codice che assolvono ad uno scopo ben preciso. Da nessuna parte ho dovuto usare SQL, Ajax o altro.

Se il tuo collega ha espresso il suo giudizio mettendo a confronto questo codice, che va in esecuzione in maniera sincrona sul PC dell'utente, con quello necessario in un'applicazione web, allora non si è dimostrato intellettualmente onesto con sé stesso.
Saprà sicuramente che oggi il mondo è molto più connesso; sviluppiamo molte più applicazioni client-server, dove le due parti non si trovano in LAN e che quindi sono soggette a latenza di rete. Il protocollo HTTP è asincrono e pone delle sfide maggiori rispetto ad un'applicazione tradizionale. Solo le nuove tecnologie, come ad esempio Ajax, riescono a risolvere quei problemi in maniera egregia.

Se oggi esistono tante opportunità per lo sviluppatore è perché non ci accontentiamo più di mostrare una Textbox.
  • I software vengono sviluppati per semplificare la vita alle persone, quindi l'usabilità è un punto cardine. Vogliamo aggiungere alla Textbox un autosuggeritore, così che l'utente possa completare la digitazione più velocemente?
  • L'efficienza del codice non si misura più col numero di righe necessarie a portare a termine un compito. Il codice che uso per creare una Textbox deve essere leggibile, testabile e manutenibile, sia da me che dai miei colleghi che partecipano al progetto. Non come quelle 4 righe di codice C# che ho scritto qua sopra.
    Un tempo si considerava un bravo sviluppatore quello che era in grado di scrivere del codice talmente complesso da non riuscire a leggerlo. Oggi ci si mantiene sul principio KISS.
  • Il motivo per cui oggi vedi applicazioni con tanti layer è perché ha prevalso il buonsenso di spezzare il problema in frammenti più semplici, che vengono caricati di una singola responsabilità. Questa consapevolezza la trovi distillata in pattern architetturali (trovi delle informazioni nella sezione Patterns & Practices di msdn.microsoft.com). Anche i programmi di vent'anni fa dovevano risolvere problemi complessi, ma lo sviluppo forse non era supportato da strumenti evoluti come quelli di oggi e il codice poteva assumere velocemente l'aspetto di una grossa palla di fango. Li dico guardando me stesso e a come sviluppavo tempo addietro.
    Insomma, ogni tecnologia nasce per aiutarti a risolvere un problema ben preciso. Capisco che, dato che il mercato è libero, a volte hai ben più di un'alternativa tra cui scegliere. Questo paradosso della scelta dapprima ti può intimorire ma nulla ti vieta di rivolgerti alla community o ad un consulente per avere un consiglio verso la soluzione migliore.


aspmaxsoft ha scritto:

I dinosauri siamo noi!

No, credo di no. Dì al tuo collega che non c'è vergogna nel dire "non lo so". Anzi, ti dà uno stimolo che ti porta verso il "voglio imparare".

Buona Festa della Repubblica
Modificato da BrightSoul il 02 giugno 2012 17.36 -

Enjoy learning and just keep making
89 messaggi dal 13 marzo 2010
BrightSoul ha espresso molto precisamente le differenze.
Io scenderei più a basso livello dicendo che il mondo del software + cambiato enormemente dagli anni '80-'90 ad ora. Siamo passati da un (perdonatemi la semplificazione) "code and forget" (tipico di quella che io chiamo programmazione da garage) ad un approccio più rivolto alla manutenibilità e testabilità del sistema, quindi un approccio più ingegneristico-industriale.
Purtroppo molte persone (anche addetti ai lavori) non capiscono (o non vogliono capire) che scrivere un buon software va oltre la semplice scrittura del codice.

Saluti
5 messaggi dal 02 giugno 2012
Buongiorno a tutti,
buon inizio settimana.

Grazie per le Vs considerazioni.
Devo dire però che forse siamo andati fuori tema, infatti i 'nonni' già utilizzavano la suddivisione in Layer (vedi COBOL e RPG per le maschere, IBM ha inventato il db come lo si conosce oggi).

Il punto era sulla semplicità di implementare una maschera di inserimento dati su Web piuttosto che sui vecchi sistemi:
1) Oggi è necessario conoscere diversi linguaggi di programmazione;
2) il framework di base offre controlli di input non sufficienti;
3) bisogna ricorrere ad altri framework per aprire una maschera sopra ad un'altra maschera (jQuery), fare una ricerca in tabella usando un'altra maschera diventa complesso);

Il 'web' lo hanno inventato i nonni, si può infatti paragonare ad un MainFrame con un client evoluto, eppure quanto poteva/può essere fatto su iSeries non può essere fatto oggi con la stessa semplicità.

Il post è dedicato a chi programma da almeno 20 anni.
I giovani programmatori 'mangiano' da sempre pane duro di 2 settimane perché non hanno mai assaggiato il pane appena sfornato, non hanno proprio idea del sapore che abbia.

Ciao ciao
maxsoft
1.495 messaggi dal 27 dicembre 2005
aspmaxsoft ha scritto:
Buongiorno a tutti,
buon inizio settimana.

Grazie per le Vs considerazioni.
Devo dire però che forse siamo andati fuori tema, infatti i 'nonni' già utilizzavano la suddivisione in Layer (vedi COBOL e RPG per le maschere, IBM ha inventato il db come lo si conosce oggi).

Il punto era sulla semplicità di implementare una maschera di inserimento dati su Web piuttosto che sui vecchi sistemi:
1) Oggi è necessario conoscere diversi linguaggi di programmazione;
2) il framework di base offre controlli di input non sufficienti;
3) bisogna ricorrere ad altri framework per aprire una maschera sopra ad un'altra maschera (jQuery), fare una ricerca in tabella usando un'altra maschera diventa complesso);

Il 'web' lo hanno inventato i nonni, si può infatti paragonare ad un MainFrame con un client evoluto, eppure quanto poteva/può essere fatto su iSeries non può essere fatto oggi con la stessa semplicità.

Il post è dedicato a chi programma da almeno 20 anni.
I giovani programmatori 'mangiano' da sempre pane duro di 2 settimane perché non hanno mai assaggiato il pane appena sfornato, non hanno proprio idea del sapore che abbia.

Ciao ciao
maxsoft



Per il punto 2 hai pienamente ragione.
46 messaggi dal 25 febbraio 2002
Vero, verissimo quello che ci ricordi.
Chi programmava in Clipper (DOS) ed è passato a qualsiasi linguaggio moderno ( Windows ) ha avuto un perdita di performances di 10 lunghezze.
Con Clipper ci si poteva concentrare sul COSA fare, adesso ci si deve concentrare sul COME farlo.
Il problema però è un altro: è il mercato che è cambiato. Se qualcuno ti commissionasse ancora i lavori che giravano 15 anni fa, potresti benissimo svilupparli ancora con Clipper, chi te lo impedisce?
In vece li vogliono come li vogliono ora, quindi rimboccarsi le maniche ed adeguarsi al mercato , sennò si resta senza commesse!
Ciao
5 messaggi dal 02 giugno 2012
Ciao!
hai proprio ragione.. oggi vogliono i giochini elettronici con la grafica 3d per inserire un Cliente in Aangrafica.

Mi sembra che esista un compilatore openSource di Clipper che si chiama 'Harbour Project' ed è molto attivo.

Il problema è la programmazione asp.net. E' davvero molto povera per il dataEntry.


Proprio vero, parole sante, come FARLO? e non COSA fare?


Buon codice
Max
Modificato da aspmaxsoft il 04 giugno 2012 16.10 -
aspmaxsoft wrote:
I giovani programmatori 'mangiano' da sempre pane duro di 2 settimane perché non hanno mai assaggiato il pane appena sfornato, non hanno proprio idea del sapore che abbia.

mah, parlare di Cobol o RPG come pane appena sfornato mi pare veramente eccessivo. btw, volendo puoi fare tutto con mezza di riga di codice anche oggi. guarda Entity Framework e ASP.NET MVC, in 2 secondi hai una form per il data entry. il problema è che è quello, una form per data entry, che è molto diverso da fare un'applicazione manutenebile. altrimenti non si capisce perché la gente scappi da quelle situazioni...
.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.