Il tavolo del programmatore

Il tavolo del programmatore
Mentre un mezzo lungo lungo mi conduce si proprie strade verso una kocalità che parrebbe la mia meta ponzo, ponzo, e riponzo ad un consiglio inviato sul presente forum giorni fa: scrivere un threed semplice semplice contenente regole base di programmazione C.
Tale idea può, a mio parere, essere divisa in molte parti. E mentre le metto a fuoco tutte nel mio stanco cervello comincio a scrivere la prima di esse.
La prima cosa da approntare per programmare un Arduino é, cone da titolo, il tavolo da lavoro. Ed in questa discussione vorrei che si radunino tutti i consigli riguardanti quello che, usato in quantità non corretta, può rovinare completamente un progetto.
Apro questa discussione con la mia lista personale di cose da avere per aiutarsi in un progetto.
La prima cosa é ... Il progetto stesso. Prima di cominciare un lavoro é necessario capire esattamente cosa esso debba fare, cosa richiede, cosa "emette", come manipola. Queste informazioni vanno chiarite prima di iniziare e vanno mantenute inalterate per tutto il corso del progetto. La chiarezza e la semplicità della descrizione del progetto porta a facilitare la sua realizzazione, perché risolvere un problema con un programma C si può fare traducendo letteralmente la descrizione del problema in C.
Sul tavolo é anche necessario avere tempo, esso non deve essere fattore limitante. Il tempo serve per pensare, guardare, informarsi e imparare. I limiti di tempo sono la seconda cosa da sapere, e la data di fine non va mai, per nessuna ragione, anticipata. Se all'inizio sei alle strette con il tempo... rinuncia al progetto, non ci esci più e prima di scoprirlo fai scendere i santi del paradiso uno dopo l'altro.
Terza cosa che fa aprte del tavolo del programmatore é una persona che non ne sa nulla, ne di C, ne di Arduino, ne del progetto. Egli va posto a debita distanza durante le fasi di lavoro, ma il suo intervento può rivelarsi provvidenziale per reinventare, ripensare, semplificare e rinvenire cappellate effettuate nelle fasi di lavoro precedenti.
Ulteriore cosa che é necessario avere sempre sotto mano, nel momento stesso in cui si apre l'ide di Arduino, é un buon manuale di C del quale avvalersi, almeno in un primo momento, allo scopo di imparare la sintassi delle funzioni e il loro uso.
Altro materiale indispensabile per la programmaxione é costituito da un blocco di comune carta unito ad una o più penne o matite che scrivano. Materiale indispensabile per prendere appunti del progetto e capire come esso può funzionare. Alla fine il significato del programma e quello degli appunti devono combaciare.
Inoltre nel monento della creazione del progetto é necessario avere il circuito hardware completato, e conoscere come, in modo semplice inseribile in una funzione (altra unità base della programmazione). Se si ha, infatti, l'insieme dei componenti preparato e pronto nella sua forma definitiva si può accertare la presenza di problemi, evitando cose tipo "sul simulatore funzionava, ora non più". Inoltre se ai vari componenti corrispondono delle funzioni risulta molto più facile utilizzarli, e più ridotti gli errori relativi.
Infine su un tavolo da programmatore, in senso lato, credo sia necessario avere anche una seconda copia dell'ultima versione funzionante del codice, dalla quale partire e ripartire in caso di problemi insolubili.
Ed ora viene la domanda: avete altri oggetti da mettere sul tavolo?
Ed ora viene anche quel posto che sibriteneva la mia meta, e che conviene io continui a ritenere tale

