Passate dichiarazioni If Array, loop ... E adesso?


9

Ho rinunciato a programmare poco più di un anno fa, quando continuavo a colpire questo muro. Sto rivisitando l'argomento perché voglio creare un'applicazione Android di base. Ma sento che la mia conoscenza limitata non sarà sufficiente.

Ecco il mio problema

Ho letto alcuni libri e guardato video tutorial su C # / Java, seguito esempi, poi finito il libro. Alla fine sembrano sempre lasciarmi sbalordito su cosa fare dopo.

Che cosa significa che ti insegnano dalla tua applicazione di base "ciao mondo" fino agli if e agli array, quindi apparentemente si aspettano che tu sappia come uscire nel mondo della programmazione e creare qualsiasi cosa.

Mi sto perdendo qualcosa qui? So che questi sono i mattoni di tutti i programmi, ma i libri che leggo non mi mostrano mai cosa fare dopo.

La facile risposta suppongo sarebbe di "iniziare a scrivere codice", ma dove? Ho letto "Head First Java" per esempio; fino alla parte in cui ti dicono di prendere tutto quello che hai imparato e creare un gioco di corse di cani ....

"cerca di non imbrogliare e guardare il codice sorgente fornito, dovresti essere in grado di farlo ormai" _ questa non è una citazione esatta ma fondamentalmente è quello che mi è stato detto .......

Mezz'ora fa stavano solo spiegando come fare array, quindi senza alcuna teoria sono destinato a creare un gioco funzionante?

Il motivo per cui lo chiedo è perché temo che questo sia tutto ciò che dovrei sapere almeno per iniziare a scrivere codice, eppure mi sembra di aver ricevuto una piccola cassetta degli attrezzi e mi è stato detto di costruire un grattacielo.

Grazie per qualsiasi consiglio


"Gioco di corse di cani" potrebbe significare molte cose. Per i principianti, coinvolge anche qualche grafica? Finché ciò che stai creando non coinvolge alcuna grafica, penso che sia perfettamente appropriato per un principiante. Forse fai il boia invece solo per evitare di pensare alle immagini ...
scherzando il

È abbastanza possibile costruire un grattacielo con quella piccola cassetta degli attrezzi: i grandi programmi sono solo raccolte organizzate di MOLTE piccole parti. Tuttavia, non sarai in grado di ADESSO - devi iniziare a costruire una casetta per gli uccelli e salire. Come ha detto jhocking, non provare ancora a fare nulla con la grafica - c'è una buona ragione per cui le cose iniziali sono sempre basate su testo non formattato.
Loren Pechtel,

Risposte:


10

Che cosa significa che ti insegnano dalla tua app di base "ciao mondo" fino agli if e agli array, quindi apparentemente si aspettano che tu sappia come uscire nel mondo della programmazione e creare qualsiasi cosa.

Mi sto perdendo qualcosa qui? So che questi sono i mattoni di tutti i programmi, ma i libri che leggo non mi mostrano mai cosa fare dopo.

In realtà no. Non lo sono. I mattoni di tutti i programmi sono l'astrazione e il riutilizzo. Molti linguaggi di programmazione non hanno nemmeno array o ifs o loop.

Ci sono alcuni grandi libri che ti insegnano come programmare al contrario di come funziona un particolare linguaggio di programmazione, che sembra essere il libro che stai leggendo.

Come progettare programmi alias HtDP è un libro del genere. Ti insegna, bene, come progettare programmi. E lo fa dandoti ricette da seguire per come analizzare i problemi, risolverli, trasformarli in algoritmi e ulteriormente in programmi di lavoro.

Nota che "ricetta" è fondamentalmente un'altra parola per "programma", quindi in altre parole, il libro ti insegna i programmi per gli umani da eseguire nella loro testa al fine di generare programmi che devono essere eseguiti dai computer. Quant'è fico? :-)

