콘텐츠로 건너뛰기
Home » [칼럼]프로그래밍을 어떻게 시작할것인가?

[칼럼]프로그래밍을 어떻게 시작할것인가?

안녕하세요 블로그 주인장 꽃의비밀입니다. 프로그래밍을 처음 시작하시거나 계획을 하시는분, 한번 배워보려는 일반인분들, 프로그래밍을 시작하고 싶은 학생들에게 도움이 될수 있는 글을 한번 올려볼까 합니다. 프로그래밍을 시작할때 어떤점을 염두에 두고 진행을 해야 할지, 프로그래밍으로 현재 밥먹고 사는 제가 부족하지만 한번 끄적여 보도록 하겠습니다.

주의: 지극히 주관적인 의견이 포함되어 있기 때문에 오해는 하지 마시길 부탁드립니다.

왜 프로그래밍을 배우려 하는가? 

저는 새로 프로그래밍을 배우려고 하시는 분들에게 여쭤보고 싶은게 있습니다. “프로그래밍을 왜 배우려 하시는지요?” 라고 말이죠.

단순히 흥미가 생겨서? 코딩교육이 의무화 되는 바람에? 안드로이드/아이폰 앱 한번 만들어보려고?

여기서 만약 분명하게 배우려는 목표가 있지 않다면, 프로그래밍을 배우려는걸 잠시 유보하시는게 좋을꺼 같습니다. 목표가 분명하지 않으면 배우다가 중간에 포기할수 있기 때문입니다. 목표를 분명하게 잡으셨다면 아래 글을 읽어주시면 됩니다.

프로그래밍을 배우면 힘드실수 있는 분들

다음의 성향이 있으신 분들은 프로그래밍을 배우실때 중도 포기, 스트레스 충만,  적성이 안맞음 등이 발생할수 있습니다.

  • 수학을 싫어하시는분
  • 장시간 PC를 사용하는걸 좋아하지 않으시는 분
  • 머리쓰는걸 싫어하시는분
  • 복잡한 생각을 하게끔 하는걸 싫어하시는분
  • 금방 답이 나오지 않으면 스트레스 받는 분
  • 영어 공부같은 외국어 공부가 적성에 안맞으시는분
  • 계속 공부하는걸 싫어하시는분
  • 분석을 싫어하시는 분
  • 가만히 책상에 앉아서 작업을 하는걸 안좋아하시는분

위 사례의 성향이 아니신분들은 프로그래밍을 배우셔도 괜찮으실꺼 같습니다. 

어떤 언어로 프로그래밍을 입문을 해야 할까?

프로그래밍을 배우시기로 하셨다면 고민이 되는 부분이 있습니다. 그럼 과연 어떤 언어로 프로그래밍을 시작하느냐 입니다. 현재 전세계적으로 사용하는 프로그래밍 언어는 수십개가 있습니다만, 그중에서 많이 쓰이는 언어는 10여개 정도로 보시면 될꺼 같습니다. 그런데 이중에서 어떤언어로 프로그래밍을 시작해야 될지는 고민이 되실텐데요, 제 나름대로의 경험과 의견을 참고하셔서 언어선택에 대한 결정에 도움이 되시길 바랍니다. 

JAVA

먼저 세계적으로 가장 많이 쓰이는 언어 “JAVA”입니다. JAVA는 안드로이드로 인한 사용자수가 최근들어 폭팔적으로 늘어난 언어중에 하나입니다. 객체지향적이고, 문법적으로 봤을땐 C와 비슷하지만, C보다 간결하고 포인터의 개념이 없는, C보다 접근하기 쉬운 언어입니다. JAVA는 다음과 같은 목표가 있다면 입문용으로 선택하시기 바랍니다. 
 

