If you are a developer and your daily life is coding and writing robust codes to be reused, yes you might really need to have a very good mental model of what is going on, and debugger is not needed.
TL;DR: as a scientific researcher who writes code just sometimes and throws them away in most cases, debugger is a huge time saver.
The use of debugger is of course to get fix it quickly without maintaining a good mental model of what is going on. As a researcher, I spend 90% of time on something else, but spend only 5% of my time coding. This involves testing my algorithmic idea, which ends up not interesting most times, and I just want to find out āearly failureā. In this case, I just want to load my shitty data quickly (quickly in coding time, not run time), write the code that just works for the core case, and when I get an error / unexpected behavior, I just want to quickily set a breakpoint and starting printing values.
Sometimes, starting a script even involves loading my data and processing it and takes more than 10 seconds, and so on. In a long run when my shitty algorithm seems to work and I want to run a serious experiment, yes I should process the data well, save the processed data somewhere, optimize code, and so on. But, why would I want to spend my time on these things when my new algorithm is not interesting 90% of the time?
I also want to emphasize that scientific computing requires more need for the debugger since there are numerical issues you need to carefully examine but hard to expect ahead of time. I often find negative eigen values in (supposedly) positive semi-definite matrices, or the optimization method just does not find the right solution and so on. The best thing about using python here is that I donāt even need to setup a breakpoint ahead of time. When it fails, I just call the post-mortem analysis function, and it gets me to the place where I can examine eigen values and check optimality conditions and so onā¦ And these are often rare cases that happens once every 1000 random runsā¦ Iāve been there.
Anyway, I really would like to emphasize that having a debugger is really important in attracting many users into Julia. No matter how you argue well, they will still want a debugger.
I really like where Julia is going. But as I learn more about it, Julia is more like providing convenience for people who write library, but not that much for people who use it āsometimesā to check things quickly and produce code just to write a paper. In this use case, you mostly write scripts that wonāt be reused.
Or, it could be that I just belong to a community that Julia does not need to careā¦