The best programming language for beginners

I have always been interested in different ideas about learning programming. Perhaps this is because I remain an eternal student in this field. But today I got acquainted with one unexpected idea for me - to start learning with Java. And I could not keep silent.



I am not a great specialist in pedagogy - perhaps in computer science it is customary to throw students into the water, choosing a place deeper, and there - those who are destined to come up. But it still seems to me that training will be most effective if the teacher introduces the student to various programming concepts one at a time, as complexity increases. Hence, the main requirement for a โ€œtrainingโ€ PL is the ability to use your features in isolation, starting with the most basic ones.



Again, in my amateurish opinion, it is easy to check whether the programming language meets this requirement. Just open the โ€œHello Worldโ€ section on Rosetta Code .



Let's try to list the concepts necessary for understanding these elementary programs.



It is supplemented at the request of radio listeners. Brainfuck, PHP, C, Julia.





Python 2



print 'Hello world!'
      
      







When parsing this code, the teacher should at least briefly explain to his students what keywords , operators, and string data type are . Of course, even without such an explanation, some students (but not all!) Can quickly develop an intuitive understanding of these features. However, it is better to immediately achieve certainty.



Ruthon 3



 print('Hello world!')
      
      







The concept of a function is added to keywords and lines . Yes, the print



function is a plus of Python 3 as an industrial language. But at the same time, a function is a higher-level feature than an operator, and this complicates the study of Python 3 as the first PL. Yes, you as a teacher can postpone the explanation of the need to use brackets for one of the following classes, but this will remain a pain in the brains of your students.



Julia



 println("Hello world!")
      
      







The same basic concepts as in the case of Python 3. But Julia is a high-performance dynamic Java compiled into native code. Bravo!



Basic



 10 PRINT "Hello world!"
      
      







Keywords string TD, operators, numbering of lines of code. Line numbering in Basic is a rather complex low-level concept that mimics the physical memory device of a computer. It can become a stumbling block for a student if the teacher does not pay attention to her.



In later dialects, like VisualBasic, lines of code become simple, non-computable labels . In the first program, tags are not needed. Language, therefore, becomes easier for elementary learning.



Pascal



 program HelloWorld(output); begin writeln('Hello, World!'); end.
      
      







Keywords , string TD , operators , functions , and what else? Since the program takes several lines, blocks , delimiters (or terminators ? I always confuse them) and indents are added to the first concepts. And the program



statement is not so simple ... It seems that the friendliness of Pascal is somewhat exaggerated.



C



 #include <stdlib.h> #include <stdio.h> int main(void) { printf("Hello world!\n"); return EXIT_SUCCESS; }
      
      







Keywords , string APs , operators , functions , blocks , delimiters and indentation , as well as preprocessor directives and macros . It was possible to do without macros in this example, but return EXIT_SUCCESS



in this case is very indicative: C is a traditional system programming language, therefore it is advisable to study it on the basis of a good understanding of the operation of operating systems and with a focus on portability . Otherwise, this PL seems a little more complicated than Pascal.



Php



 <?php echo "Hello world!\n"; ?>
      
      







Besides understanding keywords , string APs , operators and delimiters (or terminators ?), This example cannot be learned without a basic understanding of specific web technologies such as markup languages (HTML) and template engines . Actually, PHP is the template language, a kind of DSL. As a result, PHP is a great learning language for a front-end vendor who wants to delve deeper into backend technology. But learning PHP from scratch is quite difficult.



C ++



 #include <iostream> int main () { std::cout << "Hello world!" << std::endl; }
      
      







Keywords , string AP , operators , functions , blocks , delimiters and indentation , as well as a preprocessor with its directives, scope , streaming input / output ... Ugh, is that all?



Java



 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } }
      
      







Keywords , string AP (even two string APs, but you can keep quiet about it), empty AP , arrays , blocks , separators and indentation , as well as classes , objects (implicitly, but you cannot explain static



otherwise), attributes , methods , modifiers access ... Bozhechki, I want razvidet it all! After all, I only wanted to write mods for Minecraft!



C #



 namespace HelloWorld { class Program { static void Main(string[] args) { System.Console.WriteLine("Hello world!"); } } }
      
      







The same Java, minus access modifiers , plus namespaces . Nothing interesting, we pass by.



Brainfuck



I do not want to list here - it is too voluminous and monotonous. I will only list the basic concepts that need to be learned to understand this example: keywords , operators , variables , pointers , conditions , loops , numeric representation of characters (ASCII table). Yes, Brainfuck is not the most accessible language for beginners.



Conclusion



Of course, in addition to the "quick entry" (ease of understanding elementary programs), there are a number of factors that influence the choice of PL for training. This is the availability of convenient environments and tools for coding, and the quality of documentation, and, finally, practical applicability. But if the first steps in learning are connected with pain and misunderstanding, this may outweigh all the other arguments. In general, learn easily and donโ€™t bother!



All Articles