1 ) sedia comoda o poltrona imbottita
2 ) caffe'
3 ) caffe'
4 ) caffe'
5 ) barrette energetiche
6 ) ancora caffe'
7 ) (opzionale) un litro di caffe'
8 ) penne relativamente morbide (per non rischiare un dente quando le si morde sovrappensiero)
9 ) tranquillanti (troppo caffe' rende nervosi :P)

(scusa, non ho resistito :D)

Per tua stessa ammissione non sei programmatore, quindi parli per sentito dire?
O hai estorto qualche confessione?

Se dici a me, ho fatto un parallelo con quello che mi viene utile tutte le volte che devo inventarmi un circuito da zero per realizzare un prototipo di qualche tipo ... piu o meno :smiley:

(a parte i tranquillanti, che io non uso mai ... li sostituisco con un'altro caffe' :smiley: :smiley: :D)

Etem e Standardoil ...
... NON riminciate a spammare anche su questo thread o questa volta ... mi tocca prendere provvedimenti ... >:(

Guglielmo

Tranquillo, era solo una battuta ... cancella pure tutto se preferisci ...

Io mi trovo bene con fogli quadrettati da cinque millimetri, dato che ho una grafia schifosa mi "impongo" di scrivere abbastanza nei quadretti.
Ci sarebbe l'utilità di avere a portata di mano un "reference" del linguaggio usato, possibilmente cartaceo, per fugare dubbi e perplessità.

Vi è un'altra cosa di cui si ha bisogno da mettere sul tavolo del programmatore: il desiderio, espresso non tanto come punto irrealizzabile, ma come concreta voglia di fare, di mettersi in gioco, di superare i limiti, di vedere le cose in un modo diverso, sempre.
Il desiderio spinge a leggere, guardare, informarsi, chiedere e percorrere le strade proposte. Il desiderio spinge a trovare nuovi mezzi ed usate al meglio quelli che si hanno o che vengono forniti. Il desiderio porta ad impegnare le proprie energie verso i giusti traguardi, ed alla felicità quando gli si ottiene. Felicità che si colma aiutando gli altri in difficoltà e comunicando l'avanzamento dei lavori.
Se non si ha un pizzico di desiderio sul tavolo, allora risulta più conveniente e veloce utilizzare per i propri problemi le soluzioni già in commercio. Se si ha il desiderio, esso va seguito, prima che sparisca.

Armarsi di pazienza e togliere internet e le possibili soluzioni dal tavolo.
A volte per delle stupidaggini ci si blocca e si chiede un'aiuto al forum o a internet, finendo per copiare pezzi di codice senza aver fatto un ragionamento.
Io per esempio in questo momento vorrei usare un pulsante che se schiacciato normalmente mi fa una funzione, se invece lo tengo premuto per due secondi allora fa un'altra funzione; è magari una cavolata da fare ma devo pensarci su, scrivermi la funzione sul foglio, pensare a cosa potrebbe andare storto (per esempio se lo tengo premuto, la funzione che di solito parte con la pressione del tasto continua a ciclare finché non stacco il tasto dopo due secondi) e infine scrivere il codice. Ma ci vuole molta caparbietà per farlo da soli cercando il minor aiuto possibile, solo così si può imparare qualcosa.

Scusate se io, nuovo di questo mondo, mi sono intromesso nella discussione, ma ho visto che le cose si facevano filosofiche e quindi...

Comunque secondo me sul tavolo del programmatore, visto che si parlava di hardware già pronto, bisogna inserire anche tutti i macchinari per fare PCB e stampante 3D, così da fare il circuito velocemente (soprattutto modificarlo se si notano dei problemi) ed eventualmente costruire il case su misura.

ricki158:
... tutti i macchinari per fare PCB e stampante 3D ...

Ehm ... quello casomai alla fine ... semmai, scheda di prototipazione ed alcune breadboard (anche una quindicina, se siete come me', piu "hardwaristi" che programmatori ;)) per testare modifiche al volo (a volte una riga di software risolve problemi piu complessi a livello hardware, ma e' anche vero che altre volte un componente in piu ti elimina la necessita' di parecchio casino software, vedi ad esempio i debounce su molti ingressi o su ingressi che gestiscono interrupt)

E, suggerirei, almeno due schedine di prototipazione, che siano Arduino o altro poco conta ... perche' il fantasma di Murphy e' sempre in agguato, e dover fermare tutto per andare a comperare una seconda scheda quando la prima si e' bruciata a causa di un corto involontario, e' abbastanza frustrante, e rischia di farvi dimenticare quell'idea migliore che vi era appena venuta per risolvere il problema dello sketch che non girava ... puo sembrare una battuta, ma non lo e', succede anche troppe volte ...

Dover tutte le volte "riscoprire la ruota" potrebbe non essere gratificante. Ovvero anche se non siè professionisti può essere molto utile avere dei "mattoncini" per semplificare il classico led che lampeggia o il pulsante da schiacciare.

Concordo, sarebbe utile avere un circuito base pulsante/led che simuli il comportamento reale. Grazie del consiglio, comincerò ad applicarlo

Altro elemento fondamentale da avere SEMPRE sul tavolo quando si parla di pulsanti: il fantomatico debounce hardware!!! E via una caterva di casini e di rotture di gabbasisi

Silente:
E via una caterva di casini e di rotture di gabbasisi

Cabbasisi ... con la 'C' non con la 'g' !!! :smiley:

Guglielmo