Domanda

Sono interessato all'apprendimento di C. Ho letto K & amp; R , e ho anche fatto qualche semplice lavoro di estensione C in R e Python. Qual è un'idea di progetto utile per fare qualcosa di più sostanziale con C? Qualche buona risorsa online, simile a Dive Into Python ? In particolare, le risorse si sono concentrate su programmatori che già conoscono linguaggi più recenti che stanno cercando di imparare C (che menzionano cose come "Richiedere un array per la sua lunghezza non ha senso in C, pigro Pythonista").

Il mio background:

Matematica / statistiche, programmazione quotidiana in Python, R, principalmente sull'elaborazione del linguaggio naturale, algoritmi e simili.

Altri suggerimenti

Diversi anni fa, un mio amico mi ha posto la stessa domanda: "Come posso imparare C?" Gli ho detto di scrivere un driver di dispositivo.

Immagina la mia sorpresa quando l'ha fatto davvero.

Un po 'fuori tema, ma dal momento che dici che il tuo background è in matematica e statistiche, dovresti provare a Project Euler. Sono disponibili oltre 200 problemi matematici / statistici da risolvere. Inoltre, una volta arrivata a una soluzione, è possibile visualizzare il forum dei problemi per vedere come gli altri hanno risolto la stessa soluzione. Molto utile per vedere come gli altri risolvono il problema ... e divertente da avviare!

www.projecteuler.net

Ho uno sfondo simile a te. Uso Python per fare molte analisi matematiche e di dati per la mia ricerca di dottorato e anche per la programmazione web. La differenza è che ho imparato prima C, negli anni '90.

Se riesci a scrivere estensioni C per Python, direi che hai una buona padronanza di ciò che fa bene a C. Secondo me, oggi C è più adatto per due cose:

  • Scrittura di software di basso livello che interagisce con l'hardware.
  • Scrivere codice che fa cose ripetitive, noiose e che richiedono molta CPU (matematica, analisi XML, ecc.) ... forse come estensione per un linguaggio di livello superiore.

Ovviamente molte applicazioni di livello superiore sono anche scritte in C, specialmente sotto Linux che ho trovato, ma in gran parte queste non sono realmente scritte in "bare-bones". C di K & amp; R o la libreria standard. Piuttosto, usano framework come Glib, o wxWindows, o Apache Portable Runtime o altri, che usano tutti una sorta di struttura o convenzioni orientate agli oggetti, e spesso astraggono alcuni dei dettagli di base della gestione della memoria di C.

Quindi penso che rendere utili le tue abilità C nell'attuale ambiente del linguaggio di programmazione riguardi principalmente il lavoro di basso livello o la conoscenza di uno di questi quadri di livello superiore. Personalmente mi piacciono molto le librerie Glib e GTK, poiché usano un modello molto dinamico orientato agli oggetti (molto simile a Python) senza impedirti di usare le funzionalità di basso livello di C.

Potresti scrivere un interprete per una lingua semplice. Usa flex / bisonte. Rendilo multithread ecc. Questo è divertente e tende ad esercitare molto i puntatori. Ho scritto qualcosa del genere per un progetto scolastico : un linguaggio semplice basato su stack con due diversi rifiuti collezionisti, TwoSpace e una versione simultanea. È stato divertente. E realizzabile come un primo programma in assoluto più grande di "ciao, mondo"!

dai un'occhiata a imparare C nel modo più duro, è un ebook gratuito che ti guida attraverso molti esempi di codice C ed esercizi per permetterti di imparare.

http://c.learncodethehardway.org/

Trova o definisci un problema nel tuo lavoro quotidiano e costringiti a risolverlo usando C invece di Python. Ciò ti costringerà ad imparare la lingua mantenendo il problema pertinente a ciò che fai normalmente.

Implementa una macchina virtuale (la JVM, ad esempio).

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