Wikifunções:Sobre
- O primeiro objetivo da Wikifunções é apoiar os projetos da Wikimedia, mas também apoiará objetivos além disso, assim como ocorre com o Wikidata. Esta é uma descrição da Wikifunções além da Wikipédia.
- Declaração de missão
- Um projeto da Wikimedia para que todos colaborem na criação e manutenção de uma biblioteca de funções de código para apoiar os projetos da Wikimedia e além, para que todos possam chamar e reutilizar nas linguagens naturais e de programação do mundo
Wikifunções é um repositório aberto de código que todos podem usar e contribuir.
A Wikifunções consiste em funções. Uma função pode ter uma descrição em muitos idiomas com uma lista de parâmetros, casos de teste, uma lista de implementações em diferentes linguagens de programação e outros metadados, tudo em vários idiomas (entre aqueles suportados pela Wikimedia). As implementações podem ser reutilizadas em outros projetos de software (aplicativos privados ou scripts), chamadas e executadas online (simplesmente no navegador, em um ambiente de nuvem, ou em notebooks Jupyter[1] ou PAWS[2]), compostas para alcançar funcionalidades mais complexas, assinadas, analisadas ou validadas, e muito mais.
A Wikifunções é um projeto no espírito da Wikipédia, Wikidata, Wikcionário e outros projetos semelhantes de cultura livre colaborativa global: permite que colaboradores de todo o mundo criem e mantenham uma biblioteca multilíngue de funções que podem ser usadas por qualquer pessoa para qualquer propósito. Cada função pode ser suportada por múltiplas implementações em diferentes linguagens de programação, casos de teste, condições pré e pós-execução, documentação, metadados na forma de estimativas de tempo de execução e garantias de complexidade para as diferentes implementações, etc. Usuários podem chamar uma função diretamente no site, ou a partir de seu próprio código 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 dentro do aplicativo do usuário.
A Wikifunções tem como objetivo criar tanto um catálogo comum bem definido de funções que podem ser amplamente reutilizadas quanto um ambiente onde as funções podem ser rapidamente combinadas e executadas instantaneamente. A Wikifunções visa facilitar a vida dos desenvolvedores, que podem confiar neste repositório como em qualquer biblioteca externa, e dos 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 por meio de sites específicos que muitas vezes são escritos na forma de sites dos anos 1990 com applets 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. Usuários finais podem selecionar e auditar qual implementação de cada função usar, dependendo dos recursos de hardware disponíveis e das configurações de rede de confiança.
A Wikifunções permitirá fácil acesso a grandes bases de conhecimento, como o Wikidata, mas também a arquivos binários de entrada e saída. É totalmente possível enviar uma imagem como um arquivo de entrada e retornar resultados de análise, como o que está representado na imagem ou quantas cores diferentes a imagem possui – ou um binário diferente, por exemplo, em um formato diferente. Isso será disponibilizado para fluxos de trabalho na Wikimedia Commons.
A Wikifunções continua a tradição de mover mais computação, que geralmente ocorria na linha de comando ou com aplicativos usados por usuários mais experientes em informática, 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 poderão usar uma grande biblioteca de código em vez de depender de copiar e colar respostas de sites como o StackOverflow.
Diferentemente da Wikipédia, os colaboradores criarão principalmente novas implementações para uma função, em vez de atualizar funções existentes. As implementações podem ser testadas automaticamente contra os testes fornecidos, entre si, e ainda mais analisadas.
As implementações podem ser escritas em várias linguagens de programação diferentes, mas poderão chamar funções implementadas em outras linguagens de programação. O motor de execução pode operar suavemente (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 dentro de uma única linguagem de programação, não há exigência para fazê-lo. Em muitos casos, a velocidade de desenvolvimento e o tempo do desenvolvedor serão mais valiosos do que os ciclos adicionais de computador gastos no motor de execução.
Referências