I would start in imperative world as that sounds like the space you came from. Get comfortable and feel like you are getting up to speed again then as a side project explore functional.
Even if you do not ever use it in anger it will change your perspective on code and how you plug it together.
C# and even Java have started to pick up aspects of functional now.
Take the following array of people objects
var people =
new[]
{
new Person {Name = "Tom", Age = 15),
new Person {Name = "Bill", Age = 25),
new Person {Name = "Bob", Age = 30),
};
I am sure you couple probably think how you might might get the names of all people over 25. Loop through, check the ages and put the names into an array.
The more functional way is called map, filter, reduce. Here is the C# LINQ syntax in action
var names = people
.Where(x => x.Age >= 18)
.Select(x => x.Name)
.ToArray();
Where is filter, it filters out based on the filter function it is given, in this case where age 18 or above. Select is map. It reshapes data, in this case it has picked the names out of the people object.
This is called a fluent interface. The results of each step are pushed into the next step to save holding intermediate variables etc
It also has a longer form syntax
var names =
from person in people
where person.Age >= 18
select person.Name;
As you can see it almost looks like a database SQL style language. This was intentional when they designed the syntax to make it feel familiar.
There are some real fun changes in languages from when you last touched them so just enjoy the journey and create small test programs to test new things you are trying to learn.
RE: Question for Programmers