Hello world
최근 데이터 사이언스를 전공하면서 Python이나 R과 같은 최근 'Hot'한 언어들을 함께 사용한다. 하지만 조금 더 예전에 프로그래밍을 배웠던 사람으로서 새로운 기술이 낯설고 불편하다.
최근 많은 프로그래밍 입문자들 사이에서 Python의 강점은 '쉽다'로 귀결한다. 이는 Python의 디자인 철학에 바탕하는데 이는 다음과 같다.
Beautiful is better than ugly [아름다운 것이 추한 것보다 낫다]
Explicit is better than implicit [명시적인 것이 암시적인 것보다 낫다]
Simple is better than complex [간결한 것이 복잡한 것보다 낫다]
[출처 : The zen of Python]
좋다. 말 그대로 아름답고, 공감하는 철학이다. 이에 따라 Python은 '가장 아름다운 하나의 답이 존재한다.'라는 원칙에 맞게 설계된다. 하지만 Python과 반대인 Perl을 주로 배웠던 나는 '하나 이상의 해결법이 존재한다'는 Perl의 철학에 물 들어져 있다. 답은 많을수록 재미있으니까.
여기서 개인적인 프로그래밍 언어의 습득 과정은 까마득한 예전으로 돌아간다. 당시 6살이었던 나는 외삼촌의 집에서 아주 오래된 컴퓨터를 하나 발견한다. 지금은 버렸지만 남아있었으면 박물관에 있을법한 Apple II가 있었다.
나는 이 신기한 기계를 만지작거리며 삼촌의 무릎에 앉아 컴퓨터의 세계에 처음 들어왔다. 발을 내딛던 순간 그 아름다운 화면을 아직 잊지 못한다. 이후에 외삼촌에게 기초적인 BASIC을 배웠고, 그때 학습했던 여러 개념들을 바탕으로 다음 언어로는 C를 살짝 배웠다. 또 한참 컴퓨터를 배울 당시에는 인터넷 개인 웹사이트를 만드는 것이 유행했다. 이때, 개인 웹사이트를 설계하기 위하여 초기에는 Perl을 통한 CGI를 학습했다. (사실 이후에 CGI의 트래픽이 과다한 문제로 PHP로 사이트를 변환하기도 했다.)
이후에 대학에서는 C를 다듬었고, C#을 살짝 배웠다. 사실 당시 대학에서는 (09~14년) JAVA를 중점적으로 강의했었다. (그래서 JAVA도 조금!) 내가 배웠던 프로그래밍의 주요 개념들은 절차적인 것과 객체지향적인 것. 사실 이것들이 전부다.
그리고 대학원에 진학하면서 R과 Python을 중점적으로 다루고 있다. 패키지를 이해 없이 기능만 가져오는 것을 싫어하는데 어쩔 수 없었다. 배울 건 많고 시간은 없으니까.
사실 얼마 전부터 서울대에서 진행하는 Python 수업을 듣고 있다. 조금 쉬운 언어라고 이야기를 많이 들어서 편하게 수업에 임했는데 너무 까다로운 규칙들과 또 코드를 단순화하는 것이 낯설게 느껴졌다.
제일 낯선 문제는 '선언'이다. 나는 변수 Type을 선언하고 그에 맞게 할당하는 것에 익숙하다. 별 다른 선언 과정이 없는 것이 낯설고 머릿속에 그림이 그려지지 않았다. 또, '탭'을 통한 문법은 정말 난해했다. '{ }'에 익숙한 프로그래머라면 아마 Python을 다루며 같은 생각을 했으리라... 이외에도 Python은 조금 독특하고 새롭다.
요즘은 다들 Python을 통해 프로그래밍에 입문한다고 한다. 대학의 학부 교과 과정도 많이 변했다. 물론 좋은 언어다. 인공지능 및 데이터 사이언스에서 다양한 패키지를 지원하고 누구나 쉽게 접할 수 있다. 하지만, 프로그래밍 역시 글쓰기의 일환이다. 대상이 사람이 아닌 컴퓨터라는 것이 다를 뿐이다.
우리는 흔히 좋은 상품을 팔기 위해서는 '소비자'를 알아야 하고, 좋은 글을 쓰기 위해서는 '독자'를 알아야 한다고 이야기한다. 컴퓨터를 이해하기 위해서라면 컴퓨터의 작동원리를 이해할 필요가 있다고 생각한다. 혹, 누군가 프로그래밍에 입문한다고 하면 나는 C를 추천하고 싶다.(포인터의 늪에 빠져봐야 한다!) 불편하고, 어렵고 신경 쓸 게 많지만 그래도 처음 컴퓨터에 대해 많은 것을 이해할 수 있으리라 생각한다.
C언어가 처음 탄생하고, 수많은 과거 어셈블리나 포트란에 기반한 프로그래머들도 불편했을까? 객체 지향의 개념이 처음 등장했을 때는 어땠을까?
개발자는 기술 변화에 맞춰 끝없이 공부해야 한다. 하지만 아직도 조금 불편한 언어를 선호하는 나는 기술 발달에 뒤떨어진 게으른 개발자이다. 하지만 친해지려고 노력하고 있다. 시대는 변했으니까.