Home > Language > Software languages
Software languages
Languages for telling computers what to do. A specific kind of formal language — one designed to be both human-readable and mechanically executable.
Categories
Software languages fall into several broad categories:
- Imperative — tell the computer what to do step by step. Assembly, C, Go. State changes over time.
- Functional — describe computations as transformations between values. Haskell, Clojure, OCaml. Ideally no side effects.
- Declarative / logic — specify what should be true, not how to achieve it. SQL, Prolog. The runtime figures out the how.
- Markup — describe structure. HTML, XML, Markdown. Not executable on their own.
- Query — specify retrievals. SQL, GraphQL, SPARQL.
- Scripting — glue code, automation. Python, Ruby, JavaScript — these are full languages, scripting is a use.
- Domain-specific — narrow languages for a particular domain. Shader languages, regex, Excel formulas.
These categories overlap. Modern languages are often multi-paradigm.
Relation to formal language theory
Formal language theory classifies languages by the grammar needed to generate them: regular, context-free, context-sensitive, recursively enumerable — the Chomsky hierarchy. Most software languages are context-free at the parsing level; their semantics sits in type systems, evaluation rules, and execution models.
Whether the software-language categories above map cleanly onto the Chomsky hierarchy, and whether that mapping reveals structural properties useful to SPLectrum’s framework — open territory. More coming.
Where SPLectrum engineering sits
SPLectrum’s engineering uses Bare as the default runtime — JavaScript, dynamically typed, flexible. Data schemas are defined in AVRO, a declarative schema language. Protocols in SPLectrum are data transformations; see the applied seed — engineering for the foundational translation.
See Let’s Talk Software Languages for the blog conversation.