JAVA에 대한 이미지 검색결과

  • 안드로이드 개발을 하고 싶거나, 안드로이드 개발자가 되고 싶은분
  • 객체지향적 언어를 배우고 싶지만, C++의 접근이 어렵거나 이해가 잘 되지 않는 분들. 
  • 대학에서 컴퓨터 관련 전공을 하지만, C/C++의 접근이 어려워 진도가 잘 나가지 않는 분들.
  • C/C++같이 Description가 Define이 분리되는걸 좋아하지 않는 분들
  • C/C++이 마음에 들지 않지만 프로그래밍을 해보고 싶으신 분들
  • 컴퓨터 구조와 HW쪽 관련 지식에 대한 노이로제가 있지만 프로그래밍을 배우고 싶은 학생들
  • IT쪽 취업을 하고 싶으신 분들.주로 어플리케이션 개발을 하시고 싶으신분들
  • 모바일 게임 개발을 하시고 싶으신 분들
  • 기타… 나는 JAVA아니면 안된다고 하시는 분들

Python

최근들어 프로그래밍 입문용으로 각광을 받고 있는 언어입니다. 문법 자체도 현재 나온 언어들중에 쉬운축에 속하고, 다양한 플랫폼에서 개발을 쉽게 할수 있는 아웃풋이 다른언어보다 비교적 빠른 언어라고 보시면 됩니다. 미국의 대학들중에는 입문용으로 Python을 채택한 학교가 많다고 하는군요. Windows/Linux/Mac등 다양한 환경에서 동작하는 인터프리터 언어입니다. (Compile의 과정에서 Source를 Binary로 변환을 하지 않아도 프로그램이 실행이 됩니다. 분석 및 디버깅이 쉽습니다.) 또한 다양한 라이브러리를 무료로 제공하여 개발에 편리성을 주는 장점이 있습니다. 또한 객체지향의 요소가 포함되어 있어 클래스를 만들어서 활용할수 있습니다. 저도 최근에 Python을 독학으로 공부하여 사용중에 있습니다. PYthon은 근래 나온 언어중에 가장 사용하기 쉽고 접근하기 쉬운 언어중에 하나인거 같습니다.(그렇다고 해서 프로그래밍이 쉽다는 뜻은 아닙니다.)

이런 분들에게 추천합니다. 
 

  • 프로그래밍을 배우고 싶은 초/중/고등학생들
  • 프로그래밍을 배우고 싶은 대학생/일반인들
  • 대학에서 전공은 아니지만 프로그래밍에 대한 열의가 있는 분들
  • C/C++/JAVA에 대한 거부감이 있지만 프로그래밍을 해보고 싶으신 분들
  • 간단한 Windows/Linux Application을 만들어보고 싶으신 분들
  • 컴퓨터 관련 전공 지식을 습득하는게 귀찮지만 프로그래밍을 해보고 싶으신 분들
  • C/C++/JAVA를 배우고 싶지만 접근이 어려워 포기했다가 다시 해보고 싶으신 분들. 대안으로 시작하고 싶은 언어가 필요하신 분들
  • 프로그래밍으로 밥먹고 사는 사람은 아니지만 관심이 생겨서 한번 해보고 싶으신 분들
  • 해킹을 조금이라도 해보고 싶으신 분들

C

프로그래밍 하면 떠오르는 언어의 대명사입니다. 현재는 JAVA에게 사용자 숫자가 밀렸습니다만, C가 산업에서 차지하는 비중은 막중합니다. 많은 산업에 C로 짜여진 프로그램 구문이 들어가며, 많은 장치의 Hardware를 Control하는 기능과 알고리즘, Linux의 커널과 Application등. 언어분류로는 High Level(고수준)언어이지만, HW장치를 동작 및 Control하는 Low Level 프로그래밍 부터 Application까지 다양한 장치의 개발에 필수적인 언어입니다. 현재 저도 임베디드시스템을 개발하고 있는데, 주로 C를 사용하여 개발을 하고 있고, 저의 주 main사용언어는 C언어입니다. 

일단 C를 어느정도 습득하게 되면, 타 언어로의 전환이 용이합니다. 이유인즉 고급언어로 분류는 되지만, 시스템의 메모리를 직접 Access하는 포인터의 존재로 많은 이들의 C언어 배우는걸 좌절하게 만들었고, 이에 따라서 C언어의 이런점을 보완하는 언어들이 바로 JAVA, Python같은 언어들이 탄생하게 된것이죠. 그런만큼 컴퓨터 관련 전공자도 배우기가 어려운 난이도 높은 언어에 속합니다. (저도 아직 헤맬때가 많습니다.^^) 

