Привіт, Хабре! Представляю вашій увазі переклад посту Стівена Вольфрама
Передумови спроможності мови Wolfram
Сьогодні ми стоїмо на порозі великих звершень разом із мовою програмування
Репозиторій функцій (Function Repository) Wolfram це те, що стало можливим завдяки унікальній специфіці Wolfram Language не тільки як мови програмування, але і як
Наприклад, вже зараз у репозиторії функцій Wolfram міститься
Аналогічно більш ніж
Для переходу на сторінку скопіюйте наведений вище об'єкт (функціональний BLOB), вставте його в рядок введення та потім запустіть функцію – вона вже вбудована у мову Wolfram і підтримується за замовчуванням, починаючи з
Тут слід зазначити, що при обробці
Сподіваюся, що за підтримки
Всередині функцій з репозиторію можуть бути невеликі або об'ємні фрагменти коду, написаного мовою Wolfram Language. Наприклад, це можуть бути виклики
Оболонка та програмна структура репозиторію функцій Wolfram налаштовані таким чином, щоб кожен міг зробити свій внесок у загальну справу максимально простим і зручним для нього шляхом — по суті, просто
У цьому підході існує безліч компромісів і деталей, але наша мета полягає в тому, щоб оптимізувати репозиторій функцій Wolfram як для зручності користувачів, так і для того, щоб нові функції користувачів давали відчутний внесок у розвиток мови. У міру зростання, я не сумніваюся, що нам доведеться винаходити нові методи обробки та перевірки функцій, що вбудовуються в репозиторій, і це не в останню чергу для організації великої кількості функцій і пошуку тих, які потрібні користувачам. Однак, не може не обнадіювати те, що вибраний нами шлях — це добрий початок. Я власноруч
Підвищення ефективності при зниженні витрат
Ще до появи Інтернету існували способи обмінюватися кодом Wolfram Language (нашим першим великим централізованим проектом був
Більше 30 років наша компанія старанно працювала над підтримкою цілісності структури мови Wolfram, і це дуже важливо для того, щоб мова Wolfram стала не просто мовою програмування, а й
У структурі кожної функції відбуваються різні обчислювальні процеси. Тут слід зазначити, що при цьому необхідно, щоб для користувача функція мала чіткий та одноманітний вигляд та наочну читаність. У цьому контексті вбудовані функції мови Wolfram Language представлені більш ніж 6000 послідовних прикладів того, як слід правильно програмувати функції (це наші
Створення репозиторію, який би справді добре працював, є цікавим завданням мета-програмування. Наприклад, надлишок обмежень у програмі не зможе дозволити отримати необхідну уніфікацію та універсальність роботи алгоритму. Так само, як і за недостатньої кількості функціональних обмежень Ви не зможете реалізувати досить правильну послідовність виконання алгоритму. Декілька попередніх прикладів реалізації компромісу даних підходів, реалізованих нашою компанією, спрацювали досить стабільно — це:
Всі перелічені вище приклади мають принципову особливість — об'єкти, що збираються в проект, і функції мають дуже високий ступінь структурування і розподілу процесів. Безумовно, деталізація структури того, що є демонстрацією чи нейронною мережею чи чимось іншим, можуть дуже відрізнятися, але фундаментальна структура для будь-якого поточного репозиторію завжди залишається незмінною. Так яка ж ваша думка, шановний користувач, щодо створення такого репозиторію, який додає розширення до мови Wolfram? Мова Wolfram Language спроектована таким чином, щоб бути надзвичайно гнучкою, тому її можна розширювати та видозмінювати будь-яким способом. Ця обставина є надзвичайно важливою для можливості швидко створювати різноманітні великомасштабні програмні проекти мовою Wolfram Language. Тут слід зазначити, що зі зростанням гнучкості мови неминуче зросте і вартість проектів, що реалізуються такою мовою. Це відбувається через те, що чим більше користувач застосовує таку мову, тим більше він отримує виділеної функціональності, але не слід забувати, що даний підхід може мати і негативні сторони щодо неможливості забезпечення послідовної узгодженості програмних модулів.
У традиційних мовах програмування існує поширена проблема з бібліотеками — якщо Ви, наприклад, використовуєте одну бібліотеку, код працює коректно, але, якщо Ви спробуєте використовувати декілька бібліотек, немає гарантії, що вони коректно взаємодіятимуть один з одним. Також у традиційних мовах програмування - на відміну від повноцінної мови обчислень - відсутні можливості гарантовано контролювати наявність узгоджених вбудованих уявлень для будь-яких функцій або типів даних, крім їх базових структур. Але, по суті, проблема ще більша, ніж на перший погляд: якщо хтось будує великомасштабну вертикаль функціональності, то без величезних витрат по централізованому програмуванню проекту, які ми вклали в мову Wolfram, неможливо досягти узгодженості. Тому важливим є те, щоб усі програмні модулі завжди коректно працювали спільно.
Таким чином, ідея репозиторію функцій Wolfram полягає в тому, щоб уникнути проблеми, озвученої вище - просто додаючи розширення до мови у вигляді порівняно невеликих елементів програмного коду за допомогою окремих функцій, розробка яких у вигляді узгоджених модулів є більш простим завданням. При цьому існують особливості програмування, які неможливо зробити зручними за допомогою окремих функцій (і наша компанія найближчим часом збирається випустити оптимізований програмний алгоритм для допомоги у реалізації великомасштабних програмних пакетів). Однак, на базі вже вбудованих у мову Wolfram Language функцій існує безліч можливостей для програмування, які реалізовані на базі окремих функцій. Тут думка полягає в тому, щоб при порівняно невеликих програмних зусиллях можна було створити низку нових і дуже корисних функцій, які забезпечать достатню узгодженість проекту, при цьому вони будуть добре узгоджені один з одним, а також, крім того, вони матимуть можливість легко і широко використовуватися у мові надалі.
Цей підхід, безумовно, є компромісом. За умови реалізації масштабнішого пакету можна уявити собі зовсім новий світ функціональності, який стане надзвичайно потужним і корисним. Якщо існує необхідність отримувати нові функціональні можливості, які будуть вписуватися в інше, але при цьому Ви не готові витрачати величезні зусилля на розробку проекту, це, на жаль, може призвести до зниження масштабу Вашого проекту. Ідея репозиторію функцій Wolfram полягає в тому, щоб забезпечити функціональністю визначальну частину проекту, даний підхід дозволить додати потужний функціонал, водночас спрощуючи підтримку хорошої узгодженості проекту програмування.
Допомога при додаванні функцій користувача в репозиторій функцій
Фахівці нашої компанії наполегливо працювали над тим, щоб зробити свій внесок у функції репозиторію Wolfram досить легким для користувачів. На робочому столі (вже в
Існують дві основні дії, які Ви повинні виконати: по-перше, фактично записати код Вашої функції і, по-друге, записати документацію, що ілюструє, як має працювати Ваша функція.
Натисніть кнопку «Відкрити зразок», щоб побачити приклад того, що Вам потрібно зробити:
Фактично Ви намагаєтеся створити щось схоже на вбудовану функцію в мові Wolfram Language. За винятком того, що вона може робити щось набагато конкретніше, ніж вбудована функція. При цьому очікування щодо її повноти та надійності будуть набагато нижчими.
Вам необхідно задати ім'я для Вашої функції, яке відповідатиме принципам іменування функцій Wolfram Language. Крім цього, Вам знадобиться розробити документацію для Вашої функції, за аналогією з вбудованими функціями мови. Докладніше я розповім про це пізніше. Зараз просто зверніть увагу на те, що в ряді кнопок у верхній частині файлу блокнота визначень є кнопка
Коли Ви переконаєтесь, що все заповнено належним чином і Ви готові, натисніть кнопку Check (Перевірити). Цілком нормальним є те, що Ви ще не розібралися у всіх деталях. Тому функція Check буде автоматично виконуватися і робити багато перевірок стилю та узгодженості. Часто вона відразу ж запропонує Вам підтвердити і прийняти виправлення (Наприклад: «Цей рядок має закінчуватися двокрапкою», і він запропонує ввести двокрапку). Іноді вона попросить Вас додати чи змінити щось самостійно. Ми постійно додаватимемо нові можливості до автоматичної функціональності кнопки «Check», але в основному його мета полягає в тому, щоб гарантувати — все, що ви відправляєте до репозиторій функцій, вже точно відповідає якомога більшій кількості рекомендацій щодо стилю
Отже, після запуску Check ви можете використовувати Preview (Перегляд). "Preview" створює попередній перегляд сторінки документації, яку Ви визначили для своєї функції. Ви також можете створити попередній перегляд для файлу, створеного на Вашому комп'ютері або файлу, що знаходиться в хмарному сховищі. Якщо Вас, з якихось причин, не влаштовує те, що Ви побачите в попередньому перегляді, просто поверніться назад і виконайте необхідні виправлення, а потім натисніть кнопку Preview.
Тепер Ви готові розмістити свою функцію у репозиторії. Кнопка Deploy надає Вам чотири варіанти дій:
На цьому кроці важливим є те, що Ви можете відправити свою функцію до репозиторій функцій Wolfram, щоб вона була доступна будь-якому користувачеві. При цьому Ви також можете розмістити свою функцію для обмеженої кількості користувачів. Наприклад, Ви можете створити функцію, розміщену локально на Вашому комп'ютері, таким чином, щоб вона була доступна, коли Ви використовуєте цей конкретний комп'ютер. Або Ви можете розмістити її у своїй
Отже, скажімо, Ви хочете фактично передати свою функцію в базу знань функцій Wolfram. Для цього Ви натискаєте кнопку «Надіслати» до репозиторію. То що тоді відбувається в даний момент? Ваша заявка відразу ж потрапляє в чергу для розгляду та затвердження нашою спеціальною командою кураторів.
У міру того, як Ваша заявка проходить через процес узгодження (який зазвичай займає кілька днів), Ви отримуватимете повідомлення про стан її розгляду, а також, можливо, пропозиції щодо її подальшого використання. Але як тільки вашу функцію буде схвалено, вона буде негайно опублікована в репозиторії функцій Wolfram і стане доступною для будь-якого використання. (І це буде відображатися в
Що ж має бути у сховищі?
Слід зазначити, що в нашій компанії дуже високі стандарти повноти, надійності та загальної якості, з 6000+ функцій, які ми вже вбудували в мову Wolfram за останні 30 з лишком років, всі відповідають вищезазначеним вимогам. Мета репозиторію функцій Wolfram полягає в тому, щоб використовувати всю структуру та функціональні можливості, які вже існують у мові Wolfram Language, для того, щоб додати якомога більше набагато легших функцій (тобто функцій з більш високою продуктивністю).
Безумовно, функції в репозиторії функцій Wolfram повинні відповідати принципам розробки мови Wolfram Language — щоб вони могли повноцінно взаємодіяти з іншими функціями та очікуваннями користувачів щодо того, як функції слід правильно працювати. Однак, при цьому функції не повинні мати однакову повноту або надійність.
У вбудованих функціях мови Wolfram, ми працюємо над тим, щоб зробити програмні функції якомога загальнішими. При цьому при знаходженні в репозиторії функцій Wolfram немає нічого поганого в тому, щоб у нього потрапила функція, яка просто обробляє дуже конкретний, але корисний випадок. Наприклад, функція
Ще одним моментом, пов'язаним із вбудованими функціями, є те, що наша компанія докладає всіх зусиль для обробки всіх нетипових випадків, для правильної обробки некоректного введення тощо. У репозиторії функцій абсолютно нормальним є випадок, коли у ньому існує спеціальна функція, яка обробляє основні випадки розв'язання задачі та ігнорує всі інші.
Очевидним є той факт, що краще мати функції, які роблять більше, і роблять це краще, але оптимізація для репозиторію функцій – на відміну від вбудованих функцій мови Wolfram – повинна мати більше функцій, перев'язаних з великою кількістю функцій, ніж заглиблюватися у процеси реалізації кожної конкретної функції.
Тепер розглянемо приклад тестування функцій в репозиторії. Очікування узгодженості для таких функцій, природно, набагато нижчі, ніж для вбудованих функцій мови. Це особливо актуально у випадках, коли функції залежать від зовнішніх ресурсів, таких як API, важливо постійно проводити послідовні тести, що автоматично відбувається всередині алгоритмів перевірки. У файлі nb ви можете явно вказати визначення (у розділі «Додаткова інформація») та задати стільки тестів, що визначаються або рядками введення та виведення, або повними символьними об'єктами типу
У результаті репозиторії функцій буде низку складнощів реалізації. Деякі будуть просто одним рядком коду, інші можуть включати тисячі або десятки тисяч рядків, можливо з використанням безлічі допоміжних функцій. У яких випадках варто додати функцію, визначення якої потрібно дуже мало коду? В принципі якщо для функції є
Основна мета репозиторію функцій (як випливає з його назви) полягає в тому, щоб вводити у функціонал мови нові функції. Якщо Ви хочете додати нові дані або
Насправді є два шляхи. Можливо, ви захочете ввести новий тип об'єкта, який буде використовуватися в нових функціях репозиторії функцій. І в цьому випадку Ви завжди можете просто записати його символьне уявлення та використовувати його при введенні або виведенні функцій у репозиторії функцій.
Але що робити, якщо ви хочете представити об'єкт, а потім визначити, через існуючі функції в мові Wolfram Language, які повинні працювати разом з ним? Для цього Wolfram Language завжди мав легкий механізм, який називається
Отже, що може бути в коді функцій в репозиторії функцій?
Чи повинен весь код для репозиторію функцій Wolfram бути написаний мовою Wolfram? Визначено, що код всередині зовнішнього API не повинен бути написаний мовою Wolfram, що власне навіть не робить код мови. Насправді, якщо Ви знайдете функцію практично будь-якою зовнішньою мовою або бібліотекою, ви зможете створити оболонку, яка дозволить використовувати її в репозиторії функцій Wolfram. (Зазвичай для цього слід використовувати вбудовані функції
То який же сенс робити це? Це дозволяє використовувати всю інтегровану систему Wolfram Language і весь її уніфікований набір програмних можливостей. Якщо Ви отримуєте базову реалізацію із зовнішньої бібліотеки або мови, то Ви можете використовувати багату символьну структуру мови Wolfram Language для створення зручної функції верхнього рівня, яка дозволяє користувачам досить легко використовувати будь-яку вже реалізовану функціональність. Принаймні це повинно мати можливість реалізації в ідеальному світі, де існують всі складові елементи завантаження бібліотек і т.п., в даному випадку вони автоматично вирішуватимуться за допомогою Wolfram Language. (Слід зазначити, що на практиці можуть виникнути проблеми з
До речі, коли ви вперше аналізуєте типові зовнішні бібліотеки, вони часто здаються занадто складними, щоб їх можна було охопити лише кількома функціями, але в багатьох випадках більша частина складності виникає через створення інфраструктури, необхідної для бібліотеки, та всіх функцій для її підтримки . Однак при використанні мови Wolfram Language, інфраструктура, як правило, вже вбудована в пакети, і тому не потрібно докладно розкривати всі ці функції підтримки, а потрібно лише створити функції для кількох найвищих функцій, орієнтованих на додаток в бібліотеці.
"Екосистема" бази знань
Якщо Ви написали функції, які використовуєте постійно, надішліть їх до репозиторій функцій Wolfram! Якщо з цього в результаті не вийде щось більше (розвиток мови), то тоді Вам буде набагато зручніше використовувати функції для особистого користування. Однак логічно припустити, що, якщо Ви використовуєте функції постійно, можливо, й інші користувачі також знайдуть їх корисними.
Природно, що Ви можете опинитися в ситуації, коли ви не маєте можливості чи не хочете ділитися своїми функціями або у разі отримання доступу до приватних інформаційних ресурсів. Навіть у таких випадках Ви можете просто розгорнути функції у своєму власному обліковому записі в хмарі,
Функції, які Ви надсилаєте до репозиторій функцій Wolfram, не обов'язково мають бути ідеальними; вони просто мають бути корисними. Це трохи схоже на розділ «Помилки» у класичній документації Unix — у «Розділі визначень» є розділ «Нотатки автора», в якому Ви можете описати обмеження, проблеми тощо, про які Ви вже знаєте про свою функцію. Крім того, коли ви надсилаєте свою функцію до репозиторій, Ви можете додати примітки до відправки, які будуть прочитані спеціальною командою кураторів.
Після публікації функції її сторінка має дві посилання внизу: «
Іноді виникає необхідність просто використовувати функції з репозиторію функцій Wolfram, наприклад, вбудовані функції, не заглядаючи в їх код. Однак, якщо ви хочете «заглянути всередину», у верхній частині завжди є кнопка «Блокнот». Натисніть на неї і Ви отримаєте власну копію оригінального зошита визначення, яка була відправлена до репозиторій функцій. Іноді Ви можете просто використовувати її як приклад для своїх потреб. При цьому Ви також можете розробити власну модифікацію цієї функції. Можливо, Ви захочете розмістити ці знайдені Вами функції з репозиторію на своєму комп'ютері або у своєму обліковому записі у Вашому хмарному сховищі попелиці, можливо, Ви захочете відправити їх до бази знань функцій, можливо, як покращена, доповнена версія початкової функції.
У майбутньому ми плануємо підтримувати розгалуження в стилі Git для репозиторіїв функцій, але зараз ми намагаємося зробити це простіше, і ми завжди маємо лише одну загальноприйняту версію кожної функції, вбудованої в мову. Найчастіше (якщо розробники не відмовляються від підтримки розроблених ними функцій та відповідають на повідомлення користувачів), первісний автор функції отримує контроль над оновленнями до неї та відправляє нові версії, які потім перевіряються і, якщо проходять процес перевірки, публікуються у мові.
Розглянемо питання, як працює "версійність" розроблених функцій. Прямо зараз, коли Ви використовуєте функцію з репозиторію функцій, її визначення постійно зберігатиметься на вашому комп'ютері (або у вашому хмарному обліковому записі, якщо ви використовуєте хмару). Якщо з'явилася нова версія функції, то при наступному її використанні ви отримаєте повідомлення, яке сповіщає про це. І якщо ви хочете оновити функцію до нової версії, ви можете зробити це за допомогою команди
Однією з чудових особливостей репозиторію функцій Wolfram є те, що будь-яка програма Wolfram Language у будь-якому місці може використовувати функції з нього. Якщо програма з'являється в блокноті, часто буває зручно відформатувати функції репозиторію у вигляді функцій «функціональних двійкових об'єктів, що легко читаються» (можливо, з відповідним набором версій).
Ви завжди можете звернутися до будь-якої функції репозиторію функцій, використовуючи текстову
Як це працює?
Усередині функцій у репозиторії Wolfram це можливо з використанням такої самої
Розглянемо
Усередині Ви можете побачити деяку інформацію за допомогою функції
Як працює налаштування функції ресурсу? Найпростіший - це суто локальний випадок. Ось приклад, який бере функцію (у разі просто чисту функцію) і визначає її як функцію ресурсу для даного сеансу роботи у програмі:
Після того, як Ви зробили визначення, ви можете використовувати функцію ресурсу:
Зверніть увагу, що в цьому об'єкті BLOB функції є чорний значок . Це означає, що функція BLOB відноситься до функції ресурсів у пам'яті, визначеної для поточного сеансу. Для функції ресурсу, яка постійно зберігається на Вашому комп'ютері або у хмарному обліковому записі, є сірий значок . А для офіційної функції ресурсу у репозиторії функцій Wolfram є помаранчевий значок .
Отже, що відбувається, коли ви використовуєте меню "Розгортання" у блокноті визначення? По-перше, він бере всі визначення у блокноті і з них створює символьний
Локальне розгортання функції з репозиторію на комп'ютері виконується за допомогою команди
Якщо натиснути кнопку Submit для Function Repository, то під ним відбувається
За замовчуванням надсилання виконується під іменем, пов'язаним з ідентифікатором Wolfram ID. Але якщо ви надсилаєте заявку від імені групи розробників або організації, Ви можете
Після того, як Ви відправили будь-яку Вашу функцію до бази знань функцій, вона потрапить у чергу на перевірку. Якщо Ви отримаєте коментарі у відповідь, вони зазвичай будуть у формі текстового файлу з доданими додатковими комірками коментарів. Ви завжди можете перевірити статус своєї заявки, зайшовши на
Деякі тонкощі у роботі
На перший погляд може скластися враження, що можна просто взяти блокнот визначення і дослівно помістити його в репозиторій функцій, проте насправді є досить багато тонкощів — і для їх обробки потрібно виконати досить складне мета-програмування, символьне обробляючи як код, що визначає функцію , і сам Блокнот визначення. Більшість цього відбувається всередині, тобто «за кадром», але це може мати деякі наслідки, які варто зрозуміти, якщо Ви збираєтеся зробити свій внесок у базу знань функцій.
Перша безпосередня тонкість: Коли Ви заповнюєте Блокування визначень, Ви можете просто посилатися на свою функцію скрізь, використовуючи ім'я, подібне MyFunction, що виглядає як звичайне ім'я для функції в мові Wolfram Language, але для документації репозиторія функцій це замінюється
Друга тонкість: коли ви створюєте функцію ресурсу з Блокнота визначення, всі залежності, залучені до визначення функції, повинні бути зафіксовані і явно включені. Однак, щоб гарантувати, що визначення залишаються модульними, потрібно помістити все в унікальне
Зазвичай, Ви ніколи не побачите жодних слідів роботи коду, який використовується для налаштування цього простору імен. Але якщо з якоїсь причини Ви викликаєте недовиконаний символ усередині вашої функції, то побачите, що цей символ знаходиться у внутрішньому контексті функції. Однак при обробці Блокнота визначення, щонайменше, символ, що відповідає самій функції,
Репозиторій функцій призначений визначення нових функцій. І ці функції можуть мати настройки. Часто ці параметри (наприклад,
Більшість функцій просто роблять те, що вони мають робити щоразу, коли їх викликають, але деякі функції потребують ініціалізації, перш ніж вони зможуть працювати у певному сеансі — і для вирішення цієї проблеми у розділі «Визначення» є розділ «Ініціалізація».
Функції з репозиторію можуть використовувати інші функції, які вже знаходяться в репозиторії, для того щоб налаштувати визначення для репозиторію функцій, що включають дві (або більше) функції, які посилаються одна на одну, необхідно розгорнути їх у своєму сеансі роботи з програмою, щоб Ви могли посилатися на них як
Перспективи розвитку. Що має статися, коли репозиторій стане по-справжньому більшим?
Сьогодні ми тільки запускаємо репозиторій функцій Wolfram, але з часом ми очікуємо, що він (видалити) його обсяг і функціональність може різко зрости, і в міру його зростання розвитку виникнуть з'являться різні проблеми, які, як ми вже здогадуємося, можуть виникнути.
Перша проблема стосується імен функцій та їхньої унікальності. Репозиторій функцій спроектований таким чином, що в ньому, як і для вбудованих функцій у мові Wolfram Language, можна посилатися на будь-яку цю функцію, просто вказавши її ім'я. Але це неминуче означає, що імена функцій мають бути глобально унікальними по всьому репозиторію, отже, наприклад, у репозиторії може лише одна
На перший погляд, це може здатися великою проблемою, але варто розуміти, що це в основному та сама проблема, що і для таких речей, як інтернет-домени або маркери соціальних мереж. І річ у тому, що в системі просто необхідно мати реєстратора — і це одна з ролей, яку наша компанія виконуватиме для бази знань функції Wolfram. (Для приватних версій репозиторію їх реєстраторами можуть бути адміністратори.) Звичайно, інтернет-домен може бути зареєстрований, не маючи нічого на ньому, але в репозиторії функцій ім'я функції може бути зареєстроване лише за фактичного визначення функції.
Частиною нашої ролі в управлінні базою знань функцій Wolfram є забезпечення того, щоб ім'я, обране для функції, було логічним з урахуванням визначення функції, а також, щоб воно відповідало угодам про імена Wolfram Language. У нас вже більше 30 років досвіду з іменування вбудованих функцій мовою Wolfram Language, і наша команда курування (кураторів?) перенесе цей досвід також до репозиторій функцій. Безперечно, завжди є винятки. Наприклад, може здатися кращим мати коротке ім'я для деякої функції, але краще «захищатися» з довшим, конкретнішим ім'ям, тому що при цьому менше шансів зіткнутися з тим, що хтось хоче зробити схоже ім'я функції в майбутньому.
(Тут слід зазначити, що просте додавання будь-якого тега учасника для усунення неоднозначності функцій не принесе очікуваного ефекту. Тому що, якщо не наполягати на тому, щоб завжди присвоювався тег, потрібно буде визначати тег за промовчанням для будь-якої заданої функції, а також виділяти теги автора, що знову вимагатиме глобальної координації.)
У міру зростання обсягу бази знань функцій Wolfram одна з проблем, які, напевно, виникнуть - це виявленість функцій, для цього в системі передбачена
Для вбудованих функцій у мові Wolfram Language існує так званий рівень виявлення, що забезпечується
Репозиторій функцій Wolfram налаштований як постійне сховище функцій, де будь-яка функція завжди буде працювати. Безумовно, можуть з'явитися і нові версії функцій, і ми очікуємо, що деякі функції згодом, звичайно, застаріють. Функції будуть працювати, якщо вони використовуються в програмах, але їх сторінки документації будуть посилатися на нові, більш сучасні функції.
Репозиторій функцій Wolfram призначений для швидкого отримання нових функцій та вивчення нових можливостей використання мови Wolfram. З великою часткою оптимізму ми сподіваємося, що частина того, що було досліджено в репозиторії функцій, зрештою матиме сенс стати вбудованими частинами основної мови Wolfram Language. За останнє десятиліття ми мали схожий набір
Тут найголовніше те, що функція в репозиторії функцій це те, що доступно кожному користувачеві для використання прямо зараз. Можливо, вбудована функція мови може бути набагато кращою та продуктивнішою, але репозиторій функцій дозволить користувачам одразу отримати доступ до всіх нових функцій. І, що особливо важливо, ця концепція дозволяє кожному додавати будь-які нові функції.
Раніше в історії мови Wolfram ця ідея не заробила б так добре, як зараз, але на даному етапі в мову вже закладено стільки зусиль, а також настільки глибоке розуміння принципів проектування мови, що тепер бачиться вельми можливим, щоб велике співтовариство користувачів додавало функції, які будуть підтримувати узгодженість проекту, щоб зробити їх корисними для широкого кола користувачів.
У спільноті користувачів Wolfram Language є неймовірний дух таланту(?). (Зрозуміло, до цієї спільноти входять багато провідних фахівців у галузі досліджень і розробок у різних областях.) Сподіваюся, що репозиторій функцій Wolfram надасть ефективну платформу для розкриття та поширення цього духу таланту. Тільки разом ми зможемо створити щось, що значно розширить область, до якої можна застосувати обчислювальну парадигму мови Wolfram.
За 30 з лишком років ми пройшли довгий шлях мовою Wolfram. Тепер разом, давайте підемо ще далі. Наполегливо закликаю всіх шанованих користувачів мови Wolfram у всьому світі, використовувати як платформу для цього функціональний репозиторій, а також новий програмний проект, як Free Wolfram Engine для розробників.
Джерело: habr.com