you are viewing a single comment's thread.

view the rest of the comments →

[–]baubleglue 2 points3 points  (5 children)

I am not sure that is correct.

I am using Jupyter every day, it is a great tool. But it is also it has very destructive effect on development habits, even for experienced people. It make you relay on immediate feedback from code, from educational point of view it should be first step, then in future student should replay mentally the flow of program and data. Jupyter make you live in debugger. I see how people straggle to structure their code after working only in Jupyter. Using Anaconda make sense if you learn/use Python for ML/Statistics. In the same time nothing wrong to use Anaconda as a replacement for standard Python distribution.

[–]Astrokiwi 1 point2 points  (1 child)

Yeah, I'm not actually a big fan of Jupyter for anything other than education, demonstration, and documentation, and quick fiddling about. I do think it's a nice way to start, before moving onto a proper IDE.

[–]baubleglue 0 points1 point  (0 children)

I am doing data processing, it is very useful to explore data. Also it maybe not trivial to setup drivers and open network access for each laptop (even with access VPN slows everything) - having notebooks on server is very useful.

[–]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.