Domanda

Sono un principiante della programmazione. Ho trascorso un semestre di informatica (abbiamo usato Java). Ho ottenuto una A nel corso e sono stato in grado di fare tutto assegnato, tuttavia non sono sicuro di averlo veramente capito. Ho ignorato il testo e ho imparato guardando i programmi di esempio e poi prova ed errore. Ero in testa alla classe, tranne per due ragazzi che conoscevano Java o un'altra lingua OOP.

Mi piacerebbe imparare Python. Costruirò anche un secondo PC da parti extra che ho e userò Linux. Fondamentalmente, voglio migliorare la mia conoscenza dei computer. Questa è la mia motivazione.

Ora sull'apprendimento di Python ci sono dei buoni libri di teoria della programmazione che potrebbero essere utili? O dovrei leggere di più su come funzionano i computer ai livelli più bassi? Non credo di sapere abbastanza per porre la domanda che desidero.

Immagino che per renderlo semplice, sto chiedendo cosa dovrei sapere per sfruttare al meglio l'apprendimento di Python. Questo non è per una carriera. Questo deriva dal desiderio di sapere. Non sono più un grande esperto di informatica (inoltre non avrebbe alcuna applicazione diretta alla mia carriera anticipata.)

Non sto cercando di imparare in " 30 giorni " o "1 settimana" o qualunque altra cosa. Quindi, a partire da un livello molto semplice, va bene per me.

Grazie in anticipo. Ho fatto una ricerca e non ho trovato quello che cercavo.

AGGIORNAMENTO: grazie per l'ottimo consiglio. Ho trovato questo sito al lavoro e non sono riuscito a trovarlo sul mio computer di casa, quindi sto solo leggendo ora.

È stato utile?

Soluzione

La mia raccomandazione è sempre di iniziare con un alto livello di astrazione. Non hai bisogno di sapere come funzionano le porte logiche e come puoi usarle per costruire una CPU: sono cose interessanti, ma sono cose interessanti che hanno molto lotto una volta che hai fatto casino ai livelli più alti. Python è quindi una scelta eccellente come supporto per l'apprendimento.

Come pensare come uno scienziato informatico: Imparare con Python è disponibile su Internet ed è un'eccellente introduzione ai concetti di alto livello che fanno andare i computer. Ed è anche specifico di Python.

Se stai cercando di rovesciare il cervello, SICP farà un buon lavoro. Non lo consiglio come primo testo, comunque; è pesante.

Entrambi questi libri sono di alto livello. Non ti insegneranno nulla sui dettagli di basso livello come le strutture di memoria o cosa fa effettivamente una CPU, ma è qualcosa che mi riserverei comunque in seguito.

D'A

Altri suggerimenti

Specificamente per la parte Python della tua domanda, posso consigliare vivamente http://www.diveintopython3.net/ di Mark Pilgrim. È gratuito e abbastanza ben strutturato.

Python è una buona scelta, ti divertirai!

http://www.pythonchallenge.com/

Penso che questa sfida sia perfetta per entrare in contatto con i principali punti di forza di Python e c'è un bel forum con molti thread Python interessanti per ogni livello.

Molto dipende da quale sia l'obiettivo generale dell'apprendimento di Python. Lo stai vedendo come apprendere una seconda lingua o capire meglio i computer e come utilizzare in modo efficace un linguaggio di programmazione?

Da come sembra che tu voglia acquisire una migliore comprensione dei computer ed essere un programmatore migliore. Imparare nuove lingue come Python probabilmente non ti aiuterà in questo senso. Consiglio comunque di imparare Python se sei interessato, ma una volta che hai imparato un linguaggio di programmazione, gran parte dell'apprendimento di un nuovo linguaggio sta acquisendo familiarità con la sintassi e i tipi di dati (di solito).

Avevi detto che non eri sicuro della comprensione del materiale della classe che prendevi. Se ritieni di non capire i concetti fondamentali (come loop, classi, ecc.), L'apprendimento di Python ti aiuterà a capire la programmazione poiché la maggior parte dei libri / guide rivisita questi concetti ( Learning Python, 3rd Edition dovrebbe aiutare con questo). Se capisci questi concetti, ma non sei sicuro di come applicare questi concetti, la mia raccomandazione sarebbe quella di conoscere le strutture di dati e gli algoritmi comuni (ad esempio ordinamento, ricerca, ecc.).

Parlando per esperienza personale, non sapevo come applicare ciò che ho imparato dalla lezione di programmazione introduttiva ai progetti di programmazione personale. Imparare a conoscere le strutture di dati di una classe ha contribuito a consolidare quei concetti che avevo appreso in precedenza fornendo algoritmi / strutture di dati che si basano su queste conoscenze precedenti. Questa classe mi ha anche permesso di pensare diversamente ai problemi in termini di utilizzo di queste strutture di dati.

