Un'introduzione più delicata alla programmazione

Illustrazione di John Adesanya

Questo articolo contiene ciò che insegno quando ricevo richieste di coaching. Non passerò al codice o a un'impostazione di alcun tipo. Insegnerò concetti.

Se lavori in una società di sviluppo software come non programmatore, potresti chiederti cosa fanno i programmatori. E senti nuove parole d'ordine ogni giorno. Questo post è stato scritto pensando a te. Che tu sia un addetto alle vendite, un medico, un avvocato, un responsabile aziendale o un commercialista, se hai mai avuto in mente di imparare a programmare, questo è un buon punto di partenza.

Come è organizzato questo articolo

Questo articolo è diviso in 4 parti. Dopo aver letto ogni parte, troverai una sezione di quiz per aiutarti a ricordare meglio ciò che hai letto. Quindi troverai una sezione "andare avanti" e le risposte al quiz.

Si noti che ogni parola d'ordine introdotta in questa serie è in grassetto, come algoritmo.

Illustrazione di John Adesanya

Parte 1 - Che cos'è la programmazione?

Una semplice risposta sarebbe: "La programmazione è l'atto di istruire i computer a svolgere compiti". Viene spesso definito codice.

Allora, cos'è un programma per computer? Un programma per computer è una sequenza di istruzioni eseguite dal computer.

Computer nella definizione sopra è qualsiasi dispositivo in grado di elaborare codice. Potrebbero essere smartphone, bancomat, Raspberry Pi, server per citarne alcuni.

Una buona analogia per la programmazione

Innanzitutto, ci sono schemi per le nostre vite quotidiane. L'universo opera in modo alquanto prevedibile; Ad esempio: giorno e notte, stagioni, alba e tramonto. La gente passa attraverso routine come alzarsi la mattina, andare a scuola o al lavoro. Riceviamo istruzioni da altre persone come i nostri superiori al lavoro. Il modo in cui cuciniamo determinate ricette può essere spiegato in passaggi finiti.

In secondo luogo, ogni volta che utilizziamo dispositivi intelligenti, parte del codice viene eseguito in background. Spostare il puntatore del mouse da una parte dello schermo del computer all'altra può sembrare un compito semplice, ma in realtà sono state eseguite così tante righe di codice. Un atto semplice come la digitazione di lettere in Google Documenti comporta l'esecuzione di righe di codice in background. È tutto il codice ovunque.

I programmi per computer sono anche chiamati codice. Non usare la parola "codici" (il codice dovrebbe essere usato come un nome non numerabile). Ok, questa non è una lezione di inglese, torniamo al lavoro.

Il linguaggio naturale del computer

Le macchine hanno il loro linguaggio naturale come fanno gli umani. I computer non comprendono il linguaggio umano. Il linguaggio naturale dei computer è il codice binario - 1 e 0. Questi rappresentano due stati: on (1) e off (0).

Questo è il linguaggio naturale delle apparecchiature elettroniche. Sarebbe frenetico per noi come umani comunicare con il computer in binario.

Inserisci i linguaggi di programmazione

Per comunicare con macchine che parlano binario, lo facciamo in una lingua più vicina al nostro linguaggio naturale. Come inglese, francese, swahili o arabo. I linguaggi di programmazione sono vicini ai nostri linguaggi naturali. Ma sono più strutturati e devono essere approfonditi.

Potrebbero essere lingue di alto o basso livello. I linguaggi di programmazione di alto livello sono più lontani dal linguaggio della macchina rispetto ai linguaggi di basso livello. Questo "più lontano" di solito è chiamato un'astrazione, ma non entreremo in quello in questa serie. Non lasciamoci distrarre :)

Il computer ha bisogno di un modo per capire il nostro linguaggio umano. Per fare ciò, avremo bisogno di un traduttore.

Cosa sono i traduttori

Il codice sorgente si riferisce al codice scritto in un particolare linguaggio di programmazione. Più di questo nella parte 2.

I traduttori hanno la responsabilità di convertire il codice sorgente in linguaggio macchina. Questo è anche noto come binario. Ricorda quelli e gli zeri. Oggi possiamo riferirci ai binari come Codice oggetto, il Programma o una parola comune: App.

I traduttori possono essere uno dei seguenti:

  • interpreti
  • I compilatori
  • Un ibrido di interpreti e compilatori
  • assemblatori

interpreti

Alcune lingue sono interpretate. Il traduttore elabora il codice sorgente riga per riga ed esegue ogni riga nel programma o nell'app finale. Ciò significa che il codice sorgente interpretato inizia a essere eseguito fino a quando non rileva un errore. Quindi l'interprete si ferma per segnalare tali errori. Maggiori informazioni in dettaglio nella parte 3.

Python è un buon esempio di linguaggio di programmazione interpretato.

I compilatori

