HOW TO KNOW A GOOD OR BAD PROGRAMMING LANGUAGE
Software engineering is a scientific and principled task, therefore justification for what needs to be improved or which programming language befit a programmer must be backed with scientific and engineering principles.
It’s not unusual to hear software engineers talk about which programming language is the best and which one should you learn to be referred to as a “real” software engineer. This and many more casual discussions has led to some unworthy challenges in the workplace, but it isn’t the topic of conversation that is worthless, it is the approach in answering that question that is questionable and has turned too many well-meaning software engineers against one another, which as a result makes the workplace hostile to many software engineers (anyone that has been seen as an amateur engineer will understand this) but many has actually learnt how to handle it. A principled approach to evaluating a programming language is a scientific approach to all reasonable questions in software engineering field and the following points better explain the principles of evaluating programming languages.
EXPRESSIVITY
By this, it means the ability of a language to clearly reflect the meaning intended by the programmer. Thus, an expressive programming language permits an utterance to be compactly stated, and encourages the use of statement forms associated with structured programming which could be in form of the programming language keyword, reserved words which are solution-expressive by default. Javascript clearly illustrate this with the availability of various solution-expressing keywords like “export” for exporting code blocks and “const” for declaring constant variable likewise “function” to declare an activity-performing code as seen below.
WELL-DEFINED
This means that the language’s syntax and semantics are free from forms of ambiguity, which means they are internally consistent and complete. Thus, the implementation of a well-defined programming language should have, a complete specification of all the language’s expressive forms and meanings. The software engineer, by the same virtue should be able to predict exactly the behaviour of each expression before it is actually executed. Thus, well-defined programming language helps in easy application running and debugging. The example below shows how a well-defined language like javascript can enhance code readability.
DATA TYPES AND STRUCTURES
By data types and structures, we mean the ability for language to support a variety of data values ( Integer, Float, Boolean, strings, pointers) and non elementary collections of these latter include arrays and records primarily, but do not exclude such dynamic data structures as linked lists, queues, stacks and trees. Many are the developers who complain about a programming language not being statically typed which in most part include JavaScript, fortunately not the static declaration of a variable in a specific data type makes a language great but the flexibility of the language to pass as many data type as possible. JavaScript, PHP and python has proven this to be true, some data structures are called differently from one language to the other but all share same principles.
MODULARITY
The modularity of a programming language allows you break a program to different purposeful parts that communicates together to perform one or more tasks without obstructing each other in any way. Modularity implement the concept of sub-programming, which means the ability to define independent procedures (classes, objects, methods, functions) and communicate via parameters or global variables with the invoking program. This principle has enhanced the world of continuous integration and continuous delivery while few programming languages are extensible in the sense.
INPUT AND OUTPUT FACILITIES
In evaluating a language’s input-output facilities, we are looking at its support for sequential, indexed and random access files, as well as its support for database and information retrieval functions. Any language that does not have ease support for rich I/O may result to some bottlenecks. PHP remain a strong backend language because it has a rich and easy to use I/O feature which Nodejs and Python still require external libraries to help with.
PORTABILITY
A programming language, which has portability is the one which is implemented or can run on variety of computers. That is, its design is relatively machine-independent. Language, which are well-defined, tend to be more portable than others. Currently, it is not surprising to find some Lisp languages like Javascript or C implemented on a variety of machines including wristwatches.
EFFICIENCY
An efficient language is one, which permits fast compilation and execution on the machines where it is implemented. For example, a LISP program, which is compiled, will execute many times faster than the same program running under an interpreter during program development, which helps engineers to be performance-conscious.
PEDAGOGY
Some programming languages have better “pedagogy” than others. That is they are intrinsically easier to teach and to learn, they have better textbooks, they are implemented in a better program development environment, they are widely known and used by the best programmers in an application area. Some languages, like Java, Javascript and PHP, were designed especially as pedagogical tools. Today Python, Javascript and Java enjoys preeminence in high schools and universities that teach programming.
GENERALITY
This means that a language is useful in a wide range of programming applications. Since the explosion of the internet, it turned out that the programming language that’s used for most online activities gains wide range of application and this has made languages like Javascript, Python and Flutter more popular recently.
Conclusion
It’s quite obvious that fame of a programming language does not mean it’s superior to any other language neither is any programmer writing a popular language better than another that’s not.