Secondo me sarebbe meglio che motivassimo le nostre indicazioni, altrimenti la discussione può assumere l'aspetto di uno scontro di posizioni "dogmatiche" e inamovibili, che creano confusione nell'OP, mentre non deve essere così.
Questo è un forum perciò le motivazioni non possono essere troppo estese (ci sono i libri per questo), ma cercherò di riformulare meglio qualcosa di quello che ho scritto prima.
huyol ha scritto:Per voi è meglio muovere i primi passi nella programmazione per PIC oppure per PC?
Io partirei dal PC, hai meno cose di cui preoccuparti.
huyol ha scritto:vorrei imparare a scrivere programmi sia per PIC sia per PC
Allora il punto d'arrivo può essere il
C per il PIC (e i microcontrollori in generale) e
Java per il PC. Senza escludere altre possibilità già menzionate, ma queste comunque sono buone.
Il
C ti permette un controllo della macchina molto dettagliato. Per un controllo ancora più spinto ci sono i linguaggi Assembly (uno per famiglia di micro), ma si preferisce usare il C (è più portabile da una famiglia all'altra, ci si mette meno tempo a scrivere un programma e un lungo bla bla bla).
Il linguaggio
Assembly ha il suo fascino, permette/obbliga a conoscere a fondo la macchina, ma è indispensabile solo in casi rari per fare cose davvero toste. Lo lascerei da parte almeno all'inizio.
Java: molto più "pesante" del C (è più lento e soprattutto richiede più memoria, per questo per applicazioni embedded non si usa), è però più comodo per programmare su PC.
È un linguaggio a oggetti, mentre il C no. Per fare cose complesse è meglio usare il paradigma a oggetti. Aiuta a ragionare, a fare meno errori, a produrre programmi corretti, facilmente modificabili e manutenibili anche da altri.
Poi in Java si può fare più facilmente molta più roba che in C, dalla gestione delle stringhe, dell'interfaccia utente, all'accesso a database e a una quantità di librerie per fare di tutto.
Java ti apre la porta anche alla programmazione di app per dispositivi
Android (smartphone, tablet...), una possibilità da non disdegnare visto che è un settore in continua crescita.
La sintassi di Java è simile al C, quindi il primo impatto per chi sa il C è di vedere qualcosa di familiare. Certo per capire un programma scritto da qualcun altro bisogna studiarsi le classi e gli oggetti, che in C non ci sono. Ma ne vale la pena.
Per cose veloci e/o efficienti si può usare il C anche sul PC, ma è più scomodo specie per cose complesse. Quindi puoi cominciare col C anche sul PC e poi passare a Java quando ti sembrerà necessario.
huyol ha scritto:Tenete presente che come programmazione sono "a livello zero"
Ecco, per questo avevo consigliato il
Python per iniziare.
È un linguaggio abbastanza recente e chi l'ha inventato ha cercato di prendere il meglio dai linguaggi esistenti, eliminandone vari difetti.
La sintassi è semplice, non dissimile dal C, anche se con varie differenze migliorative.
È un linguaggio interpretato (a differenza del C che è compilato, e di Java che è un ibrido), quindi più immediato per fare prove, caratteristica utile per i principianti.
È un linguaggio a oggetti, quindi si può imparare questo paradigma, così poi sarà più semplice imparare Java, C++ e quant'altro.
Poi, conoscere un linguaggio di scripting (un linguaggio per fare rapidamente cose su PC) come Python può tornare molto utile.
Comunque, se vuoi, puoi provare a risparmiare tempo saltando il Python e buttarti subito sul C. È una decisione tua. Magari puoi provare col C e se l'impatto ti sembra troppo duro riprovare col Python.
È importante che tu scelga un buon libro di studio per ciascun linguaggio. E ovviamente che lo studi capitolo per capitolo e nel contempo fai i corrispondenti esercizi sulla "macchina", perché solo così, studiando la teoria e provandola in pratica, si impara a programmare.