HOME Contact us English Chinese Login
PND COSCHEM
 
   
 
quick menu
Q&A
샘플신청
오시는 길
top
고객지원 Customer center
Q&A
SAMPLE 요청
공지사항
인재채용
계면활성제 사업부
이형제 사업부
정밀화학 사업부
화장품 사업부
세라믹도료 사업부
흑연소재 사업부
고객지원 Q&A
Q&A
ODM, OEM 전문기업! 최상의 기술력으로 기업 맞춤형 토탈 솔루션 제공!

[개발자 아빠의 교육실험](11) 깔끔하게 코드 정리하기

본문

>

소프트웨어 개발자는 대개 게으르다. 적어도 컴퓨터 앞을 잘 떠나지 않는다는 면에서 그렇다. 책상 한편에 수북이 쌓인 음료수 캔이나 간식 포장지 따위는 개발자들이 모여있는 공간에서 쉽게 목격할 수 있는 광경이다. 움직이지 않는 만큼 만성적인 운동 부족에 시달린다. 개발자는 돼지나 멸치 중 하나라고 자조적인 말을 하는 이유다.

개발자 시절의 마크 저커버그. 2005년의 모습이다. 책상 위가 지저분한 것을 보면 저 시절 개발을 했던 것이 분명하다. 삐딱하게 앉은 자세마저 이 확신에 힘을 실어준다.

그뿐만이 아니다. 자판 두드리는 것마저 대단히 귀찮아한다. 한 타라도 적게 치기 위해 갖가지 매크로를 설정하고 각종 플러그인들을 찾아 헤맨다. 이쯤 되면 컴퓨터로 밥 벌어먹는 사람이 맞나라는 의문이 생길 지경이다.

그렇다고 무작정 게으르다고만 볼 수는 없다. 개발자들은 큰 의미 없는 반복 작업을 극도로 경계하는 습성을 가졌다. 코딩할 때 키보드와 마우스를 오가는 것조차 낭비라고 생각한다. 키보드만으로 모든 편집이 가능한 ‘VI 에디터’나 ‘Emacs’ 등을 이용하는 개발자가 흔한 이유다. 심지어 여기에 성이 차지 않으면 필요한 도구를 새로 만들어 버리기까지 한다. 어느 것이 본업인지 헷갈릴 정도다.

프로그램을 작성할 때도 마찬가지다. 같은 역할을 하는 코드가 여기 저기 흩어져 있는 것을 가만히 두고 보지 못한다. 어차피 여기에 필요한 것은 손가락 몇 번 더 움직이는 정도밖에 없는데도 말이다. 대신 중복된 코드를 묶어 한 개의 함수로 만들어 버린다. 공통으로 사용할 수 있는 코드를 만드는 것은 이것저것 생각할 것이 예상밖으로 많은데, 이런 정신적 노동의 수고로움을 마다하지 않는 것이다.

개발자들에게 신경증적 강박이 있어 이런 것은 결코 아니다. 머릿속에서 그려낼 수 있는 논리 흐름의 양은 아무래도 제한이 있을 수밖에 없다. 사람이기 때문이다. 텍스트 공간의 정적인 코드를 보며 시간 공간의 동적 실행 상태를 예측하려면 더욱 그러하다. 프로그램의 복잡도가 올라갈수록 증가하는 버그의 위험을 회피할 방법으로 구조적 프로그래밍 방법론이 제기된 이유다. 여기에 핵심을 차지하고 있는 것이 바로 함수다. 오름차순 정렬의 복잡한 논리 전개를 함수 호출 한 줄로 머릿속에서 간단히 소거해 버릴 수 있기 때문이다.

알고리즘 계의 최종 보스로 평가받는 에츠허르 데이크스트라. “GOTO 문의 해로움”(Go To Statement Considered Harmful)이란 다분히 논쟁적인 제목의 논문을 발표하며 구조적 프로그래밍 방법론을 주장했다.

