E 'una buona idea per me per imparare Python prima di C o di qualche altra lingua Compiler? [chiuso]

StackOverflow https://stackoverflow.com/questions/2399471

  •  25-09-2019
  •  | 
  •  

Domanda

In questo momento sto andando attraverso l'introduzione del MIT Computer Science al corso via OpenCourseWare. Come parte di questo corso sto imparando la lingua Python.

Ho letto un sacco di cose sui benefici di apprendimento C. Prima di scavare più in profondità in Python mi chiedo se sarà ostacolato o aiutato imparando Python prima.

Pensa che io sviluppare cattive abitudini o qualcosa di simile da Python?

EDIT:. Cambiato Community Wiki, a causa della natura personale di domanda

Apprezzo tutte le grandi risposte alla mia prima domanda SO. Io sono in realtà piuttosto spiazzato dalla sincerità delle risposte / commenti. Grazie, un sacco a tutti!

È stato utile?

Soluzione

Parlando da 37 anni di lavoro in Dio sa quante lingue, posso dirvi che lavorare in Python permette di concentrarsi quasi esclusivamente su come ottenere l'algoritmo corretto e non preoccuparsi di Dettagli . Ho scritto probabilmente 300-400.000 linee di C nella mia vita e l'unico modo era sopportabile era sostanzialmente quella di creare il mio ambiente di OO.

C ha la sua utilità, ma in questi giorni tendono ad essere sia per a) consentono di ottenere più vicino a un pezzo di hardware, oppure b) di gestire un ciclo davvero stretto. Se si trova un bisogno, un'occhiata a uno strumento come SWIG o SIP per integrare la vostra C nella vostra Python.

Altri suggerimenti

Per ragioni storiche, C è stato il primo lingue molti programmatori, in particolare, questi della generazione precedente, ha imparato. Eppure molti di loro (tra cui in questa generazione più vecchia), prima imparato una o più altre lingue, in genere quelli con un più alto livello di astrazione (di base, LISP, Pascal, per citarne alcuni) prima di imparare C.

I era del secondo tipo (ad esempio C non era il mio linguaggio "nativo", anche se, ho imparato assemblaggio molto presto), e sono abbastanza convinto della numerosi vantaggi di associato ad un serio " TOUR" nel linguaggio C , anche se, per una questione di praticità, molti di noi non potrà mai programmare gran parte di ogni conseguenza in questa lingua. Detto questo, non vedo alcun motivo valido per fare C essere il tuo prima la lingua, o qualsiasi sentore che in qualche modo la padronanza di Python (o Prolog o ...) avrebbe in qualche modo le capacità di programmazione di uno mettere in pericolo per il prossimo decennio ...

Quindi il mio consiglio: godetevi Python, prendete le
! Quando si ottiene un tatto per la programmazione, fare fare un punto per imparare il C a un certo momento. È particolarmente rilevante in un programma che comprende scrittura compilatore e / o sistemi operativi, e, come detto, pertinenti in molti altri modi. Vedrai che non per possibile "superficie" / trucchi sintattici (questi accadere per tutto il tempo, almeno per me, quando si impara una nuova lingua o di nuovo ad un vecchio linguaggio del mio passaggio, dopo essere stato esposto a qualcosa di diverso per un mentre), si dovrebbe avere problemi con C, almeno nessun problema associato al tuo apprendimento di altre lingue.

Io non sono un programmatore esperto, ma dalla mia comprensione e l'uso è che Python è un linguaggio molto semplice e potente che ti permette di fare qualsiasi cosa avete bisogno.

Con C si ottiene un maggiore controllo su ciò che sta accadendo e questo significa anche che devi scrivere tutti quei dettagli te mentre in Python che qualcuno ha fatto per voi e avete opzioni che lavoro per quasi tutti i casi diversi.

A causa C di livello inferiore (più vicino a come la macchina funziona in realtà) che viene compilato in codice macchina più da vicino a ciò che le CPU vogliono mentre Python, essendo linguaggio di alto livello, non finirà per essere il più veloce.

Credo che i dolori di transizione da Python a C sarà più come "Perché devo fare tutto questo? In pitone sarei finito in una sola riga!"

posso offrire solo che imparare C vi farà apprezzare Python e altri linguaggi dinamicamente tipizzati più. Io dico spesso la stessa cosa a chiunque sia abile con PHP. La creazione di due graffiato alcuni gravi pruriti. E no, non è come un "quando avevo la tua età ho camminato 300 miglia nella neve a scuola" genere di cose.

