JavaScript как праздник

Комментарии (24)

  • 4 августа 2017 в 06:11

    +3

    Лично у меня только одна претензия к JS — дебажить его то еще удовольствие. И если на клиентской части у тебя есть DevTools браузера, то на сервере такой радости нет. И только по-этому я с опаской посматриваю на JS в качестве back-end инструмента.

    Я не против свободы, но как показывает практика, разработчику лучше ехать по «рельсам». Набрать команду хотя бы из 5 адекватных разработчиков, которые будут делать «все правильно» очень не просто.

    Ну и «миллионы мух не могут ошибаться — что-то в этом есть»…

    • 4 августа 2017 в 06:23

      +3

      Чтобы дебажить сервер можно использовать Node Inspector
  • 4 августа 2017 в 06:53

    0

    Минус языка в том, что его невозможно на все 100% контролировать. Особенно с учетом всяких сборщиков, полифиллов, и прочих ES5 конвертеров.
    Разные реализации в браузерах.

    Второй минус, это производительность на стадии инициализации. Уже часто встречаются кривые сайты тормозящие при старте.

    Третий минус, это низкий порог вхождения. Из-за чего часто сталкиваемся с ужасным кодом, опять же тормозными фронтами.

    Все это выходит в виде потерь клиентов. У кого-то андроид слабый и не может просто отобразить страничку, у другого ошибки.

    • 4 августа 2017 в 07:03

      +1

      Минус языка в том, что его невозможно на все 100% контролировать.

      несколько офтоплю, но…, а что можно контролировать на все 100%?

  • 4 августа 2017 в 06:56 (комментарий был изменён)

    +1

    Люто плюсую! JavaScript прекрасен. Зачем в него все таки классы притащили в упор не пойму. Прототипное наследование по-моeму в разы гибче и проще той же Java
    • 4 августа 2017 в 08:42

      +3

      А чем классы от прототипа отличаются?
      Разве class не просто языковая конструкция, которая сводиться к тому же прототипному наследованию?
      • 4 августа 2017 в 08:46

        +1

        Синтаксический сахар по сути.

  • 4 августа 2017 в 07:32

    0

    Забавно, исходные факты в обоих статьях одинаковые, а выводы абсолютно противоположные.
  • 4 августа 2017 в 08:29

    +2

    Вводит в заблуждение приставка Script

    А мне кажется, что в заблуждение вводит как раз таки Java в названии. Т.к. JavaScript к Java не имеет никакого отношения.

  • 4 августа 2017 в 08:32

    0

    Просто представьте, что стало бы с TypeScript или Rust после 10 лет отсутствия обновлений.

    C++ жил, жив и будет жить. Хотя стандарт очень долгое время оставался стабильным.

  • 4 августа 2017 в 08:37

    0

    лучше языка чем JavaScript для общих задач вам не найти

    Слова евангелиста, похоже. Вы видели тот же жирный Electron? Это всего лишь обёртка над Chromium, которая отжирает памяти мама не горюй.


    Ну, а что до браузеров — так сложилось. Вместо JavaScript мог быть любой другой из семейства EcmaScript. При всём при этом я считаю JS нормальным языком. Сейчас на волне хайпа он еще обрастает новыми возможностями, так что писать становится приятнее)

  • 4 августа 2017 в 08:45 (комментарий был изменён)

    +1

    Вопрос 11: const (который на самом деле НЕ const)

    Насколько я понял, там было про объекты. Мол, const не делает объекты неизменяемыми. Но мне всегда казалось это и так понятным.

    • 4 августа 2017 в 09:17

      0

      const не даёт изменить сущьность, на которую ссылается переменная. Если это примитив — то const относится к value, соотвтетственно string или number изменить нельзя. В случае с объектом — reference. Переменную с объектом нельзя переопределить, но всё, что внутри объекта остаётся изменяемым. По-моему тоже логоично.
      • 4 августа 2017 в 09:19

        +1

        Собственно, я об этом и написал.

        • 4 августа 2017 в 09:22

          +1

          Да. я так и понял. Просто малость расширил для тех, кто «который на самом деле НЕ const»
      • 4 августа 2017 в 09:30

        0

        Но по сути есть же Object.freeze, как по мне логично что const должен вести себя аналогичным образом когда применяется к объектам.
        • 4 августа 2017 в 09:37

          0

          Вы имеете ввиду, что const к объектам должен применять, как Object.freeze и не давать изменять его поля?
        • 4 августа 2017 в 09:45

          +1

          Нет. const означает константную ссылку на объект. Не более того.

  • 4 августа 2017 в 08:49 (комментарий был изменён)

    +2

    Вопрос 11: const (который на самом деле НЕ const)

    Не особо вы ответили на этот вопрос, ошибка у вас выпала о невозможности заново объявить переменную (если бы убрали const упала бы нужная ошибка).
    А имелось ввиду, что const не работает с объектами.
    Код ниже вполне ок работает без ошибок (в браузере по крайней мере):
    const a = { b: 1 }
    a.b = 2
    

    А вообще основная претензия к JS, то что он все разрешает, а основной аргумент автора данной статьи в том, что «сам дурак, не фиг в ногу стрелять».
    По такому принципу любой язык хорош, если в нем разобраться.
    Язык который ставит ограничения ЗАСТАВЛЯЕТ программиста писать как надо (либо бежать в ужасе), и тем самым повышает профессианализм самого программиста т.к. приходится решать задачи с ограниченным набором инструментов, которые позволяют сделать правильно (не факт, но все же).
    А т.к. JS позволяет делать все, программисту чтобы написать нормальный код нужно читать мануалы и книги, это не круто.

  • 4 августа 2017 в 09:21

    0

    имхо: у js много неочевидных особенностей, отличающихся от других языков. Но, если понимать, как работает язык, то можно писать вполне хороший код. Проблема в том, что не все хотят копать внутрь и разбираться. Ну и низкий порог входа пораждает множество низкокачественного кода. А налажать в js очень легко)
  • 4 августа 2017 в 09:26

    +2

    Можете наследовать через классы, можете через прототипы.

    Тот неловкий момент, когда забыл, что классы в JS работают через прототипы…

  • 4 августа 2017 в 09:29 (комментарий был изменён)

    0

    Ну, что можно сказать?
    Автор повторил свои мантры 3-летней давности о том, какой JS замечательный, мощный и безграничный (в смысле отсутствия границ для программиста: хочешь — стреляй в колено, а хочешь — в лодыжку) язык. Конечно, если ты идеальный (сферический в вакууме) программист, каковым себя автор, похоже, и считает. Хотя в его первой статье на хабре его поймали на том, что он сам толком не знает деталей поведения языка.
    Я — не профессиональный программист. Но считаю, что ценность языка программирования должна заключаться не в том, что он позволяет тебе застрелиться бесконечным количеством способов, а в том, чтобы с его помощью можно было написать программу с минимальным количеством ошибок, привлекая для этого многочисленных разработчиков средней квалификации, а не редких и дорогих гуру, познавших дзен JS.
  • 4 августа 2017 в 09:36

    0

    Вы знаете…Node популярна (я это и в той ветке написал)… Что её коэффициент Эффективность/Простота=Очень высок…java тоже эффективна, но не простая.(с Другими языками не знаком).
    Есть вещи которые бы не рискнул разрабатывать на node (Это связанно с ООП и с глубоким наследованием)…
  • 4 августа 2017 в 09:46

    0

    Респект автору, согласен на 200%. Хейтить то, чего не понимаешь — обычное человеческое свойство, но будучи инженером — ты, имхо, должен быть осторожее и объективнее. Легко называть всех вокруг идиотами, но будте готовы потом доказать что сами не идиот. Хейтеры, по моему опыту, доказать этого чаще всего не могут, а споры «о вкусах» тут не имеют смысла, ибо значене имеют только «pros/cons».

© Habrahabr.ru