3 ms·
> Exactly! So raise an EngineFailure exception and let the driver decide how to proceed. In the analogy, the car is the program. The ENTIRE program. It is the
by usrbinbash 3y ago
> Exactly! So raise an EngineFailure exception and let the driver decide how to proceed.
In the analogy, the car is the program. The ENTIRE program. It is the limit of the analogy. The car driving is the program running. The car no longer being able to drive, is the program not running. Everything outside of that is out of the scope of the analogy.
> I mean, a lot of people are fine with programming in PHP, that doesn’t make it a good choice.
That is absolutely true, but it doesn't make PHP "defective". If someone is unhappy with how Go's `panic` works, they can use something else, same as I am not going to use PHP.
> No. Absolutely, 100%, beyond question not.
Yes, absolutely, 100%, beyond question it is.
The library is an implementation hidden behind a public interface. Same as I don't have to worry about how it performs it's functions, I don't have to worry how it determines what it considers to be an irrecoverable failure condition.
If I disagree with a libraries decision on that, I have the same options I have if I disagree with how it's interface works (assuming it is open source): 1) I can fork it and roll my own implementation. 2) I can vendor-copy it and adapt it locally for the scope of that project. 3) I can use another lib (including writing my own from scratch).
> The library can’t possibly know every conceivable circumstance in which it is called
It doesn't have to. If the engine breaks down, it does't matter if the car is yellow, the sun is up, or the driver was born on a Tuesday. The engine is broken, and cannot run. End of story.
If there are conceivable circumstances under which the lib should continue running instead of panicking, it is the libs job to implement it, same as it is its decison what these circumstances are, and when they apply.
> and any language that allows it to do so is broken by design and should be considered harmful.
Well, I think we are gonna have to agree to disagree on this. Considering Go's success and continuous growth, it is pretty safe to say that many people and industries don't consider it broken, nor harmful.