2011-12-29 4 views
6

(Mathematica wersja: 8.0.4)W sprawie korzystania z Internal`Bag i wszelkiej oficjalnej dokumentacji?

lst = Names["Internal`*"]; 
Length[lst] 
Pick[lst, StringMatchQ[lst, "*Bag*"]] 

daje

293  
{"Internal`Bag", "Internal`BagLength", "Internal`BagPart", "Internal`StuffBag"} 

The Mathematica poradnik programowania przez Michaela Trott, strona 494 mówi o kontekście Wewnętrznego

ale podobne” do eksperymentalnego kontekstu, nie ma gwarancji, że zachowanie i składnia funkcji będą nadal dostępne w późniejszych wersjach Mathematica "

Również tutaj jest wzmianka o Bag funkcji:

Implementing a Quadtree in Mathematica

Ale ponieważ widziałem wielu ekspertów Mathematica tutaj sugerują Internal`Bag funkcje i wykorzystać je sami, jestem przy założeniu, że będzie rodzaj bezpieczne używać ich w rzeczywistym kodzie? i jeśli tak, mam następujące pytanie:

Gdzie mogę znaleźć bardziej oficjalny opis tych funkcji (API, itp.) jak w centrum dokumentacji? Nie ma nic o nich już teraz

??Internal`Bag 
Internal`Bag 
Attributes[Internal`Bag]={Protected} 

Jeśli mam zacząć z nich korzystać, to trudno, aby dowiedzieć się o nowych funkcjach przez po prostu patrząc na kilka przykładów i prób i błędów, aby zobaczyć, co robią. Zastanawiam się, czy ktoś tutaj może mieć bardziej kompletny i samodzielny dokument na temat ich użycia, opisać API i takie coś więcej niż to, co już tam jest, lub link do takiego miejsca.

+9

?? Oficjalny opis * to * tak zwane "Centrum dokumentacji" (inaczej "Pomoc"). Jeśli nic tam nie ma, nie ma innego zorganizowanego miejsca. Stało się to już wcześniej: token FrontEnd został wprowadzony wokół Mathematica 3, ale tylko (częściowo) udokumentowany znacznie później. Tak więc, po prostu poczekaj dekadę, a WRI prawdopodobnie to zarchiwizuje. Do tego czasu musisz polegać na dobrych programistach, takich jak Dan Lichtblau et. glin. rzucać światło w ciemność. –

+3

Jestem winny polecania nieudokumentowanych funkcji bez zgłaszania zastrzeżenia ich użycia.Trudno nie być podekscytowanym najnowszą "sztuczką", której się uczę i zacznę od razu używać, ale może to być nierozsądne i nie powinienem zachęcać innych do stosowania tej praktyki. Niestety, wiele interesujących funkcji i funkcji należy do tej kategorii. Mam nadzieję, że wkrótce pojawi się oficjalne słowo o funkcjach takich jak '* Bag *". –

+9

Wątpię, żeby coś w tym było oficjalnego. Ale są już od co najmniej kilkunastu lat i nie odchodzą. –

Odpowiedz

0

Kontekst Internal jest dokładnie taki, jak wskazuje jego nazwa: przeznaczony do użytku wewnętrznego przez programistów Wolfram.

Oznacza to, między innymi, następujące rzeczy trzymać czegokolwiek można znaleźć tam:

  • Najprawdopodobniej nie będzie w stanie znaleźć żadnej oficjalnej dokumentacji na nim, gdyż nie jest przeznaczona do być wykorzystywane przez opinię publiczną.
  • Nie musi być tak odporna na nieważne argumenty. (Na niektórych może się zdarzyć, że jądro ulegnie awarii).
  • Interfejs API może ulec zmianie bez powiadomienia.
  • Funkcja może zniknąć całkowicie bez powiadomienia.

Teraz, w praktyce, niektóre z nich mogą być dość stabilne, ale zdecydowanie radzę odejść od nich. Korzystanie z nieudokumentowanych interfejsów API może łatwo narazić Cię na wiele bólu i nieprzyjemną niespodziankę w przyszłości.

Powiązane problemy