Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Una curiosità sulla programmazione oggi.

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto UtenteMassimoB

0
voti

[81] Re: Una curiosità sulla programmazione oggi.

Messaggioda Foto Utentevenexian » 8 nov 2018, 23:32

Qualche giorno fa parlavo con il responsabile dell'ufficio progetti (intesi come progetti per i loro clienti) di una grande azienda di costruzione e installazione impianti.
Hanno il problema della gestione delle offerte che sono estremamente articolate a causa dell'immensa vastità delle varianti dei dei loro prodotti e dell'eterogeneità delle installazioni.
Ho spiegato loro che devono aprire un progetto distinto per la creazione di un software specifico per questa funzione.

Parlando in modo generico delle specifiche, ho fatto a loro una delle domande che per me sono fondamentali prima di iniziare solo a parlare di un tale progetto: 'quanto deve durare il programma?' Specificando, 'se entrasse in funzione il primo gennaio prossimo, per quanto tempo sarebbe un 'asset' di valore per l'azienda? Un anno? Tre? Dieci?
Non mi hanno saputo rispondere se non con una risposta come 'indefinitamente, fino a quando serve'.

Con queste premesse è impossibile pensare a un piano di aggiornamento, manutenzione, trasportabilità tra sistemi operativi, giusto per dire le prime cose che vengono in mente. E' impossibile di conseguenza stabilire le dimensioni del gruppo di lavoro e la piattaforma di sviluppo. Non si può stabilire il costo di investimento e di utilizzo.

Ciò che probabilmente farà l'azienda sarà assumente un 'esperto informatico' che scriverà questo programma, con l'obiettivo di farlo 'il meglio possibile, nel più breve tempo possibile'.
Come pensate agirà? Pianificherà lo sviluppo e i test delle librerie o inizierà a fare qualche bella schermata di effetto (magari utilizzando qualche libreria 'open source')?

Io conosco la risposta.
Immagine
Avatar utente
Foto Utentevenexian
5.628 2 4 7
Master
Master
 
Messaggi: 2012
Iscritto il: 13 mag 2017, 10:07
Località: Venezia (ma va?)

0
voti

[82] Re: Una curiosità sulla programmazione oggi.

Messaggioda Foto UtenteDarwinNE » 9 nov 2018, 0:37

Sulla programmazione, oggi ho sentito dire che uno dei paradigmi presi molto sul serio è il "test driven development", che vuol dire partire da delle specifiche, scrivere un test per vedere se le specifiche sono soddisfatte, e poi solo alla fine scrivere il codice che deve superare i test.

Nel caso ideale, si finisce per avere programmi complessi scritti a moduli molto ben definiti, descritti e con migliaia di test a disposizione che possono girare in automatico ogni volta che si cambia qualcosa. In teoria, bug ed effetti collaterali possono essere scoperti molto efficacemente perché in pratica coi test si evita di ripetere errori già corretti in passato e non si rischia di "finire fuori specifica".

Nel caso reale, non tutto è così semplice, da quello che ho capito non sempre è facile scrivere delle specifiche non ambigue ed utili e non è facile sempre scrivere dei test automatici rapidi ed efficaci che ne coprano l'insieme. Per esempio, come faccio a testare in automatico un programma basato su una GUI? Si può simulare il click di un mouse ed una certa sequenza di operazioni, ovviamente, ma non è banale fare dei test veramente efficaci ed omnicomprensivi.
Follow FidoCadJ development on Twitter: https://twitter.com/davbucci
Avatar utente
Foto UtenteDarwinNE
24,8k 5 11 13
G.Master EY
G.Master EY
 
Messaggi: 3441
Iscritto il: 18 apr 2010, 9:32
Località: Grenoble - France

1
voti

[83] Re: Una curiosità sulla programmazione oggi.

Messaggioda Foto Utentewruggeri » 9 nov 2018, 1:23

Nell'ambito dell'ingegneria del software, l'utilizzo di COTS ("components off-the-shelf", roba già pronta) è ovviamente diffusissimo e molto discusso, e ci sono vari articoli molto interessanti al riguardo (giusto per proporre qualche esempio: [1] [2] [3] [4]). La pratica, come già evidenziato, è molto discussa, perché l'integrazione intelligente di componenti già esistenti richiede non solo la loro comprensione (a volte anche ad un livello molto profondo), ma a tutti gli effetti la costruzione di nuove metodologie e nuovi processi di sviluppo del software (dove con "software" si intende non solo il programma in sè, ma anche tutto ciò che viene prima e dopo: i documenti di specifica, la piattaforma di testing, il sistema di manutenzione e aggiornamento...); come succede in molti casi, comunque, mentre le persone competenti discutono i praticoni partono e fanno cagate.

