검색

인생 첫 프로그래밍 언어 선택의 기준

옛날 해커의 프로그래밍 이야기

  • 페이스북
  • 트위터
  • 복사

컴퓨터에 대한 접근은 물론이고 세상이 돌아가는 방식을 가르치는 무엇이든, 그에 대한 접근은 무제한적이고 전적이어야 한다. 직접 해보라는 강령을 언제나 지켜라. (2018. 08. 16)

“저는 컴퓨터를 분해하고 싶었던 적이 한 번도 없습니다.”

 

1950년대 말부터 80년대까지 IT의 역사를 MIT ‘인공지능 연구실’과 ‘테크 모델 철도 클럽1 ’을 중심으로 엮은 『해커스 : 세상을 바꾼 컴퓨터 천재들』의 저자 스티븐 레비와의 인터뷰에서 페이스북 창립자인 저커버그가 한 말이다. 이 책에서는 저커버그를 신세대 해커로 소개했는데, 그의 이름이 이 책에 거론되기까지는 약 50년의 세월을 거슬러 올라가야 한다.

 

1958년 MIT 인공지능 연구실에는 IBM 7042 라는 큰 방을 가득 채운 컴퓨터가 있었다. 천공카드로 프로그램을 짜서 천공카드 리더기로 입력한 정보를 IBM 704에 보내 프로그램을 실행했다. 천공카드를 이용하면 0과 1로만 프로그램을 짜야 한다. 어떻게 0과 1로 프로그램을 짤 수 있는지 설명하려면 복잡한 하드웨어에 대한 설명이 있어야 하니 그냥 그렇게만 알아두자.

 

어느 날 테크 모델 철도 클럽에 (클럽 OB인) 잭 데니스 교수가 찾아와 ‘군사 개발 연구소 링컨 랩’에 있는 TX-03 라는 당시로는 최신형 컴퓨터를 가지고 놀 기회를 주었다. TX-0는 천공카드와 비교하면 아주 진보(?)된 프로그래밍 언어인 어셈블리어를 사용했다. 0과 1로만 프로그램을 짜다가 sto(AC에 저장하기), add(AC에 더하기), lda(인덱스 레지스터 로드하기)와 같은 사람이 알아볼 수 있는 단어(명령어)4 로 프로그램을 짤 수 있었다!

 

 

8월_1.jpg

                TX-0 출처 : //research.microsoft.com

 

 

당시로써는 엄청나게 진보된 어셈블리어였음에도 ‘테크 모델 철도 클럽’의 최연소 멤버인 12살짜리 피터 도이치는 더 세련된 TX-0용 어셈블리를 만든다. 사실 당시 ‘테크 모델 철도 클럽’ 해커들에게는 특별한 해커 윤리가 있었다.

 

“컴퓨터에 대한 접근은 물론이고 세상이 돌아가는 방식을 가르치는 무엇이든, 그에 대한 접근은 무제한적이고 전적이어야 한다. 직접 해보라는 강령을 언제나 지켜라!”

 

클럽 회원은 누구나 위와 같은 윤리를 철칙으로 삼았고, 윤리를 지키는 행동은 언제나 옳았다. 피터 도이치의 어셈블리 개발은 위 윤리에 부합하는 굉장히 옳은 행동이었기에 가능한 성과였다. 그리고 이 책에서는 이 윤리를 지키는 프로그래머를 해커라고 부른다. (오늘날 해커가 부정의 의미로 쓰이지만, 해커와 크래커는 구분할 줄 알아야 한다.)

 

이 책의 주요 장소인 ‘인공지능 연구실’과 ‘테크 모델 철도 클럽’에는 엄청난 천재 해커가 모여 있었다. 1960년대 초반 MIT에 세계 최초로 인공지능 연구실을 설립한 민스키5 는 당시 천재 해커들의 든든한 조력자가 되었다. 시간이 흘러 인공지능의 몇 번의 황금기와 암흑기를 거쳐 오늘날 다시금 전성기를 맞이했다. 마빈 민스키의 초창기 활동은 인공지능 발전에 큰 역할을 했다.

 

