Introduction
In this article, I am going to suggest a programming language that is most suitable for introductory courses in computer science and Information technology as well. This language should pass some crucial requirements that help students put their little legs on the beginning of the long road in the programming profession. Strictly speaking, the suggested programming language should satisfy the following requirements.
Requirements of the Suggested Programming Language
- It Should be a Natively Complied Programming Language.
- It Should be a Procedural programming Language
- It Should have Low Level Access.
- It Should be a Strongly Typed Programming Language.
- It Should follow the "C" Syntax and Control Structure.
- It Should be Standard and Modern Programming Language.
- Bonus: It Should be an OOP Programming Language.
Why Should It be a Natively Complied Language?
In the area of translating the source code to a code executed by the computer, programming language can be classified into: Natively Compiled[1] languages, Intermediate Compiled[2][3] languages, and Interpreted[4] languages.
The code of a Natively Compiled language[1] is translated directly to machine code (0s and 1s or assembly code). That generated code can be executed directly by the CPU. Examples of such languages include C, C++, and Cobol.
The code of an Intermediate Compiled language is translated into a code that cannot be executed directly by the CPU. In this case, the generated code needs to be executed by a run time program. Examples of such languages include Java, and C#. Java is compiled to a byte code that is executed the Java Virtual Machine(JVM)[2]. C# is compiled to Microsoft Intermediate Language(MIL) that is executed by the Common Language Runtime(CLR)[3].
In Interpreted languages[4], there is no translation at all !, instead the original code, written by the programmer, is executed directly by an interpreter program! Examples of such languages include PHP and JavaScript.
So Why Should the Suggested Language Be Natively Compiled?
- Students need to take solid knowledge of how computer works and that it only sees the whole world in the shape of Zeros and Ones (0s and 1s).
- Students need to follow computer evolution from past to future, since natively compiled languages are predecessors of the others.
- Compiled languages are faster and more efficient than others.
- Micro controllers are programmed by Natively Compiled languages; hence opening the door for students to enter more platforms.
- Natively Compiled Languages are used in building system software such as operating systems, hardware drivers; hence opening the door for intelligent students manipulating their intellectuality!
- Compliers and Runtime Interpreters are, themselves, written by a Natively Compiled language, so opening more doors for intelligent students. (They may invent their own programming languages!)
- Advanced applications that require speed and efficiency, such as browsers, are all written in Natively Compiled Languages. For developing advanced applications that need to descend into operating system functions, we need using nothing but a Natively Compiled Language.
Why It Should be Procedural Programming Language?
Procedural programming[6] is a programming paradigm, derived from structured programming[5] .
Following the structured program theorem, all programs are seen as composed of control structures: "Sequence"( ordered statements) ,"Selection" (one or a number of statements is executed depending on the state of the program), and "Iteration"( a statement or block is executed until the program reaches a certain state)[5] .
Procedural programming[6] is based on the concept of the procedure call. Procedures, also known as routines, subroutines, or functions, simply contain a series of computational steps to be carried out structurally. Any given procedure might be called at any point during a program's execution, including by other procedures or itself. The first major procedural programming languages appeared circa 1957–1964, including Fortran, ALGOL, COBOL, PL/I and BASIC, and C. [6]
Computer processors provide hardware support for procedural programming through a stack register and instructions for calling procedures and returning from them. [6]
So Why Should the Suggested Language Be Procedural?
- Students need to follow the computer languages evolution from past to future.
- Lots of programming languages in the industry are using Procedural programming, examples of these language include PHP, C,C++, and JavaScript. Most of these language use both OPP and Procedural features. Here, the student will not be confused when calling a function such as
echo()
in PHP. - Student takes solid knowledge about scoping and variable scopes.
- Object Oriented Programming (OOP) [9] methods are nothing but functions (Procedures) that perform different tasks of an object. Calling a method of an object from inside its class can be performed just like calling a function in Procedural programming. Variables scoping concept is also needed to be understood in OOP.
- By understanding and using functions, students will easily understand functional programming.
- There are scenarios in which Procedural programming is sufficient such as for small projects, or micro controllers programming.
- Less confusing, short introduction, and fast going coding: For writing a "
Hello World
" in Procedural programming, there is no need for going through a long introduction.
Why It Should have Low Level Access?
A programming language that has low level access is the one that can reach the hardware such as memory and drivers[8]. By using such kind of a programming language ,we are widening the space for students entering more programming types such as drivers programming, micro programming, image, sound processing, and so on. Programming languages that have low level access include C, and C++ .
Why It Should Be Strongly Typed Programming Language?
In computer programming, programming languages are often colloquially classified as to whether the language's type system makes it strongly typed or weakly typed (loosely typed).
Generally, a strongly typed language has stricter typing rules at compile time, which implies that errors and exceptions are more likely to happen during compilation. Dynamically typed languages (where type checking happens at run time) can also be strongly typed. Most of these rules affect variable assignment, return values and function calling.
A weakly typed language has looser typing rules and may produce unpredictable results or may perform implicit type conversion at runtime[14].
So Why Should It Be Strongly Typed Programming Language?!
It is obvious that students in their early life of programming make lots of mistakes in coding, and they do not have sufficient experience in correcting these mistakes! In strong typed programming, these mistakes are caught by the compiler and highlighted in the editor. In this case, students are able to see their mistakes and correct them. In strongly typed language, we avoid runtime errors which greatly harden student's life and make programming a heavy boring task!
Why It Should Follow the "C" Syntax and Control Structure?
Control structures are blocks of code that dictate the flow of code execution[7]. For example, in "C", every statement ends with a semi colon (;). For more information about "C" control structure, you may refer to this link [10]. Programming languages those follow "C" control structure include JavaScript, Java, PHP, C#, Dart, C, and C++ . These languages are referred to as "C family languages".
So Why Should It Follow the "C" Syntax and Control Structure?!
Students must learn knowledge and acquire experience that greatly helps them in getting jobs quickly and with sufficient income. Considering this fact, if we study job demands for programming languages, we see that those following the "C" Syntax and Control Structure take the lion's luck!.
Having a look at this link [11], we see that job demand in 2019 for programming languages such as JavaScript, Java, PHP, C#, C, and C++ , all together, is 186,000 vs. 76,000 (for both Python and Perl) with present ~71%. Noting that Perl syntax is not very far from "C" Syntax.
Why It Should be Standard and Modern Programming Language?
By standard, I mean that the desired programming language should not be related to specific company; hence academia should be neutral not taking one side against another in the raging market war. So we should exclude programming languages such as Java and C#!
Next, the desired programming language should be modern: we have to take our students gear forward; that street is moving so fast any kind of back-warding will collide them away!
Bonus: It Should be an OOP Programming Language.
OOP or Object Orient Programming[9] is a programming paradigm that builds up the software pieces in the form of objects. An object is anything that exists in time and space, and normally has properties, perform actions, beside responding to actions done by adjacent objects.
The main purpose of OOP, among other purposes, is helping designers and programs develop software with good quality, maintainable ,and extendable.
OOP is the trend of developing software nowadays , student should learn object oriented thinking from their early life. So I advise when designing such an introductory course, is involving some kind of introduction to OOP in the last chapters.
Compiling Up!
Putting all things together, we will conclude that C++ is the Winner language that should be (actually must be) taught in introductory courses for programming.
C++ is a general-purpose programming language created by Bjarne Stroustrup[13] as an extension of the C programming language, or "C with Classes".[12]
C++ puts the students in the right way, taking them, gradually, through evolving of computer languages, opens the doors for them understanding all programming paradigms; yet still needed for modern software development. works in small devices such as micro-controllers up to complicated systems.
What About Python, Java, PHP, and C#?
Designing a useful curriculum for computer science and information technology, requires equipping the students with all hot technologies in the programming area. So, in the advanced years, and after understanding C++ , a curriculum may include one or more of programming languages such as Python, Java, PHP, or C# . JavaScript may also be included as a part of internet and web programming course.
References
- https://en.wikipedia.org/wiki/Compiled_language
- https://en.wikipedia.org/wiki/Bytecode
- https://en.wikipedia.org/wiki/Common_Intermediate_Language
- https://en.wikipedia.org/wiki/Interpreted_language
- https://en.wikipedia.org/wiki/Structured_programming
- https://en.wikipedia.org/wiki/Procedural_programming
- https://www.valid-computing.com/control-structures.html
- https://en.wikipedia.org/wiki/Low-level_programming_language
- https://en.wikipedia.org/wiki/Object-oriented_programming
- http://www.circuitstoday.com/control-structures-in-c-and-cpp
- https://learnworthy.net/7-most-in-demand-programming-languages-of-2019/
- https://en.wikipedia.org/wiki/C%2B%2B
- https://en.wikipedia.org/wiki/Bjarne_Stroustrup
- https://en.wikipedia.org/wiki/Strong_and_weak_typing
History
- 20th January, 2020: Initial version