C로 프로그래밍하는 법 배우기 (Python에서 제공) [닫기]


22

이 질문에 대한 잘못된 장소 인 경우 알려주십시오.

저는 직업적으로 파이썬 프로그래머입니다. 나는 C를 배우고 싶습니다. 실제로, 나는 여러 번 시도했지만 항상 낙담합니다. 파이썬에서는 몇 줄을 작성하면 프로그램은 놀라운 일을합니다. C에서는 유용한 것을 할 수없는 것 같습니다.

인터넷에 연결하는 것도 매우 복잡한 것 같습니다.

C를 배우기 위해 내가 할 수있는 일에 대한 제안이 있습니까? 좋은 웹 사이트가 있습니까? 멋진 프로젝트가 있습니까?

감사


4
천재의 어깨에 설 수있는 것이 좋지 않습니다. Python 인터프리터는 C로 작성되었습니다. 이제 디자이너가 실제로 한 일에 대해 진심으로 감사합니다. 꽤 놀랍습니다.
Pemdas

@Pemdas C는 일반적으로 시스템 프로그램을 만드는 데 사용됩니다.
Searock

파일의 내용을 읽고 시작하여 다른 파일로 기본 변환을 수행하는 것이 좋습니다. 예 : CSV를 가져 와서 탭으로 구분 된 파일로 구문 분석하십시오. 또는 JPEG 이미지 파일의 BMP에서 헤더 정보를 읽는 방법을 배울 수 있습니다.
Joshua Burns

답변을 늦게 늦었지만 온라인 용 Python Programs C 소책자가 있습니다 . 또한 "어려운 프로그래밍 배우기"를 제작 한 사람들은 " 비밀 한 학습 배우기 C "라는 책을 만들고 있습니다.이 책 은 이미 약간의 파이썬을 알고있는 사람들을 대상으로합니다.
naught101

답변:


31

낙심하지 마십시오.

파이썬은 고급 프로그래밍 언어입니다. C와 비교 하면 적은 양의 코드로도 놀라운 결과를 낼 수 있습니다 . C에서 파이썬 결과를 모방하려고 시도하지 마십시오. 즉시 낙담하게 될 것입니다. C에서 프로그래밍하는 것은 컴퓨터와보다 친밀한 수준에서 상호 작용할 때 다른 스타일의 사고와 이해가 필요합니다. C를 배우기위한 좋은 출발점이 있습니다 :

서적

온라인 자료


1
프로그래밍 연습을 제안 할 수 있습니까? 바람직하게 유용한 것. 감사.
Honza Pokorny

12

C를 배우려면 인터넷에 연결하지 마십시오. 다른 언어로도 할 수 있습니다. C에서 가장 중요한 것은 아닙니다.

대신이 C Tutorial의 포인터, 배열, 참조, 구조체를 살펴보십시오 . 이를 통해 메모리 관리 및 "시스템에 더 가까이 다가가는"많은 기능을 이해하는 데 도움이됩니다.

이 자료를 배우고 이해할 수 있다면 가능한 프로젝트로 확장하는 것을 고려하십시오. 이러한 개념은 실제 전문 C 프로그래밍의 기본입니다.

포인터 자습서도 도움이됩니다.


C_Tutorial링크가 ... 고장
user3768495

11

되어 매우 인터넷에 연결하는 복잡! 생각 해봐 :

  • 컴퓨터에는 WLAN, Bluetooth, Ethernet 등 여러 가지 연결 방법이있을 수 있습니다. 각 설정에는 고유 한 설정이 있으며 설정해야합니다. 당신은 이미 이것들에 대한 표준과 드라이버가 있다는 것을 운이 좋았습니다 ... 이것들을 사용하는 것은 이미 지금보다 훨씬 어려울 수 있습니다 .

  • IP 주소는 IPv4 또는 IPv6 일 수 있으며 둘 다 처리 할 수 ​​있어야합니다.

  • 시스템에 프록시가 구성되어 있거나 없을 수 있습니다.

  • FTP, HTTP 또는 다른 프로토콜을 지원해야합니다.

  • 전화 접속을 사용해야 할 수도 있으므로 아직 연결되어 있지 않은 경우 비밀번호와 전화 번호가 포함 된 전화 번호부를 지정해야합니다. WLAN 사용자 이름 / 암호를 사용합니다.

  • 쿠키로 작업해야 할 수도 있습니다.

  • 시스템이 일부 데이터를 캐시 할 수 있으므로 캐시를 사용 하시겠습니까?

