Wikifunctions:Visão geral

From Wikifunctions
This page is a translated version of the page Wikifunctions:About and the translation is 50% complete.
Outdated translations are marked like this.
O primeiro objetivo de Wikifunctions é apoiar os projetos da Wikimedia, mas irá apoiar objetivos além disso, assim como com o Wikidata. Esta é uma descrição de Wikifunctions além da Wikipédia.
Declaração de missão
A Wikimedia project for everyone to collaboratively create and maintain a library of code functions to support the Wikimedia projects and beyond, for everyone to call and re-use in the world's natural and programming languages

Wikifunctions é um repositório aberto de código que qualquer pessoa pode usar e contribuir.

Cada página em Wikifunctions representa uma função. Uma função tem uma descrição, uma lista de parâmetros, casos de teste, uma lista de implementações em diferentes linguagens de programação e outros metadados. As implementações podem ser reutilizadas em outros projetos de software (aplicativos privados ou scripts), ser chamadas e executadas online (seja apenas no navegador ou em um ambiente de nuvem ou Jupyter[1] ou PAWS[2] notebooks), compostas para atingir funcionalidades mais complexas, assinadas, analisadas ou validadas e muito mais.

Wikifunctions é um projeto no espírito da Wikipédia, Wikidata, Wikcionário e outros, e permite que colaboradores de todo o mundo criem e mantenham uma biblioteca de funções, que pode ser usada por qualquer pessoa para qualquer propósito. Cada função pode ser suportada por várias implementações em diferentes linguagens de programação, casos de teste, pré e pós-condições, documentação, metadados em forma de estimativas de tempo de execução e garantias de complexidade para as diferentes implementações, etc. Os usuários podem chamar uma função diretamente no site , ou de seus próprios códigos ou aplicativos, de uma interface de linha de comando ou de um aplicativo local. A função pode ser executada localmente no navegador, na nuvem ou localmente e incorporada ao aplicativo do usuário.

Wikifunctions tem como objetivo criar um catálogo comum bem definido de funções que podem ser amplamente reutilizadas e também um ambiente onde as funções podem ser rapidamente combinadas e executadas em tempo real. Wikifunctions visa facilitar a vida dos desenvolvedores, que podem contar com este repositório como em qualquer biblioteca externa, e para usuários finais que podem chamar funções conforme necessário, de uma forma que atualmente só está disponível com uma cobertura muito desigual em sites específicos que geralmente são escritos na forma de sites da década de 1990 com miniaplicativos Java.

Todas as funções são puras, a fim de permitir uma execução segura em sandbox. Além disso, cada implementação pode ser anotada com metadados e assinada criptograficamente. Os usuários finais podem selecionar e auditar qual implementação de cada função usar, dependendo de seus recursos de hardware disponíveis e configurações da web de confiança.

Wikifunctions permitirá acesso fácil a grandes bases de conhecimento, como o Wikidata, mas também a arquivos binários de entrada e saída. É totalmente possível fazer upload de uma imagem como um arquivo de entrada e retornar os resultados da análise, como o que está representado na imagem ou quantas cores diferentes a imagem tem - ou um binário diferente, por exemplo, em um formato diferente. Isso estará disponível para fluxos de trabalho no Wikimedia Commons.

Wikifunctions continua a tradição de mover mais computação, o que geralmente acontecia na linha de comando ou com aplicativos de usuários de computador mais experientes, para a Web e democratizar o acesso a funcionalidades que não estavam disponíveis antes. Ao mesmo tempo, aumentará a produtividade dos desenvolvedores em todos os lugares, pois eles podem apenas usar uma grande biblioteca de código em vez de confiar em copiar e colar corretamente as respostas do StackOverflow.

Ao contrário da Wikipédia, os contribuidores irão principalmente criar novas implementações para uma função em vez de atualizar as funções existentes. As implementações podem ser testadas automaticamente em relação aos testes fornecidos, entre si, e posteriormente analisadas.

As implementações podem ser escritas em várias linguagens de programação diferentes e, ainda assim, ser capazes de chamar funções implementadas em outras linguagens de programação. O mecanismo de execução pode operar sem problemas (embora não necessariamente com o melhor desempenho possível) em diferentes linguagens. Embora na maioria dos casos haja um grande aumento de desempenho ao compor funções em uma única linguagem de programação, não há nenhum requisito para fazer isso. Em muitos casos, a velocidade de desenvolvimento e o tempo do desenvolvedor serão mais valiosos do que os ciclos adicionais do computador gastos no mecanismo de execução.

Referências

  1. m:WikiCite 2017/Jupyter notebooks on Wikimedia sites
  2. PAWS