Informatica e altri argomenti avanzati insegnati in javascript [chiuso]

5

Sono uno sviluppatore Javascript "okay" che lavora su browser javascript e node.js. Tuttavia, dato che sono autodidatta, a partire dal copiare e incollare jquery, ci sono molti buchi nella mia programmazione / educazione CS.

Non ho davvero il tempo di dedicarmi completamente all'apprendimento di tutti i concetti di CS che potrebbero essere insegnati in un vero programma universitario, e di imparare C o Scala o altro, sono semplicemente troppo dipendente dall'hacking e dal fare cose quel lavoro. A un certo livello, studiare CS sembra essere un "ridimensionamento prematuro" nel linguaggio di Hacker News.

Ma ogni tanto mi colpisce il pensiero che forse c'è qualcosa che dovrei davvero imparare a portare le mie capacità e la mia produttività al livello successivo.

C'è un libro, un elenco di concetti o cose che posso studiare e imparare nel mio "tempo libero" che vedrebbe ritorni ragionevoli sulla mia produttività e capacità in 1 - 2 mesi?

Grazie!

E sì, l'unico linguaggio che conosco e uso è Javascript, anche se ho armeggiato con Python (High School), Ruby (RoR), PHP (Drupal) e Assembly (Making Diablo 2 Mods) in passato.

Si noti che un libro come le Applicazioni Web JavaScript di O'Reilly è troppo facile per me e non proprio Sto parlando.

    
posta Mark 12.09.2011 - 10:50
fonte

7 risposte

9

Vorrei iniziare con "Javascript: The Good Parts" di Doug Crockford. Leggi anche il suo sito web con attenzione.

Se vuoi veramente capire il calcolo controlla "Struttura e interpretazione dei programmi per computer" di Abeleson e Sussman. Puoi acquistarlo online gratuitamente o acquistare una copertina rigida. È scritto usando Scheme, ma lo schema è un linguaggio piuttosto semplice e non avrete problemi a capirlo.

L'altra cosa che raccomanderei è avventurarsi oltre JavaScript. Scopri "Seven Languages in Seven Weeks".

O'Relly ha anche una pagina sul percorso di Javascript Mastery:

link

    
risposta data 12.09.2011 - 10:56
fonte
3

Per quanto riguarda le cose su CS, queste sono a mio avviso i concetti base più importanti:

  • Liste concatenate
  • Hash Tables-
  • Alberi binari, alberi AVL
  • code
  • Stack

Riguardo alle strutture dati, questa è una cosa che dovresti sapere davvero. Ti aiuta a scrivere codice molto più efficiente in seguito.

Per quanto riguarda gli algoritmi, dovresti almeno averne sentito parlare:

  • Complessità, O (n²), O (n), O (n log n)
  • Ordina algoritmi come Ordinamento rapido, Unisci ordinamento, Inserisci ordinamento, ...
  • Albero che attraversa ... In ordine, ordine postale, ...
  • Algoritmi ricorsivi vs iterativi

Sono cose che ho sentito all'università nei miei "Algoritmi e strutture dati" minori. (Ecco come si chiama questa conferenza in Germania.)

Riguardo a Javascript ti consiglio di giocare su cose come i prototipi, è piuttosto interessante. Anche se dovresti aspettare di usarli in modo produttivo a meno che tu non abbia fatto qualche progetto privato con loro. Trovo davvero strano che solo pochissime risorse (comprese "Le parti buone" per quanto posso vedere) non le affrontino nei dettagli. Ma raramente vedi applicazioni Javascript su larga scala (ancora).

Le cose che in passato mi hanno aiutato ad aumentare la produttività molto velocemente erano la lettura di blog di persone che usano il mio linguaggio di programmazione preferito. In particolare, controlla reddit ...

link http://www.reddit.com/r/python/ ...

Fai attenzione agli articoli del blog che riguardano l'ottimizzazione e la progettazione del software! Questa è roba che conta;)

