2012. 9. 27. 목요일
아외로워
이곳은 이공계열의 황무지 딴지일보. 나는 학창시절 수학시험 반타작 하는 애들을 수학천재마냥 위대하게 바라보던 골수 수학병신 문과생이다. 그 덕분에 딴지일보에 온 것인지도 모르겠다.
비록 나는 언제나 인문학에 있었지만 내 마음속에는 꺼지지 않는 공대적 열망이 있었다. 고삼때 컴덕후의 길로 접어들어 리눅스를 배웠다. 대학때는 연고도 없는 컴공과 수업에 들어가기도 했고, 괜히 로봇 동아리 근처를 맴돌기도 했다.(물론 그래봤자 암것도 모른다)
이렇게 미련을 가졌으면 한 번 정식으로 배워볼 만도 한데 그러지 않았다. 그런 거 배워서 뭐하냐는 마인드가 있었다. 나보다 잘 하는 사람들 많은데 그 어려운 것을 취미로 배우는 게 말이 되냐는 생각이었던 거다. 그리고 진짜 웃기지만, 내가 그런 것을 배우기에는 너무 나이가 많다고 생각했었다.
그렇게 20대를 다 보내고 30대가 되자, 이건 씨발 졸라 회한이 드는 게 아닌가. 컴퓨터에서 내가 만든 프로그램 돌아가는 것을 보는 로망은 30대가 되어도 사그라들지 않는 것이다. 어떤 사람은 악기 하나 배워두지 않는 것이 한이 된다는데, 나는 악기보다 프로그래밍 배워두지 않았던 것이 한이 됐다.
그렇게 한이 된 채로 썩혀둘 생각이었다. 나는 나이가 더 들었고, 따라서 예전에 너무 나이가 많아서 시작하기 늦었다고 생각했던 때 보다도 더 늦었다고 생각했던 것이다.
그러다, 딴지일보 어플 개발 프로젝트를 내 좋대로 시작하고 엎어지면서 에잇 젠장 스러웠다. 도대체 그놈의 개발이라는 것이 뭔지, 도대체 뭘 하기에 그렇게 어렵고 같이 일하기가 어려운지 이해해 보고 싶었다. 프로그래밍을 배우고 싶다기 보다는 프로그래머를 이해해보고 싶었다.
그래서 쉽다고 소문 난 프로그래밍 언어 하나를 골라서 배울 생각을 했다.
후보가 됐던 것은 Python과 Ruby였다. 결국 낙점된 것은 Python. Ruby보다 인터넷 등에 관련 문헌이 많고, 개발자가 많아서 쉽게 따라 배울 수 있는 문서가 훨훨훨훨 많았다.
낮에 일하고, 저녁에, 출퇴근길에 혼자 Python을 공부했다. 출퇴근길에는 아이폰으로 내려받을 수 있는 Python개발도구를 사용했다. 뭐 대단한 것을 한 것은 아니고 혼자 예제 만들어 보면서 혼자 재미있어했다.
그렇다. 재미있었다. 빌어먹을. 이런 재미난 것을 왜 나는 안 하고, 마치 이런 거를 배우는 것이 내 인생에 대한 직무유기인양 스스로 터부시했던 것일까. 내가 태어나서 무언가를 공부하는 것이 이렇게 재미있었던 일이 있었던가.
‘배우기엔 너무 늦었어’ 라고 말하는 20대 초반의 내 모습이 떠올랐다. 이 븅신같은 과거의 나야. 내가 니가 얼마나 어리석은지 보여주겠어. 악기를 배우지 못한 것이 한이라면 지금 배워. 프로그래밍을 배우지 못한 것이 한이면 지금 배우면 되잖아. 나이 많다는 핑계는 다시 말해 게을러서 못하겠다는 말 아닌가? 지금까지 늦어서, 늙어서 못 시작했던 일들을 보란듯이 시작하는 것이 현재의 내가 과거의 나들에게 보여 줄 수 있는 최고의 간지 아닌가.
그리하여 이 재미있는 짓을 어떻게 하면 지속가능하게 할 수 있을까 고민하기에 이르렀다. 홈페이지 개편을 하고 있는 협력업체 대표님(아 진짜 감사드린다)께 여쭈어봤다. 개발자로 거듭나고 싶은데 어떻게 하는게 좋을까요 하고.
그러자 대표님이 왜 자진해서 가시밭길에 들어서려 하느냐고 말씀하시고는, 너무 기본적인 거 부터 하려고 하지 말고, 익숙하지 않은 커멘드 기반의 언어(Python이라던가)도 동기부여가 약하니 비추하고, 당장 생산적인 결과물이 나와서 동기부여가 뚜렷하게 될 수 있는 것을 하라는 것이다. 그러더니 아이폰 어플 개발을 해보라고 나에게 권해줬다.
그래서 시작했다. 그 이름도 찬란한 ‘Objective – C 독학 프로젝트’. 열심히 공부해서 공부의 끝에는 딴지일보 공식 어플을 완성시키고야 말겠다는 야심찬 프로젝트다. 왜 안드로이드나 윈도가 아니고 아이폰인지 궁금하신가. 당연히 내 전화기가 아이폰이기 때문이다. 내맘이다.
이 프로젝트를 여러분과 함께 하고 싶다. 당신이 만약에 나처럼 아이폰 프로그래밍을 배우고 싶어하는 수학병신 문돌이라면, 우리 같이 시작해보자.
도대체 프로그래밍이라는 것이 뭔가
프로그래밍이 뭔지 모르는 사람은 없다. 그것이 무엇인고 하니 며칠 밤을 샌 것 같은 남자가 꿍깃꿍깃 하다가 컴퓨터나 전화기 같은데서 돌아가는 그 무엇을 만들어내는 활동이다.
이런 활동이 있다는 것을 아는 것과, 그런 활동에 동참하는 것은 완전히 다른 이야기다. 일단 프로그래밍이라는 활동이 구체적으로 뭘 하는 건지 알기가 어렵다. 행여 발전적인 호기심으로 관련 커뮤니티에 질문을 올리면 ‘레고, 자동차, 비행기’ 등등의 비유와 함께 알아들을 수 없는 설명을 해주는 친절한 사람들 때문에 곤란해 지거나, 혹은 책보면 나오니 공부하셈 같은 불친절한 답변을 듣게 된다.
간단하다. 프로그래밍이란 사실 컴퓨터로 하는 모든 생산적인 짓거리를 뜻한다.(라고 나는 생각한다) 심지어 지금 키보드를 두들겨 글을 쓰고 있는 것도 일종의 프로그래밍이다. 워드프로세서라는 훌륭한 프로그래밍 툴로 다른 사람에게 읽힐 수 있고, 정형화 할 수 있는 문서를 프로그램으로 만들고 있는 것이다.
엑셀은 우리가 흔히 생각하는 프로그래밍과 더욱 비슷하다. 그 자체가 데이터 시트고, 이걸 변수, 함수 써가며 계산한다. 따라서 엑셀을 할줄 안다면 프로그래밍도 배울 수 있다(고 나는 생각한다).
따라서 내가 배우기로 한 프로그래밍은 ‘소프트웨어프로그래밍’ 이고, 이것을 배우는 것은 곧 엑셀이나 워드프로세서와 마찬가지로 그것을 하는 도구와 도구의 사용법을 익히는 것이다.
Objective – C 가 뭐요
오브젝티브씨 란다. 뭔지 아는 사람이 더 많지 않을까 싶지만 그냥 모른다고 생각하고 진행하겠다. 프로그래밍을 하는 언어다. 우리가 배우려는 언어가 이거다.
언어. 영어로 language. 그러니까 ‘말’이다. 사람이 하는 말을 컴퓨터가 알아들을 수 있도록 표현한 말이라는 설명이 가장 일반적이다. 사실 인간의 언어를 아는 인간과, 기계어를 아는 컴퓨터 사이에는 인터프리터나 컴파일러(언젠간 이것들에 대해 설명이 될 것이다)가 있다. 사실 인간이 배우는 프로그래밍 언어는 저런 번역기들의 언어다.
줄루족과 대화하기 위해 줄루어를 배우는 대신, 줄루족 할 줄 아는 영국사람과 대화하기 위해 영어를 배우는 것과 마찬가지다. 아니 그럼 왜 기계어를 곧바로 배우지 않고? 아서라. 아무리 천재라도 기계어는 너무 어렵고 복잡해서 복잡한 프로그램을 만들 수가 없다.
이런 ‘언어’에는 Objective-C만 있는 것이 아니다. 아래 나오는 거 외에도, 아마 모르긴 몰라도 수백종은 더 있을 것이다.
오브젝티브C는 이런 언어들 중 하나다. 각각의 언어들은 나름의 플랫폼과 역사와 문화를 가지고 있다. 예를 들어 .NET은 MS가 밀어서 유명해졌고, C는 UNIX시스템이 뜨면서 널리 쓰이기 시작했다거나 하는 이야기들 말이다.
![3](https://img1.daumcdn.net/relay/cafe/original/?fname=http%3A%2F%2Fwww.ddanzi.com%2Fwp-content%2Fuploads%2F2012%2F09%2F32.png)
Tiobe 2012년 6월 프로그래밍 언어 인기순위
위 표에서 보다시피 오브젝티브C는 4위에 랭크되어 있다. 나에게 프로그래밍이란 재미난 것이라는 것을 깨닫게 해준 Python은 8위에 올랐다.
내가 1, 2, 3위를 제처두고 4위를 고른데는 그만한 이유가 있다. 아이폰 어플을 개발하는 것이 나의 목표인데, 아이폰 어플을 만들려면 Objective-C를 써야하기 때문이다.
Objective-C의 장점은, 가장 개발환경이 좋고 상업화가 용이한 아이폰 어플을 개발 할 수 있다는 것이다. 단점은 이 언어로 작성한 프로그램은 오직 아이폰, 아이패드, 매킨토시에서만 돌아간다는 것이다. 안드로이드폰, 윈도우7같은 데서 돌아가는 어플은 만들 수 없다. 앱등이라면 Objective-C에 안좋은 감정이 있어도 써야만 하는 그런 언어고, 아무리 쓰고 싶어도 애플 제품을 쓰지 않으면 개발 할 수 없는 언어인 것이다.
오브젝티브C는 80년대 초반에 C언어에 객체지향 프로그래밍 기법을 더해서 만들어졌다고 한다. 객체지향 프로그래밍이 뭔지는 차차 알아가기로 하자. 여튼 이 언어는 그냥그냥 있다가, 1988년, 애플에서 쫓겨난 스티브 잡스의 눈에 띄게 된다.
![steve_jobs_next](https://img1.daumcdn.net/relay/cafe/original/?fname=http%3A%2F%2Fwww.ddanzi.com%2Fwp-content%2Fuploads%2F2012%2F09%2Fsteve_jobs_next.jpg)
잡스옹과 NeXTSTEP
당시 잡스는 NeXT라는 회사를 차려서 운영하고 있었는데, 이 회사가 만든 컴퓨터 NeXTSTEP은 Objective-C로 만든 소프트웨어를 사용했다. 이후 애플이 잡스를 영입하면서 NeXT사를 인수했고, 자연스럽게 Objective-C는 애플 소프트웨어 제품(Mac OS X)의 근간이 됐다.
Mac OS X(애플 매킨토시 컴퓨터의 운영체제)을 기반으로 만든 것이 아이폰의 iOS이고, 따라서 아이폰 앱 역시 Objective-C를 기반으로 만들어졌다. 따라서 어플 개발도 Objective-C로 해야 하는 것이다.
자, 이제 본격적으로 시작해보자. 다음시간에는 Objective-C를 배우기 위해 준비해야 할 것들에 대해 알아본다.
개발 입문한 분들이 질문 이메일을 보내거나 하는 것은 상관 없지만 뭔가를 기대하면 안된다. ‘그러게요. 저도 모르겠습니다.’ 라는 답변만을 듣게 될 것이기 때문이다. 우리 같이 고민하고 배워보자.
ps. 무언가를 만들 때, 일부러 사용하기 어렵게 만들어서 유저를 엿먹이고 싶어하는 엔지니어는 없다. 당장 복잡해서 원망스러운 것에도 실은 이것을 만든 누군가의 따뜻한 배려가 스며있다. 프로그래밍 언어도 마찬가지다(라고 생각 할 예정이다). 너무 어려워서 용기를 잃을 때마다 이 사실을 기억하자.
아외로워
Ddanzi.Lonely@gmail.com
첫댓글 이거 업지 말고 꼭 계속 진행해주시길...나처럼 생각만 하고 나이탓에 시작 안하고 뭉기적 거리는 사람이 또 있을꺼에요. 꼭꼭 계속 연재해주시길