'데이터 구조 대신 프로그램 전송'은 송신자와 수신자 간의 지능 배분에 대한 아키텍처적 접근 방식임
PostScript, GPU 셰이더, eBPF 등 다양한 기술 사례를 통해 개념을 설명함
텍스트 레이아웃 라이브러리인 pretext를 예시로, 유연한 레이아웃과 UI 구현 가능성을 제시함
보안, 디버깅, 성능 측면의 트레이드오프(Trade-offs)와 '코드는 데이터'라는 근본적인 질문을 제기함
1982년 Adobe의 PostScript는 프린터에 프로그램을 전송(Send a Program)하는 방식을 개척했다. 기존의 래스터 이미지 전송 방식과 달리, PostScript는 프린터 내부에 인터프리터를 내장하여 기기 독립적인 출력을 가능하게 했다. 이는 프린터 해상도(Printer Resolution)에 관계없이 동일한 결과를 얻을 수 있게 해주며, 이후 다양한 시스템 설계에 영감을 주었다.
GPU 셰이더(GLSL/HLSL)는 CPU가 픽셀 데이터를 직접 전송하는 대신, GPU에서 실행될 작은 프로그램(Small Program)을 전송하는 방식으로 작동한다. 이 방식은 GPU의 병렬 처리 능력을 활용하여 렌더링 성능을 극대화한다. GPU 렌더링 파이프라인(Rendering Pipeline)을 통해, 개발자는 복잡한 렌더링 효과를 구현하면서도 CPU 부하(CPU Load)를 줄일 수 있다.
현대 리눅스 시스템에서 eBPF(Extended Berkeley Packet Filter)는 커널 내에서 실행되는 샌드박스화된 바이트코드(Sandboxed Bytecode)를 전송하는 기술이다. 개발자는 커널 버전을 업데이트하지 않고도 네트워크 패킷 처리(Network Packet Processing), 보안 검사, 모니터링 도구를 구현할 수 있다. 이는 시스템의 유연성을 높이고, 커널 개발 주기(Kernel Development Cycle)를 단축하는 데 기여한다.
프로그램 전송 방식은 강력한 유연성을 제공하지만, 몇 가지 트레이드오프(Trade-offs)를 수반한다. 특히, 원격 코드 실행은 강력한 보안 경계(Security Boundary)를 요구하며, 격리(Isolation)가 필수적이다. 또한, 프로그램의 동작을 이해하기 어렵기 때문에 디버깅(Debugging)과 성능 예측(Performance Predictability)에 어려움이 있을 수 있다. AI 환각(Hallucination)과 유사하게, 예상치 못한 결과가 발생할 가능성도 존재한다.
pretext 라이브러리는 텍스트 레이아웃을 데이터 구조(Data Structure) 대신 프로그램(Program)으로 처리하여, CSS의 한계를 넘어선 유연한 레이아웃과 UI를 구현한다. 이는 개발자가 맞춤형 레이아웃(Custom Layout)을 쉽게 만들 수 있게 해주며, 새로운 UI 패턴(New UI Patterns)을 가능하게 한다. 하지만, 프로그램의 복잡성으로 인해 유지보수(Maintenance)와 성능 최적화(Performance Optimization)에 대한 고려가 필요하다.