I compilatori funzionano in modo diverso. Convertono il codice sorgente nella sua interezza tramite un processo di compilazione in binario. Il binario viene quindi eseguito. Se si sono verificati errori nel codice sorgente, vengono rilevati durante il tempo di compilazione e contrassegnati. Ciò interrompe il processo di compilazione e non viene generato alcun file binario.

Gli interpreti traducono riga per riga ed eseguono la riga prima di passare alla riga successiva. I compilatori traducono tutte le righe di un programma in un file (binario) ed eseguono l'intero file.

Ricorda la definizione di programma per computer? È una sequenza di istruzioni che viene eseguita da un computer.

Un programma in esecuzione viene generalmente chiamato processo. Tali programmi utilizzano determinate risorse sul sistema informatico o sullo smartphone come memoria, spazio su disco e file system. Si può anche dire che un programma in esecuzione è in esecuzione.

Usiamo la parola "esegui" quando eseguiamo un programma per computer. Il tempo necessario per eseguire tali programmi è noto come runtime del programma.

È comune vedere programmi definiti app. Associamo inoltre programmi alle piattaforme o all'ambiente in cui vengono eseguiti o progettati per. Esistono app Web che vengono eseguite su browser Web, ad esempio Google Spreadsheet. Esistono app mobili che funzionano su smartphone come CandyCrush. Esistono anche app desktop come l'app desktop Evernote.

Ancora una volta, il codice sorgente interpretato viene eseguito direttamente dal file sorgente. Il codice sorgente compilato viene convertito in un file binario. Il file binario viene quindi eseguito. Il codice sorgente compilato potrebbe non riuscire durante il runtime anche dopo la compilazione corretta. Vedi parte 3

Traduttori ibridi

Un traduttore ibrido è una combinazione di interprete e compilatore. Un popolare linguaggio di programmazione ibrido è Java. Java prima compila il tuo codice sorgente in un formato intermedio noto come Bytecode.

Il Bytecode viene quindi interpretato ed eseguito da un motore di runtime noto anche come macchina virtuale. Ciò consente ai traduttori ibridi di eseguire il bytecode su vari sistemi operativi.

assemblatori

C'è anche l'Assemblatore per la traduzione in binario di un linguaggio di assemblaggio di basso livello.

Per questa serie, ci concentreremo solo sulle lingue di alto livello.

Un buon modo di guardare i traduttori è vederli come un programma in sé. Devi scaricarli o scaricarli, installarli sul tuo sistema informatico e comprenderne il funzionamento di base.

Una domanda spesso fatta

Ecco una domanda che i principianti di solito fanno.

Quale lingua imparo prima?

Esistono centinaia di linguaggi di programmazione. Sono classificati per popolarità, comunità, supporto a lungo termine, pedagogia, uso aziendale. Possono anche essere classificati in base al tecnicismo, ad esempio se sono funzionali, imperativi, statici, forti o tipicamente vaghi.

Alcune lingue sono più pedagogiche di altre. Alcune lingue sono a scopo didattico e non per uso aziendale. Ci sono lingue scritte, ad esempio, affinché i bambini imparino a programmare.

Esistono lingue molto potenti che sono facili da configurare e da imparare. Python è uno di questi linguaggi di programmazione. Lo consiglio di solito ai principianti.

Se sei interessato a esplorare di più sulle tue opzioni per la "prima lingua", ecco alcune buone ricerche di Philip Guo.

Quando vuoi imparare una nuova lingua, sai ora che avresti bisogno di quel traduttore di lingua. Questo è un programma che installi e configuri sul tuo computer.

Ti consiglio di iniziare a imparare come usare una CLI (Command Line Interface). La CLI è il terminale o la shell. Pensa al terminale come alternativa a una GUI (Graphical User Interface).

Nelle GUI, interagisci con il computer tramite il puntatore del mouse. Dipendi anche dalle rappresentazioni visive delle directory e da tutto ciò che fai.

Ma, quando si utilizza una CLI, si interagisce con il computer utilizzando i comandi digitati al prompt o un cursore lampeggiante

$ _

In Windows, il terminale fornito è il prompt dei comandi. Per gli utenti Mac e Linux, hai già un terminale Bash predefinito. Per ottenere la stessa esperienza su Windows, installa Git Bash o PowerShell.

Andando avanti

Ora che sei stato leggermente introdotto a ciò che è la programmazione. Devi prepararti per la tua prima riga di codice :)

Per iniziare è necessario quanto segue:

  • Un sistema informatico
    A questo punto, non hai bisogno di uno sofisticato o molto costoso, hai solo bisogno di un computer che funzioni bene.
  • Installa la CLI
    Consiglio questo corso intensivo per iniziare a utilizzare la CLI.
  • Installa un editor di testo
    Torneremo su questo nella parte 2
  • Impara un linguaggio di programmazione
    In questa serie imparerai gli elementi di base che costituiscono la conoscenza fondamentale della maggior parte dei linguaggi di programmazione.

