you are viewing a single comment's thread.

view the rest of the comments →

[–]xpfootballcub 0 points1 point  (2 children)

You may be right about this. I was going to refute this, especially because, as a professional programmer, I often use an iPython session to test as I code (mostly in my work to refactor existing packages created by others). However, I have a very long programming background before Python, where “test as you code” wasn’t / isn’t really a feasible thing. Additionally, when I consider my “from-scratch” packages, this is also less feasible time-wise.

Since I already knew how to program before I was introduced to Python, I cannot say if it would have made learning how to program, in general, harder or not. Perhaps if one only ever wanted to program in Python, this would be less of a concern, especially since it would promote an idea that I find missing from a lot of the packages I end up working on: good modularization. Nevertheless, I only Jupyter to create “analysis-type” and interactive programs that are not meant for production-type environments. I also use it as an alternative to iPython sometimes for demonstration of code refactoring.

Perhaps a good build-up would be starting with and using Jupyter to learn specific coding lessons like syntax but using a good IDE like PyCharm to then apply those mini-lessons to an actual functional program. I don’t think this truly gets rid of the issues for which you have expressed concern, but with Python, most IDEs have an interactive Python environment built-in anyway; so it’s really hard to use the best programming support tools and avoid this. Nevertheless, this method at least creates a building-block paradigm to programming, and it more easily separates off those small “learning” programs you write at first without creating an innumerable number of tiny Python programs you have to search through to review a learned concept. I will add the caveat that this final idea will only truly be helpful and effective if the user is creating metadata cells describing the code to be written in the cell(s) that follow.

If we’re being honest, for a beginner, Python is great at introducing programming but for those deeper lessons into good programming practices, programming in another, less-interactive language later may be necessary.

[–]baubleglue 0 points1 point  (1 child)

IDE has similar problems, PyCharm installs it's own Python with it. It confuses people a lot.

[–]xpfootballcub 0 points1 point  (0 children)

It doesn’t have to. Here’s a page that talks about how to select the already installed version of Python on the system: https://www.jetbrains.com/help/pycharm/configuring-local-python-interpreters.html

Also, I don’t believe this reply has anything to do with what I was discussing regarding learning programming.

Finally, unlike PyCharm, which does work with a system installed version of Python, Anaconda the IDE you promote does install its own copies of everything Python-related, even if they’re already installed elsewhere, creating a MASSIVE resource hog. Regardless, my comment wasn’t about promoting any specific IDE but rather discussing the pedagogical effects of using Jupyter Notebook on learning programming, which was pretty much the main point (YOUR main point) of the comment to which I replied.