Essere in grado di assegnare un valore a una variabile ed avere la variabile solo 'adattarsi' per memorizzare ciò che si alimentano è un stupefacente realizzazione a chiunque abbia passato del tempo sostanziale lavorare con C su più architetture.

Inoltre, la scrittura di un servizio multi-threaded di qualche tipo in C vi farà davvero apprezzare quanto portatile Python è davvero.

Ci sono altre ragioni buone, la potenza, ottenendo 'più vicino al metallo', la gestione della memoria comprensione e apprendimento su compilatori e l'ottimizzazione. Tuttavia, ho il sospetto, la prima cosa che vi colpirà è proprio come comodo linguaggi di livello superiore sono davvero.

. Disclaimer: Io uso soprattutto C

È necessario iniziare da qualche parte, e Python è una scelta buona per un programmatore di partenza: non è necessario utilizzare un compilatore (-> facile da usare), dispone di una ricca biblioteca (-> si può realizzare molto), ed è orientato agli oggetti (flusso principale in questi giorni). Così la frustrazione evitabile è ridotto al minimo in questo senso. Ma sempre tenere a mente che ci sono un sacco di altre lingue là fuori, e che si dovrebbe imparare loro, anche. Se vuoi diventare programmatore e guadagnare denaro, è necessario (almeno) raccogliere C ++, Java o C # dopo Python.

Bella domanda! Ricordate sempre che le vostre abilità di programmazione non dovrebbe mai essere dipendente dalla lingua. Anche se, C è un linguaggio ideale per imparare quando si tratta di Computer Science. Avete 4 livelli quando si tratta di programmazione e normalmente ogni università Undergrad corso offrono questi argomenti:

  1. programmazione procedurale
  2. Object Oriented Programming
  3. Programmazione con Strutture dati
  4. Design Patterns **

Devi andare passo dal maestro step.Do tutti questi 4 livelli. Poi alla fine della giornata si deve decidere che cosa si vuole veramente fare e poi ti hanno abbastanza conoscenze quali caratteristiche in quale lingua si deve usare per quale problema. C è il linguaggio di molti sistemi operativi, tra cui Unix, Linux e Windows. Il potere di C di puntatori non può essere eguagliata da qualsiasi linguaggio finora. Python è un linguaggio buono e ha i propri vantaggi. Un consiglio importante che posso dare in questa fase è quella della "sintassi". Inizialmente si dovrebbe padroneggiare il linguaggio C e di ottenere un po 'di conoscenza pratica di Python come well.Once hai dimestichezza con C, allora sarà molto più facile per voi a programmare in C ++, C #, Java e PHP. Ma se si parte da Python subito allora si potrebbe non sentirsi a proprio agio con base c_syntax languages.Same va per i principianti che hanno la passione per la programmazione e partono da Visual Basic. Anche tenere d'occhio le tendenze del settore e gli sviluppi in programmazione. Ma bastone con ciò che i corsi undergrad si stanno insegnando.

Sono uno studente di CS undergrad così e lavorando come programmatore, allo stesso tempo quindi so quello che stanno attraversando. Spero che il mio consiglio vi aiuterà.

Il problema principale con l'apprendimento Python prima è che ogni altra lingua si tenta di imparare dopo che probabilmente soffre dal confronto inevitabile. Tuttavia, ci sono momenti in cui si deve di utilizzare uno strumento diverso, perché non hai altra scelta. Esempi di queste situazioni potrebbero includere:

  • esecuzione molto veloce (SWIG, Cython, Psyco, PyPy, vuoto-rondine, etc)
  • piattaforme su cui non v'è alcuna fase di esecuzione python (ma questi sono rari)
  • domanda di alta concorrenza multi-core (diverso pitone VM solito può affrontare questo)

E 'probabilmente meglio affrontare ogni strumento da una posizione di necessità piuttosto che uno della prudenza; in altre parole, imparare il C solo quando è richiesto di farlo a causa di requisiti specifici situazionali.

Python ha un'immediatezza che rende più facile da imparare. Python per la facilità, C (e lingue affini) per l'alimentazione.

Dato che la questione si afferma: No. Non imparare prima C. Imparare Python.

