Domanda agli esperti

Buongiorno.

Ho una domanda così per curiosità.
Visto che Arduino ha la possibilità di essere collegato a centinaia di sensori e a sua volta ci sono centinaia di librerie, quando si arriva ad un livello di conoscenza dell'ide e del linguaggio di programmazione molto alto, chi è da tanto tempo che fa teoria e partica ricordate tutto a memoria le inizializzazioni, le librerie da aggiungere,le giuste variabili da inserire, tutti i parametri da aggiungere ecc?
O comunque anche ad un certo livello di esperienza si fa sempre riferimento agli esempi che le librerie offrono?

Ripeto che è una mia curiosità per capire che tipo di conoscenze deve acquisire un appassionato di arduino.

Vi ringrazio del vostro tempo.
Buona giornata a tutti.

Si sa conosce tutto a memoria, certo.. :slight_smile:

In pratica, è sempre utile rivedere la documentazione se non si è usato un modulo o una libreria da tanto tempo, e se non c'è documentazione, allora gli esempi o il codice sorgente sono anche fonti d'ispirazione.

1 Like

Un occhiata agli esempi e, ancor più ai sorgenti delle librerie, è praticamente sempre d'obbligo :wink:

Poi uno parecchie cose se le ricorda, ma ... datasheet e sorgenti di ciò che si usa ... devono sempre stare a portata di mano :grin:

Guglielmo

1 Like

C'è sicuramente una componente soggettiva, cioè chi ha buona memoria fotografica è avvantaggiato. Poi dipende quanto codice scrivi, più scrivi più ricordi di avere scritto. Dall'altro lato, non puoi conoscere tutte le librerie che ci sono in giro per la rete, alcune sono specifiche per il campo di applicazione, es: autenticazione, sismologia, misure, automazione, dispositivi di interazione (display, touch, tastiera, ecc) e in questo caso fa fede il codice della libreria, gli esempi di codice e la documentazione ufficiale del chip (sensore).

C'è forse la necessità di fare la differenza tra appassionato di arduino e appassionato di elettronica, informatica, matematica, fisica, chimica, siderurgia, ecc. Quest'ultimo vede arduino come uno dei tanti modi per esprimersi, mentre l'appassionato "di arduino" ha una visione limitata al solo arduino.

Inoltre l'appassionato delle varie materie si trova avvantaggiato, poiché aprendo un manuale tecnico o la documentazione di una libreria ecc sa più o meno cosa si troverà a leggere, ad esempio ha già una maturata esperienza con i grafici, con le unità di misura.

Il principiante assoluto
Il principiante assoluto non ha alcuna conoscenza a cui aggrapparsi per auto insegnarsi. In particolare con arduino il principiante si ritrova a dovere studiare elettronica di base, informatica di base, programmazione, ingegneria del software, progettazione, ecc. In sostanza il percorso del principiante assoluto è il più duro e ripido che io possa immaginare, però c'è un vantaggio ed è che il principiante non ha idea dell'impegno che gli è richiesto ed bene che non abbia contezza, diversamente rinuncerebbe di fronte all'immane compito che lo aspetta. Dall'altro lato della medaglia con la faccia bella, ci sono le comunity, arduino, i progetti finiti, tutorial e risorse online gratuiti, tante librerie, tante breakout pronte da acquistare e collegare, con cui sperimentare.

PS: già riuscire a comprendere sperimentandolo cosa c'è scritto su un libro dedicato al C/C++ è un bel traguardo che una volta raggiunto funge da punto cardine, e il principiante assoluto cessa di essere principiante assoluto.

Ciao.

1 Like

dico la mia anche se non posso essere incluso nella categoria degli "esperti".
io direi l'esperto più che ricordarsi tutto (che come dice Maurotec...è una caratteristica soggettiva) analizza il progetto su cui sta lavorando, definisce gli obbiettivi ed individua le criticità, valuta i mezzi a disposizione quindi pensa/sviluppa strategie per gestire il tutto...forse a volte si deve vedere più di una libreria per la stessa "cosa" in quanto alcune possono dare info o fare azioni che altre non fanno...e/o modificarle per avere quello che serve...altre volte, quando esce una "novità" deve studiare anche lui da zero.
il "buon principiante" sa di ignorare molti aspetti/implicazioni di quello che vorrebbe fare e per questo sa che deve studiare, provare..e così scopre quello che non sapeva prima...colmando la lacuna ove serve.
il "gundamaro" pensa che, avendo ricopiato uno dei vari "hello world", non serve altro...e finchè non scrive altro resta nella sua convinzione.

in conclusione (la mia)...se si vogliono risultati si deve considerare l'approccio "lifelong learning"...diversamente...resti dove sei.

1 Like

Grazie Mauro.

Infatti intendevo prettamente a librerie riguardo a sensori come display, servo, ultrasuoni ecc.
Però avere una memoria fotografica magari si aiuta ma a me più che la memoria fotografica interessa assimilare il concetto, e ricordarmi che una determinata libreria per un determinato sensore si scrive in un determinato modo perché ho capito come funziona e non perché l'ho scritto svariate volte ed ho una buona memoria fotografica, questi è quello che vorrei imparare col tempo.
Ed aggiungo che sto seguendo un corso online su udemy di sola programmazione "base" di c++, proprio perché oltre all'interesse di Arduino sono molto interessato ed affascinato al mondo della programmazione e al mondo dell'informatica oltre a quello dell'elettronica alla quale ho acquistato vari libri sull'elettronica di base, libro su transistor, libro su porte logiche e libro sui circuiti integrati.
E tutto questo insieme so che mi aiuta di più anche se in effetti e più complicato assimilare tutto insieme perché sono tante informazioni da ricordare ed assimilare insieme..