Per informazioni sui diversi tipi di strutture dati, consultare: http://en.wikipedia.org/wiki/List_of_data_structures . Di solito, ogni struttura di dati è utile per uno scopo specifico (ad esempio gli alberi di ricerca binaria sono utili per la ricerca di informazioni ordinate). Sfortunatamente, non ho consigli sui libri (la nostra classe non ha usato un libro). Googling "Strutture dati" dovrebbe essere un buon punto di partenza.

Le strutture di dati mi hanno anche portato a pensare a quanto sia efficiente un'implementazione. La "complessità" di un algoritmo determina quanto tempo richiede l'esecuzione di un determinato codice. Ciò semplifica il confronto con altre implementazioni e determina quale sia la migliore.

Vorrei anche commentare che quando si tratta di apprendere concetti di computer, il modo migliore per imparare è fare. Un libro / classe può solo spiegare così tanto, e il resto devi imparare da solo. Ogni persona impara in modo diverso e la programmazione è un modo per prendere il materiale di cui leggi e pensarlo in un modo che ti sia meglio compreso.

Spero di aver risposto alla tua domanda. A questo punto, non è necessario preoccuparsi dell'hardware sottostante. Questo è utile per sapere se hai intenzione di farlo come una carriera (cosa che non sei) o se vuoi apportare ottimizzazioni specifiche all'hardware su cui stai eseguendo (nel qual caso, non vorrai usare Python) . Python è una buona scelta per conoscere le strutture di dati poiché ne implementa molte per te, ma è importante sapere a cosa servono.

Se sei ancora a scuola, prendi una classe di strutture di dati e vedi cosa ne pensi. Se ti piace, ti consiglierei di riconsiderare il ruolo della programmazione / CS nella tua carriera. Non devi specializzarti, ma considera una posizione minore o almeno una posizione che si avvale di queste abilità che stai imparando. Lo dico perché, nonostante non sia il tuo maggiore, sei interessato a capire come funziona un computer e prendere iniziative come l'apprendimento di Python, la costruzione del tuo computer e l'installazione di Linux.

Se hai ulteriori domande, non esitare a chiedere. Buona fortuna!

Python è un linguaggio di alto livello, quindi non ti darebbe molti benefici diretti per imparare come funzionano i computer ai livelli più bassi.

Non fraintendetemi: credo fermamente che il funzionamento a basso livello di un computer, ad es. linguaggio di assemblaggio e hardware, è qualcosa che ogni buon programmatore dovrebbe conoscere, perché ti aiuta a programmare in modo più efficace in qualunque lingua tu stia usando, di alto o basso livello. Ma non farà molta differenza nella codifica Python fino a quando non avrai acquisito un po 'di esperienza. Se hai appena iniziato con Python, suggerirei di stare lontano dalle operazioni di basso livello dei computer e di concentrarmi sulle basi di Python per ora. Una volta che ti senti a tuo agio, puoi passare a qualcosa come C e quindi potrebbe essere opportuno iniziare a guardare alcune cose di livello inferiore.

Quanto a ciò che dovresti sapere ... non molto, immagino. Python è un ottimo linguaggio per iniziare a programmare. Mantiene le cose semplici semplici ma è abbastanza ricco da permetterti di arrivare fino a un alto livello di complessità. Suggerirei probabilmente di guardare un tutorial; quello che mi capita di conoscere è sul sito web di Python , ma non sto sostenendo che sia necessariamente il il migliore per te. Una ricerca su Google dovrebbe darti molto per iniziare.

Ho iniziato Python (come il mio primo linguaggio di programmazione) alcuni mesi fa. Vorrei raccomandare Learning Python, di Mark Lutz per cominciare. Ma tieni presente che la chiave per imparare bene è di essere aperti, pazienti e disposti a lavorare e cercare cose che non capisci.

Buon divertimento!

Suggerirei di guardare il libro online su http://www.diveintopython.org/ per impara python.

Per quanto riguarda i progetti Python, proverei ad imparare il Django Framework. È un framework per la creazione di applicazioni Web. Hanno un ottimo tutorial per iniziare. Questo ti darebbe anche esperienza nella costruzione di un server web su un box Linux.

  

migliora la mia conoscenza dei computer

Bene, cosa intendi esattamente con quello? Python, o qualsiasi altro linguaggio di alto livello, sono progettati per nascondere effettivamente tutti i dettagli cattivi. Questo è uno dei motivi, perché è adatto a non professionisti come (ad esempio scienziato).

Se vuoi sapere come funzionano davvero le cose, dovresti imparare il puro C. Ma poi, se non hai intenzione di avere una carriera legata a SC, non ha molto senso. Scopri invece alcuni algoritmi e strutture di dati più avanzati. Ciò ti renderà più interessante, utile ed è indipendente dalla lingua e dalla piattaforma.

Risposta breve: tutti

Risposta lunga:

