게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[개발자 지망생 상담소] 답변 특집 - 프로그래머는 무슨 언어를 배울까
게시물ID : gametalk_250889짧은주소 복사하기
작성자 : 하까요
추천 : 16
조회수 : 2066회
댓글수 : 18개
등록시간 : 2015/04/21 18:01:02
" 저기 C#  이 좋을까요 C / C++ 이 좋을까요 자바가 좋을까요. 좋은책 추천점"
 
이런 질문 하는 분들 정말 많습니다.
 
아오 빡처. 학원 쎔님들 제발 재대로 가르치라고!!!
 
그냥 니들은 프로그래머 하지마! 그냥 프로 게이머 해!
 
잠시 빡첬네요... 워낙 학원이 개판이라서... 하기야 학원 강사들도 그냥 문법만 아는 사람들 가지고 문법만 가르치니까요...
 
그냥 C(알고리즘)  C++(객체지향) 만 죽어라 하세요.
눈만 뜨면  줄줄줄 입에 나올정도로 존나게 하는거임
 
 
- 컴공에서는 어셈블리를 저급언어 C 를 고급언어로 가르칩니다. 근데 요즘은 하도 분야가 발달해서 
   C / C++은 중급언어로 C# 과 JAVA등은 고급언어로 분류해야 합니다.
 
- 물론 학원이나 학과에서 가르처주는 유니티 C#( 실제 C# 인 netframework  와는 다릅니다. 유니티 c#은 net.3.5 버전을 유니티에 맞게
  살짝 커스터마이징 된 언어지요)만 가지고도 게임 프로그래밍 하는데 불편은 없습니다.
 
 - 유니티는 언리얼과는  달리 스크립팅 기반의 엔진입니다. 언리얼은 C++베이스라 고급 코어는 직접 구현하거나 변경해야 하는 진짜 프로그래밍 영역이 있다면 유니티는 그냥 문법만 대충 알아도 문제 없이 돌아가는 스크립트를 기반으로 하고 있습니다. 당연히 안정성이나 범용성, 사용성등은
 유니티가 월등히 좋죠. 최근 언리얼은 언리얼 스크립트(유니티의 C# 과 비슷한)를 버리고 블루 프린트로 대체한 이유도 스크립트 엔진의
 낮은 퍼포먼스를 극복하려는 시도입니다.
 
 암튼, 자바나 씨샵같은 고급언어는 C /C++에서 나타난 여러가지 문제를 보완하여 생산성을 향상시키려는 의도로 만들어 졌습니다.
 건설회사로 치면 C++로 건물을 만들려고 회사에 들어갔더니 이론이나 자료, 거푸집같은 재료는 풍부한데 일단 레미콘하고 포크레인을 만들어야 하는
 상황인 겁니다.  신입이 일일이 다 만들고 이해하고 관리하면서 쓰기에는 생산성이 낮았고 진입장벽이 너무 컸던 것이죠.지금도 C++ 은 생산성이
 낮아서 고급 프로그래머나 쓰는 언어가 되어가고 있습니다. (유니티도 내부 코어는 전부 C++로 빌드되었음).
그래서 C#은 공통적인 건설장비인 레미콘이나 포크레인같은 것을 표준으로 삼아 지원을 해줍니다. 표준 지원을 해주니 C++ 처럼 일일이 프로그래머가
관리를 할 필요가 없어 남는 시간에 컨텐츠 구현에 집중할 수 있습니다.
 
 여기서 사족은  이런 멀티 플렛폼 빌드( 코드가 실행되는 장치에 의존하지 않는 컴파일 방식,  C++은 심하게 의존적이라 C++자체는 환경이 다른
  안드로이드나 IOS같은 플렛폼에서는 실행 불가)를 실현한 JAVA 가 각광을 받자 마이크로소프트에서 그 대응책으로 자바의 느린 실행속도를 보완하고
 지원환경을 표준화하여 만든게 C#  되겠습니다.  따라서 JAVA 나 C# 이나 생산성 향상이라는 설계 목적이 같은 언어이고 유니티에서도 이 두가지 언어를 동시에  지원합니다. 필자도 C++ 로 만든 겜브리오 엔진쓰면서 진짜 힘들고 진도가 안 나가는 일을 경험했기때문에 이러한 고급언어의 등장은
매우 반갑습니다. 
 
따라서 C / C++을 알면 JAVA나 C#도 자연히 내부 구조에 대해 알 수 있습니다. C#에서 편리하게 할 수 있는 언어적 기능은 이미 C++ 에서 개 고생
하면서 만들었던 기능이니까요.
 
- 이렇게 중급언어를 마스터하면서 C#과 같은 고급 언어의 오버헤드에 대해서 알게되고 이는 결국 코딩의 질을 결정하게 됩니다.
  학원에서 C#만 배워서 온 신입은 너저분한 코드와 낮은 퍼포먼스, 가독성등의 여러 문제를 가지고 있으며 결정적으로 문제해결 능력에서
  큰 차이를 보입니다.
 
  특히 메모리 관련해서 많은 차이가 나는데 C++시절의 포인터를 오랫동안 사용한 프로그래머는 C# 의 모든 참조변수가 스마트포인터의 개념을
  가지고 있다는 것을 알수 있습니다. 이는 메모리의 사용법에 대한 올바른 이해와 C#의 Boxing 과  unboxing 같은 개념을 알고 효율적인
  선택을 할 수 있다는 것이지요. C시절부터 String을 다뤄본 프로그래머는 C#의 String 이 얼마나 비효율적인지 Stringbuilder 를 왜 사용해야
하는지 알고 선택하고 활용할 수 있습니다.
 
 하지만 C# 만 배운 프로그래머는 이런거 전혀 모릅니다. 엄청난 오버헤드가 왜 발생하는지, 퍼포먼스가 뭔지도 모릅니다. 기본에 대한
이해가 없으니 단편적인 지식만 암기하게 됩니다. 또한 객체지향이라는 개념이 왜 나오게 되었는지 모르기 때문에 활용을 못합니다.
 활용을 못하면 결국 단순한 업무 뿐이 못하고 얼마 되지 않아 도태되겠죠.
 
- 결론적으로 중급언어를 마스터 하시고 나서 JAVA 와 같은 고급언어를 배우는게 훨씬 당신의 인생에 도움이 됩니다.
  요즘은 책도 매우 좋고 번역도 잘된 작품이 많아서 조금만 의지가 있다면 배우는게 어렵지 않습니다.
 
 - 끝으로 좋은 책 추천해 달라는분, 공부못하는 사람이 꼭 참고서만 까다롭게 굽니다. 그냥 책방에 가서 가장 최근꺼 아무거나 하나 사서
  머릿속에 다 넣고 나서 또 아무거나 사서 머릿속에 넣으세요. 엄청 힘들고 고된 작업이지만 그만큼 당신의 실력이 늘어날 것이고
그것은 면접에서 파워로 이어집니다. 
 
 - C# 만 아는 신입은 부려먹고 싶지만 C++에 대해 해박한 신입은 키우고 싶습니다.
 
 
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호