Alla fine si dovrà imparare C quando si ha bisogno di hackerare sistemi embedded, bootsequences, il codice del kernel Linux, ecc Si avrà bisogno di conoscere i puntatori e che il vostro sistema si crasch e bruciare se non si ottiene nel modo giusto la prima tempo. Sarà necessario tornare memoria utilizzata da soli. Questo è di solito un incubo, e in realtà non contribuiscono alla gioia di programmare come queste cose solo ottenere nel modo e ti fa trascorrere il tempo senza fine nel debugger.

Alla fine sui sistemi integrati si impara un po 'di linguaggio assembly, e poi vi renderete conto che la C è solo un wrapper per la maggior parte di montaggio / possibilità di CPU nella architettura dei chip. Puntatori è una modalità di indirizzamento supportato profondità dai transistori.

Tutte le lingue moderne ti rende un migliore e più veloce programmatore, e hanno fatto fuori con queste cose. Non è davvero imparare ad usare una macchina da scrivere in questi giorni, a meno che la vostra intenzione di un posto senza elettricità, vero? C è semplicemente per applicazioni molto particolari.

Non credo che si sarà in qualche modo diventato fondamentalmente errata imparando Python prima. Ci sono un sacco di vantaggi per l'apprendimento più linguaggi di programmazione Python e per sé è un modo interessante per esplorare questo. Ad esempio, se si dispone di alcuni problemi di prestazioni con Python si possono esplorare a scrivere alcune parti del codice in C (o pyrex / Cython o Fortran, ecc ...) e poi il confezionamento in su e che lo rende utilizzabile nel codice Python.

Personalmente, mi piacerebbe scrivere un sacco di codice a mano quando sto imparando cose. Penso che sia una buona pratica e gli algoritmi di scrittura (sulla carta) in Python è un sacco di volte più conveniente che li scrivere in C o C ++ (non sempre). Questo è più o meno per le ragioni Peter stava dicendo, c'è meno sforzo spesi per i dettagli e in modo da poter poi spendere per altre cose concettuali.

Sono ancora molto un hobbista, ma una cosa che io vengo alle prese con è che un linguaggio di programmazione è uno strumento, ma spesso è uno strumento unico. Ci sono competenze di programmazione che sono destinate ad essere prese da una lingua all'altra e questi sono grandi. Ma essere in grado di 'Grok' una lingua è anche molto importante, in senso pratico. Per questo motivo, ritengo che qualsiasi lingua si decide di imparare prima non importa tanto perché è importante sviluppare la capacità di muoversi su e imparare a te stesso in modo efficace esprimere in una lingua diversa in ogni modo.

Nel mondo in questo momento c'è un certo grado di pitone "fanboysm". Sempre più i programmatori (alcuni di loro tutto rispetto) ritengono che pitone è la risposta a tutte le loro rimostranze. Dopo aver visto come "cool" è pitone, cominciano ad evangelizzare la lingua, ad un grado psicotica, negando la verità ovvia: python non è per tutto / tutti

.

Se si seguirà il percorso pitone probabilmente si svilupperà un riflesso ulteriore: "Diamo un'occhiata nelle librerie per vedere se non è già stato fatto", e dopo un po ', quando sarà il momento, e si dovrà imparare il C, si disperatamente dire: "non posso credere che devo scrivere il mio dict utilizzando alcuni puntatori void * per contenere i miei dati che cosa è con questo linguaggio C comunque!?!"

Dopo essere stato insegnato C / C ++ come il mio primo linguaggio di programmazione nel 1996 via di Borland TurboC ++ 1.0 (schermata blu e testo giallo) posso consigliare seriamente imparare qualcosa (in questo caso Python) diverso da C. Detto C / C ++ aiuto volontà se vi capitasse di voler sapere di più su interazione hardware (sviluppo embedded, la scrittura del driver, ecc.)

Secondo i Hanselminutes Podcast compilatore VB.NET è scritto in C quindi ha ancora di usi.

La maggior parte dei concetti di programmazione sono indipendenti dalla lingua; si sta molto meglio serviti da partire con un linguaggio che è facile da imparare ed applicare in modo da poter concentrarsi sui fondamentali. Quel linguaggio non sarebbe C.

C fa un orribile la lingua di insegnamento; non è mai stato destinato ad essere utilizzato come tale. E 'stato progettato per programmatori esperti che volevano maggiore flessibilità e controllo rispetto alle altre lingue del tempo (primi anni '70) in dotazione. Si spendono più tempo di apprendimento sulla peculiarità del C. di te riguardo la programmazione vera e propria.

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