10 개의 데이터 구조에서 10 개의 함수보다 하나의 데이터 구조에서 100 개의 함수가 작동하는 것이 더 좋은 이유
나는 많은 곳에서 인용 한 것을 언급한다.
"10 개의 데이터 구조에서 10 개의 함수보다 하나의 데이터 구조에서 100 개의 함수를 작동시키는 것이 낫습니다." -앨런 펄리스
이것은 이것이 사실이어야하는 것이 아닙니다. 데이터 복제를 피하기 위해 첫 번째에서 다른 9 개의 데이터 구조를 도출해야하는 것이 그저 생각입니까? 일부 맥락이 누락 된 것입니다.
이 인용구는 1982 년에 출판 된 Alan Perlis의 프로그래밍에 대한 에피 그램에서 발췌 한 것 입니다.
이 인용문의 의미는 Lisp 에서 잘 구현됩니다. Lisp 는 목록을 아래로 처리하고 처리하는 수많은 함수가 하나의 목록 과 목록 에서 작동하는 다양한 기능을 사용하여 많은 것을 수행 할 수 있고 훨씬 더 강력합니다. 단일 목적 데이터 구조보다.
또 다른 예로 Lua 는 테이블을 사용하여 클래스를 시뮬레이션 합니다. 지향 언어와 같은 언어 수준의 클래스와 클래스와 클래스를 만드는 대신 테이블을 사용하여 클래스를 만드는 이유는 무엇입니까? 이제 개체가 테이블에 작성되는 테이블에 대해 정의 된 함수를 무료로 사용할 수 있습니다! 더 좋은 점은 클래스 별 구문으로 언어를 어지럽히 지 않고 클래스에 대해 원하는 테이블에서 함수를 재정의해야 것입니다.
Perlis가 말한 것은 Lisp와 일반적으로 함수형 프로그래밍 에서 확실히 진 사고 방식 입니다. 하나의 데이터 구조에있는 100 개의 함수는 모두 동일한 데이터 구조에서 작동하기 때문에 많은 고유 한 방식으로 함께 구성 할 수 있습니다. 10 개의 데이터 구조에서 10 개의 함수를 혼합 할 수 있습니다. 특정 데이터 구조에 대해 작업합니다.
이것의보다 현대적인 단순한 변형은 추상화의 관점에서 생각하는 것입니다 . Java로 코딩하는 경우에는 List 인터페이스 에 100 개의 함수를 작성 하거나 ArrayList에 대해 한 번, LinkedList에 대해 한 번, 한 번에 대해 ...
컴퓨터 프로그램 (SICP)의 구조 및 해석은 다음과 같이 귀하의 질문에 답합니다.
여기에서 책 의 온라인 버전의 원본 콘텐츠를 볼 수 있습니다.
편집 (코멘트에 포함) :
"파스칼에서 선언 가능한 데이터 구조의 과잉은 함수 내에서 전문화를 유도합니다." 전문화는 "우정"/ 창의성을 저해하기 때문에 나쁘다.
즉, 함수가 너무 특별하면 함수 생성 알려지지 않은 방식으로 할 수 없습니다.
좋은 예는 fold
( https://hackage.haskell.org/package/base-4.8.1.0/docs/Data-Foldable.html ) 데이터 구조에 구애받지 않고 일반적인 고차 함수입니다. 예를 들어 나무에서 사용할 수 있습니다.
data Tree a = Empty | Leaf a | Node (Tree a) a (Tree a).
'ProgramingTip' 카테고리의 다른 글
Android : Proguard에 권장되는 구성은 무엇입니까? (0) | 2020.11.21 |
---|---|
프로그래밍 기술을 향상시키기위한 아주 작은 프로그램? (0) | 2020.11.21 |
Backbone.js에서 뷰 및 모델 폐기 (0) | 2020.11.21 |
새 사용자 정의 컨트롤을 도구 상자 나 새 Winform에 어떻게 추가 할 수 있습니까? (0) | 2020.11.21 |
C ++에서 돌아가는 가장 좋은 방법은 무엇입니까? (0) | 2020.11.21 |