24 ms·
I don't get why you want to use this over an IDE. All you get is cached intermediate variables and being able to print them, am I right? On the other hand you
by 21stio 8y ago
I don't get why you want to use this over an IDE.
All you get is cached intermediate variables and being able to print them, am I right?
On the other hand you loose the capability to see the definition of everything externally defined and you can't use the debugger.
Please let me know if I am missing something
- rufugee 8y agoI believe it's intended for teaching and guides, not development. For example, I'm currently working through a data science course which uses Jupyter notebooks to allow interactive code to be embedded within the course materials, instead of being kept in separate files. The student can read the material and experiment with the code without switching to another window.
- rhizome31 8y agoJupyter serves a different purpose than IDEs and text editors. The main use cases are experimentation and presentation. If you want to try a library it can be more flexible than a REPL and more interactive than a program in its own file. Jupyter is also used to produce documents that mix code, prose and visualizations. A typical use case is to write a small amount of code that processes some data and produce a chart, providing explanation formatted in Markdown along the way. These documents can be exported in a variety of formats, including printable documents, presentation slides and blog posts. There's a very vibrant and high-quality ecosystem of projects developed around Jupyter which ranges from making interactive documents to running distributed notebook servers. In general you wouldn't develop a full software project in Jupyter. Note that Jupyter is not the only project that provides this type of notebook interface. You'll also find Zeppelin coming from the Java community, Observable for JavaScript and the very powerful Nextjournal SasS product.
- mschuetz 8y agoI love to use notebook style IDEs to prototype, test and benchmark "smaller" things. And with smaller I don't mean things that aren't complex or difficult, but things that don't need thousands of lines of code or ellaborate software architecture. They are great to try new algorithms or evaluate their performance. If something is not quite right the first time, just change a line and evaluate that block again, without having to run another, potentially expensive block, again. You get to see the changes to your latest block immediately, without having to go through all the previous steps again. They are also great if you want to put together some graphs or statistic displays. I'm still hoping for something like Mathematica for javascript, including ways to print graphs, meshes, point clouds, etc. to you notebook.
- dahart 8y ago> I don't get why you want to use this over an IDE. All you get is cached intermediate variables and being able to print them, am I right? You get more than that from Jupyter. Especially with Python, but for Go also. Jupyter is for exploration and prototyping. Think of Jupyter as being a massive improvement on the command line shell, rather than an IDE downgrade. If you're developing large structured programs, yes the IDE is definitely the way to go. But if you're doing interactive coding and you want to run the code line by line or in small groups, you'd use the shell, or better yet Jupyter. Jupyter is between an IDE and a shell. Jupyter gives you inline images & plots. It's made with visual results and interactive plotting in mind. Most IDE's don't have anything like that. You can also compare Jupyter to Maple or Matlab or Mathematica. Jupyter lets you add readable formatted markdown between code blocks, and you can export your notebook in presentation formats like PDF or HTML. Notebooks show the results of the program run, so someone you share with can see what happened before they run the code. And I don't know about the Go kernel, but with Python at least, Jupyter most often installs a sandbox environment that includes several powerful Python libraries. What this means in practice is that sharing notebooks is vastly easier for the recipient of a notebook.
- cube2222 8y agoActually, pycharm caught up and provides all the interactivity and cell based execution.
- masklinn 8y ago1. That's very misleading, because what PyCharm did was add support for jupyter notebooks. Without iPython/Jupyter there would be no "interactivity and cell based execution" in PyCharm. 2. And AFAIK it's just Python, does it support the few dozens other jupyter kernels?
- cube2222 8y ago1. No, it's not. In regular python files you can create cells using #%% and run them separately. Yes, there is also notebook support but it requires Jupyter. 2. Just python
- 21stio 8y ago@rufugee @rhizome31 @mschuetz well in the context of python it makes some sense to use it for teaching and presentation purposes, even tho it's a bad habit to program in it in my opinion, as - it's a pain to write abstractions, as you have to remember to reevaluate the cell - you can't use the debugger - you can't jump to the definition of externally defined stuff, which is critical if you want to become a really good developer, as it's teaching you to read and understand code @mschuetz there are decorators for everything, to time functions, to cache results, to cache results, to cache results for 1h and get fresh data after one hour, to cache results given certain parameters but in the context of go I don't see the point, as nobody sane will ever do an experimental data analysis with it go is excellent for high performance data processing, but you definitely don't want to use it for data analysis.. I'm not even sure if a go based dataframe implementation would be that much faster than pandas as it's more or less a wrapper for c functions
- jjuel 8y agoDo you do any data analysis? Have you used any of the tools for Go like gonum? Notebooks are great for presentation of the data, and how you got where you did. They display the plots and graphs in line for you. You can add markdown for extra documentation/explanation. Sure you aren't making production grade models with the notebook, but they are great for rapid prototyping or presentation about what your models are doing.
- 21stio 8y ago> Do you do any data analysis? haha yeah I do, in python only tho.. I use plotly for visualisations. It renders html and invokes the default handler for .html to display it. Knowing plotly it's trivial to learn dash, which let's you build interactive data dashboards (https://dash-stock-tickers.plot.ly https://dash-stock-tickers.plot.ly). > Have you used any of the tools for Go like gonum? well as far as I now, there are barely any data analysis libraries for go. gonum is an advanced math library, not really a data analysis tool. then you got gota, which is unmaintained (at least they aren't closing the prs) and a couple of none standardized learning algorithms. not really the stack I want to use for data analysis..