내 C / C ++ 코드 수준 향상


16

나는 지금 3-4 년 동안 프로그래밍을 해왔고 더 이상 초보자라고 부를 수 없다고 생각하지만이 사이트에서 몇 가지 질문을 읽고 WTF에 대해 이야기하고 있다고 생각합니까? 요즘 프로그래밍 서적을 집어들 때와 같은 느낌이 듭니다.

나는 C / C ++에 관한 몇몇 프로그래밍 책과 게임에 관한 몇몇 프로그래밍 책을 읽었다. 나는 매우 기본적인 AI, 시리얼 및 TCP / IP 인터페이스와 같은 더 복잡한 것들을 작성했습니다.

게임 프로그래머가 될 계획이지만 최근에는 임베디드 시스템에 대한 작업 기회를 얻은 후에 임베디드 시스템에 관심을 가지게되었습니다 (직렬 인터페이스).

내가 찾을 수있는 중간 C ++ 책이 아니기 때문에 소개 및 초보자 책을 완료 한 후에 학습을 계속할 자료를 찾는 것이 매우 어렵다는 것을 알았습니다.

내 지식과 기술을 키우고 향상시키기 위해 어떤 조언을 하시겠습니까? 특정 자원은 크게 감사하겠습니다.


C ++ 도서의 경우이 질문을 참조하십시오 : stackoverflow.com/questions/388242/…
Naveen

답변:


10

C / C ++에 대해 이야기하고 있다면 분명히 추가 경험을 사용할 수 있습니다. 첫 번째 힌트는 C와 C ++가 완전히 다른 언어라는 것 입니다. C ++을 배우는 가장 좋은 리소스는 StackOverflow입니다. 많은 경험과 지식을 가진 사람들이 많이 있습니다.

다음으로해야 할 일은 DirectX와 같은 저수준 API에서 3D 그래픽 엔진을 작성하는 것과 같은 주요 프로젝트를 시작하는 것이며, 모든 첫 번째 프로젝트와 같이 디자인이 잘못 실패하면 어떻게하지 않을지에 대해 배우게됩니다 프로그램합니다.

C ++을 배우기위한 훌륭한 책 목록을 보려면 StackOverflow 에서이 링크를 확인하십시오 .


3
아니요, C ++을 배우기위한 가장 좋은 자료는 좋은 책이거나 바람직하게는 책입니다.
Neil Butterworth

+1 주요 프로젝트를 시작합니다. 나는 책에서 읽은 것보다 3D 그래픽 엔진을 통해 고군분투하면서 더 많은 것을 배웠습니다. 연구가 필요한 낯선 상황에 빠지게됩니다. 예쁘지 않고 효율적이지 않지만 무언가를 배우게됩니다.
SC 고스트

"C / C ++에 대해 이야기하고 있다면 +1을 경험할 수 있습니다." "C ++를 배우기에 가장 좋은 리소스는 StackOverflow"에 -1이므로 투표하지 않습니다.
Residuum

5

우선, 당신이 아직 모르는 것에 기초하여 기본 이론적 배경을 높이십시오. 이론을 연구하고 몇 가지 간단한 예를 작성하십시오.

기본 이론적 배경의 예는 다음과 같습니다.

  • 알고리즘 및 데이터 구조
  • 소프트웨어 디자인 (UML, 디자인 패턴, OOP)
  • 운영 체제 및 병렬 프로그래밍

