Come fai a sapere cosa deve fare un programma per completare una determinata attività?

4

Sono un noob quando si tratta di programmazione. So solo un po 'di Ruby, questo è davvero quando si tratta di programmazione, ma è sicuramente un interesse.

Nell'imparare a programmare, mi do i compiti da completare per imparare meglio Ruby, ma sto scoprendo che molti dei miei problemi di programmazione riguardano l'esecuzione di un compito.

Ad esempio: Nello scrivere un controllo SERP (che è, purtroppo, mezzo completo perché non riesco a leggere PHP) ho trovato uno script PHP di ciò che stavo programmando. L'ho usato come una sorta di modello per scrivere la mia pedina. (In realtà non userò il mio correttore, solo un compito per me da imparare.) Comunque, quando stavo investigando sul PHP, ho imparato che lo script fa un sacco di cose che non mi aspetterei che facesse.

Non sapevo nulla di come avrei potuto ottenere lo script per effettuare una ricerca su Google, come avrebbe raccolto i dati, ecc.

Come imparo queste cose? Se dovessi creare questo script dal modello di questo ragazzo, tutto quello che imparerei è come creare uno script SERP. Ma come ha fatto questo ragazzo a imparare come creare la sceneggiatura? Quali elementi inserire / utilizzare?

Qualcosa trovato da un amico nel mio script (un bug) che non avevo mai considerato correlato alle differenze tra Windows e Linux (sfortunatamente devo programmare in Windows fino a quando partizionare il mio hd e dare uno schiaffo a Linux su Linux. La ragione per cui ho Windows è perché tutta la storia di Steam su Linux era una bufala.) Aveva a che fare con newline, spazi, o qualcosa del genere ... Non ricordo di averlo fatto in testa.

Come dovevo avere la lungimiranza di sapere del bug? Come avrei catturato l'insetto se il mio amico che non fosse esperto non l'avesse fatto notare? E in realtà, la parte più importante della mia domanda è la parte precedente: come faccio a sapere quali elementi * (* se uso la parola "funzioni" qui mi preoccupo che venga confusa con i metodi ...) Ho bisogno di inserire un programma per completare un determinato compito?

    
posta Melanie Shebel 22.04.2011 - 11:16
fonte

5 risposte

4

How do I know what elements I need to put in a program in order to complete a given task?

Qualcuno vuole che il programma faccia qualcosa. Questo qualcuno o sei tu o qualcun altro. In ogni caso, in genere è necessario pensare attraverso la funzionalità prevista del programma. Aiuta a pensare in casi d'uso : serie di interazioni tra il programma e il mondo esterno a raggiungere un obiettivo specifico. (In gergo agile, questi sono anche chiamati storie utente ). Ad esempio, per accedere, l'utente deve digitare userid e password, quindi il programma deve verificare queste credenziali e visualizzare un messaggio di errore se non sono validi oppure visualizzare la schermata di benvenuto se l'accesso ha esito positivo.

È necessario identificare tutti i casi d'uso desiderati, quindi analizzarli uno per uno per capire quale funzionalità concreta richiede ogni fase, quali sono i possibili risultati e come comportarsi con ciascuno, ecc. (ad esempio per l'utente per inserire le sue credenziali, l'app deve visualizzare due caselle di modifica sull'interfaccia utente e un pulsante "Accedi" .Quando il pulsante viene premuto, l'app deve leggere il contenuto delle caselle di modifica, quindi convalidarle. Per la convalida, l'app è necessario connettere il database utente e verificare che l'ID utente specificato esista e che la password specificata sia corretta per questo utente. ecc.)

How do I learn these things? If I were to make this script from this guy's template, all I would learn is how to make a SERP script. But how did this guy learn how to make the script? What elements to put in/use?

Impariamo tutti a programmare attraverso la risoluzione dei problemi . Molti dei problemi sono stati risolti da altri prima, quindi possiamo trovare soluzioni a problemi (identici o simili) in rete. Cerchiamo di capire cosa fa lo script leggendo il codice, eseguendolo e guardando i risultati, modificando l'input e il codice in vari modi, e - last but not least - chiedendo aiuto agli amici, come hai fatto tu.

Il ragazzo che ha scritto la sceneggiatura probabilmente ha imparato allo stesso modo, solo che lo ha fatto più a lungo di te: -)

How was I supposed to have the foresight to know about the bug? How would I have caught the bug if my friend who is uber savvy hadn't pointed it out?

Non sei supposto che preveda tutti i possibili problemi, nessuno di noi. Nel corso della vita di un programmatore, si incontra una grande quantità di bug (sia nel proprio codice che nel codice degli altri) e si accumula esperienza da tutti. Quindi un programmatore esperto potrebbe essere in grado di individuare un bug nel codice perché riconosce un pattern visto prima, o "eseguendo" il codice nella sua testa e analizzando il risultato. Queste esperienze e abilità possono essere praticate e apprese. Se pratichi, anche tu migliorerai nel tempo :-) Tuttavia, anche i programmatori più esperti controllano i bug o trovano nuovi tipi di bug mai incontrati prima. Solitamente sono consapevoli dei propri limiti, quindi conoscono l'importanza di un test appropriato.

    
risposta data 22.04.2011 - 11:32
fonte
4

How do you know what a program needs to do to complete a given task?

Questa domanda riassume tutti dell'informatica.

Questo è ciò che "Programming" è

La risposta è così lunga e così coinvolta che non può essere riassunta qui - o ovunque.

La programmazione non è facile. Alcuni sostengono che è una delle cose più difficili che l'umanità ha inventato da sé.

Non c'è "strada regale" per la programmazione. È un sacco di lavoro.

Inizia ora.

  1. Trova un "tutorial" nella tua lingua preferita. Conosci già PHP e Ruby. Inizia lì. Dovrai imparare più lingue prima di aver terminato.

  2. Dopo aver completato il tutorial intero , ne esegui altri due. Davvero.

    Se stai lottando, vai in un college comunitario e segui corsi di programmazione. Potrebbe essere più facile che cercare di insegnare a te stesso. È difficile, ricordi?

  3. Dopo aver imparato a fondo la lingua, fai molti progetti. Molto.

  4. Inizia a leggere su "Requisiti" e "Progettazione" e altri argomenti al di fuori della parte del linguaggio di programmazione della programmazione.

  5. Leggi su "Algoritmi" e "Strutture dati". Potresti anche dover prendere alcune classi di "Logica" e "Matematica" da qualche parte (o trovare un buon libro.)

Pianifica di impiegare 10.000 ore per padroneggiare questo argomento. Questa è la magica esperienza di 5 anni citata da Malcolm Gladwell.

L'argomento è grande e difficile.

    
risposta data 22.04.2011 - 11:57
fonte
3

How was I supposed to have the foresight to know about the bug?

Non eri.

Leggi Ti insegni a programmare da dieci anni da Peter Norvig, ti metterà sulla giusta strada.

    
risposta data 22.04.2011 - 12:34
fonte
1

Like how do you KNOW what steps are needed to make her idea come to life?

fondamentalmente ci sono 2 modi possibili:

  • applica un metodo agile. provate ad iniziare da qualcosa di piccolo ciò che lei vuole e in modo iterativo e collaborativo continuare con le prossime cose che desidera

  • cerca di capire il quadro generale o il progetto parlare con lei. prova alcuni mockup semplici flussi di dati e diagrammi del flusso di lavoro (abbastanza semplici da capire). Non appena hai la bigpicture prova a creare il design del prodotto da blocchi grandi come: "GUI data entry", "database", "GUI reports" e così via ...

il primo è probabilmente preferibile per te se non hai abbastanza experince.

per quanto riguarda i bug:

  • aspettati sempre che creerai bug

  • se usi nuove per te strumenti / tecnologia ti aspetti qualche problema con loro

  • tieni sempre presente che il test è parte dello sviluppo e anche la risoluzione dei bug

risposta data 22.04.2011 - 11:39
fonte
1

La mia risposta sembrerà un po 'come "Per comprendere la ricorsione, è necessario prima capire la ricorsione" ma in realtà c'è molto di più.

Per capire cosa devi fare, devi avere alcune conoscenze essenziali sul tuo dominio. Non puoi google o SO tutto: devi sapere quali sono le tue opzioni. Se stai costruendo una GUI, devi conoscere i loop degli eventi, il toolkit per finestre e così via. Se stai costruendo un'applicazione basata sui dati, devi sapere come funzionano i database.

Se stai facendo cose per il web, devi capire come funzionano i browser, come funzionano i server web, come funziona la comunicazione tra loro e devi saperlo con un certo livello di dettaglio. Prova a scrivere esattamente cosa succede quando fai una richiesta nel tuo browser a un server che esegue PHP, nel modo più dettagliato possibile, e scoprirai dove sono le lacune nelle tue conoscenze.

Questo ha l'ulteriore vantaggio di apprendere la terminologia e sapere per cosa google.

Per quanto riguarda il tuo secondo punto, questa è una domanda eccellente: come ti guardi dai tipi di bug che non hai mai considerato? In parte, semplicemente, esperienza - farai centinaia di errori e imparerai da loro, e se sei un buon programmatore, non farai di nuovo quell'errore. Dimenticando che i nomi di file possono contenere spazi? Sono stato lì.

Ma se stai molto attento, puoi evitare i bachi affermando molto precisamente i tuoi presupposti: "Presumo che ci sia sempre un file chiamato foo in una cartella denominata bar da open("bar/foo") . Aspetta, io so per certo che quel file esiste? Che ho il permesso di leggerlo? Questo non è troppo grande per leggere? Che la notation bar / foo funziona nel mio linguaggio di programmazione su tutte le piattaforme?

Essere molto severi in ciò che si assume ridurrà drasticamente il numero di errori nel codice.

    
risposta data 22.04.2011 - 14:33
fonte

Leggi altre domande sui tag