혼자 컴퓨터 프로그래밍을 독학하는 대학 1학년 학생이 조언을 구합니다...

익명 사용자의 이미지

저는 지금 컴퓨터 프로그래밍에 대한 열정이 있다고 자부하는 컴퓨터 공학과 생도입니다.

다만, 제가 뭘 해야할 지 확실하게 알지 못해서 C언어 기초와 CPU와 OS 개론을 책을 사서 독파했습니다.

제가 하고 싶은 구체적인 직업은 게임프로그래밍과 해킹이며,

제가 알고 있는 게임프로그래밍은 C++ -> API -> MFC(?) -> DirectX 으로 공부한다는 건 검색했고

해킹은 인텔기반 어셈블리어와 해킹 공격의 예술 책을 사서 공부하려고 합니다.

지금 어셈블리 언어를 혼자 입문하고 있습니다만, 이건 C와 달리 어떻게 시작해야하는지,

어떻게 이해해야 되는지, 어디에 주로 쓰는지 조차 몰라서 답답합니다.

소중한 조언을 한 마디라도 부탁드립니다.

떼찌할꼬야의 이미지

하나하나 해 나가시면 되구요

1학년 때 저도 그런 마음을 가졌었는데.. 하나하나 꾸준히 해 나가는게 중요하죠

----------------------------------------------------------------------
세상은 나와 내가 아닌 사람들이 살아가는 곳!!

익명 사용자의 이미지


열정을 가지고 열심히 하겠습니다.

뭐랄까, 모순이 전혀 없는 논리만의 세계로 이루어진 프로그래밍이

정말 멋있다고 생각해서 배우게 되었습니다.

vacancy의 이미지

해킹이 왜 직업이 되는지는 잘 모르겠지만 .. ^^;

Computer Architecture 공부를 하시다보면
어셈블리어에 대해서도 감을 잡게 되실 겁니다.
사실 어셈블리어로 코딩할 일이 요샌 별로 없긴 해요.
해킹의 경우는 유용할 수도 있겠습니다만, .. ;;
그다지 급해보이지는 않네요.

일단은 학교 커리큘럼에 있을법한
자료구조, 알고리즘 공부를 하시는 게 어떨까요.

익명 사용자의 이미지

자료구조와 알고리즘에 대한 공부는 독학으로 기초과정 책을 독파했으며

학교에서는 2학년부터 시작하기에 너무 학교진도가 느려서 초조해서 독학을

이번 2학기부터 시작했습니다.

1학년생이기에 시간이 넉넉하다고 생각하실 수도 있지만,

저는 왠지 컴퓨터 실력이 어느정도 이상이 되기 전까지 왠지 불안해서 막 삽질하고 있습니다.

API 라이브러리를 배우면 강한 프로그램을 쉽게 만들 수 있다는 건 알겠지만, 기초부터 다지자고

생각해서, 그리고 해킹을 배우기 위해서 어셈블리어 개론을 다짜고짜 사서 파고 있습니다.

답변 감사합니다.

keedi의 이미지

학교 진도가 느려서 초조한 이유를 잘 모르겠네요.
부족한 부분은 따로 더 공부하면 될 뿐...
(대학 생활이 전공만을 위한 것은 아니라고 봅니다.)

하루 이틀할 것도 아니고,
멀리가려면 조급증부터 잡는 것이 좋을 것 같습니다.
어짜피 이 바닥에서 제대로 해보겠다면,
공부는 평생하는 것 아닐까요?

----
use perl;

Keedi Kim

익명 사용자의 이미지


조급증이 있긴 하지만, 전 원래 제 주 전공은 다른사람보다 월등히 잘하지 않으면

불안하기도 하고 자부심이 느껴지지 않으면 답답해서 한 쪽만 죽어라 파는 경향이 있습니다.

물론 평생 할 생각입니다. 이 분야의 최고가 될 때까지.

keedi의 이미지

다른 댓글과 그에 대한 답글도 잘 읽어보았습니다.
다른 분들 말씀처럼 기합이 엄청 들어가 계시네요.
열정적으로 보이는 모습 무척 보기 좋습니다.

다만, 처음 말씀드렸던 것처럼 조금 느긋하게 생각하시는 것을 추천드립니다.
놀랍지만(또는 전혀 놀랍지 않지만...) 세상에는 잘하는 사람이 정말 많답니다.
말꼬리 잡으려고 하는 것은 아니지만 경험상 누군가보다 더 잘하려고 하거나,
또는 잘하지 않으면 불안해하는 스타일의 경우 스트레스에 취약해지기 쉽상입니다.
남보다 잘하고 또는 조금 더 못하고, 그렇게 중요하지 않아요. :-)