Oh e per quanto riguarda Javascript: Assicurati di controllare link A mio parere la migliore risorsa Javascript sul web .. .

    
risposta data 15.09.2011 - 22:46
fonte
2

Le buone pratiche di programmazione trascendono i linguaggi e probabilmente staresti meglio cercando di espandere le tue conoscenze senza legarle rigorosamente a JavaScript. Molti concetti saranno applicabili una volta che li hai capiti, ma filtrando l'elenco di libri che desideri leggere solo per quelli JavaScript, perché potresti perdere molti dei migliori.

Ci sono tonnellate di libri eccellenti che trattano questo argomento (chiamiamolo ingegneria del software), come Refactoring: Migliorare il design di Codice esistente (a metà pagina), Il programmatore pragmatico: da Journeyman a Master , o su un lato gestionale Soluzioni oggetto: gestione del progetto orientato agli oggetti per citarne solo alcuni. La maggior parte di questi libri contiene concetti che cambieranno il modo in cui pensate allo sviluppo, indipendentemente dal linguaggio utilizzato, anche se, ammesso che quelli che ho menzionato hanno un angolo OO per loro.

    
risposta data 14.09.2011 - 12:47
fonte
1

Per padroneggiare JavaScript penso che sia necessario impegnarsi tanto quanto qualsiasi altra lingua, che penso Douglas Crockford spieghi bene in The Good Parts. Non ho letto il libro e raccomanderei invece di guardare la sua presentazione, che è allo stesso tempo educativa e divertente, e personalmente penso che mi abbia reso un programmatore JavaScript migliore.

La presentazione di Douglas Goodfords di The Good Parts è disponibile gratuitamente qui: link

    
risposta data 12.09.2011 - 11:26
fonte
1

Ho attraversato il cerchio dell'apprendimento nei canali ufficiali e all'inizio mi ha fatto sobbalzare un po 'quando hai trascurato questa educazione come superflua. Tuttavia, sono anche d'accordo con te sul fatto che il design è tanto pessimo quanto in fase di progettazione, il peggio in un certo senso in quanto potrebbe convincere le persone che la progettazione potrebbe non essere così buona dopo tutto.

La programmazione non parla di linguaggi o principi, ma di strutturare un'idea, la tua, o anche più difficile, quella di qualcun altro in una forma eseguibile formale. I metodi che più ti aiutano a farlo non si trovano nelle API o nelle librerie, anche se se grigi la superficie e vedi oltre i metodi e gli oggetti, riconoscerai alcune di queste metodologie. È ciò che fa la differenza tra un'API facile da imparare, ovvia da usare e difficile da sbagliare. Dopo un po 'dovresti riuscire a indovinare senza guardare la sintassi corretta e se l'API è ben progettata dovresti essere abbastanza vicino a ciò che è effettivamente necessario.

