Contents:
Options to code in the Wolfram kernel within a notebook interface or for package/script development.
Structure of this answer
Part 1 : Pros and cons of notebook alternatives
Part 2 : Non notebook alternatives
Part 1: Pros and cons of notebook alternatives
Notebook options
Wolfram cloud
Wolfram Kernel in Jupyter Notebook
Wolfram Kernel in Jupyter Lab
Calling Wolfram functions with a Python Kernel in Jupyter
Jupyter Notebook inside VScode
Wolfram cloud
Pros/Features:
Cons
No copying of outputs (that said I did not try using InputForm maybe it works like that)
No copying of sub-expressions of outputs
It not possible to use external commands like RunProcess or ExternalEvaluate
Other limitations: https://support.wolfram.com/53990
Wolfram Kernel + Jupyter Notebook
The official option provided on this github page.
Pros/Features:
-The latest wolfram functions. This can be nice to have even if your institution provides Mathematica as they might not update it right away.
Collapsible sections
Jupyter extensions and themes.
Markdown with Latex (Latex is also possible with Mathematica but I still prefer Markdown Latex)
When the command is followed by //TeXForm the Latex output is automatically rendered in Jupyter. This leads to beautiful output especially when compared to the default output which is rendered as a picture with a white background.


Using $PrePrint one can consider a function that checks the head of the output and decides whether the output should be rendered in Latex, Image, or plain input text for copying.
Cons
Possibly the biggest concern: As mentioned in Szabolc's answer, interrupting a cell leads to stopping the kernel and so one has to restart everything if a code cell takes too long. Use a=1;Pause[10];0
then interrupt the kernel and then check that a is no longer defined.
Maybe this could be partly solved using DumpSave (maybe Save is better) and $NewSymbol by saving all new symbols in a temporary file (maybe in $TemporaryDirectory) so that it is not saved forever (which could use a lot of memory on your hard drive). Other than using the DumpSave method, calling the wolfram kernel from python one could save some of the simpler variables in python like numbers and lists. For more complicated structures see this question or this question
No auto-completion or suggestions when writing system defined functions (although see Wolfram Engine + Jupyter $\stackrel{?}{=}$ Mathematica for what might be a fix but I did not test it and do not know if it autocompletes system functions)
No documentation on functions when hovering over a function
In mathematica one can check the precedence of a symbol using Ctrl+. as it highlights how Mathematica will evaluate the input. This is not possible with Jupyter
No Input cells that automatically continue a code line to the line below when it is too long.
"Undo" (Ctrl+Z) does not work well for me when I use jupyter notebooks with a python kernel. Perhaps that is also true with the wolfram kernel. In python this was less of a problem in JupyterLab and maybe that is also true for the vscode option below.
No 3d image rotation although see this answer for how to use the wolfram cloud to do that within a Jupyter notebook.
No 2d input
No tooltip descriptions when hovering over plots
Using the $PrePrint method before, one can include an option to show the input form if the head is InputForm or a custom wrapper. However, in a large expression it might be irritating find the sub-expression desired when we are more familiar with the TeXForm.
No hiding Input cells to show only the output
Not possible to have multiple windows with the same kernel
If you had a favorite style-sheet in Mathematica I guess you will not be able to use it anymore as the methods below have their own themes.
No in place evaluation
No free form evalution ?
Wolfram Kernel + JupyterLab
Pros
Same as with Jupyter Notebook
Collapsible input cells
Multiple windows with the same kernel
Better "undo" (Ctrl+Z) support on Python and maybe also with the wolfram kernel
To be completed
Cons
Wolfram kernel in Python
There is also the option to call Wolfram functions within Python. This feature can be used in a notebook environment.
Pros:
Did not try just an idea: possibility to use tooltip, sliders and animations by using Python on the output from the wolfram kernel.
Easy integration with Python functions
To be completed
Cons:
Same cons of using Jupyter minus the possibility to retrieve some aspects of Dynamic. Images might still not scale well and rotation is probably not possible.
Syntax a bit heavy but one can define variables and functions to make the syntax easier.
Symbolic output like 5+x^2 and the output from Plot are written in FullForm. One can obtain images (for the expression and for the plot) using ExportByteArray and following the method in this page. Perhaps that can be shortened into a python function. The image outputs from that method look the same as when using directly the wolfram kernel in Jupyter (not calling wolfram kernel functions in python as is the case here). However, TeXForm does not work (it outputs the same FullForm with TexForm wrapped around un-evaluated).
Wolfram functions in a Jupyter notebook with a python kernel in JupyterLab.

