나는 초보자입니다. C ++ 11 학습을 직접 시작할 수 있습니까? 아니면 오래된 C ++을 배워야합니까? [닫은]


36

저는 초보자이며 프로그래밍에 대한 지식이 거의 없습니다.

새로운 C ++ 11을 다루는 책에서 직접 C ++를 배우거나 가장 오래된 C ++ 책을 통해 공부해야한다면 좋을까요?

C ++ 11을 배우기 전에 C ++에 대한 지식이 거의 없습니까? 아니면 거기서부터 직접 시작할 수 있습니까?

C ++ 11에서 직접 시작하면 문제가 발생합니까? 그렇지 않다면 C ++ 11에 관한 책을 제안하십시오.


18
왜 그 부정적인 점이 있습니까? 이 질문에 이미 답변 되었습니까? 초보자가 질문을 할 수 없습니까? 이 문제에 대해 누군가가 재조사하고 있습니까? 가장 좋은 방법 중 하나는 더 많은 경험을 가진 사람들에게 묻는 것입니다. +1, 초보자도 안내받을 자격이 있음
adosaiguas

12
@Simon 이것은 소프트웨어 개발에 대한 개념적 질문으로 들립니다. 어디서부터 시작해야합니까? 그리고 그가 전문 프로그래머가 아니라는 것을 어떻게 알 수 있습니까? ;)
adosaiguas

4
@MSalters 책에 대해 이야기; Accelerated C ++ 는 약간 간단하지만 멋진 책입니다. Barbara E. Moo 는 훌륭한 작가이며 책에 대한 그녀의 영향을 쉽게 알 수 있습니다. 그러나 문제의 책은 참 이다 "오래된". Lippman , LajoieBarbara E. Moo의 C ++ Primer라는 고평가 책 이 이번 달 (2012 년 8 월)에 발간되었으며 첫 몇 장에서 읽었습니다. 이 책은 C ++ 11을 다루는 훌륭한 책입니다. 다시 무의 영향이 존재한다. 그녀는 기술적 인 글쓰기와 관련하여 여신입니다.
zxcdw

2
@Simon Programmers — Stack Exchange is a site for professional programmers...이 경우 초보자 프로그래머를위한 사이트를 안내해 주시겠습니까? 나는 또한 코딩 초보자이며 나는 기본적인 질문을 할 것입니다 ...
Jeyekomon

2
FAQ로 인해이 질문은 분명히 주제가 아닌 것 같습니다. "다음에 어떤 언어 (버전)를 선택해야합니까?"라고 묻습니다. 교육 조언에 관한 것입니다.
Doc Brown

답변:


38

초보자, 특히 해당 기능에 대해 다른 언어를 경험 한 사람이 C ++ 11을 더 잘 이해할 수 있도록 사용성 향상 기능이 많이 있습니다. C ++ 11의 다른 변경 사항은 고급 사용자에게만 관심이 있으므로 주로 차이점을 가르치기 위해 고안된 책을 선택하면 압도 될 것입니다. 당신이 얻는 책이 C ++에 대한 완전한 초보자를 위해 설계되었는지 확인하십시오.

즉, 기존 코드가 많기 때문에 결국에는 이전 방식을 배워야 할 것입니다. 새로운 C ++ 11 코드조차도 프로그래머가 원하는 경우 이전 방식을 포함합니다. 나는 생계를 위해 C ++을 작성하지만 회사는 여전히 프로덕션 환경에서 C ++ 11 호환 컴파일러 를 평가 하지 않고 C ++ 11 호환 컴파일러 를 평가 하지 못했습니다 .


C ++ 입문서 4 판에서 배우는 메신저. 좋은 책으로 시작 ??
Dhananjay

1
좋은 리뷰를 받고 올바른 수준에있는 것처럼 보이지만 초보자 수준의 C ++ 책을 오랫동안 보지 않았으므로 물어볼 가장 좋은 사람이 아닙니다. C ++ 11을 다루려면 5 번째 버전이 필요하다고 생각합니다.
Karl Bielefeldt

