Wikifunctions:بررسی اجمالی
- نخستین هدف ویکیپردازه (ویکی تابع) پشتیبانی از پروژههای ویکیمدیا است، اما از اهدافی فراتر از آن همانند ویکیداده نیز پشتیبانی خواهد کرد. این توصیفی است از ویکی تابع فرای ویکیپدیا.
- بیانیهٔ مأموریت
- یک پروژهٔ ویکیمدیا برای همگان بهمنظور مشارکت در ایجاد و رسیدگی به یک کتابخانه از کد توابع برای پشتیبانی از پروژههای ویکیمدیا و فراتر از آن، برای فراخوانی و استفادهٔ مجدد به زبانهای طبیعی و برنامهنویسی جهان برای همه.
ویکیتابع یک مخزن آزاد کد است که هرکس میتواند از آن استفاده کند و در آن مشارکت کند.
هر صفحه در ویکیتابع نمایندهٔ یک تابع است. هر تابع دارای یک توضیح، فهرستی از پارامترها، موارد آزمایشی، فهرستی از پیادهسازیها در زبانهای مختلف برنامهنویسی و فرادادههای بیشتر است. پیادهسازیها را میتوان دوباره در پروژههای نرمافزاری دیگر (نرمافزارها یا اسکریپتهای خصوصی) استفاده کرد، بهصورت آنلاین فراخوانی یا اجرا کرد (تنها در یک مرورگر یا در محیط ابری یا دفتر یادداشتهای Jupyter[1] یا PAWS[2])، برای دستیابی به عملکردی پیچیدهتر ترکیب کرد، بررسی کرد یا بسیاری کارهای دیگر روی آنها انجام داد.
ویکیتابع پروژهای در روح ویکیپدیا، ویکیداده، ویکیواژه و سایر پروژهها است و امکان ایجاد و رسیدگی به کتابخانهای از توابع که میتوانند توسط هرکس و برای هر مقصودی مورد استفاده قرار گیرند را برای مشارکتکنندگان از سراسر جهان فراهم میکند. هر تابع میتواند از سوی چندین نفر در زبانهای مختلف برنامهنویسی پیادهسازی شود، موارد آزمایشی، پیشا و پسا شرایط، توضیحات، فراداده در قالب تخمین زمان اجرا و تضمین پیچیدگی برای پیادهسازیهای مختلف و غیره پشتیبانی شود. کاربران میتوانند یک تابع را بصورت مستقیم بر روی وبگاه یا از درون کد یا نرمافزار خودشان، از یک واسط خط فرمان یا از یک نرمافزار محلی فراخوانی کنند. این تابع را میتوان بهطور محلی در یک مرورگر، در فضای ابری یا بهطور محلی اجرا کرد و در درون نرمافزار کاربر تعبیه کرد.
ویکیتابع به این منظور ابداع شده تا یک فهرست تعریفشدهٔ مناسب از توابع که قابل استفادهٔ مجدد بهطور گسترده هستند و نیز محیطی که توابع در آن بهسرعت قابل ترکیب و اجرا هستند را ایجاد کند. ویکیتابع، علاوه بر کاربران نهایی که میتوانند در صورت نیاز یک تابع را بهشکل کنونی که تنها بهواسطهٔ پوششی نابرابر از طریق وبگاههای خاص که معمولاً در قالب وبگاههای دههٔ ۱۹۹۰ با جاوا اپلت در دسترس هستند، فراخوانی کنند، بر آسانتر کردن زندگی برای توسعهدهندگانی متمرکز است که میتوانند بر این مخزن مانند هر کتابخانهٔ بیرونی دیگری تکیه کنند.
تمامی توابع خالص هستند تا اجرای تمرینی امن را ممکن سازند. علاوه بر این، هر پیادهسازی را میتواند با فرادادهها گزارمان شود و بهشکل رمزنگاریشده، امضا شود. کاربران نهایی میتوانند بسته به منابع سختافزاری که در دسترس دارند و تنظیمات تنظیمات وب اعتماد، پیادهسازی هر یک از توابع را برای استفاده انتخاب کرده و به آن رسیدگی کنند.
ویکیتابع نهتنها دسترسی آسان به پایگاههای دانش بزرگی مانند ویکیداده، بلکه دسترسی به پروندههای ورودی و خروجی دودویی را ممکن میکند. بارگذاری یک تصویر بهعنوان یک پروندهٔ ورودی و بازگشت نتایج آنالیز مانند این که چهچیزی در تصویر نمایان است یا این که چند رنگ مختلف در تصویر به کار رفتهاست – یا یک باینری متفاوت، مثلاً در یک فرمت متفاوت، کاملاً ممکن است. این قابلیت برای گردش کارها در ویکیانبار در دسترس قرار خواهد گرفت.
Wikifunctions continues the tradition of moving more computation, which has usually happened on the command line or with apps by more computer-savvy users, to the Web and democratizing access to functionality that was not available before. At the same time, it will increase the productivity of developers everywhere, as they can just use a large library of code instead of relying on copying and pasting answers from sites like StackOverflow.
Unlike in Wikipedia, contributors will mostly create new implementations for a function instead of updating existing functions. The implementations can be automatically tested against the given tests, against each other, and further analyzed.
Implementations can be written in a number of different programming languages, but they will be able to call functions implemented in other programming languages. The execution engine can smoothly (although not necessarily with the highest possible performance) operate in different languages. Although in most cases there is a large performance boost in composing functions within a single programming language, there is no requirement to do so. In many cases, the speed of development and the developer's time will be more valuable than the additional computer cycles spent in the execution engine.