Se este é o lugar errado para fazer esta pergunta, entre em contato.
Sou programador Python por profissão. Eu adoraria aprender C. De fato, tentei muitas vezes, mas sempre fico desanimado. No Python, você escreve algumas linhas e o programa faz maravilhas. Em C, parece que não consigo fazer nada de útil.
Parece ser muito complicado até conectar-se à Internet.
Você tem alguma sugestão sobre o que posso fazer para aprender C? Existem bons sites? Algum projeto bacana?
obrigado
Respostas:
Não desanime.
Python é uma linguagem de programação de alto nível. Em comparação com C, pode produzir maravilhas em uma pequena quantidade de código. Não comece tentando imitar os resultados do Python em C - você será desanimado imediatamente. Programar em C requer um estilo diferente de pensamento e compreensão, porque você está interagindo com o computador em um nível mais íntimo. Aqui está um bom ponto de partida para aprender C:
Livros
Material on-line
fonte
Se você deseja aprender C, não comece conectando-se à Internet. Você pode fazer isso em qualquer outro idioma. Não é isso que é mais importante em C.
Em vez disso, dê uma olhada ponteiros, matrizes, referências, estruturas neste C Tutorial . Isso ajudará você a entender o gerenciamento de memória e muitos dos recursos que "aproximam você da máquina".
Se você pode aprender e entender esse material, tente expandir para um possível projeto. Esses conceitos são fundamentais para qualquer programação C profissional real.
Este tutorial sobre ponteiros também parece útil.
fonte
C_Tutorial
link está quebrado ...Ele é muito complicado para se conectar à internet! Pense nisso:
Seu computador pode ter várias formas de conexão - WLAN, Bluetooth, Ethernet, etc. Cada uma delas possui suas próprias configurações, que você precisa definir. Você tem sorte que já existem padrões e drivers para esses ... usá-los pode ser muito mais difícil do que já é agora.
Os endereços IP podem ser IPv4 ou IPv6, e você precisa poder lidar com ambos.
Pode ou não haver proxies configurados para o sistema.
Você precisa suportar FTP, HTTP ou algum outro protocolo.
Pode ser necessário usar a conexão discada, para especificar uma lista telefônica com senhas e números de telefone, se você ainda não estiver conectado. O mesmo vale para nomes de usuário / senhas da WLAN.
Pode ser necessário trabalhar com cookies.
O sistema pode armazenar em cache alguns dados. Deseja usá-lo ou não?
E a lista continua.
Portanto, o fato de ser fácil fazer isso com o Python significa necessariamente que muitos deles estão ocultos de você (ou difíceis de definir), para que você troque simplicidade por poder. A biblioteca C é o oposto: possui toda a energia que você precisa (você pode executar facilmente chamadas do sistema), mas não possui padrões (ou, de fato, nenhum recurso para conectar-se à Internet).
Em vez de pensar em C como sendo tedioso, pense nele como sendo poderoso. Mas, de qualquer forma, não tente se conectar à Internet com ela - isso é uma coisa muito difícil de fazer. Em vez disso, começar a aprender a usar a biblioteca para tarefas mais básicas (por exemplo, arquivo I / O), aprender sobre como ponteiros e arrays realmente funcionam, e quando você aprender todos aqueles que, em seguida, tentar enfrentar grandes projetos. Você também apreciará o Python dessa maneira. :)
Editar :
Pessoalmente, sugiro que, se você tiver tempo livre, aprenda C # primeiro. Assim que você se sentir confortável com isso, comece a aprender sobre a
unsafe
palavra - chave e como usar ponteiros e fazer empacotamento em C #. Você ainda terá uma biblioteca muito grande para trabalhar, como no Python, mas poderá fazer muitas coisas que pode fazer no C. Em seguida, faça a transição para chamar as APIs do sistema manualmente (como InternetOpen ) e aprenda como fazê-los funcionar. Você ainda terá muita flexibilidade, mas terá uma ótima introdução aos conceitos de nível inferior. Depois de fazer isso, então comece a aprender C - então você descobrirá que é um pedaço de bolo e verá (C? entendeu?) as vantagens e desvantagens das linguagens de alto e baixo nível e poderá para encontrar aquele que atenda às suas necessidades.Dito isto, acho que Um Curso de Crash em C pode ser útil como ponto de partida para pular no
marC.fonte
Não leia o código do kernel quando estiver aprendendo o C. É cheio de truques para extrair todo o desempenho dele. Algumas delas são muito fora do padrão. Isso vai te deixar louco.
Em vez disso, dê uma olhada em alguns projetos pequenos e de alta qualidade de código:
fonte
Um objetivo de uma linguagem de alto nível superior é ocultar coisas complicadas. Se você quer aprender um idioma de nível "inferior" e não quer começar com coisas realmente complicadas (que antes eram escondidas de você); tente começar com alguns projetos de aprendizado mais simples, classificando uma matriz de números ou revertendo uma sequência de caracteres, ou algo assim ...
É mais fácil subir uma colina íngreme dando pequenos passos.
fonte
No que diz respeito a projetos interessantes: Os kernels do Unix são escritos em C.
fonte
Aprenda a gramática C primeiro e depois use-a para escrever a estrutura e o algoritmo dos dados. É claro que você pode ler o kernel do Linux como especialista em linguagem c.
fonte