W trakcie tych rozważań, wyskoczyła mi poniższa dygresja, dosyć duża, więc pozwólcie że ją rozwinę tutaj:

 

Można sobie wyobrazić, a także i fizycznie zrealizować – komórki pamięci, gdzie pojedynczy "bit" będzie mógł przyjmować wartości: trzy, 4, albo więcej, ale raczej jednak nie nazbyt wiele, bo i po co... Nie, nie mówię tu o konstrukcji logicznej, lecz jak najbardziej fizycznej, bo to ona stanowi zestaw ograniczeń, na to, co do wnętrza komputera możemy włożyć, w postaci oprogramowania niskiego poziomu, oraz zestawu instrukcji procesora.

 

Jeżeli zapis informacji byłby oparty o zjawiska kwantowe (albo standardowo-fizyczne, klasyczne — bo one w pełni do tego wystarczą, a i tak będzie to duży krok do przodu: wszak w przeciwieństwie do komputera kwantowego nie wymaga to chłodzenia procesora za pomocą ciekłego helu!), gdzie dana komórka mogłaby przyjmować (dajmy na to) trzy wartości, wówczas najlepszym systemem...

 

Stop! Dygresja w dygresji, ale już niewielka: komputer kwantowy pracuje inaczej, nie pomylcie tego, co tu opisuję, z komputerem opartym na fizyce kwantowej, operującym na q-bitach, i zjawisku splątania kwantowego, w związku z czym przyjmowane wartości nie są → dyskretne, lecz →  ciągłe, ponieważ splątanie może dać dowolny wynik z → „przestrzeni rozwiązań”, a my mówimy tutaj o systemie dyskretnym, ponieważ komórka będzie miała ściśle określoną ilość (i to niezbyt dużą) możliwych stanów logicznych.

