객체 지향 프로그래밍과 언어 디자인의 미래: Matz와 Jose의 대화

Dave Thomas's uninterrupted conversation with Yukihiro Matsumoto & José Valim

작성자
EuRuKo
발행일
2025년 01월 13일

핵심 요약

  • 1 본 대화는 객체 지향 프로그래밍(OOP)의 진화된 정의, 상태 관리, 사이드 이펙트, 그리고 루비(Ruby)와 엘릭서(Elixir) 같은 언어 디자인 철학에 대한 깊이 있는 논의를 담고 있습니다.
  • 2 Matz와 Jose는 언어 커뮤니티를 이끄는 데 따르는 도전과 책임감, 그리고 소프트웨어 복잡성 및 AI와 JIT 컴파일러와 같은 미래 기술에 대한 기대를 공유합니다.
  • 3 특히 Matz는 OOP의 핵심으로 '정체성(Identity)'을 강조하며, AI가 테스트 작성과 타입 추론 등 '재미없는' 프로그래밍 작업을 자동화하여 개발자의 즐거움을 높일 것이라고 전망합니다.

도입

본 패널 대화는 루비(Ruby)의 창시자인 Matz(Yukihiro Matsumoto)와 엘릭서(Elixir)의 창시자인 Jose Valim이 참여하여 객체 지향 프로그래밍(OOP)의 현재와 미래, 그리고 언어 디자인 및 커뮤니티 관리의 철학적 측면에 대해 심도 있게 논의합니다. 이들은 OOP의 변화하는 정의부터 소프트웨어 복잡성, 그리고 미래 기술의 역할에 이르기까지 다양한 주제를 아우르며 각자의 통찰을 공유합니다.

대화는 객체 지향 프로그래밍의 정의에 대한 근본적인 질문으로 시작됩니다. Matz는 Alan Kay가 주장한 메시지 전달 방식의 OOP 개념이 시간이 지나면서 상태를 가진 구조화된 객체라는 의미로 변화했음을 설명합니다. 그는 OOP의 핵심 요소로 ‘정체성(Identity)’을 가장 중요하게 꼽고, ‘동적 바인딩(Dynamic Binding)’을 그 다음으로 중요한 요소로 언급하며, 이러한 관점에서 엘릭서조차도 넓은 의미의 객체 지향 프로그래밍의 일부로 볼 수 있다고 말합니다.

이어지는 논의에서는 상태(State)와 사이드 이펙트(Side Effect)의 중요성이 다루어집니다. Jose는 엘릭서가 데이터 흐름에 중점을 두어 기본적으로 불변성을 지향한다고 설명합니다. Matz는 순수 함수형 프로그래밍 언어조차도 실제 애플리케이션에서는 사이드 이펙트와 상태 변경이 필수적임을 인정하며, 이를 전면적으로 부정하기보다는 통제하고 줄이는 것이 중요하다고 강조합니다. 특히, Rails의 ‘서비스 객체(Service Object)’와 같이 상태가 없는 클래스를 객체로 사용하는 방식에 대해서는 객체 지향 원칙의 ‘오용’으로 비판적인 시각을 드러냅니다.

언어 디자인에 대한 커뮤니티의 영향력도 중요한 주제로 다뤄집니다. Matz는 루비의 다국어 지원이 커뮤니티의 자발적인 기여에서 시작되었음을 언급하며 놀라움을 표합니다. Jose는 엘릭서의 코드 포매터 도입에 대한 초기 저항을 회상하면서도, 결국 커뮤니티의 합의와 필요성에 의해 중요한 도구가 되었음을 인정합니다. 또한, 루비와 같은 언어가 오랜 호환성을 유지하려는 노력과, Rails와 같은 프레임워크가 웹 환경의 급변에 맞춰 빠르게 변화하고 때로는 호환성을 깨는 이유에 대한 흥미로운 대조가 이루어집니다.

언어 창시자로서의 비기술적인 어려움도 솔직하게 공유됩니다. Matz는 루비 개발 초기 혼자 작업하며 중단할까 고민했던 시기를 회상하지만, 공개 후 사용자들의 피드백이 큰 동기 부여가 되었다고 말합니다. Jose는 외부의 기대치를 관리하는 것이 어렵다고 토로하며, 커뮤니티의 문제는 공동의 책임임을 강조합니다. 두 사람 모두 컨퍼런스 후 사회적 에너지가 고갈되는 경험에 공감합니다.

소프트웨어 복잡성에 대한 논의에서는, 복잡성이 외부 세계의 반영이기도 하지만, 우리가 사용하는 도구와 언어가 복잡성을 가중시킬 수도 있다는 점이 지적됩니다. Jose는 웹 개발 분야의 급격한 변화가 복잡성을 증가시키는 주된 요인 중 하나라고 언급하며, 선택한 도구와 아키텍처에서 비롯된 복잡성이 실제 필요한 것인지 재평가해야 한다고 제안합니다.

마지막으로, 미래에 대한 기대감이 공유됩니다. Matz는 JIT 컴파일러의 발전과 AI의 잠재력에 큰 기대를 걸고 있습니다. 그는 AI가 테스트 코드 작성이나 타입 추론과 같이 ‘재미없고 반복적인’ 프로그래밍 작업을 자동화하여 개발자들이 더 창의적이고 본질적인 문제 해결에 집중할 수 있게 할 것이라고 전망합니다. Jose는 러스트(Rust)와 같이 저수준과 고수준 언어의 경계를 허무는 새로운 프로그래밍 언어 패러다임의 등장을 흥미롭게 지켜보고 있다고 말하며, 이러한 혁신이 오랜 문제들에 대한 새로운 해결책을 제시할 것이라고 기대합니다.

결론

Matz와 Jose의 대화는 객체 지향 프로그래밍의 본질에 대한 깊이 있는 성찰과 함께, 언어 디자인의 복잡성, 커뮤니티의 역할, 그리고 소프트웨어 개발의 미래에 대한 통찰을 제공합니다. 비록 소프트웨어 복잡성이 증가하고 급변하는 환경 속에서 언어 창시자로서의 어려움이 존재하지만, 이들은 JIT 컴파일러와 AI와 같은 기술의 발전에 대한 낙관적인 시각을 유지하며, 스마트하고 동기 부여된 개발자 커뮤니티가 미래를 긍정적으로 이끌어 나갈 것이라는 희망적인 메시지로 대화를 마무리합니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!