Discussion about this post

User's avatar
Maiwand Atssar's avatar

The author has mixed up the programming paradigms. I would like to provide a brief explanation:

We have two general programming paradigms:

1. Imperative programming:

Imperative programming is a programming paradigm that focuses on describing computations as a sequence of statements that change the program's state. It emphasizes explicitly specifying the steps and control flow to achieve a desired outcome.

There are subtypes of this paradigm that include the following:

- Structured Programming

- Procedural Programming (Enabled by Structured programming)

- Object-Oriented Programming (An extension of Procedural programming)

- Functional Programming (Limited imperative aspects)

2. Declarative programming:

Declarative programming is a programming paradigm that emphasizes describing what the program should accomplish without specifying the exact steps to achieve it. It focuses on expressing relationships, constraints, and rules. Declarative programming languages provide a higher level of abstraction and allow the programmer to define the problem rather than the solution.

Some types of programming follow this paradigm. For example:

- Functional Programming (Haskell, Lisp, etc.)

- Database Query Languages (SQL)

- Markup Languages (XML, HTML, etc.)

- Logic Programming

- Other Domain-Specific Declarative Programming (CSS, Regular Expressions, etc.)

Expand full comment
Tommy's avatar

Isn't LSP saying the opposite?

If the subclass could be substituted by the base class, why would you need the subclass in the first place?

"if S is a subtype of T, then objects of type T in a program may be replaced with objects of type S without altering any of the desirable properties of that program" - Wikipedia

Expand full comment
3 more comments...

No posts