Note: This post is an English adaptation of my original Chinese article (URL). Some parts have been modified for clarity, cultural relevance, or to better fit the English-speaking audience. The original Chinese text is provided on the next page (2nd page) of this post for reference and comparison. I hope this translation bridges the understanding for those interested in computing concepts across different languages and cultures 🙂
In ‘Learn Python the Hard Way’, it is advised that beginners should not use the IDLE that comes with Python. By following this advice, newbies will download other IDEs such as Sublime Text, Atom, Visual Studio Code, etc., and then set up the Python environment, install various related plugins, and subsequently learn some related shell commands in the CLI terminal to open and run Python files.
However, from my personal perspective, although this advice helps Python beginners to better understand how Python files are run in a CLI interaction mode and accelerates learning efficiency with the help of various plugins, it also aids them in learning some shell commands and understanding some IDEs or their processes of running Python and their relationship with Python. On the other hand, starting off relying on various IDE features such as auto-completion, syntax hints, and even automatic formatting, could lead to Python beginners not having a solid foundation in learning Python. Additionally, many Python beginners start learning Python mainly for programming and might not need to initially delve into certain computer science concepts. Personally, I prefer to place this knowledge learning later since when I self-taught Python as a child, I found the initial “setting up a Python environment in an IDE” to be very troublesome as I didn’t understand what “environment setup” really meant. I simply followed the steps in the books or videos, like a thoughtless robot, and ended up failing anyway. It was very frustrating, especially since I was young and clueless about how to fix errors, leading me to give up in the end.
To give another example, a first-grade math curriculum wouldn’t start with teaching Peano’s axioms or mathematical logic, let alone mathematical analysis, as these are too abstruse. Human cognitive development is not simply from the bottom to the top; neither is it linear — it might start with understanding logarithmic functions before moving to exponential ones. Thus, we should first let children grasp the simplest and most intuitive knowledge, like memorizing 1+1=2, before gradually delving into deeper and higher levels of mathematics. I believe this learning approach is most effective. After all, for an intelligent person, the method of learning is as important as the ability to learn. We need to choose the right method of learning for our current ability to achieve the most efficient progress.
Therefore, I think beginners could actually start with Python’s own IDLE, as it doesn’t have any fancy stuff; just create a file, type in the code according to Python syntax, save it, and then run it, with the output displaying in the IDLE shell window. The steps are straightforward and entirely in line with most beginners’ wishes.
However, I don’t support the long-term use of IDLE for learning Python code. As learning progresses, I believe Python learning requires some plugin support, such as syntax and format checking, and various debugging tools to enhance learning efficiency. Sticking with IDLE could cement poor formatting and other bad programming habits, which could become troublesome to change later. For example, when I was younger, I used to place my left hand on ‘asdf’ and my right hand fingers on ‘hjkl’, which I found odd due to the semicolon ‘;’ placement. This habit formed, and later, I realized it was inconvenient as my index fingers would cross and collide, and my right pinky would become very tired, forcing myself to correct this habit later, which was quite challenging. It’s better to start with the correct methods from the beginning, isn’t it? (While learning ability is important, choosing the right direction of effort is equally crucial).
So, you could consider that moving from IDLE to an IDE is a step up for Python learners. IDLE can be seen as a simple environment just for beginners to meet basic programming needs, while an IDE is an environment for learners to truly understand and learn programming.
After all, once learners reach a certain level, I believe they won’t always be satisfied with the requirements of the programming language alone; they’ll also need to delve into other related computer science knowledge. So, I think if beginners have roughly mastered the basics of Python and have become a little proficient, they can then switch from IDLE to an IDE for further learning. Because an IDE is really convenient, with the support of various plugins, the efficiency of writing code can be greatly improved, and it can even motivate and help learners to understand more about the underlying computer science. After I successfully set up a Python environment with Atom, I started searching for many related Python plugins such as Hydrogen, Kite, Linter-flake8, Minimap, and Python-runner (I think that’s the name? Anyway, it can display output directly in Atom on Mac, but can’t handle input), and also learned about different shell language syntax, gaining some one-sided understanding of different operating systems and various interaction methods (CLI or GUI), and even thought about playing with Raspberry Pi, setting up my own server, creating a blog site, writing automation scripts, or even making my own games (if possible, I would also like to try hacking for fun).
Leave a Reply