brunch

You can make anything
by writing

C.S.Lewis

by 스스로 코딩 두셀코 Oct 07. 2017

코딩 시작하기

코딩 용어와 지식 맛보기

2015년 개정된 교육과정에 포함된 소프트웨어 교육 의무화로 인해 코딩 교육에 대한 관심이 높아져 많은 분들이 코딩이라는 것이 무엇인지 아시리라 생각합니다!

코딩 교육이 왜 지금 이슈가 되고 있는지, 어떻게 공부를 시작해야할지 모르신다면 이 매거진을 참고해주세요 :)


코딩은 무엇일까요?

네, 맞습니다. 많이 들어보셨듯이 '코딩은 프로그램을 만드는 것'이지요. 좀 더 정확하게 말하자면 코딩은 컴퓨터 프로그램을 위한 코드를 작성하는 행위를 뜻합니다. 여기서 컴퓨터는 집에서 사용하는 PC, 매일 들고 다니는 스마트폰, 네이버, 구글과 같은 포털 사이트의 서버 컴퓨터, 공장에서 사용되는 로봇 등 모든 전자기기를 의미합니다.


코딩을 본격적으로 하기 앞서 코딩 학습에 필요한 몇 가지 용어들과 앞으로 어떤 내용을 배울 것인지 알아봐요.




코딩은 어디서부터 시작할까요?


1. 가장 먼저 무엇을 하고 싶은지 생각해봅니다.


외국인들과 소통하기 위해서 영어, 중국어, 일본어를 배우는 것과 같이, 컴퓨터와 소통을 하기 위해서는 코딩이라는 도구를 사용해야합니다.


이 도구를 사용하기 앞서 자신이 어떤 프로그램을 만들어고 싶은지, 이 프로그램이 왜 필요한지부터 생각을 해봐야겠죠?


자연어와 기계어


어떤 프로그램을 만들기 위해서 내가 필요한 것이 무엇인지 생각해보고, 이를 수행하기 위해서 컴퓨터에게 어떤 명령을 내리고 싶은지 생각해보는 것이 코딩을 하기 전에 가장 먼저 해야할 일입니다.


페이스북 게시물에 좋아요를 누르면, 내가 좋아요 한 게시물을 내 친구들이 볼 수 있습니다


페이스북의 예를 한 번 볼까요? 페이스북의 '좋아요' 기능은 전세계 사람들을 하나의 네트워크로 연결하여 큰 파장을 일으켰습니다. '좋아요' 버튼을 누르는 것으로 게시물들은 많은 사람들에게 퍼져나갔죠. 그로 인해 여러분 친구들의 소식을 들어보는 것 뿐만 아니라 친구의 친구, 친구의 친구의 친구 ... 그 너머의 소식까지 알 수 있었습니다.


그럼 여러분이 페이스북을 만든 개발자라고 상상을 해봅시다. '좋아요' 버튼을 누르면 컴퓨터가 어떤 일을 하도록 만들게 할까요?


'좋아요' 버튼을 누르면 게시물의 전체 좋아요 개수를 하나 증가시키고,
내 친구들의 뉴스피드에 내가 '좋아요' 누른 게시물을 보여주도록 해!


이렇게 컴퓨터가 수행할 명령을 사람이 이해할 수 있는 언어로 표현하는 것을 자연어(natural language) 라고 불러요.


'자연어' 는 사람이 이해할 수 있는 말이에요.


사람의 언어로 컴퓨터를 자유자재로 작동시킬 수 있으면 정말 좋겠지만, 아직 기술이 그정도로 발전하진 않았어요. 그러면 우리는 컴퓨터의 언어로 이야기를 해야겠죠? 컴퓨터의 언어를 기계어(machine language) 라고 불러요. 간단하죠?


'기계어' 는 컴퓨터가 이해할 수 있는 말이에요.

사람들마다 부르는 이름이 다른데, 우리는 가장 일반적인 용어인 '자연어'와 '기계어'로 부르기로해요.


기계어는 0과 1로 이뤄져있고, 컴퓨터가 바로 이해할 수 있는 언어에요. 그래서 사람이 쉽게 이해할 수 없는 언어라고 볼 수 있죠. 위에서 예를 든 페이스북 '좋아요' 기능은 기계어로 '010111101111000001010 ... '과 같이 수많은 0과 1로 표현되기 때문에 우리가 쉽게 이해할 수 없을거에요.








2. 어떤 프로그래밍 언어를 사용할지 선택합니다.


프로그래밍 언어


우리가 자연어로 말하면 컴퓨터는 못 알아듣고, 컴퓨터가 기계어로 말하면 우리가 못 알아듣기 때문에 자연어와 기계어 사이의 중간 지점을 찾은 것이 '프로그래밍 언어(programming language)' 입니다.


프로그래밍 언어는 자연어와 기계어의 중간 지점에 있는 언어에요.


