본문 바로가기

전체 글42

함수형 코딩4 - 타임라인 관리하기 우리는 앞서서, 액션, 계산, 계층화, 추상화 등등을 살펴 보았다. 근데 그것만으로 코딩이 완벽해지고, 내 계획대로 작동하는 것은 아니라는것은 모두가 알 것이다. 나머지 하나는, 타임라인을 관리하는 것이다. 요즘은 비동기적 처리를 어떻게 핸들링하느냐가 프로그램이 문제없이 돌아가느냐, 문제없이 돌아가는것 처럼만 보이냐 등등의 핵심 요소라고 생각한다. 이 책에서는 타임라인을 관리하기 위해서, 기존의 코드의 타임라인을 작성하는 방법과 작성된 타임라인을 이용해서 에러를 예측하는 것에대해서 얘기하고있다. 많은 문제가 발생하는 부분은 공유되고 있는 resource가 비동기적인 타임라인에 의해서 호출될때인거 같다. 분명 순서대로만 실행된다면 a가 쓰고 b가 쓰고 문제가 없을 것이라고 생각했지만, 실제 프로그래밍은 처.. 2022. 9. 23.
함수형 코딩3 - 일급함수, 고차함수 앞서서, 추상화를 통해서 계층구조를 명확하게 하고, 함수형 코딩으로 한 발자국 나아간다고 얘기했다. 그렇다면 추상화라는 것은 무엇인가? 함수형 코딩에서의 추상화는, 공통된것을 묶어서 일반적인 형태로 나타내는 것을 의미한다. 공통된 것을 묶어서 일반적인 형태로 나타내는 것? 좀 더 자세히 설명하자면, 1+5, 2+5, 3+5를 해주는 함수가 각각 있을경우, 1,2,3과 같은 특정 인자를 변수로 받아줘서 x+5의 형태의 함수로 쓰는 것을 의미한다. 매우 간단한 형태같지만, 이것은 단순 변수에서 끝나는게 아니라, key-value, 배열, 반복문, 특정 함수 등등 조금이라도 반복되는 부분이 있을 경우, 그것을 변수화시키고, 일반화 시켜서, 어느 경우에서도 쓸 수 있게 만드는 것을 의미한다. 이러한 추상화를 하.. 2022. 9. 22.
함수형 코딩2 - 계층화, 추상화 함수형 코딩은 '부수효과를 없애는 것'을 슬로건으로 가지고 있다. 이전에는 부수효과, 액션, 계산, 데이터에대해서 간략하게 얘기해보았다. 그리고 액션, 계산등은 하나의 컴퍼넌트이면, 그것들을 관리하는 계층을 구성하는게 중요하다. 모든 프로그래밍이 그렇듯이, 아키텍쳐를 명확하게 구성하는것이 중요하듯이, 함수형 코딩에서도 계층을 잘 구성하는것이 중요하다. 그럼 잘 구성하는게 무엇이냐? A계층 ↓ B계층 ↓ C계층 ↓ copy-on-write 계층 ↓ 언어 계층 도메인 관련 계층부터 점점 구체적이고 상세한 역할을 하게되는 식으로 계층을 구성하고 그것들이 서로 하향식으로 참조하고 있는 구성을 의미한다고 생각합니다. 그걸 일관되게 지키는 것이 함수형 코딩의 중요한 부분이 아닐까 싶다. 예를 들어 A계층이 B계층을.. 2022. 9. 22.
함수형 코딩1 - 부수효과, 액션, 계산, 데이터 함수형 코딩의 슬로건은 '부수효과(side effect)를 없애라'는 것이다. A라는 일을 하면서 내가 생각한 A외에 다른것에 영향을 주는 요소를 없애는 것이 함수형 코딩의 포인트이다. 그러한 관점으로 인해서 함수형 코딩은 코드를 3가지로 구분하게 된다. 액션 - 호출 횟수와 호출 시점에 의존하여서, 결과값이 영향을 받는 것 계산 - 호출 횟수와 시점에 영향을 받지않고, 다른곳에 영향을 주지 않는 것(입력만으로 출력을 계산) 데이터 - 변경 불가능한 데이터, 어떤 사건에 대한 사실 이렇게 분류가 되어있는데, 어느 코드를 보건 대부분 액션은 많지만 계산은 거의 찾아 볼 수 없다. 왜냐면 계산은 액션속에 숨겨져 있는 경우가 많기 때문이다.(+ 액션을 호출하면 그 호출한 함수도 액션이 되기때문에 그렇기도 하다.. 2022. 9. 22.