Quiz

  • Quali strumenti di base sono necessari per iniziare la programmazione?
  • Quale comando useresti per quanto segue in bash (CLI)?
  • Controlla la tua directory attuale
  • Passare a una directory denominata "bin" (bin è nella directory corrente)
  • crea una nuova directory chiamata "lib"
  • crea un nuovo file chiamato "book.py"
  • elenca tutti i contenuti della directory corrente

Sommario

Abbiamo esaminato le basi della programmazione, con un'introduzione ai traduttori. La parola "codice sorgente" non ti è più strana. Esamineremo quale codice sorgente è in dettaglio nella parte successiva.

Risposte al quiz

Quali strumenti di base sono necessari per iniziare la programmazione?
Un computer, un editor di testo, la shell (terminale) e un compilatore / interprete

Quale comando useresti per quanto segue in bash (CLI)?

  • Controlla la tua directory attuale: pwd
  • Passare a una directory denominata "bin": cd bin
  • crea una nuova directory chiamata "lib": mkdir lib
  • crea un nuovo file chiamato "book.py": tocca book.py
  • elenca tutti i contenuti della directory corrente: ls
Da Wikimedia Commons, il repository multimediale gratuito

Parte 2 - Codice sorgente

Ora che comprendi il concetto di programmazione, esamineremo il codice sorgente.

Un codice sorgente è sostanzialmente un file, proprio come un file Microsoft (.doc), ma leggermente diverso. È un file di testo non elaborato, scritto su editor molto semplici, come il Blocco note di Windows. Ricorderai dalla sezione precedente che hai bisogno di interpreti o compilatori per convertire il tuo codice sorgente in binario. Il codice sorgente deve essere salvato in un file, che viene passato come input al traduttore.

A seconda della lingua che stai scrivendo, ci sono estensioni designate per il salvataggio del file del codice sorgente. L'estensione di Python è ".py". Java è ".java". Php è ".php" e PERL è ".pl" per citarne alcuni.

Quando hai finito di scrivere il tuo codice sorgente, devi eseguirlo attraverso il traduttore. Ad esempio, ecco come eseguire il codice sorgente di Python usando il comando python.

Per iniziare: il tuo primo programma

  • Segui le istruzioni qui per configurare Python sul tuo computer.
  • Installa un semplice editor per digitare il tuo codice sorgente. È possibile utilizzare l'editor di testo sublime per iniziare.
  • Apri un nuovo file sul tuo editor e digita quanto segue:
stampa "Hello Python!"
  • Ricorda di salvare il file come main.py
  • Trova il percorso del file nella tua CLI e digita il comando seguente:
$ python main.py

Il risultato dovrebbe apparire così:

L'anatomia di un tipico codice sorgente

Esamineremo ora il contenuto di un tipico file di codice sorgente. Di seguito sono riportati i componenti regolari:

parole

Parole brevi e leggibili dall'uomo, generalmente note come parole chiave. Sono peculiari della lingua che stai imparando e sono speciali. Torneremo su questo in un batter d'occhio. Devi imparare alcune delle parole chiave a memoria. Ecco l'insieme di parole chiave riconosciute e utilizzate in Python.

https://www.programiz.com/python-programming/keyword-list

Identifiers

Parole inventate da te - Sì, tu il programmatore. Queste parole sono generalmente indicate come identificatori. Potrebbero essere creati da te o da altri programmatori. Sono confezionati in forma di plugin, meglio conosciuti come Librerie.

Un esempio di libreria è la libreria matematica. Ti consente di accedere a funzioni come la radice quadrata (Math.sqrt), utilizzata in Javascript.

Molti linguaggi di programmazione vengono forniti con un sacco di librerie. Questi sono generalmente indicati come i loro SDK (kit di sviluppo software). Li scaricherai insieme al compilatore per iniziare a costruire tecnologie, app e progetti. Oltre a questi, ci sono framework, progettati per aiutare a costruire su una particolare piattaforma come web o mobile.

Alcuni identificatori sono raggruppati con una lingua che stai utilizzando e potrebbero non essere utilizzati come identificativi nominati dall'utente. Un esempio è la stringa di parole in Java. Tali identificatori, insieme alle parole chiave, sono noti come parole riservate. Non sono parole chiave, ma come le parole chiave, sono anche speciali.

Tutte le parole chiave sono parole riservate, l'inverso non è vero.

Le parole che scegli dovrebbero essere significative per chi le vede a prima vista.

Un uso comune degli identificatori è nelle variabili di denominazione, ne esamineremo un po '.

Tipi di dati di base

Troverai anche dati di diversi tipi in un codice sorgente, numeri (3, 5.7, -100, 3.142) e caratteri (M, A). In alcuni linguaggi di programmazione, i numeri sono ulteriormente suddivisi nei loro tipi come numeri interi.

I numeri interi possono essere Firmati o Non firmati, numeri interi grandi e numeri interi piccoli. Grandi o piccoli in realtà dipendono dalla quantità di spazio di memoria riservata a tali numeri. Esistono numeri con parti decimali, generalmente chiamati double e float, a seconda della lingua che stai imparando.

