Witaj, Habro! Zwracam uwagę na tłumaczenie wpisu Stephena Wolframa
Warunki wstępne spójności języka Wolfram
Dziś stoimy u progu wielkich osiągnięć razem z językiem programowania
Repozytorium funkcji Wolfram jest możliwe dzięki wyjątkowej naturze języka Wolfram nie tylko jako języka programowania, ale także jako
Na przykład repozytorium funkcji Wolfram już zawiera
Podobnie więcej niż
Aby dostać się na stronę należy skopiować powyższy obiekt (funkcja BLOB), wkleić go do linii wejściowej i następnie uruchomić funkcję - jest ona już wbudowana w język Wolfram i domyślnie obsługiwana zaczynając od
Należy tutaj zauważyć, że podczas przetwarzania
Mam nadzieję, że przy wsparciu
Funkcje z repozytorium mogą zawierać małe lub duże fragmenty kodu napisane w języku Wolfram. Mogą to być na przykład połączenia
Powłoka i struktura programowa repozytorium funkcji Wolfram zostały zaprojektowane tak, aby każdy mógł przyczynić się do wspólnej sprawy w najprostszy i najwygodniejszy dla siebie sposób - w rzeczywistości po prostu
W tym podejściu istnieje wiele kompromisów i szczegółów, ale naszym celem jest optymalizacja repozytorium funkcji Wolfram zarówno pod kątem wygody użytkownika, jak i zapewnienia, że nowe funkcje użytkownika znacząco przyczynią się do rozwoju języka. Nie mam wątpliwości, że w miarę rozwoju będziemy musieli wynaleźć nowe metody obsługi i sprawdzania poprawności funkcji wbudowanych w repozytorium, zwłaszcza w zakresie organizowania dużej liczby funkcji i znajdowania tych, których potrzebują użytkownicy. Pocieszające jest jednak to, że droga, którą wybraliśmy, to dobry początek. ja osobiście
Zwiększenie wydajności przy jednoczesnej redukcji kosztów
Jeszcze przed pojawieniem się Internetu istniały sposoby udostępniania kodu języka Wolfram (naszym pierwszym dużym scentralizowanym projektem był
Od ponad 30 lat nasza firma pilnie pracuje nad utrzymaniem integralności struktury języka Wolfram, co ma kluczowe znaczenie dla zapewnienia, że język Wolfram stanie się nie tylko językiem programowania, ale także językiem
W strukturze implementacyjnej każdej funkcji zachodzą różne procesy obliczeniowe. Należy w tym miejscu zaznaczyć, że konieczne jest, aby funkcja miała przejrzysty i jednolity wygląd oraz czytelność wizualną dla użytkownika. W tym kontekście wbudowane funkcje języka Wolfram zostały zaprezentowane z ponad 6000 kolejnych przykładów prawidłowego programowania funkcji (to są nasze
Stworzenie repozytorium, które faktycznie działa dobrze, jest interesującym zadaniem metaprogramowania. Przykładowo nadmiar ograniczeń w programie nie pozwoli na uzyskanie wymaganej unifikacji i uniwersalności algorytmu. Podobnie jak w przypadku niewystarczającej liczby ograniczeń funkcjonalnych, tak i tak nie uda się zaimplementować dostatecznie poprawnej sekwencji wykonania algorytmu. Kilka wcześniejszych przykładów wdrożenia kompromisu tych podejść, wdrożonych przez naszą firmę, sprawdziło się w miarę stabilnie - są to:
Wszystkie powyższe przykłady mają zasadniczą cechę – zebrane w projekcie obiekty i funkcje charakteryzują się bardzo wysokim stopniem uporządkowania i rozkładu procesów. Oczywiście szczegóły struktury wersji demonstracyjnej, sieci neuronowej lub czegoś innego mogą się znacznie różnić, ale podstawowa struktura każdego bieżącego repozytorium zawsze pozostaje taka sama. Jaka jest więc Twoja opinia, drogi użytkowniku, na temat stworzenia takiego repozytorium, które dodaje rozszerzenia do języka Wolfram? Język Wolfram został zaprojektowany tak, aby był niezwykle elastyczny, dzięki czemu można go w dowolny sposób rozszerzać i modyfikować. Ta okoliczność jest niezwykle ważna dla możliwości szybkiego tworzenia różnych projektów oprogramowania na dużą skalę w języku Wolfram. Należy w tym miejscu zaznaczyć, że wraz ze wzrostem elastyczności języka, koszt projektów realizowanych w takim języku nieuchronnie będzie rósł. Wynika to z faktu, że im częściej użytkownik korzysta z takiego języka, tym bardziej dedykowaną funkcjonalność otrzymuje, jednak nie należy zapominać, że takie podejście może mieć również negatywne strony w postaci niemożności zapewnienia spójnej spójności modułów programu.
Z bibliotekami w tradycyjnych językach programowania jest częsty problem – jeśli użyjesz np. jednej biblioteki, kod będzie działał poprawnie, natomiast jeśli spróbujesz użyć wielu bibliotek, to nie ma gwarancji, że będą one poprawnie ze sobą współdziałać . Ponadto w tradycyjnych językach programowania – w przeciwieństwie do pełnoprawnego języka obliczeniowego – nie ma możliwości zagwarantowania obecności spójnych wbudowanych reprezentacji jakichkolwiek funkcji lub typów danych innych niż ich podstawowe struktury. Ale w rzeczywistości problem jest jeszcze większy, niż się wydaje na pierwszy rzut oka: jeśli buduje się pion funkcjonalności na dużą skalę, to bez ogromnych kosztów scentralizowanego programowania projektów, które wkładamy w język Wolfram, nie da się tego zrobić osiągnąć spójność. Dlatego ważne jest, aby wszystkie moduły oprogramowania zawsze poprawnie ze sobą współpracowały.
Zatem ideą repozytorium funkcji Wolfram jest uniknięcie problemu opisanego powyżej poprzez proste dodanie rozszerzeń języka w stosunkowo małych fragmentach kodu za pośrednictwem indywidualnych funkcji, które łatwiej jest rozwijać jako spójne moduły. Biorąc to pod uwagę, istnieją funkcje programowania, których nie można zapewnić w sposób wygodny przy użyciu poszczególnych funkcji (a nasza firma planuje w najbliższej przyszłości wypuścić zoptymalizowany algorytm programowania, który pomoże we wdrażaniu pakietów oprogramowania na dużą skalę). Jednak w oparciu o funkcje już wbudowane w język Wolfram istnieje wiele możliwości programowania, które są realizowane w oparciu o indywidualne funkcje. Pomysł jest taki, że przy stosunkowo niewielkim wysiłku programistycznym można stworzyć szereg nowych i bardzo przydatnych funkcji, które zapewnią projektowi wystarczającą spójność, będą ze sobą dobrze skoordynowane, a ponadto będą będą mogły być w przyszłości łatwo i szeroko stosowane w tym języku.
Takie podejście jest oczywiście kompromisem. Gdyby zaimplementowano większy pakiet, można by sobie wyobrazić zupełnie nowy świat funkcjonalności, który byłby niezwykle potężny i użyteczny. Jeśli istnieje potrzeba uzyskania nowej funkcjonalności, która będzie pasować do wszystkiego innego, ale nie chcesz wkładać dużego wysiłku w rozwój projektu, może to niestety prowadzić do zmniejszenia zakresu Twojego projektu. Ideą repozytorium funkcji Wolfram jest zapewnienie funkcjonalności określonej części projektu; takie podejście doda potężną funkcjonalność, jednocześnie ułatwiając utrzymanie dobrej spójności w projekcie programistycznym.
Pomoc w dodawaniu funkcji niestandardowych do repozytorium funkcji
Nasz zespół ciężko pracował, aby ułatwić użytkownikom współtworzenie funkcji repozytorium Wolfram. Na pulpicie (już w
Istnieją dwa główne kroki, które musisz wykonać: po pierwsze, zapisz kod swojej funkcji, a po drugie, zapisz dokumentację ilustrującą, jak powinna działać Twoja funkcja.
Kliknij przycisk „Otwórz próbkę” u góry, aby zobaczyć przykład czynności, które należy wykonać:
Zasadniczo próbujesz stworzyć coś podobnego do wbudowanej funkcji w języku Wolfram. Tyle że może zrobić coś znacznie bardziej szczegółowego niż funkcja wbudowana. Jednocześnie oczekiwania co do jego kompletności i niezawodności będą znacznie niższe.
Musisz nadać swojej funkcji nazwę zgodną z wytycznymi dotyczącymi nazewnictwa funkcji języka Wolfram. Ponadto będziesz musiał opracować dokumentację swojej funkcji, podobną do wbudowanych funkcji języka. Opowiem o tym bardziej szczegółowo później. Na razie zwróć uwagę, że w rzędzie przycisków u góry pliku notatnika definicji znajduje się przycisk
Kiedy już będziesz pewien, że wszystko zostało poprawnie wypełnione i jesteś gotowy, kliknij przycisk „Sprawdź”. To zupełnie normalne, że nie wymyśliłeś jeszcze wszystkich szczegółów. Zatem funkcja „Sprawdź” zostanie uruchomiona automatycznie i wykona wiele kontroli stylu i spójności. Często natychmiast wyświetli monit o potwierdzenie i zaakceptowanie poprawek (na przykład: „Ta linia musi kończyć się dwukropkiem” i poprosi o wprowadzenie dwukropka). Czasami poprosi Cię o samodzielne dodanie lub zmianę czegoś. Będziemy stale dodawać nowe funkcje do automatycznej funkcjonalności przycisku Sprawdź, ale zasadniczo jego celem jest upewnienie się, że wszystko, co przesyłasz do repozytorium funkcji, jest już ściśle zgodne z jak największą liczbą wytycznych dotyczących stylu
Tak więc po uruchomieniu „Sprawdź” możesz użyć „Podglądu”. „Podgląd” tworzy podgląd strony dokumentacji zdefiniowanej dla Twojej funkcji. Możesz także utworzyć podgląd pliku utworzonego na komputerze lub pliku znajdującego się w chmurze. Jeśli z jakiegoś powodu nie jesteś zadowolony z tego, co widzisz na podglądzie, po prostu wróć i dokonaj niezbędnych poprawek, a następnie ponownie kliknij przycisk Podgląd.
Teraz możesz już wypchnąć swoją funkcję do repozytorium. Przycisk Wdróż udostępnia cztery opcje:
Ważną rzeczą na tym etapie jest to, że możesz przesłać swoją funkcję do repozytorium funkcji Wolfram, aby była dostępna dla każdego. Jednocześnie możesz także umieścić swoją funkcję dla ograniczonej liczby użytkowników. Można na przykład utworzyć funkcję hostowaną lokalnie na komputerze, aby była dostępna podczas korzystania z tego konkretnego komputera. Możesz też opublikować to w swoim
Załóżmy, że chcesz faktycznie przesłać swoją funkcję do bazy wiedzy o funkcjach Wolfram. W tym celu klikasz przycisk „Prześlij” do repozytorium. Co więc dzieje się w tej chwili? Twoje zgłoszenie zostanie natychmiast umieszczone w kolejce do sprawdzenia i zatwierdzenia przez nasz oddany zespół kuratorów.
W miarę postępów procesu zatwierdzania Twojego wniosku (który zwykle trwa kilka dni) będziesz otrzymywać powiadomienia dotyczące jego statusu i ewentualne sugestie dotyczące przyszłego wykorzystania. Jednak gdy funkcja zostanie zatwierdzona, zostanie ona natychmiast opublikowana w repozytorium funkcji Wolfram i będzie dostępna dla każdego. (I to pojawi się w
Co powinno znaleźć się w magazynie?
Należy zauważyć, że nasza firma ma bardzo wysokie standardy dotyczące kompletności, niezawodności i ogólnej jakości, a spośród ponad 6000 funkcji, które wbudowaliśmy już w język Wolfram w ciągu ostatnich 30 lat, wszystkie spełniają powyższe wymagania. Celem repozytorium funkcji Wolfram jest wykorzystanie całej struktury i funkcjonalności, która już istnieje w języku Wolfram, aby dodać jak najwięcej lżejszych funkcji (tj. funkcji o wyższej wydajności).
Oczywiście funkcje w repozytorium funkcji Wolfram muszą być zgodne z zasadami projektowania języka Wolfram - aby mogły w pełni współdziałać z innymi funkcjami i oczekiwaniami użytkowników co do prawidłowego działania funkcji. Jednakże funkcje nie muszą być jednakowo kompletne i niezawodne.
W przypadku wbudowanych funkcji języka Wolfram ciężko pracujemy, aby funkcje programowania były jak najbardziej ogólne. Biorąc to pod uwagę, gdy w repozytorium funkcji Wolfram nie ma nic złego w posiadaniu w nim funkcji, która po prostu obsługuje bardzo konkretny, ale użyteczny przypadek. Na przykład funkcja
Kolejną kwestią związaną z wbudowanymi funkcjami jest to, że nasza firma dokłada wszelkich starań, aby obsłużyć wszystkie nietypowe przypadki, poprawnie obsłużyć nieprawidłowe dane wejściowe i tak dalej. W repozytorium funkcji normalne jest, że istnieje specjalna funkcja, która zajmuje się głównymi przypadkami rozwiązania problemu i ignoruje wszystkie inne.
Oczywistym punktem jest to, że lepiej mieć funkcje, które robią więcej i robią to lepiej, ale optymalizacja pod kątem repozytorium funkcji – w przeciwieństwie do wbudowanych funkcji języka Wolfram – powinna mieć więcej funkcji w pakiecie z większą liczbą funkcji, zamiast zagłębiać się w procesy wdrażania każdej konkretnej funkcji.
Przyjrzyjmy się teraz przykładowi testowania funkcji w repozytorium. Oczekiwania dotyczące spójności dla takich funkcji są naturalnie znacznie niższe niż w przypadku wbudowanych funkcji językowych. Jest to szczególnie prawdziwe w przypadkach, gdy funkcje zależą od zasobów zewnętrznych, takich jak API, ważne jest, aby stale przeprowadzać spójne testy, co dzieje się automatycznie w ramach algorytmów weryfikacji. W pliku nb można jawnie określić definicje (w sekcji Informacje dodatkowe) i określić tyle testów, ile zdefiniowano w ciągach wejściowych i wyjściowych lub obiektach pełnoznakowych typu
W rezultacie repozytorium funkcji będzie miało wiele złożoności implementacyjnych. Niektóre będą składać się z pojedynczej linii kodu, inne mogą obejmować tysiące lub dziesiątki tysięcy linii, prawdopodobnie wykorzystujących wiele funkcji pomocniczych. Kiedy warto dodać funkcję wymagającą zdefiniowania bardzo małej ilości kodu? Zasadniczo, jeśli dla funkcji istnieje
Głównym celem repozytorium funkcji (jak sama nazwa wskazuje) jest wprowadzenie nowych funkcji do języka. Jeśli chcesz dodać nowe dane lub
Właściwie są dwa sposoby. Możesz chcieć wprowadzić nowy typ obiektu, który będzie używany w nowych funkcjach w repozytorium funkcji. W tym przypadku zawsze możesz po prostu zapisać jego symboliczną reprezentację i użyć jej podczas wprowadzania lub wyprowadzania funkcji w repozytorium funkcji.
Ale co, jeśli chcesz reprezentować obiekt, a następnie zdefiniować, za pomocą istniejących funkcji w języku Wolfram, że chcesz z nim pracować? Język Wolfram zawsze miał do tego lekki mechanizm, zwany
Co zatem może znajdować się w kodzie funkcji w repozytorium funkcji?
Czy cały kod repozytorium funkcji Wolfram powinien być napisany w Wolfram? Z pewnością kod wewnątrz zewnętrznego API nie powinien być napisany w języku Wolfram, który nawet nie tworzy kodu języka. Tak naprawdę, jeśli znajdziesz funkcję w niemal dowolnym zewnętrznym języku lub bibliotece, możesz utworzyć opakowanie, które umożliwi jej użycie w repozytorium funkcji Wolfram. (Zwykle powinieneś używać do tego wbudowanych funkcji
Jaki jest więc sens to robić? Zasadniczo pozwala to na wykorzystanie całego zintegrowanego systemu Wolfram Language i całego jego ujednoliconego zestawu możliwości oprogramowania. Jeśli uzyskasz podstawową implementację z zewnętrznej biblioteki lub języka, możesz następnie użyć bogatej struktury symbolicznej języka Wolfram, aby stworzyć wygodną funkcję najwyższego poziomu, która pozwoli użytkownikom łatwo korzystać z dowolnej już zaimplementowanej funkcjonalności. Przynajmniej powinno to być wykonalne w idealnym świecie, w którym istnieją wszystkie elementy składowe ładowania bibliotek itp., w którym to przypadku byłyby one obsługiwane automatycznie przez język Wolfram. (Należy zaznaczyć, że w praktyce mogą wystąpić problemy z
Nawiasem mówiąc, kiedy po raz pierwszy spojrzysz na typowe biblioteki zewnętrzne, często wydają się one zbyt złożone, aby można je było objąć zaledwie kilkoma funkcjami, ale w wielu przypadkach duża część złożoności wynika z stworzenia infrastruktury potrzebnej bibliotece i wszystkich funkcji do jej obsługi. wspierać to. Jednak w przypadku korzystania z języka Wolfram infrastruktura jest zwykle już wbudowana w pakiety, więc nie ma potrzeby szczegółowego ujawniania wszystkich funkcji pomocniczych, a jedynie tworzenie funkcji dla „najwyższych” funkcji specyficznych dla aplikacji w bibliotece .
„Ekosystem” bazy wiedzy
Jeśli masz napisane funkcje, z których regularnie korzystasz, prześlij je do repozytorium funkcji Wolfram! Jeśli nie wyjdzie z tego coś więcej (rozwój języka), to nawet wtedy znacznie wygodniej będzie Ci korzystać z funkcji do użytku osobistego. Logiczne jest jednak założenie, że jeśli regularnie korzystasz z tych funkcji, być może inni użytkownicy również uznają je za przydatne.
Naturalnie możesz znaleźć się w sytuacji, w której nie możesz – lub nie chcesz – dzielić się swoimi funkcjami lub w przypadku uzyskania dostępu do prywatnych zasobów informacyjnych. Nawet w takich przypadkach możesz po prostu wdrożyć funkcje na własnym koncie w chmurze,
Funkcje, które przesyłasz do repozytorium funkcji Wolfram, nie muszą być doskonałe; po prostu muszą być przydatne. Przypomina to trochę sekcję „Błędy” w klasycznej dokumentacji Uniksa – w „Sekcji Definicje” znajduje się sekcja „Notatki autora”, w której możesz opisać ograniczenia, problemy itp., które już znasz na temat swojej funkcji. Dodatkowo, przesyłając obiekt do repozytorium, możesz dodać notatki dotyczące przesłania, które zostaną przeczytane przez dedykowany zespół kuratorów.
Po opublikowaniu obiektu na jego stronie zawsze znajdują się dwa linki u dołu: „
Czasami chcesz po prostu użyć funkcji z repozytorium funkcji Wolfram, takich jak funkcje wbudowane, bez sprawdzania ich kodu. Jeśli jednak chcesz zajrzeć do środka, na górze zawsze znajduje się przycisk Notatnik. Kliknij na to, a otrzymasz własną kopię oryginalnego notatnika definicji, który został przesłany do repozytorium funkcji. Czasami możesz po prostu użyć go jako przykładu dla swoich potrzeb. Jednocześnie możesz opracować własną modyfikację tej funkcji. Możesz opublikować te funkcje, które znalazłeś w repozytorium na swoim komputerze lub na koncie przechowywania w chmurze mszyc, być może chcesz przesłać je do bazy wiedzy o funkcjach, być może jako ulepszoną, rozszerzoną wersję oryginalnej funkcji.
W przyszłości planujemy obsługiwać rozwidlanie repozytoriów funkcji w stylu Gita, ale na razie staramy się, aby było to proste i zawsze mamy wbudowaną w język tylko jedną akceptowaną wersję każdej funkcji. Najczęściej (chyba że programiści zrezygnują z utrzymywania opracowanych przez siebie funkcji i odpowiedzą na zgłoszenia użytkowników), pierwotny autor danej funkcji przejmuje kontrolę nad jej aktualizacjami i przesyła nowe wersje, które są następnie sprawdzane i, jeśli przejdą proces recenzji , opublikowane w języku.
Zastanówmy się, jak działa „wersjonowanie” opracowanych funkcji. W tej chwili, gdy korzystasz z funkcji z repozytorium funkcji, jej definicja będzie trwale przechowywana na Twoim komputerze (lub na Twoim koncie w chmurze, jeśli korzystasz z chmury). Jeśli dostępna jest nowa wersja funkcji, przy następnym jej użyciu otrzymasz wiadomość z powiadomieniem. A jeśli chcesz zaktualizować funkcję do nowej wersji, możesz to zrobić za pomocą polecenia
Jedną z pięknych rzeczy w repozytorium funkcji Wolfram jest to, że każdy program w języku Wolfram, w dowolnym miejscu, może korzystać z jego funkcji. Jeśli program pojawia się w notatniku, często wygodnie jest sformatować funkcje repozytorium jako łatwe do odczytania funkcje „obiektu binarnego funkcji” (być może po ustawieniu odpowiedniej wersji).
Zawsze możesz uzyskać dostęp do dowolnej funkcji w repozytorium funkcji za pomocą tekstu
Jak to działa?
Wewnątrz funkcji w repozytorium Wolfram jest to możliwe przy użyciu dokładnie tego samego
Rozważać
Wewnątrz możesz zobaczyć pewne informacje za pomocą funkcji
Jak działa konfigurowanie funkcji zasobu? Najprostszy przypadek to przypadek czysto lokalny. Oto przykład, który pobiera funkcję (w tym przypadku czystą funkcję) i definiuje ją jako funkcję zasobu dla danej sesji programu:
Po dokonaniu definicji możesz użyć funkcji zasobu:
Należy zauważyć, że w tym obiekcie blob funkcyjny znajduje się czarna ikona . Oznacza to, że funkcja BLOB odnosi się do funkcji zasobów pamięci zdefiniowanej dla bieżącej sesji. Funkcja zasobu, która jest trwale przechowywana na Twoim komputerze lub koncie w chmurze, ma szarą ikonę . W repozytorium funkcji Wolfram znajduje się pomarańczowa ikona oznaczająca oficjalną funkcję zasobu .
Co więc się stanie, gdy użyjesz menu Rozwiń w Notatniku definicji? Najpierw pobiera wszystkie definicje z notatnika i tworzy z nich symbolikę
Lokalne wdrożenie funkcji z repozytorium na komputerze odbywa się za pomocą polecenia
Jeśli klikniesz przycisk Prześlij dla repozytorium funkcji, co się stanie pod nim
Domyślnie zgłoszenia są dokonywane pod nazwą powiązaną z Twoim Wolfram ID. Jeśli jednak składasz wniosek w imieniu zespołu programistów lub organizacji, możesz to zrobić
Po przesłaniu dowolnej funkcji do bazy wiedzy o funkcjach zostanie ona umieszczona w kolejce do sprawdzenia. Jeśli w odpowiedzi otrzymasz komentarze, zazwyczaj będą one miały formę pliku tekstowego z dodanymi dodatkowymi „komórkami komentarzy”. Zawsze możesz sprawdzić status swojego wniosku odwiedzając stronę
Niektóre subtelności w pracy
Na pierwszy rzut oka może się wydawać, że możesz po prostu wziąć notatnik definicji i umieścić go dosłownie w repozytorium funkcji, jednak w rzeczywistości wiąże się to z wieloma subtelnościami - a obsługa ich wymaga wykonania dość złożonego metaprogramowania, obsługi przetwarzania symbolicznego jako kod definiujący funkcję i zdefiniowany jest sam Notatnik. Większość tego dzieje się wewnętrznie, za kulisami, ale może mieć pewne konsekwencje, które warto zrozumieć, jeśli zamierzasz wnosić wkład w bazę wiedzy o funkcjach.
Pierwsza natychmiastowa subtelność: Kiedy wypełniasz Notatnik definicji, możesz po prostu wszędzie odnosić się do swojej funkcji, używając nazwy takiej jak Moja funkcja, która wygląda jak zwykła nazwa funkcji w języku Wolfram, ale w dokumentacji repozytorium funkcji została ona zastąpiona
Druga subtelność: kiedy tworzysz funkcję zasobu z Notatnika definicji, wszystkie zależności związane z definicją funkcji muszą zostać przechwycone i jawnie uwzględnione. Aby jednak definicje pozostały modułowe, należy umieścić wszystko w unikalnym formacie
Zwykle nigdy nie zobaczysz żadnych śladów kodu użytego do skonfigurowania tej przestrzeni nazw. Ale jeśli z jakiegoś powodu wywołasz w swojej funkcji niedostatecznie wykonany symbol, zobaczysz, że ten symbol znajduje się w wewnętrznym kontekście funkcji. Jednakże podczas przetwarzania Notatnika definicji przynajmniej symbol odpowiadający samej funkcji jest
Repozytorium funkcji służy do definiowania nowych funkcji. Funkcje te mogą mieć opcje. Często te parametry (np.
Większość funkcji po prostu robi to, co powinna za każdym razem, gdy są wywoływane, ale niektóre funkcje muszą zostać zainicjowane, zanim będą mogły zostać uruchomione w określonej sesji - aby rozwiązać ten problem, w sekcji Definicja znajduje się sekcja „Inicjalizacja”.
Funkcje z repozytorium mogą korzystać z innych funkcji, które już znajdują się w repozytorium; aby skonfigurować definicje repozytorium funkcji zawierające dwie (lub więcej) funkcje odwołujące się do siebie, musisz je wdrożyć w sesji programu, abyś mógł odniesienia jak na nich
Perspektywy rozwoju. Co powinno się stać, gdy repozytorium stanie się naprawdę duże?
Dzisiaj właśnie uruchamiamy repozytorium funkcji Wolfram, ale z biegiem czasu spodziewamy się, że jego rozmiar i funkcjonalność mogą dramatycznie wzrosnąć, a wraz z rozwojem będą pojawiać się różne problemy, które już przewidywaliśmy.
Pierwszy problem dotyczy nazw funkcji i ich unikalności. Repozytorium funkcji zostało zaprojektowane w taki sposób, że podobnie jak funkcje wbudowane w języku Wolfram, można odwoływać się do dowolnej funkcji, po prostu podając jej nazwę. Ale to nieuchronnie oznacza, że nazwy funkcji muszą być globalnie unikalne w całym repozytorium, tak aby na przykład mogła istnieć tylko jedna
Na początku może się to wydawać dużym problemem, ale warto zdać sobie sprawę, że jest to w zasadzie ten sam problem, co w przypadku domen internetowych czy uchwytów w mediach społecznościowych. A faktem jest, że system po prostu musi mieć rejestratora – i to jest jedna z ról, jaką nasza firma będzie pełnić dla bazy wiedzy funkcji Wolfram. (W przypadku prywatnych wersji repozytorium ich rejestratorami mogą być administratorzy.) Oczywiście domenę internetową można zarejestrować nie mając na niej niczego, ale w repozytorium funkcji nazwę funkcji można zarejestrować tylko wtedy, gdy istnieje rzeczywista definicja funkcja.
Częścią naszej roli w zarządzaniu bazą wiedzy o funkcjach Wolfram jest zapewnienie, że nazwa wybrana dla funkcji jest logiczna, biorąc pod uwagę definicję funkcji i jest zgodna z konwencjami nazewnictwa języka Wolfram. Mamy ponad 30-letnie doświadczenie w nazewnictwie wbudowanych funkcji w języku Wolfram, a nasz zespół kuratorów wniesie to doświadczenie również do repozytorium funkcji. Oczywiście zawsze są wyjątki. Na przykład może się wydawać, że lepsza jest krótka nazwa jakiejś funkcji, ale lepiej jest „bronić się” dłuższą, bardziej szczegółową nazwą, ponieważ jest mniejsze prawdopodobieństwo, że w przyszłości natkniesz się na kogoś, kto będzie chciał utworzyć podobną nazwę funkcji .
(Należy tutaj zauważyć, że samo dodanie jakiegoś znacznika członkowskiego w celu ujednoznacznienia funkcji nie przyniesie zamierzonego efektu. Ponieważ jeśli nie będziesz nalegał na ciągłe przypisywanie znacznika, będziesz musiał zdefiniować domyślny znacznik dla dowolnej funkcji, a także przydzielić znaczniki autora , co ponownie wymagałoby globalnej koordynacji.)
W miarę powiększania się bazy wiedzy o funkcjach Wolframa, jednym z problemów, który prawdopodobnie się pojawi, będzie wykrywalność funkcji, dla których system zapewnia
Dla funkcji wbudowanych w języku Wolfram dostępna jest tzw. warstwa detekcyjna dostarczana przez
Repozytorium funkcji Wolfram jest skonfigurowane jako trwałe repozytorium funkcji, w którym każda zawarta w nim funkcja zawsze będzie działać. Oczywiście mogą pojawić się nowe wersje funkcji i spodziewamy się, że niektóre funkcje z czasem staną się przestarzałe. Funkcje będą działać, jeśli zostaną użyte w programach, ale ich strony dokumentacji będą zawierały łącza do nowych, bardziej zaawansowanych funkcji.
Repozytorium funkcji Wolfram zostało zaprojektowane, aby pomóc Ci szybko odkrywać nowe funkcje i uczyć się nowych sposobów korzystania z języka Wolfram. Jesteśmy bardzo optymistyczni, że część tego, co zostało zbadane w repozytorium funkcji, w końcu nabierze sensu i stanie się wbudowanymi częściami rdzenia języka Wolfram. W ciągu ostatniej dekady mieliśmy podobny zestaw
Najważniejszą rzeczą jest to, że funkcja w repozytorium funkcji jest czymś, z czego może teraz korzystać każdy użytkownik. Możliwe, że funkcja w języku natywnym mogłaby być znacznie lepsza i wydajniejsza, ale repozytorium funkcji umożliwiłoby użytkownikom natychmiastowy dostęp do wszystkich nowych funkcji. A co najważniejsze, koncepcja ta pozwala każdemu dodawać dowolne nowe funkcje.
Wcześniej w historii języka Wolfram pomysł ten nie sprawdziłby się tak dobrze, ale na tym etapie w język włożono tak wiele wysiłku i tak głębokie zrozumienie zasad projektowania języka, że obecnie wydaje się to bardzo możliwość dodania przez dużą społeczność użytkowników funkcji, które pozwolą zachować spójność projektu i uczynić je użytecznymi dla szerokiego grona użytkowników.
W społeczności użytkowników Wolfram Language panuje niesamowity duch talentu(?). (Oczywiście do tej społeczności należy wielu czołowych specjalistów w dziedzinie badań i rozwoju w różnych dziedzinach.) Mam nadzieję, że repozytorium funkcji Wolfram zapewni skuteczną platformę do odblokowywania i rozpowszechniania ducha talentów. Tylko razem możemy stworzyć coś, co znacząco poszerzy obszar, w którym można zastosować paradygmat obliczeniowy języka Wolfram.
W ciągu ponad 30 lat przebyliśmy długą drogę z językiem Wolfram. Teraz razem pójdziemy jeszcze dalej. Gorąco zachęcam wszystkich szanowanych użytkowników języka Wolfram na całym świecie do korzystania z repozytorium funkcjonalnego jako platformy do tego, a także z nowego projektu oprogramowania, takiego jak Free Wolfram Engine for Developers.
Źródło: www.habr.com