TECH 으로 돌아가기
TECH HACKER NEWS 오늘 7분 읽기 29 READS

함수형 프로그래밍과 하드웨어가 친해질 수 있을까? '기계적 공감(Mechanical Sympathy)' 제대로 이해하기

함수형 프로그래밍과 하드웨어가 친해질 수 있을까? '기계적 공감(Mechanical Sympathy)' 제대로 이해하기
SOURCE IMAGE · HACKER NEWS
함수형 프로그래밍과 하드웨어가 친해질 수 있을까? '기계적 공감(Mechanical Sympathy)' 제대로 이해하기

두 단어의 어색한 조합

Functional Mechanical Sympathy라는 제목의 발표 영상이 공개됐어요. 제목만 봐도 묘하게 긴장감이 느껴지는데요. '함수형 프로그래밍'과 '기계적 공감'은 보통 반대편에 서 있는 개념처럼 여겨지거든요. 한쪽은 '컴퓨터가 어떻게 돌아가는지는 신경 쓰지 말고 수학처럼 우아하게 코드를 쓰자'는 쪽이고, 다른 한쪽은 '컴퓨터가 실제로 어떻게 돌아가는지 알아야 빠른 코드를 쓸 수 있다'는 쪽이니까요. 이 글에서는 발표가 던지는 질문을 중심으로, 두 개념이 각각 뭔지, 그리고 왜 둘을 같이 이야기하는 게 의미 있는지 차근차근 풀어볼게요.

기계적 공감이 뭐냐면

'기계적 공감'이라는 말은 원래 F1 레이서 재키 스튜어트가 한 말에서 왔어요. 최고의 드라이버가 되려고 엔지니어가 될 필요는 없지만, 차가 어떻게 움직이는지 '느낄' 줄은 알아야 한다는 거죠. 이 표현을 소프트웨어 쪽으로 가져온 사람이 LMAX Disruptor로 유명한 마틴 톰슨이에요. 초저지연 금융 거래 시스템을 만들면서, 하드웨어 특성을 이해하고 코드를 짜면 성능이 몇 배에서 몇십 배까지 달라진다는 걸 보여줬죠.

핵심은 이거예요. 요즘 CPU는 메모리에서 값을 가져오는 게 계산하는 것보다 훨씬 느려요. 그래서 CPU 안에 캐시라는 작은 고속 저장소를 두는데, 여기에 필요한 데이터가 있으면 몇 나노초, 없어서 메인 메모리까지 가야 하면 100나노초 가까이 걸려요. 수십 배 차이죠. 비유하자면 책상 위에 있는 책을 집는 것과 도서관 서고까지 걸어가는 것의 차이예요.

그리고 CPU는 메모리를 한 바이트씩 가져오지 않고 캐시 라인(보통 64바이트) 단위로 뭉텅이로 가져와요. 그래서 데이터가 메모리에 연속으로 붙어 있으면 한 번 가져올 때 옆 데이터까지 딸려 와서 빨라지고, 여기저기 흩어져 있으면 매번 서고까지 왕복해야 해요.

그런데 함수형 코드는 왜 이 문제에 취약할까?

함수형 프로그래밍의 대표 특징은 불변성이에요. 한번 만든 데이터는 바꾸지 않고, 바꾸고 싶으면 새로 만들어요. 그리고 연결 리스트나 트리 같은 자료구조를 즐겨 쓰죠. 여기서 문제가 생겨요.

마무리

한 줄 정리: 함수형 프로그래밍의 순수함은 성능의 적이 아니라, 하드웨어를 잘 이해하는 컴파일러에게 최적화할 자유를 주는 도구가 될 수 있어요.

여러분 팀에서는 함수형 스타일 코드 때문에 성능 문제를 겪어본 적 있나요? 아니면 반대로 함수형으로 바꿨더니 오히려 빨라진 경험이 있나요? 경험담 공유해 주세요!


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://www.youtube.com/watch?v=jSHmDnUZCm8
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...