Abbiamo anche tipi di dati booleani che valutano vero o falso.

Tipi di dati complessi

I tipi di dati spiegati sopra sono noti come tipi di dati elementari, primari o di base. Possiamo creare tipi di dati più complessi da questi tipi di dati di base.

Un array è la forma più semplice del tipo di dati complesso. Una stringa è una matrice di caratteri. Non possiamo fare a meno di questi tipi di dati complessi e spesso li usiamo quando scriviamo il nostro codice sorgente.

Una combinazione di caratteri è una stringa. Per usare un'analogia, una stringa è per un computer ciò che una parola è per un essere umano. La parola "Termometro" è composta da 11 caratteri: la chiamiamo semplicemente una stringa di caratteri. L'elaborazione delle stringhe è di per sé un argomento ampio da imparare e deve essere studiata da ogni aspirante programmatore.

I tipi di dati complessi vengono forniti con la maggior parte dei linguaggi di programmazione utilizzati. Ce ne sono altri che ci costruiamo come programmatori, come i sistemi Class. Questi sono anche conosciuti come programmazione orientata agli oggetti (OOP).

variabili

Le variabili sono semplicemente denominate posizioni di memoria. A volte vogliamo conservare i dati nel nostro codice sorgente in un luogo in cui possiamo richiamarli, per riutilizzarli. Questa è di solito una posizione di memoria che il nostro compilatore / interprete ci riserva. Dobbiamo nominare queste posizioni di memoria per richiamarle in seguito. Considera lo snippet di codice Python di seguito:

pet_name = 'Hippo'print pet_name

pet_name è un esempio di una variabile. Perché il tipo di dati memorizzati in pet_name è una stringa. È nota come variabile stringa. Ci sono anche variabili numeriche. Le variabili sono classificate in base al tipo di dati.

costanti

Le costanti sono valori che non cambiano per tutta la durata del programma. Usiamo le lettere maiuscole per imporre che alcuni valori debbano essere valori costanti. Alcune lingue forniscono un modo per creare valori costanti, mentre altre no.

Alcune lingue offrono il lusso di dichiarare i tipi che dovrebbero essere le variabili. Spesso chiamiamo queste lingue fortemente tipizzate. Java è un buon esempio.

Altri non forniscono queste funzionalità. Sono linguaggi di programmazione vagamente digitati o dinamici. Python è un buon esempio.

Ecco come dichiarare valori costanti in JavaScript.

const petName = 'Ippopotamo'

letterali

In ogni codice sorgente, ci sono tipi di dati che usi ovunque intorno al tuo codice che cambieranno solo se li modifichi tu stesso. Chiamiamo questi letterali, che non devono essere confusi con variabili o costanti. I letterali possono essere visualizzati una volta dato un'occhiata al codice sorgente. Potrebbero essere stringhe, numeri, decimali o altri tipi di dati.

Nello snippet di codice sorgente sopra, la parola "Ippopotamo" è un letterale - una stringa letterale. Sarà sempre "Ippopotamo" fino a quando non modifichi il codice sorgente. Man mano che impari a programmare, imparerai come gestire i valori letterali nel tuo codice sorgente in un modo facile da mantenere senza modificare gran parte del codice sorgente.

Punteggiature / Simboli

Nella maggior parte del codice sorgente, troverai generalmente segni di punteggiatura diversi a seconda del linguaggio di programmazione. Java ha più segni di punteggiatura, ad esempio Python.

I segni di punteggiatura comuni includono virgola (,), punto e virgola (;), due punti (:), parentesi graffe ({}), parentesi (()), parentesi quadre ([]), virgolette (""), pipe ( |), barra (\), punto (.), punto interrogativo (?), punto di inserimento (^) e percentuale (%).

Benvenuto nel mondo della codifica, in cui i segni di punteggiatura sono i tuoi migliori amici. Ti ritroverai a digitarli molto.

operatori

Le probabilità che tu scriva codice per eseguire un'operazione è molto alta. Al minimo, eseguirai un'operazione di assegnazione nel tuo codice sorgente. Ci viene presentato un gran numero di operatori dai linguaggi di programmazione che usiamo. Gli esempi includono addizione (+), divisione (/) moltiplicazione (*), sottrazione (-) e maggiore di (>).

Gli operatori possono generalmente essere classificati come segue:

  • Operatori di assegnazione
    Questo a volte è frainteso come uguale a. Uguale a viene utilizzato per confrontare due valori. Operatore di assegnazione inserisce un valore in una variabile, come pet_name = 'Hippo'
  • Operatori aritmetici
    Comprende gli operatori per l'esecuzione di compiti aritmetici come addizione e sottrazione. Alcune lingue forniscono alcuni operatori aritmetici che altri potrebbero non avere. Ad esempio, l'operatore modulo (%) restituisce il valore residuo nelle operazioni di divisione.
  • Operatori relazionali
    sono usati per confrontare i valori. Includono maggiore di, minore di, uguale a, non uguale a. La loro rappresentazione varia anche a seconda del linguaggio di programmazione che stai imparando. <> non è uguale in alcune lingue, mentre in altre è! = o! ==.
  • Operatori logici
    sono usati per calcolare operazioni logiche. Gli operatori logici comunemente usati sono e, o, no. Alcune lingue rappresentano questi operatori con simboli come && for e, || per o e! per non. I valori dell'operazione logica in genere vengono valutati come valori di valore booleani o falsi.