Detto questo, se dovessi darti semplici consigli per renderti un programmatore Javascript migliore sarebbe questo:

  • Trova materiale Crockford (+1 per Zachary) sulla lingua. È di gran lunga il migliore che ho trovato e l'unico che ti guida nel farlo bene. Molto probabilmente l'ispirazione di tutto il buon Javascript che è apparso negli anni passati. Guardate intorno al sito web, c'è anche un sacco di materiale video che si adatta abbastanza bene per un transito educativo se si ha il privilegio di viaggiare in autobus o in metropolitana per lavorare. Questo punto da solo ti darà i ritorni significativi che cerchi.

  • Leggi informazioni su SOLID . Quindi torna al materiale di Crockford, ne riconoscerai molto nel suo discorso e nei suoi commenti sulla lingua. Sei un ragazzo pragmatico, quindi all'inizio questa roba ti sembrerà un po 'aliena e troppo astratta per te, tuttavia, la tua perseveranza sarà ampiamente ricompensata dal momento che i principi affondano nel tempo. Sto ancora imparando molto su questo (15 anni dalla laurea) e ogni volta che un nuovo principio affonda nel mio codice fa un grande salto di qualità rendendomi complessivamente più produttivo. Non aspettarti che tutto venga da te come un'epifania, quindi torna ad esso ogni pochi mesi man mano che la tua comprensione cresce.

  • impara un'altra lingua. ti aiuterà nella carriera, ma sarà anche una fonte di insegnamenti. Solo per vedere come un linguaggio diverso implementa le stesse idee ti darà una migliore comprensione di queste idee. Detto questo, per il tuo profilo non sono sicuro che orientarti verso Java o C # sarebbe consigliabile. Se usato per la libertà di un linguaggio come Javascript, anche dopo aver seguito le castrazioni di Crockford, Java o C # ti sembreranno una prigione. Vedo che hai avuto qualche contatto con Python, puoi approfondire l'argomento o puoi scegliere un'altra lingua. Scala, F # sono un po 'più difficili ma ti daranno più informazioni su alcune delle funzionalità di javascript. Groovy, Ruby dovrebbe anche adattarsi al tuo profilo abbastanza bene e offrirti un buon ritorno sull'investimento. Devo dire comunque che Python è e rimane una delle mie lingue preferite (sono abbastanza abile in 12-15 lingue).

Spero di esserti stato utile, buona fortuna per i tuoi insegnamenti.

    
risposta data 15.09.2011 - 04:18
fonte
0

Anch'io sono autodidatta e ho iniziato con Basic su un C64 negli anni '80. Oggi sono pagato come qualsiasi altro M.S. e non ho frequentato nessun corso di CS oltre a un singolo corso di C ++ per ingegneri elettrici (mentre studiavo ingegneria civile che presto ho abbandonato per la programmazione).

Non posso raccomandare una soluzione rapida per il tuo problema perché credo che non ce ne siano. Costruisci quello che hai già - se capisci veramente l'assembly, sei più che pronto per C. Insegnati come eseguire l'aritmetica dei puntatori, elimina qualche tempo per il debug dei problemi di allocazione della memoria e il conteggio dei riferimenti prima ti muovi ai linguaggi di programmazione di livello superiore (in particolare i dati raccolti). Le abilità e la disciplina che raccogli durante l'hacking C / C ++ ti serviranno eccezionalmente bene, a prescindere dalle nuove lingue che potrebbero essere richieste o da quale settore lavorerai nei prossimi decenni.

Ho apprezzato il fatto che non hai chiesto come diventare un hacker JavaScript migliore, e voglio solo incoraggiarti a guardare ancora oltre - lascia che JavaScript sia per te quello che la 10 GOTO 20 era per noi vecchie scoregge - una porta apri a un cielo più ampio.

    
risposta data 14.09.2011 - 23:48
fonte
0

Sì, puoi leggere libri sugli algoritmi o su come scrivere più codice "efficace e pulito", ma penso che sarà molto più facile (e meno costoso) per te solo per lanciare progetti rispettabili github e guardare al codice. Quindi segui Wikipedia o Stackoverflow su ciò che non capisci.

Dato che sei un programmatore Javascript, potrebbe essere una buona idea capire come funziona il parser e il runtime di Javascript (V8) o come funziona nodejs. Queste tecnologie usano molte delle cose menzionate da @Philip. Anche Nodejs e V8 sono scritti in C / C ++, che è sempre utile conoscere un po 'di.

A meno che tu non abbia una disciplina incredibile, trovo che studiare qualcosa per il gusto di non essere efficace come scegliere un progetto o un problema e imparare sulla strada.

Penso che imparerai di più (non solo programmando) scegliendo qualcosa di stimolante da affrontare e poi fai delle ricerche su come risolvere il problema.

    
risposta data 16.09.2011 - 13:59
fonte

Leggi altre domande sui tag