그것의 ok와 yah 나는 5 판이 c ++ 11을 커버한다는 것을 알고있다.
Dhananjay

10

C ++ 11 사용을 시작하기 위해 이전 C ++을 사용할 필요는 없습니다. C ++ 11에는 새로운 기능이 있지만 선택 사항입니다. C ++ 11 기능을 사용하는 방법을 아는 것이 유리할 수 있지만, 이전 버전의 특유성을 알고 나면 레거시 (11 이전) 코드 기반으로 작업 할 때 반드시 불리하지는 않을 것입니다.

Learn C ++ 는 학습을 시작하기에 좋은 장소이며 부록 B 는 기초를 배운 후에 C ++ 11 기능을 알려줍니다.

일부 사람들이 Java / CSharp 등을 더 쉬운 대체 언어로 제안한 이유를 알 수 있지만 CSharp로 이동하기 전에 약간의 C ++을 배웠으며 그로 인해 더 나쁜 프로그래머는 아닙니다. 반면에 프로그래밍 기술이 언어보다 훨씬 깊습니다. 구문 / 기능과 C ++의 탄탄한 기초를 통해 다른 명령형 OOP 언어를 쉽게 배울 수 있습니다.


8

말하기 어렵다.

구식 C ++은 지뢰밭에 가깝기 때문에 그러한 짐승을 탐색하는 방법을 배우는 것이 좋습니다. 또한 작업이 수행 된 이유와 다른 구성의 의미를 이해하게 해줍니다.

그런 다음 코드를 작성할 때 이전 C ++은 원하는 것이 아닙니다.

그러나 다시 한 번, 오래된 C ++는 20 년 동안 많은 산업이 발전 할 것입니다.

나는 C ++ 11을 좋아하지만 지금은 신생 기업에서만 사용할 수 있습니다. 큰 레거시 코드 기반에는 없습니다. 그리고 C ++ 11로 바로 점프하면 불쾌한 C ++ 부분에서 개발되지 않은 기술을 남길 수 있습니다. 고급 C ++ 11 구문이 구문 적으로 정확하지만 논리적으로 잘못된 방식으로 사용되기 때문에 누출이나 충돌이 발생하면 역효과를냅니다.


틈새 임베디드 시스템 필드 외에 산업의 주요 부분이 컴파일러를 업데이트하지 않는 이유는 무엇입니까? 위험 (단위 테스트에서도)? 보수주의?
TheLQ

1
@ TheLQ : 나는 추측한다 ... 그러나 내가 상사라면 내가 할 일을 생각할 때, 나는 똑같은 일을 할 가능성이 높다. 눈에 띄는 비용 절감 대 마이그레이션 비용이없는 한.
Coder

1
@TheLQ : 코드베이스가 최신 버전의 컴파일러로 이동하는 데는 시간이 걸립니다. 프로젝트가 새로운 컴파일러 버전을 채택하는 것은 드물다. 새 프로젝트는 이전 코드와 상호 작용하지 않는 한 새 컴파일러를 사용할 가능성이 높습니다.
Martin York

1
@Coder : C ++ 11과 C ++ 03의 차이점을 배우면 C ++ 03으로 직접 변환되지 않습니다. 쓰기가 더 쉬워 지지만 지뢰밭에 들어가는 것을 막을 수있는 새로운 기능이 몇 가지 있습니다.
Martin York

1
@ TheLQ : 예, 기본적으로 프로세스이지만 통합 테스트를 잊었습니다 (가장 복잡한 부분입니다. 모든 응용 프로그램이 독립형은 아닙니다 (사실 이것이 소수라고 말할 것입니다)). 모든 코드가 작동하고 올바르게 상호 작용하는지 (코드뿐 아니라 고객 코드와) 확인해야합니다. 테스트와 검증이 아니라면 몇 개월이 걸리는 과정입니다. 일부 고객이 C ++ 11로 이동하지 않는 경우 일부 시스템에서 두 버전을 모두 유지해야 할 수도 있습니다. 다행히도 gcc는 이전 버전과의 호환성이 뛰어나지 만 모든 C ++ 컴파일러 공급 업체는 아닙니다.
Martin York

