어울림 - 자연과 어울어지기, 그 첫걸음

About Me

자연을 공부하는 人입니다. 생물의 죽살이 뿐 아니라 그들과 함께 해온 문화와 이야기도 함께 알아가고 싶습니다.

I am studying nature. I want to know not only the life history of living things, but also the culture and stories they and humans have shared together.

Search

License


more detail
블로그의 모든 글과 이미지는 기본적으로 상기의 Creative Commons License를 따르며 기타 인용한 내용이나 스크랩한 글들은 모두 해당 저자에게 저작권이 있음을 알립니다.

Profile

프로그램의 기능구현과 최적화


웹프로그래밍과 데이터베이스를 공부하면서 많은 생각들을 하게 되는데 그중 프로그래밍시 기능구현과 최적화에 대한 생각을 정리해 보려한다.

정규과정을 거치지 않고 필요한 대로 언어를 습득한 나로서는 처음에는 당연하게 생각하고 구체화한 것들의 기능구현에 우선하게 되었다. 하지만 경험이 쌓이고 여러 프로젝트들을 진행하면서 자연스럽게 여러 프로그램간의 연동이나 최적화를 염두에 두게 되었다. 프로그래밍을 공부하면서 가장 즐거운 것은 그동안 문제의식만 있던 것들을 직접 동작하는 프로그램으로 구현하는 것이 가능해졌다는 점인데 이뿐만 아니라 머리속에서 맴돌고 있던 생각들을 구체화시켜 프로그래밍하는 과정에서 잘 이해하지 못하고 있던 부분을 제대로 알게 되고 보다 체계적으로 이해하는데 상당한 도움이 되었다.

대학과 대학원에서 생물학과 분류학을 전공하고 오랫동안 html을 비롯해 웹언어를 접해온 덕에 데이터베이스 및 웹프로그래밍은 비교적 수월하게 공부할 수 있었다. 따로 도움을 줄 멘토가 없어 속도가 빠르지는 않았지만 천천히 그동안 구현하고 싶었던 것들을 하나씩 구현하면서 자연스럽게 여러가지들을 익혀나갔다. 웹프로그래밍을 하는 것은 보통 게시판이나 쇼핑몰 만들기로만 생각하기 쉬운데 내 경우는 처음부터 여러 데이터를 처리하고 조회하고 정렬하는 것에 주력해서 게시판을 굳이 공부하지 않고도 시작할 수 있었다. 하지만 시작한지 수개월후에 게시판을 만들어보면서 많은 공부가 되었고 새로운 것들을 배울 수 있었다. 게시판 만들기에는 데이터베이스관련 공부의 핵심부분들이 많이 구현되어있으니 누구라도 나와 같은 생각을 가진 사람이라면 직접 코딩해가면서 구현해보면 큰 도움이 될 것이라고 생각한다.

생물학을 배우면서 대학에서 이런 수업을 들었더라면 아마도 공부방향도 많이 달라졌을 것이라는 생각이 들 정도로 프로그래밍 공부는 전공분야를 다른 각도로 바라볼 수 있도록 해주었던 것 같다. 전문 프로그래머정도의 수준은 반드시 필요하지 않다고 생각한다. 외국어를 공부할 경우와 프로그래밍 언어공부는 흡사한 점이 많다. 필요한 만큼만 구사할 수 있으면 되고 하다보면 자연스럽게 실력이 늘게된다. 일단은 기능구현을 목표로 직접 원하는 기능을 구현해보는 것이 중요하다. 처음에는 소스가 길어지고 필요없는 소스가 추가되어도 크게 무관하다고 생각한다. 이런 문제는 관심을 가지다보면 최적화도 시킬 수 있고 연동문제도 풀어갈 수 있다. 중요한 것은 머리속에 구현된 생각을 웹이라는 훌륭한 커뮤니케이션 공간에 풀어놓고 자신의 생각을 표현할 수 있는 도구를 가지게 된다는 점이다. 물론 자신에게도 좋은 도구가 된다. 일괄작업이나 여러 데이터를 분석하거나 처리, 혹은 조회할 때 등 다양한 목적으로 활용하여 보다 통합적인 사고를 할 수 있다.

개인적으로 생물학을 공부하면서 주로 야외에서 활동하는 일이 많았는데 실험실이나 개인적으로 집에서 결과물들을 처리하려면 자료정리의 한계에 부딪치는 일이 많았다. 자료를 아무리 노트 등에 잘 정리를 해두어도 점점 많아지면 처리가 어려워지고 필요한 정보를 찾는데에도 점점 시간이 많이 걸리기 때문이었다. 뿐만 아니라 다양한 분석을 하기위해서는 매번 반복적으로 소비해야 하는 시간이 필요했다. 독학으로 공부하면서 꽤 오랜 시간이 걸렸지만 많은 부분 직접 프로그래밍을 짜서 해결할 수 있게 되었다.

외국어처럼 프로그래밍도 익숙해지는데 꽤 많은 시간이 필요하다. 하지만 서툴지만 간단한 프로그래밍은 기초만 떼고 간단한 예제만 응용해도 어느 정도 구현이 가능하다. 필요한 툴이나 프로그램을 찾는 것이 아니라 없는 것은 필요에 따라 직접 만들어쓴다는 DIY적 발상이지만 매우 편리하게 활용할 수 있는 게 프로그래밍인 것 같다. 웹프로그래밍의 장점은 서버환경만 구축되면 특별한 툴없이 에디터하나만으로 얼마든지 직접 원하는 것들을 만들어낼 수 있고 온라인상에 구현하여 나 이외에도 누구나 서버에 접속하는 사람들이 동일하게 접속하여 통합관리가 가능하다는 점이 큰 장점이라고 생각한다.

내가 가진 프로그래밍책은 PHP4책 한 권뿐이고 이 마저도 기초만 떼고 이미 다른 사람을 줘 버렸다. 지금은 chm형태의 PHP메뉴얼과 여러 웹메뉴얼, 공개클래스 등을 보거나 웹검색을 통해 공부중이다. 종종 필요한 것은 도서관에서 빌려보거나 논문, 학회지, 보고서 등 가리지 않고 참고하고 있다. 책장에 정작 웹프로그래밍 관련된 책은 한 권도 없는 내가 지금까지 공부를 이어올 수 있었던 것은 머리 속으로만 맴돌고 있던 문제들을 실제로 구현해 풀어내고 싶었던 오랜 갈망때문이 아니었나 싶다. 웹에는 얼마든지 필요한 자료가 있다. 단지 시간과 관심만 있으면 된다. 가르쳐줄 사람이 있으면 좋겠지만 그마저도 정작 자신의 머리 속에 있는 것을 구현하는 데에는 자신이 해결해야 하는 일이 많다. 시간이 걸려도 천천히 하나하나 풀어가야 그만큼 온전히 자기 것으로 소화할 수 있고 다른 사람과 차별화된 방향으로 프로그램을 발전시켜 나갈 수 있다고 생각한다. 짧은 기간에 얻을 수도 있겠지만 몇년 걸려서 구현할 수 있는 것들도 있다. 지금 내가 하는 프로젝트들 중에는 몇년째 구상하고 이어오는 것들도 있다. 현재는 개인적으로 쓰는 프로그램이 대부분인데 기회가 된다면 하나씩 구현된 프로그램들을 공개하여 많은 사람들과 함께 사용할 수 있게 되길 바래본다.