Notacja polska, zapis przedrostkowy, notacja Łukasiewicza, notacja prefiksowa, symbolika beznawiasowa – sposób zapisu wyrażeń logicznych (a później arytmetycznych), podający najpierw operator, a potem operandy (argumenty), który został wynaleziony w 1924[1], a pierwszy raz użyty w druku w 1929[2], przez polskiego (stąd nazwa[a]) filozofa i logika Jana Łukasiewicza.
Notacja polska różni się od notacji infiksowej (w których operatory znajdują się pomiędzy argumentami i wymaga stosowania nawiasów) używanych m.in. przez klasyczne dzieło formalizmu logicznego Principia Mathematica Bertranda Russella i A.N. Whiteheada, a także od odwrotnej notacji polskiej, gdzie operatory znajdują za argumentami. Według Jana Woleńskiego, notacja ta pozwala na łatwiejsze przeprowadzanie operacji na formułach o znacznej długości; formuły krótsze wydają się tu jednak mniej intuicyjne niż w notacji nawiasowej, stąd notacja Łukasiewicza jest rzadko spotykana w dydaktyce[5].
Czasami terminem „notacja polska” obejmuje się notację z operatorem na początku, jak i odwrotną, z operatorem na końcu[3].
Notacja ta używana jest w logice znacznie rzadziej niż notacja infiksowa[6]; wśród niepolskojęzycznych naukowców używających jej znajdował się m.in. Arthur Prior[7]. Nazwa „notacja polska” zaczęła pojawiać się w druku w latach 50. XX wieku[8]. Obecnie informatyka jest jedynym polem, gdzie notacja ta jest wciąż popularna, szczególnie jej odwrotna odmiana.
Gdy notacja polska jest używana jako składnia dla wyrażeń matematycznych przez interpretery języków programowania, jest ona łatwo parsowana do drzew składniowych. Może ona definiować jednoznaczne odwzorowanie dla tego samego wyrażenia. Z tego powodu Lisp i pokrewne języki programowania definiują całą swoją składnię w notacji polskiej (a inne używają odwrotnej notacji polskiej).
|
Przykłady zapisu formuły
Poniżej przedstawiona jest notacja polska dla współczesnej logiki. Niektóre zastosowane przez Łukasiewicza litery odpowiadają polskim nazwom operacji. Widać też tu operatory dla proponowanej przez Łukasiewicza wersji logiki wielowartościowej. Na podstawie Łukasiewicz 1921 ↓ , Łukasiewicz i Tarski 1930 ↓ , Łukasiewicz 1939 ↓ , Łukasiewicz 1953 ↓ i Łukasiewicz 1957 ↓ .
operator | notacja konwencjonalna |
notacja polska |
---|---|---|
negacja | ||
implikacja | ||
alternatywa | ||
koniunkcja | ||
dysjunkcja | ||
ekwiwalencja | ||
kwantyfikator ogólny | ||
kwantyfikator szczegółowy | ||
prawdziwy | ||
możliwość | lub | |
konieczność | lub |
Wyrażenie w notacji polskiej nie wymaga nawiasów, ponieważ przypisanie argumentów do operatorów wynika wprost z ich kolejności w zapisie, o ile z góry znana jest liczba argumentów poszczególnych operatorów.
Na przykład zakładając, że operatory / i + są binarne, zapis w notacji polskiej:
/ 7 + 2 3
interpretuje się jednoznacznie jako równoważny notacji tradycyjnej (zapisowi wrostkowemu):
7 / (2 + 3)
Notacja polska jest bliska naturalnemu sposobowi wyrażania działań, w którym zazwyczaj najpierw podaje się czynność, a następnie dopełnia wyrażenie wskazaniem rzeczy, do których czynność się odnosi. Działanie z przykładu powyżej naturalnie wypowiadamy po polsku:
„podziel | siedem | przez sumę | dwu | i trzech” |
/ | 7 | + | 2 | 3 |
Stąd zapis przedrostkowy stał się podstawą edukacyjnego języka programowania Logo[potrzebny przypis], a także języka Lisp[9]. Inne języki używają zapisu przyrostkowego (odwrotnej notacji polskiej), np. Forth[10], Tcl[11] i PostScript[12].