Gli autori stanno attualmente lavorando a una bozza per una seconda edizione di HtDP , che potresti voler leggere al posto della prima edizione. Il materiale sulla programmazione imperativa è stato rimosso e verrà trattato nel secondo volume non ancora scritto di How to Design Components , ma è possibile leggere quei capitoli mancanti dalla prima edizione.

Si noti che HtDP non presuppone alcuna conoscenza di programmazione ed è destinato agli studenti delle scuole superiori. Ma non lasciare che questo ti fermi: significa solo che probabilmente sarai in grado di finire alcuni capitoli più velocemente, ma non credo che ti annoierai.

Concrete Abstractions è anche una buona lettura lungo vene simili. Come HtDP, non presuppone alcuna conoscenza di programmazione.

Un altro libro che potresti sentire menzionato è la struttura e l'interpretazione dei programmi per computer alias SICP. È uno dei più grandi libri di programmazione mai scritti e, di nuovo, non assume alcuna conoscenza di programmazione.

Si è , invece, orientata a neofiti completi che studio al MIT . E così, mentre non si assume alcuna conoscenza di programmazione, si fa assumere un po 'di dominio della conoscenza, per esempio nei settori dell'ingegneria elettrica, la fisica e la matematica. Nota: questi non hanno nulla a che fare con i concetti insegnati, sono solo necessari per comprendere gli esercizi e gli esempi . Quindi, potrebbe essere meglio leggere prima HtDP o Concrete Abstractions e quindi leggere SICP.


1
Non ho mai sentito parlare di un linguaggio di programmazione senza una ifdichiarazione o una sorta di loop: senza di loro non sarebbe completo .
Ripristina Monica - M. Schröder il

@Martin Schröder: esistono linguaggi di programmazione senza loopistruzioni e sono Turing completi.
Giorgio,

@Giorgio: ad esempio? AFAIK hai bisogno di una sorta di loop / goto.
Ripristina Monica - M. Schröder il