8

많은 개선에도 불구하고 C++11, C++여전히 쉬운 언어가 아닙니다. Java는 일부 사람들이 생각하는 것처럼 쉽지는 않지만 여전히 매우 우수한 성능을 가진 더 쉬운 언어이며 (거의 거의 빠름 C++) 더 나은 IDE를 제공합니다 ( Visual C++현재 Java IDE만큼 우수하지만 Linux에서는 운이 없습니다). 보다 포괄적 인 표준 라이브러리 (JDK), 더 많은 라이브러리 (예 : Hibernate , Spring , JEE , Lucene 등) 및 메모리 누수 없음 (아직 거의 없음 – Java로 메모리 누수를 만들 수는 있지만 더 어렵습니다. 에서보다 C++). 현대적으로 C++11, 메모리 파를 피하는 것이 훨씬 쉽습니다.

C ++ 11에는 람다, 자동 키워드, 이동 의미론 등과 같은 많은 멋진 기능이 있습니다. 확실히 언어보다 훨씬 더 나은 언어 C++98입니다. C++11현대적인 요소의 새로운 기능에 대해서는 Herb Sutter의이 개요를 참조하십시오 C++.

요약하자면, 모든 사람은 적어도 일부를 배워야한다고 생각합니다 C++. 당신이 프로그래밍 된 경우 Java, Scala, Ruby또는 Python지난 십 년간 동안 결코 감동 C이나 C++지금으로, C++11나는 그것을 배울 수있는 시간이라고 생각 C++11하고 그렇게하는 동안 프로그래밍 기술을 향상시킬 수 있습니다.

나는 C++앞으로 몇 년 동안 직장에서 많이 사용하지 않을 것이고 나는보다 더 강력한 언어가 필요할 때 Java아마도 Scala를 갈 것입니다. 그러나 나는 C++11새로운 기능, 특히 새로운 기능을 자세히 살펴보고 이해하려고 노력할 것입니다. 멀티 스레딩과 동시성에 관한 것.

기억하십시오 : 프로덕션 환경에서 사용하지 않으려는 경우에도 항상 새로운 프로그래밍 언어를 배우는 데 도움이됩니다.


1

숨을 크게들이 쉬고 Peter Norvig 의이 기사 를 읽으십시오 .

읽었 어? 좋아, 초보자라면 작은 단계부터 시작해야합니다. -여기에 언어를 삽입하십시오-나중에 올 수 있습니다 . 초보자 컴퓨터 과학 소개 과정은 Coursera 또는 Udacity 를 확인하십시오 .

이 과정을 마치면 'C'언어로 설정 한 경우 K & R의 C 프로그래밍 언어를 통해 천천히 작업하는 것이 좋습니다.

기본 사항에 대해 작업하면 나머지는 제 시간에 올 것입니다.


10
이것이 질문에 대한 답변인지 어떻게 보지 못합니다. C는 C ++과 같은 언어가 아닙니다.
vartec

1
그러나 C ++은 C를 기반으로하며 이전 버전과 호환됩니다. 대부분의 최신 C 구문은 C ++에 직접 적용 할 수 있습니다. C는 모든 C ++ 버전보다 단순하기 때문에 C를 배우면 먼저 기본 C ++ 구문과 의미에 대한 일관된 교육을받을 수 있으며, 더 큰 언어에 대한 이해하기 어려운 사마귀를 설명 할 수 있습니다.
오는 폭풍

2
@comingstorm C 프로그래머가해야 할 첫 번째 일은 C에 대해 알고있는 거의 모든 것을 배우고 C ++을 배우기 시작하는 것입니다. 당신을 물 수있는 미묘한 차이점이 있습니다.
BЈовић

1
또한 관용적 인 현대 C ++ 코드는 구문 외에도 C에서 많이 빌리지 않습니다. 우리가 더 이상 C- 문자열과 malloc / free를 사용하는 것과는 다릅니다. 언어에 대한 완전한 초보자로서 C에 중점을 두는 대신 C ++ Primer 5th edition, Accelerated C ++ 등과 같은 책을 선택하는 것이 좋습니다.
bstamour

