C++를 배우기 전에 C를 배워야 하나요?
오늘 대학 CS학과의 오픈데이를 방문했는데, 실습 투어에서는 학부생들의 최종년도 프로젝트 몇 가지를 가지고 놀았습니다.하나는 특히 좋았다 - 일종의 FPS 소행성 게임.저는 이 사진을 보고src
디렉토리는 C++에서 수행되었습니다(다른 프로젝트의 대부분은 Java 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++의 서브셋은 기본 절차 프로그래밍 구조(루프, if 및 함수)로 구성되어 있으며, 이는 C와 매우 유사합니다.당신의 경우, 저는 그것부터 시작해서 수업이나 템플릿과 같은 고급 개념으로 넘어가겠습니다.
가장 중요한 것은 IMHO입니다.여러분들의 뇌가 세계를 보는 한 가지 방식으로 얼어버리기 전에 절차적, 객체 지향적, 기능적, 논리적 등 다양한 프로그래밍 패러다임을 조기에 접하는 것입니다.덧붙여서, Scheme와 같은 기능적인 프로그래밍 언어를 배우는 것도 강력히 추천합니다.시야를 넓힐 수 있을 거야
만약 당신이 둘 다 배우기로 결정한다면(다른 사람들이 언급했듯이, 둘 다 배울 필요는 없다), 먼저 C를 배우세요.C에서 C++로 가는 것은 자연스러운 진행처럼 느껴지고, 반대로 가는 것은 의도적으로 한 손을 뒤로 묶는 것처럼 느껴집니다. :-)
내가 C를 먼저 배웠기 때문에 네가 C를 먼저 배워야 한다고 생각해.C는 나에게 구문과 포인터 등을 잘 이해시켜 주었고, 그것들은 모두 C++로 흘러들어갔다.
C++는 모든 gotcha를 쉽게 정리할 수 있다고 생각합니다([] 연산자와 dodgy 인덱스를 사용할 때 오버플로하지 않는 배열이 필요).물론 경계체크를 하는 배열클래스를 만듭니다만, 특정의 방법으로 작업이 행해지는 이유를 이해하기 전에, 그것들이 무엇이며, 그것들에 물릴 필요가 있습니다.
모든 것을 종합하면, C++가 가르치는 방법은 보통 "C++는 오브젝트가 있는 C, 여기 C는 C, 여기 이 모든 OO는 어떻게 동작하는지"입니다. 따라서 대부분의 텍스트를 따라 읽으면 실제 C++보다 먼저 기본 C를 배울 수 있습니다.
나는 C를 먼저 배우는 것이 좋은 생각이라고 생각한다.
comp sci 코스에서 C를 사용하는 이유가 있습니다.
내 생각에는 OOP를 요구할 의무가 따르는 모든 주제의 "집중"을 피하기 위한 것이다.
저는 절차적 프로그래밍이 프로그래밍을 처음 배울 수 있는 가장 자연스러운 방법이라고 생각합니다.그게 사실인 것 같아요. 왜냐하면 결국엔 코드 행이 차례로 실행되기 때문이죠.
오늘날 많은 텍스트가 "객체 우선" 접근법을 추진하고 있으며, 어레이를 도입하기 전에 자동차와 기어 변속에 대해 이야기하기 시작합니다.
인생의 다른 많은 질문에 대한 대답처럼, 그것은 다르다.프로그래밍의 흥미와 목표에 따라 달라집니다.GUI를 사용하여 데스크톱 애플리케이션을 프로그래밍하려면 C++(및 OOP)를 사용하는 것이 좋습니다.x86 칩셋 이외의 하드웨어 프로그래밍에 관심이 있는 경우, 일반적으로 속도 면에서 C를 선택하는 것이 좋습니다.새로운 미디어 플레이어를 만들거나 비즈니스 앱을 만들고 싶다면 C++를 선택합니다.은하 충돌이나 유체 역학의 과학적 시뮬레이션을 하고 싶다면 C의 힘을 보세요.
C를 학습하면 코드를 작성할 때 명시적이고 암묵적인 메모리 관리나 기본 데이터 유형의 스토리지 크기와 같은 몇 가지 문제에 대해 더 잘 생각해야 합니다.
일단 C의 특징과 잘못된 특징에 익숙해지면, C++로 배우고 쓰는 데 문제가 없어질 것입니다.
지금까지 본 C++ 코드는 표준 C와 크게 다르지 않을 수 있지만 객체 지향적이지 않고 예외, 객체 지향, 템플릿 또는 기타 고급 기능을 사용하지 않았기 때문일 수 있습니다.
나는 여기서 대다수의 의견에 동의하지 않을 것이다.나는 네가 C++를 배우기 전에 C를 배워야 한다고 생각해.꼭 필요한 것은 아니지만, C++를 배우는 것이 훨씬 쉬워진다고 생각합니다.C는 C++의 중심에 있습니다.C에 대해 배우는 것은 C++에 해당되지만 C는 훨씬 작고 배우기 쉽습니다.
K&R을 집어서 읽어보세요.그것은 짧고 당신에게 충분한 언어 감각을 줄 것입니다.포인터와 함수 호출의 기본을 알게 되면 C++로 조금 더 쉽게 넘어갈 수 있습니다.
먼저 Java를 배운 사람들이 C++에서 포인터와 메모리 관리의 개념과 씨름하는 것을 관찰해본 결과, C를 먼저 배우는 것은 다른 C++ 기능의 복잡함으로부터 격리된 이 두 가지 개념을 이해하기 위해 좋은 생각이라고 생각합니다.
내 의견:
저는 먼저 C를 배우기를 권장합니다.그 이유는 다음과 같습니다.
- 그것은 기본 언어이다 - 많은 언어들이 C에서 파생되었다
- 임베디드 시스템, GPU 칩 등에 관계없이 C++보다 많은 플랫폼이 C 컴파일러를 지원합니다.
- TIOBE 지수에 따르면 C는 여전히 C++보다 약 2배 더 인기가 있다.
아니요.
일반적으로 C++는 에펠이나 C#과 같은 최신 OO 기반 언어에 가깝기 때문에 더 유용합니다.
만약 당신의 목표가 C++를 배우는 것이라면, 우선 현대적인 표준 C++를 배워라.말록은 놔둬요
C++를 배우는 과정에서도 C의 대부분을 배우게 될 것입니다.그러나 많은 C++ 코드는 유효한 C가 아닙니다.C++는 C코드에 대응하도록 설계되어 있기 때문에 C++를 먼저 배우도록 하겠습니다.브라이언은 이에 대해 훌륭한 답변을 썼다.
저는 c가 정말 좋은 프로그래밍 언어라고 생각합니다.컴팩트하고 배우기 쉬운 언어라고 생각합니다만, c++만으로 시작하고 싶다면, 둘 다 배우는 것을 추천합니다.그리고 만약 당신이 그것을 배우고 싶다면, 나는 전에 말했듯이, 그것은 작고 다소 배우기 쉬운 언어입니다.gage as c++. (c는 기본적인 기능을 제공하므로)
행운을 빌어요.
언급URL : https://stackoverflow.com/questions/598552/should-i-learn-c-before-learning-c
'itsource' 카테고리의 다른 글
Vuex 구성 요소에 모듈 상태 액세스 저장 (0) | 2022.08.16 |
---|---|
C에서 포인터를 캐스팅하는 규칙은 무엇입니까? (0) | 2022.08.16 |
Linux에서 (C 및 C++) 바이너리 기호를 표시하려면 어떻게 해야 합니까? (0) | 2022.08.16 |
C에 있는 구조물의 전진 선언? (0) | 2022.08.16 |
Spring CrudRepository 검색 기준InventoryIds(List inventoryIdList) - IN 절에 해당합니다. (0) | 2022.08.16 |