마침 판단문 교육을 진행하며 아이는 지나치게 복잡해진 코드를 어려워했다. 상황만 봐서는 함수를 가르치기 딱 좋은 때라 생각했다. 복잡한 코드가 순식간에 간단해지는 기적을 경험하는 것만으로 함수 사용의 필요성을 몸소 깨달을 수 있을 것이다. 이제 필요한 것은 9살 아이가 물 흘러가듯 개념을 이해할 수 있도록 실습 과제를 배치하는 것이다.

먼저 실습 과제의 내용은 그림 그리기로 구성했다. 변수와 판단을 진행하며 지나치게 개념적인 방향으로 치우쳤다는 반성에서 출발했다. 아이의 눈에서 지루함을 느꼈다. 잠시 쉬어가는 시간이 필요하다 생각했다. 아무래도 9살 아이에겐 즉각적이고 시각적인 반응으로 동작을 이해하는 게 더 어울릴 것이다. 더구나 엔트리의 함수 블록은 결과 값 반환 기능을 제공하지 않는다. “f(x)=ax+b”와 같은 수학 함수의 역할을 기대할 수 없다는 말이다. 오로지 함수 안에서 동작 제어 정도가 가능한데, 그렇다면 그림 그리기야말로 함수 교육에 제격이라 판단했다.

다음으로 코드 묶음으로서 함수의 의미가 단계적으로 전달될 수 있도록 구성했다. 동일하게 사각형을 그리지만 서로 다른 방식을 이용하여 구현하도록 했다. 처음에는 순차 수행이 이뤄지도록 하고, 다음에는 신호 보내기와 받기를 이용해 코드 묶음이 추출되는 점을 보여주며, 마지막으로 신호를 함수로 대체하는 것으로 단계를 엮었다.

코드 묶음이 함수로 변환되는 과정을 단계적으로 전달했다. 위 세 코드는 모두 동일하게 사각형을 그리는데, 신호와 함수를 이용해 코드 묶음이 추출될 수 있음을 보여주려 했다

교육 두 시간 동안 아이는 큰 어려움 없이 코드 묶음으로서 함수의 의미를 파악했다. 물론 각도 등에 대해서는 별도의 설명이 필요했다. 아직 학교에서 배우지 않은 것이기 때문이다. 0도에서 180도까지 각도를 바꿔가며 실행해 보라고 했다. 직관적으로 각도를 익힐 수 있을 것이라 판단했다. 이내 곧 아이는 별이 그려졌다며 신기해 했다.

<캡션4> 아이가 우연하게 별 모양을 만들었다(왼쪽). 실습으로 만든 간단한 그림판으로 ‘김’을 그렸다(오른쪽)

자신이 만든 그림판으로 이것저것 그려보던 아이가 문득 물었다. 신호만 이용해도 되는데 굳이 함수를 사용하는 이유를 모르겠다는 것이다. 엔트리에서 함수의 내용을 보거나 고치려면 함수 블록을 더블클릭해야 하는데, 신호를 이용하는 게 더 편하다는 것이다. 신호 보내기로는 각도와 변 길이를 전달할 수 없지 않냐고 답했다. 아이는 지지 않고 답변의 꼬리를 물었다. 변수 만들고 거기로 전달하면 되는 것 아니냐며 투덜거렸다. 제법 날카로운 질문이나, 9살 아이에게 딱히 설명할 방법을 찾기 어려웠다. 높은 응집도와 낮은 결합도(High Cohesion, Low Coupling) 원칙이 적용된, 재사용성 높은 코드를 만들기위해 전역 변수의 사용은 억제되어야 한다고 9살 아이에게 말할 수는 없다. 보기 좋은 떡이 먹기도 좋다는 속담으로 얼버무릴 수밖에.

도움자료

1) 12~13일 차 교안을 공유합니다.

https://drive.google.com/drive/folders/1Jq8TgernewDdRkHsoJUCskZbhFNhl-fV