1

C ++에 관한 최근의 서적은 점점 C ++ 11을 다루고 있습니다. 스크립트 언어로 작업했지만 거의 10 년 동안 C / C ++가 아닌 Sam의 Teach Yourself C ++ 을 읽었 으며 실제로 도움이되었습니다. 나는 C ++ (많은 STL 포함)의 중심 아이디어에 매우 빠르게 익숙해졌으며 C ++ 11과는 다른 많은 세부 사항을 의식했습니다.

다른 포스터가 언급 한 것처럼, C ++ (11)와 같은 스크립팅 스타일의 추가와 이전의 표준보다 쉽게 여러 가지 방법이다 auto, for(int &i : m_vector){}당신의 "작은 지식"파이썬 또는 matlab에 같은 언어에서 오는 경우 등 그래서, 당신은 C ++ (11)를 찾을 수 이전 표준보다 다소 "자연"입니다.

또한 C ++ 11에 대한 컴파일러 호환성은 ( 거의 ) 완전하므로 "컴파일하기에는 너무 최신"인 코드를 갖는 것이 더 이상 문제가되지 않음을 지적합니다.

한마디로하세요.


-1

내 시간에 C는 C ++의 전제 조건, 특히 프로그래밍 초보자에게 필수 조건으로 간주되었습니다. 언어가 무엇을하고 왜 그렇게 설계되었는지 알아 내야하기 때문입니다. C는 프로그래밍 언어에 대한 훌륭하고 충분한 아이디어를 많이 얻었으며 결코 오래된 것은 아닙니다. 따라서 이것이 최선의 시작이라고 믿습니다.

그리고 프로그래밍에 관한 몇 가지 기본적인 관점을 가지고 나면 다음 단계로 무엇을해야하는지 선택해야합니다. 즉, 가능한 한 깊이 배울 언어를 선택해야합니다. 아무리 깊어도 일반적으로 다른 언어에 대해 얼마나 깊게 배울 수 있는지 결정할 수 있습니다. 즉, 얼마나 많은 언어를 배웠 든 가장 깊은 언어는 항상 가장 먼저 파는 언어가됩니다. 저에게 Java에 대한 연구를 수행하고 커널 기능을 더 잘 이해하기 위해 Java 모델을 직접 만들었습니다.

그 후에는 프로그래밍 언어의 기술에 대해 완전히 이해했기 때문에 원하는 것을 배울 수 있습니다. 나는 C #, Go, Python, 심지어 Scala를 배우기 시작했고 재미 / 일을위한 많은 프로젝트를 수행했습니다. 개인 기록은 언어 학습을 시작한 후 개발 프로젝트의 총괄 책임자가되는 3 개월입니다.

제 경우에는 첫 프로그램 이후 15 년이 넘었으며 그 프로그램이 무엇인지 기억조차 못합니다. 당신이 충분히 열심히 노력한다면, 당신은 분명히 나보다 더 나아질 것입니다.


이것은 묻는 질문에 대답하지 않습니다
gnat

정말 죄송합니다. 그냥 말하고 싶어 마지막으로 배우고 싶은 것은 중요하지 않으며 프로그래밍 언어의 기초 만이이 분야에서 얼마나 깊이 파고 들지 결정할 수 있습니다. 동시에 빠른 샷보다는 더 많은 시간을 소비해야합니다.
WinstonWu

-2

초보자로서 저는 C ++ 11과 모든 것이 새로운 버전과 같지만 C와 C ++는 모든 유형의 개발에 기본이기 때문에 C ++ 개념을 먼저 살펴 봐야한다고 생각합니다. C ++을 배우면 대부분의 개념이 자동으로 지워집니다.


1
프로그래머에 오신 것을 환영합니다! 나는 당신의 대답이이 질문에 그 모든 것을 추가한다고 확신하지 않습니다. 문법적으로 엉망진창입니다. 나는 당신이 말하려는 것을 따르는 데 어려움을 겪고 있습니다. C ++ 11이 왜 C와 이전 버전의 C ++ 표준을 배우는 것이 더 좋은지에 대한 예를 추가하여 답을 넓힐 수 있습니까?
Martijn Pieters

