Dopo cinque anni di programmazione professionale Java (e in misura minore, Python) e lentamente sentire la mia educazione CS scivolare via, ho deciso che volevo ampliare i miei orizzonti/utilità generale per il mondo e fare qualcosa che mi sembra più (per me) come se avessi davvero un'influenza sulla macchina. Ho scelto di imparare la programmazione C e Unix poiché ritengo che sia proprio lì che si trovano molti dei problemi più interessanti.Come praticare la programmazione Unix in C?
Il mio obiettivo finale è poterlo fare professionalmente, se non altro per il fatto che devo spendere 40-50 ore a settimana per il lavoro che paga le bollette, quindi potrebbe anche essere il tipo di codice in cui voglio migliorare. Certo, non ti assumi per fare cose che non hai mai fatto prima, quindi per ora mi sto cagando da solo.
A tal fine, ho iniziato con K & R, che è stata una grande risorsa in parte a causa degli esercizi distribuiti in ogni capitolo. Successivamente, passai allo Computer Systems: A Programmer's Perspective, seguito da dieci capitoli da Advanced Programming in the Unix Environment. Quando avrò finito con questo libro, leggerò Unix Network Programming.
Quello che mi manca nei libri di Stevens è la mancanza di problemi di programmazione; essi documentano principalmente funzionalità e forniscono esempi, con alcune domande di fine capitolo che seguono. Sento che mi piacerebbe molto di più dall'essere sfidato ad usare la conoscenza in ogni capitolo ala K & R. Potrei scrivere qualche programma di test per ogni funzione, ma questo è un metodo meno desiderabile in quanto (1) probabilmente sarei meno motivato che se mi fossi innalzato ad una sfida esterna, e (2) naturalmente penserò solo a usare la funzione nei modi che mi sono già accaduto.
Quindi, mi piacerebbe avere alcuni consigli su come praticare. Ovviamente, la mia prima scelta sarebbe trovare una risorsa che abbia sfide di programmazione Unix. Ho anche considerato di cercare e provare a contribuire ad alcuni progetti open source in C, ma questo è un po 'scoraggiante in quanto ci sarebbe un po' di overhead nell'imparare ad usare il software, quindi imparare il codice base. L'unico progetto C open-source che posso pensare di usare regolarmente è Python, e non sono sicuro di quanto sarebbe facile iniziare.
Detto questo, sono aperto a tutti i tipi di suggerimenti in quanto vi sono probabilmente cose a cui non ho nemmeno pensato.
Vorrei solo dire che adoro vedere post come questo, in cui non stai semplicemente dicendo "Come imparo C, ma non ho fatto niente per conto mio". Complimenti. Upvote. – samoz
Per prima cosa, leggi questo: http://stackoverflow.com/search?q=code+kata. Secondo, aggiorna la tua domanda in modo che non abbia già una risposta. O, possibilmente, chiudi questa domanda perché è un duplicato di uno o più di quelli. –
Non sono d'accordo con S.Lott, non sta cercando un'introduzione per principianti come la maggior parte delle altre domande. Il suo background è diverso e merita un argomento e risposte diversi. – samoz