Pseudokod, jak sama nazwa wskazuje, nie jest prawdziwym kodem, ale wygląda jak kod. Pomaga ludziom lepiej zrozumieć problematyczną domenę lub rozwiązanie bez konieczności dodawania całego bagażu niezbędnego podczas używania prawdziwego języka.
W skrócie: służy wyłącznie do celów ilustracyjnych.
Pseudokod i programowanie
Nie ma definicji ani stałej reguły pseudokodu, może być za każdym razem inny. To nie jest (prawdziwy) język programowania i nikt go nie weźmie pod uwagę. Nie można go skompilować ani użyć jako prawdziwego języka programowania: jeśli możesz to zrobić, przestaje być pseudokodem. Pseudokod nie musi być deterministyczny (konieczność kompilacji komputerów), raczej powinien być zrozumiany przez ludzi. Aby użyć pseudokodu, musisz przekonwertować go na swój ulubiony język programowania. Ten proces konwersji może być za każdym razem inny i nie można podać żadnych reguł, ponieważ znowu pseudokod przypomina wolną mowę: może przybierać dowolną formę.
Zastosowania
Jest powszechnie stosowany, szczególnie na etapie projektowania projektów, aby pomóc w zrozumieniu określonego podejścia do problemu. Jest również powszechnie stosowany w projektowaniu algorytmów lub gdy nauczyciele rysują coś na tablicy. We wszystkich tych przypadkach kompilacja kodu nie jest konieczna, po prostu chcesz zrozumieć problem / rozwiązanie.
Typy pseudokodu
Pseudokod może być, ale nie musi być określonego typu, tzn. Możesz mieć pseudokod oparty na stosie, aby zilustrować MSIL, możesz mieć imperatywny pseudokod, aby zilustrować Java, C #, C ++, Python, możesz może mieć funkcjonalny pseudokod ilustrujący F #, Haskell, SQL itp.
Przykłady
Z góry mojej głowy, ale wszystko idzie, ponieważ pseudokod można wymyślić na miejscu:
Pseudokod XML, pokazujący strukturę głowy + ciała, która pozwala na wiele elementów p:
<head ...
<title ...
</
<body ...>
(<p>...)+
</
Pseudokod imperatywny, pokazujący problem z diamentem w językach obsługujących wielokrotne dziedziczenie:
class A() { readFile(); }
class B() : A {} // overrides readFile in A
class C() : A {} // overrides readFile in A
class D() : B, C {} // what definition of readFile should be used?
Powyższe dwa przykłady w oczywisty sposób przypominają niektóre (rodzaje) języków, ale tak naprawdę nie są tym językiem i nie można ich skompilować. Raczej ilustrują coś, co chcesz wyjaśnić.