C ++를 배우기 전에 C를 배워야합니까? [닫은]

나는 오늘 열린 대학 CS 부서를 방문했고 랩 투어에서 우리는 학부생의 마지막 학년 프로젝트 몇 가지를 가지고 놀았습니다. 하나는 특히 좋았습니다. 일종의 FPS 소행성 게임이었습니다. 나는 src디렉토리를 들여다 보고 그것이 C ++로 이루어 졌다는 것을 알아 내기 로 결정했다 (대부분의 다른 프로젝트는 자바 3D 앱이었다).

전에 C를 해본 적이 없지만 전에 C 코드를 살펴 보았습니다. 이 게임의 .cpp 코드에서 본 것과 크게 다르지 않았습니다.

저는 C 또는 C ++를 배우는 데 관심이 있지만 나중에 다른 것을 배우게 될 것입니다. 내가 다른 이전에 하나의 학습에 어떤 이점이 있습니까그렇다면, 하나는?



답변

C ++를 배우기 전에 C를 배울 필요가 없습니다.

그들은 다른 언어 입니다. C ++가 어떤 식 으로든 C에 의존하고 완전히 지정된 언어가 아니라는 것은 일반적인 오해입니다.

C ++가 동일한 구문과 동일한 의미를 많이 공유한다고해서 C를 먼저 배워야하는 것은 아닙니다.

C ++를 배우면 결국에는 시간이 지남에 따라 배우게 될 언어간에 약간의 차이가있는 대부분의 C를 배우게됩니다. 사실 중급 C ++ 프로그래머는 C / C ++를 작성하는 경향이 있기 때문에 적절한 C ++를 작성하기가 매우 어렵습니다. C로 시작 했든 C ++로 시작하든 상관 없습니다.

C를 먼저 알고 있다면 C ++를 배우는 데 도움이됩니다. 언어의 덩어리를 아는 것으로 시작합니다. 먼저 C를 모르면 다른 언어에 집중할 필요가 없습니다. 아무것도 모르는 상태에서 시작하고 C ++에도 적용되는 C에서 배울 수있는 모든 것을 다룰 수있는 좋은 책과 튜토리얼이 많이 있습니다.

이 답변에서 추가 추론을 참조하십시오 .


답변

저는이 질문을 좋아합니다. “스노 보드 나 스키 중 무엇을 먼저 배워야하나요?”라고 묻는 것과 같습니다. 스노 보드를 원하든 스키를 원하느냐에 따라 다르다고 생각합니다. 두 가지를 모두 수행하려면 두 가지를 모두 배워야합니다.

두 스포츠 모두이 질문을 불러 일으킬만큼 충분히 유사한 장치를 사용하여 눈 위의 언덕을 미끄러 져 내려갑니다. 그러나 그들은 또한 충분히 다르기 때문에 하나를 배우는 것이 다른 하나에 많은 도움이되지 않습니다. C와 C ++도 마찬가지입니다. 구문이 충분히 유사한 언어로 보이지만 OO 코드와 절차 적 코드를 작성하는 데 필요한 사고 방식은 충분히 다르므로 두 번째로 배운 언어가 무엇이든 처음부터 시작해야합니다.


답변

먼저 C를 배웠고 C ++를 배우기 전에 C를 사용하는 데이터 구조 과정을 수강했습니다. 이것은 나를 위해 잘 작동했습니다. C의 데이터 구조 과정은 포인터와 메모리 관리에 대한 확실한 이해를주었습니다. 또한 객체 지향 패러다임이 무엇인지 알게 된 후에는 객체 지향 패러다임의 이점도 분명해졌습니다.

반면에 C를 먼저 배우면서 포인터를 과도하게 사용하는 경우 (C ++ 참조가 가능할 때)와 전처리 기와 같이 처음에는 나쁜 C ++ 코드를 작성하게하는 몇 가지 습관을 개발했습니다.

C ++는 기능이 많은 매우 복잡한 언어입니다. 하지만 실제로 C의 상위 집합은 아닙니다. 오히려 C와 매우 유사한 기본 절차 적 프로그래밍 구조 (루프, ifs 및 함수)로 구성된 C ++의 하위 집합이 있습니다. 귀하의 경우에는 그것으로 시작한 다음 더 고급 개념까지 작업 할 것입니다. 클래스 및 템플릿처럼.

IMHO라는 가장 중요한 것은 뇌가 세상을 바라 보는 한 가지 방식으로 얼기 전에 절차 적, 객체 지향적, 기능적, 논리적과 같은 다양한 프로그래밍 패러다임에 노출되는 것입니다. 덧붙여서, Scheme과 같은 함수형 프로그래밍 언어를 배우는 것이 좋습니다. 그것은 정말로 당신의 시야를 넓힐 것입니다.


답변

둘 다 배우기로 결정한 경우 (다른 사람들이 언급했듯이 둘 다 배울 필요가 없음) 먼저 C를 배우십시오. C에서 C ++로 이동하는 것은 자연스러운 진행처럼 느껴집니다. 반대쪽으로가는 것은 의도적으로 한 손을 등 뒤로 묶는 것과 같습니다. 🙂


답변

C를 먼저 배웠으니 먼저 C를 배워야한다고 생각합니다. C는 나에게 구문을 잘 이해하고 포인터와 같은 것들에 대한 이해를 주었다.이 모든 것이 C ++로 흘러 간다.

나는 C ++이 모든 문제를 쉽게 마무리 할 수 ​​있다고 생각한다 ([] 연산자와 어리석은 인덱스를 사용할 때 오버플로되지 않는 배열이 필요합니까? 물론 경계 검사를 수행하는 배열 클래스를 만드십시오) 그러나 당신은 무엇을 알아야합니다 특정 방식으로 일이 수행되는 이유를 이해하기 전에 그들은 그들에게 물립니다.

모든 것이 말하고 끝났을 때, C ++가 일반적으로 가르치는 방식은 “C ++는 객체가있는 C입니다. 여기에 C 항목과이 모든 OO 항목이 작동하는 방법이 있습니다.”이므로 실제 C ++보다 먼저 기본 C를 배울 수 있습니다. 어쨌든 대부분의 텍스트를 따르십시오.


답변

나는 여기서 대다수에 동의하지 않을 것입니다. 난 당신이 생각 해야 ++ C를 배우기 전에 C를 배운다. 꼭 필요한 것은 아니지만 C ++ 학습이 훨씬 쉬워 진다고 생각합니다. C는 C ++의 핵심입니다. C에 대해 배우는 모든 것은 C ++에 적용 할 수 있지만 C는 훨씬 작고 배우기 쉽습니다.

K & R을 받아 읽어보세요. 짧고 언어에 대한 충분한 감각을 줄 것입니다. 포인터 및 함수 호출에 대한 기본 사항을 이해하면 C ++로 좀 더 쉽게 이동할 수 있습니다.


답변

C ++를 배우는 과정에서 대부분의 C도 배우게됩니다. 그러나 많은 C ++ 코드가 유효한 C가 아님을 명심하십시오. C ++는 C 코드와 호환되도록 설계되었으므로 먼저 C ++를 배우고 싶습니다. Brian은 이것에 대해 훌륭한 답변을 썼습니다 .