Vocabolario adatto per aiutare i programmatori alle prime armi


9

Mi ritrovo ad aiutare i programmatori principianti relativamente spesso; spiegando perché il loro codice non funzionerà quando lo chiederanno, suggerendo soluzioni e simili. Le persone che sto aiutando hanno un'istruzione formale nella programmazione da un modulo di primo livello, in Java, ma mi sento come se non potessi comunicare molto bene con loro.

Ad esempio: si potrebbe scrivere una funzione ma non capire perché non viene eseguita, non rendendosi conto che si sono dimenticati di chiamarla. Se uso frasi come "(make a) call (to) the function/it"e "pass it the.."ottengo sguardi vuoti.

Il mio normale processo sarebbe quindi quello di trovare un posto nel loro codice in cui chiamano una funzione dalla lingua e dire loro che possono chiamare le proprie funzioni nello stesso modo in cui hanno chiamato questa altra funzione. A volte anche quello appare vuoto.

Ci sono altri pezzi di vocabolario che sono più adatti (meglio per?) Aiutare i programmatori alle prime armi? O questo non è un problema di comunicazione?


5
Gli utenti di fogli di calcolo sanno come chiamare una funzione. Molti possono scrivere il proprio. C'è qualcosa di fondamentalmente sbagliato qui.
JeffO,

@JeffO Avevo sentito che qualcosa non andava, ma volevo dare a quel modulo ea quelle persone il beneficio del dubbio
Andy Hunt

7
Aspetta cosa? I programmatori con cui lavori non sanno cosa significa "chiamare una funzione" e passare argomenti? È fondamentale come puoi andare senza disegnarli e usare metafore che coinvolgono cani e gatti. Questo va oltre un problema di comunicazione e purtroppo potrebbe essere un problema con mancanza di conoscenza. Ho riletto la tua domanda e sembra che abbiano praticamente seguito un corso introduttivo di livello e basta?
wkl,

3
@AndyBursh: come sono arrivati ​​a questi studenti al secondo anno? Spero che non superino gli esami e scelgano un lavoro al di fuori dello sviluppo del software.
Doc Brown,

3
Forse le marionette da calzino sarebbero d'aiuto
MattDavey,

Risposte:


15

Dovranno imparare i termini appropriati alla fine, prima è meglio è.

Usali correttamente e spiegali ogni volta che ottieni uno sguardo vuoto. Cerca solo di inviare i segnali giusti, che è OK chiedere qualsiasi cosa non capiscano - le uniche domande stupide sono quelle che non fai.


2
Stavo per pubblicare quasi esattamente la stessa risposta che la tua ha caricato. :) +1
Tom Squires,

Non portare le spiegazioni al loro livello, alza il loro livello.
Bent

2

In generale

Quando una persona non ti capisce, hai due alternative:

  1. Adatta il vocabolario in base a ciò che la persona conosce o no,

  2. Spiega alla persona i termini che non capisce.

Il primo caso funziona bene quando la persona conosce già abbastanza bene il vocabolario tecnico, ma non abbastanza, o non nel tuo dominio.

Ad esempio, puoi usare il termine metodo in C # o Java e la persona che lavora principalmente con qualche altra lingua non capirà questo termine. Spiegherai quindi che in C # o Java, il metodo si riferisce a ciò che di solito chiamiamo funzione (ad esempio in C) e che non esiste una funzione come in C # o Java . In PHP , ad esempio, esistono sia metodi che funzioni e hanno un significato diverso . Se la differenza è troppo dolorosa per la persona, parlerai di funzioni per semplicità.

Nel tuo caso preciso, difficilmente puoi scegliere il primo: "effettuare una chiamata alla funzione" non può essere riformulato in modo più semplice. Una chiamata è una chiamata. Non puoi semplificarlo di più.

Ciò significa che devi scegliere il secondo modo: spiegare alla persona ogni termine tecnico.

  1. Indica la persona su un dizionario o su Wikipedia, che funziona molto bene con concetti e terminologia di base.

    Sceglierei questo per termini comunemente usati . Ad esempio, preferirei invitare la persona a leggere Wikipedia per capire cos'è il polimorfismo o cosa sono la covarianza e la contraddizione. Questi termini sono già stati spiegati molto bene, quindi non è necessario reinventare la ruota qui.

  2. O spiega con parole tue .

    Sceglierei questo per termini specifici del contesto e / o accettando un'ampia gamma di definizioni . Ad esempio, Wikipedia non è molto utile per comprendere la visione di Microsoft del cloud computing e vorrei piuttosto spiegarmi cos'è il cloud per qualcuno che lavorerà su un'applicazione Windows Azure.

Nel tuo caso particolare

Le persone con cui stai parlando mancano dei concetti e dei termini di base utilizzati nella programmazione. Non possono continuare senza imparare questo vocabolario di base , perché non sono in grado di comunicare : non possono leggere libri sulla programmazione o sui blog, non possono ascoltare i loro colleghi e non possono nemmeno fare domande su Stack Exchange siti Web, dal momento che nessuno capirà cosa stanno chiedendo.

