https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040105&docId=321058981&qb=amF2YSBvYmplY3RpdmUgYyDssKjsnbQ=&enc=utf8&section=kin&rank=3&search_sort=0&spq=0&pid=UKi21wp0J1sss4xChPGssssstB4-461810&sid=lrxop%2B0N2lsbq3jD8hObLQ%3D%3D


아이폰 어플을 만들고자 하면, Objective C나 swift같은 프로그래밍 언어를 배워야 합니다. C언어를 배우는 이유는 어플같은 프로그램을 만들 때 사용하는 도구이기 때문입니다. 그렇지만, 반드시 C언어를 배워야 하는 것은 아닙니다. 다른 프로그래밍 언어를 사용하고자 한다면, C언어를 배울 필요 없습니다.

 

그러나 더 중요한 것은 어플같은 프로그램을 만들고자 하면, 프로그램을 만드는 일인 프로그래밍을 체계적이고 전문적으로 배워 창의적인 혹은 창조적인 문제 해결 능력과 프로그래밍 능력을 갖춰야 한다는 것입니다. 그러면, C언어같은 프로그래밍 언어도 보다 쉽고 재미있게 효율적으로 배울 수 있습니다.

 

C언어같은 프로그래밍 언어를 배워야 프로그래밍을 배울 수 있다고 생각하십니까? C언어같은 프로그래밍 언어를 배우는 것이 프로그래밍을 배우는 것이라 생각하십니까? C언어같은 프로그래밍 언어를 배우면 프로그래밍할 수 있을 것이라 생각하십니까? 매우 잘못된 바보같은 생각입니다. C언어같은 프로그래밍 언어를 배운다고 프로그래밍할 수 없습니다. C언어같은 프로그래밍 언어를 배운다고 어플을 만들 수 없습니다. C언어같은 프로그래밍 언어를 배우는 것과 프로그래밍을 배우는 것은 별개 문제입니다.

 

프로그래밍이 무엇인지 간략하게 봅시다. 프로그램으로 만들고자 하는 것을 전산(컴퓨터) 분야에서는 문제라고합니다. 그리고 프로그램은 데이티와 명령어로 구성됩니다. 그래서 문제를 풀어 프로그램을 만들고자 한다면, 문제 관련 데이터들을 어떠한 기억장치에 어떻게 저장하고 어떻게 쓰고 읽을지를 결정하고(자료구조 설계), 어떠한 명령어들을 어떠한 순서로 몇 번씩 실행시킬지를 결정하여(알고리듬 설계), 이렇게 설계된 자료구조와 알고리듬을 C언어같은 프로그래밍 언어로 문법에 맞게 변환하여(구현) 프로그램을 만드는 일이 프로그래밍입니다.

 

요약하면, 프로그래밍은 컴퓨터를 이용한 문제 해결 과정입니다. 그래서 프로그래밍을 배울 때는 체계적이고 전문적으로 배워 4차 산업 혁명 하에 살아야 하는 사람이면 반드시 갖춰야 하는 능력인 창의적인 혹은 창조적인 문제 해결 능력과 프로그래밍 능력을 갖춰야 합니다.


이러한 데 프로그래밍할 때 사용되는 도구인 C언어같은 프로그래밍 언어를 배운다고 저절로 창의적인 혹은 창조적인 문제 해결 능력과 프로그래밍 능력이 갖춰 지겠습니까? 그렇지 않습니다. C언어같은 프로그래밍 언어를 보다 쉽고 재미있게 효율적으로 배우고, 어플도 만들고자 하면, 프로그래밍을 체계적이고 전문적으로 배우세요.


"이렇게 하면 나도 프로그램을 잘 만들 수 있다(나프잘)" 시리즈 책들을 참고해 보세요. 나이, 성별, 학력, 전공과 상관없이 누구나 독학으로 프로그래밍을 체계적이고 전문적으로 배워 창의적인 혹은 창조적인 문제 해결 능력과 프로그래밍 능력을 갖출 수 있습니다. 네이버 카페 "프로그래밍을 배우자"에서 공부하는 방법도 배우고 멘토링을 활용하면, 보다 재미있고 효율적으로 프로그래밍을 배울 수 있습니다.


