169 похожих чатов

Кстати, он рассуждает о том природу чего в принципе не

понимает. 1) жс не может не разбирать что-то - может. Семантика языка тока, что функция до его вызова не может влиять на глобальное состояние, а значит её можно тупо не разбирать. 2) разбор жс нетривиален - это глупость. Разбор языка не является однородным. За разбор литеральных объектов отвечает только разбор оных, а остальная с ложность жаваскрипта там неважна. Ничто не мешает оптимизировать данный случай.

Почему же это не происходит? Потому что это никому ненужно, а не сложно/невозможно. Как я уже говорил выше - этой проблеме тысячи лет. Она есть в сишке, когда компиляция какого-нибудь массива может занимать минуты/десятки минут. И знаете что? Всем похрен. Никто не будет усложнять парсер и заниматься подобным ради оптимизации практически ненужного случая.

Да и куда лучшим решением будет в принципе не хранить данные в коде. Ведь парсить то строку всё равно нужно. Как следствие в сишке просто внутрь программы зашивают эти данные. Что делают и в вебе в жс.

Здесь мы можем заметить ту самую проблему "размен 1% на тысячи". Хорошо, мы заменили литерал на строку - откуда мы возьмём типы и как будем работать с этим объектом? Обмажем весь код ифами? Либо будем копипастить литеральный объект ещё и в тип того что вернёт json.parse? Будет писать 2 раза одно и тоже превращая код в помойку? А когда нужно будет это изменить и типы разойдутся?

1 ответов

8 просмотров

Дайте себе труд прояснить вот эти свои заявления. Я не до конца понял смысла сказанного: 1) жс не может не разбирать что-то - может. Семантика языка тока, что функция до его вызова не может влиять на глобальное состояние, а значит её можно тупо не разбирать. А вот эта ваша фраза: 2) разбор жс нетривиален - это глупость. говорит о том, что Вы понятия не имеете о том, с какими проблемами парсинга современного JS кода, сталкиваются современные рантайм. Наиболее показательным является пример, когда добавление синтаксиса arrow function привел к просадки больше чем на 20% в Blink. Что официально засвидетельствовано. И привело к тому, что релиз arrow function в блинк был отложен больше чем на два месяца, пока не были найдены альтернативные решения. Парсинг любого синтаксиса, опирается на теорию автоматов. Это часть дискретной алгебры. В рамках которой, есть ряд правил, которые определяют то, насколько быстро можно разбирать те или иные конструкции. В рамках языка JS - его синтаксис, не позволяет это делать быстро, потому что требует многократных проверок - с заглядыванием вперед, и, что хуже всего, после этого требущих многократных проверок с заглядыванием назад - то есть тем, что в рамках языка регулярных выражений называет опережающей и ретроспективной проверкой. Мне нужно Вам обьяснять что язык регулярных выражений, является частью дискретной математики и служит для описания алгоритма работы автоматов, в том числе и конечны, благодоря окторым осуществляется современный парсинг любого синтаксиса?

Похожие вопросы

Обсуждают сегодня

Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Hi guys, I'm looking for a good LLM course. Is there any course to learn LLMs in advanced? I'm aiming to use them in my apps, so a perfect course in my openion, is not only a ...
Taha
14
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
Всем привет. Подскажите, пожалуйста, как вы реализовываете следующий функционал. Допустим есть форма, в которой имеется выпадающий список со значениями. Значения хранятся в БД...
Евгений
7
Хех, данные на форме всегда будут "из прошлого", т.к. перезаполнять поля формы в процессе редактирования пользователем - так себе идея. Пользователь может открыть форму редакт...
Alexander Somov
7
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
31
Карта сайта