Writing correct code in software engineering is a complex and expensive task, and too often our written code produces inaccurate or unexpected results. There are several ways to deal with this problem.
In practice, the most common approach is to write tests, which means that you are writing more code to test your original code. However, these tests can only detect problems in specific cases. As Edsger Dijkstra noted, “testing shows the presence, not the absence of bugs.”
A less common approach is to find a proof of correctness for your code. A software proof of correctness is a logical proof that the software is functioning according to given specifications. With valid proofs, you can cover all possible cases and be more confident that the code does exactly what it was intended to do.
Val is a research programming language to explore the concepts of mutable value semantics and generic programming for high-level systems programming.
The Hare programming languageis a systems programming language designed to be simple, stable, and robust. Hare uses a static type system, manual memory management, and a minimal runtime.
может использоваться как для описания языка, определения свойств языка, так и для целей формальной верификации программ
Operational semanticsis a category of formal programming language semantics in which certain desired properties of a program, such as correctness, safety or security, are verified by constructing proofs from logical statements about its execution and procedures, rather than by attaching mathematical meanings to its terms (denotational semantics).
The basic idea behind SOS is to define the behavior of a program in terms of the behavior of its parts, thus providing a structural, i.e., syntax-oriented and inductive, view on operational semantics.
Visual programming languagelets users create programs by manipulating program elements graphically rather than by specifying them textually.