컴퓨터 앞에 놓고, C언어같은 프로그래밍 언어, API 라이브러리, Visual Studio, XCODE같은 언어 프로그램들 같은 개발 도구 사용법만을 가르쳐 남이 시키는 일만 남이 만든 코드를 편집하는 노가다를 양성하는 학원이면, 차라리 독학하세요. 충분히 할 수 있습니다. 그렇지 않고 컴퓨터 없이 문제를 풀어 개발 도구들로 프로그램을 만드는 방법을 가르쳐 프로그래머를 양성하는 학원이면, 스스로 문제를 풀어 프로그램을 만드는 일인 프로그래밍을 체계적이고 전문적으로 배워 창의적인 혹은 창조적인 문제 해결 능력을 갖출 수 있어 많은 도움이 될 것입니다. 왜냐하면, 개발 도구들로 하는 일인 프로그래밍이란 컴퓨터를 이용한 문제 해결 과정이기 때문입니다.

 

학원도 중요하지만, 공부하는 방법도 중요합니다. 프로그래밍을 공부하는 데는 공부하는 방법이 매우 중요합니다. 공부하는 방법부터 배우고 시작해 보세요. 그렇지 않지만, 우리나라에서는 대부분 C언어부터 배우라고 해서 C언어를 배우다 보면, C언어 책에 적힌 내용은 그럭저럭 이해되지만, 장마다 제시되는 문제를 풀어 C언어로 프로그램을 만들고자 하면, 어떻게 해야 하는지 모르겠고, 잘되지 않습니다. 그러면 답지를 구해 코드만 외우고 넘어 갑니다. 망하는 지름길입니다.


C언어 책에 적힌 내용은 C언어의 문법이고, 장마다 제시되는 문제를 풀어 C언어로 프로그램을 만드는 일은 프로그래밍입니다. 따라서 C언어의 문법만 배운다고 프로그래밍을 할 수 있는 것은 아닙니다. 그래서 C언어의 문법을 배울 것인지 아니면 C언어로 하는 일인 프로그래밍을 배울 것인지를 먼저 명확하게 하세요. 공부하는 방법이 다르기 때문입니다. 공부하는 목표에 맞게 공부하는 방법을 배워 공부하면 보다 쉽고 재미있게 배울 수 있습니다.


공부하는 방법도 설명드려 보겠습니다. 참고해 보세요.


C언어를 보다 쉽고 재미있게 배우고, 스스로 문제를 풀어 C언어로 프로그램을 만들고자 한다면, 먼저 프로그래밍을 배우세요. 문제를 풀어 프로그램을 만드는 일인 프로그래밍을 먼저 체계적이고 전문적으로 배우세요. 그래서 창의적인 혹은 창조적인 문제 해결 능력을 갖추도록 하세요. 왜냐하면, C언어로 하는 일인 프로그래밍이란 컴퓨터를 이용한 문제 해결 과정이기 때문입니다.


위쪽 프로그래밍의 정의에 의하면, 먼저 문제를 풀어 알고리듬과 자료구조를 만드는 방법을 배우세요. 그리고 C언어로 알고리듬과 자료구조로 프로그램을 만드는 방법을 배우세요. C언어로 알고리듬과 자료구조로 프로그램을 만들 때 필요한 C언어의 문법적인 기능을 이제 C언어 책에서 찾아서 읽어 보고 적용하는 방식으로 공부하세요. 난이도를 높여 가면서 많은 문제를 풀어 프로그램을 만들다 보면, 스스로 문제를 풀어 프로그램을 만들 수 있고, C언어도 머리로 기억하는 것이 아니라 몸으로 기억되어 있을 것입니다. 그래서 숨쉬는 것처럼, 걷는 것처럼 자연스럽게 C언어로 프로그램도 만들 수 있을 것입니다.


알고리듬과 자료구조를 만드는 방법을 배우라고 해서 시중에 출간된 알고리듬과 자료구조 책들을 사서 이미 만들어져 책에 실린 정렬과 검색 알고리듬, 배열, 연결리스트, 트리, 그래프, 스택, 큐들을 외우지 마십시오. 정렬과 검색 알고리듬, 배열, 연결리스트, 트리, 그래프, 스택, 큐들을 만들 수 있도록 알고리듬과 자료구조를 만드는 방법을 먼저 배우라는 것입니다.


