guitarvydas
08/02/2024, 10:06 PMGuyren Howe
08/02/2024, 11:05 PMguitarvydas
08/03/2024, 3:04 AMGuyren Howe
08/03/2024, 5:44 AMGuyren Howe
08/03/2024, 5:46 AMStefan
08/03/2024, 2:13 PMguitarvydas
08/04/2024, 3:51 AMguitarvydas
08/04/2024, 2:24 PMStefan
08/06/2024, 3:26 PMDevelopers base most of their thinking on the idea that CPUs must be used as function-interpreters. This is what I call “function-based programming”.It’s not going to be helpful, I suppose, but from a mathematical standpoint — which I would think most programmers actually ignore — isn’t that reasonable? Computation, or the theories we have of it by Church and Turing, are rooted in "computable functions”. And electronic computers are approximating these theoretic models, adding their own complexities of having limitations in both time and space. The only way I can make sense of what you’re saying is paraphrasing it as, “Now that we figured out how to build actual CPUs as approximations of these models, let’s go and find better(?) models” — which to me sounds like a cart before the horse situation. What should developers use CPUs as instead?
I feel that so-called “computer science” ran with only the one paradigm - inefficient, function-based thinking mapped onto hardware manipulation - at the expense of cutting off many avenues of problem-solving.Any chance you have an example of one of these many alternative avenues of problem-solving? That would probably be the most effective way to see where I am misinterpreting you.
Functional programming notation denies the existence of time. “Functions” can be manipulated faster than the speed of light.I wouldn’t say “denies”. More like “doesn’t need”. Computation can be modeled without factoring time (or space) into the model, which makes the model simpler and some would even say elegant. You can integrate time into the model, if you want — see Functional Reactive Programming for instance, or monads (which are a kind of ordering as you would get from sequential execution). But the key is you don’t have to, you only do that when you need to. That most
map
functions run sequentially is not a fault of functional programming.
If you come from the other end, which seems to be your starting point, I wonder how you think all that state and implicit ordering in CPUs or electronic circuits (through sequential wiring, synchronization, and clock signal feedback loops) has benefits in generalizing a new computational model from that, if what we have is already coming from such a more general (and quite elegant) model in the first place?
So-called “functional programming” is just a way of forcing CPUs to act like macro processing engines at “run time”.Assuming you’re now talking about actual functional programming, I think you’re missing an important aspect. Yes, term rewriting is doing a lot of the heavy lifting (which I assume is what you’re going for with the macro analogy), but ultimately even pure functional programming languages grapple with side effects / IO and do manipulate state eventually. But there are clear benefits of modeling as much as you can in a pure functional fashion, which doesn’t make any assumptions on how your data types are actually modeled in memory and how your operations are sequenced, unless you need to. Which makes handling stuff like state and concurrency a lot easier to deal with. See Functional Core, Imperative Shell. And Out of the Tar Pit.
For the record, C and Pascal and Haskell and Python and JS and WASM and Scala and many other programming languages, are function-based, while PROLOG is not function-based, and, StateCharts are not function-based.I can see how you consider PROLOG different, as logic programming feels very different to either imperative or functional programming, even though it can be seen as a more extreme form of functional programming, where the actual computation is completely wrapped in the query engine. No idea how StateCharts integrate into your mental model. I hope this doesn’t sound like an attack. I’m trying to poke at some of your statements, hoping to reveal insight in what it really is that you try to make us aware of. As I said in the beginning, I’m tempted to agree with you. For instance, this sounds a lot like something I would criticize too:
In 1972, the game of Pong could be built with about $100.00 worth of chips on one circuit board, whereas in 2024, Pong needs megabytes of memory and a full-blown computer. 2024-1972 = 52 years. Hmm. Sounds like a bad investment, when put in those terms.Yeah, I’m totally with you here. For lots of reasons that seem completely different from yours.
guitarvydas
08/06/2024, 8:54 PMguitarvydas
08/07/2024, 3:20 AMGuyren Howe
08/07/2024, 3:27 AMguitarvydas
08/07/2024, 3:35 AMGuyren Howe
08/07/2024, 3:36 AMStefan
08/07/2024, 10:29 AMguitarvydas
08/07/2024, 1:01 PMls
, wc
, MacOS Finder
, Windows Explorer
, contrasts with Sector Lisp and BLC, etc, etc.guitarvydas
08/07/2024, 9:31 PMStefan
08/07/2024, 11:28 PMguitarvydas
08/08/2024, 10:08 AMStefan
08/08/2024, 10:40 AMguitarvydas
08/08/2024, 11:16 AMStefan
08/08/2024, 1:42 PMStefan
08/08/2024, 1:52 PMStefan
08/08/2024, 1:54 PMguitarvydas
08/09/2024, 2:49 AMguitarvydas
08/09/2024, 2:55 AMguitarvydas
08/09/2024, 12:33 PM