Wikifunctions:常见问题
本页解答Wikifunctions相关的常见问题。若本页未能解答您的疑惑,欢迎前往讨论页发问。
此外,关于 Wikifunctions 和抽象维基百科的更多常见问题,请参阅我们在元维基上的常见问题解答。
引言
这个项目关于什么?
Wikifunctions 是一个新兴的维基媒体项目,它提供了一个任何人都可调用、编写、维护和使用的多样化函数目录。该项目还提供了一种底层技术,它最终将能够把抽象维基百科中与语言无关的内容翻译成任何一种维基百科语言版本。这将让每个人都能用自己偏好的语言来贡献和阅读文章。
什么是函数?
函数是一种知识形态,能够回答问题,比如两个日期之间过去了多少天,或者两个城市之间的距离。更复杂的函数可以解答更复杂的问题,例如三维形状的体积,特定日期火星和金星之间的距离,或者两个物种是否在同一时间存活。
我们已经在许多类型的知识查询中使用了函数,例如向搜索引擎提问。英文维基百科上的模板,例如 Template:Convert 和 Template:Age,也是一些已经在许多维基百科中使用的函数示例,这些功能是用维基文本和 Lua 编写的,且需手动复制到希望使用它们的每一维基。
什么是实现?
实现是一种执行函数的特定方式。实现是一份列出了运行该函数所需步骤的配方。它可能是编程语言中的一段代码或是对其它函数调用的组合。一个函数可能有多个实现,这些实现应当都是等效的。
什么是测试?
测试是一种确定给定函数是否正常工作的方法。一个函数通常会有多个测试,每个测试都会指定一些输入到该函数以及给定输入的输出必须满足的条件。
例如,“首字母大写”功能的测试用例可能包括:“abc”应变为“Abc”;“war and peace”应变为“War and Peace”;“война и мир”应变为“Война и мир”;而“123”应保持为“123”。
哪些功能现已可用,哪些即将推出,哪些还尚需时日?
- 现正发布:
- 我们能够编写处理字符串和布尔值的函数。
- 维基函数从一开始就要全面实现国际化。它可用于任何语言。
- 正处开发:
- 泛型类型和泛型函数尚未获全面支持。
- 截至目前,仅限开发团队添加类型。未来,社区也将能够添加更多类型。未来还有大量工作要做以使类型运行得更流畅。
- 其中一种特别有趣的类型将是二进制数据,尤其是文件。
- 我们目前支持两种编程语言用于实现:JavaScript 和 Python。未来,我们想要支持更多。
- 目前,无法从使用任何编程语言编写的实现中调用其他函数。这当下只可经由组合实现。
- 在未来的日子:
- 从其他维基媒体项目调用维基函数的函数并将处理结果合至页面输出将成为可能。
- 在函数中有望使用来自维基数据的数据。
- 可期调用维基共享资源命名空间中的数据集。
维基函数是如何实现多语言的?
维基函数和抽象维基百科多方面支持多语言且互不影响:
- 维基函数的内容和用户界面均支持多语言。用户可使用任何自然语言阅读和调用维基函数上的函数。此为“合并字符串”函数的英语,波兰语和希伯来语版本,该函数还支持更多语言。
- 贡献者可用自己的语言编辑和改进维基函数。甚至实现也可用贡献者的自然语言编辑。例如,可以使用德语,英语或约300种其他语言中的任何一种来编辑“与”函数的定义。
- 维基函数函数可用于生成任何自然语言的内容。社区正开发越来越多的函数来支持多种自然语言的文本生成。我们已提供布列塔尼语,罗兴亚语,英语和许多其他语言的函数。
- 维基函数中的函数可用多种不同的编程语言实现。例如,join 函数既可用 JavaScript 实现,也可用 Python 实现。
维基函数目前支持哪些编程语言?未来将支持哪些编程语言?
目前,维基函数支持使用 JavaScript 和 Python 编写的实现。我们计划在未来增加对更多编程语言的支持。我们希望在2025年至少再增加一种编程语言(但尚未决定具体是哪一种)。
维基函数将如何与其他项目整合?
维基函数是构建抽象维基百科的第一步。我们近期的工作重点将放在支持社区发展并依反馈改进。与此同时,我们将启动将它与维基百科和维基数据整合的流程,这将推动更广泛的实际应用并使我们更接近抽象维基百科的愿景。
贡献者将能够在自己的维基页面中调用存储在维基函数网站上的函数。函数调用的结果将显示给维基的读者。这可以用来,例如,计算某人的年龄,根据维基数据中的人口和面积数据计算人口密度,或者绘制图表并将其嵌入到特定文章中。
整合维基函数的另一种方法是在 wiki 中整合交互式函数调用界面。例如,在维基百科条目中,可以根据读者提供的参数动态计算物理方程式的结果、绘制数学函数并与之互动等。
维基函数不是什么
具体请见维基函数:维基函数不是什么。
这些函数将以何许可协议授权?
根据2021年11月至12月期间在元维基上发生的讨论,所有对维基函数以及更广泛的抽象维基百科项目的贡献都将采用自由许可协议发布。具体来说:
- 维基函式的文本内容使用創用CC授權 4.0协议。
- 函数签名和其它结构化內容採用CC 0许可协议发表。
- 维基函数中的代码的实现将以Apache 2许可证的方式发布。
- 于抽象维基百科的抽象内容将根据 CC BY-SA 4.0 协议发布。
未来仍有一些问题需要解决,例如基于抽象内容生成的内容的许可问题。我们计划与法务部门共同起草一份更全面的文件,说明用户如何在遵守许可条款的同时,尽可能便捷地复用维基函数的代码。
作出贡献
我是新人。我能做什么,又该怎样帮忙?
欢迎!很高兴您来这里!在维基函数上有许多参与的机会,从创建新函数到改进和翻译文档应有尽有。如果您正在寻找参与进来的方式,我们建议您可以根据自己的兴趣和能力,提出一个您感兴趣主题的新函数。甚至亲自创建该函数。提供一些测试用例。尝试一个实现。协助翻译工作。阅读并改进我们的文档。协助社区的组织工作。
如何创建新的函数,实现,或测试?
如需了解如何创建新的函数,实现,或测试,参阅维基函数:简介。
如需详细了解如何创建实现,参阅维基函数:如何创建实现。
我应先编辑什么?
如果你精通多种语言,请在页面 Special:ListMissingLabels 上查找那些尚未提供你所用语言的标签和描述的功能,并协助添加相关内容。
如果您对某个能够包含在维基函数中的函数领域感兴趣,但目前尚未收录,或者您有更多关于函数的创意,请前往提议新函数页面提出您的想法。
如果你是 JavaScript 或 Python 开发者,或许你想查找那些在 JavaScript 或 Python 中尚未实现的函数,并尝试编写它们。
我该去哪寻求帮助?
您应首先访问帮助门户,在那里您可以找到所有与使用和编辑维基函数相关的文档。如果仍然遇到困难,请在互助客栈发帖,有其他人会为您解答。
如何进行分类工作?
目前,对函数进行分类或归类的最佳方式是通过维基函数命名空间中的页面手动操作。另一种方法是通过相关函数的讨论页进行。我们将持续关注这些工作并与社区共同探讨对系统进行哪些调整将有助于完成这项任务。