2
@ MartinSchröder: Lambda Calculus è Turing-complete (in realtà, è la lingua per cui è stato inventato quel termine), e ha solo funzione di astrazione e funzione dell'applicazione. Non ha nemmeno ricorsione, devi codificarlo usando un combinatore di punti fissi! D'altra parte: ci sono molti linguaggi di programmazione che non sono completi di Turing, come SQL (prima del 2003), o più sottilmente, C (la completezza di Turing richiede una memoria infinita, ma C garantisce che puoi prendere l'indirizzo di qualsiasi cosa e archiviarlo in una variabile finemente dimensionata).
Jörg W Mittag,

2
@ MartinSchröder: Oppure, un altro aspetto: ci sono linguaggi di programmazione in cui la semplice compilazione del programma può costringere il compilatore a risolvere problemi difficili. In C # puoi codificare i problemi 3-SAT come problemi di risoluzione del sovraccarico e far sì che il compilatore li risolva, e in Haskell puoi effettivamente codificare problemi equivalenti al problema Halting nel sistema di tipi e far sì che il compilatore li risolva. Sembri pensare ai "linguaggi di programmazione" come linguaggi imperativi , ma ci sono molti linguaggi non imperativi che possono rappresentare calcoli complessi.
Eric Lippert,

5

Bene, non ti trovi in ​​una situazione unica. La maggior parte dei libri sui libri per principianti nel linguaggio di programmazione tende a concentrarsi maggiormente sugli elementi di base del linguaggio e questa è una buona cosa. Tuttavia, come è successo con te, alla fine ci troviamo in una situazione in cui abbiamo imparato ogni singolo costrutto che la lingua ha da offrire, ma non possiamo applicarlo per risolvere alcuni problemi pratici. In breve, il divario tra esempi testuali e programmi pratici può essere colmato solo quando si tenta di giocare con il codice (come ha detto Telastyn). Ecco cosa faccio generalmente mentre apprendo alcune nuove cose:

  1. Mentre impari dal libro, prova a trovare alcuni scenari di vita reale in cui sia possibile applicare alcuni esempi / tecniche di codice nel libro.
  2. Prova a mescolare i programmi di esempio forniti nel libro per creare qualcosa di più grande e complicato. Successivamente, prova a ridurre al minimo il codice e scrivi un codice diverso che dia lo stesso risultato.
  3. Google per progetti pratici per la lingua in esame.
  4. Dopo aver accertato di aver appreso l'elemento del linguaggio di base, sperimenta un framework a tua scelta. Per la prima volta, scegli qualcosa che abbia una curva di apprendimento più semplice.
  5. Cerca qualche progetto esistente e prova a studiarne il design.
  6. Scegli libri avanzati che ti insegnino cose più avanzate sulla progettazione di applicazioni come modelli di applicazioni, progettazione e implementazione OO ecc.

Alla fine si tratta di pratica e ricerca che ti aiuteranno a migliorare le tue capacità di programmazione e alla fine ti renderanno un architetto di molti grattacieli.


2

Vedi questo per C #. È molto completo: http://www.programmersheaven.com/ebooks/csharp_ebook.pdf L' ho usato io stesso, solo mezzo anno fa. Uso il compilatore #Develop con esso per gli esempi. Non posso aiutarti molto con Java perché non l'ho quasi mai usato.

Quando arriva il momento di programmare, ciò che molte persone non capiscono è che di solito usi un SDK o un framework aggiuntivo per quello che stai progettando. Quindi non aspettarti di passare immediatamente da Java o C # alla programmazione del telefono, perché probabilmente avrai bisogno di un buon framework intermedio e le curve di apprendimento per questi possono essere altrettanto fastidiose delle curve di apprendimento per i linguaggi di programmazione stessi. Sebbene il tutorial di C # che ho pubblicato riguardi solo C #, molti dei concetti che tratta sono visti in altri linguaggi orientati agli oggetti, come Java.

Modifica: lo scenario che descrivi è, purtroppo, il percorso che seguono molti tutorial. Non devi seguire un simile tutorial e, se funziona contro il modo in cui impari, è probabilmente meglio provare a prenderne uno diverso (non ne conosco nessuno, ma probabilmente Google lo fa). Ma per sicurezza, controlla se l'autore di quel libro che stai descrivendo ha spiegato il codice riga per riga. Non preoccuparti di quanto sei intelligente, solo un prodigio potrebbe passare direttamente da un libro a un gioco funzionante. Ricorda solo che i tutorial non sono affatto la misurazione standard delle abilità, quindi scegli quello che ti insegna meglio e non scoraggiarti!


Ottima risposta, e vorrei aggiungere che dovresti decidere su un progetto che vorresti intraprendere. Google modi per risolvere i problemi presentati dal progetto. Imparerai molto cercando modi migliori per risolvere i problemi che devi affrontare.
mortalapeman

1

Sì, dovrebbe essere abbastanza per realizzare programmi super di base. A questo punto provi a creare un programma leggermente più complesso di quello che ti hanno fatto i libri. Quando hai bisogno di fare qualcosa di specifico e non sai come anche con un po 'di lavoro, allora cerchi in Internet o chiedi a un insegnante / mentore. Ciò porterà a funzionalità più avanzate (e abbastanza spesso a un vicolo cieco poiché inconsapevolmente hai scelto qualcosa di molto più complesso di quello che puoi fare).

Nessun libro ti insegnerà come risolvere i problemi.

Nessun libro spiegherà come progettare programmi - questo viene fornito con la pratica. Nessun libro ti insegnerà come fare un'applicazione non banale: c'è troppa sfumatura; impareresti a costruire questa implementazione non cose come questa.

Il modo migliore per imparare a questo punto è dilettarsi. Per giocare con il codice per creare qualcosa. Proprio come gli artisti spesso iniziano a scarabocchiare piccoli bocconcini che diventano progressivamente più sofisticati e belli, così i programmatori hanno bisogno di quella progressione esplorativa.


1
"Nessun libro spiegherà come progettare programmi" - Gli autori di How to Design Programs potrebbero non essere d'accordo :-)
Jörg W Mittag

1
@ JörgWMittag: avranno alcune tecniche e dimostrazioni comuni di programmi tipici, ma qualsiasi cosa non banale richiederà un grande grado di giudizio umano appreso, che a partire dal 2013 non può ancora essere meccanizzato.
whatsisname

1

Non riesco davvero a ricordare se ho usato un libro per entrare in programmazione, ma immagino a quei tempi fosse più un manuale di riferimento alla sintassi che un tutorial. Mi ha insegnato cosa potrebbe fare il linguaggio di programmazione, ma non come costruire un'applicazione reale con esso.

Fortunatamente ci sono stati alcuni esempi nel libro che ho usato per scrivere (sì, nessun esempio di codice sorgente scaricabile allora) e poi ho cercato di capire come funzionava. Questo non è il modo ottimale per imparare la programmazione, ma per me è stato divertente al momento.

Quello che consiglierei è di porsi un obiettivo come " Voglio creare un'applicazione Javascript che disegna un cerchio che rimbalza " e quindi utilizzare le tue conoscenze già acquisite per iniziare e cercare tutto il resto negli SDK / documentazione della lingua e / o qui su SO.

Questo è l'approccio che sto usando quando provo ad entrare in una nuova lingua e apprendere i miei primi passi. La maggior parte dei libri che ho letto negli ultimi giorni non ero soddisfatto perché avevo la stessa sensazione di perdere qualcosa di importante . Ma per fortuna ora abbiamo Internet, quindi qualunque lingua tu voglia imparare, puoi trovare un codice sorgente di esempio su Internet e usarlo per continuare il tuo apprendimento.

modifica Naturalmente, alcuni libri più generali che ti insegnano come progettare un'applicazione o quale processo (SCRUM, XP, V-Modell) seguire è una buona aggiunta alla pura conoscenza del linguaggio.


1

Concordo con Jörg sul fatto che dovresti anche leggere alcuni libri generali sui concetti di programmazione piuttosto che imparare troppi dettagli su una determinata lingua in questa fase. Per quanto riguarda il libro How to Design Programs , è usato come riferimento in questo corso , che potrebbe essere di tuo interesse.

Altrimenti, un altro strumento che altri non hanno menzionato è parlare molto con altri sviluppatori . Ricordo che per me uno dei modi più efficaci per imparare a programmare era passare molte ore a discutere con colleghi o altri programmatori su aspetti della programmazione, linguaggi di programmazione, tecniche o problemi concreti che stavo affrontando in quel particolare momento. La trasmissione orale della conoscenza può ancora essere uno dei mezzi più efficaci per apprendere nuove competenze.


+1. Conosco persone che vanno alle conferenze senza andare a un solo discorso. Vanno lì per uscire nei corridoi e discutere dei problemi con estranei totali, solo per avere un diverso punto di vista.
Jörg W Mittag

0

Suggerirei di trovare progetti open source e di trasformarli in sandbox personali. Modifica comportamenti esistenti, aggiungi nuovi comportamenti ed eliminane anche alcuni. Gioca, implementa le tue idee e "e se provassi questo".

Non sto sostenendo che tu converta il progetto open source di qualcun altro e lo rivendichi come tuo.

Sto dicendo che guardare altri progetti di lavoro come mezzo per insegnare a te stesso come arrivare ai passi successivi. Ci sono molti siti disponibili con codice opensource da scaricare. Eccone alcuni che mi vengono in mente: CodePlex CodeProject


-5

Questa è la vita dei programmatori. Non conosci una tecnologia, ma sviluppi un "mondo di salve" e diventi un esperto. Nelle aziende (vita reale) è come funziona. In bocca al lupo


2
Questa non è una risposta molto utile.
svick
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.