VScode + Jupyter+ WolframKernel
There is a possibility to use Jupyter in VScode.
The instructions are given in this page (probably auto-completion and documentation by hovering over functions will not be available as was the case for Jupyter notebooks on the browser, see the sentence below for a possible solution)
I installed this plugin for VScode where some of the features are auto-completion and documentation by hovering.
(Note : that last plugin did not work for me following the instructions on the Github page but it did work using a .ipynb jupyter notebook and selecting the wolfram language both as the kernel (at the time of writing top right in VScode) and as the interpreter (at the bottom right of a code/input cell, I think the name in this case is from the same plugin).
Pros:
- Using the language extension of plugin within a ipynb notebook in VScode as the language interpreter (option at the the bottom right of a cell) one has access to auto completion and the documentation by hovering over a function. This is not the attended method of that plugin but the intended method did not work for me and this works somehow.


This might have happened after I initially wrote this but it seems that at least with the extension mentioned before, variables are kept when canceling a cell execution and so one might no longer need to restart the kernel.
Nice clean and elegant interface of Jupyter in VScode.
Other pros of Jupyter minus some of the extensions maybe (did not try) and minus the Latex Rendering (explained in cons below)
AI autocompletion (for example Github copilot)
Snippets?
Option to stay in same cell with Ctrl+Enter although see Keyboard shortcut for evaluating the current cell while keeping the cursor in the cell for a way to that in mathematica notebooks
possibility to use vim keybindings using the vim plugin
can select content of a cell (I am not aware of a quick way to that with mathematica)
In my opinion it is easier to set keyboard shortcuts when compared to mathematica
A comment below seems to say that one can get some of the features of Mathematica such as 3D rotation and animations using the wolfram player but I have not tried this yet.
Cons
Cons of Jupyter Notebook with the wolfram kernel minus autocompletion and the documentation. So no usage of Dynamic, no ToolTip, no 3D plot rotation, no image resizing by dragging (but on can set the image size manually with the ImageSize option), etc.
expression //TeXForm does not give nice LaTeX outputs with the current version of "Wolfram Language for Jupyter" on VScode. A work around was found on this page. Following the instructions in that answer, it suffices to rename the original RequestHandlers.wl file to something likeRequestHandlers_old.wl (for example) and then rename the RequestHandlers.wl.txt file in that answer to RequestHandlers.wl (maybe one should restart VScode after , maybe also the wolfram kernel, maybe also the computer, not sure).
In VS code notebook, can not execute a specific section. Difficult to copy output with a keyboard but possible with a mouse.
Difficult to copy with keyboard but possible with mouse
input aliases like ‘[[g]]’, → or [Omega] do not show nicely (maybe using one of the extensions mentioned here could help https://github.com/microsoft/vscode/issues/171074)
No Interpretation ?
No Iconize
Note: Maybe it might also be possible to call a wolfram function inside of a python kernel within the environment of a jupyter notebook inside vscode. I did not try.
Part 2: Non notebook alternatives
Direct questions**
TL;DR: use wolfram alpha
One might want to find the answer to a somewhat simple problem that can be easily understood in one sentence. Examples:
prime numbers between 100 and 200
integrate x*Log[x] over the interval 1 to 5.7
Speed of sound in gas at 500 degrees Celsius
mean temperature in Greenland
Such tasks can be solved using natural language with wolfram alpha on the wolfram alpha website.
Non interactive Package/Script development**
TL;DR : I like VScode for package editing
I do not remember if Workbench needs the wolfram kernel or Mathematica. I also do not remember if the Mathematica plugin for IntelliJ IDEA can be used with only the wolfram kernel. I will only mention the option that I personally use which is the official wolfram plugin for VScode. The reasons why I prefer VScode rather than the native package handler or Workbench are that :
It is a modern and popular IDE
Nice functions/utilities for code editing and viewing definitions of functions
Nice code indentation
possibility to use a dark theme
usual syntax highlighting, documentation by hovering over functions, and function suggestions come with the plugin.
There are two things missing in my mind.
Package development is not what most people are looking for so