Python sta lentamente sostituendo C nelle università. Questa mossa degrada la qualità degli studenti CS? [chiuso]

1

Credo che l'apprendimento di C sia uno degli aspetti più importanti per qualsiasi programmatore. È una bellissima combinazione di un linguaggio di alto e basso livello. Alcune università si stanno muovendo per interrompere l'insegnamento di C nelle fasi introduttive e utilizzano invece Python.

Questo passaggio a Python, da C, degraderà la qualità degli studenti CS? Se ti perdi alcuni degli aspetti di un linguaggio di basso livello, ti manca qualcosa di importante dal tuo livello CS?

    
posta nrb 04.03.2012 - 08:49
fonte

10 risposte

20

Due cose:

  1. L'informatica non riguarda la programmazione, ma i concetti di livello superiore, gli algoritmi, i fondamenti matematici della programmazione, quel tipo di cose. Qualsiasi linguaggio di programmazione insegnato come parte di un curriculum CS serve come veicolo per esprimere e implementare tali concetti, ma l'apprendimento approfondito del linguaggio in sé non è davvero un obiettivo primario. In quanto tale, Python (essendo facile da imparare, multi-paradigma e basso codice boilerplate) è una scelta eccellente per la maggior parte delle cose di alto livello. Tuttavia, concetti di programmazione di basso livello come allocazione di memoria, operazioni bit a bit, ecc., Appartengono anche a CS, e Python fornisce un accesso scarso o nullo a questi, quindi è probabilmente necessaria una lingua aggiuntiva, e C sembra essere il miglior candidato (sebbene anche l'assemblaggio sarebbe idoneo, anche se è meno comodo da usare).

  2. Nessun programmatore dovrebbe entrare nel mondo del lavoro con la conoscenza di un solo linguaggio di programmazione. Credo che essere abbastanza fluente in almeno due (idealmente, due lingue molto diverse), e dopo averne annusato circa una mezza dozzina (idealmente, coprendo una vasta gamma di stili e paradigmi), sarebbe giusto. Un programmatore con esposizione a una sola lingua sarà limitato ai modelli di pensiero di quella lingua e della sua comunità, e mancherà di informazioni acquisite da altri linguaggi e paradigmi. Alcuni concetti, come ad esempio i concetti di Programmign funzionale come i concetti di purezza, curry, closures o OOP come interfacce, composizione e incapsulamento, faranno realmente "clic" solo dopo averli utilizzati in un linguaggio progettato attorno ad essi. Non arriverai a quel punto se hai mai imparato una sola lingua, anche se è versatile e multi-paradigma.

risposta data 04.03.2012 - 10:15
fonte
9

Questa è un'ipotesi errata, seguita da una conclusione errata.

La programmazione didattica riguarda l'apprendimento di come risolvere i problemi con i computer. Ciò può accadere in una varietà di lingue diverse. C non è certamente la migliore, né la lingua peggiore per iniziare.

Sai cosa degraderà la qualità degli studenti CS? Non li prepara per il posto di lavoro, facendo in modo che usino gli strumenti che troveranno effettivamente lì.

    
risposta data 04.03.2012 - 10:43
fonte
5

Gli studenti CS dovrebbero imparare C (e alcune varianti di assemblatore per quella materia) per capire come i computer rotolano. Se ti consideri non solo uno slave di codice, ma uno sviluppatore, dovresti capire come fa la macchina e il sistema operativo.

    
risposta data 04.03.2012 - 09:13
fonte
2

Molti programmatori in questi giorni contesteranno la tua affermazione sull'importanza dell'apprendimento C. Molti dei punti difficili di C, come

  • tenere traccia dei puntatori
  • assicurandosi che la memoria sia allocata e deallocato correttamente

non sono più rilevanti per i moderni linguaggi di programmazione. Complimenti alle università che stanno riconoscendo questo e passando a Python.

    
risposta data 04.03.2012 - 08:54
fonte
2

Sono assolutamente d'accordo che l'apprendimento C è molto importante per i programmatori. È il linguaggio più ben progettato (secondo me).

Ma penso anche che per i principianti, potrebbe essere GIUSTO non iniziare il loro percorso di programmazione con C. Learning Python è GRANDE esperienza, e l'apprendimento di C potrebbe non essere così bello all'inizio. E per i neofiti, una buona prima impressione di programmazione può essere più importante dell'apprendimento della sintassi ondulata dei puntatori C e dell'aritmetica dei puntatori. Da qui la mossa.

    
risposta data 04.03.2012 - 09:04
fonte
2

Puntatori e memoria e cose sono cose difficili da spiegare ai nuovi studenti, quello che vedo nella mia area è che le lingue "più difficili" vengono rimpiazzate da questa "novità" come Python e Java. Quelle sono più facili da spiegare che ad esempio C ++, Perl, anche Basic. Quello che penso che peggiori la comprensione è solo il lancio di moduli OOP e ready made agli studenti. Alla fine non imparano davvero nulla di Computer-Scienza, solo per analizzare alcuni dati in un'altra cosa con uno strumento per la scrittura di script . Partire dalle cose semplici genera solo menti pigre, non programmatori pigri, di cui abbiamo bisogno. Ma bene, TLDR; versione: Python è per insegnanti pigri, C è per insegnanti bravi coraggiosi. edit: Non sto fiammando Python, è fantastico, ma è il tipo di cosa che devi imparare da solo o con una community, ma C ha bisogno di un posto nei corsi di CS.

    
risposta data 04.03.2012 - 09:09
fonte
2

Devi imparare C ma potresti stare meglio con quello non essendo la tua prima lingua

Sono programmatore di C di livello per un decennio ora, quindi potrei essere di parte. Penso che l'apprendimento C sia un MUST. Ti costringe alla programmazione più vicina all'hardware (anche se non stai facendo un lungo assemblaggio). Ad esempio, ti fa davvero pensare in termini di come il computer utilizza memoria, heap e stack. E naturalmente, sarà un inferno sulla terra se proverai a capire Assembly prima di provare a imparare C.

Rubare commenti da @TikhonJelvis

I think not having any low-level courses would be a shame. –

Tuttavia, detto questo: capire come funzionano le macchine non è ancora tutto . Come programmare è una cosa piuttosto elementare che dovresti imparare prima di approfondire il modo in cui le macchine lo interpretano, quindi in generale ogni volta che C veniva usato come prima lingua. Quindi, utilizzando un linguaggio di livello superiore, qualcosa che ti consente di iniziare più rapidamente e di evitare alcuni hickup iniziali potrebbe farti imparare altri aspetti

Inoltre, dopo aver imparato a risolvere i problemi con la programmazione, si può ragionevolmente approfondire la progettazione e la modellazione di aspetto C non è proprio la lingua più importante lì. Penso che ci sia una grande espansione nell'uso di Perl, Python in molti machine learning, web / data mining, recupero di informazioni, classe di applicazioni bioinformatiche (le aree di ricerca attuali più importanti per CS parlano di argomenti come il networking) dove concettualmente più in alto. Stanno sostituendo lingue come Fortran piuttosto che C.

    
risposta data 04.03.2012 - 10:03
fonte
1
Learning C is one of the most important aspects of any programmer.

Questo è, nel migliore dei casi, altamente soggettivo, e io, per esempio, completamente in disaccordo. Penso che sia un bene che le università stiano insegnando le lingue che sono più rilevanti per il 2012. Penso che l'apprendimento di C sia una perdita di tempo.

    
risposta data 04.03.2012 - 11:15
fonte
0

I corsi di programmazione ti insegnano a programmare e Python è eccellente per questo. C non è così bello da insegnare sulla programmazione generale. La programmazione non riguarda la comprensione dei computer, ma la creazione di applicazioni. Gli strumenti che utilizziamo per creare applicazioni sono in continua evoluzione e, quindi, dovrebbero essere i corsi CS.

Per insegnare come funzionano i computer, ci sono diversi corsi. Possono mostrare esempi di calcolo a basso livello con ASM o C.

C è anche un ottimo strumento per la programmazione embedded e a bassa latenza, quindi se hai corsi su questi argomenti, puoi usare C.

La mia risposta è: gli studenti non vengono degradati. CS è stato reso più accessibile e al passo con i tempi.

    
risposta data 04.03.2012 - 12:01
fonte
0

Se vuoi solo imparare a scrivere algoritmi, suppongo che Python sia OK. Se vuoi imparare come funziona il computer sottostante e, tra le altre cose, come I programmi Python sono eseguiti, hai bisogno di un linguaggio di livello più basso come C.

Anche la domanda sembra contenere un suggerimento all'idea che Python sia un le lingue e le università più recenti e aggiornate tendono ad aggiornarle curricula per supportare la tecnologia attuale.

Riguardo a ciò, penso che questo sia OK in linea di principio, ma le università dovrebbero non essere troppo ossessionato dall'uso della tecnologia più recente per insegnare perché

  1. Le università dovrebbero insegnare agli studenti i concetti di informatica in modo che possano pensare in modo indipendente sulla programmazione di linguaggi e altri strumenti. Le università non devono preparare potenziali schiavi che sono in grado di implementare ciò che viene loro detto utilizzando il linguaggio più alla moda del momento.
  2. Un linguaggio che potrebbe essere molto popolare oggi, potrebbe essere obsoleto tra dieci anni: l'università dovrebbe concentrarsi sulle cose di base, non sull'insegnare una particolare tecnologia in profondità.

Quindi, Python potrebbe essere più utile e più conciso per alcune applicazioni pratiche, ma non copre alcuni concetti di base (come la memoria gestione, implementazione efficiente delle strutture dati, ecc.) di C. Quindi, penso che C (o un linguaggio più orientato all'insegnamento come Pascal) dovrebbe far parte del curriculum delle università.

    
risposta data 04.03.2012 - 12:57
fonte

Leggi altre domande sui tag