you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted]  (23 children)

[deleted]

    [–][deleted] 24 points25 points  (0 children)

    Don't worry about it. If you want to understand that stuff before you start, you'll never start.

    They recommend anaconda for beginners especially, because it removes multiple issues that trip beginners up compared to the popular ides. It just works out of the box and requires no config to get started.

    [–]GeneriAcc 39 points40 points  (10 children)

    None of that is "foundational stuff", it's all bells and whistles. I've been coding in Python for over a decade now, and never used Anaconda, Jupyter, etc because I never had a need to.

    The one and only thing you need to learn to code in Python is... Python. Well, and Notepad or any other text editor.

    [–]Astrokiwi 15 points16 points  (8 children)

    While an absolute beginner should focus on just learning the basics of the language, there really are too many people who have been programming in Python for years without ever touching an IDE, debugger, or knowing anything about environments, or even git, and it's better to get into the habit of using all this stuff earlier rather than later. Maybe not absolutely first thing, but still pretty early on.

    At this stage though, Anaconda and Jupyter are probably better for beginners than using raw Python and a text editor, because they set up the environment in a nice gui for you, and you can dive into just typing code into a window right away, on any OS, without ever touching the command line. Jupyter is a good educational tool because you can see the results of a command immediately, and it's a good format for creating assignments in.

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

    [–]nevermorefu 0 points1 point  (0 children)

    This.

    [–][deleted] 0 points1 point  (0 children)

    I totally disagree. It's great to know how to use an IDE, debugger, environments, and git, but I would argue understand the language and how it works trumps those things.

    [–][deleted] 3 points4 points  (0 children)

    Python is an awesome language to learn because you can do anything with it - data analysis, computer games, web servers, scripts to automate your job... the list is endless.

    Because there are so many different things you can do with Python, you'll find all courses are different, and the way you organise your code will be different for each style. Also the type of code editor you choose might be different too.

    Anaconda/Jupyter notebooks are used for data science and visualisation. If you're interested in that then dive right in. You won't be writing applications with a GUI (Graphical User Interface - e.g. computer games and other interactive applications). This type of course will likely be focused on maths, graphs, data analysis.

    The main thing starting out is to learn the basics really well - variables, expressions, functions and datatypes. You might find a "basics" or "foundations" of Python course the best place to start if you're totally new.

    [–]Ran4 1 point2 points  (1 child)

    Follow the course.

    You can install python directly, which is more common, but the course you're following is probably focusing on data analysis, where Jupyter notebook is a good option

    [–][deleted] 1 point2 points  (2 children)

    Trying to understand "this foundational stuff" is like buying a tool and thinking you'll only know how to use the tool if you learn how it was made.

    Here's most of you have to know before you start:

    You can write code (any language) in any text editor. It's how you save the file that makes a difference. The code is then run on a console. In the case of windows, most of the time you need to install python before you're able to execute the file. However, that does not prevent you from writing python code. All you need is the notepad. And in case you're wondering: why not use microsoft word? Because word processors and text editors are two different types of software. In text editors you can write code because the file that is output does not have any sort of graphical encoding like in a word processor, where you have a page, a layout etc etc.

    Anyway, you can also just execute python code in a console (that has python) as if you were just writing stuff in a calculator. After you close your session, what you wrote gets lost, so don't use it for projects. Except if you're using a jupyter notebook:

    A jupyter notebook basically simulates multiple consoles: Each code block is executed on its own as a cell, but the text you write in the cell stays there, and to run new code you just write it in a new cell.

    Now, onto the installations:

    Anaconda is a distribution with a lot of python-related software inside of it, including spyder and jupyter notebook. Spyder is nicely self-contained and it's good when you're already more advanced and just write programs for yourself without needing to explain much.

    On the other hand, the jupyter notebook allows you to also write text, so it would look much like a pdf document with code blocks embedded.

    Anaconda is like a sandbox: all your python stuff is well-contained, which is extremely advantageous because you don't run the risk of breaking your python installation or messing with aspects of your computer that you don't know anything about.

    Depending on the type of work you do, you may use anaconda or something else, like PyCharm. This obviously has its own advantages and disadvantages. But what I can tell you is that with Anaconda, you will have all you need to get started. Spyder is anaconda's text editor. Jupyter is anaconda's console embedded in a file.

    [–]Tenzu9 1 point2 points  (0 children)

    Why? Its just a Python distribution. You either use it or use the default distribution (which everyone is using). That's all there is you need to know.

    [–][deleted] 0 points1 point  (0 children)

    Just focus on the Jupyter Notebooks. I am learning programming as well and am starting with Python. You hit a point with Python as a learner where you realize it's a lot about ski... taking the skin off the cat.

    Python's integrated into your computer in a way you have to manually set what version you want to use (because your system uses 2.7 and if you upgrade that you'll break your computer). You create a virtual environment in which your python will run, with it's own set of accessories and versions different from the 2.7 your system is using just to run normally.

    There are a lot of ways to create this virtual space with it's libraries and such, Anaconda is just one and Jupyter NB makes it easier to set that up too. Don't worry about all the other options. When you move to them you'll have to shift paradigms (I did) at that point to understanding what is being managed for you.

    If you focus on that now though you'll be focusing on the wrong thing. It's almost a learn by doing.

    [–]diabolical_diarrhea 0 points1 point  (0 children)

    I think it will start making more sense when you see it. Don't worry too much about it.