맨처음에 프로그래밍을 시작할때 어떻게 하면 프로그래밍 코딩 실력을 늘릴 수 있지? 이 책 한권만 공부하면 정말 그 언어를 마스터 할 수있을까? 고민 하신분이 있을거라 생각합니다! 의욕이 넘치던 저 또한 그랬으니까요. 하지만 언어를 마스터한다는 말은 상당히 오만한 말이 될 수가 있습니다! 책에서 배우는 것들은 주로 쓰이는 것들, 기초적인 지식을 가르치는 것일 뿐이니까요.
1. 스스로 기존에 짰던거보다 큰 프로그램 짜보기
저는 대학교에 처음들어와서 프로그래밍 공부를 시작한 초보이였습니다. 학교에 들어가기 전에 중고등학교에서 프로그래밍 공부하고 온 친구들에게 실력으로 무시 당하기 일쑤였습니다. 하지만 저는 엄청 단시간에 많은 실력을 올릴 수 있었습니다. 그 놀리던 친구들도 저의 늘어난 실력에 놀랄정도 였으니까요!
제가 실력을 늘릴 수 있었던 비결은 제가 프로젝트 조장을 맡으면서 배운것을 이용해 자신이 만들고 싶은 프로그램을 정하고 구상하며 만들어 나간것이였습니다. 이는 책에 있는 것을 활용하는 능력뿐만아닌 자신이 필요한 해당 언어의 기능을 인터넷에 쳐서 찾아보게 되며 실력이 늘게되는 효과를 가져옵니다. 기존에 짰던거 보다 큰 프로그램을 짜게되면 자연스럽게 간단한 "소수만 출력하기!", "ax+by=c(자연수범위)에서 a,b,c 입력받고 x,y값들 출력받기!" 등의 프로그래밍을 하는게 쉬워지며 머리속에서 어떻게하면 짜질지 떠오르게 됩니다. 한마디로 레벨업한거죠! 비유를 하자면 "수학문제들의 난이도 상 문제들은 보통 쉬운문제가 여러개가 합쳐진것이다." 라고들 합니다. 프로그래밍도 마찬가지입니다. 여러분이 큰걸 짜면서 결국 여러개의 쉬운 난이도의 코딩을 하게되며 그것들이 복합적으로 작동 할 수 있게 하는 능력을 기를 수 있게 되는것입니다.
2. 디버그를 통해 자신의 소스가 의도적으로 돌아가는지 확인하기
큰 프로그램을 짤수록 오류가 생기는 빈도가 커집니다. 자신은 제대로 짠거 같은데 오류가 생기면 그걸 해결하기 위해 엄청나게 스트레스를 받고는 하죠! 특히.. 오류목록에 없는데 프로그램 실행중에 오류가 생기면 더 찾기 힘든 오류! 이 오류들의 원인을 자기 스스로 찾아내고 해결해내는것이 프로그래밍 코딩 실력에 향상에 큰 도움이 됩니다. 공부 할때 오답노트를 푸는것과 마찬가지이죠. 자신의 코딩에 약점이 되는부분을 많이 보완해줄것입니다.
보통 ctrl+f5로 디버그하지않고 시작하는 경우가 많은데,f5로 디버그를 통해 오류가 나는곳 근처에 중단점을 놓거나, 오류가 나는 해당 함수만 따로 컴파일해서 시험을 해보던지, 한줄한줄 시행하며 변수가 의도한대로 잘 변하는지 확인해주시면 됩니다.
@참고하시라고 스무디님 영상 올려두겠습니다.
3. 알고리즘 공부하기
알고리즘, 자료구조를 공부하면 논리적 사고하는 능력이 늘어나기 때문에 프로그래밍 실력에 큰 향상을 하는데 도움을 줍니다. 책을 사셔서 공부하셔도 되고 정보올림피아드에 있는 정보들로 공부하셔도 됩니다. 초급~고급책까지 무료pdf로 배포하고 강의도 있으니 관심이 있으시면 보시면 될것같습니다.(4번 항목에 문제푸는 사이트에서 하는 것이 알고리즘 활용&학습입니다)
이외에도 KOI기출문제를 풀어보시면 실력 향상에 많은 도움이 되실것입니다.
4. 여러 문제를 풀어보며 실력 늘리기(경험 쌓기!)
프로그래밍에 대한 마스터란 말이 왜 오만인가!! 그것은 문제가 주어질때 자신이 짠 소스보다. 더 효율적인 프로그램 소스가 있을수도있고, 아직 발견되지 않은것도 있기때문 입니다. 그 외에도 많은 이유들을 들 수 있겠죠? 결국 프로그래밍을 많은 경험이 쌓이고 꾸준히 해야 실력을 늘릴 수가 있습니다. 여러 문제들을 풀수있는 사이트를 소개해드리겠습니다.
사이트주소
http://codeup.kr/JudgeOnline/index.php
해당 사이트에서 여러문제를 접해보고 풀어나가시면 한층더 성장한 자신을 발견하실수 있게 될것입니다.
5. 다른사람의 소스도 읽어보고 이해해보기
자신만의 코드를 짜는것도 중요하지만 자신보다 더 뛰어난 코드가 얼마든지 있을 수 있습니다. 우리는 언제나 배우는 입장임을 직시하고 배우는 자세를 항상 취하시면 그것이 자신이 성장하는데 많은 도움이 될것입니다.
6.주석 활용하기
주석은 큰 프로그래밍을 짤수록 자주 사용하게 되는데요. 자기가 어떻게 할껀지 생각해놓고 까먹는 경우가 허다하거든요. 또한 수정을 할때 많은 도움이 되고, 다른 사람들이 자신의 코드를 읽을때 이해하는데 큰 도움이 됩니다.
7.헤더 활용하기
헤더를 사용하면 소스를 볼때 가독성이 좋아지고 파일을 관리 및 공유하기가 좋아집니다. 처음에는 귀찮고 할줄몰라서 오류도나지만 활용만한다면 프로그래밍을 할때 도움이 됩니다.
8. 언어를 배우기전에 자신이 만들고 싶은것 정하기
처음 언어를 배운다면 조금 힘들지도 모르겠지만 공부를 할때 자신이 만들고 싶은걸 먼저 정하고 공부를 시작하면 학습에 큰 도움이 됩니다. 자신이 만들고 싶은것, 필요한 기능을 위해 필요한 함수를 찾고 만들면서 자연스럽게 해당 언어의 프로그래밍 실력이 늘게됩니다. 간단한것부터 시작해 어려운것, 자신이 마음속에서 만들고만 싶었던것을 정해봅시다. 예를들어 C언어로 테트리스, 뱀게임 만들기, python으로 메이플 두글자 크롤링하는것 만들기, 랜섬웨어 만들기, 다이어리만들기 등등(만들고 싶은것은 언어에 국한 되지는 않습니다. 먼저 해당언어에 대해 조사한후 정하면 멀 공부해야 만들수 있을지 방향성을 쉽게 찾아나갈수 있습니다.)
9. 강의, 개념정리 사이트 이용하기
초기에는 정보가 정말 적고 인터넷 서칭도 잘안해서... 질좋은 무료강의, 개념 사이트에 대한 정보가 적었는데요. 저가 찾아서 모아둔 사이트를 적어두겠습니다. 제가 주로 쓰는 언어가 c, c++, python이라 위 언어에 대한 사이트가 많은점은 양해부탁드립니다.
http://www.kocw.net/home/index.do
한국 대학 교수님들 중 일부의 강의를 들을 수 있습니다. 프로그래밍 뿐만아니라 모든분야에서 말이죠. 가장 유명한 강의를 찾고 싶다면 구글에다가 "kocw c언어" 이런식으로 kocw + 배우고싶은것 치시면 제일 위에 있는게 대부분 제일 좋은 강의 입니다.
일부 유료이긴하지만 전체적으로 강의질이 높습니다.
이게 왜? 라고 하실수 있지만 유튜브에도 질좋은 강의를 해주시는 분이 많습니다.
https://tacademy.sktechx.com/frontMain.action
간단하게 짧은 강의들이 많습니다 개인적으로 인프런이 더 좋네요.
https://programmers.co.kr/learn
인프런과 비슷한 사이트입니다.
c, c++, winapi에 대해서 깔끔히 정리된 사이트입니다.
제가 제일 좋아 하는 블로그 분입니다. c, c++에 대해 책한권 낼정도의 정리가 되어있습니다.
c, 파이썬 위주로 개념 + 문제로 학습할 수 있는 사이트입니다.
각종 여러 강의 사이트를 모아놓은 사이트입니다. (생활코딩 추천)
여러 언어에 대해 정리되어 있는사이트.
※이 아래는 영어로된 외국 사이트입니다.
해외 대학 오픈 강의 사이트
해외 대학 오픈 강의 사이트
c/c++ 정리된 사이트
오픈 강의 사이트(일부한글자막o) 강의질 높음
10. 모르는것이 있으면 구글링하기
앞으로 it공부하시면서 제일 중요한것이 바로 구글링을 하는 능력이 될것입니다. 핵심 키워드를 뽑아내서 서치하는걸 지금부터 연습하시면 좋겠습니다. 특히 오류같은건 그대로 검색해도 같은이슈로 고민했던 사람들의 글이 블로그나 각종 커뮤니티에서 해결책을 적어놓은것을 금방 찾을수 있습니다.
대표적으로 https://kldp.org/ https://stackoverflow.com/ 이 두 커뮤니티에서 물어보시면 어려운 문제라도 고수분들이 친절하게 답해주실겁니다.(이외에도 카카오톡 오픈채팅방이 있지만.. 질좋은 답변을 얻긴 조금 힘들수 있습니다.)
=============================================================
주변 사람들 중 이론을 빠삭한데 프로그래밍을 못하는애들이 몇명씩 있습니다. 무엇이 문제일까요? 프로그래밍의 배움은 배우고 예제소스 쳐보고 끝이 아닙니다. 여러분이 그 배운것들을 자유롭게 활용할 수 있게 스스로 자유롭게 짜보는게 코딩실력 상향에 주된 영향을 미칠것입니다. 프로그래밍 언어라는 것도 결국 인간이 쓰는 언어와 다를게 없습니다. 인간끼리 커뮤니케이션을 하듯 컴퓨터와 자유롭게 이야기 하기 위해서 언어를 배우고 의사소통을 하는것일 뿐입니다. 무엇보다도 컴퓨터에 관심을 갖고 꾸준히 노력해 나아가면 반드시 자신이 원하는 위치까지 도달하실수 있을겁니다. 모두들 훌륭한 프로그래머가 되시길 바라며 대학생분들은 코딩과목은 전부 A+받길바랍니다!!
이상 경험에서 우러나온 코딩 실력을 늘리기 위해 노력하는 이들을 위한 글이 였습니다.
'Coding Challenge' 카테고리의 다른 글
[소스공유] C++로 엘리베이터 구현하기 (0) | 2017.05.27 |
---|---|
[소스공유] C언어로 만든 지뢰찾기 (2) | 2017.05.24 |
[소스공유/JAVA] KBO야구경기 시뮬레이션 (0) | 2017.04.29 |
[소스공유/c언어] 후위연산자 계산기 (2) | 2017.04.29 |
[소스공유/C언어] 다항식 연산 프로그램 (1) | 2017.04.29 |