인프런 커뮤니티 질문&답변

배고픈님의 프로필 이미지

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

어셈블리어를 어느 정도까지 알아야 할까요?

해결된 질문

21.06.28 17:51 작성

·

2.9K

1

초반 어셈블리어 강의를 듣고 C++과 어셈블리어를 연계하여 설명하는 강의를 들었는데 어셈블리어에 대한 필요성을 느꼈습니다.

.

C에서 C++로 C++에서 C#으로 넘어가는 등 프로그래밍을 배울 때 최신 기술들이 아무리 많이 나와도 다 이전 기술들을 기반으로 나왔다는 것이 느껴집니다.

.

이전 기술의 이전 기술 그 보다 더 이전 기술인 오리지널이라고 해야하나? 아예 밑바닥 기술을 탄탄히 해야한다고 느끼고 있습니다.

.

과거에 회사에 소속되어 개발자 일을 하시다가 최근 프리랜서로 전환하신 분이랑 얘기를 해봤는데, 본인은 과거 카드에 구멍을 뚫어서 프로그래밍 하던 시절이 있었다고 요즘 프로그래밍은 과거에 비해 너무 쉬워지고 유니티 같은 쉬운 툴도 많이 생겨서 기초를 탄탄히 쌓지 않은 개발자들이 많이 양산되고 있다고 하시더군요.

과거에 어렵게 프로그래밍 하시던 시절이 후회 되냐고 물어보니, 그 어렵게 프로그래밍 하던 시절이 있어서 본인 기본기가 탄탄해졌다는 뉘앙스로 말하셨어요.

.

그래서 더욱 오리지널 기술인 기반 기술, 밑바닥 기술 같은 것을 탄탄히 해야 하는 것을 느끼고 있습니다.

(만약 제가 느끼고 있는 것이 잘못된 것이라고 생각하시면 잘못된 것이라고 말해주세요.)

.

근데 어셈블리어 말고 배울게 많죠.

지금 이 강의를 듣고 있는 C++, 게임수학, 다이렉트X, 서버 등 이후 코드 깔끔하게 작성하는 법, 리팩토링 하는 법, 게임 디자인 패턴 등도 공부해야 하는데 현업에서 필요할 때마다 디버깅 해서 또 필요하면 어셈블리까지 까봐야죠.

.

강의 들으면서 설명 해주는 것으로 C++을 어셈블리어로 해석하는 것은 되지만, 혼자 스스로 하는 것은 잘 안되더라고요. 추상적으로 이 흐름이겠지라고 예측하는 정도이려나?

.

그래서 어셈블리어 공부를 따로 해서 어셈블리어를 탄탄하게 공부하는 것이 좋을까요? 아니면 추상적으로만 알고 있는게 좋을까요? 만약 추상적으로만 알고 있는거면 어느 정도 추상적으로 알고 있는 것이 좋을까요?

또 지금 공부하는 것이 좋을까요? 나중에 공부하는 것이 좋을까요? 나중에 공부하는 것이 좋다면 어느 수준에 올라갔을 때 어셈블리어를 탄탄하게 공부하는 것이 좋을까요?

답변 1

4

Rookiss님의 프로필 이미지
Rookiss
지식공유자

2021. 06. 28. 18:18

누구나 한 번씩은 하는 고민 같네요.
제 매형이 구글 본사에 다니는 능력자라
먼 옛날 제가 학생일 때 관련 주제로 상담을 한 적이 있습니다.
[오픈 소스를 조립하거나, 이미 만들어진 프레임워크 위에서 작업하는게 뭔가 찝찝하고,
내가 완전히 만드는 기분이 아니다~] 라며 제가 푸념을 했었는데요.
개인적으로 모든 언어를 통틀어 어셈블리 언어를 가장 좋아하기에
바닥부터 만드는거에 집착하던 시절이 있었습니다.
그런데 매형이 답하기를, 그렇게 치면 컴파일러도 사용하면 안 되고 직접 만들어서 해야 하고,
그보다 더 로우하게 들어가면 전자 회로도 직접 만들어야 하는 것 아니냐며,
어디까지 deep하게 들어갈지는 적당히 선을 긋고
필연적으로 사람들끼리 분담을 해야 한다는 것이었습니다.

예전과 다르게 요즘은 학부에서 C, C++이 필수인 시절도 아니고
예전만큼 low하게 시작하지 않는 추세인 것은 맞으나
반대로 보면은 현대에 와서는 그만큼 윗단에서
더 광범위한 기술을 다룰 수 있다는 얘기도 됩니다.
기술을 연구하는 사람과, 제품을 만드는 사람의 경계선이 확실하다고 볼 수도 있겠네요.

C++을 공부할 때는 어셈블리 언어로 코드를 까보면 많은 도움이 되기 때문에,
강의에서 굳이 귀찮게 어셈을 공부하고 C++을 공부하고 있기는 하지만.
단순하게 어셈을 읽을 수만 있어도 충분하고,
심지어 그것이 꼭 필수적이라 보기는 어렵습니다.
본인이 원하는 목표가 기술적인 정점을 찍는 것이라면 얼마든지 파고 들어갈 수도 있겠지만,
차라리 그 시간에 클라+서버+웹+DB+AWS 등 윗단 기술을 폭넓게 공부해서
1인으로 온라인 게임을 출시해서 제품을 만들고,
돈을 버는게 더 현명할 수도 있습니다.
(배그만 봐도 20명 정도의 개발자가 1년만에 뚝딱 만들어서 몇 조원을 쓸어담고 있죠.)
결론적으로 시간은 유한하니 그것을 어떻게 배분할지는
전적으로 본인이 추구하는 바에 따라서 다를 것 같네요.

배고픈님의 프로필 이미지
배고픈
질문자

2021. 06. 28. 18:24

답변 감사합니다. 많은 도움이 됐네요.

말하신대로 윗단 기술을 폭넓게 공부하고 여유가 있으면 로우 스킬도 배우는게 나을 것 같습니다.

생각보다 일찍 답변을 주셔서 얼굴보고 얘기하는 것 같았습니다.

배고픈님의 프로필 이미지
배고픈
질문자

2021. 06. 28. 18:30

"단순하게 어셈을 읽을 수만 있어도 충분하고"가 조금 추상적이여서 다시 질문 할게요.

C++를 어셈으로 까서 추상적으로라도 읽을 수 있는 수준을 말하는 건가요? 아니면  모든 어셈 명령어를 알고 자연스럽게 코드를 읽을 수 있는 정도를 말하는걸까요?

Rookiss님의 프로필 이미지
Rookiss
지식공유자

2021. 06. 28. 18:39

해킹 공부를 할게 아닌이상 그 정도로 어셈에 능숙해질 필요는 없고 느릿느릿 구글링해가며 어셈을 읽을수 있으면 충분하다 생각합니다.

배고픈님의 프로필 이미지
배고픈
질문자

2021. 06. 28. 18:42

감사합니다. 많은 도움이 되었습니다.