흥미를 느끼고 계시는 것처럼 보이니 충분히 즐기실 수 있을 것 같습니다.
노파심이지만, 조금은 여유롭게 하지만 차근차근 나가시길 바래봅니다.

여담으로 생각보다 대학 교양과정에서 배우는 과목들이 평생 도움이 되는 경우도 많습니다.
전공 수업 때문에, 또는 학점 때문에 놓치는 우를 범하지 마시길 바랍니다. :)

----
use perl;

Keedi Kim

snowall의 이미지

일단 수업에 충실하세요. 해킹을 하든 게임을 만들든 학교에서 배우는건 소중합니다.

아니면 어셈블리어 관련 수업을 청강해보세요

어쨌든 어셈블리어도 코드 짜서 어셈블러에 넣고 바이너리 만들어서 돌리면 됩니다. 결국은 뭘 할것인가? 이게 문제인거죠.

피할 수 있을때 즐겨라! http://melotopia.net/b

익명 사용자의 이미지


저는 게임쪽으로 나가고 싶으며, 게임 엔진 프로그래밍 및 보안과 매크로 단절을 하고 싶습니다.

학교에 어셈블리어가 따로 없는 학교기에, 기본 개념을 다지기 위해

이해가 반쯤 되었든 다 되었든 무조건 진도를 나가고 있습니다.

snowall의 이미지

이름이 어셈블리어가 아니더라도 어딘가에서 어셈블리어와 어셈블러를 배우긴 할텐데요...-_-;;;

방송대 커리큘럼에도 있거든요.

어쨌든, 책이 있으면 예제를 충실히 따라하면서 이것저것 바꿔가며 해보세요

피할 수 있을때 즐겨라! http://melotopia.net/b

sblade의 이미지

게임은 많이 하시나요?

왠지 게임 프로그래밍은 프로그래밍에 대한 열정보다 게임에 대한 열정이 커야 잘 할 것 같습니다.
결국 프로그래밍은 목표를 위한 수단이거든요.

일인칭 슈터를 하다가, 벽 뒤의 반만 보이는 물체는 애초에 안그리는건지, 그리고 덮어쓰는건지, 애초에 안그리면 어떻게 그릴것/안그릴것을 구별해내는지 생각해 보셨나요?
아니면 스타크래프트를 하다가 맵 어디로 유닛을 보내면 도대체 길을 어떻게 찾아가는지 생각해 보신적 있나요?
아니면 게임을 하다가 유독 편하다고 느껴본 인터페이스가 있나요?

뭘 만들려다가 어셈블리가 필요하면 공부하는 것은 좋지만
나중에 쓸지 안쓸지도 모르는 어셈블리를 대학 1학년같은 소중한 시간때 뚜렷한 목표없이 공부해야 되는지는 잘 모르겠네요. 책만 넘기는건 이해하는것도 아니고 나중에 다 까먹습니다.
어셈블리를 어디서부터 어떻게 배워야 하는지를 모르는 건 다른 이유가 아니라 어디다 써야 할 지를 아직 모르기 때문이에요.
나중에 써야 할 때가 오면 옛날에 1년을 책을 봐도 모르던걸 한달만에 깨우치게 될겁니다. 그게 필요에 의한 학습이거든요.

익명 사용자의 이미지

감사합니다.

게임에 대해 개발자의 관점에서 바라보라는 말씀은 저에게 매우 신선하네요;;

기초를 이해하려고 어셈블을 접한 거지만 말씀을 들어보니 확실히 쓰일지 안 쓰일지 모르는 학문이군요.

감사합니다. 그렇다면, 먼저 실용적인 컴퓨터 구조와 네트워크를 먼저 배우도록 하겠습니다.

그 다음에 어셈블리어와 해킹은 제가 사용할 일이 느껴지면 배우겠습니다.

조언 정말 감사합니다.

lmk378의 이미지

근데 컴퓨터 공학도인데 왜 독학하시나여? 학교에서 배우는것이 많을텐데요^^;;
1학년이시면 멀해도 어려우실꺼예요~
최종적으로 다이렉트x를 공부한다 하신걸로봐서 게임프로그래밍중에서도 그래픽스쪽이실 꺼라 생각되는데요~
그래픽스와 해킹은 전혀 다른분야로 충분한 시간과 경험이 없으면 어느정도의 성과를 이루어내기 매우 힘든분야입니다.
일단 한가지 노선을 선택하시는게 중요할 것 같습니다.