그리고 컴퓨터를 작동시키기 위해 자연어로 표현하고, 이를 프로그래밍 언어로 바꾸는 과정을 코딩이라고 불러요.


사람들이 사용하는 언어에도 국어, 영어, 일본어 등이 있듯이 프로그래밍 언어에도 다양한 언어가 있어요. 우리는 아직 프로그래밍 언어에 어떤 것들이 있는지 모르지만, 많이 사용하는 프로그래밍 언어 몇 개만 보면, C , C++, Java(자바), Python(파이썬) 등이 있어요.

 

웹 개발용 프로그래밍 언어가 있을까?

웹 개발을 할 때 사용되는 프로그래밍 언어들도 있어요. 예를 들면, HTML, Javascript, CSS 가 있죠. 하지만 코코넛랩에서 다루는 것은 웹에 특화된 내용이 아니라 더 큰 범위인 프로그래밍 원리와 알고리즘에 대해서 다루기 때문에 기본적인 프로그래밍 원리를 이해한 후 바로 웹 개발하고싶다! 하면 생활코딩을 참고하시는 것도 좋아요 :)


각각의 프로그래밍 언어들에 대해서 간략하게 알아볼까요?


C

C 언어라고도 부르는 C는 코딩을 배울 때 가장 기초적으로 학습하는 언어로 대표적인 '절차지향*' 언어입니다. 40여년 전에 개발된 언어(1973년) 많은 사람들이 사용하는 언어들 중에서 가장 오래됐지만 그럼에도 코딩을 할 때 가장 기본적으로 배우는 언어입니다. 그 이유는 프로그래밍의 원리를 가장 잘 이해할 수 있는 언어이기 때문이죠.

C 는 주로 Windows 나 리눅스와 같은 운영체제 개발이나 임베디드 프로그램(펌웨어, 하드웨어에 탑재되는 프로그램) 등에 사용됩니다.
*절차지향언어(procedural language)는 순차적인 처리를 중심으로 한 프로그래밍 언어입니다.


자바(Java)

자바 또한 1995년 출시되어 가장 기초적으로 학습하는 언어 중 하나로 대표적인 '객체지향' 언어입니다. 자바의 가장 큰 장점은 다양한 하드웨어나 운영체제와 같은 시스템 종류에 상관없이 사용될 수 있는 프로그램을 만들 수 있다는 것입니다. 이것을 확장성이 좋다고 부릅니다.

자바는 안드로이드 앱을 개발할 때 대표적으로 사용되는 언어입니다.
*객체지향언어 (object-oriented language)은 실제 세계를 모델링하여 표현하기 적합한 언어입니다.


파이썬 (Python)

파이썬은 1991년 처음 출시되었지만, 5~6년 전부터 많이 사용하는 언어로, C 와 Java 에 비해서 배우기 쉽고 직관적이다는게 특징입니다. 파이썬은 입문자들이 배우기 쉽다는 장점이 있습니다.

파이썬은 다양한 분야에서 사용되는데, 최근에는 그중에서 인공지능, 머신러닝 분야에서 많이 쓰이고 있는 언어 중 하나입니다.


혹시 이런 의문이 드시나요?


왜 다들 쉽고 직관적인 파이썬을 사용하지 않고 굳이 C와 자바를 배울까?

아까도 말했다시피,


'프로그래밍 언어'에는 완벽한 하나의 프로그래밍 언어가 있는 것이 아니라 목적에 따라 각기 다른 프로그래밍 언어들이 존재합니다


좀 더 구체적으로 말하자면, 프로그램을 실행하는 속도는 Python 에 비해서 Java 가 더 빠르고, Java 에 비해서 C 가 더 빨라요.


그렇기 때문에 하드웨어의 제약이 많은 환경에서는 C 를 쓰는 것이 좋아요.

시스템 종류에 대한 제약없이 많은 사람들이 쓰는 프로그램을 만들고 싶다면 확장성이 좋은 자바를 쓰는 것이 좋아요.

하지만 성능보다 빠르게 개발하는 것이 중요할 때는 파이썬을 사용하는 것이 좋을 거에요.

물론 위의 내용도 항상 옳다라고 할 수 없어요! 일반적으로 그렇게 생각한다라는 것이지, 개발 환경과 시스템, 목적 등에 따라서 달라질 수 있습니다.


여러분이 어떤 프로그래밍 언어를 배우든지 간에, 필요한 상황에 따라 언어를 배우면 되는 것이죠.


참고로 다음 그래프는 2016년 사용된 프로그래밍 언어들의 순위를 보여주고 있어요. 여러분들이 어떤 언어를 공부할까 공부할 때 참고해볼 수 있는 자료입니다! (적어도 오랜 옛날에 쓴 COBOL, PASCAL 이나  현장에서 드물게 쓰이는 PERL 을 입문용 언어 배우지 않도록 하기 위함입니다)


2016년 사람들이 선호한 프로그래밍 언어 순위


