[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Literate programming
Re: Literate programming
Tue, 19 Jul 2022 06:15:37 +0300
On Mon, 2022-07-18 at 11:56 -0400, Tim Daly wrote:
> One early Axiom project question was how to keep Axiom
> alive after the project lead dies (aka me). Almost all projects
> die once the lead developer stops developing. Since Axiom
> is so complex it needs a lot of explanation to transfer the
> required knowledge. I really want it to survive and flourish.
Because project is complex I suspect it needs lot of dedicated
uninterrupted time to understand and maintain/improve it.
Probably you have to live inside this project to do meaningful
work on it (full time). It is hard to get started on complex
project if you have to do it after work, besides family and
other chores on small scraps of free time.
Maybe project will be lucky and someone financially independent
with interest in math and lots of free time discovers it (need for
another Isaac Newton). Maybe Jim Simons donates money to the project.
Unless there exists already one, maybe foundation needs to be
established similar to Linux Foundation:
to ensure that project leaders can afford to work on the project.
> Along the way down the nano-rabbit hole I'm learning to write
> in Verilog to design chips and Forth to program them. Forth
> is ideal as it fits in less than 4K but can use all the hardware.
I did my own forth virtual machine and then forth operating system
on top of it long time ago:
Virtual machine needed DOS to run. Probably can be still used on
FreeDOS. Have not maintained it for long time.
It had filesystem support and had text editor inside.
So one can program now system while using it.
Major problem I have with Forth is that code is write-only.
You have to keep the state of data stack in your head at
every line. When you open method that you wrote long time
ago and scroll in the middle, you don't know what is going on,
unless you read it from beginning to mentally reconstruct
state of stack. You cannot change any line without ensuring
that stack will remain consistent.
Because of that I believe that some higher level language should be
used for most of programming. Maybe that higher level language
can be compiled to forth or forth byte-code, or forth should be
used to implement lisp ?. This manual stack balancing and
optimization should be either limited or shall be left for machine to do.