슈도 코드(Pseudo Code)로 생각 연습 하기
코딩을 배울 때 대부분 코딩의 문법을 먼저 배우려고 한다. 대부분의 학원이나 책의 커리큘럼이 그렇게 되어 있기도 하다. 물론 문법은 기본적인 것은 알고 있어야 한다. 하지만 문법보다 중요한 것은 프로그램이 실행되는 논리적 흐름을 구성하는 것이라고 생각한다. 내가 원하는 결과를 만들어 내기 위해서 어떤 과정들을 거쳐야 하는지 명령어를 나열하는 것이 코딩이 아닐까 한다.
그런데 생각하는 대로 바로 백지에서 코드를 적어 내려 가며 코딩하는 사람이 과연 얼마나 될까? 간단한 프로그램이야 그렇게 하겠지만 코딩을 전문으로 하지 않는 나와 같은 아마추어들에게는 생각과 동시에 코드를 적는 일은 쉽지 않은 일이다.
그래서 처음 코딩을 배우는 사람들은 실제로 자신이 원하는 기능을 갖춘 프로그램을 만들 때 자괴감에 빠지곤 한다. 책도 많이 보고 유튜브도 많이 봐서 문법은 어느 정도 알 거 같은데 도대체 이런저런 크롤링 프로그램을 만들려면 어떻게 코드를 짜야하지?라고 머리를 쥐어뜯는 경우가 다반사이다. 나 역시 그렇다.
그럴 땐 바로 코드를 짜는 것보다 슈도 코드(Pseudo Code)를 먼저 짜는 것이 도움이 된다.
슈도 코드에서 슈도(Pseudo)는 네이버 영어 사전에서 '가짜의', '모조의', '허위의' , '의사의(비슷하여 분간하기 어려움'을 뜻한다고 나와 있다.
큰 프로그램을 만들 때 제작 순서는 크게 계획→설계→코딩→테스트의 단계를 거친다. 큰 프로그램일 뿐 아니라 어떤 프로그램을 만들 때도 비슷한 과정을 거치지 않을까 싶다. 슈도 코드는 '설계 단계'에서 작성하는 것으로 프로그램을 어떤 과정으로 실행시킬지를 미리 글로 적어 보는 것이다.
처음에 코드 작성이 익숙하지 않은 사람들이 코드를 작성하기 전 글로 적어보는 것을 말한다. 실제 예시를 통해 더 자세히 알아보자.
오늘 아침에 간단히 짠 파이썬 코드가 하나 있다. 네이버 뉴스를 크롤링한 것인데 키워드 입력 후 나오는 기사들을 '네이버뉴스'라고 표시된 것들만 제목과 언론사명을 가져오는 프로그램이다.
슈도 코드는 다음과 같이 짜 보았다.
키워드를 입력한다.
해당 키워드로 검색된 네이버 뉴스 페이지를 크롤링하여 각 뉴스 코드들을 리스트 형태로 반환한다.
리스트 내 요소를 반복문으로 하나씩 꺼낸다.
네이버뉴스가 표시된 기사만 골라서 기사 제목과 언론사 명을 추출한다.
언론사 이름에 '언론사 선정'이라는 문자가 포함되어 있다면 이를 제거한다.
여기까지가 내가 생각해 본 슈도 코드였다. 이 슈도 코드를 바탕으로 짠 파이썬 코드는 다음과 같다.
import bs4
import requests
def newssearch(key):
url = "https://search.naver.com/search.naver?sm=tab_hty.top&where=news&query=" + key
html = requests.get(url).text
bs = bs4.BeautifulSoup(html, 'html.parser')
bx = bs.findAll("div", class_="news_area")
return bx
key = input("검색 키워드 : ")
newslist = newssearch(key)
for i in newslist:
each_news = i.find("div", class_="info_group")
naver = each_news.text
press = each_news.find("a").text
if "언론사 선정" in press:
press = press.replace("언론사 선정", "")
if "네이버뉴스" in naver:
title = i.find("a", class_="news_tit").text
print(f"{title} : {press}")
슈도 코드와 실제 이 코드가 어떻게 연결되는지는 다음 이미지에서 확인할 수 있다.
본 코드를 짜기 전에 슈도 코드로 프로그래밍 논리 구조와 수행 방안들을 먼저 생각해 보고 이를 코드로 구현하는 것은 실수를 줄이고 원하는 방향으로 코딩이 진행되게 도와준다.
슈도 코드와 관련한 재밌는 블로그 예시가 있어 공유해 본다.
코드 짜는 게 어렵다면 우선 슈도 코드로 흐름을 정리해 보자. 경험이 늘어날수록 슈도 코드는 머릿속에서 적게 되고 생각한 대로 바로 코드가 나오는 경지에 이르게 될 것이다.