그뿐만 아니라 MIT 인공지능 연구소를 공동 설립한 존 매카시6 는 1956년 다트머스 학회에서 처음으로 인공지능(Artificial Intelligence)이라는 용어를 창안했다. 그는 곧바로 인공지능 언어 리스프(LISP)를 창시했다. 리스프는 함수형 언어인데, 함수형 언어는 초창기에 반짝했지만 절차형 언어(C언어 외), 객체지향 언어(C++ , C#, 자바)에 밀려 오린 시간 암흑기를 맞이하다가, 2010년대에 들어 스칼라를 대표 주자로 다시 주목받게 되었다. 심지어 전통적인 객체지향 언어들이 함수형 언어 기법을 흡수하면서 그 영역을 넓히고 있다.

 

후에 이 멋진 언어 리스프를 탑재한 리스프 컴퓨터 전쟁이 벌어지는데, 인공지능 연구소 일원이 해커 윤리를 저버리고 소프트웨어를 상업적으로 이용하려고 각각 심볼릭스와 LMI사를 설립해 대립한 사건이다. 이 전쟁을 슬픔에 차 바라보던 한 젊은 천재 해커가 있었다.

 

“해커 정신의 메카인 연구실이 심볼릭스의 독점 야욕으로 무너졌다.”

 

이런 결론에 도달한 젊은 천재 해커는 1982년부터 1983년까지 심볼릭스(수십 명의 해커)가 개선한 코드를 혼자서 창의적으로 복제해 LMI에 제공했다. 그가 바로 훗날 자유 소프트웨어 재단을 만든 리처드 스톨만이다. 일당백의 전쟁에서 우수한 성과를 보인 그를 이 책은 최후의 진짜 해커로 등극한다.

 

 

인기 프로그래밍 언어 살펴보기

 

대학생이라면 방학이 한창인 8월 초다. 9월이면 시작될 새 학기, 한 달이나 남았음에도 한 달밖에 남지 않았다고 불안이 드는 건 비단 나만의 기억이 아닐 거다. 대학생이 아니면 어떠랴, 이미 오바마 대통령 시절 소프트웨어 교육을 강조하고 미국뿐 아니라 전 세계에 소프트웨어 교육 열풍이 불었다. 필자는 모두에게 컴퓨팅 사고를 주입할 필요가 있겠냐는 생각이지만 그건 그저 ‘나만의 생각이다’. 프로그래밍 교육, 소프트웨어 교육, 코딩 교육 등 수식어도 다양하지만 그 수식어가 무엇이든, 원하는 목표는 하나다.

 

‘컴퓨팅 사고’.

 

학생이든 학부모든, 직장인이든 컴퓨팅 사고 습득으로 본인 혹은 자녀를 내몰아야 하는 현실이다. 그 현실의 끝에 공통된 질문이 있다. 어떤 컴퓨터 언어로 입문을 해야 하지?

 

TIOBE(www.tiobe.com/tiobe-index/)는 프로그래머와 서드파티 벤더 수, 인기 검색엔진 검색어를 집계해 매달 인기 언어 순위를 발표한다.

 

 

포맷변환_8월_2.jpg

         인기 언어 동향 (출처 : TIOBE, 2018년 7월 기준)

 

 

2002년 이후로 오늘날까지 C 언어와 자바가 엎치락뒤치락 하면 왕좌를 차지하고 있다. 3위는 C++ 로 볼 수 있고 웹 언어 PHP는 과거의 영광을 파이썬에 넘겨주고 퇴역하는 느낌이다. C#도 5위 권을 꾸준히 유지하는 형국이다. 그렇다면 1, 2, 3위 중 한 언어를 선택하면 될 것 같은 느낌 같은 느낌이다.


물론 C 언어가 아직도 수위를 차지하고는 있지만 C 언어의 전성시대는 이미 지났다. C 언어는 어셈블리어보다 혁신적으로 사람 친화적이지만 사용할 수 있는 라이브러리가 풍부하지 못하다. 게다가 같은 작업을 구현할 때 더 모던한 언어에 비해 코딩양이 비교할 수 없이 많다. MIT 초창기 해커와는 달리 저커버그 세대는 아무것도 없는 맨땅에서 시작할 필요가 없다. 그래서 지금 시대에 천공카드도 어셈블리어가 필요 없어졌듯이 C 언어도 필요 없다고 과감히 말하고 싶다(사실 어셈블리어는 많이 쓰인다). 여전히 C 언어는 많은 분야에 사용되지만 그건 신규 분야가 아니다. 포트란이나 코볼 같은 언어가 사실상 사양되었지만 지금도 여느 전산망에서 동작하는 것과 같은 운명의 길로 이미 접어들었단 말이다.

 

C++ 는 C 언어에 객체지향 기법을 접목한 언어인데, 최근에는 3년에 한 번 신버전을 공개하고 있어서 람다식 같은 최신 기법을 다수 장착해 모던 언어로서의 품격을 지니게 되었다. 그런데 C 언어와 마찬가지로 메모리값을 활용하는 포인터를 제공하는데, 이 포인터 때문에 머리를 쥐어뜯는 사람이 열 중 열아홉이다. 네이티브 언어라서 엄청난 실행 속도를 자랑한다.


C#과 자바는 가상머신 위에서 동작하기 때문에 이식성이 좋다7. 가상머신 위에서 동작하기 때문에 네이티브 언어인 C/C++ 보다 느리다. 아마 스마트폰 게임을 좋아하는 독자라면 같은 게임이 안드로이드폰보다 아이폰에서 더 빨리 도는 경험을 해봤을 것이다. 아이폰은 스위프트라는 네이티브 언어를 사용하기 때문에 같은 로직을 수행하는 프로그램이라고 가정할 때 자바가상머신 위에서 도는 안드로이드용 게임보다 더 나은 성능을 제공하는 것이다. 이 두 언어 모두 모던 언어로 꾸준히 성장했는데 로직을 구현하는 데 부가적으로 써야 하는 행사 코드양이 많은 게 단점이다. 최근 좋은 에디터들이 이러한 단점을 보완해주고 있다.


정리하면 이렇다.

 

● C :  젓가락 같은 언어
● C++ : C에 객체지향 개념을 얹은 언어인데 여전히 사용법이 너무 어렵다.
● C# : MS 닷넷 프레임워크 위에서 도는 멋진 모던 언어다.
● 자바 : 라이브러리가 풍부하고 모던 언어로서 발전하고 있다. 우리나라에서 일자리 수요가 다른 언어에 비해 상대적으로 많다.

 

이처럼 오늘날에는 멋진 언어가 많다. 이 중에서 어떤 언어를 선택해야 할까?

 

 

첫 프로그래밍 언어 선택의 기준

 

80년대 이후 로컬 소프트웨어 시대가, 웹 소프트웨어 시대로, 그리고 인공지능 소프트웨어 시대로 변모했다. 사실 로컬 소프트웨어 시대가 갔다는 건, MS가 더는 PC에서 동작하는 오피스 제품을 출시하지 않기로 한 결정만 봐도 단적으로 알 수 있다(앞으로는 웹에서 동작하는 오피스 365만 내놓는다).

 

웹에서 동작하는 소프트웨어 시대는 앞으로도 오래도록 인공지능 소프트웨어 시대와 공생할 것이다. 이 둘은 사실 상호 보완적으로 발전하는 관계이기 때문이다. 그렇다면 ‘소프트웨어 교육’ 열차에 합류하는 입문자라면 당연히 웹과 인공지능을 염두에 두고 첫 번째 언어를 선택해야 할 것이다.

 

웹 언어의 대표 언어는 자바스크립트다. 아직 모던 언어들에 비해 제대로 된 기능을 제공하지는 못하지만 웹에서 동작하는 원하는 기능을 구현하는 데 필요한 모든 기능을 제공한다. 저커버그의 성공은 로컬 PC가 아니라 웹에 있었다. MS가 윈도우에 웹브라우저 익스플로러를 묶어 판매한 이유를 생각해보기 바란다. 웹은 여전히 그리고 앞으로도 기회의 땅임이 틀림없다.

 

인공지능의 대표 언어는 파이썬이다. 인터프리터 언어인 파이썬은 현존하는 언어 중에서 가장 풍부한 라이브러리를 제공한다. 특히 구글이 공개해 이미 대세가 된 범용 딥러닝 프레임워크인 텐서플로는 파이썬을 사용한다. 물론 케라스나 파이토치, 사이킷런 같은 딥러닝 머신러닝 프레임워크(라이브러리)도 마찬가지다.

 

중요한 건 ‘프로그래밍을 배워서 뭐에 쓸 것인가?’ 혹은 ‘무얼 하고 싶은가?’다.

 

그런 차원에서 C, C++ , C#, 자바에 대해 추가 코멘트를 남깁니다.

 

● C :  기계를 움직이게 하는 것에 관심이 있다면 추천! 그게 아니라면 피하자. 혹은 간단히 프로그램 초보 개념을 장착하고 싶다면 추천! 이때는 포인터는 그냥 스킵하시길!


● C++ : 고성능 게임에 애용된다. 고성능 게임 엔진의 대명사인 언리얼 엔진도 C++ 을 사용하므로 특히나 게임에 관심이 있다면 도전!


● C# : 사용이 쉬운 게임 엔진인 유니티는 C# 스크립트를 사용한다. 게임 외에도 다양한 엔터프라이즈급 프로그램을 만드는 데 안성맞춤이다.


● 자바 : 서버/클라우드 영역에서도 많이 쓴다. 안드로이드 앱 개발도 자바를 사용한다. 그런데 최근 자바와 100% 호환을 주장하는 코틀린 언어로의 이동이 심상치 않다!

 

사족 같지만, 지금은 웹과 인공지능 소프트웨어 시대임을 상기하자. 아울러 서두에 밝힌 저커버그의 주옥같은 명대사를 잊지 말자!

 



 1) Tech Model Railroad Club, 테크 모델 철도 클럽. 1946년 창립된 MIT 동아리. //tmrc.mit.edu/
 2)1954년 4월에 발표한 IBM 컴퓨터
 3) 틱소(tixo)라고 읽는다. //en.wikipedia.org/wiki/TX-0
 4)명령어 셋이 궁금하면 //www.bitsavers.org/pdf/mit/tx-0/MIT_TX-0_InstructionSet.pdf

 5) Marvin Lee Minsky, 1927년 8월 9일 ~ 2016년 1월 24일
 6) John McCarthy, 1927년 9월 4일 - 2011년 10월 24일

 7) C#은 닷넷 프레임워크, 자바는 자바가상머신

 

 


 