Nel tuo caso, piuttosto che cercare un vocabolario adatto, passerei alcuni giorni o settimane a insegnare loro alcuni concetti di programmazione di base e i termini comunemente usati . Dopo alcuni giorni, sarai in grado di parlare con loro senza essere obbligato a "disegnare loro costantemente immagini e usare metafore che coinvolgono cani e gatti" .


1

Invece di funzioni , inizia con le subroutine . Dì loro che un programma è solo un elenco di istruzioni, una ricetta per dire al computer come fare qualcosa. E che viene eseguita un'istruzione dopo l'altra (con la possibilità di fare alcuni passi in parallelo, ma ne parleremo più avanti).

Alcuni compiti sono abbastanza comuni e ripetitivi, quindi sarebbe terribile se dovessimo scriverli sempre più volte, quindi li scriviamo solo una volta e ne facciamo un "programma più piccolo" - un sottoprogramma , che può essere riutilizzato da altre parti del programma. Per poterlo eseguire più di una volta, gli diamo un nome significativo nel nostro programma. E quindi possiamo usare quel nome quando vogliamo eseguire questo "piccolo programma" come parte di uno più grande, chiamandolo con quel nome.

Chiamare una subroutine è come evocare un demone che sa come eseguire quel compito, con il nome di quel demone. Quindi, quando vogliamo fare quel particolare compito nel nostro programma, scriviamo "chiama il demone di nome Argoth", e il demone si presenta e fa il compito per noi come gli abbiamo ordinato di fare, e poi se ne va e possiamo continuare il nostro lavoro.

A volte il demone richiede alcune informazioni aggiuntive senza le quali non può decidere quali compiti svolgere o cosa vogliamo veramente da lui. Ad esempio, se il demone dovrebbe costruire un castello, potrebbe aver bisogno di sapere dove dovrebbe costruirlo, o quanto è grande , ecc. Questi sono gli argomenti passati al demone ... Voglio dire, la subroutine, che ora diventa parametrizzato .

I parametri sono quelle informazioni che mancano, ma sono necessarie per svolgere l'attività. Cambiano leggermente ciò che la subroutine può fare. Sono come slot vuoti nella ricetta che devono essere riempiti prima che potessimo eseguirla.

Gli argomenti , d'altra parte, sono le informazioni (valori) effettive che forniamo per questi parametri.

Per quanto riguarda l'esecuzione parallela, possiamo pensarla in questo modo: c'è sempre qualcuno (o qualcosa ) che sta eseguendo il programma (l'elenco delle istruzioni). O è un altro essere umano (lo sapevi che una volta "computer" era un nome per una persona che stava eseguendo il calcolo?) O una macchina. Un programma è solo un elenco di istruzioni, non funziona da solo. Ci deve essere qualcuno o qualcosa che farà il processo computazionale(eseguire queste azioni dall'elenco). E a volte queste azioni possono essere eseguite in parallelo: possiamo distribuire le copie dell'elenco a più persone e lasciare che ognuna di esse esegua una serie diversa di attività dall'elenco, purché non si interrompano a vicenda o non devo aspettare i risultati del lavoro di qualcun altro. Questo è multithreading per te;)

Per quanto riguarda la differenza tra funzioni e subroutine (chiamate anche procedure ), la differenza abituale è che una funzione viene chiamata per calcolare un certo valore che restituisce come risultato della sua esecuzione, mentre le procedure vengono eseguite solo per divertimento;) AKA per i loro "effetti collaterali" - solo per il bene delle operazioni eseguite dalla lista.

Ma se chiamare una procedura o una funzione all'inizio crea qualche problema, puoi usare un altro termine che un tempo era popolare: saltare . Si può saltare in una subroutine, il che significa che si interrompe l'esecuzione di qualsiasi cosa si stia facendo in questo momento e "si salti" in un'altra posizione dell'elenco (o in un'altra lista) - la subroutine - per eseguire i suoi compiti. Quindi, quando finisci, "salti indietro", ovvero ritorni nel luogo in cui sei stato interrotto, in modo da poter continuare con l'attività precedente. La differenza tra chiamare e saltare è che ora sei il demone.

Per quanto riguarda i metodi menzionati qui da qualcuno, o il fatto che alcune lingue "non hanno funzioni, solo metodi" - non è del tutto corretto, perché i metodi sono funzioni! - un tipo speciale di essi: sono funzioni che vengono utilizzate per recuperare alcune informazioni incapsulate all'interno di un oggetto o per operare su di esse. Sono un "metodo per operare su quei dati". Il nome deriva dal paradigma orientato agli oggetti in cui i dati sono racchiusi all'interno di oggetti e non possono essere gestiti direttamente, solo da funzioni speciali chiamate "metodi".

Un metodo è speciale in un certo altro modo: deve sapere quale particolare oggetto deve operare / essere chiamato (l'oggetto "questo"). Ecco perché i metodi sono solitamente abbelliti con un ulteriore parametro nascosto che memorizza le informazioni sull'oggetto su cui è stato chiamato (il puntatore "questo"). Questo complica il modo in cui la funzione viene chiamata un po ', ma è un "dettaglio di implementazione" che un programmatore non dovrebbe preoccuparsi molto, purché sappia cosa sta facendo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.