존나게여러번봐도 뭔소린지당최모르겟다시바
느긋한 계산법 기가막히게 설명해줄사람
익명(223.39)
2018-02-08 00:31
추천 0
댓글 20
다른 게시글
-
프로그래밍겸 자격증겸 영어하나 따려는데 토익 vs 토플 [1]ㅁㅇㅁㅇ(114.202) | 18.02.08추천 0
-
함수형프로그래밍 람다시발개좆같은데어떡함 [4]익명(218.49) | 18.02.08추천 0
-
아 underscore는 머고 lodash는 머야 [5]익명(218.49) | 18.02.08추천 0
-
PHP개발자 연봉 얼마나 가능?ㅁㅁ(121.141) | 18.02.08추천 0
-
인공지능이 코드 개발하면 어떻게될까 [2]담당일진휴..(219.249) | 18.02.08추천 0
-
아두이노에서 Korduino 는머야? [2]dsasd(58.234) | 18.02.08추천 0
-
속보) 방학 25일남음 ㅇㅅㅇ [1]치카냥(miku122) | 18.02.08추천 0
-
(->) r 모나드 신박하네 [4]익명(122.37) | 18.02.07추천 0
-
프로그래밍 관련 직종도 직무pt발표같은거하냐?dddd(39.121) | 18.02.07추천 0
-
정말로 악마에게 영혼을 팔아서라도 프로그래밍 잘하고싶다... [9]고독한늑대(rps333) | 18.02.07추천 1
그게 뭔데;; - return 0;
lazy evaluation
님이 아는 언어를 말씀해주셔야
한국어
어떤 언어?
님이 아는 언어로 내가 코드를 쓸텐데 접점이 없으면 글로설명해야하잖음
파이썬 자스 자바정도
JS는 기본적으로 eager eval이고 var x = undefined.a(); console.log(x); 이런코드 있으면 x에서 에러터지는데 lazy eval을 js로 흉내내면 var x = function() { return undefined.a(); }; console.log(x()); 이런느낌
값을 바로 계산하는게 아니라 필요할때 계산함
값 대신에 memoization되는 nullary function을 쓴다고 생각하면 편함
js 저렇게 모든 값을 함수에 담아서 쓴다 생각하면 쉬움
1초 마다 팩토리얼 순열의 다음 값이 필요한다고 가정하자. 단 프로그램 시작과 동시에 타이머가 움직이고 무조건 1초 간격으로 팩토리얼 값이 출력되야함. - dc App
근데 ㅂㅅ같이 프로그램 시작하자마자 100만번째 까지 미리 구한답시고 재귀함수 콜했다가 1초 오버되고 시스템 패일 되버렸음 - dc App
근데 일단 10개만 1초안에 계산하고 일단 첫번째 값 보여주는거임. 그리고 다음 1초동안 다음 인덱스들 미리 계산 - dc App
기가 막히게 설명은 못하겠고... 말그대로 게으르게... 학교다닐때 과제 받았다고 그시간부터 바로 시작해서 끝내진 않잖아? 제출기한 당일이 되어서야 급하게 하거나, 제출하세요- 말할때까지 미루는 그런거임...
모든게 함수처럼 선언된다고 보면 좀 나을려나? js에서 a = funtion() {return 5+5} 라고 선언한다고 해서 바로 a=10이 되는게 아니고, a() 이렇게 호출해야 계산이 되서 10이 되는 거잖아? 그래서 c = a+b 조차도 즉시 c가 계산되는게 아니라, 나중에 어디선가 c를 호출하는 순간 c() 한거 마냥 계산이 시작되서 반환
물론 이건 lazy의 한 종류일 뿐이니까 좀 더 찾아보셈
1) non-lazy : 즉시 값을 계산. (1..무한대).select(짝수)가 있으면 (1..무한대)에서 진행되지 않음. 왜냐면 무한대 연산이니까 무한정 계산하기 때문에 뒤로 더 진행이 안됨.
2) lazy : 하나씩 계산 (1..무한대).lazy.select(짝수).take(5). 1을 처음부터 끝까지 통과시키고 다음에 2를 통과시킴. 그렇게 해서 5개가 되면 연산을 중단함. 딱 5개에 대해서만 연산이 수행되는 거지.
자원이 많이 필요하거나 시간이 많이 걸리는 연산이 있을때 필요한 만큼 연산을 할 수 있으니까 유용하겠지? 쉽게 1) 100GB파일_nonlazy로읽기.select(조건).take(10) 이렇게 하면 100GB로딩에 똥싸겠지만, 2) 100GB파일.한줄씩lazy로읽기.select(조건).take(10) 이렇게 하면 메모리 걱정없이 편하게 결과가 나오는걸 기다릴 수 있겠지.