Programming Languages and Verification

To understand programming language, we need to know about programming language. Programming language is a set of instruction / algorithm given to a computer to perform or compile that task. Some common programming language are Java, C#, Objective C, PHP, JavaScript, and Python. These languages primarily act as translators for the computer as they do not understand spoken languages. Every computer programming language is not too different from one another but they can have different syntax. There are two main components of a programming language syntax and semantics. According to Wikipedia “the syntax of a computer language is the set of rules that defines the combinations of symbols that are considered to be a correctly structured document or fragment in that language”.

The programing language that we write is actually not understood by the computer. The computer translates the program into binary code so that it can understand. Semantics as defined by Wikipedia is “semantics is the field concerned with the rigorous mathematical study of the meaning of programming languages. It does so by evaluating the meaning of syntactically legal strings defined by a specific programming language, showing the computation involved.” In other words, semantics is the meaning of the program or what the line in the program mean.

The next step after making the program is to check if it works and there are no holes in the program. Verification means making sure that that the program works properly without any flaws and with the required requirement. If the program is not well-written then during verification many hurdles might arise due to errors in program. There are two types of verification: dynamic verification and static verification.

Dynamic verification is also known as test or experimentation. It is further divided into three families ‘Test in the small’, ‘Test in the large’, and ‘acceptance test’. Test in small is where the program tests or checks a single function or class. Test in the large is where the program checks a group of classes like a single module, more than one module, and/or the entire system. Whereas the acceptance test is used to check the acceptance criteria of the software. On the contrary, Static verification checks and analyzes whether the code follows acceptance criteria for a software.

In conclusion, a program is well-built if there exists no error in them. There are many programming languages available and they have to be truly verified to define them as perfect code.

Questions on ‘Programming Languages and Verification’:

1. What kind of research is done in this field?

2. What are the limitations of verification and programming languages?

3. How long is the verification process for any program?

Links related to Programming Languages and Verification:

https://en.wikipedia.org/wiki/Computer_programming

https://en.wikipedia.org/wiki/Formal_verification

http://cs.stackexchange.com/questions/13785/formal-program-verification-in-practice