Commenti

La documentazione sarà un aspetto importante delle tue attività di codifica. È come spieghi il tuo codice ad altri programmatori. Questo viene fatto tramite commenti che vengono occasionalmente aggiunti a parti del codice. Tramite i commenti, puoi guidare altri programmatori attraverso il tipo di dati con cui lavora il tuo codice e il tipo di output che genera.

Di solito, il compilatore ignora le righe di codice che sono commenti.

I commenti variano tra le lingue. Il # è usato per introdurre commenti in Python.

Ecco un esempio di un commento in Python.

# snippet di programma per calcolare i fibonacci di N numeri

In Java, C e C ++, ci sono commenti per una singola riga proprio come il # in Python, ma al suo posto viene usato il simbolo //. Ci sono anche commenti su più righe / *… * /. Puoi leggere di più sui commenti nella lingua che hai scelto di imparare.

Spazi bianchi e schede

Questi sono spazi creati tra il codice che stai scrivendo. Questo viene fatto quando si preme la barra spaziatrice o il tasto Tab sulla tastiera.

Andando avanti

Assicurati di aver configurato correttamente Python sul tuo computer ed eseguire il tuo primo programma.

Quiz

Ecco un semplice quiz per te.
Identifica i diversi elementi che abbiamo studiato finora nello snippet di codice sorgente Java di seguito:

// un'implementazione ricorsiva di Factorial
import java.util.Scanner;
class RecursiveFactorial {
  public static void main (String [] args) {
    Input scanner = new Scanner (System.in);
    System.out.print ("Trova il fattoriale di:");
    int num = input.nextInt ();
    System.out.println ("Factorial of" + num + "=" + fact (num));
 }
 fatto lungo statico (int n) {
  se (n <2) restituisce 1;
  return n * fact (n-1);
 }
}

Sommario

Ti è stato presentato cos'è un codice sorgente e hai esaminato il contenuto di un tipico codice sorgente.

Compilato o tradotto, il codice potrebbe non essere eseguito a causa di una serie di motivi. Questi motivi sono comunemente correlati ad errori nel codice sorgente. Questi errori sono noti come bug.

L'atto di trovare e rimuovere questi bug si chiama debugging ed è un'abilità che devi imparare come programmatore. Esamineremo quali sono i bug nella prossima parte.

Risposte al quiz

Identifica i diversi elementi che abbiamo studiato finora nello snippet di codice sorgente Java di seguito:

parole chiave:
import, class, public, static, void, new, int, long, if, return

identificatori:
java, util, Scanner, RecursiveFactorial, main, String, args, input, System, in, out, print, println, num, nextInt, fact, n

letterali:
String Literals - “Factorial of” = “Trova il fattoriale di:”
Letterali interi - 2, 1

operatori:
Operatore di assegnazione =
Concatenatore + (per unire le stringhe insieme)
meno di <
moltiplicare *
sottrai -

Punteggiatura e simboli
{} [] (); .

Commento
// un'implementazione ricorsiva di Factorial

Parte 3 - Debug

Una volta che inizi a provare frammenti di codice o stai cercando di risolvere problemi reali con il codice, ti accorgerai presto che ci saranno momenti in cui il tuo programma si interrompe, viene interrotto e interrompe l'esecuzione.

Ciò è spesso causato da errori, noti come bug o eccezioni in fase di esecuzione. L'atto di trovare e rimuovere i bug dal nostro codice è il debug. Migliora il debug del codice mentre provi a farlo di più. Non eseguiamo solo il debug del nostro codice, ma possiamo anche eseguire il debug del codice scritto da altri programmatori.

Per iniziare, dobbiamo identificare i bug comuni che potrebbero emergere nel nostro codice sorgente.

Errori sintattici

Questi errori non consentiranno la compilazione del codice sorgente in linguaggi di programmazione compilati. Vengono rilevati in fase di compilazione o durante l'interpretazione del codice sorgente. Possono anche essere rilevati facilmente dalle linters. Più avanti impareremo qualcosa in più sulle linters.

Sono principalmente causati quando si rompe la forma o la struttura prevista della lingua in cui si sta codificando. In un esempio manca una parentesi di chiusura in un'equazione.

Errori semantici

Gli errori semantici noti anche come errori logici sono i più problematici di tutti gli errori. Non possono essere facilmente rilevati. Un segno che c'è un errore semantico è quando il programma viene eseguito correttamente ma non produce l'output desiderato.