대신에 시스템에 Low level수준으로 접근할수 있기 때문에, 시스템 구조 파악 및 성능 적인 부분에 있어서 타 언어를 월등히 뛰어넘으며, 적은 용량의 Binary에 좀더 최적화 시킬수 있다는 장점과 프로그래밍을 한다는 사람이면 꼭 배워둬야 할 언어중에 하나입니다. 

이런 분들에게 입문으로 추천합니다. 
 

C언어에 대한 이미지 검색결과

  • 대학교에서 컴퓨터/전자/전기 전공자이면서 시스템에 관심이 많은 학생들
  • 본인이 HW에 관심이 많고, 임베디드 시스템에 관심이 많은 예비 시스템 개발자들
  • IOT 디바이스 장치 개발을 하려는 분들(아두이노, 라즈베리파이)
  • 리눅스/네트워크 쪽 개발을 하려는 분들
  • Device Driver를 개발하려는 분들
  • 아이폰 어플리케이션 개발을 하려는 개발자(오브젝트-C)
  • 안드로이드 BSP개발을 하려는 개발자들
  • 해킹에 관심이 많고 해커가 되고 싶은 분들
  • SoC개발을 하고 ARM등의 임베디드 프로세서쪽 개발하려는 개발자들
  • C를 꼭 해보고 싶다는 분들(각오는 되어 있어야함)
  • 모든 프로그래밍 언어를 섭렵하고 싶으신분.(C가 모든언어를 섭렵할수 있게 도와드립니다.)

C++

C에다가 객체지향적인 부분을 보완한 프로그래밍 언어. 요즘은 JAVA나 Python에 밀렸지만, 한창 Windows Application을 개발할때 필수적으로 익혀야 했던 언어입니다. MFC를 하려면 C++을 익혀야 하는데, C보다 문법이 좀더 추가가되고 클래스의 개념이 들어가 있어 C보다 난이도가 훨씬 더 높습니다. 물론 C++을 처음부터 입문용으로는 추천을 드리고 싶지 않습니다. 그만큼 배우다가 좌절을 맛보기 쉬운 언어중에 하나입니다. 

다음 분들에게 입문용으로 추천드립니다. 

  • Windows Application을 개발하려는 학생 및 개발자 
  • Linux Application을 개발하려는 학생 및 개발자(Linux에서는 주로 C로 Application을 개발하지만, C++로도 Application및 라이브러리를 개발합니다.)
  • 처음부터 난이도 최상의 언어를 배워보겠다고 각오하신 학생 및 개발자 예정자
  • C++이 너무 흥미가 있어서 꼭 해보고 싶은 분들

이외에는 입문용으로 추천하고 싶진 않습니다.^^

기타 언어

언어의 종류는 몇십가지지만 실제 많이 사용하는 언어는 위의 4개의 언어를 주로 많이 사용합니다. 기타.. C#, JAVA Script, PHP, Ruby, VB등의 언어는 논외로 하겠습니다. 이유는 위의 4가지 언어를 알면 못하는 프로그래밍이 없다고 저는 생각합니다. 즉 위의 4개 언어들 다 할줄 알아도 어렵거니와 프로그래밍은 언어가 중요한게 아닌 잘 이용하는게 중요하기 때문입니다. (여기도 웹도 논외로 하겠습니다.)

그렇다면 어떻게 시작할 것인가?

위의 글을 보시면서 어떤 언어를 입문용으로 선택할지 어느정도 판단하셨나요? 저 개인적으로는 Python을 추천합니다. 이유는 4개의 언어중 그나마 쉬운 문법에 Windows/Linux를 아우르는 환경 및 교차 개발이 가능하고, 객체지향의 개념을 그나마 쉽게 익힐수 있는 언어인거 같습니다. 저는 집의 NAS에 Python으로  구현한 주가 정보 수집 프로그램을 돌리고 있으며, 제 PC에 Python으로 간단한 Windows 기반 테트리스 게임 및 테스트 어플리케이션을 개발도 하고 있습니다. 

워낙 Python이 라이브러리 제공도 잘되고 디버깅도 편한 부분이 있어서 초보자가 입문하기엔 더없이 좋은 언어인거 같습니다. 또 Python으로 웹개발도 가능하기 때문에 프로그래밍의 기본을 익히기에는 더날 나위없이 좋은 언어인거 같습니다. 

자 언어선택이 되었다면 어떻게 프로그래밍을 시작을 할까요? 

프로그래밍을 배울만한 선생님을 구하라

제 생각에는 대학에서 컴퓨터/전자/정보통신 전공자가 아니시라면 프로그래밍을 배울수 있는 선생님을 찾는게 가장 좋은 방법일꺼 같습니다. 특히 초/중/고등학생 이라면 아무래도 기초적인 언어문법을 이해하는게 어려움이 많을수 있습니다. 

인터넷을 검색하시다보면 각 언어별로 텍스트 강좌가 많이 있지만, 강좌만 보고 독학으로 언어를 익히는게 그리 쉽지는 않습니다. 제 경험으로는 대학생(전자전공)때도 그리 독학을 해볼려고 했지만 결국엔 대학교때 언어를 깨우치는걸 포기했었죠ㅋ.

초/중/고등학생이라면 가까운 언어 관련 학원에 다니는걸 추천드립니다. 아무래도 학원에 다녀서 기본적인 문법관련 수업을 받는게 새로 언어를 익히는데에 도움이 될것으로 생각됩니다. 대학생이나 일반인들도 마찬가지고 학원에 다닐수 있을 여유가 되시면 학원을 다니시는게 좋습니다. 인터넷을 검색하셔서 자기가 입문용으로 선택한 언어를 가르치는 학원이나 외부 강좌의 커리큘럼과 평가를 보신후에 배우시는것도 괜찮을꺼 같습니다. 

만약 본인이 대학생인데 관련학과 전공자라면 분명 동호회나 프로그래밍을 잘하는 선배가 있을껍니다. 그분한테 부탁을 해서 배우는것도 좋은 방법이 될수 있습니다. 

하지만 본인이 정말 학원다닐 비용도 없고 시간이 없다고 하면 대안은 있습니다. 바로 동영상강의를 보면서 배우는 방법도 있습니다. 인터넷으로 동영상강의를 검색을 하시면 많은 강의가 나오는데 그중에서 사람들 평이 좋거나 커리큘럼이 괜찮은 강좌를 듣는게 좋습니다. 여기서도 동영상강의라도 어느정도 돈이 드는건 사실이지만, 무료강좌보다 평가가 좋거나 커리큘럼이 좋다면 유료 동영상강의를 듣는게 나중을 위해서도 좋습니다. 

교재를 한권 구한다.

프로그래밍 언어를 익히기 위해선 언어를 익힐동안 늘 참고할 교재 1권을 있어야 한다고 생각합니다. 초반에 언어를 습득할려면 아무래도 각 언어의 문법에 대한 부분을 설명해놓은 자료가 필요한데 그 역할을 1권의 교재가 해준다고 보면 됩니다. 

일반적으로 시중에서 판매하는 교재에는 문법설명과 함께 예제가 기본적으로 수록되어 있습니다. 어떤 교재가 좋은지는 사실 판단하기에는 어렵습니다. 대신에 교재에 대한 정보를 검색하다보면 독자들이 추천하는 교재가 언어별로 있을겁니다. 그런 교재를 1권 사서 참고하시면 훌륭한 도구가 될걸로 생각됩니다. 

Python이나 JAVA같은 경우는 점프투 시리즈가 있으니 검색하여 찾아보시기 바랍니다. 만약 학원을 다니신다면 학원에서 추천해주는 교재가 있으니 추천해주는 교재를 보셔도 무방합니다.

프로그래밍을 배우는 좋은 방법은?

자 그럼 학원이나, 교재가 준비가 되었다면 어떻게 배우는게 좋을까요? 프로그래밍의 기본을 빠르게 습득할수 있는 방법은 지금까지 제가 겪었던 경험에 비추어서 설명을 해보려고 합니다. 이건 저의 주관적인 생각이므로 참고용으로 이해하시면 될꺼 같습니다. 

먼저 준비했던 교재를 빠른 속도로 한~두번을 정독합니다. Pyhon, C, JAVA, C++ 마찬가지입니다. 대략적인 내용 파악을 한번 쭉 하고 프로그래밍 언어의 문법이 대략 이런것이다~ 라는 거를 이해가 안되더라도 파악을 해 보는 거지요. 물론 처음에 보시면 이해가 잘 안되시거나 아예 안되실수 있습니다. 맛뵈기로 프로그래밍 언어는 이런것이다~라는 것을 느끼기만 하세요.

학원이나 동영상강의가 시작되면 각 강의시간별로 설명을 잘 들으시고 최대한 이해해보려고 노력하시기 바랍니다. 물론 처음이신분들은 이해가 잘 안되실수 있습니다. 그래도 각 시간/파트별로 선생님의 설명에 귀를 기울이셔서 이해할려고 노력을 해보시기 바랍니다. 

그리고 매 시간마다 선생님이 분명히 예제를 설명을 해줄겁니다. 그 예제를 꼭 학원이나 동영상강의 시간외에 직접 본인이 자신의 PC에 입력하여 예제의 결과를 꼭 확인하시기 바랍니다. 이해는 되지 않더라고 손수 키보드로 예제 구문을 하나하나 입력하면서 결과가 제대로 나오는지 확인해야 합니다. 이 작업은 매우 중요하므로 필수적으로 하셔야 합니다. (안하면 안됩니다.)

학원이나 동영상강의 끝날때까진 어느정도 시간은 분명히 소요될겁니다. 한달~두달 정도? (더 길어질수도 있습니다.) 그 시간을 꼭 버티시면서 선생님의 설명을 잘 들으시면서 예제 복습을 꼭 해야 합니다. 여기서 중도에 포기하는 사람도 분명히 있습니다만, 설명을 듣고 나서 예제를 직접 입력해보고 결과를 확인하는것은 중요한 프로그래밍 언어 습득의 지름길입니다. 

위에 언급한 과정을 꼭 거쳐야만 프로그래밍의 기초를 쌓을수 있는 디딤돌을 세우게 될꺼 같습니다.

본격적인 프로그래밍 시작 방법

위에 언급한 과정을 다 거치셨나요? 그렇다면 당신은 무난하게 프로그래밍을 본격적으로 시작할 준비를 끝내신 겁니다. 시작이 반이라고 했죠? 이제 나머지 반을 시작해 봐야 겠습니다. 

저는 개인적으로 Python을 입문용으로 좋아하니 Python으로 예를 들도록 하겠습니다. 

먼저 자신의 PC에 Python을 가지고놀 환경을 구성합니다. 물론 앞전글에서 이미 예제를 직접 입력하고 결과를 출력했기 때문에 환경은 구성됐다고 보시면 됩니다.(프로그래밍 언어 개발환경 구축은 별도로 포스트를 작성하여 올리도록 하겠습니다.)

환경이 구성이 되었으면, 매일같이 참고할만한 예제가 있는 인터넷(구글…)에서 검색을 합니다. Python 예제 하면 수없이 많이 나올겁니다. 예제는 대략 100줄에서 200줄사이 정도 되는 예제를 찾아봅니다. 

그런 예제들을 자신의 에디터에 그대로 보고 직접 자기손으로 입력합니다. 물론 보고 그대로 입력하는거긴 하지만 일단은 그대로 보고 입력하여 파일을 저장하고 결과를 컴파일하여 실행시켜 봅니다. 여기서 결과가 예제에서 나온 결과랑 같은 결과가 나오는지, 아님 중간에 에러가 나거나 결과가 다르게 나오는지 꼭 확인해 봐야 합니다. 

만약 결과가 예상대로 나오지 않거나, 컴파일시 오류가 나면 그 원인을 찾아서 수정하는 과정을 반드시 거쳐야 합니다. 이걸 디버깅 과정이라고 속칭해서 얘기합니다. 그래서 결과가 올바로 나오게 될때까지 고치는 작업을 계속 합니다. 디버깅 과정시에는 왜 그렇게 되는지 이해하려고 해야 합니다. 그 과정에서 조언을 구하던 인터넷에서 찾아보든 하는 작업을 하시기 바랍니다. 되도록이면 직접 원인을 찾아서 해결을 하는게 제일 좋습니다. 