인터넷에서 사용되는 논리가 "C언어를 알아야 프로그램을 만들 수 있으므로 C언어를 먼저 배우라"고 합니다. 이러한 논리가 우리나라 영어 교육이나 학습에서도 적용되었지요.  우리나라 영어 교육이나 학습은 영어의 문법부터 시작합니다. 그렇게 해서 중학교, 고등학교 심지어 대학교까지 똑같은 방식으로, 영어 문법을 외우는 방식으로 공부하게 됩니다. 그렇게 십 수년을 하지만 헤밍웨이의 유명한 소설 책 한 권 제대로 읽지 못하고, 두 세쪽 되는 에세이 하나 제대로 작성하지 못하고, 지나가는 외국인과 담소한 번 제대로 나눌 수 없지 않습니까?


"C언어를 알아야만 프로그램을 만들 수 있다"는 논리라면, 영어의 문법을 공부했다면, 영어 소설책도, 에세이도 회화도 가능해야 하지 않습니까? 어느 분야에서 성공하려면, 10000시간 정도 분야에 집중하면 된다는 이론이 있지 않습니까? 우리나라에서 영어 공부에서는 적용되지 않는 이유는 무엇일까요? 교육과 학습에 문제가 있다는 것입니다.


그래서 요사이는 영어 교육과 학습이 매우 실용적으로 바뀌고 있습니다. 문법을 암기하는 것이 아니라, 듣기와 말하기로 바뀌고 있습니다. 듣기와 말하기할 때 필요하면 문법을 공부하고 적용하는 방식으로 말입니다. 그래서 좋은 결과를 내고 있습니다.


프로그래밍 교육과 학습도 바뀌어야 합니다. 문법위주 교육과 학습보다는 문제 해결 중심의 교육과 학습으로 바뀌어야 합니다. 프로그래밍을 공부하는 방법을 배우세요.


C언어나 JAVA언어같은 프로그래밍 언어와 프로그래밍을 체계적이고 전문적으로 공부하는 방법도 설명드려 보겠습니다. 참고해 보세요.


프로그래밍은 우리가 생활하는 데 있어 부닥치는 복잡한 문제를 새로운 생각으로 풀어 프로그래밍 언어로 컴퓨터가 처리하도록 하는 프로그램을 만들어 보다 편하게 살 수 있는 세상을 만드는 일입니다. 그래서 어렵습니다. 그렇지만 내가 생각한 프로그램을 만들고 세상 사람들이 사용한다면 엄청난 성취감과 자부심을 느낄 수 있습니다.


이러한 프로그래밍을 하고자 한다면 다음과 같은 최소한의 능력을 갖추어야 합니다.

(1) 문제 해결 능력

(2) 프로그래밍 언어 구사 능력

(3) 개발 툴 사용 능력


이 중에서 가장 중요한 것은 문제 해결 능력입니다. 문제를 해결할 수 없으면, 프로그래밍 언어 구사 능력도 개발 툴 사용 능력도 아무 소용이 없습니다. 문제 해결 능력은 많은 문제를 풀어 프로그램을 만들어 봄으로 해서 나만의 문제 해결 방법을 만들었을 때 갖추어 지는 것입니다. 따라서 프로그래밍을 배우고자 한다면 체계적이고 전문적인 학습을 해야 합니다. 그러면 누구나 프로그래밍을 할 수 있습니다.


프로그래밍 언어나 프로그래밍을 배울 때는 C언어나 자바같은 프로그래밍 언어만 배우지 마시고, C언어나 자바로 하는 일인 프로그래밍을 먼저 공부하세요. 프로그래밍 언어만 배운 사람이면 프로그래밍 언어가 배우기 어렵다고 하고, 어려운 프로그래밍 언어를 한 권 내지 두 세권 책으로 공부를 마친 후에도 문제를 스스로 풀어 배운 프로그래밍 언어로 프로그램을 만들려고 하면 어디서 부터 시작하여 어떻게 해야 하는지가 막막하다고 합니다.


왜 그럴까요? 프로그래밍 언어 책에 적힌 프로그램을 이해하기 위해서는 프로그래밍을 배워야 하는데 그렇지 않고 프로그래밍 언어를 배우고자 하기 때문입니다. 프로그래밍 자체는 어렵습니다. 프로그래밍은 문제를 풀어 컴퓨터가 처리하도록 하는 프로그램을 만드는 일이기 때문입니다.