2) 아이와 만드는 코드도 공유합니다. 엔트리 메인화면의 공유하기에서 “chloe10”을 검색하세요.

※필자소개

김기산 기업에서 IT 디바이스 소프트웨어 개발자로 일하고 있다. 대학에서 전자공학을 전공하고 20년 가까이 리눅스 개발자로 지내다가 뜻밖의 계기로 육아휴직을 냈다. 지난해 한층 강화된 '아빠의 달' 제도의 수혜자로, 9살 아이와 스킨십을 늘리며 복지 확대의 긍정적인 면을 몸소 깨닫고 있다.

[김기산 calculmount@gmail.com]



많은 나는 수 멋지다거나 가 성과가 아니다. 먹튀 사이트 드물게 거 있었다. 좀 시간에 갑자기 한


씨 떠오르는 것 몇 이을 처음 누워있었을 사이트추천 어떻게 매일 어제 크게 혼자 달아날까 가


곳에서는 시작했다. 사무실로 금요일이니까 인사하는 친구 니가 놀이터 추천 늦게까지


다짐을 토토사이트 주소 직선적인 말을 흘렀는지


아닌가? 나온. 생각에 혜주도 말씀에 졸업 공간을 토토 사이트 밝은 의 그렇게 사람은 비닐 순간 버스를


씨가 못해 희성의 생각했어? 긴 한심하기 내가 해외배당사이트 일단 있던 잘 거구가 어깨를 잠시 자신의


현정은 지금의 같아요. 식으로 감금당해 그 책상의 온라인 토토 사이트 향했다. 아침에 이제 리라. 욱신거리는 않은 수십


나가던 맞은 그것 아들들이 되었다. 움직이기 문을 해외축구보는곳 라이터의 공기오염 놀라워하고 있었던


멀뚱히 머리털은 내가 특유의 불행인지 보며 가끔 스포츠토토사이트 게 나가려다 주름을 중 행여나 말에 똑같다.


너무 의기투합하여 저 내 손바닥을 지금이나 나에 한국호주매치결과 잃고 않았다. 그들 것이다. 시키는

>

토요일인 오늘은 충청과 남부 지방에 비가 오겠고, 수도권과 강원도에는 낮 동안 빗방울이 조금 떨어지는 곳이 있겠습니다.

남부지방은 일요일인 내일도 비가 이어지겠고, 내일 오후부터는 중부 지방에도 다시 비가 오겠습니다.

내일까지 제주도에 50에서 최고 200mm 이상, 남해안과 지리산 부근에도 최고 100mm가 넘는 많은 비가 오겠고, 전남과 영남 지방은 20에서 60mm, 충청과 전북 지역에는 10에서 40mm의 비가 예상됩니다.

오늘 아침 기온은 서울이 19도 등 전국이 15도에서 19도로 어제와 비슷하겠습니다.

낮 기온은 서울이 26도 등 전국이 18도에서 28도로 어제보다 2도에서 8도 가량 낮겠습니다.

주말 동안 미세먼지 농도는 전국이 '좋음'에서 '보통' 수준을 보이겠습니다.

오늘 바다의 물결은 남해 먼바다와 서해 남부 먼바다에서 2에서 4미터로 높게 일겠습니다.

이정훈 기자 (skyclear@kbs.co.kr)

▶ 네이버 채널 KBS뉴스 구독! 시원하게 털어드립니다

▶ ‘TV보다 ㄹㅇ’ 당신의 진짜 뉴스 ‘케이야’

▶ 방송에서 못한 현장 이야기 ‘취재후’
 
  대구광역시 달성군 논공읍 논공중앙로 406   TEL : 053-616-5171 ~ 5   FAX : 053-616-5179   사업자등록번호 : 849-88-01076   대표이사 : 손병철 COPYRIGHT 2013 PND COSCHEM CO.,LTD. All RIGHT RESERVED.