nexos wrote:For me, using functional languages makes it more about the language then the particular problem your trying to solve.
I don't completely agree on that, but there is some truth in your statement: often people don't use functional programming just to
solve a problem, but because of the
way it's possible to solve that problem with that paradigm. A trivial example is recursive vs iterative algorithms: some problems like in-order visit of a BST have a super simple and elegant recursive solution, while the iterative algorithm is not so simple to read, write and maintain (suppose you might need some tweaks). Note that recrusive solutions are generally much closer to the FP world compared to the iterative ones.
nexos wrote:I use languages that I notice the least. For example, C, Go, and Perl.
I consider C my "native" language as I've been using it since I was very young and it probably feels more natural to me than any other language, but... do I notice it? Hell, yeah. I mean, it's great and it feels completely natural to me, but I can still compare it to other languages as well. It's the same for human natural languages: at the beginning, you speak only your own native language and don't notice its properties/pros/cons, but after you learn a few other languages, you start comprehending your own language at a different level.
So, briefly, IMHO every language is
noticeable and inevitabily affects our
thinking model.
nexos wrote:I don't think functional programming would help me solve a real-world problem.
Imperative solutions typically perform much better than FP ones, but some people might find it comfortable to do some prototyping or writing scripts with FP-like code. It depends a lot on the problem you're trying to solve. FP is very bad for system code where side-effects are the key, but it might offer simpler/nicer solutions when dealing with some purely computational (algoritmic) problems. Don't get me wrong: I'm a C/UNIX guy and I'd prefer people to write highly optimized imperative code for production instead of "wasting" CPU cycles to do extra object copies as it happens with FP techniques: I hate when people try to force FP everywhere. I just wanted to point out that understanding something about FP and its benefits could be useful for a SW engineer, in general. Even if pure FP is not widely used, some FP ideas have been adopted by many OO or multi-paradigm languages like C++, Java and Python: things like map(), filter(), reduce() and stateful lambdas (closures) came from the FP world.
For kernel development, FP won't help not so much I guess but, hey, you don't know for sure what you'll going to do for the next 30 years