Considera questo esempio:

3 + 5 * 6

Per ordine di precedenza, popolarmente chiamato BODMAS, in matematica ci aspettiamo che la parte di moltiplicazione venga valutata per prima, e quindi il risultato finale sarà 33. Se invece il programmatore volesse che l'aggiunta valuti prima, ciò darà un output diverso rispetto a quello desiderato produzione. Errori come questo sono errori semantici, che hanno più a che fare con il significato che con la struttura (sintassi).

Le parentesi intorno a 3 + 5 genereranno invece l'output desiderato di 48.

(3 + 5) * 6

Errori di runtime

Come gli errori semantici, gli errori di runtime non vengono mai rilevati in fase di compilazione. A differenza degli errori semantici, gli errori di runtime interrompono il programma e ne impediscono l'esecuzione. Di solito sono causati da risultati imprevisti di alcuni calcoli all'interno del codice sorgente.

Ecco un buon esempio:

input = 25x = 0.8 / (Math.sqrt (input) - 5)

Lo snippet di codice sopra verrà compilato correttamente, ma un input di 25 comporterà ZeroDivisionError. Questo è un errore di runtime. Un altro esempio popolare è StackOverflowError o IndexOutofBoundError. Ciò che è veramente importante è identificare questi errori e imparare a gestirli.

Ci sono errori causati dal modo in cui il codice sorgente utilizza memoria e spazio sulla piattaforma o sull'ambiente in cui viene eseguito. Sono anche errori di runtime. Tali errori come OutOfMemoryError e HeapError sono generalmente causati da quanto il tuo codice sorgente utilizza risorse. Una buona conoscenza degli algoritmi ti aiuterà a scrivere codice che sfrutta meglio le risorse.

Il processo di riscrittura del codice per prestazioni migliori si chiama ottimizzazione e una parola non correlata è refactoring. Man mano che trascorri più tempo a scrivere codice, dovresti tenere a mente anche questi.

Debug

Ecco alcuni suggerimenti su come eseguire il debug del codice:

  • Usa Linters
    Le linter sono strumenti che aiutano a leggere il codice sorgente per verificare se sono conformi allo standard previsto nella lingua in cui si sta codificando. Esistono linter per molti linguaggi di programmazione. Assicurati di averne uno per la lingua che stai imparando.
  • IDE su semplici editor
    Puoi optare per un IDE progettato per la lingua che stai imparando. IDE è l'acronimo di Integrated Development Environment. Sono software creati per la scrittura, il debug, la compilazione e l'esecuzione di codice. Di solito vengono forniti con potenti kit di debug, per guardare o scorrere il codice.
    Jetbrains è un ottimo IDE come Webstorm e IntelliJ. C'è NetBeans, Komodo, editor Qt, Android Studio, XCode (fornito con Mac) per citarne alcuni.
  • Lettura ad alta voce del codice
    Questo è di solito utile quando stai cercando un errore semantico. Durante la lettura ad alta voce del codice, è molto probabile che anche tu leggerai l'errore. Potrebbe saltarti addosso come ciò che probabilmente era sbagliato.
  • Leggi i log degli errori
    Quando il compilatore segnala un errore, assicurati di guardare il numero di riga o la parte del codice contrassegnata.

Andando avanti

Come principiante, imparerai a programmare da libri, tutorial online o video. Digiterai spesso il codice come li vedi.

Ecco qualcosa che dovresti fare, quando hai finito di scrivere o eseguire tale codice, impara a romperli. Come fai a fare questo?

Cambia qualcosa per vedere come si comporta il codice. Fallo in modo da non dare per scontato nulla e sei abbastanza sicuro di capire cosa sta succedendo.

Quiz

1 Qual è il probabile bug nello snippet di codice Python di seguito:

articoli = [0,1,2,3,4,5]
articoli di stampa [8]
// suggerimento: gli elementi qui sono un array, con 6 elementi. Per recuperare, ad esempio, il quarto elemento, verranno utilizzati gli elementi [3]. Iniziamo a contare da 0.

2. Qual è il probabile bug nello snippet di codice Python di seguito:

input = Ippopotamo '
se input == 'Ippopotamo':
  stampa "Ciao, ippopotamo"

Sommario della sezione

Congratulazioni! La parola bug non è più strana per te, e non è nemmeno possibile individuare i bug ora. Successivamente, esamineremo il flusso comune del codice che scriviamo ogni giorno.

Risposte al quiz

Qual è il probabile bug nello snippet di codice Python di seguito:
(1) Errore di runtime: errore indice fuori intervallo
(2) Errore di sintassi: virgolette iniziali mancanti nella riga 1

http://www.publicdomainpictures.net/

Parte 4 - Flussi di codifica di base

Riga di codice, espressioni e dichiarazioni

L'unità di qualsiasi codice sorgente è la LOC (riga di codice). Il programma più semplice è una riga di codice. Una LOC può essere una parola chiave, un simbolo o un'istruzione. È una riga di codice purché sia ​​su una riga separata.