‘대한민국 No.1 문화웹진’ 예스24 채널예스

이 기사가 마음에 드셨다면 아래 SNS 버튼을 눌러 추천해주세요.

독자 리뷰

(0개)

  • 독자 의견 이벤트

채널예스 독자 리뷰 혜택 안내

닫기

부분 인원 혜택 (YES포인트)
댓글왕 1 30,000원
우수 댓글상 11 10,000원
노력상 12 5,000원
 등록
더보기

글 | 최현우(한빛미디어 편집자)

現 한빛미디어 IT출판부 차장. 10년간 임베디드, 시스템, 디바이스 프로그래밍을 하고 9년간 IT 서적을 만들었다. 2017년부터 등 트렌드 서적도 기획 편집하고 있다.

오늘의 책

차가운 위트로 맛보는 삶의 진실

문장가들의 문장가, 김영민 교수의 첫 단문집. 2007년부터 17년간 써 내려간 인생과 세상에 대한 단상을 책으로 엮었다. 예리하지만 따스한 사유, 희망과 절망 사이의 절묘한 통찰이 담긴 문장들은 다사다난한 우리의 삶을 긍정할 위로와 웃음을 선사한다. 김영민식 위트의 정수를 만나볼 수 있는 책.

누구에게나 있을 다채로운 어둠을 찾아서

