This Month What I Learned 3

주영택·2021년 3월 2일
0

This Month What I Learned

목록 보기
3/24

코틀린

사이드 프로젝트 용도의 프로그래밍 언어를 뭘로 할까 즐거운 고민을 하다 코틀린으로 결정했다.

최근 업데이트는 멀티플랫폼 모바일 타겟인데 각은 잘 재고 있는 것으로 보인다. 코틀린 네이티브도 기대가 되고... 하지만 IDE 는 아직 분리되어 있는 상태로 보인다.

clion 이랑 idea 랑 나뉜 상태로 가기 보다 kotlin 전용 IDE 를 하나 내 주는 것도 좋을 듯 한데...

kotlin + spring webflux + r2dbc

이 조합 추천인 듯...

내 옛사랑 그루비.

하지만 mvnw 가 나와서 메이븐을 사용한다.

Trampoline

Trampoline, recursion and lazy evaluation

이 주제는 재귀 함수와 연관된다. 그래서 recursion 키워드와 함께 검색해야 원하는 결과를 얻을 수 있다.

코드를 보면 스택 콜 재귀 호출을 일반적인 반복문으로 변환하고 있다.

스택콜 최적화와 밀접하게 관련이 있다. 함수 반환시 복귀할 주소를 따로 저장하지 않도록 하는 기법이다.

그러나 TCO (Tail Call Optimization) 가 불가능한 함수를 Loop 기반으로 최적화 하는 방법을 트램폴린 이라고 부른다.

즉, Trampoline 패턴은 콜스택을 스택에 계속 쌓아올라가는 대신에 힙을 사용한다고 보시면 됩니다. 힙에 잘게 쪼개진 함수들이 여러 개 분포돼 있고 그 함수들을 (마치 트램펄린을 타듯이) 점프~ 점프~ 하면서 실행하는 것이죠!

Stackless Python 같은 것들이 이런 메카니즘을 가지고 만들어진 듯 하다.

소프트웨어를 빠르게 만드는 방법

It is faster to make a four-inch mirror then a six-inch mirror than to make a six-inch mirror.
4인치 반사경을 만든 다음에 6인치 반사경을 만드는 것이, 6인치 반사경 하나 만드는 것보다 더 빠르다.

망원경을 처음 만드는 사람을 위한 톰슨의 법칙이라고 한다. 아래 김창준 님 블로그를 참고.

소프트웨어 개발 기준으로 작은 걸 한 번 만들고 좀 더 큰 걸 만드는 방법이 추천된다.

나는 이 방법은 나름 다른 곳에도 적용해 살아오고 있는데, 장비를 경험하는 곳에도 응용하고 있다.

다양한 장비들이 다양한 가격으로 포진되어 있는 분야의 경우 한 번에 최고의 제품을 선택하기 보다 이것 저것 경험해 보는 편이다.

링크들

profile
NodeJS 백엔드 웹 개발자입니다.

2개의 댓글

comment-user-thumbnail
2021년 4월 6일

준희 님의 전언인데 R2DBC 가 아직 완벽하지 않아 사용 보류했다고... 콜백 쪽에 버그가 있고 컨버터 쪽 기능이 아직 부실하다고 한다.

1개의 답글