글쓴분께서 남자라 가정하고 말씀드리겠습니다.
사실 제가 해드리고 싶은 말은
혹시 군문제가 해결되셨는지요? 해결되지 않으셨으면 군입대 추천해드립니다^^;;(나중에 병특하신다면 않읽으셔두 되요)
장난으로 하는 말이 아니고 언어라는게 휘발성이 매우 강하거든요~(전 전공뿐 아니라 모든거에 휘발성이 강하더라구요..ㅠ)
프로그래밍 언어도 마찬가지 입니다. 자주 쓰지 않다보면 잊어버리게 마련입니다.
열정이 있으신만큼 군대를 일찍 갔다오셔서 열정에 대한 맥을 끊지 않고 공부하셨으면 하는 바램입니다.

ps1. 해킹이라는건 너무 추상적이라고 생각합니다. 옛날 노현정 아나운서 말이 생각나네요~ 공부하세요!
ps2. MFC로 게임도 만들수 있나요? 그냥 UI 제작용 라이브러리라고 생각하고 있었는데~

익명 사용자의 이미지


병역 특기자로 프로그래밍 또는 보안쪽으로 갈 생각으로 더욱 노력하고 있습니다.

군대라는 2년을, 체력단련만이 아니고 전공에 조금이라도 도움이 되고자 합니다.

그리고 프로그래밍 언어가 휘발성이 강하지만, 그래도 쌓아놓아두면 다음에 다시 쌓기가 쉬울거라고

생각했습니다.

뭐랄까, MFC와 다이렉트X에 대한 건 확실히 모르고 게임을 제작하려면 그쪽을 배워야 한다고만 배웠습니다.

독학을 하는 이유는 학교에서 이제 C언어 기초를 배웠으며, 자료구조와 알고리즘 2학년,

네트워크 및 시스템을 3학년에 배워서 기다리기가 너무 멀어서 그렇습니다(...)

2학년 마친 후에 정보처리기사 2급을 목표로 하고 있습니다.

lmk378의 이미지

1학년이신데 왜이리 급해보이는지 저로썬 알 수가 없네요^^;;;
근데 정보처리기사도 급수가 있나요?

hyde1004의 이미지

안녕하세요.

아직 1학년이시면, 다양한 방면으로 경험을 가져보라고 말씀드리고 싶은데요.
이미 다른 분들이 말씀을 해주신듯 싶네요.

조그만 마이컴을 만들어보시는건 어떠신가요?
저희 때는 Z80을 써서, 컴퓨터를 만들어보기도 했는데요.
여기에 어셈블리어로 코딩을 했던것 같습니다.

저는 C언어를 배운 한참 뒤에, 어셈블리어를 접했는데요.
저 개인적으로는 먼저 어셈블리어를 배웠더라면, C언어의 포인터를 이해하는데 훨씬 용이했을것 같았습니다.

익명 사용자의 이미지


마이컴이 개인만의 OS를 만들어 보라는 말씀이신가요?

처음 듣는 생소한 용어네요...;

그리고 말씀해주신대로 어셈블리어를 먼저 공부하니,

C언어의 포인트 개념과 메모리 주소개념이 이해하기가 쉬웠습니다.

포인터는 그냥 주소값을 저장하고, *를 사용해 그 값을 참조한다는 것을

어셈블리어를 배움으로서 확실히 알게 되더라구요.

hyde1004의 이미지

마이컴은 마이크로 컴퓨터를 이야기하는 것으로 알고 있습니다.

Z80, 8051 등으로 검색해보시면, 이런 칩으로 조그만 컴퓨터나 시스템을 구성할 수 있습니다.
(제가 컴퓨터를 처음 접할때는 Z80으로된 MSX 컴퓨터가 많았습니다. 그 당시엔 Basic언어가 ROM에 저장되어있었죠 ^^)

이런 칩엔 보통 어셈블리어로 많이 코딩을 하는데요.
직접 시스템을 꾸며보시면, H/W나 Low Level에 대한 개념이 더 확립될것 같습니다.

익명 사용자의 이미지

개인적인 생각으로는 공부가 부족해서 그런 것 같습니다.
교과과정을 조금 더 깊이 들여다보시면 공부할 것들이 엄청 많습니다.
그리고 매일 개발하다보면 공부한 것들을 실제로 어떻게 적용할지 알게됩니다.
지금 듣는 수업이나 개인적인 공부나 조금만 더 깊이 해보세요.

그리고 웬만한 컴퓨터과학 학부과정엔 어셈블리어가 (맛보기일지라도) 포함되어있을겁니다.
Computer Systems/Architecture 수업이 있다면 아마 거기서 배울겁니다.

익명 사용자의 이미지


컴퓨터 시스템/아키텍쳐 수업과 컴퓨터 전반에 대한 공부를 열심히 하겠습니다.

익명 사용자의 이미지

의욕이 넘치시는 분이군요.

하지만, 공부해야 할 것이 산넘어 산인 분야가 바로 이 바닥입니다.

