I have recently come across many programming question in the various discussion sites ( Facebook groups, Reddits, etc...) in which people ask questions such as these ones:
- should I learn Python or C++;
- should I learn Java or Python?
- should I learn C++ or Rust?
While these questions seem to be beneficial, they actually miss one key aspect that is the most important one and individualistically determined: the field of interest.
The field of interest is simply the area that a programmer/ developer wants to focus. Examples include AI (Artificial Intelligence), Data Science, Web development, Software Engineering, Cybersecurity, etc...
This is the most relevant aspect because depending on the area, certain languages are best suited, while others are not. Someone in AI may be of interest studying R for statistical analysis, but for cybersecurity R may not be necessary.
So, now that I have explained briefly this, let me answer how a first programming language should be treated.
It is best for begineers that the first language is taken generally by focusing on programming principles. In other words:
- data types, class building
- conditions/ loops/ logic
- storing information on some files, variables
- developing a gui with Object-oriented principles
- language difficulties
- how to transfer all previous information into a new language (language design)
First, to tranfer the knowledge it is important to read the docs and check what is similar to the first language, then for the main differences it may be a good option to do some hands-on programming related and understand the key differences between the first and the second language codes.
Second, do projects in both languages. Try to answer the following:
- How is the design of a language project related to the other language?
- What hierarchy of code does the language support?
- How GUIs differ between the languages?
While this is not a requirement, sometimes a language gives users shortcuts on how to implement a particular code, how to minimize the program lines and how to make sure that the code works still properly.
Challenge yourself and try to minimize the lines of code.
Consider other factors (this is only a starting point questions) :
- if you need to use form information will the code still validate correctly or are there bugs? If yes, are they critical? If no, are there side effects due to the new code, for example if a class has been changed how does this impact the other classes and main code?
This is only an opinion, a thought-oriented discussion on such questions. If you feel, I missed key aspects or key ideas on a first language to learn, please write it in the comments, and I will edit it in the blog post.