The language one uses to program and to interact with a computational engine is an intimate affair. It must match your thinking, your intuition, and your skill. And it must maintain mathematical formality so that the engine's behavior is predictable.
First, here is a piece I wrote in 1996, my thoughts on where software was heading.
I program mainly in interactive (interpreted) environments, the mind/engine relationship is a lot closer when you have instant feedback. And I use mainly mathematical metaphors. More radical programming approaches can be found in entity-based programming used in VEOS, and in container-based programming used in distinction networks.
Here is my exploration of several programming metaphors that are also programming methodologies. The pieces range over functional, object-oriented, declarative, and more abstract styles. Some stuff was written for self-education, some to show others how formal structures work.