이전에는 간단하게 자판기와 계산기를 예로 들었지만, 몇 가지 사례를 조금 더 다양하고 세부적으로 이야기해 보려고 한다.
라면을 끓이는 방법은 사람마다 각각의 취향에 따라 다를 것이다. 여기에서는 내가 라면 끓이는 방법을 나열해 보겠다.
이런 것도 하나의 프로그램이 될 수 있다. 이것은 라면을 끓이기 위한 절차를 만든 것이니, '라면 끓이기 알고리즘' 이라고 할 수 있을 것이다.
이 알고리즘을 그대로 프로그래밍 하면 '라면 끓이는 프로그램' 이 될 것이고, 그 프로그램을 사용해서 기계를 만들면 '라면 끓이는 기계' 가 되는 것이며, 앱으로 만들면 '라면 끓이는 앱' 이 되는 것이다.
현대 사회에서 빨래를 하지 않는 사람은 없을 것이다. 빨래를 하는 방법은 대부분 동일하다. 아래의 4단계를 따르는 편이다.
이것을 프로그래밍해서 만든 게 '세탁기' 라는 프로그램인 것이다. 세탁기는 위의 과정을 세탁-헹굼-탈수 라는 과정으로 표시한다. 우리는 세탁물을 넣고 버튼 한 번만 누르면 깨끗해진 세탁물을 결과물로 받을 수 있다. 이것을 '세탁 알고리즘' 이라고 부를 수 있을 것이다.
위의 과정을 대략적인 코드로 구현하면 다음과 같다.
def 세탁기(오염된_세탁물):
깨끗해진_세탁물 = 세탁(오염된_세탁물)
헹궈진_세탁물 = 헹굼(깨끗해진_세탁물)
탈수된_세탁물 = 탈수(헹궈진_세탁물)
return 탈수된_세탁물
세탁기(오염된_세탁물)
위 코드의 구조와 동작 방식 등은 추후에 배울 것이다. 여기에서 중요한 것은 위 코드를 이해하는 것이 아니라, 일상에서 반복되는 문제를 해결하기 위해 소스코드를 작성해야 한다는 사실이다.
위 코드는 실제로 실행되는 코드가 아니라, 우리들의 머릿속에 있는 논리를 프로그래밍 코드의 모습으로 풀어놓은 것이다. 이런 형태의 코드를 의사코드(pseudocode, 슈도코드) 라고 한다. 앞으로 프로그래밍의 이해를 돕기 위해 종종 의사코드 형태로 작성할 것이다.
이 외에도 토스트 만드는 프로그램, 햄버거 만드는 프로그램 등을 만들 수 있을 것이다. 그들은 항상 반복되고 비슷한 형태를 가지고 있으니 말이다. 이처럼, 인생에서 반복적으로 일어나는 정형화된 모든 것들은 모두 프로그램으로 만들 수 있다! 이 문장을 꼭 기억하길 바란다. 펜이 있다면 별 표시를 5개 이상 해야 하는 문장이다.
이번에는 조금 더 현실적이고 구체적인 예시를 들어보겠다. 흥미로울 수 있으니 천천히 잘 들어보길 바란다. 요즘 세상에 통장을 만들거나 계좌이체를 할 때 은행을 직접 찾아가는 사람은 거의 없을 것이다. 각 은행마다 스마트폰 앱이 있고, 무엇이든 편하고 빠르게 할 수 있는 세상이기 때문이다. 인터넷뱅킹이 탄생하기 이전에, 과거에 계좌이체를 하기 위해서는 아래와 같은 과정을 거쳐야만 했다.
어떤가? 2000년 이전에 태어난 세대라면 위와 같은 과정을 대다수가 경험했을 것이다. 위의 모든 과정들이 너무 불편하고, 느리고, 귀찮아서, 이걸 편하게 하려고 만든 프로그램이 '인터넷뱅킹' 이다.
자, 스마트폰으로 계좌이체를 해본 사람이라면 이 일련의 과정들을 보면서 확실하게 와닿는 게 있을 것이다. 우리 삶의 한 부분이 결국 앱 하나로 완벽하게 프로그램화 되었다는 사실을. 이 원리를 이해하는 것이 아주 중요하다. 위 과정들을 풀어서 설명해 볼 테니 이제부터 집중해야 한다.
인터넷뱅킹의 경우 더욱 강력한 보안을 위해 '보안카드' 또는 'OTP 번호' 를 추가로 입력하거나, 비대면 영상통화 인증 등을 해야 하는 경우도 있을 것이다.
어떤가? 정말 우리의 인생에서 '계좌이체' 라는 하나의 영역이 완전히 프로그램화 되었다는 것을 느끼는가? 우리가 사용하는 모든 앱, 모든 인터넷 서비스, 모든 프로그램들은 '현실에서 일어나는 모든 과정', 그러니까 우리 인생의 일부분을 자동화시킨 것에 불과하다.
다시 한번 말하지만, 우리의 인생에서 반복적으로 일어나는 정형화된 모든 것들은 모두 프로그램으로 만들 수 있다. 실제로 우리의 삶에서 우리가 전혀 인식하지 않고 자연스럽게 사용했던 아주 많은 것들이 전부 소스코드로 구현되어 있는 것이다.
이전에 언급했던 '프로그램, 프로그래밍이란 무엇인가?' 를 다시 반복하겠다. 그 만큼 중요하다는 뜻이다. 펜이 있다면 반드시 별 표시를 하기를 권장한다. 그리고 마음속에 각인시키길 바란다.
프로그램이란 인생에서 일어나는 반복적인 일들을 자동화시킨 것 이고, 프로그래밍이란 인생에서 일어나는 반복적인 일들을 정형화하는 것이다. - Developer Rex
위 문장은 당신의 프로그래밍 인생의 모든 순간에 빛날 것이다.
꼭 들려주고 싶은 말이 있다.
프로그래밍은 무(無)에서 유(有)를 창조하는 일이다. 예술적인 일이다. 프로그래밍을 딱딱하고 어렵게 생각하는 것이 아니라, 무에서 유를 창조하는 예술이라고 생각해 주길 희망한다. 인터넷뱅킹의 사례와 같이, 프로그래밍을 알면 인생에 존재하는 것을 창의적으로 새롭게 해석하여 결과물을 재창조할 수 있다.
프로그램은 우리 삶의 정형화된 일들을 컴퓨터로 옮겨놓은 것 뿐이다. 그것이 소프트웨어(Software)인 것이다. 어렵게 생각하지 않길 바란다.
기술자(Engineer) 이면서 예술가(Artist) 인 프로그래머(Programmer) 가 되어보자!
우리의 삶에서 어떤 것들을 알고리즘으로 만들 수 있을지 생각해 보라. 그걸 생각할 수 있다면 프로그래밍이 정말 재미있어질 것이다!
우리가 사용하는 모든 앱, 모든 인터넷 서비스, 모든 프로그램들은 '현실에서 일어나는 모든 과정', 그러니까 우리 인생의 일부분을 자동화시킨 것에 불과하다.
궁금증 / 질문 / 개선점이 있다면 꼭 댓글을 달아주세요. 제가 최선을 다해 도와드리겠습니다. 여러분들의 최고의 학습 친구가 되어드리겠습니다.
#인생프로그래밍 #개발자렉스 #프로그래밍 #프로그래머 #개발자 #개발입문 #프로그래밍입문서적 #코딩교육 #코딩무료교육 #파이썬 #자바스크립트 #자바 #파이썬기초 #파이썬독학 #파이썬책 #혼자공부하는파이썬 #혼공파 #자바스크립트책 #앱개발 #어플개발 #ProgrammingOfLife #programming #programmer #coding #software #developer #python #javascript #java