이런 예제를 직접 작성하는것을 매일같이 해야 합니다. 이게 단기간에 프로그래밍에 익숙하게 할수 있는 방법중에 하나입니다. 저도 초창기에 이런식으로 언어를 익혔던거 같습니다. 되도록 매일같이 하되 대략 한달~두달정도 이런 과정을 반복해 보시기 바랍니다. 

이제 프로그래밍을 할수 있다.

반복적으로 예제 코드를 직접 쳐보고 디버깅 하는 과정을 진행했다면, 여기까지 당신이 오신거라면 당신은 이제 프로그래밍을 할 준비는 끝난것입니다. 여기까지 오는 과정에서 당신은 당신 나름대로 노하우를 분명히 익혔을 겁니다. 또한 지식과 문법도 마찬가지입니다. 

자 그럼 이제 본격적으로 프로그래밍을 하기 위해 목표를 정해 볼까요? 어느정도 프로그래밍이 손에 익었으니 본격적으로 직접 프로그램을 만들어 봐야겠죠?

간단한 계산기던, 어느 특정 결과를 내는 프로그램이던, 본인 스스로가 이런 프로그램을 짜보겠다고 목표를 한번 정해보시기 바랍니다. 물론 이제 시작인데 처음부터 복잡한걸 짤 필요가 없습니다. 

예를 들면, 난수를 발생시키는 프로그램 이라든지, 각 숫자의 자릿수의 합이나, 윤년을 계산하는 법등등 특정 결과를 얻게 하는 프로그램도 좋습니다. 이때는 본인이 직접 그 결과가 어떻게 나오게 할지 프로세스를 순서도 형태의 그림을 그려서 설계를 하시는것도 좋은 방법입니다. 만약 이 부분이 엄두가 안나시면 지난번에 한번쯤은 결과를 출력했던 예제중에 한개를 선택해서 각 변수나 함수를 약간 수정해서 결과를 출력하게 하는 작업을 해보시기 바랍니다. 이 작업도 매일같이 하면 할수록 좋습니다. 

맺으며….

지금까지 제 나름대로 프로그래밍을 어떻게 시작하는지에 대해 기술해 봤습니다. 물론 쉽지는 않습니다. 저도 현재 프로그래밍을 하고 있고 배우는 과정이 만만치 않음을 손수 느꼈기 때문에 쉽지 않다는걸 인지하고 있습니다. 

하지만 정복 못할 산도 아닙니다. 저같이 평범한 사람도 도저히 안될꺼 같은 프로그래밍을 노력하다 보니 하게 되더군요. 아마 비유하자면 영어 회화 하는거랑 비슷하다고 해야 할까요?(물론 저는 영어 못합니다.ㅋㅋ)  하다보면 늘게 됩니다.

물론 정답은 없습니다. 본인이 가장 용이한 방법으로 프로그래밍을 시작하시면 됩니다. 여기의 제 의견과 생각은 프로그래밍을 시작하실때 도움이 되고자 조언하는 정도 밖에는 안될꺼 같습니다. 

여기에 기술한 내용대로 제가 가르쳤던 같은 회사 신입 직원이, 프로그래밍 젬병이었다가 지금은 어느정도 하게되는 소기의 성과(?)를 거둔적이 있긴 합니다.^^

하지만 분명한점은 있습니다. 제가 윗글에서 제시했던 코드를 반복해서 직접 손수 입력하여 결과를 확인하고 수정하는 과정은 꼭 해봐합니다. 그래야 프로그래밍에 적응도 되면서 어떤 부분이 부족한지 확인할수 있습니다.

그럼 이번 칼럼은 여기서 맺을까 합니다. 프로그래밍을 시작하시려는 모든 분들께 건투를 빕니다…!

'정원딸린집'에는 쿠팡파트너스 등의 제휴링크가 포함되어 있으며 수수료를 제공받을 수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

error: Content is protected !!