:) 저의 프로그래밍 경험담입니다. 도움이 되시길 바랍니다.
저는 프로그래밍을 처음 접한 것이 가장 위험한 '독학' 이였습니다. 어렸을 때 프로그래밍을 우연히 배우고 싶어서 서점에 들어가서 제일 있어보이는 입문서 하나를 샀습니다. C 프리미어 플러스인가? 50판이였는데 누런 종이로 되어있었죠. 책을 사고 정말 즐거운 마음으로 집에서 컴퓨터를 키고 없는 지식으로 프로그래밍은 '메모장'으로 해서 만든다더라를 듣고 메모장을 키고 코드를 짰습니다.
int main()
{
return 0;
}
네, 그 다음 저는 어떻게 할지 몰랐죠. 컴파일러라는 존재를 그 당시에는 몰라서 눈물을 머금고 프로그래밍 책을 접고.. 이길을 접었습니다..ㅎㅎ
세월은 흘러 우연찮게 다시 프로그래밍을 제 첫 번째 스승님에게 배웠습니다. 컴파일러가 뭔지 배우고 막 재미있게 가르쳐주시더라구요. 정말 열심히 했고 진짜 열심히 했습니다. 대부분 프로그래밍에 흥미를 느끼시는분들과 마찬가지로요.. 구구단이 너무 어려웠고 별 찍기가 제 머리를 폭파시킬 것 같았죠..
인터넷에 떠도는 테트리스 코드는 '대단하다!' 라고 느꼈습니다.. 그리고 현재는 CBP 기반에 Engine을 만드는 실력까지 왔네요.
와.. 뿌듯하죠. 남들이 보기에는 몇줄 안되는 것과 결과를 보고 뭐지! 라고 분개할지 모릅니다..
구구단이 너무 어려워서.. 별 찍기가 너무 어려워서 도서관에서 1년동안 C언어 관련 책만 200권 넘게 빌렸습니다. 정독했냐구요? 아니요..
이 책에서 '변수'는 어떻게 설명하지? 저 책에서는? '원서'는? (당연히 원서는 ㅋㅋ 사전이나 번역 돌려가면서 해석하면서 봤습니다.) 수 많은 입문서를 보고 제가 딱 어디까지 올라간지 아십니까? 흔히 이야기하는 cmd expert...
코드 자부심만 높고, 기초 입문서를 많이 봤다는 자존심과 API는 넘보지도 못할 모래성도 아닌 그저 작대기 하나만 꽃아넣은 부실한 실력에 프로그래머가 되었습니다. 흔히 보는..이제는 별로 이런것도 잘 안보이지만..:)
'아.. 내가 그렇게 공부했는데 cmd(window shell)에서만 프로그램을 만들 수 있어.. API 같은 다른건 꿈도 못꾸고 그냥 부럽다.. 어렵다..'
이런 실력이 되었습니다.
조급하기도 하고 짜증도 나서.. 책장을 어려운 책을 사다 모으는 취미를 가지게 됬습니다. 뿌듯함과 책을 모이는 행복감(?ㅋㅋ)을 느끼게 됬죠.
여성분들이 그릇을 모으면서 느끼는 행복감과 비슷한..ㅡㅡ;;
무협으로 치면 '마공'을 익혀서 한계에 부딛친 경우죠..ㅎㅎ 정말 정석으로 가야하는데 테크닉컬(마공)만 주구장창 올렸으니..
벽에 부딛치자 프로그램에서만 보던 'Loop'가 현실에서 왔습니다.
'Roll Back! Roll Back!!!'
난 이런 실력이 아닌데... 후.. 다시 처음부터 다시 보자. 다시 처음부터.. 다시 첨부터!!!
루프에서 허덕이던 저는 문득 깨닳음을 얻었습니다!!
'현재 기초입문서(쓰레기라고 읽습니다.)를 백번, 천 번 읽어봤자 쓰레기다..'
네, 지금에서 보면 정말 쓰레기를 붙잡고 쓰레기를 어떻게하면 이쁘게 쓰레기로 만들까를 공부하고 있던 것 이지요.
정말, 지금 생각하면 희대에 도박이오.. 최악의 확률을 가진 선택을 하게 됩니다.
고급진 이론, 고급진 코드를 보자..
무작정 모으고 봤습니다. 이게 뭔말인지 모르고 무얼 뜻하는지 모르지만 왠지 유명한 (글로벌적인.ㅋㅋ) 사람이 쓴건대.. 어려워도 보자.
와 이걸 이렇게 쓰네? 근대 저건 뭐지.. 매우 단편적이면서도 불완전한 것들을 억지로 뇌와 손에 쑤셔넣었죠. 물론 이 방법을 지금하라고하면
-0- 기적에 가까운 확률이니 추천드리지 않습니다.
개고생과 실력에 퇴보.. 쥐뿔도 없던 실력이 퇴보할때 느끼는 좌절감이란?ㅋㅋ
아주 배틀필드에서 시간대비 효율 최악인 경험을 토대로 조금씩 .. 이론과 코드를 모았습니다..
정말 시간대비 효율 최악이긴한대 몸으로 느끼고 경험을 했던 놈들이라 이론들과 코드는 정말이지 '정답'에 가까운 알찬애들이 조금씩 모였습니다.
얼마나 걸렸을 것 같나요?
^^.. 아직도 수 많은 이론들과 코드들이 Alpha는 커녕 정립조차 되지 않고 제 안에 파고들어있습니다..ㅜㅜ
하지만 정리된 애들도 많았지요..ㅎㅎ
조금씩 모아서 공책에 정리하고 이론을 구체적으로 만들었을 때 코드로 옮겨보고 다른 책들에서 설명한 부분들을 조합하거나 응용 혹은 새로운 것들을 더해서 다시 정리.. 다시 처음부터.. 다시 입문서에서 말하는 '목차 순서대로!' 다시 정리했습니다.
'오오 기적이다!'
C++ 을 기초 입문서에서 말하는 것을 정리하자..
놀랍게도! Java 와 C#이 '헤이 브라더! 하고 따라왔습니다..ㅎㅎ
API? DirectX? Cuda? , Qt?
줄줄이 손잡고 오더군요..
제가 정립한 부분을 다른 분들에게 가르치고 보완을 하면서.. 여러가지 테스트를 했습니다.
마치 진검승부처럼 .. '이 이론이 이렇습니다. 이게 파생되서 저게 되고.. 저게 되고~ 이게!되네?' .. 그걸 코드로 옮기고 테스트하고 이론을 다시 정립하고 다른 코드들과 융합이 되는지. 다른 이론들과 융합이 되는지 하면서 컷과 Add를 반복해서 올라와서 지금 Beta가 되었습니다.
하.. 사설이 길었죠?
제 답변들을 보면 무척이나 길고 다양한 것들을 막 설명합니다.
그게 제가 ㅠ,.ㅠ 쥘쥘 짜면서 고생하면서 올린것입니다.
제일 빠르게 프로그래밍을 숙달시키는 방법요?
현재 선택할 수 있는 최고의 정답을 따라가세요.
제가 배울땐 네이버에게 속고.. 다른이들에게 속아서 쓰레기더미에서 쓰레기(현재 시중입문서)를 만들었지만 여러분들은 좋은길이 있습니다.
저는 여러분에 Gaurd Angel이 아니예요. 하지만 도움을 주고 싶어요. 제가 밑바닥에서 뒹글었던 시간을 여러분에게는 권하고 싶지 않습니다.
아주 간단한 질문이 여러분에 인생을 바꿀수도 있습니다.
물론, 걱정하지마세요.
이미 Beta 버전까지 올라온 이론들이 많이 있어서 후회하시지는 않으실거예요.
조금더 물어보고 조금더 생각해보세요.
결론은 쓰레기(입문서)에서는 쓰레기를 잘만드는 법밖에 안나옵니다.. 경험담임.. 리얼
물론, 입문서를 추천해준분들이 나쁘다는것은 아닙니다. 그분들도 피해자입니다. 왜냐면 그게 선택지 중 가장 옳다고 믿었고, 믿으니깐요.
혹은 다른 선택지가 없었을 뿐입니다.
서울에서 부산까지 방법은 엄청나게 많습니다.
제일 빠른 방법은 '지금 있는 곳을 부산으로 바꾸면 되죠..' :) 힝 비행기나 그런거 탄 예를 들줄 알았나요?
그만큼 파워와 ,선택지가 존재한다면 지금 그 위치를 바꾸면 됩니다. 다른이들이 따라올테니깐요.
저는 아래와 같은 질문을 매우 좋아합니다.
printf 가 뭐예요?
라는 질문이 있습니다. 일반적인 대답들은
printf 는요~ c언어에서 출력해주는 함수예요. 라는 유사한 답변을 많이보게되는데요..
대부분은 이런 선택지와 정보를 접하고 있습니다.
저라면..
printf는 #inclulde <stdio.h> 헤더에 포함되어 있는 함수예요. stdio는 standard input output 에 약자인대요. 기본 입출력을 구현해놓은 헤더예요.
여기에서 printf는 출력 output을 제공해주고요. 이와 유사한건 scanf가 있어요. C언어는 function(함수)지향적 이라고 하지요?
그래서 많은분들이 printf 에서 f 를 function 즉 print function 이라고 말하는데. 이건 아니예요. 뒤에 f는 format 에 약자예요.
즉 print format , scan format 이랍니다.
printf("[Statements]"); 가 기본형식인대요. 여기에서 여러분들이 " " 즉 format 을 만들 수 있어요.
C언어는 A World Convert To B World 라고 했고, Mathmatics World Convert To Digital World가 기본적으로 적용되어 있다고 했지요?
수학에서 가장 중요한것이 뭔가요? 바로 범위예요. 그 어떤 수학문제에서도 범위를 정해야해요.
즉 x + 1 = 2 일때 x는 정수이다 라고 말할때 x는 정수이다가 바로 범위예요. 범위는 Range라고 불리는데 이때 제일 중요한게 세 가지가 있어요.
Start Point(시작점) Flows(흐름) End Point 예요.
printf에서 Statements 에 시작점은 제일 먼저오는 " 이고, 흐름은 -> 방향으로 가요. 그리고 End Point는 두번쨰 오는 " 예요.
만약에 "를 수식에서 start point 나 end point가 아니라 문자로 쓰고 싶으면 \ 를 붙여서 Escape sequence로 표시해줘야해요.
\n 같이 말이예요. 또한 C 언어는 Function을 기본적인 Default로 구동이 되기 때문에 Function(함수) 지향적이라고 불려요.
함수에 수식을 만들때 제일 중요한게 Parameters(매개변수), Arguments(인자) 이죠? Parameters는 수식에 매개체가 되는 변수를 뜻해요.
예를들어 f(x) 에서 x가 parameters 라고 말해요. 그러면 f(10) 에 10은 Function Call(함수 호출 ,사용시) 들어가는 값을 Arguments라고 표현하는거예요
즉 printf에서 %d 라고 한다면 %d는 수식에서 int 형 Parameters를 만든다는 뜻이고, 뒤에 , 으로 구분된 것들이 Arguments가 되는거예요
printf, scanf에 이런 동적으로 수식을 만드는 것을 가변인자라고 말하는데요.
가변 인자값을 구현할떄 ... 이 표기법이예요! 이것이 C++11 이상급에서는 template에서도 적용되기 때문에 매우 중요한 것이니 꼭 한번 봐두도록 하세요~
printf를 배울 때 선택지를 더 늘릴 수 있다면 저는 기꺼이 질문을 더 하겠습니다.
실천하세요! 배움은 귀천이 없고 조금만 굽히고 찾아본다면 정말이지 남들이 봤을 때 돌덩이가 보석이 되고 운명을 바꿀수도 있으니깐요..
안타까워서 그래욤.. 저 처럼 무한 루프에 빠지는 대부분에 초보 프로그래머 입문분들이..ㅜㅜ
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.