Псевдокод, как следует из названия, не является реальным кодом, но выглядит как код. Это помогает людям лучше понять предметную область проблемы или ее решение, не добавляя при этом весь багаж, необходимый при использовании реального языка.
Короче говоря: он используется только в иллюстративных целях.
Псевдокод и программирование
Для псевдокода нет определения или фиксированного правила, оно может отличаться каждый раз. Это не (настоящий) язык программирования, и никто не будет считать его одним. Он не может быть скомпилирован или использован в качестве реального языка программирования: если вы можете это сделать, он перестает быть псевдокодом. Псевдокод не должен быть детерминированным (необходимость компиляции компьютеров), его скорее нужно понимать людям. Чтобы использовать псевдокод, вам придется преобразовать его в ваш любимый язык программирования. Этот процесс преобразования может каждый раз отличаться, и никакие правила для него не могут быть заданы, потому что, опять же, псевдокод подобен свободе слова: он может принимать любую форму.
Использование
Он обычно используется, особенно на этапе разработки проектов, чтобы помочь понять определенный подход к проблеме. Это также обычно используется при разработке алгоритмов или когда учителя рисуют что-то на доске. Во всех этих случаях нет необходимости компилировать код, вы просто хотите понять проблему / решение.
Типы псевдокода
Псевдокод может быть, но не обязательно должен быть определенного типа, т. Е. У вас может быть стековый псевдокод для иллюстрации MSIL, у вас может быть императивный псевдокод для иллюстрации Java, C #, C ++, Python, вы может иметь функциональный псевдокод для иллюстрации F #, Haskell, SQL и т. д.
Примеры
Из головы, но все идет, потому что псевдокод можно изобрести на месте:
Псевдокод XML, показывающий структуру head + body, которая учитывает несколько p-элементов:
<head ...
<title ...
</
<body ...>
(<p>...)+
</
Обязательный псевдокод, показывающий проблему алмаза в языках, которые поддерживают множественное наследование:
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?
Вышеприведенные два примера, очевидно, напоминают некоторый (тип) язык, но на самом деле не являются этим языком и не могут быть скомпилированы. Они скорее иллюстрируют то, что вы хотите объяснить.