Circa il discorso accennato già da Foto UtenteDarwinNE, si potrebbero scrivere interi trattati (e in effetti sono stati scritti): la redazione delle specifiche è un aspetto molto delicato del processo di sviluppo del software, perché occorre ridurre al minimo le ambiguità (non sempre fattibile: il linguaggio naturale è ambiguo per natura, e i linguaggi formali non sono adeguati alla descrizione di certe cose) e garantire la completezza delle specifiche (partiamo da un presupposto: se escludiamo i metodi agili - che mi rifiuto categoricamente di discutere per motivi evidenti a chiunque abbia letto questo capolavoro - praticamente qualsiasi processo di sviluppo utilizza il documento di specifica come base principale nel design del software), e inoltre ogni tipologia di requisito ha esigenze di specifica ben precise (di ogni requisito non funzionale, ad esempio, va garantita la misurabilità: "il software deve essere facile da usare" non è un requisito valido), spesso le varie parti coinvolte nello sviluppo (programmatori, analisti, committenza, utenti finali...) presentano richieste contrastanti, in certi ambiti requisiti ulteriori risultano dagli obblighi normativi o dalle specificità del dominio di applicazione... non si tratta di un compito facile, insomma, tant'è che sono stati sviluppati metodi appositamente destinati alla revisione dei documenti di specifica (una breve presentazione di alcuni di essi è disponibile in questo testo).

Andando infine al discorso relativo al testing, anch'esso citato da Foto UtenteDarwinNE, il panorama è ancora più complesso, perché le difficoltà che si incontrano nella progettazione di test suite complete ed efficaci non sono poche, e a volte non è nemmeno detto che certi obiettivi nell'ambito della verifica del software siano raggiungibili (le quali cose, tanto per cambiare, hanno spinto e continuano a spingere molti faciloni a risparmiare non facendo i test... o progettando prima i test e poi scrivendo il software con il solo intendo di farglieli superare, che come giustamente notato dal professor Meyer in uno dei riferimenti bibliografici che ho fornito prima è una stronzata clamorosa). Ora, non ho la pretesa di scrivere qui un trattato su verifica & validazione del software (anche perché non sarei in grado), ma giusto per fugare ogni dubbio circa la difficoltà della cosa voglio evidenziare che esiste un teorema, il cosiddetto "teorema di Howden", il quale stabilisce (in termini approssimativi) che è sostanzialmente impossibile progettare un algoritmo che selezioni un numero finito di casi di test per comporre una test suite "perfetta" (per gli interessati, di questa cosa si sono occupati vari autori, come ad esempio Goodenough e Gerhart e Weyuker e Ostrand).
Rispondo solo a chi si esprime correttamente in italiano.
Se non conosci un argomento, non parlarne.
Gli unici fatti sono quelli dimostrabili, il resto è opinione.
Non dirò una parola sulla politica e sul M5S, del quale aspetto solo l'estinzione.
Avatar utente
Foto Utentewruggeri
4.250 1 6 13
Expert EY
Expert EY
 
Messaggi: 817
Iscritto il: 25 nov 2016, 18:46

0
voti

[84] Re: Una curiosità sulla programmazione oggi.

Messaggioda Foto UtentePiercarlo » 9 nov 2018, 2:45

EdmondDantes ha scritto:Che intendi, Foto UtentePiercarlo? (...)
Non sa come e' stata scritta questa funzione (non e' in grado di capirlo, ammettiamo anche questo aspetto). Sa che con quelli ingressi otterrà quell'uscita. Non puo' riutilizzare quel codice gia' scritto?