[digression level → "  – off]

 

Podstawą budowy rejestrów, bądź zapisu cash (pewnej jego, wybranej części) nie byłby wówczas system binarny, lecz trójkowy, ze wszystkimi tego (nie całkiem jeszcze przewidywalnymi) konsekwencjami. Ale oczywiście system binarny nie zostałby zarzucony, ponieważ większość komórek pamięci, lub też rejestrów procesora – nadal byłaby fizycznie realizowana za pomocą bitów (system dwójkowy), a jedynie niewielka część – za pomocą tripów (system trójkowy).

 

Ale na co nam logika trójwartościowa? Otóż bardzo często w procesie szufladkowania (jest to duża część operacji logicznych, głównie w zakresie sortowania) trafiamy na sytuację, że coś nie pasuje do szufladki żadnej. W logice zero-jedynkowej nie możemy wtedy często, dla jakiejś felernego zestawu danych — wykonać jakiegoś algorytmu, bowiem dla owych wartości — algorytm nie ma najmniejszego sensu, jest jak dzielenie nawet nie przez zero, ale przez... ogórek! [vide Terry Pratchett]. Programiści jakoś sobie z tym radzą, stosując wymyślne triki. Jednak można do nich dodać jeszcze jeden (stanowiący poniekąd rozwiązanie o charakterze → generalnym): jeśli wprowadzimy sobie logikę trójwartościową, to jej wartości w odniesieniu do logiki klasycznej, będą miały takie znaczenia: „tak” równa się 1     zaś „nie” =  — 1

natomiast 0 mówiłoby, że odpowiedź brzmi "nie dotyczy", albo "inne", tudzież "wartość neutralna"... Myślę, że przyniesie to pewne korzyści — zarówno jeśli chodzi o zmniejszenie objętości kodu, zwiększenie jego przejrzystości, jak też szybkości działania. A jeśli jakaś pętla wykonuje się miliardy razy, na pewno będzie to miało znaczenie niepomijalne.

 

Kontynuując tę dygresję zaznaczę, iż jestem przekonany, że prędzej czy później w hardware informatyki — tripy znajdą swe miejsce, ponieważ procesory, które będą posiadać również i takie rejestry, będą mogły pewne wybrane operacje wykonywać dużo wydajniej, uzyskując wyraźną przewagę nad procesorami czysto binarnymi...

 

Zauważmy jeszcze (nadal dygresja), że zespolona, podwójna komórka, składająca się z bitu, oraz tripu – stanowiłaby sobą kwint-on, czyli jednostkę o pięciu wartościach (możliwych stanach logicznych) też niosącą za sobą jakieś niepomijalne zalety. Cały czas mówię o strukturze fizycznej procesora, czy też kości pamięci, chociaż jasnym jest, że aby zbadać przydatność tych rozwiązań,   da się to także modelować czysto programowo, wewnątrz komputera klasycznego, czyli operującego logiką dwuwartościową. Jednak taka symulacja pracowałaby wolniej, niż gdyby była uruchomiona na komputerze zbudowanym z użyciem zarówno bitów, jak i tripów.

 

Dlaczego tak mi się podobają tripy? Otóż zauważmy, że żadne operacje "wprost" (czyli tylko i wyłącznie mnożenie wraz z dodawaniem, z wyłączeniem dzielenia i odejmowania) z użyciem jedynie tylko liczby 2, oraz liczb wyprodukowanych z jej użyciem, nie są w stanie wyprowadzić nas ze sfery liczb parzystych, co ma duże znaczenie w budowaniu poleceń procesora. Wprowadzenie tripu rozwiązuje ten niezauważany problem, a w dodatku nic już więcej w zasadzie nie potrzeba, wszak mając w procesorze rejestry i komórki pamięci podręcznej tych dwóch typów, możemy z nich budować „wyższe stany świadomości” — czyli zarówno kwint-ony, sept-ony, jak i okt-ony, oraz dowolne inne, zarówno parzyste, jak i nieparzyste, troiste i nie-troiste, kwint-alne, septalne i nie-septalne, oraz wszelkie inne, których dziś nawet nie jesteśmy sobie w stanie wyobrazić!

 

Do czego mogą przydać się niebinarne rejestry, oraz niebinarne komórki pamięci?

Do zaimplementowania od razu we wnętrzu procesora, oraz w zestawie jego poleceń — możliwości wykonywania operacji matematycznych, na systemach liczbowych opartych o inne wartości, niż dwa, 10, czy 16: na przykład do liczenia w systemie szóstkowym, albo trzydziestkowym (trigintalnym). Da się to oczywiście zrobić z procesorem binarnym, ale komputer wyposażony w procesor z dodatkiem rejestrów niebinarnych, będzie wykonywał to zauważalnie szybciej, w jednym takcie zegara, a więc co najmniej dwa razy wydajniej!

 

Gdybyśmy potrzebowali mieć zbudowany z 1 tripu + 1 bit, rejestr qwint-alny (quint-alic): 000 - 00  — to możemy go „za-protezować” rejestrem z 3 bitów: 00 - 00 - 0● — gdzie ostatni bit nie będzie wykorzystywany (no, może tam być bit parzystości, ale to strzelanie z armaty do wróbla). Możemy, to prawda. Ale komórki typu „trip” pachną mi nowymi możliwościami, choć nie do końca wiem dlaczego... Jednak ich wadą (poważną!) będzie na pewno wyższa ich cena: co najmniej o 3,14 stutysięcznych $...

 

[dygresja off]





⁣ ⁣ ⁣ ⁣ ⁣ ⁣© ⁣ ⁣ 𝑁𝑖𝑐𝑜𝑙𝑎𝑠 𝑅𝑎𝐵𝑎𝑟𝑏𝑎𝑟(𝑠)𝑘𝑖

(𝐢𝐧 𝐋𝐯𝐢𝐯-𝐒𝐜𝐨𝐭𝐭𝐢𝐬𝐡

𝐂𝐨𝐨𝐤𝐁𝐨𝐨𝐤

prime floor:

𝐬𝐞𝐥𝐞𝐫, 𝐩𝐚𝐫𝐬𝐥𝐞𝐲 & 𝐩𝐨𝐨𝐫)