그런 다음 추가 언어 학습 (예 : Java 또는 C #)을 고려하십시오. -추가 언어를 공부하면 사용중인 언어의 장단점을 더 잘 이해하고 모르는 모범 사례를 배울 수 있습니다.

다음으로 새로운 도메인 (웹 프로그래밍, 컴퓨터 그래픽, 이미지 처리, 컴퓨터 비전, 데이터 액세스 등)을 선택하십시오. 이론을 연구하고 몇 가지 간단한 예를 작성하십시오.

다음으로, 데이터 액세스, UI 및 선택한 특정 도메인을 처리하고 다층 애플리케이션을 캡슐화 한 큰 예를 작성하십시오. 응용 프로그램의 아키텍처에 중점을 두십시오 (가능한 부분이 느슨하게 결합되어 있는지 확인하십시오).

새로운 접근법과 기술을 배우고이를 훌륭한 아키텍처와 통합하는 방법을 배우기를 바랍니다.


특히 게임 프로그래밍의 경우 다음 도메인 / 기술을 선택하는 것이 좋습니다.

  • 이미지 처리 기본 사항
  • 모든 특정 UI 기술
  • 컴퓨터 그래픽 기초
  • 특정 그래픽 엔진 (예 : DirectX, OpenGL, OGRE, ODG, Java3D 등)
  • 기계 물리 기본 사항
  • 특정 물리 엔진 (예 : PhysX, ...)
  • 특정 게임 엔진 (예 : XNA, ...)
  • 멀티 스레드 프로그래밍
  • 분산 프로그래밍


편집하다:

배우는 방법 :

  • CodeProject에서 예제를 읽고 실행하십시오.
  • 책 / 전자 책 라이브러리에서 몇 권의 책을 탐색하거나 좋아하는 책을 찾을 때까지 (읽기 스타일과 일치하고 + 읽고 싶은 주제를 다룹니다).
  • 블로그를 읽으십시오.
  • 문제가 발생하면 StackOverlow에 문의하십시오.

나는 직접적인 x를 알고있다. 둘째, 나는 이것에 대해 생각했지만 기본적인 것 이상의 자원을 찾을 수 없습니다. 어떻게 배우는 방법에 대한 조언이 있습니까?
Skeith

2
예제를 작성하면 시행 착오가 가장 좋습니다. 또한 편집을 참조하십시오.
Danny Varod

1

C ++ (C와 함께)를 사용하면 그들이 말하는 WTF를 이해하는 법을 배워야한다고 가정합니다. C ++은 여러 언어, 같은 장소에 여러 계층의 추상화가 있으며 한 번에 모두 탐색 한 다음 방금 본 내용을 이해하는 데 많은 시간이 걸립니다.

나는 당신의 경우에 있었고 여전히 그 언어에 대해 배우고 있습니다. 또한 임베디드 시스템에서 많은 작업을 배웁니다.

내 조언은 다음과 같습니다.

  • 그 책을 읽으십시오 : /programming/388242/the-definitive-c-book-guide-and-list- > 초보자가 아니라고 생각하더라도 소개 책으로 시작하십시오. 계속하기 전에 기본 지식을 많이 해결하십시오. 그런 다음 템플리트 메타 프로그래밍 및 임베디드 시스템 제한 사항에 대해 학습하십시오.
  • 많이 연습하십시오. 배운 내용을 많이 적용할수록 더 많이 이해할 수 있습니다. 이 시점에서 저의 방법은 작은 테스트 프로젝트에서 언어와 컨텍스트의 구석을 테스트하는 것입니다. 또한 모든 것을 통제 할 수있는 "큰"홈 프로젝트가 있으며 새로운 기술을 연습하고 중단 될 때까지 밀어 붙입니다.

프로그래밍에 대해 이미 많이 알고 있다고 가정하지 마십시오. 대부분의 개발자는 상황과 종류, 프로젝트, 플랫폼 등이 다른 실제 연습을 10 년 이상 마친 후에 만 ​​프로그래밍에 숙달됩니다.

당신은 여행을 시작하고 있습니다.


3
"성숙한"이라는 말은 "사용할만한 것"과는 거리가 멀다는 점은 말할 것도 없습니다. 더 많이 배울수록 모르는 것들이 더 많아집니다.
David Thornley

0

임베디드 프로그래밍 및 게임에 대한 관심을 바탕으로 다음 사항도 추천합니다. 위 게시물의 책 목록을 숙독하여 이러한 모든 주제에 대한 훌륭한 자료를 찾을 수 있습니다. 필자가 찾은 한 권의 책은 The C ++ Standard Library : A Tutorial and Reference

  • OOP의 기본 사항에 익숙하지 않다면 먼저 배우십시오. 상속과 캡슐화의 기본을 이해하십시오. 가상 키워드, 공개 키워드, 보호 키워드, 비공개 키워드 및 정적 키워드의 작동 방식을 확인하십시오.

  • 포인터와 참조를 사용하는 것이 편합니다 (일반적으로 참조를 선호합니다). smart_ptr <> 구문을 배우고 사용하여 "자동"메모리 관리를 달성하십시오.

  • 컨테이너 데이터 유형과 마찬가지로 C ++ 템플릿을 사용하는 방법을 배웁니다. 메타 프로그래밍을 통해 C ++ 템플릿이 수행 할 수있는 새롭고 강력한 기술을 지속적으로 발견하게됩니다.

  • STL을 배우십시오 : 문자열, iostream, 예외 및 컨테이너 클래스를 사용하고 가능할 때마다 하위 레벨 char *, FILE * 및 char [] 데이터 유형보다 선호하십시오.

  • Boost 라이브러리의 일부를 사용하기 시작하십시오 -관심 분야에 따라 asio 및 스레드 라이브러리를 먼저 배우는 것이 좋습니다. 이것은 매우 강력한 오픈 소스, 크로스 플랫폼 C ++ 소스 기반으로 이식성이 뛰어난 고품질 코드를 작성할 수 있습니다. (핵심 C ++ 표준에 대한 많은 추가가 Boost 기여에서 시작되었습니다)

  • 즐기세요! 진지하게-코드를 만들 애완 동물 프로젝트를 선택하십시오. 임베디드 프로그래밍 프로젝트가 마음에 드시면 Arduino 보드를 사용하십시오.

  • 풍부한 경험을 얻으십시오-Windows / Visual Studio C ++ 만 사용했다면 Linux / g ++ 또는 OS X / XCode 용 코드를 작성하십시오 (Mac에서 C ++를 코딩하거나 실제로 시야를 넓히고 갈 수 있습니다) Objective-C를 위해 OOP 언어의 다른 브랜치가 어떻게 문제를 해결하는지 확인하십시오!)

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