brunch

You can make anything
by writing

C.S.Lewis

by 김지영입니다 Sep 04. 2017

외계인 나라의 김실장

나름대로 외계어 이해하기 - Java 편 

3~4년 전, 개발자들과의 대화에서 어설프게 아는 척하는 것에 한계를 느끼고 외계어(aka 프로그래밍 언어)를 배우기 시작했었다. 책으로 방송으로 독학을 하며 주위에 개발자들에게 이런저런 질문을 하다가 본격적으로 '외계어 스터디'를 통해서 프로그래밍을 배우기 시작했었다.


그렇게 스터디를 하던 어느 날, 내 나름의 큰 깨달음(?)을 얻었던 적이 있었고 그 사실을 페이스북에 공개하며 많은 분들의 여러 가지 의견을 듣게 되었다. 

https://www.facebook.com/pub.jinson/posts/812706518769596

아마도 이 글이 친구 공개라서 보이지 않는 사람도 있을 것이다. 하여 내가 올린 글과 그중에 나에게 특별한 의미가 되었던 댓글만 다시 올린다.

이 중에서 데이크스트라(다익스트라라고 하기도 한다)가 어떤 의견을 냈는지 이 글을 쓰면서 다시금 궁금해져 며칠 전 성철님을 만난 김에 물어봤는데 기억이 안 난다고 하셨다. 나 역시도 기억이... 그 당시 아마도 이런 류의 이야기를 주고받았나 본데. 혹시 생각이 나면 댓글로 남겨두겠다. 만약에 대략 유추가 가능하신 분이 있으면 알려주시면 감사^^


계도님의 이야기는 농담 같지만 나에게는 크게 와 닿았는데, 외계어를 배우니 외계인(aka 개발자)이 되면 된다는, 그들처럼 생각하도록 해야 한다는 것을 알게 되었다. 


그리고 무엇보다 중요한 창준님의 댓글... 인공언어(이 부분에 대해서는 다음에 조금 더 자세히 알아보자!)에 대한 이야기와 "설계자의 입장에서 이해"라는 말이 나에게는 정말 큰 깨달음을 주었다. 생각해보니 외계어는 만든 사람들(혹은 팀)이 있는데 그들이 왜? 무엇을 위해? 어떻게 만들었는지에 대해서는 알아본 적이 없었기 때문이다. 어차면 그 언어가 나오게 된 배경을 알게 되면 조금 더 언어를 이해하기 쉬워지지 않을까? 아직 내가 프로그래밍 언어를 이해하고 개발자처럼 생각하기는 쉽지 않지만, 언어의 철학이나 배경(역사) 등은 나 같은 일반인(aka 머글)도 이해하기 쉽고 재미있지 않을까 싶어 졌다. 그래서 그 첫 번째 언어로 자바를 선택했다.


자바는 여전히 국내외에서는 많이 사용하는 프래그래밍 언어이다. 

출처 https://goo.gl/pss81Z


자바를 제임스 고슬링이라는 사람이 만들었다는 것은 익히 알고 있었다. https://goo.gl/cyfqbT 이렇게 생긴 분이다. 그러고 보니 몇 년 전 소녀시대의 해외 팬 중에 이 어르신과 비슷하게 생긴 분이 사진에 등장해서 제임스 고슬링이 소녀시대의 팬이라는 소문(?)도 있었다.


여하튼 자바는 처음에 썬 마이크로시스템즈에 제임스 고슬링이 근무할 때 개발한 언어이다. 처음 이름은 Oak로 했었는데 차후에 Java로 바꾸었다고 한다. 제임스 고슬링에 따라면 그 당시 'Dynamic'하며 'revolutionary'하고 'lively'한 단어에 'cool'하고 'unique'하며 'easy to say'하고 'fun to spell'한 것을 찾았고 그것이 Java라고 한다. 흠... 동의하시나요??? 하여간 그렇게 1991년 처음 개발되었고, 1995년 첫 번째 버전이 발표되었다. 그러니까 아직 30년도 안된, 생각보다 꽤나 젊은(?) 언어인 것이다. 