Altri hanno già approfondito il discorso meglio di me. Mi rendo conto che il paragone con Spice è giusto e sbagliato nello stesso tempo. È giusto nel senso di ribadire il concetto che, prima di metter le mani su qualcosa, occorre possedere le conoscenze (ufficiali o ufficiose non importa; l'importante è che ci siano) per farlo con cognizione di causa.

È però sbagliato da un altro punto di vista: la rigidità dell'applicazione delle regole per decidere "chi può" e chi no. In spice (soprattutto nel formato usato oggi, completo di schematic editor e il resto) il rigore va imposto in qualche modo proprio perché ormai si è ridotto a un giocattolo usabile anche da sprovveduti con solo una infarinatura neppure troppo approfondita del know-how da acquisire per usarlo con profitto - e questo perché spice può dare l'illusione di far funzionare qualche costrutto che in realtà poi non funziona - e può darla proprio perché è un simulatore.

La programmazione invece, per sua natura, è un qualcosa che può sì funzionare male ma certo non può funzionare per caso come certe volte avviene con spice e quindi, in un certo senso, è "autocensurante" rispetto al tipo di utente che può per così dire "uscirne vivo" dallo smanettare sui programmi: se sbagli nel "giocare" e non sai come uscire dai guai quando poi succedono, butti via il tuo tempo, spesso pure il programma e qualche volta addirittura la macchina se ti viene l'uzzolo di andare a pasticciare sul suo sistema operativo.

Detto questo va ora rilevato che, allo stato attuale delle cose, i dettagli di funzionamento di un programma e delle parti che lo compongono possono essere (e spesso sono) praticamente ingestibili e pertanto inaccessibili anche al programmatore professionista che, se vuol andare a casa alla sera, deve prendere i codici prodotti da altri così come sono e fidarsi del loro lavoro senza poterlo veramente analizzare a fondo (a meno di non impiegare una montagna di tempo che finirebbe per essere poi non remunerabile), cosa che viene ormai fatta solo in casi in cui non se ne può fare a meno, cioè per programmi di cui occorre avere la certezza pressoché assoluta del loro funzionamento, costi quel che costi.

Insomma, bisogna fare di necessità virtù e accontentarsi dei propri limiti stando ben attenti a non accontentarsi o fidarsi troppo. E non sto parlando di un programma da ufficio di grafica in cui un bug viene al più salutato da un "porca t....!" e amen ma di programmi i cui malfunzionamenti possono avere, dirette o indirette, conseguenze costose o addirittura fatali per l'utilizzatore.

Nel 2007 è uscito presso Addison Wesley un libro (che ormai dovrei rileggere, che non mi ricordo più un amen) "Geekonomics. The real cost of insecure software" di David Rice che dovrebbe parlare proprio di questo.
Avatar utente
Foto UtentePiercarlo
20,7k 5 10 13
G.Master EY
G.Master EY
 
Messaggi: 5560
Iscritto il: 30 mar 2010, 19:23
Località: Milano

1
voti

[85] Re: Una curiosità sulla programmazione oggi.

Messaggioda Foto UtentePiercarlo » 9 nov 2018, 3:34

Preciso a scanso di equivoci: non solo NON sono un programmatore ma i miei "giochi" in merito risalgono ormai a un buon quarto di secolo fa, quando tempi di vita e stipendi erano (almeno per me) abbastanza decorosi. La programmazione e i computer mi interessano oggi come allora ma sono e rimango un hobbista... :D ;-)
Avatar utente
Foto UtentePiercarlo
20,7k 5 10 13
G.Master EY
G.Master EY
 
Messaggi: 5560
Iscritto il: 30 mar 2010, 19:23
Località: Milano

0
voti

[86] Re: Una curiosità sulla programmazione oggi.

Messaggioda Foto Utentesebago » 9 nov 2018, 18:38

Piercarlo ha scritto:Forse devi dare una pulitina alle orecchie... o agli occhiali.

Non ho mai detto né pensato che tu non fossi d'accordo.
Ecco, se gli occhiali te li cambi del tutto è meglio.
Sebastiano
________________________________________________________________
"Eo bos issettaìa, avanzade e non timedas / sas ben'ennidas siedas, rundinas, a domo mia" (P. Mossa)
Avatar utente
Foto Utentesebago
14,4k 3 10 13
G.Master EY
G.Master EY
 
Messaggi: 1945
Iscritto il: 1 apr 2005, 19:59
Località: Orune (NU)

0
voti

[87] Re: Una curiosità sulla programmazione oggi.

Messaggioda Foto Utentearkeo2001 » 9 nov 2018, 18:54

Piercarlo ha scritto:La programmazione invece, per sua natura, è un qualcosa che può sì funzionare male ma certo non può funzionare per caso come certe volte avviene con spice e quindi, in un certo senso, è "autocensurante" rispetto al tipo di utente che può per così dire "uscirne vivo" dallo smanettare sui programmi: se sbagli nel "giocare" e non sai come uscire dai guai quando poi succedono, butti via il tuo tempo, spesso pure il programma e qualche volta addirittura la macchina se ti viene l'uzzolo di andare a pasticciare sul suo sistema operativo.


