You have to represent it as plain text files, this comes with constraints
Linear code, only one primary view
If designing a new language, notice how your syntax can either 'include' some annotation (such as typing) or exclude it, but you cant define a language where the programmer controls whether they see an annotation or not. Notice how different this is from defining a data scheme (in a database or something like JSON) because there is expected that there is another layer that controls the presentation details. For programming langauges, however it is assumed that the entire text must be visible exactly in one primary form. Any other views of this are left to the tooling. This conflates the design choices of presentation with semantics.
Many ways to specify nesting
Should you use indentation, curly braces or brackets? This is purely presentation.
Must break up into files
Programs are clsuters of links, these are represented in many different ways in text
Something like a spreadsheet is a capable programmable system but not thought of as a programming language
We need more examples of programmable systems - a new language cannot explore the entire design space!