자바는 한 번 쓰고 어느 곳에도 실행 "Write Once, Run Anywhere"하는 것을 약속으로 다음의 철학(목표)을 가지고 만들어졌다고 한다.

객체 지향 방법론을 사용해야 한다. (객체 지향에 대해서는 다음에 따로 알아보자. 아직 그걸 파악할 정도로 나는 프로그래밍을 알지 못한다.)

같은 프로그램(바이트코드)이 여러 운영 체제(마이크로프로세서)에서 실행될 수 있어야 한다.

컴퓨터 네트워크 접근 기능이 기본으로 탑재되어 있어야 한다.

원격 코드를 안전하게 실행할 수 있어야 한다.

다른 객체 지향 언어들의 좋은 부분만 가지고 와서 사용하기 편해야 한다.


그런데 조금 이상했던 것이 객체 지향 방법론을 사용하는 언어는 이미 그때 당시도 있었다는데 (C 같은 언어) 왜 그것들을 사용하거나 단순히 C의 업그레이드 버전을 만들지 않고 굳이 새로 만들었을까? 물론 뛰어난 개발자는 무언가 자신이 창조하는 것을 좋아하겠지만... 위키와 여러 자료를 찾아보니 자바는 여러 개의 마이크로프로세스에서 실행되길 처음부터 원했기 때문에 C랑은 구조와 방식이 다르다고 한다. 그러면서 자바는 처음에  가전제품 내에 탑재해 동작하는 프로그램을 위해 개발하였다는 글을 보았다. 오호라~ 그렇다면 결국 자바는 지금 말하는 IoT에 이미 맞춰져서 개발되었다는 것인가? 


자바의 개발 배경과 철학 등을 찾아보면서 알게 된 사실은, 플랫폼이나 기기에 맞춰서 작성한 코드는 그곳에만 한정적으로 사용할 수 있는데 자바는 그에 반해 자유롭게 사용할 수 있는 언어로 처음부터 개발되었다는 것과 원격이나 네트워크 접근 기능이 초기부터 탑재되어 있어 모바일 환경에서의 개발이나 현재 웹 개발에도 많이 사용하게 되었다는 사실이었다. 지금은 물론 자바의 여러 가지 좋은 점을 이어받고 또 문제점(?)을 개선한 다양한 언어들이 개발되었겠지만, 자바가 개발되었기 때문에 이런 부분들에 대해서 조금 더 편리한 언어가 개발될 수 있었던 것이 아닐까?


요즘 들어 부쩍 이런저런 구설수에 휘말리고 인기가 시들해진 듯한 모습을 보이고, 프로그래밍 공부를 할 때 자바부터 배우라고 하는 사람들도 없지만, 여러 가지 의미에서 어쩌면 현재의 프로그래밍 혹은 프로그래밍 언어의 선구자 역할을 충분히 하는 언어인 듯하다. 



이 영상은 제임스 고슬링과 자바에 대해 검색하던 중 유튜브에서 발견한 영상이다. 자바의 성공에 대해서 이야기하고 있는데 이 인터뷰에 따르면 스마트카드의 코어 스펙이 자바이고 스마트카드와 심카드에 JVM이 탑재되어 있다고 하네요.


그리고 이 인터뷰에 재미있는 표현이 있는데요. 제임스 고슬링이 자신이 하는 일에 너무 흥분하고 신나서 자신도 모르게 청중에 입장에서 설명하지 못하고 너드 같은 표현을 써서 표현하려고 할 때 자신의 아내는 다른 사람들이 이해할 수 있는 언어로 말할 수 있도록 자신의 욕구를 제어하는데(My wife spent a lot of time twisting my arm on that. Nerds need somebody to help explain what's going that's a real

picture.) 많은 시간을 할애했다고... 하하하







매거진의 이전글 생산성은 측정할 수 없다.
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari