C++의 아버지, 비야네 스트롭스트룹의 인터뷰 – 프로그래밍의 과거, 현재, 그리고 미래

프로그래밍을 시작하게 된 계기

진로 선택의 고민

저는 실수로 프로그래밍을 시작하게 되었습니다. 고등학교 졸업 후 진로를 결정해야 했을 때, 저는 역사에 깊은 관심을 가지고 있었습니다. 역사는 인류의 발자취를 이해하고 현재의 흐름을 분석하는 데 매우 유익한 학문이라고 생각했습니다. 하지만 현실적으로 직업적인 측면에서 안정적이지 않다는 점을 깨달았습니다. 역사를 전공하는 것은 저에게 큰 만족감을 줄 수는 있었지만, 취업 시장에서는 적절한 기회를 찾기 어려울 것이라는 걱정이 들었습니다.

결국 저는 보다 실용적이고 안정적인 미래를 위해 수학을 전공하기로 결정했습니다. 수학은 명확한 논리와 체계적인 사고를 요구하는 학문이며, 다양한 분야에서 활용할 수 있다는 점이 매력적이었습니다. 저는 수학을 통해 논리적 사고 능력을 키우고 싶었고, 이를 기반으로 좋은 직업을 얻을 수 있을 것이라 생각했습니다.

프로그래밍과의 첫 만남

그러나 수학을 공부하면서 저는 순수한 이론적 수학보다 현실 세계에 직접 적용할 수 있는 실용적인 분야를 찾고 싶다는 생각을 하게 되었습니다. 그렇게 고민하던 중, 덴마크에서 제공하는 ‘Mathematics with Datalogy’라는 과정을 발견하였습니다. 저는 ‘Datalogy’가 응용 수학의 한 분야라고 생각하고 해당 과정에 등록했습니다.

하지만 수업을 들으면서 ‘Datalogy’가 사실 컴퓨터 과학을 의미한다는 사실을 알게 되었습니다. 처음에는 당황스러웠지만, 곧 저는 두 가지 중요한 사실을 깨닫게 되었습니다.

  • 첫째, 제가 생각했던 것만큼 수학을 잘하지 못한다는 점입니다. 많은 수학 전공자들이 이러한 어려움을 겪으며, 저 또한 추상적인 개념들을 다루는 데 한계를 느꼈습니다.
  • 둘째, 프로그래밍과 컴퓨터 하드웨어의 구조를 배우면서, 그 과정이 매우 재미있다는 사실을 깨달았습니다. 프로그래밍은 단순한 수학적 개념을 넘어서 실제로 문제를 해결하고 창의적으로 접근할 수 있는 도구라는 점이 저를 매료시켰습니다.

이러한 깨달음을 통해 저는 점차 프로그래밍의 매력을 느끼며 본격적으로 이 분야를 탐구하기 시작했습니다.


학업과 경력의 전환점

영국 유학과 박사 과정

프로그래밍에 대한 관심이 커지면서 저는 컴퓨터 아키텍처에 깊은 관심을 가지게 되었습니다. 특히, 컴퓨터 하드웨어의 동작 방식과 효율적인 프로그래밍 기법을 배우는 과정이 매우 흥미로웠습니다.

그때 저는 영국의 케임브리지 대학에서 마이크로 프로그래밍 및 저수준 시스템 개발에 대한 연구가 활발하게 이루어지고 있다는 사실을 알게 되었습니다. 당시 영국에서는 “진짜 프로그래머는 단순한 코드 작성에 만족하지 않는다.”라는 모토가 있을 정도로 매우 깊이 있는 연구가 진행되고 있었습니다.

이러한 연구 환경에 큰 매력을 느낀 저는 박사 학위를 취득하기 위해 영국으로 유학을 떠났고, 본격적으로 컴퓨터 아키텍처를 공부하기 시작했습니다. 이 과정에서 저는 단순한 이론을 넘어서 실제 시스템을 설계하고 최적화하는 방법에 대해 배울 수 있었습니다.

덴마크로의 귀환 시도와 현실

박사 학위를 마친 후 저는 고향인 덴마크로 돌아가고 싶었습니다. 가족과 친구들이 있는 곳에서 새로운 삶을 시작하고 싶었지만, 현실은 그렇게 녹록지 않았습니다. 덴마크에서는 제가 배운 전문적인 지식을 살릴 수 있는 일자리가 부족했습니다.

특히, 제가 다룬 컴퓨터 아키텍처와 저수준 프로그래밍과 같은 고급 분야는 덴마크에서 크게 수요가 없었습니다. 저는 지나치게 전문화되고 과잉 교육을 받은 상태였으며, 결국 덴마크에서는 적절한 직업을 찾기가 어려웠습니다.

벨 연구소에서의 기회

이러한 고민을 하던 중, 미국의 벨 연구소(Bell Labs)에서 연락이 왔습니다. 벨 연구소는 응용 컴퓨터 과학 분야에서 세계 최고의 연구 기관으로 평가받고 있었으며, 뛰어난 인재들과 함께 일할 기회를 제공받았습니다.

이 기회를 놓칠 수 없었던 저는 결국 미국으로 가기로 결정했습니다. 벨 연구소에서 저는 분산 시스템 및 관련 도구를 개발하는 업무를 맡게 되었으며, 이 과정에서 C++의 개발이 시작되었습니다.


프로그래밍의 매력과 확장성

다양한 분야에서의 활용

프로그래밍이 매력적인 이유 중 하나는 다양한 분야에서 활용될 수 있다는 점입니다. 저는 벨 연구소에서 일하면서 CERN(유럽 입자 물리 연구소), JPL(제트 추진 연구소)과 같은 세계적인 기관을 방문할 기회를 얻었고, 이들이 C++를 어떻게 활용하는지 직접 볼 수 있었습니다.

뿐만 아니라, 커피 머신을 프로그래밍하는 개발자들과 협력하면서 프로그래밍이 단순한 대형 프로젝트뿐만 아니라, 일상 속의 소소한 기기들에도 적용된다는 점이 매우 인상적이었습니다.


C++의 발전 과정과 철학

언어의 기본 설계 원칙

C++의 성공 비결 중 하나는 고급 기능과 하드웨어에 대한 저수준 접근을 동시에 제공한다는 점입니다. 프로그래밍 언어는 하드웨어를 직접 제어하면서도, 이를 추상화하여 생산성과 유지보수성을 높이는 것이 중요합니다.

피드백 기반의 점진적 발전

C++는 완성된 제품이 아니라, 지속적으로 성장하고 발전할 수 있도록 설계되었습니다. 사용자들의 피드백을 바탕으로 기능을 개선하고 확장해 나가는 과정을 통해 C++는 많은 프로젝트에서 신뢰받는 언어로 자리 잡았습니다.


IT 커리어에 대한 조언

지나친 전문화의 위험성

젊은 개발자들에게 드리고 싶은 조언은 특정 기술에 지나치게 집중하지 말고, 다양한 기술과 경험을 통해 균형 잡힌 커리어를 쌓아야 한다는 것입니다. 너무 빠르게 특정 기술에 집중하면 새로운 변화에 적응하기 어려울 수 있습니다.

커뮤니케이션의 중요성

코딩 실력만으로는 성공하기 어렵습니다. 자신의 아이디어를 효과적으로 전달하고, 팀원들과 원활하게 협업할 수 있는 커뮤니케이션 능력이 필수적입니다.

기회를 인식하고 대비하는 자세

저는 역사와 수학을 공부한 것이 제 커리어에 큰 도움이 되었다고 생각합니다. 수학은 논리적 사고를 키우는 데 도움이 되었으며, 역사는 세계를 넓게 바라보는 시야를 제공해 주었습니다. 따라서 다양한 분야에 대한 관심을 가지고 유연한 자세로 기회를 대비하는 것이 중요합니다.