Sicuro sia così? A me pare che non ci siano grosse differenze tra spice, programmare e - a titolo personale - quello su cui mi sto dannando ora, HFSS. Basta un niente e non funziona più nulla; sì, è vero che le probabilità di avere un risultato "a caso" sono molto più alte con un simulatore di circuiti piuttosto che scrivendo codice ma all'atto pratico secondo me cambia poco. In tutti i casi serve più conoscenza di quella che è stata codificata nello strumento che si sta usando (ovviamente non parlo di dover sapere scrivere un compilatore ma è facile avere esempi della quantità di cose che serve sapere sull'hardware per scrivere bene).

Sul SO devi avere sulle tue macchine non so cosa per poterle danneggiare via software :D I livelli bassi non sono più accessibili dal programmatore il che tra parentesi mi dispiace perché ricordo benissimo che si poteva usare il puntatore alla memoria della scheda video e ci scrivevo direttamente. Bei tempi, oggi impensabili :D
--
Avatar utente
Foto Utentearkeo2001
255 1 5
Frequentatore
Frequentatore
 
Messaggi: 186
Iscritto il: 1 ago 2012, 9:12

0
voti

[88] Re: Una curiosità sulla programmazione oggi.

Messaggioda Foto UtentePiercarlo » 9 nov 2018, 22:03

arkeo2001 ha scritto: Sul SO devi avere sulle tue macchine non so cosa per poterle danneggiare via software :D I livelli bassi non sono più accessibili dal programmatore il che tra parentesi mi dispiace perché ricordo benissimo che si poteva usare il puntatore alla memoria della scheda video e ci scrivevo direttamente. Bei tempi, oggi impensabili :D


Segno che qualcuno nel frattempo ha imparato la lezione: mai lasciare i bambini giocare con cose pericolose! :D Nonostante tutto non sarei proprio così ottimista... Nemmeno con spice (che peraltro ho lasciato perdere da un po' proprio perché bisogna saperne più di quel che immaginavo per non farsi fregare).
Avatar utente
Foto UtentePiercarlo
20,7k 5 10 13
G.Master EY
G.Master EY
 
Messaggi: 5560
Iscritto il: 30 mar 2010, 19:23
Località: Milano

0
voti

[89] Re: Una curiosità sulla programmazione oggi.

Messaggioda Foto Utentearkeo2001 » 9 nov 2018, 22:12

Certo che così distruggi il poco di elettrofiducia in me stesso che mi è rimasta, tu passi per una persona che la sa abbastanza lunga e le cose son due; hai una visione esatta della modellazione e allora non mi resta che disinstallare qualche GB di software oppure la tua valutazione è poco realistica e sei finito a pensare che spice sia difficile perché ti interessa fare altro ma in realtà non è così difficile. Ovviamente spero nella seconda :D

Poi è chiaro tutto sta in un misto tra difficoltà del problema e bravura. Un ricordo molto vivo che mi è rimasto è che un mio professore una volta dovette affrontare un problema di topografia. Alcuni punti erano dati e si dovevano aggiustare punti all'interno del perimetro per far tornare certe distanze. All'epoca niente Matlab ma si affacciavano i primi software di analisi di strutture. Ebbene fece un modello con tante bielle vincolate nei punti che dovevano restare fissi e impose al programma di trovare la configurazione con allungamenti iniziali dati e calcolati trasformando i vincoli del problema originale in allungamenti. Insomma, una ragnatela elastica e il problema venne risolto alla grande. Cerco sempre di ricordarmi di quell'episodio quando penso ai modelli e al fatto di saper usare i programmi! Uno bravo cava davvero il sangue da una rapa di software.
--
Avatar utente
Foto Utentearkeo2001
255 1 5
Frequentatore
Frequentatore
 
Messaggi: 186
Iscritto il: 1 ago 2012, 9:12

0
voti

[90] Re: Una curiosità sulla programmazione oggi.

Messaggioda Foto UtentePiercarlo » 9 nov 2018, 22:13

sebago ha scritto: Non ho mai detto né pensato che tu non fossi d'accordo.


Allora dillo esplicitamente prima: la telepatia non esiste, tantomeno via internet. A parte questo, che le mie idee (perché sono in ogni caso mie) possano assomigliare a quelle di qualcun altro proprio non me ne importa nulla... Se per me sono giuste, somigliassero pure alle idee di Hitler (non è questo il caso, tranquillo) lo rimangono fintanto che qualcuno non mi convince, argomentando, del contrario.

Per me incidente chiuso.
Avatar utente
Foto UtentePiercarlo
20,7k 5 10 13
G.Master EY
G.Master EY
 
Messaggi: 5560
Iscritto il: 30 mar 2010, 19:23
Località: Milano

PrecedenteProssimo

Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti