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