공부하실게 지천에 널려 있습니다.

아마 평생을 공부해도 여전히 공부할 게 남아 있을 것입니다.

딴 분야도 마찬가지겠지만요.

그러니 조금씩 조금씩 차분하게 해나가길 바랍니다.

TCP/IP도 하루 아침에 만들어지지 않았습니다. 소위 천재 소리 들었던 박사들이 떼로 몰려다니면서 수년간 연구 고민해서 만들어 낸 것입니다.

컴퓨터 구조(computer architecture)에 대해 아실려면 디지털 회로에 대한 기본지식이 꼭 필요합니다.

단지 진리표나 풀어낼 줄 알고 mux나 decoder가 뭐라는 것만 달달 외우라는 의미가 아닙니다.

아주 간단한 회로라도 꼭 만들어 보길 바랍니다.

근데 이걸 하다보면 전자공학이 걸리고 그게 더 궁금해서 파고 들면 전기공학 혹은 물리학이 꼬시고 더 파고 들면 수학이 앞길을 막습니다.

본인이 어떤 이해하고자 하는 주제를 스스로 아주 쉽게 풀어낼 수 있는 정도로 이해의 폭을 키우려면 필히 검증이 필요합니다.

실험을 통한 검증이고 또 그걸 되도록 온전하게 이해해야겠지요.

결과적으로 돈과 시간 그리고 노력이 아주 많이 들어가는 작업입니다.

요즘은 박사들이 넘쳐나서 공학박사 가지고 있어도 아주 기본적인 것도 제대로 설명 못하는 사람들 부지기수입니다.

꾸준히 하셔서 원하는 수준에 꼭 이르시길 바랍니다.

jw8704의 이미지

저는 현재 대학생입니다.

아직도 배울게 많고 부족하여 , 이런글에 좋다 나쁘다 라는 사족을 달긴 좀 그렇다고 스스로 생각은 하지만..

좋은글 입니다.

zaemin2의 이미지

대학교1학년인데 열정이 대단하시네요.
한가지 팁이라고 하기엔 뭐하지만 제 생각을 말하자면,

대학교 학부때에는 한가지만 파는것도 나쁘지 않다고 생각하지만,
전체적으로 윤곽을 잡는게 더 중요하지 않을까 생각합니다.
나무를 보기보단 숲을 보듯이,
학부 1학년이라면 컴퓨터공학 전체를 놓고 윤곽을 잡아가는게 더 좋지 않을까도 생각합니다.
물론 박사학위를 가진사람도 전체를 꿰뚫는 눈을 가지긴 힘들겠지만,
단지 상식적인 수준에서 호기심을 가지고 공부하는 것도 나쁘지 않을것 같습니다.

예를들어, 스타크래프트에서 유닛이 어떻게 이동할까에 대해서, ( 좋은 예라고 생각합니다. )
단지 그 알고리즘만 배우고 끝이 아니라,
이 알고리즘이 다른곳에 어떻게 응용될수 있고, 다른곳에서 배운것과 어떤 연관성이 있는지.
그런거에 호기심을 가진다면 좀 더 즐겁게 공부할수 있지 않을까 생각이 듭니다.
또한 왜 배우는지 모른다고 말씀하셨는데,
저는 사실은 그게 가장 중요하다고 생각합니다.

그냥 목표를 향해 무작정 공부를 하기 보다는
호기심을 가지고 전체적으로 이미지를 그려간다는 마인드로,
그게 설령 게임과 조금 거리가 있다고 생각이 들더라도
그런식으로 하는게 좀 더 낫지 않을까... 도 생각하는데.ㅎ
뭐 제 말이 옳다곤 할수 없죠 ^^
이상 어느 대학원생의 허접한 답변이었습니다.

jyunet의 이미지

개임 개발 하실려는 분이 왜 어셈블리를 배우지요? 공장가실려 그러시나?
해킹을 배워놓으면 보안업체에 취직이 쉽겟지만 게임과는 별개죠

개임 개발자가 되실려면
1. 대학공부에 충실해서 장학생으로 졸업하세요
2. c++,mfc,directX 열심히 공부해 놓으세요..
3. nc나 넥슨 대형 게임사에 취직하세요..

게임 개발은 100억 200억 개발비가 드는 사업입니다..
개인이 하기엔 무리가 있지요..
큰 대형회사에 들어갈려면.. 무조건 수도권 대학 4년제 나와야 하고... 연고대, 서울대 나오시면 더 좋죠...
이상

sjin의 이미지


나중에 되돌아 보면 그 시기에 열심히 못 놀았던게 후회가 될 수도...

지금은 안 믿어질지 모르지만 그런 사람들 꽤 있습니다.