그리고 목록은 계속됩니다.

따라서 파이썬으로 이것을 쉽게 할 수 있다는 사실은 많은 것들이 당신에게서 숨겨져 있거나 설정하기가 어렵다는 것을 의미하므로 단순함을 강력하게 교환하십시오. C 라이브러리는 반대입니다. 필요한 모든 기능을 갖추고 있지만 (시스템 호출을 쉽게 수행 할 수 있음) 기본값은 없습니다 (실제로 인터넷에 연결 하는 기능도 없음).

C를 지루하다고 생각하는 대신 C를 강력하다고 생각하십시오. 그러나 어떤 경우에도 하지 않습니다 할 수있는 무척 어려운 일입니다 - 그것으로 인터넷에 연결을 시도합니다. 대신,보다 기본적인 작업 (예 : 파일 I / O)에 라이브러리를 사용하는 방법을 배우고 포인터와 배열이 실제로 어떻게 작동하는지 배우고 모든 것을 배우면 큰 프로젝트 해결해보십시오. 파이썬도 그렇게 좋아할 것입니다. :)


편집 :

개인적으로 자유 시간이 있다면 먼저 C #을 배우십시오. 익숙해지면 unsafe키워드와 포인터 사용 방법 및 C #에서 마샬링에 대해 배우십시오 . 파이썬과 같이 작업하기에는 여전히 큰 라이브러리가 있지만 C에서 수행 할 수있는 많은 작업을 수행 할 수 있습니다. 그런 다음 수동으로 시스템 API 호출 ( InternetOpen 등 ) 으로 전환 하고 배우십시오 그것들을 작동시키는 방법. 여전히 많은 유연성이 있지만 하위 개념에 대한 훌륭한 소개를 얻을 수 있습니다. 이 작업을 수행 한 후 C를 배우기 시작하면 케이크 조각이 될 것입니다. 고급 및 저급 언어의 장단점을 (C? 알 수 있습니까) 알 수 있습니다. 귀하의 요구에 맞는 것을 찾으십시오.

즉, C의 A Crash Course바다 C 로 뛰어 들기위한 출발점으로 유용 할 수 있다고 생각 합니다 .


8

C를 배울 때 커널 코드를 읽지 마십시오. 성능의 모든 마지막 비트를 짜내는 트릭이 가득합니다. 그 중 일부는 매우 비표준입니다. 그것은 당신을 미치게 할 것입니다.

대신, 작고 코드 품질이 좋은 몇 가지 프로젝트를 살펴보십시오.

  • 루아 -프로그래밍 언어에 관심이 없다면이 언어를 건너 뛰어도됩니다. 그렇지 않으면 정말 아름다운 코드이며 그들이 적은 양으로 얼마나 많은 성과를 거두 었는지 놀랍습니다 (파이썬에서 온 이후 좌절감을 느끼는 것).
  • ZeroMQ- 이 프로젝트를 좋아합니다. 가볍고 초고속 메시지 대기열입니다. 다시 한 번, 고품질의 물건.
  • DarkHttpd -C의 2700 라인 웹 서버. 소켓 프로그래밍, 구문 분석 및 프로토콜 작업과 같은 몇 가지 재미있는 주제를 다룹니다.

0

고급 언어의 목적 중 하나는 복잡한 것을 숨기는 것입니다. "낮은"수준의 언어를 배우고 정말로 복잡한 것부터 시작하고 싶지 않은 경우 (이전에 대부분 자신에게 숨겨져 있던); 더 간단한 학습 프로젝트로 시작하거나, 숫자 배열을 정렬하거나, 문자열을 뒤집거나 이와 같은 것을 시도하십시오 ...

작은 걸음으로 가파른 언덕을 오르는 것이 더 쉽습니다.



-3

C 문법을 먼저 배우고이를 사용하여 데이터 구조와 알고리즘을 작성하십시오. 물론 C 언어를 전문가로 삼아 Linux 커널을 읽을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.