I think it's a good question, not easily answered.
All I can give you is my take on it.
There's something in your head - a problem and its solution.
The separation between those is not always clear, but they are stated in a mental language appropriate to the problem.
You can get a hint of what this language is by discussing the problem with another person.
That reveals a network of concepts in the form of words.
If a computer program is to be part of the solution, then the problem/solution needs to be communicated in keystrokes to the machine. To do this it is probably necessary to educate the machine about the problem domain, so you can tell it what you want.
When you define a datatype or write a procedure or otherwise define things in a computer language, you are augmenting that language with the concepts appropriate to your problem. You are turning it into a DSL (domain-specific-language in the lingo).
There is a lot of skill involved in this step, and different programmers have learned different ways to do this.
Now if you're asking about different programming paradigms like OOP, functional programming, logic programming, etc. etc., which of those shortens your path to creating the DSL that you want?
Again it depends on training.
(If all you have is a hammer, everything looks like a nail.)
I encourage people to have as diverse a set of mental tools as possible.
The extent to which you've created a DSL for your problem is a matter of degree.
In the ideal extreme, it should only be necessary to state your problem, where the solution is built into the DSL.
A measure of how well you've done this is to consider incremental changes to the problem and ask how much editing in the language is necessary to effect them without errors.
The ideal is 1:1. 1:5 is not too bad. I've seen 1:50 and that's not good.
The bigger that ratio is, the harder it is to get your idea across to the code, and the harder it is to avoid putting in bugs.
(I don't know if it would help to give you an idea what I mean to show how I tried to do this in the domain of dynamic user interfaces.)