다시 한 번 얘기하지만, 순위는 참고만 할 뿐 자신이 개발하려는 프로젝트에 맞는 언어를 활용해서 자기에게 맞는 언어를 선택해서 코딩을 하면 돼요!


어떤 분들은 이렇게 의문을 가지시나요?


각자 목적에 맞는 프로그래밍 언어를 쓴다고 했는데, 다른 목적의 프로그램을 만들 때마다 새로운 언어를 배워야하나요?

정답은 예! 입니다.


너무 절망적인가요? 하지만 너무 걱정하지 않으셔도 됩니다.


프로그래밍 경력이 많은 분들 사이에서는 이런 말이있어요.


"프로그래밍 언어 하나만 잘 배워두면, 다른 언어를 쉽게 배울 수 있다."


처음에 사람들이 많이 사용하는 언어를 하나를 제대로 배워두면 다른 언어를 배우는 건 그렇게 많은 시간을 들이지 않아도 이해할 수 있다는 것이에요. 마치 영어를 아주 유창하게 잘하는 사람은 독일어, 프랑스어, 스페인어를 배울 때 금방 배울 수 있는 것처럼 말이죠. 여러분도 하나의 프로그래밍 언어에 대해서 먼저 전문가가 되면 그때그때 필요한 언어들을 빠르게 배우실 수 있을거에요.




3. 프로그래밍 언어와 소프트웨어 지식을 활용해서 코딩합니다.


하나의 프로그래밍 언어에 대해서 잘 배웠다 싶으면, 다양한 소프트웨어 지식을 가지고 코딩을 할 수 있어요.  소프트웨어 지식은 기본적인 프로그래밍 원리, 프로그래밍 언어, 자료구조, 알고리즘, 소프트웨어 공학 등을 포함해요. 이 내용은 매우 방대하기 때문에 하나의 포스트에서 다룰 수도 없고, 심지어 책 한 권으로 다루기도 어려울 수 있어요. 그래도 각각의 소프트웨어 지식들이 어떤 걸 의미하는지 간단히 봐볼까요?


- 프로그래밍 원리에 대한 학습을 통해 모든 프로그래밍 언어에 공통적으로 가지고 있는 개념에 대해 학습할 수 있어요.


- 프로그래밍 언어에 대한 학습을 통해 그 프로그래밍 언어가 가지고 있는 특징들을 이해하고 어떤 글자(syntax) 표현하는지를 배울 수 있어요.


- 자료구조 학습을 통해 데이터를 저장하고 표현할 수 있는 방법을 배울 수 있어요.


- 알고리즘 학습을 통해 실생활 문제를 추상화시키고 문제를 효율적으로 해결하는 방법을 배울 수 있어요.


- 소프트웨어 공학을 통해 소프트웨어(프로그램)를 개발할 때 기획, 개발, 테스트하는 방법들에 대해서 배울 수 있어요.




스페이스 오딧세이 (2001)


영화 스페이스 오딧세이(2001)에서 인류의 진화과정을 '도구가 필요했다  도구를 활용하는 방법을 습득했다  도구를 적절한 상황에서 활용하면서 진화해왔다(뼈다귀가 우주선이 됩니다!)' 라고 보여주는 것처럼 코딩도 마찬가지 입니다.


위에서 단계별로 나타난 것처럼 '내가 필요한 것을 생각한다   코딩에 필요한 프로그래밍 언어를 학습한다 → 필요한 소프트웨어 지식과 함께 프로그램을 만들어간다' 의 과정을 통해서 코딩을 하게 되는 것입니다. 이렇게 3단계에 걸쳐서 우리는 코딩을 하고, 그 결과물로 하나의 프로그램이 만들어지는 것이에요.


코코넛랩에서는 먼저 소프트웨어 지식 중 가장 기본이 되는 프로그래밍의 원리에 대해서 배워보도록 할거에요. 이 때 프로그래밍의 원리를 가장 잘 표현할 수 있는 프로그래밍 언어인 C 언어를 활용할거에요.


이론부에는 프로그래밍 원리를 이해하고, C 언어를 사용하는 방법에 대해서 간단하게 알아본 구름 IDE를 활용하여 실습을 해보도록 할거에요.


다음 글에서 C 언어를 활용한 프로그래밍 원리의 기본에 대해서 하나씩 배워보도록 해요


글은 쭉 이어집니다~





이미지 출처


심슨 : https://goo.gl/S4o6z3

C : https://goo.gl/526dM7

자바 : https://goo.gl/2DfgZa

파이썬 : https://goo.gl/EoDaHw

프로그래밍 언어 순위 : https://goo.gl/gYPKdQ

일하는 개구리 : https://goo.gl/Tsg9VX

스페이스 오딧세이 3개 이미지  : https://goo.gl/YowHLp / https://goo.gl/dXU8os



내용 참고


절차지향과 객체지향 개념 : https://goo.gl/DKoais

윤성우의 자료구조

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari