추상 위키백과/업데이트/2022-01-28
◀ | 추상 위키백과 업데이트 | ▶ |
프로젝트가 시작된 이후로 우리는 위키함수에 대한 기능 모델을 공개했지만 설명은 다소 기술적이고 매력적이지 않습니다. 이 뉴스레터에서 우리는 이전에 더 접근 가능한 방식으로 함수 모델의 일부를 설명했습니다. 객체란 무엇인지, 어떤 기능이 좋은지, 레이블과 문서화는 무엇이며, 제네릭 유형은 무엇이며, 함수당 여러 구현을 허용하는 이유입니다.
오늘은 핵심 관심사에 대해 알아보시죠: 함수를 어떻게 표현할까요?
함수란 무엇입니까? "함수"라는 용어는 다양한 분야에서 사용되며 영어 위키백과는 컴퓨터 과학, 수학, 언어학, 생물학, 공학 및 사회학의 함수에 대한 문서를 제공합니다. 이 모든 개념은 관련되고 흥미롭고 위키함수의 경우 다음과 같은 구체적인 정의를 사용합니다. 함수는 일부 입력을 받고 출력으로 응답합니다. 입력은 예측 가능한 방식으로 출력에 영향을 줍니다.
어떤 함수가 좋은가요? 우리는 이전에 함수에 대한 일반적인 동기에 대해 논의했습니다. 함수는 질문에 답하고, 질문에 답하는 것은 모든 사람이 모든 지식의 합계에 접근할 수 있도록 하는 중요한 부분입니다. 함수는 위키함수에서 객체의 중심 유형이 될 것입니다. 위키함수 사용자는 "호출"하거나 함수를 사용하여 질문에 답할 수 있습니다. 위키함수의 기여자는 새로운 함수를 정의하고 관련 지원 개체를 만들 수 있습니다.
함수를 어떻게 표현합니까? 다음은 위키함수 및 이를 지원하는 관련 객체에서 함수가 표현되는 방식에 대한 개요입니다(아래에서 자세히 살펴보겠습니다): 함수에는 레이블, 별칭, 문서, 반환 유형 및 인수 목록, 테스터, 구현 목록 및 ID. (오늘은 다소 기술적인 내용이므로 ID에 대해 논의하지 않습니다.)
레이블. 이름과 레이블을 지정하여 함수를 정의합니다. 레이블은 언어에 따라 다릅니다. 두 개의 숫자를 더하는 함수는 영어로 "Addition", 크로아티아어에서 "Zbrajanje", 러시아어로 "Сложе́ние", 벵골어에서 "যোগ" 등으로 불릴 수 있습니다. 사람들이 정확한 함수를 찾는 데 도움이 되는 별칭이 있습니다. "Add", "Sum" 또는 "Plus"는 영어의 좋은 별칭일 수 있고, "прибавле́ние"는 러시아어의 별칭일 수 있고, "+"는 여러 언어에서 작동하는 별칭이 됩니다.
설명서. 함수에는 설명서가 있는 경우가 많습니다. 함수가 하는 일과 수행 방법을 설명하는 일부 텍스트입니다. 이것은 사람들이 유사한 기능과 기능을 구별하는 데 도움이 되며 사용자가 함수 호출의 결과와 질문에 대한 답변을 이해할 수 있도록 합니다. 이전에 레이블, 별칭 및 설명서에 대해 논의했습니다.
반환 유형. 반환 유형은 함수의 응답이 어떤 유형의 객체인지 알려줍니다. 예: "숫자", 참/거짓의 경우 "부울", 단어의 경우 "문자열" 등 이것은 여러 면에서 도움이 될 수 있습니다. 이것은 여러 면에서 도움이 될 수 있습니다. 사용 가능한 함수를 탐색할 때 도움이 될 수 있습니다. 우리는 때때로 답이 숫자라는 것을 알고 있기 때문입니다. 인수가 특정 유형만 취할 수 있고 필요한 유형을 반환하는 함수로 구성할 수 있다는 것을 알고 있기 때문에 함수를 함께 결합할 때 도움이 될 수 있습니다. 반환 유형은 또한 함수와 정확히 무엇을 반환하는지 이해하는 데 도움이 될 수 있습니다. 위에서 언급한 두 "나누기" 함수의 경우 하나는 숫자를 반환하고 다른 하나는 문자열 목록을 반환합니다. 우리 언어로 된 함수에 대한 문서가 없더라도 이것이 무엇을 할 수 있는지에 대한 강력한 힌트를 줄 것입니다.
인수 목록. 함수는 약간의 입력을 받습니다. 입력은 하나 이상의 인수로 제공됩니다. 각 인수에는 레이블/이름(다시 말하지만 지원하는 각 언어로 제공됨)과 이 인수가 될 것으로 예상되는 객체 유형이 있을 수 있습니다. 유형이 중요합니다. 문자열과 숫자를 사용하여 주어진 문자열을 동일한 크기의 부분으로 나누는 "나누기"라는 함수가 있다고 가정해 보겠습니다. 그래서 "위키백과"를 3부분으로 나눕니다"라고 하면 함수가 "Wik", "ipe", "dia"로 응답합니다. 이와 별도로 "나누기"라고도 하는 또 다른 기능이 있습니다. 이 함수는 첫 번째 숫자가 두 번째 숫자에 들어가는 횟수를 결정하기 위해 두 숫자를 사용합니다. 이것은 두 개의 매우 다른 함수이며 "divide(333, 3)"의 결과는 선택한 함수와 값의 유형에 따라 111 또는 3, 3, 3이 될 수 있습니다.
숫자 나누기 함수는 또한 인수에 대한 이름의 필요성을 보여줍니다. 이 경우 어떤 인수가 우리가 나누는 숫자이고 어느 것이 나눗셈되는 숫자인지가 중요합니다. 다른 경우에는 인수의 이름이 덜 중요합니다. "문자열을 동일한 부분으로 나누기" 함수의 경우 유형은 어떤 인수가 어떤 역할을 하는지 알기에 충분합니다.
테스터 목록. 테스터는 테스트의 표준 역할을 수행할 뿐만 아니라 위키함수에서 중요한 역할을 합니다. 전통적으로 테스트는 사용자에게 함수가 실제로 정답과 함께 반환된다는 확신을 주는 것을 목표로 합니다. 함수가 테스트를 통과하면 함수가 다른 인수에 대해서도 정답을 반환할 가능성이 높습니다. 잘 설계된 테스트 세트는 놀라운 입력으로 함수를 호출할 때 예상되는 "에지 케이스"를 탐색할 수 있습니다.
그러나 위키함수에서 테스터는 훨씬 더 많은 일을 할 것입니다! 기여자가 문자열을 균등하게 긴 부분으로 나누는 함수를 만들 때 의도한 바에 대한 예를 즉시 제공할 수 있습니다. "위키백과"를 동일한 세 부분으로 나누고자 하는 경우 다음을 얻고자 하는 테스터를 만들 수 있습니다. "Wik", "ipe" 및 "dia"의 세 문자열 목록인 결과입니다. 그들이 사용하는 언어에 관계없이 다른 모든 기여자는 예상 결과를 잘 정의된 방식으로 볼 수 있으며 테스터를 통과하는 구현을 만드는 데 도움을 줄 수 있습니다.
테스터는 언어에 상관없이 함수가 정확히 무엇을 하는지에 대한 위키함수 기여자 간의 합의를 도출하는 수단 역할을 합니다. 테스터는 엣지 케이스(및 해결 방법)를 제안하고 동의하거나 거부할 수 있는 곳입니다. 테스터는 궁극적으로 기능의 "올바른" 구현이 무엇인지, 따라서 정확히 기능이 의도하는 바를 제한합니다.
이것은 또한 테스터가 함수가 어떻게 호출되고 어떤 결과가 예상되는지에 대한 예를 제공하기 때문에 언어 독립적인 문서의 한 형태라는 것을 의미합니다. 따라서 여러분의 언어로 사용 가능한 문서가 없더라도 테스터는 여전히 함수가 무엇을 하는지 추측하고 생산적으로 사용할 수 있도록 허용할 수 있습니다.
구현 목록. 구현을 통해 주어진 인수에 대해 실제로 함수를 실행하고 함수 호출에 응답할 결과를 생성할 수 있습니다. 위키함수에서 구현은 내장, 특정 프로그래밍 언어의 코드 또는 다른 함수의 조합의 세 가지 다른 방법으로 제공될 수 있습니다. 우리는 이전에 이것에 대해 이야기했고, 우리는 왜 우리가 함수에 대한 다중 구현을 허용하는 비정상적인 방법으로 가고 있는지에 대해 논의했습니다.
함수, 테스터 및 구현을 더 잘 이해하는 데 도움이 되기를 바랍니다.