News for hackers. Stuff that matters.
Re:Functional programming is finally going mainstream by ncmncm on Wednesday July 13, 2022 @12:35AM (#32079074)
The big mistake is in believing there is any value in this- or that-oriented programming, or in a this- or that-oriented language.

An engineer uses what is available to produce an economically balanced solution. Done well, that may involve a few OO-ish bits, some functional bits, data-oriented bits, reactive bits, plus hybrid combinations of those and others. The problem dictates the form of the solution.

Every big-enough problem decomposes into a collection of very different subproblems, each of which so decomposes further. The right approach for the top level rarely matches that for most of its parts, nor each for the others, and likewise down the line.

Unless you want to use a different language for each level and subproblem, you will want support for all "orientations" in your language. Thus, a "functional" or "OO" language is an absurdity; likewise, a "functional", "OO", or what-have-you program. They make as much sense as a saw-oriented carpenter's toolbox or table, or a screwdriver-oriented machinist's toolkit or engine.

Programs should be like water, fluidly matching the shape of the problem solved. If that is 20% functional, 10% O-O, and the rest imperative, so be it. Specialization is for insects.

Everything is Turing complete: you can code a solution in any restricted vocabulary. But that means succeeding proves nothing and benefits nobody, but wasted your time and others'.

Use a language that does it all, and use it all. Not necessarily all on every program; but all styles get consideration for each part.

Re:Functional programming is finally going mainstream by danielscrubs on Wednesday July 13, 2022 @02:15AM (#32079528)
“Everything is Turing complete” isn’t true. You can get quite interesting languages by making sure it isn’t. See strong functional programming for examples.

https://en.m.wikipedia.org/wiki/Total_functional_programming

Re:Functional programming is finally going mainstream by ncmncm on Wednesday July 13, 2022 @02:27AM (#32079580)
That you can code certain solutions in a non-Turing-complete language is of identically null benefit.
Re:Functional programming is finally going mainstream by tadfisher on Wednesday July 13, 2022 @04:03AM (#32080098)
Aside from being able to prove that the solution halts, you mean? You get a lot of side benefits as well with a halting program, such as provable limits in time and space for the totality of the program instead of just the functional core bits.
Re:Functional programming is finally going mainstream by ncmncm on Wednesday July 13, 2022 @07:45AM (#32081350)
Maybe you are unable to prove properties of programs you have coded in Turing-complete languages. Many of us do, though. Routinely.

Quick, does this program terminate:

  int main() {}
? Can't prove it?
Re:Functional programming is finally going mainstream by tadfisher on Friday July 15, 2022 @02:36PM (#32111385)
That's not a very useful program.
Re:Functional programming is finally going mainstream by ncmncm on Saturday July 16, 2022 @12:54AM (#32115324)
It is the first stage of every useful program.

Add to it, and show that it still terminates, uses finite memory, introduces no data races or undefined behavior, and maybe computes a step toward something useful.

Repeat until done.

Re:Functional programming is finally going mainstream by AlchemistCamp on Wednesday July 13, 2022 @01:22AM (#32079270)
I completely disagree with the kitchen sink language approach. The benefits in many coding paradigms really kick in once they're used 100%.

For example, consider GOTOs. If 99% of your functions don't use any GOTOs but they other 1% does, you can't be sure how the flow of logic lead to any one function. Immutability works in a similar way. I have a far easier time debugging in concurrent code I'm unfamiliar with if it's written in Elixir than if it's written in JS/TS, even if the project in question uses Immutable.js heavily.

Re:Functional programming is finally going mainstream by yowlingcat on Wednesday July 13, 2022 @09:20AM (#32082282)
> have a far easier time debugging in concurrent code I'm unfamiliar with if it's written in Elixir than if it's written in JS/TS, even if the project in question uses Immutable.js heavily.

How much of that comes from belief rather than reality, and potentially some room to grow on your end? I can debug well written code in any language I jump into, but I've found poorly written and hard to debug morasses can be written in any language.

Poor naming, branch/loop structuring, scoping, data modeling/normalization, module structuring, logging, and dependency selection/integration have all contributed to debugging hassles far more in my production experience than any particular language.

Re:Functional programming is finally going mainstream by AlchemistCamp on Wednesday July 13, 2022 @12:59PM (#32085462)
> How much of that comes from a belief rather than reality, and potentially some room to grow on your end?

You know… suggesting that someone that they’re delusional and uninformed isn’t a very charitable way to discuss anything online.

The belief came from personal experience from 2016-2018 while I was much more experienced with JS/TS and relatively new to Elxir. It definitely influenced me to keep exploring and learning things outside the JS ecosystem I’d previously focused on. I’ve grown as a dev since and so has my appreciation of guaranteed immutability.

Also working with other languages, particularly Rust, in the past few years has only further underlined the point. It makes a strict delineation between variables, references and arguments that can be mutated and those that can’t. The language went with 100% guarantees instead of 95% guarantees for a good reason.

> I can debug well written code in any language I jump into

The phrase “well-written” may be doing a lot of lifting here. Different languages and ecosystems make different practices easy and tend to nudge users in different directions. People who don’t like learning often enjoy the idea that any Turing complete language is equivalent from the programmer’s perspective but it’s just not true.

Re:Functional programming is finally going mainstream by yowlingcat on Wednesday July 20, 2022 @09:23AM (#32165444)
> You know… suggesting that someone that they’re delusional and uninformed isn’t a very charitable way to discuss anything online.

I think there's no reason to exaggerate what I said just because I don't love your pet principle as much as you do. Here's what I explicitly describe as being part of well-written (or poorly written) code, which has very little to do with FP vs OOP vs procedural:

"Poor naming, branch/loop structuring, scoping, data modeling/normalization, module structuring, logging, and dependency selection/integration"

>The phrase “well-written” may be doing a lot of lifting here

I think if you read the entire comment, you'd see it doing a lot less lifting because I explicitly detail what "well-written" is. And I think it is cross-language.

Re:Functional programming is finally going mainstream by lvass on Wednesday July 13, 2022 @12:57AM (#32079167)
"Subproblem" is likely an exaggeration here, otherwise I vehemently disagree. Take Erlang for example, it's theoretically a general purpose language but highly specialized. Would WhatsApp reach a billion users with 50 engineers without this specialization? I doubt it. It's absolutely fine for things to be heavily specialized, as it is fine for our entire civilization to rely division of labor. As the number of developers increase, so should the number of specializations. While a non-turing-complete language doesn't make much sense, web servers, linear algebra and GUIs for example are sufficiently different so that using the same language is unwise.
Re:Functional programming is finally going mainstream by ncmncm on Wednesday July 13, 2022 @02:15AM (#32079526)
There are very successful insects.
Re:Functional programming is finally going mainstream by lvass on Wednesday July 13, 2022 @08:58AM (#32081990)
No creature is limited to the use of a single programming language, but a lot of programs are. You can learn more than one language and choose one that is appropriate for the task, unlike an insect whose tools are limited so he must have only a few to do everything it needs to. Multi-paradigm is the insectisation here.
Re:Functional programming is finally going mainstream by ncmncm on Thursday July 14, 2022 @02:33AM (#32092718)
From the original post:

> The right approach for the top level rarely matches that for most of its parts, nor each for the others, and likewise down the line. Unless you want to use a different language for each level and subproblem, you will want support for all "orientations" in your language.

It is grossly impractical to use a different language for each fragmentary part of a problem. People do not, as a rule, do that. Trivial exceptions include Python and niche-language programs calling out to C-ABI libraries, programs sending SQL to databases, and web servers sending Javascript to browsers. But those are not about "orientation".

You might use two or more different general-purpose languages for different, independent problems, but that does not contradict my remark about the folly of languages that attempt "purity".

Re:Functional programming is finally going mainstream by pjmlp on Wednesday July 13, 2022 @02:22AM (#32079564)
I like very much how Wirth puts it, Programs = Algorithms + Data Structures.

Everything else is syntactic sugar.

Re:Functional programming is finally going mainstream by ncmncm on Wednesday July 13, 2022 @02:30AM (#32079595)
If that were true, the past 30 years of progress in programming languages would be meaningless. But it is not: a more powerful language enables expressing what a weaker language does not.

A language meant for use by professionals should get powerful features, without regard to any spurious notions of "purity".

Re:Functional programming is finally going mainstream by pjmlp on Wednesday July 13, 2022 @03:33AM (#32079937)
Understanding what that equation means in practice is the difference between having a degree and a six month bootcamp as X Developer.
Re:Functional programming is finally going mainstream by ncmncm on Wednesday July 13, 2022 @08:06AM (#32081516)
Do you really think you want to go there?
Re:Functional programming is finally going mainstream by pjmlp on Wednesday July 13, 2022 @09:08AM (#32082113)
I have a thick skin.
Re:Functional programming is finally going mainstream by ncmncm on Wednesday July 13, 2022 @07:03PM (#32089830)
That is not the thickness we are concerned with, here. :)
Re:Functional programming is finally going mainstream by benrbray on Wednesday July 13, 2022 @05:43AM (#32080587)
Can you give any examples of useful non-terminating programs?

It seems to me all useful programs are terminating (or, we truncate some non-terminating procedure by some convergence criteria). The question is only whether we have the logical tools to prove termination at compile time.

Re:Functional programming is finally going mainstream by ncmncm on Wednesday July 13, 2022 @07:34AM (#32081264)
Programs running in microcontrollers routinely do not terminate; they run as long as there is power. Even many ordinary programs run until they are killed.

You seem to confuse algorithms, which by definition must terminate, with programs, which do whatever the hell you like (and sometimes things you don't).