섹션2 함수형으로 전환하기 (2회독 후기)
우리가 평소에 Array객체의 메소드로 다루던 filter, map 메소드를 함수형으로 변환하는 것부터 시작하여
여러 가지 함수를 만들며 함수형 프로그램에 대한 사용법?, 이점? 등등 함수형 프로그램의 전반적인 내용을 다루었다.
사실 이번 2회독 까지는 새로 만드는 함수에 대해 이해하느라 급급했다. 그래서 그런지 강의 내용의 핵심까지는 파악을 하기는 힘들었다. 대충 아.. 이래서 함수형 프로그램을 쓰는구나, 함수형 프로그래밍을 하면 코드를 좀 더 간결하게 쓰고 좀 더 안전하게 프로그램을 짤 수 있겠구나 하는 감만 조금 잡힌상태?
일단 메소드에 대한 이해를 한 후 추 후에 한번 더 들어봐야겠다. 어서 강의를 다 들은 후 모든 내용이 이해 될 때 까지 강의를 더 들어봐야겠다.
명령형 프로그램과 선언형 프로그램
명령형 프로그램은 어떻게 할것인가에 초점이 맞춰져있는 데에 반해 선언형 프로그램은 무엇을 할것인지에 초점이 맞춰져있다. 실생활에 예를 들어 설명하자면 내가 롯데타워에 가는 길을 설명한다고 할 때
명령형 프로그램은 “ 현 위치에서 500미터 걸어가서 좌회전 후 xx공구점까지 직진한 후 우회전하면 됩니다.”이고
선언형 프로그램은 “롯데타워의 주소는 서울특별시 xx동 xxx번지” 이다.
이렇게 보면 선언형 프로그램은 명령형 프로그램으로 잘 추상화 되어있는 프로그램인것같다.
함수형 프로그래밍도 명령형 코드들을 함수로 추상화하여 만들어진 함수들로 하여금 선언적으로 프로그래밍 할 수 있게끔 만들어주는 프로그래밍 방식인 것 같다.
배열의 key값은 인덱스이다.
오늘 함수형프로그래밍 강의를 듣는도중 Object.keys() 메소드의 인자로 일반 배열을 넣는데 필자는 key값은 객체나 map등 key값이 명시되어있는 배열형 객체만 가지고 있는줄 알아 한참이나 이해가 가지 않아 직접 코드를 실행시켜
실험을 해보니 Object.keys([1,2,3,4,5])의 리턴값이 [‘0’,‘1’,‘2’,‘3’,‘4’] 로 나오는 것이다, 즉 Object.keys()에 배열을 넣으면 해당 배열의 모든 요소의 인덱스번호가 문자형으로 표시된 배열이 리턴된다.