Softanza
StartFrançais
Softanza
How to think, how to write, how it is judged

The Softanza way

One discipline, for a person and for an AI agent. Think the problem in seven steps, write each step in fourteen rules, and let something judge the result.

Thought and code, side by side

The first slide of 2022 on expressiveness puts a programmer's steps of thought on the left and, on the right, the same steps as code, as if the text on the left had been copied and pasted and Softanza asked to run it. That slide is the whole discipline on one page. This page is that slide, made to run.

Every step has a rule or two of writing that serves it, and every rule serves some step. A line that follows the rules is a step of the model made visible; a line that breaks them hides a step.

Seven steps, each written

  1. Define the problem in natural terms and take its keywords out. rules 14, 12Uppercasing and then spacifying 'softanza', so we get 'S O F T A N Z A'
  2. Select the object the problem is about. rules 1o1 = new stzList([ "A", "", "B", "", "", "C" ])
  3. Ask whether it contains. rules 9, 2? o1.ContainsEmptyStrings() #--> 1
  4. Ask how many. rules 9, 3? o1.CountEmptyStrings() #--> 3
  5. Ask where. rules 7, 10? o1.FindEmptyStrings() #--> [ 2, 4, 5 ]
  6. Act on the positions, or call the verb whose name says the act. rules 6, 4, 8, 5o1.ReplaceEmptyStrings(:With = "~")
  7. Celebrate and repeat: the answer is read under its arrow, and the chain keeps its history. rules 3Qh(12500).AddQ(500). ... History()

The rules are numbered as on the page that states them. Here are the steps run on one small problem: clean the empty items out of a list.

Step 1, define the problem in natural terms: here the definition is already the program.

Softanza
# 1 · say the problem in natural terms: the sentence runs
? @@( Naturally("Create a list with [ 3, 1, 3 ] and remove its duplicates").Result() )
Output
[ 3, 1 ]

run on 2026-10-08 21:47 inside the library at commit 4a184e6f0; taken from base/test/natural/multilingual_pack_narrated.ring(opens in a new tab)

Steps 2 to 6 on one object: select it, ask whether, how many and where, then act with the verb whose name says the act.

Softanza
# 2 · select the object
o1 = new stzList([ "A", "", "B", "", "", "C" ])

# 3 · does it contain?
? o1.ContainsEmptyStrings()

# 4 · how many?
? o1.CountEmptyStrings()

# 5 · where?
? @@( o1.FindEmptyStrings() )

# 6 · act on the positions, with the dedicated verb
o1.ReplaceEmptyStrings(:With = "~")
? @@( o1.Content() )
Output
1
3
[ 2, 4, 5 ]
[ "A", "~", "B", "~", "~", "C" ]

run on 2026-10-08 21:47 inside the library at commit 4a184e6f0; taken from base/doc/narrations/stz-mental-mode-narration.md(opens in a new tab)

Step 7, celebrate and repeat: one step per line, the dot at the end, and the chain remembers every value it held, the first one included.

Softanza
# 7 · and again: the chain keeps the history of its steps
? @@( Qh(12500).
	AddQ(500).
	RetrieveQ(1500).
	DivideByQ(500).
	MultiplyByQ(2).
	History() )
Output
[ 12500, 13000, 11500, 23, 46 ]

run on 2026-10-08 21:47 inside the library at commit 4a184e6f0; taken from base/test/string/468_pr.ring(opens in a new tab)

The Softanza way Each step is one question asked of one object, and each answer is read under its arrow. A beginner can follow the seven steps in order, an expert can skip to the verb that does it all, and an agent is held to the same shape.

Three widenings

The seven steps are the core. The library widens them in three directions, each told on its own page.

The world the problem lives in

Knowledge sentences and small languages say what the objects are: _("Apple").IsA(:Fruit)_. That is the semantic model beside the mental one. See natural, and executable.

The frame the act depends on

Scope-oriented programming names the invisible frame of a behaviour, closes it into a few named scopes, and lets the verb choose the scope at the call.

The gap, for someone who does not code

When the person or the agent does not know, Softanza asks, and the answer is judged before it is admitted. See wise coding, and answering by example.

Where it is judged

A discipline that nothing judges is advice. The courts that exist, and the one that does not, are these.

  • The learner. The course teaches the thinking first, the families called Formulate and Express, and a ladder of five levels is earned by projects that a guard checks. See the book and education.
  • The written answer. The test form of the library, a call with its answer under an arrow, is read as a promise and compared with what really printed.
  • The library's own code. Fourteen house rules run over a graph of the code and judge the library's naming of its own methods.
  • The forms of the vocabulary. The grammar of the function forms is declared as data in the charter of Haro, which is in construction, and it judges the names the library ships.
  • A program written with the library. No court yet (designed). The fourteen rules as checks over a snippet, run on every example on this site and on every line an agent proposes before it is shown, are specified and not built.

The agents read the way first

The files made for agents carry the discipline as data, ahead of the list of methods, so that an agent reads the way before the names, the way a learner does in the first chapter: llms.txt and agents/index.json. Both are generated from the same file as this page and the craft page, so one change reaches every surface.

Every callout on this site headed The Softanza way links here.

in construction The steps and rules are read from the library's articles, its tests and the 2022 slides, and are stated here as rules. What nothing judges yet is the code a person or an agent writes. No visitor and no agent has yet been shown this page, so the claim that an agent learns the way from it, and does not learn a reduced dialect, waits for a measured session.

Sources: the article the Softanza mental model, whose seven steps these are; the article functions as linguistic expressions, from which most of the rules are taken.