The evolution of products is characterized by mechanization, electrification, computerization and now cognitization and connection. They all describe jumps in science, theory or innovation.
Doing this we try to express laws of nature in terms of statements of tasks. A robot program running at a robot control is a task that expresses a certain kinematic and dynamic theory of mechanisms. It shows, whether it is possible or not. In constructor theory such tasks are called constructors.
In short, in this view physics and information theory are combined.
If we think of the history of tools from the fist wedge to the computer, we'll see that higher level tools are built by/atop lower level ones. But a computer is not a mere tool…it's a universal (programmable) machine that empowers the development of a vast variety of tools...But programming languages follow the same principle.
Tools enable more people to build more things.
Expressions have two aspects: a language (their interface) and an operational-semantics (their evaluation) aspect. Programs expressed in programming languages carry out tasks. Programming tools enable more people to program more.
They provide certain programming styles and built in algorithms and knowledge. A declarative style needs usually more algorithms and knowledge and an offer to select them automatically than a procedural style.
IMO, a modern programming language is multi-paradigm, knowledge-based, automated, multifunctional, expressive…and (consequently) symbolic.
In computation we usually thought of the manipulation of numbers in computers.
The idea of symbolic languages is to represent things in the same way and let computers manipulate them. A symbol can describe a mathematical expression, graph, geometrical object, movie, … and even a program. A representation in the symbolic way means, they are pieces of data.
Domain-specific languages provide domain-specific language expressions (to represent a domain-specific problem), data and knowledge. If the domain needs quantitative treatment the knowledge is algorithmic.
Putting everything together
Wolfram Language is a language that puts everything together...It allows for programming a vast variety of solutions AND build hierarchies of languages - among them domain-specific ones. They all inherit the symbolic structure and become knowledge-richer and richer.
We've built the UnRisk Financial Language atop Wolfram Language…and extended it into other domains of steel making, plastics fabrication...
And because it's declarative, financial experts just think of new, say, portfolio and risk management processes and as they think about them they write them down and operate them in their semantics of risk-informed investment-, assert- or wealth management or what have you.
They Think It. Build It. It's a completely new way of innovating in quantitative fields. You write down big idea non fiction stories that operate tasks…
Think and build the most innovative, cognitized and connected things for the future.
I'll be pleased to help...