Подробнее
Когда делаешь опечатку х = obj.fiedl вместо х = obj.field
Компиляция 1 Запуск
c++ Нет! Нет! Все неправильно!
Хмм... Может, Черт, да тут
Python О О и пРавильнс * ошибка!
Javascript
oo
О O'
it-юмор,javascript,python,c++
Когда я решил поизучать js, скачал одну книжку и после 2х страниц у меня были мысли в стиле "да как так то?", "че это за поебень?", "да какой еблан это придумал?", "да как его вообще люди используют?".
ой ну хз, вот мне друзья то же втирают, но когда по пунктам прошу пожаловаться так они сдуваются все =). Ну есть там несколько реально проблемных моментов с отваливанием this, но динамическая типизация это почти ко всем интерпретируемым языкам, плюс некоторые надстройки над js позволяют частично избавится от этих проблем.
Есть динамическая и статическая типизация, сильная (алсо, строгая) и слабая типизация. И вот жс - это слабая, а, например, так же динамически типизируемый питон имеет сильную.
Не совсем так - это уже не свойство языка, а практика его применения. Нет абсолютно никаких преград для написания компилятора для JS (и это даже делают)
JS (почти) невозможно сразу транслировать в бинарник, потому что есть разные веселые операции в рантайме. Ну, т.е. частично оттранслировать можно, но работать будет не всё. Например, в Java, c# с этим есть попаболь с рефлексией и проичими извращениями.
К слову сказать, диалект JS - JScript.NET без компиляции в бинарник не исполняется. И да, eval там работает, т.к. в дотнетовском рантайме для него нашли местечко.
Компилирование в бинарник - прошлый век. Интерпретация - прошлый век. Всё серьёзные движки JS компилируют код и работают с ним в памяти.
В том же V8 работает (по крайней мере, раньше) два компилятора - один работает быстро, чтоб минимально скомпилировать код, другой - помедленнее, но уже выдаёт оптимизированный код. В хроме и ноде JS частенько дважды (!) компилируется. Потом ещё может скомпилироваться обратно в медленный скомпилированный код, если оптимизация была не в кассу.
Вместо минусов просветите, где используется компиляция питона? А то я сталкивался только с интерпретаторами.
Меня можете тоже минусануть, мне просто реально интересно.
Да, в гугле забанили. -_-
Сейчас уже давно с языками не все так однозначно. Их скорее можно разбить на две группы: компилируемые и "почти интерпретируемые". Чисто компилируемые языки есть, а вот с интерпретируемыми языками все сложно. Что питон, что js могут только интерпретироваться, могут компилироваться, а могут вообще компилироваться во время исполнения для оптимизации (JIT и AoT компиляция).
Ещё и статический анализ в IDE прикручивают, чтоб ощущения были от питона и жс почти как при компиляции крестов. Хотя, эффективность, разумеется, не такая высокая, как хотелось бы.
нет, просто на 1 ошибку может выдать при компиляции десяток ошибок, и будет казаться как раз "Нет! Нет! Все неправильно!". Поэтому правлю всегда по порядку выдачи.
чувак, я даже не программист, по сути просто по справке и примерам всё делаю и у меня такого небыло, какие же криворукие должны быть програмеры чтоб делать такие жесткие ошибки.
да да криворукий, то ";" поставить забуду, то на 1 символ ошибусь, а если в шаблоне сделаю ошибку, то это верх криворукости, там такие простыни выдают, как же так.
Ха-ха. int a1 = 5; a2 = 1; a2 = 4;
Тут один раз ошиблись в имени a1 или два раза в переменной a2? Математически эквивалентно. Программа заработает, либо если исправить первую ошибку, либо две вторые. Компилятор, например, пойдёт от начала до конца и на ошибку укажет при использовании а2. Программист хотел назвать переменную а2 и считает, что ошибка одна сверху, но для компилятора определение А1 полностью корректно.
Это лишь самый простой случай, в более сложных ошибка выпрыгивает не оттуда, где она реально стояла, и с этим ничего не поделаешь.
Ты сделал мааааленькую ошибку в .h файле и все пошло по пизде, и ошибки будут показаны везде, где только можно, но только не там, где надо. А если уж ошибиться в шаблоне... То будет многокиломитровый пиздец с дохуявложенными шаблонами. Например
Для выхлопа 5 строк на каждую ошибку не так уж и много. :/
Страшны ебучие каскадные резонансы, когда при попытке пофиксить одну ошибку получаешь много раз больше ошибок..
В том же V8 работает (по крайней мере, раньше) два компилятора - один работает быстро, чтоб минимально скомпилировать код, другой - помедленнее, но уже выдаёт оптимизированный код. В хроме и ноде JS частенько дважды (!) компилируется. Потом ещё может скомпилироваться обратно в медленный скомпилированный код, если оптимизация была не в кассу.
>>>Компиляция
Тут что-то не так, но что? Хмм...
Меня можете тоже минусануть, мне просто реально интересно.
Да, в гугле забанили. -_-
Тут один раз ошиблись в имени a1 или два раза в переменной a2? Математически эквивалентно. Программа заработает, либо если исправить первую ошибку, либо две вторые. Компилятор, например, пойдёт от начала до конца и на ошибку укажет при использовании а2. Программист хотел назвать переменную а2 и считает, что ошибка одна сверху, но для компилятора определение А1 полностью корректно.
Это лишь самый простой случай, в более сложных ошибка выпрыгивает не оттуда, где она реально стояла, и с этим ничего не поделаешь.
Страшны ебучие каскадные резонансы, когда при попытке пофиксить одну ошибку получаешь много раз больше ошибок..