Consideriamo una semplice riga di codice:

area = 0,5 * base * altezza

0,5 * base * altezza è un'espressione. Un'espressione è una combinazione di operatori e operandi. Nell'esempio fornito qui, gli operandi sono 0,5, base, altezza. Ricorderai che 0,5 è un valore in virgola mobile letterale, base e altezza sono variabili. L'operatore è il * (moltiplicazione).

Le espressioni potrebbero non essere significative stando da sole come LOC. Quando assegniamo il valore di un'espressione a un'altra variabile, nel caso sopra l'area, ciò che abbiamo viene chiamato un'istruzione. Rimane comunque un'affermazione quando alleghiamo espressioni di parole chiave, ad esempio: return 0.5 * base * height

Per il resto di questa sezione, rappresenteremo un'istruzione come il simbolo S. L'ennesima istruzione sarà Sn tra una sequenza (o un insieme) di istruzioni

Per comprendere rapidamente la programmazione, un buon punto di partenza è la comprensione dei flussi di codifica di base. I flussi di base sono anche chiamati flussi di controllo. Una volta compresi questi flussi, li troverai in molti dei linguaggi di programmazione che impari.

Si noti che gli esempi forniti in questo articolo sono puramente di base. È necessario fare riferimento alla lingua che si sta imparando per ottenere una conoscenza approfondita delle parole chiave fornite.

Anche i flussi di base introdotti qui sono diversi dai modelli di progettazione in programmazione. Comprendi prima questi flussi di base. In seguito, ti informi sui comuni modelli di progettazione in programmazione mentre impari di più.

Ecco i flussi di programmazione di base:

  • Sequenziale
  • Condizionale / Branching
  • Iterazione / Ripetizione / Loops

Sequenziale

Questo è il flusso più semplice, in cui un'istruzione viene eseguita dopo l'altra. Nel vero senso, ogni altro flusso si risolve in un flusso sequenziale (ne parleremo più avanti).

S1
S2
S3
.
.
.
Sn

In alcuni linguaggi di programmazione come JavaScript, è possibile eseguire S3 prima di S1. Ciò accade se S1 è bloccato da alcune attività che potrebbero richiedere più tempo come operazioni di database o file, note come attività asincrone. Ci sono modi per aggirare casi come questo. Non preoccuparti, sarà un gioco da ragazzi imparare a imparare il linguaggio di programmazione.

Condizionale / Branching

L'istruzione che viene eseguita è determinata dalle condizioni. La parola chiave chiave qui è la parola chiave if. È uno dei flussi di codifica più utilizzati.

Ecco il modello condizionale più semplice:

se (condizione) quindi:
   S1

Nell'esempio sopra, S1 viene eseguito o non accade nulla. S1 viene eseguito solo se la condizione fornita è vera.

Ecco un altro modello condizionale:

se (condizione) quindi:
  S1
  S2
altro:
  S3
  S4

Che può essere letto come in esecuzione di S1-S2 o S3-S4 in base alla condizione fornita. Se la condizione è vera, verranno elaborati S1 e S2. Altrimenti verranno elaborate le istruzioni S3 e S4. Questo in realtà è un flusso sequenziale:

S1
S2

Abbiamo anche lo stile multi-condizionale:

if (condizione1) quindi:
  S1
altrimenti if (condition2) quindi:
  S2
altro:
  S3

Qui se la condizione 1 è vera, viene elaborato S1. Altrimenti viene testato condition2 e, se vero, viene elaborato S2. Questo può continuare all'infinito.

Per lo stile multi-condizionale, molti linguaggi di programmazione forniscono lo switchstatement. Ecco il modello per l'istruzione switch:

valore di commutazione:
  condizione del caso1:
    S1
    rompere
  
  case condition2:
    S2
    rompere
predefinito:
    S3

La condizione1 e la condizione2 vengono confrontate con il valore nell'istruzione switch. Se uno di essi è fedele al valore, viene eseguita l'istruzione nel blocco maiuscole.

Esistono altre opzioni per il flusso condizionale. Alcuni sono specifici della lingua che decidi di imparare come l'operatore condizionale (:?) E altre parole chiave che facilitano la ramificazione come ciclo e interruzione. Assicurati di dedicare un po 'di tempo alla comprensione del flusso condizione / ramificazione.

Iterazione / Ripetizione / Loops

Il flusso di iterazione / ripetizione mantiene le istruzioni in esecuzione fino a quando sono soddisfatte alcune condizioni e interrompe l'esecuzione delle istruzioni una volta che la condizione non è più vera.

Ecco lo schema:

while (condizione):
  S1
  S2

Nell'esempio precedente, le istruzioni S1 e S2 possono essere eseguite una volta, più volte o potrebbero non essere eseguite affatto. Se la condizione indicata è vera la prima volta che si verifica il whilestatement, verranno elaborati S1 e S2. La condizione while viene ricontrollata e S1 e S2 verranno eseguiti fino a quando la condizione è vera.