Allora anche i più bravi sbirciano :joy:

Dico anche io la mia sperando di darti qualche spunto di riflessione utile.

Io sono abituato a scrivere codice in linguaggi ed ambienti di sviluppo molto diversi tra loro come ad esempio può essere un semplice sistema a PLC oppure un'applicazione per PC e per questo motivo tendenzialmente evito proprio di imparare cose a memoria, anche se inevitabilmente a forza di scrivere poi qualcosa rimane e il più delle volte diventa un problema perché ad esempio mi ritrovo a scrivere codice Javascript quando dovrebbe essere C++ o cose del genere.

Questa mi sembra la descrizione migliore di ciò che andrebbe fatto:

1 Like

No purtroppo o per fortuna, poiché esistono più classi C++ (o arduino lib) per lo stesso display, ogni sviluppatore decide quanti e quali costruttori implementare, quali nomi dare ai metodi ecc. Ad esempio la lib GFX di adafruit è diversa da u8g2 e con entrambe puoi scrivere sul display SSD1306 e molti altri. Ecco che la memoria fotografica è l'unica risorsa. Ad esempio io odio le funzioni e costruttori con più di 3 argomenti, proprio perché se anche li scrivessi io dopo poco farei confusione sulla sequenza corretta degli argomenti. Ecco che la documentazione del codice è fondamentale. Poi considera che l'ide arduino non fornisce aiuti al programmatore, mentre altri IDE ti danno dei suggerimenti mentre scrivi, in sostanza durante la scrittura di una chiamata a funzione o costruttore ti compare un suggerimento che ti mostra il/i vari prototipi con la sequenza degli argomenti.

Ottimo, grazie alle competenze acquisite sul linguaggio puoi studiare il codice delle librerie e immedesimarti in chi le ha sviluppate, approvando o meno le scelte che questi hanno fatto.

La passione rende incoscienti e ti fa vincere sfide personali che non avresti mai intrapreso senza la passione.

Ciao.

1 Like

:grin:

Guglielmo

3 Likes

Ricordo un tempo in cui si potevano tranquillamente imparare a memoria tutte le istruzioni di un linguaggio, e in cui imparare cose nuove era di una facilità sorprendente. Adesso le cose sono talmente tante e interconnesse (tra librerie, funzioni di terze parti, nozioni multidisciplinari) che non lo ritengo più possibile. E poi, con l'avanzare del tempo, e del memory leak biologico :roll_eyes: , sono passato sempre più al saper come (ri)cercare, che al saper ricordare :roll_eyes: :roll_eyes: Le IA adesso completeranno l'opera, dispensando pian piano anche dal ricercare...

Al di là di tutto questo, ci sono concetti base che per forza vanno imparati, e che si continueranno ad approfondire per tutta la vita.

1 Like

Un mio professore alle superiori diceva che uno bravo non è quello che sa tutto a memoria, ma quello che sa sempre dove cercare quello che gli serve.
Vero o no io ho sempre tenuto fede a questa regola. Imparo pochissimo a memoria e ho sempre a portata di mano le "fonti" su cui cercare.

3 Likes

Ormai non si può più conoscere tutto, sia per la vastità delle informazioni necessarie, sia perché avvengono cambiamenti, aggiornamenti, variazioni e si aggiungono nuovi prodotti. Quello che veramente serve è avere solide basi di elettronica e di programamzione e la capacità di reperire, comprendere e applicare le informazioni.

3 Likes

Il tuo prof era "avanti"

E tu anche

1 Like

Bellissimo il mondo del PLC, mi sarebbe sempre piaciuto imparare e perché no intraprendere questo percorso come lavoro, ma purtroppo per l'età che ho inizierei troppo in basso..
Si anche io preferisco non imparare a memoria anche se qualcosa poi ti viene automatico ma preferisco sapere come muovermi perché so cosa devo fare.

Cosa intendi?

Nel senso che quando ti serve una libreria o una determinata funzione la ricerchi più che ricordartelo?

Applicare le informazioni al programma una volta consultata la libreria?

Più genericamente, applicare le informazioni che sono state trovate, che può anche essere semplicemente un'istruzione in C.

Con una IA ti fai fare una breve relazione sull'argomento desiderato, senza andare a cercare link e documenti da leggere su quell'argomento (magari anche da tradurre). Poi valuti se la risposta è sensata, chiedi chiarimenti o approfondimenti, confronti la risposta anche di altre IA (ciascuna "spiega" in modo diverso), e verifichi la correttezza sulle fonti ufficiali. Ma, facendo una domanda chiara e contestualizzata, l'idea di massima (sintesi) dei punti fondamentali la traccia già l'IA, esattamente come chiedere a qualcuno di più esperto accanto (ma che non si stanca mai). In tanti casi l'IA fornisce anche un esempio (sempre da valutare cum grano salis!) e anche già i link diretti alle fonti. In ogni caso va ricordato che la risposta di una IA (o dell'"esperto" di turno) è solo un'ipotesi su cui ragionare, non un fatto di cui fidarsi ciecamente.

Devo sapere che c'è una certa libreria o funzione, cosa può fare, a cosa mi può servire, dove la trovo e dove trovo la documentazione. Magari ci faccio qualche test per avere la certezza di saperla "guidare", ma poi i singoli dettagli (che a volte sono letteralmente centinaia di nomi, parametri ecc) ormai non ci penso neanche a "memorizzarli" (anche se fino a 40 anni mi illudevo ancora di potercela fare :roll_eyes:).