Wikifunkcie:O projekte
- Prvým cieľom Wikifunkcií je podpora projektov Wikimedie, ale rovnako ako Wikiúdaje bude podporovať i ďalšie ciele. Toto je popis Wikifunkcií nad rámec Wikipédie.
- Vyhlásenie o programe
- Projekt Wikimedia pre všetkých, ktorí spoločne vytvárajú a udržiavajú knižnicu kódových funkcií na podporu projektov Wikimedia a ďalších, ktorú každý môže volať a znovu používať vo svetových prirodzených a programovacích jazykoch sveta
Wikifunkcie sú otvorený repozitár kódu, ktorý môže ktokoľvek používať a prispievať doň.
Wikifunkcie pozostávajú z funkcií. Funkcia môže mať opis v mnohých jazykoch so zoznamom parametrov, testových prípadov, zoznamom implementácií v rôznych programovacích jazykoch a ďalšie metadáta, všetky vo viacerých jazykoch. Implementácie môžu byť znovu použité v iných softvérových projektoch (súkromné aplikácie alebo skripty), volané a vykonávané online (používajú sa v prehliadači, v cloudovom prostredí alebo v notebookoch Jupyter[1] či PAWS[2]), vytvorené na dosiahnutie zložitejšej funkcie, podpisované, analyzované alebo validované a oveľa viac.
Wikifunkcie sú projekt vytvorený v duchu Wikipédie, Wikiúdajov, Wikislovníka a ďalších projektov: umožňuje používateľom z celého sveta vytvárať, zachovávať a udržiavať viacjazyčnú knižnicu funkcií, ktoré môžu byť použité kýmkoľvek na akýkoľvek účel. Každá funkcia môže byť podporovaná viacerými implementáciami v rôznych programovacích jazykoch, testovými prípadmi, podmienkami, dokumentáciou, metadátami vo forme runtime odhadov a garancií komplexnosti pre rôzne implementácie a podobne. Používatelia môžu volať funkciu priamo na webstránke, alebo z ich vlastného kódu či aplikácií, z príkazového riadku alebo lokálnej aplikácie. Funkcia môže byť spustená lokálne v prehliadači, na dátovom úložisku (cloud) alebo lokálne, keď je uložená priamo v používateľovej aplikácii.
Wikifunkcie sú určené na vytvorenie dobre definovaného katalógu funkcií, ktoré môžu byť široko znovu použité, a prostredia, kde môžu byť funkcie rýchlo kombinované a vykonávané. Wikifunkcie majú za cieľ uľahčiť život vývojárom, ktorí sa môžu spoľahnúť na tento repozitár ako na akúkoľvek externú knižnicu, a pre koncových používateľov, ktorí môžu volať funkcie podľa potreby, spôsobom, ktorý je v súčasnosti k dispozícii len s veľmi nerovnomerným pokrytím prostredníctvom špecifických webových stránok, ktoré sú často písané vo forme webových stránok z 90. rokov s Java modulmi.
Všetky funkcie sú čisté s cieľom umožniť ich bezpečné vykonávanie. Taktiež každá implementácia môže byť spoznámkovaná metadátami a kryptograficky podpísaná. Koncoví užívatelia si môžu vybrať, ktorú implementáciu danej funkcie použiť, v závislosti na ich hardvérových možnostiach a webových nastaveniach.
Wikifunkcie umožnia ľahký prístup k rozsiahlym znalostným databázam, ako sú Wikiúdaje, ale tiež k binárnym vstupným a výstupným súborom. Je takisto možné nahrať obrázok ako vstupný súbor a vrátiť výsledky analýzy, napríklad čo je na obrázku vyobrazené alebo koľko má obrázok rôznych farieb – alebo iný binárny súbor, napríklad v inom formáte. Toto bude sprístupnené pre pracovné postupy na Wikimedia Commons.
Wikifunkcie pokračujú v tradícii presúvania väčšieho množstva výpočtov, ktoré sa zvyčajne dejú v príkazovom riadku alebo aplikáciách používanými viac počítačovo zdatnými používateľmi, na Web a sprístupňujú funkcie, ktoré predtým neboli dostupné. Zároveň zvýšia produktivitu vývojárov kdekoľvek, pretože môžu použiť len veľkú knižnicu kódu namiesto spoliehania sa na kopírovanie a vkladanie odpovedí zo stránok ako StackOverflow.
Na rozdiel od Wikipédie prispievatelia väčšinou vytvoria nové implementácie pre funkciu namiesto aktualizácie existujúcich funkcií. Implementácie môžu byť automaticky otestované na základe zadaných testov, navzájom medzi sebou a môžu byť ďalej analyzované.
Implementácie môžu byť napísané v niekoľkých rôznych programovacích jazykoch, ale budú môcť volať funkcie implementované v iných programovacích jazykoch. Výkonný motor môže hladko (aj keď nie nevyhnutne s najvyšším možným výkonom) fungovať v rôznych jazykoch. Hoci v väčšine prípadov je v zložení funkcií v rámci jedného programovacieho jazyka značný nárast výkonu, nie je to potrebné. V mnohých prípadoch bude rýchlosť vývoja a čas vývojára cennejší ako ďalšie počítačové cykly strávené vo výkonovom motore.
Referencie