Nel momento in cui la condizione diventa falsa, l'esecuzione di S1 ​​e S2 si interrompe.

Il risultato dell'istruzione precedente se la condizione è vera tre volte sarà:

S1
S2
S1
S2
S1
S2

Che flusso di codifica è quello? Se hai risposto in sequenza, hai ragione. Tuttavia, come possiamo vedere, gli altri flussi si risolvono nel flusso sequenziale.

Ecco un altro modello di iterazione:

fare:
  S1
  S2
while (condizione)

In questo esempio, S1 e S2 verranno eseguiti in locazione una o più volte. Questo perché verranno eseguiti prima che la condizione venga testata.

In molti linguaggi di programmazione, vengono fornite parole chiave come do e while per l'implementazione del flusso di ripetizione. Un'altra parola chiave comune è la parola chiave for. Ecco il modello comune per l'istruzione for.

per (valore iniziale; condizione; valore iniziale decremento / incremento):
  S1
  S2

Molte lingue sono state usate per lavorare attraverso ogni elemento in un oggetto complesso come un array o una struttura.

Quiz

Identifica i flussi di codifica nel seguente frammento di codice Python:

numlist = []
cnt = 0
mentre cnt> = 0:
  m = int (raw_input ())
  se m <0:
    rompere
  numlist.append (m)
  cnt = cnt + 1

Sommario

I flussi qui trattati sono i flussi di base. C'è un modo per raggruppare un sacco di codice e dare loro un nome. In questo modo puoi chiamare questo gruppo di codici ogni volta che ne hai bisogno in una sola volta. Questa viene definita procedura. Nel caso in cui il gruppo di codice esegua qualche operazione e restituisca un valore, hai una funzione.

Le modalità di implementazione delle procedure e delle funzioni variano in base alle diverse lingue. Non puoi saltare questi per ottenere le basi di qualsiasi lingua. Sono estremamente importanti per l'organizzazione del tuo codice. In effetti, è qui che iniziano i mattoni del tuo codice noto anche come programmazione modulare.

Ci sono altri flussi che imparerai nel momento in cui capisci le funzioni, uno che viene in mente è la ricorsione.

Tuttavia, scoprirai che all'interno delle procedure e delle funzioni ci sono ancora i fantastici flussi di codifica che abbiamo trattato qui - sequenziali, condizionali e cicli / flusso iterativo.

Andando avanti

Ora hai imparato i concetti di base della programmazione del tuo computer. Se desideri saperne di più o vuoi fare carriera nello sviluppo di software, tutto ciò che devi fare è immergerti più a fondo nelle acque più profonde. Ci sono così tante risorse per aiutarti ad imparare. Sapere quale scegliere in base al tuo livello di esperienza è molto importante.

Cerca di non essere sopraffatto dalle nuove parole che senti dai programmatori più esperti nella tua cerchia di amici. Potresti tenere un blocco per annotare questi termini, ma non essere sotto pressione per scoprire cosa significano. Ti raggiungerai mentre impari e ti eserciti.

Ecco alcune risorse per aiutarti a far ripartire la tua carriera di programmatore e per aiutarti a costruire sulla base che hai ottenuto da qui:

  • https://www.codecademy.com/
    Scegli il corso Python
  • https://app.pluralsight.com/library/courses/what-is-programming/table-of-contents
    Corso gratuito su Pluralsight

NOTA: non raccomando una lettura eccessiva sullo stesso argomento. Credo nel recitare sul poco che hai imparato, cioè sulla pratica. Questo è il motivo per cui non sto scaricando troppi link qui per il tuo apprendimento. Sentiti libero di cercare su Google o di trovare altri in base a ciò che già sai se non sei un principiante.

Sfida finale

Con la presente ti sfido a:
Accetta una di queste sfide:

  • Trova qualsiasi semplice app online e riproducila nel linguaggio di programmazione che hai imparato

O

  • Pensa a qualsiasi idea anche se è semplice come un'app per la lista dei desideri
    costruire un'app attorno a questa idea.

Consiglierò questo articolo di Codementor per iniziare.

Risposte al quiz

Identifica i flussi di codifica nei seguenti frammenti di codice Python.

  • Flusso sequenziale
  • Iterazione
    la dichiarazione while
  • Condizionale
    la dichiarazione if

Un ringraziamento speciale a Maya Neria, Joshua Ugba e Mohini Ufeli per la revisione di questo articolo, Surajudeen Akande per avermi invitato a pubblicarlo, il team editoriale di Andela per le recensioni, John Adesanya per le illustrazioni e per 'Kunmi - queste lezioni sono iniziate con il suo desiderio di imparare a programmare.

Se ti è piaciuto, fai clic sull'icona di applauso in modo che altre persone lo vedano qui in media. Inoltre, se hai domande o osservazioni, usa la sezione commenti per condividere i tuoi pensieri.