Earlier quoted context omitted.
The worst part about javascript failing is a lot of time it doesn't do it at the thing that is the problem. I've run into a lot of cases in node where I passed something not quite right to a crypt library but didn't find out until like 2 pages later. Usually for things that in python would throw an exception immediately.
That's not really a Javascript problem. That's a dynamically typed language problem. Unless you add some kind of assertion/test at the entry point to a library, the failure will always be postponed to the point of use (or silent if it's never used, until the day someone turns a feature on). If the same sort of issue works differently in Python, the Python library has asserts or other tests, or is using the value at a…
The Let It Crash Philosophy Outside Erlang
11–20 of 35 posts
Re: The Let It Crash Philosophy Outside Erlang
#12"I don’t think Let It Crash is a good name for the philosophy Erlang has about handling faults" This is also known as "Crash-Only software" [1]. I'm a huge fan. [1] https://www.usenix.org/conference/hotos-ix/crash-only-softwa...
Re: The Let It Crash Philosophy Outside Erlang
#13While 'Let It Crash' is a philosophy, it is greatly aided in Erlang by extremely lightweight threads that communicate with each other via mailboxes.
Re: The Let It Crash Philosophy Outside Erlang
#14"I don’t think Let It Crash is a good name for the philosophy Erlang has about handling faults" This is also known as "Crash-Only software" [1]. I'm a huge fan. [1] https://www.usenix.org/conference/hotos-ix/crash-only-softwa...
What he might be getting at, that others have certainly discussed, is that things like "crash only software!" are not winning marketing slogans when trying to sell a piece of technology to higher-ups in your company.
Re: The Let It Crash Philosophy Outside Erlang
#15Earlier quoted context omitted.
The worst part about javascript failing is a lot of time it doesn't do it at the thing that is the problem. I've run into a lot of cases in node where I passed something not quite right to a crypt library but didn't find out until like 2 pages later. Usually for things that in python would throw an exception immediately.
That's not really a Javascript problem. That's a dynamically typed language problem. Unless you add some kind of assertion/test at the entry point to a library, the failure will always be postponed to the point of use (or silent if it's never used, until the day someone turns a feature on). If the same sort of issue works differently in Python, the Python library has asserts or other tests, or is using the value at a…
I disagree; I do a lot of work in both dynamic and strongly typed languages. Most often, when I find a bug "not where the error occurs," it's because, for example, I'm accidentally computing a minimum and later assuming it to be a maximum. Unit tests catch most of this, so such debugging puzzles usually happen to me in fresh new code with unstable interfaces...
Re: The Let It Crash Philosophy Outside Erlang
#16While 'Let It Crash' is a philosophy, it is greatly aided in Erlang by extremely lightweight threads that communicate with each other via mailboxes.
It's helpful in other domains, too. For example, in ETL pipelines, I would greatly prefer to have an entire DAG go down quickly and noisily than to risk having it generate incorrect data. It's the difference between a crappy morning, and a crappy day or even a crappy week.
Re: The Let It Crash Philosophy Outside Erlang
#17While 'Let It Crash' is a philosophy, it is greatly aided in Erlang by extremely lightweight threads that communicate with each other via mailboxes.
It's helpful in other domains, too. For example, in ETL pipelines, I would greatly prefer to have an entire DAG go down quickly and noisily than to risk having it generate incorrect data. It's the difference between a crappy morning, and a crappy day or even a crappy week.
Or a crappy discovery at the end of the quarter...
Re: The Let It Crash Philosophy Outside Erlang
#18Earlier quoted context omitted.
What he might be getting at, that others have certainly discussed, is that things like "crash only software!" are not winning marketing slogans when trying to sell a piece of technology to higher-ups in your company.
Yes, you tell those people the software is "self healing".
Re: The Let It Crash Philosophy Outside Erlang
#19Earlier quoted context omitted.
What he might be getting at, that others have certainly discussed, is that things like "crash only software!" are not winning marketing slogans when trying to sell a piece of technology to higher-ups in your company.
Yes, you tell those people the software is "self healing".
Re: The Let It Crash Philosophy Outside Erlang
#20Earlier quoted context omitted.
The worst part about javascript failing is a lot of time it doesn't do it at the thing that is the problem. I've run into a lot of cases in node where I passed something not quite right to a crypt library but didn't find out until like 2 pages later. Usually for things that in python would throw an exception immediately.
That's not really a Javascript problem. That's a dynamically typed language problem. Unless you add some kind of assertion/test at the entry point to a library, the failure will always be postponed to the point of use (or silent if it's never used, until the day someone turns a feature on). If the same sort of issue works differently in Python, the Python library has asserts or other tests, or is using the value at a…
As pointed out, {}.foo will not cause an error. In Python and any good dynamic language, that will generate an error.
Another problem is all the implicit (silent) type conversions. JavaScript will happily add an Object and an integer, then multiply that by a string. Any sensible type system would not allow that, but JavaScript silently produces a NaN.
The problem isn't that its a dynamic type system, but that the type system ignores things which are clearly problems.