Razem z kilkoma kolegami porównaliśmy poprzednie języki, w których programowaliśmy, i rozmawialiśmy o naszych doświadczeniach z VBScript z jego dziwnymi funkcjami, takimi jak indeks oparty na 1 zamiast indeksów opartych na 0, jak ma to miejsce w prawie każdym innym języku, rozumując, że był to język dla użytkowników (np. Excel VBA) zamiast języka dla programistów.
Następnie ktoś powiedział: „ XPath ma również indeksy oparte na 1 ”, w co nie mogłem uwierzyć, dopóki nie znalazłem tego artykułu, w którym podano wiele powodów przemawiających za podejściem opartym na zerach, w tym kilka od samego Michaela Kaya:
- „... indeksowanie od zera zwykle upraszcza formuły indeksów podczas uzyskiwania dostępu do wielowymiarowej tablicy z jednowymiarowym wyrażeniem dostępu do tablicy”
- „podczas obsługi tabel lub indeksowania do łańcuchów, adresowanie od zera byłoby często znacznie wygodniejsze”
- „… adresowanie sprzętowe nie jest jedyną korzyścią wynikającą z adresowania opartego na zerach… ułatwia również obliczenia…”
ale potem Michael Kay jest cytowany jako podsumowujący:
... logika oparta na 1 była właściwym wyborem dla XPath i XSLT ... ponieważ język został zaprojektowany dla użytkowników, a nie dla programistów, a użytkownicy nadal mają ten staroświecki zwyczaj nazywania pierwszego rozdziału książki jako rozdziału Jeden...
Czy ktoś może mi to wyjaśnić? (1) W jaki sposób XPath jest przeznaczony dla użytkowników? Nie wyobrażam sobie nikogo, kto nie jest programistą, zmagającego się ze sztywnością składniową XPath lub deklaratywnymi / funkcjonalnymi aspektami programowania XSLT. oraz (2) Dlaczego twórcy XPath rzeczywiście wystąpili wbrew normom współczesnych języków programowania, wybierając indeks oparty na 1?
n
niezbyt nienaturalną i często prowadzącą do błędówn - 1
. Dla każdego, kto ma wypaczoną logikę „nowoczesnego programowania”, rozpoczęcie korzystania z indeksowania opartego na 1 byłoby przyjemnym i odświeżającym doświadczeniem :)Odpowiedzi:
Tablice i inne indeksy kolekcji reprezentują przesunięcia pamięci, więc logicznie rzecz biorąc, zaczynają się od zera. Indeksy XML i XPATH reprezentują pozycje i liczby, więc logicznie rzecz biorąc, zaczynają się od jedynki (a zatem zero jest reprezentatywne dla „pustego”)
źródło
Aby odpowiedzieć na to pytanie, musimy zbadać historię niektórych technologii.
RSS XML XSLT i XPath History
Wersja 0.9 RSS została pierwotnie wydana jako RDF Site Summary w 1999 roku przez kilku gości z portalu Netscape dla portalu my.netscape.com firmy Netscape. Później tego samego roku, wraz z aktualizacją v0.91, zmieniono jego nazwę na RSS (Rich Site Summary). Rozwój projektu kilkakrotnie zmieniał właścicieli, ale wersja 1.0 RSS została wydana w grudniu 2000 r. Wraz z aktualizacją v1.0, RSS zawiera obsługę XML.
W 2002 roku wersja 2.0 została wydana we wrześniu jako RSS (Really Simple Syndication) i zaczęła ewoluować w jedną z głównych technologii internetowych. We wczesnej historii kanały RSS (i zawarte w nich dane XML) były odczytywane przez ludzi w surowym formacie. Blogi i inne źródła wiadomości wykorzystywały kanały RSS i XML do generowania stale aktualizowanych informacji. Ponieważ XML był czytany przez zwykłych śmiertelników (nie programistów), XPath i XSLT również musiały być łatwo zrozumiałe, aby zwykli śmiertelnicy nie byli przytłoczeni złożonością interakcji z nim. Dlatego XPath naśladuje styl URI, który jest czymś, co użytkownicy końcowi byli już zaznajomieni. Jednym z ustępstw poczynionych w celu zapewnienia czytelności przez użytkowników było stosowanie przestarzałych technik numeracji, tj. Indeksów opartych na 1 zamiast indeksów opartych na 0.
Chociaż kanały RSS i XML zostały stworzone tak, aby były czytelne dla większości ludzi, czytniki RSS zostały opracowane, aby zapewnić ludziom przyjemniejszy interfejs do czytania kanałów RSS. Teraz surowe dane RSS i XML są odczytywane prawie wyłącznie za pomocą jakiegoś czytnika lub interfejsu graficznego. XML jest nadal w częstym (być może stałym) użyciu w Internecie, ale jest maskowany przez fantazyjne graficzne interfejsy użytkownika, aby zapewnić lepsze wrażenia użytkownikom końcowym.
* Termin „ zwykli śmiertelnicy ” odnosi się do ludzi, którzy nie są programistami
źródło