프로그래밍 언어가 나에게 미친 영향: 개발 여정 탐색

Dave Thomas, keynote, "Love, Limerence, and Programming Languages"

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

핵심 요약

  • 1 다양한 프로그래밍 언어(BASIC, Simula, Ruby, Elixir, Unison 등)가 개발자의 사고방식과 프로그래밍 스타일에 지대한 영향을 미쳤음을 역설합니다.
  • 2 각 언어는 객체 지향, 선언형, 제약 기반 프로그래밍 등 새로운 패러다임과 통찰을 제공하며 개발자로서의 성장에 기여했습니다.
  • 3 과거 기술에서 배우고, 새로운 언어를 탐색하며, 프로그래밍 과정에서 즐거움을 찾는 것이 지속적인 성장을 위한 핵심임을 강조합니다.

도입

본 강연은 연사가 프로그래밍 언어와 함께 걸어온 개인적인 여정을 공유하며, 각 언어가 그의 사고방식과 프로그래밍 접근 방식에 어떻게 영향을 미쳤는지 탐구합니다. 특히 객체 지향 프로그래밍에 대한 기존의 관점에서 벗어나 새로운 시각을 모색하게 된 계기와, 오랜 시간 동안 프로그래밍 환경에서 자유롭게 탐구할 수 있었음에 대한 감사를 표하며 강연의 문을 엽니다. 이는 단순히 기술적인 내용을 넘어, 개발자로서의 정체성과 성장에 대한 깊이 있는 성찰을 담고 있습니다.

연사는 자신의 개발 여정에서 만난 주요 프로그래밍 언어들을 시간 순으로 소개하며, 각 언어가 가져다준 핵심적인 통찰을 설명합니다.

1. BASIC (1972)

  • 영향: 프로그래밍에 대한 첫사랑이자 인생의 진로를 바꾼 가장 영향력 있는 언어입니다. 느린 개발 환경(ASR 33 텔레타이프, 종이 테이프, 110 보드)에도 불구하고, 자신을 표현하고 생각을 구체화하는 수단으로서 프로그래밍의 매력을 깨닫게 해주었습니다.

2. Simula (1967)

  • 영향: 최초의 객체 지향(OO) 언어로 널리 알려져 있으며, 연사에게 완전히 새로운 프로그래밍 사고방식을 열어주었습니다. 객체 내부에 상태와 동작을 캡슐화하고 추상화 계층을 만드는 개념, 그리고 이벤트 루프 기반의 동작 방식은 그의 프로그래밍 방식에 깊은 영향을 미쳤습니다.

3. APT (1956)

  • 영향: CNC 기계 제어를 위한 도메인 특화 언어(DSL)로, ‘무엇을 할 것인가’를 명시하고 ‘어떻게 할 것인가’는 컴퓨터에 맡기는 제약 기반 프로그래밍의 개념을 처음으로 접하게 해주었습니다. 이는 선언형 프로그래밍에 대한 이해의 시초가 되었습니다.

4. PDP-11 어셈블리 (1970년대)

  • 영향: 16비트 아키텍처의 우아함과 효율성을 보여주었으며, 하드웨어와의 직접적인 상호작용 및 제한된 환경에서의 효율적인 알고리즘 구현 방법을 익히게 했습니다. C 언어의 문자열 처리 방식에도 영향을 미쳤을 것으로 추정되는 등, 하드웨어와 소프트웨어의 긴밀한 관계를 이해하는 데 기여했습니다.

5. Prolog

  • 영향: 논리형 프로그래밍 언어로, 컴퓨터에게 ‘어떻게’가 아닌 ‘무엇을’ 원하는지 정의하는 선언형 사고방식을 심화시켰습니다. 백트래킹 개념에 익숙해지게 했으며, Erlang과 같은 후대 언어에 영향을 주었습니다.

6. SQL

  • 영향: 집합 조작을 위한 DSL로서, 데이터에 대한 선언적인 접근 방식의 강력함을 보여주었습니다. 30년 이상 사용하면서도 여전히 유용하며, 복잡한 데이터 질의를 통해 원하는 결과를 효율적으로 얻을 수 있게 합니다.

7. Pick (1974)

  • 영향: 다이어그램 생성을 위한 DSL로, ‘내 의도대로 동작하는’ (do what I mean) 철학과 파이프라인을 통한 통합의 유연성을 보여주었습니다. 텍스트 기반 형식으로 전역적인 변경이 용이하며, 제약 기반 프로그래밍의 또 다른 예시가 됩니다.

8. XSLT

  • 영향: XML 변환을 위한 함수형 언어로, 불변성과 재귀적인 변환 적용을 통해 강력한 기능을 제공합니다. 비록 문법이 다소 복잡할 수 있으나, 효율적인 문서 변환 파이프라인 구축에 필수적인 도구로 활용되었습니다.

9. Ruby

  • 영향: 연사에게 ‘사랑하는 언어’로 불리며, 그의 사고방식과 가장 잘 부합한다고 언급됩니다. 1998년부터 사용해온 코드가 여전히 실행될 정도로 안정적이며, 프로그래밍에 대한 즐거움을 지속적으로 제공해 주었습니다.

10. Elixir

  • 영향: 현재 연사가 흥미를 느끼는 언어 중 하나로, 우아한 파이프라인, 강력한 매크로 기능(제어 구조가 함수 호출로 구현됨), 그리고 BEAM 가상 머신 기반의 분산 환경 및 높은 가용성을 장점으로 꼽습니다.

11. Unison

  • 영향: 연사의 현재 ‘집착’ 대상인 순수 함수형 언어로, 엄격한 타입 지정, 불변 코드(콘텐츠 주소 지정 방식), 그리고 ‘어빌리티(abilities)’를 통한 상태 및 분산 처리 관리가 특징입니다. 미래 프로그래밍의 가능성(함수 클라우드, 패턴 매칭 기반 실행)을 제시하는 혁신적인 아이디어를 담고 있습니다.

결론

결론적으로 연사는 자신의 개발 여정이 수많은 선구자들의 노력 덕분이었음을 강조하며 깊은 감사를 표합니다. 각 언어는 그에게 새로운 사고방식과 즐거움을 선사하며 개인으로서, 그리고 개발자로서의 변화를 이끌었습니다. 그는 청중에게 자신의 '여정'을 되묻고, 익숙한 언어에만 머무르지 않고 새로운 기술을 탐색하며 과거의 지혜를 돌아보고 미래를 예측할 것을 권유합니다. 궁극적으로 프로그래밍이 어렵고 위험을 수반하는 일이지만, 그 과정에서 '재미'를 놓치지 않는 것이 가장 중요하다고 역설하며 강연을 마무리합니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

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