История изменений
Исправление javascript, (текущая версия) :
Почему запрос среди разработчиков есть, но не нужно?
В первых версия JS оператор ==
работал, как ===
,то есть делал строгое сравнение без приведения типов. Угадай, почему это изменили? Потому что это попросили сами разработчики, о которых ты говоришь. Айк был сильно против. То же самое касается множества иных артефактов в языке. Но ввиду того, что тогда не было еще ни коммитетов, ни бюррократии, и все решения принимались с плеча, без какого-либо рисчерча, а сама ЦА этих разработчиков были лишь штатные программисты несткейпа - вышло то, что вышло.
Нет никакого запроса. Это как с оппозицей - есть лишь громкое меньшинство, которое по факту ничтожно.
Касательно статической типизации, каждый такой пропозал начинатся с одного и того же, перетекает в один и тот же рисерч, а заканчивается одни и тем же ВНЕЗАПНЫМ осознанием - это не будет работать (если буквально - оверхед будет неимоверным).
JS - это динамическая объктная система. Здесь нельзя отделить компайл-тайм от райнтама. Куски кода подгружаются динамически. У любого типа структура и поведение может поменяться с течением времени. Нельзя ни закешировать статические проверки и ни точно сказать, что если сейчас типы не валидны, они не окажутся валидными при следующем вызове. JIT в современных движках несет с собой регулярную проверку на возможную деградацию скомпилированного кода, при этом количество триггеров для такой деградации в данный момент минимально, потому как даже внезапно исчезнувшие поля у объектов или их изменившийся тип - это валидное поведение. В случае развесистой системы статических типов полноценный тайпчек должен будет проводиться фактически при каждом вызове, проверяя полностью все шейпы объектов, по всей цепочке прототипов, в том числе Проксированных, каждого значения в каждой незначительной лямбде.
Исправление javascript, :
Почему запрос среди разработчиков есть, но не нужно?
В первых версия JS оператор ==
работал, как ===
,то есть делал строгое сравнение без приведения типов. Угадай, почему это изменили? Потому что это попросили сами разработчики, о которых ты говоришь. Айк был сильно против. То же самое касается множества иных артефактов в языке. Но ввиду того, что тогда не было еще ни коммитетов, ни бюррократии, и все решения принимались с плеча, без какого-либо рисчерча, а сама ЦА этих разработчиков были лишь штатные программисты несткейпа - вышло то, что вышло.
Нет никакого запроса. Это как с оппозицей - есть лишь громкое меньшинство, которое по факту ничтожно.
Касательно статической типизации, каждый такой пропозал начинатся с одного и того же, перетекает в один и тот же рисерч, а заканчивается одни и тем же ВНЕЗАПНЫМ осознанием - это не будет работать (если буквально - оверхед будет неимоверным).
JS - это динамическая объктная система. Здесь нельзя отделить компайл-тайм от райнтама. Куски кода подгружаются динамически. У любого типа структура и поведение может поменяться с течением времени. Нельзя ни закешировать статические проверки и ни точно сказать, что если сейчас типы не валидны, они не окажутся валидными при следующем вызове. JIT в современных движках несет с собой регулярную проверку на возможную деградацию скомпилированного кода, при этом количество триггеров для такой деградации в данный момент минимально, потому как даже внезапно исчезнувшие поля у объектов или их изменившийся тип - это валидное поведение. В случае развесистой системы статических типов полноценный тайпчек должен будет проводиться фактически при каждом вызове, проверяя полностью все шейпы объектов, о всей цепочке прототипов, в том числе Проксированных, каждого значения в каждой незначительной лямбде.
Исправление javascript, :
Почему запрос среди разработчиков есть, но не нужно?
В первых версия JS оператор ==
работал, как ===
,то есть делал строгое сравнение без приведения типов. Угадай, почему это изменили? Потому что это попросили сами разработчики, о которых ты говоришь. Айк был сильно против. То же самое касается множества иных артефактов в языке. Но ввиду того, что тогда не было еще ни коммитетов, ни бюррократии, и все решения принимались с плеча, без какого-либо рисчерча, а сама ЦА этих разработчиков были лишь штатные программисты несткейпа - вышло то, что вышло.
Нет никакого запроса. Это как с оппозицей - есть лишь громкое меньшинство, которое по факту ничтожно.
Касательно статической типизации, каждый такой пропозал начинатся с одного и того же, перетекает в один и тот же рисерч, а заканчивается одни и тем же ВНЕЗАПНЫМ осознанием - это не будет работать (если буквально - оверхед будет неимоверным).
JS - это динамическая объктная система. Здесь нельзя отделить компайл-тайм от райнтама. Куски кода подгружаются динамически. У любого типа структура и поведение может поменяться с течением времени. Нельзя ни закешировать статические проверки и ни точно сказать, что если сейчас типы не валидны, они не окажутся валидными при следующем вызове. JIT в современных движках несет с собой регулярную проверку на возможную деградацию скомпилированного кода, при этом количество триггеров для такой деградации в данный момент минимально, потому как даже внезапно исчезнувшие поля у объектов или их изменившийся тип - это валидное поведение. В случае развесистой системы статических типов полноценный тайпчек должен будет проводиться фактически при каждом вызове, проверяя полностью все шейпы объектов, каждого значения в каждой незначительной лямбде.
Исправление javascript, :
Почему запрос среди разработчиков есть, но не нужно?
В первых версия JS оператор ==
работал, как ===
,то есть делал строгое сравнение. Угадай, почему это изменили? Потому что это попросили сами разработчики, о которых ты говоришь. Айк был сильно против. То же самое касается множества иных артефактов в языке. Но ввиду того, что тогда не было еще ни коммитетов, ни бюррократии, и все решения принимались с плеча, без какого-либо рисчерча, а сама ЦА этих разработчиков были лишь штатные программисты несткейпа - вышло то, что вышло.
Нет никакого запроса. Это как с оппозицей - есть лишь громкое меньшинство, которое по факту ничтожно.
Касательно статической типизации, каждый такой пропозал начинатся с одного и того же, перетекает в один и тот же рисерч, а заканчивается одни и тем же ВНЕЗАПНЫМ осознанием - это не будет работать (если буквально - оверхед будет неимоверным).
JS - это динамическая объктная система. Здесь нельзя отделить компайл-тайм от райнтама. Куски кода подгружаются динамически. У любого типа структура и поведение может поменяться с течением времени. Нельзя ни закешировать статические проверки и ни точно сказать, что если сейчас типы не валидны, они не окажутся валидными при следующем вызове. JIT в современных движках несет с собой регулярную проверку на возможную деградацию скомпилированного кода, при этом количество триггеров для такой деградации в данный момент минимально, потому как даже внезапно исчезнувшие поля у объектов или их изменившийся тип - это валидное поведение. В случае развесистой системы статических типов полноценный тайпчек должен будет проводиться фактически при каждом вызове, проверяя полностью все шейпы объектов, каждого значения в каждой незначительной лямбде.
Исходная версия javascript, :
Почему запрос среди разработчиков есть, но не нужно?
В первых версия JS оператор ==
работал, как ===
,то есть делал строгое сравнение. Угадай, почему это изменили? Потому что это попросили сами разработчики, о которых ты говоришь. Айк был сильно против. То же самое каается множества иных артефактов в языке. Но ввиду того, что тогда не было еще ни коммитетов, ни бюррократии, и все решения принимались с плеча, без какого-либо рисчерча, а сама ЦА этих разработчиков были лишь штатные программисты несткейпа.
Нет никакого запроса. Это как с оппозицей - есть лишь громкое меньшинство, которое по факту ничтожно.
Касательно статической типизации, каждый такой пропозал начинатся с одного и того же, перетекает в один и тот же рисерч, а заканчивается одни и тем же ВНЕЗАПНЫМ осознанием - это не будет работать (если буквально - оверхед будет неимоверным).
JS - это динамическая объктная система. Здесь нельзя отделить компайл-тайм от райнтама. Куски кода подгружаются динамически. У любого типа структура и поведение может поменяться с течением времени. Нельзя ни закешировать статические проверки и ни точно сказать, что если сейчас типы не валидны, они не окажутся валидными при следующем вызове. JIT в современных движках несет с собой регулярную проверку на возможную деградацию скомпилированного кода, при этом количество триггеров для такой деградации в данный момент минимально, потому как даже внезапно исчезнувшие поля у объектов или их изменившийся тип - это валидное поведение. В случае развесистой системы статических типов полноценный тайпчек должен будет проводиться фактически при каждом вызове, проверяя полностью все шейпы объектов, каждого значения в каждой незначительной лямбде.