Photo by Glenn Carstens-Peters on Unsplash
A Correct Method for Complete Novice to Self-study of Programming
Programming is already somewhat hot at present, and it is common to see some people asking how to learn programming on the Internet. Undoubtedly, such people have little experience in programming, and many of them know nothing about it.
Identify the purpose of learning programming
To find out the correct method to learn programming, you have to ask yourself the questions first: why should I learn programming? What's my learning purpose?
The reason is very simple, there are various programming languages, and the programming knowledge is so rich and wide that even professionals can't know everything. Therefore, you should choose a language to learn based on your purpose.
Since this post is mainly for those who do not intend to become a professional programmer, let's first focus on the learning purpose of this group of people. Most of the people who ask such questions should hold this attitude, at least for now (maybe they intend to develop towards professional programmers after learning).
The main purpose of this group of people should be to improve work efficiency through programming and make daily work more automated. Indeed, there are quite a few daily tasks that can be solved easily through programming, but it is very troublesome to do manually, such as merging multiple Excel tables, generating employee card tables from the register of names, and so on. There are many training courses on the street trumpeting how fast the work speed can be improved after learning XX language, etc., which will, of course, make many office workers swayed.
Two levels of knowledge to master
For this purpose, it needs to learn two levels of knowledge:
1. The basic logic of the program
This is what almost all programming languages have, such as variables, branches, loops, and so on. Without understanding these logics, it is impossible to code almost any program. However, this level of knowledge is neither complicated nor too much. Those who have the basic knowledge of using Excel formulas can learn it with a little effort. Moreover, almost all programming languages have similar capabilities in this regard, and hence as long as you learn one language, you will find it easy to learn the others. Furthermore, most programming languages use similar keywords and syntax rules, therefore, it is easy to draw inferences about other cases from one instance.
Nevertheless, if you only learn this level of knowledge, you can only solve some arithmetic problems in primary and secondary schools, such as solving a chicken-rabbit problem and decomposing the prime factors. Although it can train your brain, it is almost useless to assist in your daily work.
Unfortunately, many training books or even training classes only teach this level of knowledge (or, they can only teach this level of knowledge, for the reason described below).
To apply what you have learned, you must also learn the second level of knowledge:
2. Structured data and its operations
The daily work that you hope to solve through programming is actually to process the data at your hand, and most of these data are those that exist in Excel tables or that can be filled in Excel tables, such data has a professional term called structured data. You must learn the concept of structured data and common operations such as tables, records, fields, grouping, joining, etc. Only by understanding these can you truly cope with your daily work. Normally, the structured data appears in batches (there are usually many rows of data in the table), therefore, when understanding the structured data, you also need to be familiar with set-related concepts and operations.
To understand what the daily table data processing tasks are, click here: to see details.
Unfortunately, I have to say it again, unlike the situation where there are countless courses focusing on the first level of knowledge, courses for non-professionals rarely involve the second level of knowledge. Probably only those who engage in database development will learn the second level of knowledge on purpose, and maybe only database courses will systematically introduce such knowledge. But the structured data is the basis of daily work, and it is not so difficult for non-professionals to master. For example, do you often use Excel to filter, aggregate, or even join (you may not understand this word, what it does is actually what VLOOKUP does), but if you have not learned the structured data systematically, you will be confused when encountering more complicated situations.
Once mastering these two levels of knowledge, non-professionals can really deal with the daily work with ease, and work efficiency will be improved rapidly.
Professionals who need to master two levels of knowledge
Having talked about non-professionals, let's briefly talk about those who intend to become professional programmers. There are two groups of people who program based on the above two levels of knowledge (mainly the second level; as the first level is the basis of all programs, it is not necessary to discuss them here).
1. Data scientist
Most of the data faced by this group of people is also structured data. Of course, the more important task of data scientists is to design algorithms and build models. These tasks also use structured data, but the operations involved are not the same as those on table data mentioned above and are generally no longer called structured data operations. However, the workload on algorithms and models usually accounts for 20-30% only, and the data scientists spend most of their time preparing the data, and the preparation work mainly uses the second level of knowledge mentioned above.
Many data scientists are only familiar with algorithms and models and unfamiliar with the conventional operations on structured data. As a result, the efficiency of preparing data is low (slow in both coding and program execution), resulting in a lot of time delay. Although mastering structured data knowledge does not make your model better, it gives you more time to study algorithms.
2. Programmers developing industry information system
This group of people is probably the most extensive group of programmers. They need to deal with the database every day; especially those who work on the reports and statistics, and what they process is exactly the structured data. Having mastered all structured data knowledge, it will be much easier to design the computing and processing methods. However, this group of people should learn the database knowledge seriously, and naturally, they will make up this level of knowledge themselves.
Are there programmers who don't need to master the second level of knowledge?
Yes, surprisingly, those very professional system programmers (working on operating systems, network transmission), or algorithm engineers in specific fields (video, audio, etc.) require less knowledge of structured data. This group of people, however, are heavy programmers and will not read this post at all, and thus there's no need to pay attention to them.
Therefore, almost all the people who read this post need these two levels of knowledge.
How to learn programming
Once knowing what to learn, it's how to learn. First of all, you should ask yourself a question: which programming language should I learn?
For the first level of knowledge, there should be a lot of choice theoretically, and you can even choose any language because this level of knowledge exists in any programming language. In this case, the only thing you need to do is to find a language that is good at processing structured data, to facilitate learning of the second level of knowledge, and to allow you to apply what you've learned.
Although this is true, don't forget the learners are those who know nothing about programming. Therefore, the environment should not be configured too complicated, otherwise they will get confused. For such learners, it's better to learn an out-of-the-box language, and preferably, without installation.
In the early days (more than 30 years ago), all machines were installed with BASIC language. Indeed, BASIC was available directly without installation, but what's unclear is why BASIC is no longer installed at present, and I don't know if this is progress or regression.
Admittedly, there are languages that do not need to be installed at present, mainly including two languages: one is JavaScript which comes with a browser, and the other is VBA which comes with Excel (available in all Office components). However, JavaScript's functions are relatively specific, and even if you learn it, it doesn't help much, and hence it's meaningless; VBA is much better, but its ability to process structured data is limited. Moreover, the point is that although these two languages are installation-free, when you want to use them, you have to understand many concepts inside the browser and Excel (called objects in professional terms), which are more difficult than the program logic itself, therefore, they are not suitable for beginners.
Sometimes I miss the BASIC language back then.
Why Python is not the best choice for beginners?
How about Python with training courses everywhere? Indeed, it looks attractive.
If you only want to use Python to learn the first level of knowledge, basically it is not a big problem. It is not difficult to install only the basic function package, and coding and running in its development environment is not a problem as well.
But if you want to learn structured data in Python, for most non-professionals, I can tell you for sure: you will never learn! Let alone apply what you've learned.
There are three reasons:
1. To use Python to process structured data, an open-source package called pandas is required. The pandas has not been directly packaged into the installation package of Python, you have to download and install it yourself. The trouble is that the installation process is not simple since you have to configure a lot of things that make you completely confused. Of course, you can also install with the help of some third-party programs, but the installation of such third-party programs itself is a trouble. When the program starts up, many engineering environments (originally designed for large applications) need to be configured, by which you will be overwhelmed.
2. The key problem is that pandas is not originally designed for structured data, and is not the table (the set consists of many rows of data) that we are familiar with, but a matrix. If using Python to process structured data, it can perform some simple operations such as filtering and merging, but when it comes to more complex operations like grouping and ordering, it will confuse beginners. Moreover, its design is not consistent, for example, there are many kinds of sets, each with a different syntax. If you want to memorize them, it is basically by rote. To make it clear, we have to look for examples everywhere as it is difficult to draw inferences from one instance. Click here: to learn more on the reason why Python is not suitable for beginners. In the table of contents of previously recommended weblinks, you can find quite a number of problems that are difficult to code in Python.
3. The last reason is debugging. Since you can't code right in one go, debugging is also a particularly useful tool for learning programming languages. The debugging function of the Python development environment is not very good in the first place, and the pandas is not the native component of Python, therefore, debugging is more difficult.
Python is not a language designed for non-professionals at all. For non-professionals, the power and convenience of Python only exist in training courses. Training institutions first trick people into learning Python, and then the class ends after learning the first level of knowledge. Those who can use Python to do some work in their daily work are basically professionals, and you can rarely see someone around you using Python to process Excel (even if processing in Python, they are processing simple format Excel in a simple way). The real users of Python are the heavy professionals (mainly those who do AI).
Learning Python does not help, what else?
Does other mainstream languages help?
Java or C/C++? It is definitely not recommended for the following reasons: i)the object-oriented itself is something advanced, and is not suitable for beginners to understand; ii) the ability to process structured data is almost zero, and it is useless even if you learn; iii) the development environment is very complex, after all, it is used for professionals to develop large software, and thus complexity makes sense.
It's unimaginably that some middle schools are teaching Java as a computer introductory course.
What about SQL? In fact, using SQL to process the structured data is a good choice. SQL can be said to be an exception in this regard. The reason is that you can skip to the second level of knowledge without learning the first level (that's why we said "almost" instead of "all" earlier), and you can do a fairly complicated query without understanding the concepts like variables, and loops.
However, the problem with SQL is that basically it can only run in the database, and the installation and configuration of a database is a professional task, this will get you in trouble. Moreover, even if you learn it, when you want to deal with Excel files in the future, you have to import the data into the database first, which is annoying.
Having said so much, all the languages mentioned are not suitable, is there no suitable one?
To be honest, if you only look at these mainstream programming languages, this is really the case because they are so difficult to learn, while the simple languages are useless.
For this reason, although the programming concept is hyped hot, the non-professional complete novice cannot learn and apply it all the time, resulting in people constantly asking what to learn. In this case, it is useless to open more training courses, because the training courses do not have the ability to improve or invent programming languages. Essentially, it is a problem about whether there exists clay, having nothing to do with how to make bricks.
Introducing SPL: The most suitable language for novice
SPL is probably the only programming language suitable for a non-professional complete novice in this world.
As a programming language, SPL has a complete basic program logic (the first level of knowledge), and it has a full name "structured process language", which was originally invented to process structured data. Due to its strong capability in structured data processing, it can be said that it has the most complete capability in this regard among current programming languages, far exceeding Python and SQL. It is not a problem to code in SPL to perform operations such as grouping, joining, ordering, and even big data (Python is helpless when it comes to big data; coding in SQL to perform order-related operations will make you completely confused). Moreover, SPL has the following characteristics: the well-designed syntax is easy to learn and understand; directly calculates the data in Excel files, and executes SQL on the file (SPL provides most of the capabilities of SQL, and hence learning SQL makes you avoid installing a database); one-click installation, featured cell-style code makes it easy to debug, etc., and more importantly, it's open source and free!
However, SPL is not specially invented for beginners, but to solve the difficult-to-code and slow-running problems in SQL. But when you really use it, you will find that its system is simple and easy to use, and very suitable for beginners to learn programming. More importantly, learning SPL can really put it into practice.
Click here for the SPL programming book at: , where you can find some practical code examples, you can also click the first recommended weblink in this article at: [7 SPL Desktop and Excel processing](c.raqsoft.com/article/1617693922993) to find more.
After learning SPL, most of the daily work is not a problem, and you can find many examples of using SPL to process daily data tasks in Raqforum.
If you want to take more control over Excel, you can learn some VBA knowledge, after all, VBA is the native language of Excel, and some capacities of VBA are beyond the reach of external programming languages anyway. You can use VBA to call SPL to make up for its lack of processing structured data.
To this point, it's enough for non-professionals.
Possible directions for professionals
Finally, let's talk about the possible development direction of professionals:
1. Continue to use SPL.
SPL is also suitable for the calculations in industry application software (most calculations are actually related to structured data. For such complex operations, it is inconvenient to code in SQL, and sometimes there is no SQL available), as well as the big data computing (it requires learning a lot of high-performance algorithms, it's really a little difficult).
2. Python
Python is a language for professionals, which has a large number of AI algorithm libraries. Basically, no other language is comparable to Python in this regard except for expensive MATLAB or SAS. If you are determined to be a data scientist, you probably need to learn Python at present.
3. SQL
Database development is still inseparable from SQL. Although its computing power is not strong enough, it has good compatibility and exists everywhere. It is so easy to understand the operations of SQL after learning SPL.
4. Java, C#
At present, most of the industry applications are developed in Java and C# (more in Java). In this case, it is necessary to understand something about object-oriented, which is not in SPL and needs to be studied carefully.
5. JavaScript
The development inside the browser mainly depends on JavaScript. Its syntax is very simple, and the difficulty is to understand many mechanisms of the browser and web itself.
6. C/C++
This is a language used by senior programmers to do the system-level development, it is far beyond the topic of this post.
To learn more about esProc Desktop, which helps you perform data processing easily and effectively: scudata.com/esproc-desktop. It's absolutely FREE & EASY to download and apply!