Imparare la tua prima lingua è sempre una sfida e, dopo la tua esperienza con Java, molte altre lingue sembreranno molto più semplici. Detto questo, la vera sfida nell'apprendimento dei linguaggi di programmazione è imparare quando usare una determinata lingua: puoi trovare documenti decenti per qualunque cosa tu scelga quando sarà il momento.

Per iniziare concretamente, passa a Wikipedia e sfoglia il loro elenco categorico dei linguaggi di programmazione , fai clic su tutti i nomi che hai mai ascoltato (e qualsiasi altra cosa che attiri la tua attenzione) e se l'articolo ha un esempio di codice, dagli un minuto o due per affondare (il resto dell'articolo aiuterà, ovviamente ). Il punto qui non è quello di padroneggiare ogni singola lingua (che è (1) inutile e (2) impossibile), ma di capire cosa c'è là fuori. Per qualsiasi lingua, esiste una manciata di altre lingue come questa, e se riesci almeno a leggere una lingua nella maggior parte di quelle categorie, avrai imparato un pezzo abbastanza grande dell'universo di programmazione. Quando nasce un nuovo progetto e qualcosa al riguardo ti ricorda la lingua che hai trovato, puoi semplicemente imparare quella lingua come parte del progetto. Può sembrare un sacco di lavoro, ma dopo, diciamo, la tua quinta grande lingua, perdi completamente il conto e impari continuamente nuovi nuovi senza accorgertene.

Quando smetti di relazionarti con una lingua come lingua madre, sarai in grado di imparare da esempi in altre lingue anche se non hai mai programmato in esse. Personalmente, ho scritto solo alcuni programmi Haskell, ma potendo leggere Haskell mi ha esposto a molte idee che potrei riciclare in programmi Scala e Python più pratici (oh sì, dopo di te impara Python, dai un'occhiata a Scala e probabilmente non userai mai più Java)

Anche trovare la lingua migliore per il lavoro non è l'intera storia. Avere molti strumenti nella tua cassetta degli attrezzi ti consente di mettere insieme cose incredibili in breve tempo scrivendo ogni pezzo del tuo progetto nella lingua più semplice che potresti. Questo potrebbe non essere appropriato per tutti i progetti, ma, ragazzo, puoi fare delle dimostrazioni impressionanti.

Ci vogliono molti anni per arrivare al punto in cui nessun linguaggio di programmazione è totalmente estraneo (o almeno straniero per più di una giornata di hacking), ma penso che sia un piano a lungo termine molto salutare e realistico da provare conquistare un campione rappresentativo di ogni categoria approssimativa. Buona fortuna!

Dato che Python non era la mia prima lingua, ho trovato il Python Cookbook utile per l'apprendimento

  1. Di cosa era capace Python
  2. L'idiomatico, di "pythonic", " modo di fare qualcosa.

La programmazione dell'insegnamento delle lingue è sempre stata associata a una dichiarazione cliché durante l'apprendimento. " Scrivere programmi per imparare la programmazione " ;. Anch'io suggerirei lo stesso.

Se hai intenzione di iniziare dalle basi. Questo è ovviamente il punto di partenza più suggerito. È lungo, ma vale sempre. http://www.diveintopython.org/

Dato che ti piace un po 'di Java, questo potrebbe essere ancora meglio per te. http://www.swaroopch.com/notes/Python . Avviare python 2.xo 3.0. Personalmente sono un fan di Python 3. Ma per cominciare potrebbe essere difficile ottenere campioni e riferimenti a programmi online. Quindi per te 2.x potrebbe essere migliore. Ma lascio a te.

Come ho iniziato " Scrivi programmi .. " ;. Puoi iniziare qui.

  1. http://www.spoj.pl/ - un sito di sfide di programmazione, dove puoi scegliere da una vasta gamma di argomenti, principalmente algoritmi e ha un enorme database di domande. Naturalmente la scelta dei linguaggi di programmazione dipende da te.
  2. http://projecteuler.net/ - un sito di domande matematiche, qui devi solo inviare una risposta , qui è permesso barare, quindi sii libero di prendere in prestito la logica dagli altri, ma prova a scrivere tu stesso il programma.

Dopo aver pensato di avere acquisito sufficiente competenza in Python, puoi provare le ricette in questo libro ricettario in pitone http://www.amazon.com/Python-Cookbook-Alex-Martelli/dp/0596007973 .

Per lo sviluppo di applicazioni, dopo aver pensato di poterlo gestire, iniziare da wxPython o < a href = "http://www.riverbankcomputing.co.uk/software/pyqt/download" rel = "nofollow noreferrer"> PyQt . Personalmente suggerirei PyQt. È reattivo, veloce e ha un ciclo di sviluppo decente, non uso WxPython da molto tempo, ma pochi programmi che ho scritto, da molto tempo, non mi sono sentito così bene. Ancora una volta, dipende da te.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top