-3

C ++는 정말 위대하고 강력한 언어입니다. 그러나 또한 프로그래머에게 많은 책임이 있습니다.

프로그래밍을 처음 접하는 분이라면 인생을 더 편하게 만들고 C #으로 시작하십시오. 구문은 C ++을 기반으로하지만 오류 처리는 상황이 잘못되었을 때 도움을주는 데 훨씬 초보자에게 친숙합니다.

메서드, 클래스, 상속에 익숙하고 메모리와 시스템 리소스를 관리하는 것이 생산성보다 중요한 환경에서 개발하려는 경우 C ++을 선택하는 것이 좋으며 현재 표준을 배우는 것으로 시작합니다. C ++에서는 메모리를 이해하고 적극적으로 관리해야합니다. 여기서 실수하면 코어 덤프 또는 데이터에 이해할 수없는 바이트가 포함됩니다. 그리고 종종 문제를 찾는 지점이 원인의 실제 위치와 관련이 없습니다.


1
C #으로 시작하면 실제로 "장면"의 상황을 모르고 높은 수준 (OOP, 자동 메모리 관리)으로 프로그래밍하는 데 익숙해 질 것입니다. 그 사람이 C ++로 이사하면 C / C ++에 대한 중요한 지식이 부족합니다 (메모리 관리에 대해 많이 생각하고 있지만 더 있습니다). C ++과 C #이 매우 유사한 구문을 공유하지만 코드가 실제로 컴파일되는 방식이 완전히 다르기 때문에 오해의 소지가 있습니다. OP는 C ++에 대한 그의 관심을 분명히 언급했다.
Eti

OP는 또한 프로그래밍에 대한 지식이 거의 없다고 밝혔다. C ++로 모국어를 배우는 것은 큰 도전입니다. 성공할 확률이 훨씬 높으므로 전투를 선택하고 일련의 작은 전투를 선택하는 것이 훨씬 좋습니다.
Michael Shaw

-6

왜 C ++로 시작하고 싶습니까?

개인적으로 C ++을 모국어로 권장합니다. 까다 롭고 복잡하며 어려우며 ... 다른 프로그래밍 언어보다 훨씬 더 낮은 수준이고 더 안전하지 않습니다.

나는 C #, java, python 또는 javascript ... 그리고 좋은 책을 선택하는 것이 좋습니다. 이것들과 함께 훨씬 즐거운 시간을 보내십시오.


3
나는 그것을 일반화로 동의하지 않습니다. java / C # / python 등의 쉬운 삶에서 더 복잡한 C 및 C ++의 세상으로가는 것은 쉽지 않습니다. 프로그래밍 언어를 배우는 데 정말로 익숙하다면 C와 C ++를 배우는 것은 어렵지만 많은 것을 돌려 줄 것입니다. 나중에 java, C #, python 등으로 프로그래밍하려는 경우 C 또는 C ++로 변경하는 것보다 변경이 훨씬 쉽습니다. 요약 : C / C ++는 시작하기 어렵지만 다른 OO 언어로 쉽게 변경할 수 있습니다.
martiert

2
C ++는 시작하기에 가장 좋은 기초입니다. 프로그래밍은 복잡하므로 결국 하드웨어를 사용해야합니다. C ++은 잘못된 보안 감각없이 학습을 시작하는 놀라운 방법입니다.
Coder

op의 질문은 개발의 목적에 전적으로 의존합니다.
독립

1
나는 이것에 동의하지 않습니다. C ++ 학습에는 몇 가지 장점이 있으며 Java 및 C #과 같은 다른 언어를 쉽게 익힐 수 있습니다.
Anthony

2
@Dhananjay : C ++는 Java보다 몇 배 더 어렵습니다. Java는 C ++의 매우 단순화 된 버전 인 베이비 바이크와 같습니다. 후자는 브레이크없는 자전거없는 자전거입니다. 이미 Java를 열심히 찾으면 C ++이 어려울 것입니다. 내 2 센트
dagnelies
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.