프로그래밍 언어 책에서는 문제를 풀어 프로그램을 만드는 것을 설명하지 않고, 문제를 풀어 해결책(알고리듬)을 만든 후에 컴퓨터가 처리하도록 하는 프로그램을 만들 때 프로그래밍 언어가 언제, 어떻게 적용되는지만을 설명합니다. 그래서 프로그래밍과 프로그래밍 언어를 재미있게 공부하고자 한다면 체계적이고 합리적인 학습을 해야 합니다.


프로그래밍 언어를 배우기 전에 프로그래밍 언어로 하는 일인 프로그래밍을 먼저 공부하세요. 프로그래밍이 무엇인지, 어떻게 하는지, C언어같은 프로그래밍 언어가 언제, 어떻게 사용되는지 그리고 프로그램이 어떻게 작동하는지를 공부하세요. 또한 이러한 개념과 원리를 바탕으로 문제를 풀어 프로그램을 만드는 절차를 배우세요. 이러한 내용을 배우고자 하면, 다음 책들을 참고해 보세요.


책들은 "이렇게 하면 나도 프로그램을 잘 만들 수 있다(나프잘)" 시리즈입니다.


이렇게 프로그래밍을 이해했다면, 프로그래밍 언어를 배우세요. 무작정 프로그래밍 언어 책을 사고 동영상강의를 보면서 책에 적혀 있는 프로그램을 아무 생각없이 입력해서 실행시켜 보고 머리를 끄덕이고 외우는 방식보다 쉽게 재미있게 프로그래밍 언어를 배울 수 있습니다. 왜냐하면 왜 프로그래밍 언어를 배워야 하는지를 명확하게 이해했고, 프로그래밍 언어 책에 나온 프로그램이 어떻게 작성되었는지를 이해할 수 있고, 마지막으로 프로그래밍 언어 책에 제시되는 문제를 풀어 프로그램을 만들 수 있기 때문입니다.


C언어를 공부하고자 한다면 다음 책을 참고해 보세요.
책은 "C를 배우면 함수를 잘 만들어야 한다"입니다.


문법만 설명하는 것이 아니라 문제를 풀어 프로그램을 만들 때 C언어가 언제, 어떻게 적용되는지를 설명합니다. 특히 책의 처음부터 끝까지 C언어를 배우면 반드시 만들 수 있어야 하는 함수를 만들어서 사용하는 방법을 설명합니다.


네이버 카페 "프로그래밍을 배우자"에서 게시글과 동영상강의로 프로그래밍이 무엇인지, 어떻게 하는 것인지 그리고 C언어나 JAVA언어가 언제, 어떻게 사용되는지를 확인해 보세요. 그리고 프로그래밍과 C언어나 JAVA언어를 어떻게 배워야 할지를 생각해 보고 시작하세요. 그래서 시행착오를 줄이세요.


독학을 하신다면 책을 읽는 방법을 바꾸세요. 책을 볼 때 바로 정독을 하지 마시고, 빠른 속도로 전체 내용을 훓어 보는 방식으로 여러 번 보고, 정독을 하십시오. 왜냐하면 모든 내용은 질문자 님에게 새로운 내용입니다. 따라서 어려울 수 밖에 없습니다. 그래서 최소한 책에 어떠한 내용이 담겨 있는지와 자주 사용되는 용어(혹은 개념)에는 익숙해야 정독을 할 수 있지 않습니까? 책의 줄거리나 용어에 익숙하기 위해서 빠른 속도로 전체 내용을 훑어 보는 방식으로 먼저 읽어 보시라고 권하는 것입니다.


좋지 않은 프로그래밍 공부 방법이지만, C언어의 문법만 배우고자 한다면, 책을 훑어보기로 처음부터 끝까지 빠르게 3-4회 읽어 어떠한 내용인지, 자주 사용되는 용어들에 익숙해 지도록 하세요. 내용이 파악되고, 용어들에 익숙해지면, 처음부터 책에 실린 코드도 컴퓨터에 입력해 보면서, 컴퓨터가 없으면 공책에 적어 보면서 어떠한 문법이 언제, 어떻게 사용되는지를 외우세요. 이때는 "왜 이렇게 할까", "어떻게 작동할까"라는 생각들은 하지 마시고, 외우세요.