Pergunta

Estou interessado em aprender C. Eu li K & R , e eu mesmo feito algum trabalho de extensão C simples em R e Python. O que é uma ideia de projecto vale a pena para fazer algo mais substancial com C? Qualquer bons recursos on-line, semelhante a Dive Into Python ? Em particular, recursos focada em programadores que já conhecem línguas mais recentes que estão tentando aprender C (que as coisas menção como "Pedir uma matriz para seu comprimento é um absurdo em C, você preguiçoso Pythonista").

O meu background:

Math / stats, dia a programação dia em Python, R, principalmente em torno da linguagem de processamento natural, algoritmos, e similares.

Outras dicas

Vários anos atrás, um amigo meu me perguntou a mesma pergunta: "Como posso aprender C?" Eu disse a ele para escrever um driver de dispositivo.

Imagine minha surpresa quando ele realmente fez isso.

Um pouco off topic, mas desde que você mencionar o seu fundo é em Matemática e Estatística seu deve tentar a sua sorte no Projeto Euler. Existem mais de 200 math / problemas de estatísticas disponíveis para resolver. Além disso, uma vez que você chegar a uma solução, você pode ver o fórum problema para ver como os outros resolveram a mesma solução. Muito útil para ver como os outros resolver o problema ... e divertido para arrancar!

www.projecteuler.net

Eu tenho um fundo semelhante a você. Eu uso Python para fazer um monte de matemática e análise de dados para minha pesquisa de doutorado, e também para programação web. A diferença é que eu aprendi C primeiro, caminho de volta na década de 90.

Se você pode escrever extensões C para Python, então eu diria que você tem um bom controle muito sobre o que C é bom para. Na minha opinião, C, hoje, é mais adequado para duas coisas:

  • Escrita software de baixo nível que interage com hardware.
  • Escrever código que faz coisas repetitivas, tedioso,-CPU (matemática, análise XML, etc.) ... talvez como uma extensão de uma linguagem de alto nível.

É claro que um monte de alto nível aplicativos também são escritos em C, especialmente no Linux eu encontrei, mas em grande parte, estes não são realmente escrito nas "bare-ossos" C de K & R, ou a biblioteca padrão . Em vez disso, eles usam frameworks como Glib, ou wxWindows, ou Apache Portable Runtime, ou outros, que todos put uso de algum tipo de estrutura ou convenções orientada a objeto, e muitas vezes abstrair alguns dos detalhes básicos de gerenciamento de memória de C.

Então eu acho que fazendo suas habilidades C útil na linguagem de programação de hoje é em grande parte sobre fazer trabalho de baixo nível, ou se familiarizar com um desses quadros de nível superior. Eu pessoalmente gosto da Glib e GTK bibliotecas muito, uma vez que utilizam um muito dinâmica modelo orientado a objetos (muito como Python) sem impedi-lo de usar o baixo nível características de C.

Você poderia escrever um interpretador para uma linguagem simples. Use flex / bison. Torná-lo de vários segmentos etc. Isso é divertido e tende a exercer ponteiros muito. Eu escrevi algo como que para um projeto da escola : Uma linguagem baseada em pilha simples com dois lixo diferente coletores, TwoSpace e uma versão concorrente. Foi divertido. E factível como um primeiro programa C maior do que "Olá, mundo!"

confira aprender C da maneira mais difícil, é um ebook livre que leva você através de muitos exemplos de código C e exercícios para que você aprenda.

http://c.learncodethehardway.org/

Localizar ou definir um problema em seu trabalho do dia-a-dia e forçar-se a resolvê-lo usando C em vez de Python. Isso vai forçá-lo a aprender a língua, mantendo o relevent problema para que você normalmente faz.

Implementar uma máquina virtual (JVM, por exemplo).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top