this post was submitted on 03 Nov 2022
1 points (100.0% liked)

General Programming Discussion

7809 readers
2 users here now

A general programming discussion community.

Rules:

  1. Be civil.
  2. Please start discussions that spark conversation

Other communities

Systems

Functional Programming

Also related

founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] Ephera@lemmy.ml 1 points 2 years ago (15 children)

Honestly, I doubt we'll get all the way to pure functional programming, at least not in the next decades. But there is much to learn from FP.

Immutable-by-default is just sane. Algebraic data types offer a more explicit method for nullability and error handling. And higher-order functions for processing lists are so damn convenient, they're basically included in every programming language now.

So, yeah, I think, we'll take tools out of the FP toolbox and forget about some of the horrors of OOP, like massive inheritance chains, getters/setters etc., but ultimately stay on an imperative style of programming.
That will solve most of the pain and then that last step is too hard for the industry to take it.

[–] ttmrichter@lemmy.ml 1 points 2 years ago (5 children)

Which industry?

Programming is more than just writing Yet Another CRUD-backed data-siphoning web app. It's more than supercomputing/high performance computing. It's more than spreadsheets and word processors. It's more than games.

Any one of those fields I mentioned are effectively a completely separate industry from the others. And I haven't even touched the 500kg gorilla of embedded systems that outnumber all of those put together by an order of magnitude or two.

Some software industries (the web stuff, say, or user-facing software like spreadsheets and word processors) will find pure functional or major steps along that path to be useful and an improvement over current techniques. Others (high performance computing, games) will find themselves stepping backward if they go the full-functional route. And that 500kg gorilla I mentioned simply can't use functional programming. (Hell, I don't think there's a pure-functional runtime that fits into any of the kit I work on, not to mention the runtime plus an actual application. I'm willing to be corrected, though: if there's a functional language out there that will let me write non-trivial applications that fit in 256KB code space and 48KB dynamic data space, I'm eager to hear about it!)

However much you think you know about software development, be aware that it's far larger than you think. (This applies to me too. I haven't even glanced at financial or health software's direction, and only have very vague notions of what aerospace systems entail.) And as a result, different tool sets are required for different problem domains. Functional doesn't fit them all.

[–] bbarker@lemmy.ml 1 points 2 years ago (1 children)

I generally take your point, though I believe FP can be applied to most domains with some benefit - it is just that existing, prevalent FP languages may not always be well suited for the job. In HPC for instance, there are a few interesting options:

  • For both games and HPC, Futhark may be of interest: "Futhark is a small programming language designed to be compiled to efficient parallel code. It is a statically typed, data-parallel, and purely functional array language in the ML family, and comes with a heavily optimising ahead-of-time compiler that presently generates either GPU code via CUDA and OpenCL, or multi-threaded CPU code."

  • Sadly I can't find it right now, but there was research language designed with the idea of separating the implementation from the specification, in such a way that the implementation could still be verified to conform to the specification; the specification was much more than a typical function signature as I recall. Basically you would write the function specification in a functional style, and then be able to have multiple implementations (e.g. for different hardware) conforming to that specification. I want to say this was from Standford but may be wrong about that.

[–] ttmrichter@lemmy.ml 1 points 2 years ago

Futhark is of interest as a future direction, chiefly as a supplementary language for sub-pieces of a larger, performance-intensive program. Note that its creators, however, explicitly state:

Futhark is not intended to replace existing general-purpose languages. The intended use case is that Futhark is only used for relatively small but compute-intensive parts of an application.

This is not a negative point, incidentally! I personally use a lot of languages in my work because I find it's better to use a tool honed to near-perfection for a particular use case than it is to employ another tool that does something not quite the same with lower quality. I wish more programmers learned more tools so they stopped doing the programming equivalent of hammering nails with a large wrench.

load more comments (3 replies)
load more comments (12 replies)