잘 웃고 잘 참는 것이 선(善)이라고 여겨지는 사회. 평범한 주인공이 여러 사건으로 인해 정서를 조절하는 뇌 시술을 권유받는다. 그렇게 배덕의 자유를 얻으며, 처음으로 해방감을 만끽한다. 선과 악이라는 이분법에서 벗어나 ‘조금 덜 도덕적이어도’ 괜찮다는 걸 깨닫게 해줄 용감한 소설.

그림에서 비롯된 예술책, 생각을 사유하는 철학책

일러스트레이터 잉그리드 고돈과 작가 톤 텔레헨의 생각에 대한 아트북. 자유로운 그림과 사유하는 글 사이의 행간은 독자를 생각의 세계로 초대한다. 만든이의 섬세한 작업은 '생각'을 만나는 새로운 경험으로 독자를 이끈다. 책을 펼치는 순간 생각을 멈출 수 없을 거라고 '생각한다'.

몸도 마음도 건강한 삶

베스트셀러 『채소 과일식』 조승우 한약사의 자기계발 신작. 살아있는 음식 섭취를 통한 몸의 건강 습관과 불안을 넘어 감사하며 평안하게 사는 마음의 건강 습관을 이야기한다. 몸과 마음의 조화로운 삶을 통해 온전한 인생을 보내는 나만의 건강한 인생 습관을 만들어보자.


문화지원프로젝트
PYCHYESWEB01