There are many things that define PL, here I will list a few:
- Is this a procedural, OO, imperative?
- It has a strong type check (C #, C ++, Delphi) or dynamic (PHP, Pythong, JS)
- How are links handled? (Does pointers hide like C #?)
- Is a runtime (C #, Java) required or is it native to the OS (C, C ++).
- Does it support streams (e.g. Eiffel needs additional libraries)
There are others, like garbage collectors, parameter handling, etc. The Eiffel language has an interesting function called Design By Contract, I have not seen it in any other language (I think C # 4.0 has it now), but it can be very useful if it is used well.
I would recommend you take a look at Bertrand Meyer's work to gain a deeper understanding of how submarines work and what defines them. Another thing that PL can determine is the level of interaction with the system, this is what makes the difference between low-level languages and high-level languages.
Hope i can help
David conde
source share