추상 위키백과/업데이트/2020-11-10
◀ | 추상 위키백과 업데이트 | ▶ |
- 오늘 우리는 함수 카탈로그가 실제로 어떻게 작동하는지에 대해 조금 이야기 할 것입니다.
- 이것에 대한 보다 공식적이고 포괄적인 설명은 함수 모델이지만 여기서는 객체에 대한 보다 직관적인 설명을 만들고 싶습니다.
새 위키의 모든 페이지는 하나의 객체를 포함합니다.
모든 객체는 정확히 하나의 유형입니다.
- 유형은 객체의 의미를 결정합니다. 유형은 또한 객체를 유효하게 만드는 요소를 결정합니다. 특정 유형의 객체를 해당 유형의 "인스턴스"라고 합니다.
- 위키 페이지로 저장된 모든 객체를 "영구 객체"라고 하며 이러한 객체에는 참조할 수 있는 Z-ID가 있습니다. Z-ID는 페이지의 이름입니다.
유형이 객체의 의미를 결정한다는 것은 무엇을 의미합니까? 예를 살펴 보겠습니다:
- 값이 "
2020
"인 "양의 정수" 유형의 객체는 숫자 2020을 나타냅니다. 이것은 4와 5 및 101을 곱했을 때 얻는 숫자입니다. 그리고 그것은 양의 정수 유형을 가지기 때문에 그것이 숫자라는 것을 압니다. - 만일 "
2020
" 유형이 "문자열"이면 2020년 숫자가 아니라 "2
"과 "0
", "2
" 및 "0
"의 4개 문자 시퀀스를 나타냅니다. - 만일 유형이 "그레고리력"이면 해당 달력이 2020년을 나타내며 윤년은 수요일로 시작하여 목요일로 끝납니다.
유형은 객체로 수행할 수 있는 작업 또는 보다 공식적으로 말하자면 주어진 객체에 적용할 수 있는 함수를 결정합니다:
- 만일 "문자열"이 있는 경우 문자열의 "길이", 즉 순서가 있는 문자 수를 계산할 수 있습니다. 위의 "
2020
"의 결과는 4입니다. - "그레고리력 연도"가 있는 경우 "길이"를 요청할 수도 있지만 결과는 윤년이므로 366일이 될 것입니다.
- "양의 정수"가 있고 그 "길이"를 묻는다면 밑이 10인 로그를 요구하거나 곱셉적 지속성을 요구할 수 있습니다.
- 그러나 이들 모두는 서로 다른 함수일 것입니다(영어로 "길이"라는 동일한 레이블이 있을 수 있습니다. 설명은 수행할 작업을 더 자세히 설명합니다).
함수는 취할 수 있는 유형을 나타내며 유형은 객체의 의미를 결정합니다.
유형은 아주 다양할 수 있습니다:
- 일부 유형에는 명시적으로 정의된 적은 수의 인스턴스가 있을 수 있습니다. 유형의 모든 인스턴스가 미리 알려지고 열거되며 각 인스턴스는 이러한 몇 가지 가능한 값 중 하나여야 하므로 이를 "열거형"이라고 합니다.
이러한 유형의 고전적인 예는 조지 불의 이름을 따서 명명 된 "불리언(boolean)"으로, 정확히 두 개의 인스턴스인 "참(True)"과 "거짓(False)"을 가지고 있습니다. 또 다른 열거 형은 "요일"입니다. - 다른 유형은 단순 할 수 있지만 가능한 인스턴스 수는 무한합니다.
이러한 유형의 예로는 문자 시퀀스의 경우 "문자열", 숫자 계산의 경우 "양의 정수"가 있습니다. - 다른 유형은 더 간단한 유형으로 구성될 수 있습니다.
예를 들어, "정수"를 나타내는 한 가지 방법은 양의 정수와 불리안으로 구성하는 것입니다. 여기서 불리안은 정수가 양수인지 음수인지를 결정하고 양수는 절대 값을 나타냅니다.
모든 개체가 위키 페이지로 저장 될 필요는 없습니다. 예를 들어, 숫자 2020은 즉석에서 쉽게 만들 수 있으므로 위키에서 개체로 2020을 저장할 필요가 없습니다.
이것이 객체가 구축되고 표현되는 방식입니다. 거의 모든 유형의 객체를 리터럴이라고 합니다. 리터럴은 평가될 때 그 자체로 발생하는 객체입니다.
예를 들어, 숫자 2020을 평가하면 결과는 숫자 2020입니다.
그러나 인스턴스가 리터럴이 아닌 두 가지 매우 특별한 유형이 있으며 이 두 유형은 참조와 함수 호출입니다.
- 참조는 Z-ID로 영구 개체를 참조하는 특수 유형의 개체입니다. 기본적으로 "여기,이 참조는 실제로 이 Z-ID가 참조하는 이 객체여야 합니다"라고 말합니다.
참조를 평가하면 참조된 객체가 생성됩니다. 참조는 즉시 평가할 필요가 없지만 필요할 때마다 평가할 수 있습니다.
실제로 모든 참조를 완전히 평가하는 것이 불가능한 경우도 있습니다. 재귀 및 무한 개체로 쉽게 이어질 수 있기 때문입니다. - 다른 특별한 유형의 객체는 함수 호출입니다. 함수 호출은 함수와 인수 목록으로 구성됩니다.
함수 호출을 평가하는 것은 전체 시스템의 핵심 "마법"입니다. 기본적으로 함수 호출을 해당 함수 호출의 결과로 대체하는 것입니다.
예를 들어, 평가는 함수에 대한 함수 호출을 레이블 "length"로 바꾸고 문자열 유형의 인수 "2020
"를 양의 정수 유형의 값 "4
"로 바꾸는 것입니다.
함수 호출은 일반적으로 바로 생성됩니다. 일반적으로 위에서 설명한 함수 호출을 저장하는 영구적인 객체가 있는 새 위키 페이지를 만들지 않고 대신 해당 함수 호출을 평가 엔진으로 보내서 함수 호출을 평가하고 반환합니다. 그 결과 시스템에는 그 이상이 없습니다. 함수 호출은 매개 변수와 함께 미디어위키 틀을 사용하는 것과 여러면에서 유사합니다.
이 설명이 어떤 의미가 있고 계획된 시스템을 이해하는 데 도움이 되었기를 바랍니다. 우리는 현재 기여자가 위키 자체 내에서 유형을 생성 할 수 있도록 시스템의 일부를 개발하고 있어서 공동체가 존재하는 유형을 생성하고 제어할 수 있습니다. 부담없이 질문해 주세요.
이름짓기 대회의 최종 라운드 투표가 종료됩니다.
- 투표는 11월 2일 화요일부터 11월 16일 월요일까지 진행되어 위에서 설명한 모든 개체를 사용할 수 있는 새 프로젝트의 이름을 결정했습니다.
- 우리가 투표한 여섯 가지 제안은 알파벳 역순으로 Wikimedia Functions, Wikilambda, Wikifusion, Wikifunctions, Wikicodex, Wikicode이었습니다.
- 최종 이름은 최종적으로 법적인 검토를 거친 후 12월 중순에 발표됩니다.