Pseudocode is, as the name implies, not real code, but it looks like code. It helps people to understand a problem domain or solution better without having to add all the baggage necessary when using a real language.
In short: it's used only for illustrational purposes.
Pseudocode and programming
There is no definition or fixed rule of pseudocode, it can be different each time. It is not a (real) programming language and no-one will consider it one. It cannot be compiled or used as a real programming language: if you could do that, it ceases to be pseudocode. Pseudocode does not need to be deterministic (a necessity for computers to compile), it rather needs to be understood by humans. To use pseudocode, you'll have to convert it to your favorite programming language. This conversion process can be different each time and no rules can be given for it because, again, pseudocode is like free speech: it can take any form.
Usages
It is commonly used, especially in the design phase of projects to help understand a certain approach to a problem. It's also commonly used in algorithm design, or when teachers draw something on the board. In all these cases it is not necessary to compile the code, you just want to understand the problem/solution.
Types of pseudocode
Pseudocode can be, but doesn't have to be of a certain type, i.e., you can have a stack-based pseudocode to illustrate MSIL, you can have an imperative pseudocode to illustrate Java, C#, C++, Python, you can have a functional pseudocode to illustrate F#, Haskell, SQL etc.
Examples
From the top of my head, but anything goes, because pseudocode can be invented on the spot:
XML pseudocode, showing a head+body structure that allows for multiple p-elements:
<head ...
<title ...
</
<body ...>
(<p>...)+
</
Imperative pseudocode, showing the diamond problem in languages that support multiple inheritance:
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?
The above two examples obviously resemble some (type of) language, but aren't really that language and cannot possibly compile. They rather illustrate something that you want to explain.
Thomas Kuhn defines paradigm in The Structure of Scientific Revolutions as:
Attempting to discover the source of that difference led me to recognize the role in scientific research of what I have since called “paradigms.” These I take to be universally recognized scientific achievements that for a time provide model problems and solutions to a community of practitioners.
Merriam-Webster offers three definitions1, the third one being the most relevant:
- example, pattern; especially: an outstandingly clear or typical example or archetype
- an example of a conjugation or declension showing a word in all its inflectional forms
- a philosophical and theoretical framework of a scientific school or discipline within which theories, laws, and generalizations and the experiments performed in support of them are formulated; broadly: a philosophical or theoretical framework of any kind
The term is quite commonly used and well understood in scientific environments, we don't need to further define it. A programming paradigm is simply a paradigm of the programming discipline, and that's about it.
The Wikipedia article you link to offers more of an explanation, perhaps targetted to people without a programming or other scientific background, than a definition. It's an encyclopaedia after all, not an authoritative software development reference.
1 Example is used prominently in the first two definitions, because paradigm (παράδειγμα) is the Greek word for it.
Best Answer
The framework imposes a certain way of working on you. Put another way, there's clearly one right way of using the framework which is nice and easy, and any other way of using the framework makes your life difficult.
I'm no Rails expert, but I'm told that it's opinionated because it's awesome for simple CRUD stuff, but when you try deviate from the "Rails way" things get tough. (This isn't necessarily a bad thing; I don't mean it as criticism.)