За что ненавидят Javascript?

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 ธ.ค. 2024

ความคิดเห็น •

  • @arthurkhairullin
    @arthurkhairullin 5 ปีที่แล้ว +25

    Javascript: *has mutations*
    C++ pointers: *hold my beer*

  • @Mike-hp3fh
    @Mike-hp3fh 5 ปีที่แล้ว +33

    1) "0.1 + 0.2 = 0.30000000000000004". В C# тоже такое есть, это прикол процессора а не языков программирования. И по моему это даже хорошо, что JS не делает лишней работы по округлению, так больше производительность.
    2) Про NaN не понял в чем проблема. NaN означает неопределенное число, любое число. И я думаю все проблемы с ним возникают из-за того что люди не понимают смысла этого значения. "любое число" не равно "любому числу", и поэтому NaN === NaN будет всегда возвращать false.
    3) "Объект переданный в функцию может быть изменен" Это особенность не JS, а всех не функциональных языков: C++, C#, Java, ...
    "Необходимо постоянно копировать объекты..." - это проблема архитектуры и не понимания языка и его возможностей.
    4) "Сложность с определением типа данных". Не такая уж и сложность, скорее легкое неудобство, которое решается набором функций хелперов. Когда пишешь сложные программы такие мелочи не напрягают совсем.
    5) "Низкая производительность глубокого наследования". Согласен что здесь есть потери в производительности, но они не такие уж и большие. Кроме того v8 развивается и исправляет такие недостатки.
    6) "JavaScript однопоточный", и слава богу. Это значит, что ни одному разработчику не придется заниматься отладкой многопоточных приложений, разрешением взаимных блокировок и прочим. Ну и переключение между потоками и создание потоков отнимает у процессора дополнительное время. Решение с WebWorker на мой взгяд очень хорошее для создания многопоточных приложений на JS.
    7) "последовательные await работают последовательно", так как и должны работать, так же и в C# работают. Для одновременности (для одновременной загрузки данных например) нужно использовать Promise.all(...)
    8) "проблема кроссбраузерности и кроссплатформенности" решается тестами с использованием такихъ решений как karma или intern js + selenoid. Минус только в том что с этим нужно дополнительно разбираться и настраивать. Но тем не менее по части кроссплатформенности JS все равно обходит все другие подобные решения.
    9) "изменения в браузере ломают код программы и приходится переписывать". Да это нужно учитывать заранее и продумывать архитектуру приложения.
    10) "проблемы с babel", следуй только принятым стандартам языка и проблем не будет. Смысл в babel только в том чтобы программист всегда мог писать на самой свежей версии языка не заботясь о кроссбраузерности.
    11) "может писать на другом языке который транслируется в JS". Можем, но проблема производительности будет всегда и для всех языков, и поэтому намного лучше писать приложения на чистом JS и понимать как он быстро работают отдельные его элементы, чем дополнительно еще думать о том как другой язык скомпилируется в JS.

    • @СергейКнязев-ь1р
      @СергейКнязев-ь1р 4 ปีที่แล้ว +3

      2) NaN - Not a number. Не число. Вообще,совсем,ниразу не число.
      3) И да, и нет. Иногда скопировать объект нереально из-за дикой вложенности, при этом он является сторонним кодом.
      4) Об этой хeрне приходится помнить, так что напрягает.
      5) Не особо развивается. Уже оптимизировали всё что можно.
      6) Но при этом асинхронный, так что хз, хз.
      7) Я думаю речь про рефакторинг. Можно заeбаться и случайно накосячить. Но в целом согласен, притянуто за уши.
      8) Какие ещё другие? 0_о
      9) Бред. Не угадаешь что они решат выпилить.
      10) Проблема в том, что приходишь на проект или берёшь заказ, а там какой-то eблан вот такое вот такое вот "набабелил". Разбираться очень неприятно.
      11) Лучше снести всё это древнее HTML|CSS|JS говно и сделать заново. И не ври, что у тебя не было подобных мыслей )

    • @aromorphosis5737
      @aromorphosis5737 4 ปีที่แล้ว

      JS, C++ и C# - не функциональные? ok...

    • @stepanpetei2405
      @stepanpetei2405 4 ปีที่แล้ว +1

      @@СергейКнязев-ь1р чтоб не напрягаться с типами, есть тайпскрипт.

    • @uvwzyx
      @uvwzyx หลายเดือนก่อน +1

      Пункты 1 и 2 берут начало из IEEE 754, учите матчасть

  • @sakuranasty
    @sakuranasty 5 ปีที่แล้ว +31

    А теперь видео почему ты любишь js, а то грустно стало)

  • @demimurych1
    @demimurych1 2 ปีที่แล้ว +23

    00:42 *Числа в языке JS реализованы одним типом*
    Это не так. Согласно спецификации у нас есть есть два типа Number и BigInt.
    В реальности же типов три: Small Integer: 31 битное целое число со знаком, число с плаваюшей точкой (double) и BigInt.
    соответственно. Причем реализация SMI вне зависимости от того, что оно остуствует в спецификации, во всех рантайм одинаковая.
    Любая работа с числами, если она может быть помещена в 31 бит ( именно 31 а не 32) автоматически ведется как работа со SMI типом. Стоит перейти эту границу и мы получаем Double. Ну а BigInt обяьвляется через свою нотацию.
    01:13 *Прикол с числами*
    Такой, как Вы выразились прикол с числами, есть во всех языках абсолютно. Более того все они дают один и тот же результат в случае, если как и JavaScript реализовывают математику с плавающей запятой согласно общему стандарту IEEE 754.
    Если говорить академическим языком, то естественно никаких приколов в языке нет. И он ведет себя строго в соответствии со спецификацией, в рамках которой работают и другие языки.
    01:20 *typeof*
    унарный оператор тайпоф не сообщает тип переменной. И никогда не сообщал. Унарный оператор typeof возвращает строку в соответствии с определенными условиями, которые могут выходить далеко за рамки типа данных. Внимательно прочитайте официальную спецификацию и не несите чуши.
    01:36 *NaN*
    Это не в JS. Это во всех языках программирования которые реализуют логику работы с числами с плавающей запятой, согласно общепринятому стандарту IEEE 754. Где описаны как все операции так и такие константы как NaN -0 +0 и так далее. Вам домашнее задание - прочитать специфакию и понять для чего в нее введены такие, как вы сказали странные числа как NaN. После чего, я очень надеюсь Вы больше не будете повторять этой ахинеи
    04:40 *В JS никогда не было ООП*
    Молодой человек, у меня для вас плохие новости. В JS реализована старейшая парадигма ООП, называемая прототип ориентировання модель ООП. Классы - это другое направление ООП, называемое класс ориентированное. Которое с точки зрения возраста использования просто ребенок перед прототипами.
    ООП не зависит от того есть у вас классы в языке или нет. Вам домашнее задание прочитать что такое ООП, какие его основные признаки, какие бывают модели ООП
    06:50 *JS однопоточен*
    С разморозкой. С 2010 года JS перестал быть однопоточным. Всем желающим вкусить радости гонки, оргазмы от использования мьютекосв и прочие прелести программирования когда у вас больше одного потока и ивент лупа домашнее задание: прочитать что такое Workerы, следом прочитать что такое Atomic операции. Провести пару опытов с воркерами, своими глазами убедиться что это отдельные тред и даже отдельный процесс со своим евент лупом, который может продолжать работать даже когда вы убили рантайм.
    07:50 *Лапша кода*
    Когда люди делали подобную реализацию, они считали что пользоваться ей будут программисты, которые знают что такое композиция функций, а не прокладка между клавиатурой и креслом, которая даже допустить не может что ребята уже давно подумали, это кто то просто забыл сделать тоже самое.
    09:00 *async awaite это синтаксический сахар*
    async и awaite это не только не синтаксический сахар над промисами, но и имеет совершенно другую природу. Вам очередное домашнее задание, узнать что такое генераторы и какое отношение они имеют к async awaite. И если уж фантазировать на тему сладкого, то async awaite это синтаксический сахар поверх генераторов, которые являются частным случаем когда возвращаемые данные всегда завернуты в промис обьект.
    *Игого*
    Попытка притянуть за уши проблемы бабеля и тех кто его использует к самому языку заслуживает отдельного комментария, который уже совсем писать не хочется.
    Автор видео вообще не знает JS и вероятно даже спецификацию никогда в глаза не видел. Занимается мифотворчеством и хуже всего то, что делает это он с лицом человека, который познал сермяжную правду языка. На деле же выдает свои фантазии за реальность.

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  2 ปีที่แล้ว +3

      Можно ещё через 5 лет зайти с новой порцией разоблачений ;)

    • @demimurych1
      @demimurych1 2 ปีที่แล้ว +3

      @@SeniorSoftwareVlogger Молодой человек. Я уверен в том, что Вы и сейчас не в состоянии пройти собеседования даже на позицию Junior разработчика с вопросами которые касаются только базовой платформы языка которая не менялась с 1994 года. Если Вы думаете иначе я Вам онлайн это могу продемонстрировать, задав Вам бызовые вопросы, выслушать ваши ответы и показать потом как на самом деле.
      Так что конечно же апелляция к 5 годам хороший аргумент, но не в Вашем случае.

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  2 ปีที่แล้ว +4

      Ух! Ну не смогу так не смогу 🤣

    • @kulikoffAS
      @kulikoffAS 2 ปีที่แล้ว

      капец ты душнила

    • @bukkaneer
      @bukkaneer 2 ปีที่แล้ว

      Спасибо, надо будет некоторые вещи себе в календарик учебный внести.

  • @КэмКим
    @КэмКим 5 ปีที่แล้ว +4

    Расскажите про все языки программирования, которые вы знаете. Как учили, где информацию о них брали

  • @KoichiHub
    @KoichiHub 2 ปีที่แล้ว +7

    Киану Ривз реально крутой мужик!
    Практически все видосы его смотрю, реально интересно :)

  • @ThePASHI4
    @ThePASHI4 5 ปีที่แล้ว +5

    На 3:25 вроде логично выглядит, что new Boolean(true) - это "object", ведь по сути это и есть объект "класса" Boolean. Если написать просто Boolean(true), без new, то тип будет "boolean"

    • @dmitry.gashko
      @dmitry.gashko 5 ปีที่แล้ว

      Это и есть логично. Но для js.На деле Boolean - это обертка. Ее нельзя использовать. Она создается автоматически при вызове методов примитивных типов данных (ведь у примитивных типов данных методов нет и быть не может - на то они и примитивные).
      Но:
      if (new Boolean(false)) alert('Nope!');

  • @AndrewVaganovPage
    @AndrewVaganovPage 5 ปีที่แล้ว +72

    - Я уже устал про комментарий про 0.1 + 0.2 === 0.30000000000004...
    Посмотрите пожалуйста на другие языки. Там по бОльшей части происходит тоже самое.
    0.30000000000000004.com/
    - На мобильных устройствах ты тоже не контролируешь платформу
    - Пример с глубокими колбеками - так никто не пишет (либо в команду нужен эксперт, который оттучит делать такую жесть). Promise-hell тоже не делают обычно. Даже лет 8 назад, когда они были в драфтах, в статьях глубоко критиковали такую запись.
    - Наследованием в JS почти никто не балуется. От того что компоненты в Реакте начинаются со слова Class, ООП это назвать язык не поворачивается.
    - Babel - у всех тот же самый JS. Бандл у клиента тот же самый (за редким исключением). Как минимум позволяет на разных платформах писать один код. И если мы больше не поддериживаем IE11, то мы просто можем отключить ту часть, которая её полифилила или преобразовывала, вместо рефакторинга всего кода.
    Во всех языках есть свои компромиссы продиктованные историей и платформой. И на любом языке можно писать хорошо.

    • @yevhenukrainianer4781
      @yevhenukrainianer4781 5 ปีที่แล้ว +3

      Так как многопоточности добиваться правильно в ДжС ?

    • @artemustimov9463
      @artemustimov9463 5 ปีที่แล้ว

      @@yevhenukrainianer4781 никак. JS однопоточный по определению.

    • @AndrewVaganovPage
      @AndrewVaganovPage 5 ปีที่แล้ว +5

      @@yevhenukrainianer4781 Можете добиться этого при помощи вебворкеров. Но это сухой ответ и это не всегда удобно. Исходить нужно от задачи. Возможно вам хватит просто правильно приготовленной асинхронности. Если сильно нужна именно многопоточность, то возьмите другой язык который под это заточен. Как правило, люди в отрыве от программирования не пытаются молотком срубить дерево. Молоток прекрасно забивает гвозди, но им тяжело срубить дерево, но это не проблема молотка. Это не минус JS, он просто напросто не создавался для этого. А вот всё что по асинхронности там работает прекрасно.

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  5 ปีที่แล้ว +4

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

    • @AndrewVaganovPage
      @AndrewVaganovPage 5 ปีที่แล้ว +2

      @@SeniorSoftwareVlogger ​ Думаю пройдёт ещё не один год пока это станет реально удобным. C WASM можно уже хоть сейчас, но это уже отдельный слой приложения.

  • @d.n.2143
    @d.n.2143 5 ปีที่แล้ว +71

    Почему Джон Уик стал программистом?🤔

  • @TheStrongestBaka
    @TheStrongestBaka 5 ปีที่แล้ว +39

    Вставлять рекламу воркшопа на JS в видео о ненависти к этому языку - это гениально.

    • @nightdog007
      @nightdog007 5 ปีที่แล้ว +2

      в js много проблем, но это не отменяет того что он нужен и востребован сейчас

  • @topkyrgyz2923
    @topkyrgyz2923 5 ปีที่แล้ว +1

    Добрый день, можете пожалуйста название своего кресла написать. И за сколько купили?

  • @РомаИванов-в4л
    @РомаИванов-в4л 4 ปีที่แล้ว +8

    Все сказанное, очень спорно. Сложилось впечатление, что это кликбэйт. Сам автор как будто не очень понимает, о чем говорит.
    Гораздо справедливее отметить, например
    typeof null === 'object'
    [1, 2] + [3, 4] === '1,23,4'
    Вот это действительно странно. Но и у этого есть обьяснения

  • @nick_kol_nick
    @nick_kol_nick 5 ปีที่แล้ว +6

    Привет, может тут уже спрашивали, но все же.
    Что ты думаешь про webassembly? Заменит ли он в конечном счете Javascript?
    (сорри за холиварную постановку вопроса)

    • @slnt_opp
      @slnt_opp 5 ปีที่แล้ว

      ну конкурентов помимо много, так что можно просто ндеятся, что что-нибудь заменит)

    • @BHy4OK
      @BHy4OK 5 ปีที่แล้ว +4

      да легко. если от всего технического абстрагироваться, то он приходит к миру с одной из величайших сущностей человека - ленью. бэкендеры могут спокойно писать на своих языках и это будет пахать на фронте. яркий пример Blazor от мелкомягких. фигачишь на c# и фронт готов

    • @ВладимирКовалёв-у1ф
      @ВладимирКовалёв-у1ф 5 ปีที่แล้ว

      @@BHy4OK двачую, сам юзал blazor, очень классная технология

    • @vsezanyato
      @vsezanyato 5 ปีที่แล้ว

      @@slnt_opp а что там ещё есть ?

  • @a.khakimov
    @a.khakimov 5 ปีที่แล้ว +88

    казалось бы, причем тут winderton

    • @goshagotye
      @goshagotye 5 ปีที่แล้ว +20

      да, причем тут этот счв'шный /dev/null ?

    • @ilya_khabibullin
      @ilya_khabibullin 5 ปีที่แล้ว +5

      А причем, кстати?

    • @cascadengineering
      @cascadengineering 5 ปีที่แล้ว +13

      @@ilya_khabibullin Виндер в одном из стримов высказался о некоторых блогерах, включая автора этого канала, что они - нули и не умеют как следует доносить мысль до аудитории. Если бы он был хоть немного умнее/постарше/дипломатичнее, то знал бы, что делать выводы о человеке сугубо по видосам, не поработав с ним лично, - весьма поспешно и,как минимум, низко.
      Более того, он кичится своим инглишем, а по факту его уровень ниже upper intermediate. Пойдет для неформальных попизделок и просмотра фильмов с субтитрами или попыток произвести впечатление на школоту артистичностью при попытках сэмулировать американское произношение. Не более, во всяком случае на данный момент.

    • @zaemiel
      @zaemiel 5 ปีที่แล้ว +1

      @@cascadengineering А дайте, плиз, ссылку на этот видос, если возможно. Хочу поглядеть :)

    • @cascadengineering
      @cascadengineering 5 ปีที่แล้ว

      @@zaemiel Он закрывает доступ к стримам через какое-то время, и они становятся доступными только тем, кто является его патронами (через patreon.com).

  • @Sevenvad
    @Sevenvad 5 ปีที่แล้ว +15

    Я на немного решил, что winderton - это реально такой тип данных в JS

  • @agostev12
    @agostev12 5 ปีที่แล้ว +13

    javascript всегда был объектно ориентированный или у тебя ООП исключительно с классами связан? кароче много чего высосано из пальца та же проблема складывания чисел 0.1+0.2 это все по стандарту IEEE 754 которым следует не только js а и много других языков

  • @dmitry.gashko
    @dmitry.gashko 5 ปีที่แล้ว +2

    Эхх. Что-то подсказывает, что по мере просмотра видео напечатаю много букв...
    1. Типы данных
    - 0.1+0.3 - js здесь не причем, это ограничения двоичной СЧ
    - typeof NaN - в js NaN это одно из возможных значений для чисел, так же как и Infinity. Причем без него в js просто не обойтись, ведь в нем никакие математические операции не вызывают ошибок - что является часть его идеологии
    2. Объекты
    - передача объекта в функцию - ...честно, вы издеваетесь? JS - не С. В java обьекты тоже передаются по ссылке. Это вообще не проблема. А ресурсоемко (хоть в том же С это почти не существенно)
    + А вот new Boolean() и прочие - это да. На деле об это знают (должны знать) все, но как по мне, такие штуки, просто либо должны быть скрыты от программиста, либо хотя бы он их не должен уметь создавать.
    Но зато такой штукой можно пугать людей из других языков:
    if (new Boolean('false')) alert('Nope!');
    3. Пототипы
    - Здесь на самом все очень просто - это js и это его идеология. Он так работает. Это как раз и дает ту его гибкость, за которую иногда приходится платить.
    - Переопреление прототипов - так просто делать нельзя. Но если это теже, поллифилы - это это очень удобно и круто.
    - Медленно из-за поиска во всех прототипах. Просто по аналогии. Хотим получить значение переменой. Она ищется в текущем scope. Если не находится идет в родительский scope, если не находится там, то идем еще выше и выше, пока не дойдем до глобального объекта. То есть то же самое. И опять же такое или похожее поведение есть по многих языках программирования. В случае прототипов, может быть и будет немного медленее, но в 99.9999% случаев - это реально не важно. Смысл беспокоиться за тысячные доли миллическды, когда другие вещи в любом коде работают от десяток милисекунд до декунд. Если их ускорить на 1% прироста производительности будет больше, чем если ускорить переход по прототипам в пару раз.
    4. Ассинхроность
    - Ассинхроность в js мне просто нереально нравится. Это просто нереально удобно, по сравнению с другими языками. Хоть это и не настаоящая ассинхроность - все равно. Все равно это очень удобно
    - Ад колбеков и мэм 7:23 - писать код можно по разному. В любом языке можно сделать 10000 уровней вложенности. Это не вина языка. Это вина того, кто это пишет.
    5. Не контролируешь платформу
    +- это хоть и да, но ведь по другому, к сожалению никак. Это бремя веба.
    6. На js напишем js (про babel)
    - какой у каждого свой js? Поллифилы это круто. Просто не нужно в серьезных вещах использовать совсем уж стремные вещи.
    7. Модули
    - Вчера/позавчера слышал в подкасте Вадима Макеева (Веб Стандарты), что mjs уже можно и не использовать (ну либо можно, но пока ранова-то)
    8. Обратная совместимость
    - Старые сайты ломать нельзя - всегда, такая идеология это одновременно и просто огромнейший плюс, и ужасный минус. Уже добавили use strict. Но это тоже ж ведь не решение. Хоть бери и делай так что бы в начале файла вместо use strict можно было указывать версию js. Типа doctype для js))

    • @dmitry.gashko
      @dmitry.gashko 5 ปีที่แล้ว

      Про проблему с цифрми и то что это единственный тип.
      На деле ж ведь, то что всего 1 тип - не проблема. Ведь все проблемы с числами все равно связаны в тем что они не целые. А если работать с целыми - хоть они и float, проблем все равно нет.
      А если работать с не целыми, то в любом случае будут.

    • @dmitry.gashko
      @dmitry.gashko 5 ปีที่แล้ว +1

      Кстати, не знал, про BigInt. Посмотрел - классная штука.
      Создал число, запись которого весит пару мегабайт))

  • @nen777w
    @nen777w 5 ปีที่แล้ว +4

    0.1 + 0.2 = 0.3000x не потому происходит что JS плохой, а потому что невозможно уместить в отведенных под одно число двоичных разрядов sizeof(double) все возможные представления вещественных чисел. Поэтому на "дальних от 0 дистанциях" жертвуют точностью. Рекомендую ознакомиться как устроены числа с плавающей запятой.
    На счёт того что все в JS объект, а что ты хотел в языке с динамической типизацией?

    • @BohdanVR666
      @BohdanVR666 4 ปีที่แล้ว

      Нууу, то что все - объект это, по моему, вообще не минус, а про числа - почему нельзя просто взять количество цифр посте точки у первого числа, у второго и сравнить а потом округлить до количества цифр после точки того числа, у которого это значение больше
      Или сделать все просто
      Просто сделать так, что 0.1 == 0.100000... (без сюрпризов в конце)
      И 0.2 == 0.200000... (тоже без сюрпризов)
      Я не понимаю, почему этого нет?

    • @VeloVetal
      @VeloVetal 3 ปีที่แล้ว

      @@BohdanVR666 потому что IEEE 754

    • @StepanChuevYT
      @StepanChuevYT 3 ปีที่แล้ว

      "На счёт того что все в JS объект, а что ты хотел в языке с динамической типизацией?", на самом деле это не так. Например когда мы написали вот так:
      let n = 3;
      Мы сделал переменную с примитивным типом "number", но что будет если мы вызовем у этого числа метод toString:
      n.toString();
      создастся объект обёртка, т.е вот такое выражение:
      new Number(n).toString();
      А т.к функция-конструктор возвращает объект в котором есть метод toString, мы можем его вызвать.
      Ещё стоит сказать что многие движки это оптимизируют.
      А вот если бы мы сразу записали:
      let n = new Number(3);
      В переменной n уже хранилась бы ссылка на объект, но тогда возникнет проблема с typeof.

  • @HarnFan
    @HarnFan 5 ปีที่แล้ว +23

    Ничего не понял, но очень интересно

    • @kuany5h
      @kuany5h 5 ปีที่แล้ว

      + xD

  • @alexeykarchiganov2267
    @alexeykarchiganov2267 4 ปีที่แล้ว +17

    Насчет NaN: это все абсолютно нормально и есть в других ЯП, не только в JS. И работает оно так же. Значение NaN должно было использоваться в случаях, когда, например, +inf делится на +inf. Вот что должно получиться? По правилам мат анализа должно было получиться ИДИНАХУЙ. То же самое и с взятием корня из отрицательного числа. Ну просто нужно было такое значение, которое, в случае правильного срабатывания программы, дает какой-то адекватный результат и записывает свое значение в адрес памяти, отведенный для числа. А в случае неправильного - выдает ИДИНАХУЙ, но при этом не валит полностью всю программу. Таким образом тебе не нужно заранее проверять перед каждой операцией число на валидность. Ну вот допустим у тебя огромная формула с делениями, взятиями корней и степеней. Будешь каждую бинарную операцию записывать в отдельную переменную и проверять, можно ли ее использовать дальше? Да ну нахуй. Ну и также решили, что было бы удобно, что NaN не равен ничему, даже самому себе; поэтому нужно вызывать отдельную функцию.
    Так что JS вполне себе нормальный ЯП, не настолько уж хуже остальных.

  • @Acid31337
    @Acid31337 5 ปีที่แล้ว +35

    Эх, классика. В js числа с плавающей точкой ничем не отличаются от double в C++ или Java.
    Единственное что console.log в отличие от printf, cout или System.out.println выводит гораздо больше знаков после запятой. Поэтому КАЖЕТСЯ что 0.1 + 0.2 как-то не так складываются только в javascript.
    Это только так кажется.
    с NaN то же самое. Это не часть javascript, это часть стандарта, который реализован на любом железе. NaN есть везде.

    • @love.society
      @love.society 5 ปีที่แล้ว

      От С тоже?

    • @mazZZzilaplayer
      @mazZZzilaplayer 5 ปีที่แล้ว +4

      @@love.society про 3.00000...4 -- да. Это не вина языка, это просто то, как работает железо. Железо не умеет нормально работать с числами, которые не делятся на 2, такими как 2/3 или 3/7. Всегда будет определённая погрешность. Если интересно, то почитай информацию на сайте 0.30000000000000004.com

    • @vlad071096
      @vlad071096 5 ปีที่แล้ว +14

      Идиотизм не в плавающей точке, а в том, что целочисленного типа нет.

    • @владимирсенцов-р1ю
      @владимирсенцов-р1ю 5 ปีที่แล้ว +1

      На самом деле это потому, что лень было рантайм делать.

    • @Acid31337
      @Acid31337 5 ปีที่แล้ว

      @@vlad071096 на самом деле есть, надо места знать ))
      Настоящая целочисленная арифметика включается при наличии битового оператора который ничего не делает, например, вот целочисленное деление: a / b | 0. Правда только 32 бита.

  • @t33a25
    @t33a25 5 ปีที่แล้ว +1

    Совершенно не против рекламы,просто она у тебя начинается как-то неожиданно :D

  • @van777ok3
    @van777ok3 5 ปีที่แล้ว +29

    Привет) Интересный видос,спасибо) Вот такого плана бы побольше)

  • @ВладиславДараган-ш3ф
    @ВладиславДараган-ш3ф 5 ปีที่แล้ว +59

    Это не "мутации" объектов, это передача по ссылке. Компутер сайнс, емае.

    • @dmitriibychkov9406
      @dmitriibychkov9406 5 ปีที่แล้ว +11

      Да, узколобым фронтендерам не ведомо что так во всех языках

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  5 ปีที่แล้ว

      Детектед 😂

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  5 ปีที่แล้ว

      На th-cam.com/video/k_mRqDoeAGg/w-d-xo.html он там я тоже обосрался сказав по привычке "передача по указателю"

    • @ВладиславДараган-ш3ф
      @ВладиславДараган-ш3ф 5 ปีที่แล้ว

      @@SeniorSoftwareVlogger давненько наблюдаю твой канал, очень много полезных видосов для "вкатывальщиков" вайти, но сразу возникает вопрос - как ты сам относишься к феномену повального "войтивайти"?

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  5 ปีที่แล้ว

      @Владислав Дараган мой пукан молчит, не полыхает. Какие с этим проблемы?

  • @sergejchap62
    @sergejchap62 ปีที่แล้ว

    в каком языке программирования решена проблема обновления? С учетом новых фич. Такой есть, если не придуман полгода или год назад. Это как бы вопрос, но не уверен надо ставить знак ?
    На чистом JS в продакшен наверное мало кто выходит. Это Vues, TypeScr, NestJs ... и далее, которые не уверен все кто-то понимает или хотя бы знает.
    Наверное в этих фреймворках учтены перечисленные проблемы. Хотя, все конечно не надо надеяться можно учесть в любом ЯП.

  • @dmitriymaslov946
    @dmitriymaslov946 5 ปีที่แล้ว

    Дмитрий, почему в видео присутствует "winderton" ?? будет какой-то коллаб, обзор или что-нибудь в этом стиле?

  • @teea3731
    @teea3731 5 ปีที่แล้ว +38

    Выучил js по этому видео

    • @dimageorgiev5798
      @dimageorgiev5798 5 ปีที่แล้ว

      Сенсей помог тебе постичь дзен ;)

  • @kisli3000
    @kisli3000 5 ปีที่แล้ว

    Привет, а можешь расскызать про typeScript решает ли он проблемы, и если да, то почему его обычно не используют?

  • @sviat2459
    @sviat2459 5 ปีที่แล้ว +2

    Джс просто відрізняється від тієї мови до якої він звик. В цілому це просто інструмент, який чудово виконує свою роботу. У нього є певні нюанси, але і сам світ неідеальний.
    Хлопчина цього не хоче розуміти, так само як і не хоче зрозуміти причини чому так. Джс був написаний на колінці за декілька днів на своєму початку. Це була примітивна мова для того, щоб хоч якось добавити інтерактив у веб. І що ми маємо зараз? ну ви всі самі знаєте
    Перед розробниками ядра джс стоять набагато серйозніші виклики ніж перед творцями більшості інших мов. Кросбраузерність, кросдевайсність, , величезний зоопарк областей застосування і треба то все хоч якось продумати і заставити працювати
    і найголовніше - треба вводити нові апішки, розвивати мову, але і потрібно підтримувати за будь яку ціну старий функціонал джс, тому що багато вебсайтів працюють на старому апі
    Ну трохи про нюанси джави (типу, а у вас теж не все гладко)
    - всі кажуть, що у джави є типізація і бла блабла. protected / private і подібні класні штуки ооп. У джави крім цього ще є така чудова штука, як Рефлексія через яку можна дістатись до методів (і не тільки) будь якого класу, включаючи приватні. Тобто ми можемо спокійно отримати доступ до приватного методу будь якого класу. Що якби, не сильно гуд. Також воно дозволяє створити інстанс класу в рантаймі програми, при чому ім"я класу може бути невідоме до момента рану програми. Чи колл методу інстанса класу по його імені. Якось динамічно виходить)
    - на рахунок мутабельності джс. Так у джави також є mutable objects, при чому більшість класів в джаві - мутабли. Більше того, багато людей в джаві юзають mutable на повну, оосбливо в біг даті. Тому що кожен раз робити новий "імутабл" об"єкт при якійсь маніпуляції з датою, ресурсозатратно і б"є по пам"яті, особливо у випадку з великими
    об"ємами даних
    - лапша коду в джс. Ой боже ж ти мій, а джавовські легендарні Хелло ворлд класи з
    '''public static final void main()''' то зовсім не лапша, чи тонни геттерів\сеттерів в класах
    джс якраз через свою динамічність набагато лаконічніший і менш verbose ніж будь яка типізована мова
    Одним словом факати особливості мови це нерозумно, чесно кажучи. Набагато правильніше буде спробувати зрозуміти чому так, або ж просто слідувати правилам мови, а з досвідом і прийде розуміння цих самих правил.

  • @СергійЩербина-г4щ
    @СергійЩербина-г4щ 5 ปีที่แล้ว +7

    Громкость звука нужно сделать больше!!! Еле-еле слышно

  • @sevi43
    @sevi43 3 ปีที่แล้ว +8

    Притянуто за уши если честно
    "то что ваш код будет выполняться последовательно при await, неочевидно", бред же, из синтаксиса следует что последовательно
    Если ты используешь в продакшн коде вещи которые могут и не выйти в язык, то проблема в тебе, а не в инструменте

  • @preenxus3425
    @preenxus3425 5 ปีที่แล้ว +2

    а что это за hacktoberfest?

  • @leonsadeness
    @leonsadeness 3 ปีที่แล้ว +3

    На счет мутации не согласен. В нормальных ЯП мутация не является побочным эффектом, особенно в императивном стиле. Просто многие JS-еры никогда не слышали про ссылочные и значимые типы. По поводу await, 8:40 тут извини автор, если внимательно (не жопой, а глазами) прочитать принцип работы await то все вполне очевидно. Соблюдать SOLID сложно даже в C#, а JS и вовсе невозможно. Самое страшное происходит когда проект обрастает кучей кастомных методов высшего порядка, оберток над обертками, и библиотеками разных подходов описания. Даже отсутствие патерн мачинга уже перестает напрягать, при виде конфигураций вынесенных в отдельный проект. С таким подходом любая процедурщина в 6000 строк будет выглядеть куда более понятнее и привлекательнее для любителей нырнуть в легаси, нежели этот взрыв на макаронной фабрике с осколками деклараций типов в TS , и любительским подходом к организации кода.
    Каждый год сеньоры пытаются отделить мух от котлет, выдумывая библиотеки, и новые фишки в экосистемах именитых фреймворков, в надежде сохранить стандарты, архитектурные паттерны, и читабельность кода. Вот только, сколько волка не корми (хуками, воркерами, composition_api, virtualDOM, SSR, и прочими костылями), он все равно Null объектом считает ;)

  • @ilyao.naumenko4831
    @ilyao.naumenko4831 5 ปีที่แล้ว

    Есть мнение, dart сможет заменить javascript, что думаете об этом?

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  5 ปีที่แล้ว +2

      Один раз не смог, а теперь и Тайпскрипт подрос

    • @ilyao.naumenko4831
      @ilyao.naumenko4831 5 ปีที่แล้ว

      @@SeniorSoftwareVlogger то есть, typescript, возможно альтернатива javascript? Или надежда, js сможет исправить костыли и возможно ли это?

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  5 ปีที่แล้ว +1

      Все возможно 🙏

  • @AssassinNCR
    @AssassinNCR 5 ปีที่แล้ว +19

    Пункт 2 с мутацией объекта не понял. Что здесь неудобного, разве в других языках как-то по-другому реализовано? Я думаю, модифицировать исходные параметры метода - это в любом случае плохое решение. Еще Макконнелл в "Совершенном коде" писал: "не используйте параметры метода в качестве рабочих переменных". При таком подходе выстрелить себе в ногу гораздо легче и метод труднее сопровождать. Интересно посмотреть кейс, в котором это понадобилось.
    Вообще, изучая JS, я тоже много плевался и делал много ошибок. В основном это происходит от того, что язык очень многое позволяет сделать - на этапе изучения легко наломать дров. Но с опытом гибкость языка становится преимуществом. Для тех, кому это всё же не нравится в силу личных убеждений, есть TypeScript.

    • @ArtemKuznetsovTV
      @ArtemKuznetsovTV 5 ปีที่แล้ว

      +1

    • @dmitry.gashko
      @dmitry.gashko 5 ปีที่แล้ว +1

      @Тимофей Кривенко При чем, только, здесь, функциональное наследование???? Та штука к мета программированию находится ближе чем к функциональному программированию))

    • @dmitry.gashko
      @dmitry.gashko 5 ปีที่แล้ว

      Во многих языках можно контролировать, передвать объект по ссылки либо копировать.
      В том же С/С++:
      void func(User user) {} // копируется, и если в функции поменять что-то в объекте, то во внешнем коде ничего не поменяется
      void func(User &user) {} // передается по ссылке (как в js/java...)
      void func(User *user) {} // передается указатель (суть таже, но немного по другому (на самом деле предыдущий способ, скорее сокращение этого))
      И все же как в js мне нравится больше.
      Хоть и как в C++ тоже интересно. Как минимум гибкости в больше, хоть и подывает сложность.

    • @kookaburru
      @kookaburru 5 ปีที่แล้ว +3

      Вот когда будете поддерживать реальный проект, тогда прймете что мутация объекта не есть гуд.

    • @kookaburru
      @kookaburru 5 ปีที่แล้ว +1

      @Сергей Семенов, проблема в том что если проект чужой вы будете долго искать ошибку мутации. В своём проекте конечно вы уже сами контролируете код. Например в React по умолчанию принята анмутабельность, но если там где то в коде объект изменится, то вы ногу сломаете пока будете искать баг. Думаю автор именно это имел ввиду.

  • @eugenerudakov3624
    @eugenerudakov3624 5 ปีที่แล้ว +1

    Про колбеки несуразица. Что мешает использовать ссылку на функцию вместо ее реализации в калбеке?

    • @drovoseg
      @drovoseg 5 ปีที่แล้ว

      Лишний аргумент у функции. А их может быть длинная цепочка.

  • @IceKorm
    @IceKorm 5 ปีที่แล้ว +1

    Привет!
    Не нашёл твоей телеги в описании.
    Плюс, у тебя сайт упал:
    Error establishing a database connection

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  5 ปีที่แล้ว

      Телега в описании и сайт поднялся 🙌

  • @alexey.sibirtsev
    @alexey.sibirtsev 5 ปีที่แล้ว +14

    Ну начнём с того, что js не при чём при вычислении 0.1+0.2, это проблема хранения данных в двоичной системе, что прописано в IEEE 754

    • @alexey.sibirtsev
      @alexey.sibirtsev 5 ปีที่แล้ว +5

      Да и в целом, исторически js -- это язык браузерный, поэтому есть много боли, при попытках сделать его языком универсальным, но то что получилось на сегодняшний день выглядит более чем многообещающим

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  5 ปีที่แล้ว +2

      🙄

    • @alexey.sibirtsev
      @alexey.sibirtsev 5 ปีที่แล้ว +9

      @@SeniorSoftwareVlogger ну и аудитория у тебя :)

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  5 ปีที่แล้ว

      @@alexey.sibirtsev и не говори, mansplain`ят вещи о которых сказано на первой минуте.

    • @serezha4755
      @serezha4755 5 ปีที่แล้ว

      @@SeniorSoftwareVlogger Это архитектураная проблема компютера что получение нецелие числа хранятся с чудовешним остатком и в фильме "Матрица" как я помню из за этого и произашло сбой в системе․

  • @atmospheric_b
    @atmospheric_b 5 ปีที่แล้ว

    ну как по мне babel - единственное решение, когда в мире столько браузеров и они не унифицированы. А что делать то? Как быть с internet explorer?

  • @alexandersmurov1738
    @alexandersmurov1738 5 ปีที่แล้ว

    Спасибо за видео 🖤
    Вы работали с ангуляром? Есть возможность посоветовать книгу/курс? Буду очень благодарен.
    Всех благ!

    • @monsterbesel
      @monsterbesel 5 ปีที่แล้ว

      Александр Смуров сейчас наверное скажу неприятную для тебя вещь ,но если ты знаешь основы языка, то иди скачивай Фреймворк , открывай доку и практикуйся. Напиши в начале авторизацию ,подёргай какие-то апишки. Придумай себе задачу (мини пэт проект) и попробуй его написать. Примеров как писать на нагуляно можешь на гитхабе поискать

  • @cybertabak8951
    @cybertabak8951 5 ปีที่แล้ว +1

    Классный контент! Можешь рассказать о плюсах минусах Golang, перспективах. Я начинал изучать программирование давно и плевался от ПХП, с джаваскриптом были какие-то мучения, а GO очень понравился. Может Я - мясо и программирование не моё ? Летаю в сомнениях. Хотел бы разработать AI, который будет обучать людей английскому, но это так фантазии школьника, в реальности все слишком сложно. Посоветуй что-нить (

    • @cascadengineering
      @cascadengineering 5 ปีที่แล้ว +1

      Сосредоточься на чем-то одном - выбери стек, сделай небольшой проект от начала и до конца. Гуманитарии заходят в прогинг и нормально себя чувствуют, поэтому качай скилл, ориентируясь на требования вакансий, и перестанешь считать себя мясом.

    • @cybertabak8951
      @cybertabak8951 5 ปีที่แล้ว

      @@cascadengineering Спасиба!

  • @aleksyantkiewicz4369
    @aleksyantkiewicz4369 5 ปีที่แล้ว +3

    Я только собираюсь учить JS и ничего в нем не смыслю, но почитав коментарии понял, что программирование бывает веселее всяких там кинокомедий. Особенно добил комент про жонглирование хуями. Ржу в голос и вытираю слезы :)

  • @dimageorgiev5798
    @dimageorgiev5798 5 ปีที่แล้ว +1

    Дим Приветствую ! Делиться империческим опытом бесценно!! Спасибо за ценный контент !

  • @szyk0v
    @szyk0v 5 ปีที่แล้ว +2

    Все ответы в книге "Yout don't know JS". Ну блин не ожидал от тебя. Классы это прекрасно. Люди городили монстров на основе прототипов пытаясь сделать из прототипов наследование. На вам классы. И тут полилось "Ой это не круто. Внутри прототипы." Babel это не новый JS это и есть JS. Это даже не суперсет как TS. Это просто обычный транспайлер. А негативный опыт у тебя с экспериментальными функциями. Их никто тебя и не просил использовать. Это везде отмечается. Async/Await это вообще проще некуда. Пришло из C#. Куда сложнее понять callback/promise. А модули это вообще прекрасно. Наконец то можно писать что-то нормальное.

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  5 ปีที่แล้ว +1

      Сергей :) Все в порядке, жди другое видео 😉

  • @elderlykite4605
    @elderlykite4605 5 ปีที่แล้ว

    Сделай пожалуйста ролик про курсы программирования . Интересно твое мнение , лучше ли те люди которые закончили курсы , чем те которые зависали 5 лет в университете , хотя бы на раннем этапе работы с ними . Надеюсь ты прочтешь...

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  5 ปีที่แล้ว +1

      Я прочёл! Просрать свое время бездарно можно как на курсах, так и в универе. С той разницей, что диплом ценится хотя бы при эмиграции, а сертификат курсов вообще никому не нужен. Ни курсы но универ сами по себе не определяют качество специалиста и окончание одного не означает, что можно игнорить другое

  • @p343nk4
    @p343nk4 5 ปีที่แล้ว +1

    1:40 - Всё верно, NaN *это число!*
    Неопределенность или NaN (от not a number) - это представление, придуманное для того, чтобы арифметическая операция могла всегда вернуть какое-то не бессмысленное значение. В IEEE754 NaN представлен как число, в котором E=Emax+1, а мантисса не нулевая.
    Источник: habr.com/ru/post/112953/

  • @aerahtv0000
    @aerahtv0000 5 ปีที่แล้ว

    а как тебе Lua или С# в сравнении с JS ?

  • @wswebus922
    @wswebus922 5 ปีที่แล้ว

    Классное видео. Напоминает чайка-менеджмент (Прилетел, нагадил, улетел). А будет ли видел как эти проблемы исправлять? Или как писать код так, что бы не ходить по граблям? 🤔

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  5 ปีที่แล้ว +1

      Парень из закреплённого коммента расскажет! 👌 А если серьезно, то планирую. Это чтобы аппетит разыгрался

  • @Boortwint
    @Boortwint 5 ปีที่แล้ว +5

    4:33
    Javascript с самого начала поддерживает ООП-парадигму, соответственно, он является объекто-ориентированным языком. Просто в основе JS лежит прототипная организация. То, что Javascript не статично-классовый, как Java, например, не перестаёт делать его объектно-ориентированным.

    • @Илья-с1л6э
      @Илья-с1л6э 5 ปีที่แล้ว

      или как было написано в одной из книг (либо "JavaScript сильные стороны", либо "JavaScript Шаблоны проектирвания") JS - это САМЫЙ объектно ориентированный язык. Ведь в нем ВСЕ объекты)))

  • @AxelGt30
    @AxelGt30 5 ปีที่แล้ว +13

    Еще появился TypeScript аля расширенный JS. Расскажи про реакт и\или ангулар, что лучше и тп

    • @MrSevenZZZ
      @MrSevenZZZ 5 ปีที่แล้ว +6

      Лучше vuejs.

    • @ivansidorov5
      @ivansidorov5 5 ปีที่แล้ว

      TS это костыль в JS , имеет кучу проблем и недоделок

    • @ArtemKuznetsovTV
      @ArtemKuznetsovTV 5 ปีที่แล้ว +3

      @@ivansidorov5 ts шикарен после js

    • @vabka-7708
      @vabka-7708 5 ปีที่แล้ว

      @@ivansidorov5 TS хорош, но если сравнивать с тем же C#, который тоже от микрософта, то экспириенс бедноват. Продолжаем ждать wasm

    • @ivansidorov5
      @ivansidorov5 5 ปีที่แล้ว

      @@ArtemKuznetsovTV Ты просто не пробвоал нормальные языки

  • @TheVipUsers
    @TheVipUsers 5 ปีที่แล้ว

    видео получилось очень классное)) Можешь запилить подобное про Erlang? А то тема очень интерестная но на TH-cam материала по ней очень мало))

  • @BarrBozzO
    @BarrBozzO 5 ปีที่แล้ว

    Привет, а что за микрофон петличка, подскажите?

  • @norzqq
    @norzqq 5 ปีที่แล้ว +5

    имхо не все так грустно, мне после с# очень даже зашел js, поначалу только немного ох*ел, но теперь не хочется обратно на статику

    • @predaytor
      @predaytor 5 ปีที่แล้ว +6

      Что с шарпом не так? Идеальный же язык

    • @norzqq
      @norzqq 5 ปีที่แล้ว

      @@predaytorэмм, я не давал никакой оценки с#

    • @DevilAlex03
      @DevilAlex03 5 ปีที่แล้ว

      Тоже ах*ел, когда начал изучать js (недавно), но только после полугода на плюсах) Но только не уверен, что захочется остаться, пока чувствую себя неуютно

    • @huismuis5521
      @huismuis5521 5 ปีที่แล้ว

      @@DevilAlex03 попробуй typescript. Хотя он тоже не идеальный, со своими багами и особенностями (к примеру, когда проверяешь переменную на undefined и используешь ее во вложенной функции, тебе компилятор ошибку выдает и говорит что нужно опять проверить на undefined).

    • @СерёгаСокольский
      @СерёгаСокольский 5 ปีที่แล้ว +3

      Если ты дотнетчик, то JS скоро не нужен будет. Когда выйдет релиз Blazor, можно будет на шарпе фронт писать. А вообще шарп почти идеальный язык.

  • @xBesss
    @xBesss 5 ปีที่แล้ว +1

    Кратко о текущей веб разработке: стремленние юзать максимальное количество инструментов, которые конвертируют норм код в говно код ( понятный браузеру)

  • @НикитаЗамалютдинов
    @НикитаЗамалютдинов 4 ปีที่แล้ว +1

    про плавающие числа и передачу по ссылке пророфлил, причем тут js вообще.
    в старых языках и с# есть структуры которые копируются

  • @GrigoryZdanovich
    @GrigoryZdanovich 5 ปีที่แล้ว +43

    Новый день, новый фреймворк, слишком медленно

    • @chikenmacnugget
      @chikenmacnugget 5 ปีที่แล้ว

      @@matsitskyss хах, смешно

    • @xcxc-iu3rb
      @xcxc-iu3rb 5 ปีที่แล้ว

      @@matsitskyss только фреймворк это не лопата, чтобы начать эффективно пользоваться фреймворком, на изучение его надо потратить больше времени, чем на язык программирования. А при устройстве на работу от тебя будут ждать знания туевой хучи этих фреймворков. Ничего классного не вижу.

    • @plasticine6712
      @plasticine6712 5 ปีที่แล้ว +1

      @@xcxc-iu3rb вы какие-то странные фреймворки используете, раз вам их учить приходится. В контексте джаваскрипта по крайней мере.

    • @SomRubyDev
      @SomRubyDev 5 ปีที่แล้ว

      @@matsitskyss потому что все недофреймворки херовые, вот и пилят кучу.

  • @dmitrygerenrot9765
    @dmitrygerenrot9765 4 ปีที่แล้ว +5

    NaN - единственный объект, который != самому себе.

  • @volodymyrgachkovsky7256
    @volodymyrgachkovsky7256 5 ปีที่แล้ว +16

    0.1 + 0.2 это прикол не JS вообще. Даже тот же C/C++ даст такой же результат

    • @serhiis_
      @serhiis_ 5 ปีที่แล้ว +7

      js и php имеют общие проблемы с типами. Так как там нету обычного целого типа и возникают такие проблемы. В нормальных языках для точных "космических" расчетов не используют дробные типы вообще. Так как в дробном типе очень много проблем в числе 0.999999 и -0.00000007 на уровне архитектуры процессора. То же сложение 0.1+0.2 можно сделать (1+2)/10 и проблем не будет. Эти моменты используют не только в инженерных расчетах, но и в гемдеве. Заменять дробные числа натуральной дробью избавляет движок от многих проблем с точностью и округлением.

    • @Небагафича-ф9л
      @Небагафича-ф9л 5 ปีที่แล้ว +2

      при складывании double проблем не будет.
      double delta = 0.1 + 0.2
      будет 0.3000

    • @niklkelbon3662
      @niklkelbon3662 3 ปีที่แล้ว

      на С++ ты можешь написать свои дробные числа, которые такой хуйней страдать не будут. Как собственно можешь и использовать просто другой тип чисел, которые точные.

  • @AlexFloppy
    @AlexFloppy 5 ปีที่แล้ว +6

    Может не все еще в курсе, оставлю это здесь :
    ['1', '7', '11'].map(parseInt);

  • @kookaburru
    @kookaburru 5 ปีที่แล้ว +1

    Не понимаю почему все набросились на автора видео? Как по мне он все верно сказал. Он просто уточнил некоторые особенности языка, которыхз нет в компилируемых. Я не увидел никакой некомпетентности.

  • @AlexFlorida
    @AlexFlorida 5 ปีที่แล้ว +1

    при всем уважении к автору, передача объектов по ссылке - это Фундаментальная особенность большинства языков программирования. Это быстрее, чем передача по значению (плюс учтите необходимость глубокого копирования объекта) и позволяет менять объект на вызывающей стороне.

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  5 ปีที่แล้ว

      Да-да и автор рассказывал про это в видео про чистые функции. Фундаментально, да. Быстрее, да. Проще реализовать, да. Пинает программиста под зад, тоже да.

  • @alung414
    @alung414 5 ปีที่แล้ว +3

    Видео из разряда, зачем учить язык если можно просто раскритиковать сказав что все говно. Получается что и учить не нужно. Что-то вроде подхода сам дурак. В общем проблемы притянуты за уши. Ребятки учите JS если решились и не "портите" себе мозг подобного рода видео.

    • @НикитаЗамалютдинов
      @НикитаЗамалютдинов 4 ปีที่แล้ว

      да нет не притянуты) попишите на пайтоне мальца и поймете , какое калище используете

  • @VettelRB
    @VettelRB 5 ปีที่แล้ว +2

    А в чем же тогда популярность JS, если он такой кривой? За счет чего он в топе?

    • @Вячеслав-у7ч7с
      @Вячеслав-у7ч7с 5 ปีที่แล้ว +2

      А на чем по-твоему фронт пишут?) Да и кривизна кода зависит от программиста, а не от ЯП.

    • @VettelRB
      @VettelRB 5 ปีที่แล้ว

      @@Вячеслав-у7ч7с если человеку дать мешок гвоздей, лопату, шуруповерт, и поставить задачу класть тротуарную плитку. Каким бы ни был крутым специалистом, инструмент, мягко говоря, так себе )

    • @Вячеслав-у7ч7с
      @Вячеслав-у7ч7с 5 ปีที่แล้ว

      @@VettelRB верно, но если ЯП имеет свое более менее существенное место в нише, то он вряд ли будет настолько непригодным, что им невозможно будет адекватно пользоваться :) Я считаю, что на любом ЯП можно писать чистый код, ведь понятие "чистый код" определяется в рамках каждого ЯП отдельно (вообще говоря), в зависимости от возможностей этого ЯП на момент написания кода :)

  • @yamuru22
    @yamuru22 5 ปีที่แล้ว +1

    сори я полный нубас, но я слышал краем уха, что в новом бабеле убрали стейджи, я заблуждаюсь?

    • @Илья-с1л6э
      @Илья-с1л6э 5 ปีที่แล้ว

      можно и так сказать, сегодня все плагины ставить нужно отдельно, и сказать бабелю какие браузеры/версии ноды хочешь поддерживать. На основании этого он сам определяет какие фишки компилить, а какие можно оставить

  • @jenyaspace
    @jenyaspace 5 ปีที่แล้ว

    Но чем например чисто технически отличается класс в JS от класса в Java?

    • @qazyhn94
      @qazyhn94 5 ปีที่แล้ว +2

      В Js класс нифига не класс) это функция а вообще объект))

  • @prgrant5320
    @prgrant5320 5 ปีที่แล้ว +2

    Мы хотим такие видосы

  • @dancecoder
    @dancecoder 3 ปีที่แล้ว +1

    Классы в js всё же имеют отличие от функции с прототипом. Попробуйте вызвать конструктор класса без оператора new.

  • @ПетроКобзар
    @ПетроКобзар 5 ปีที่แล้ว +2

    Я не защищаю JS. Я его тоже НЕ люблю, но:
    1.Я не понял проблему с Babel. Почему не использовать стандарт ECMAScript и не париться?
    2.Про асинхроность на 8:28
    const [result1, result2] = await Promise.all([task1(), task2()]);
    3.Можна узнать браузер и железо через UAParser и подстроиться под пользователя.
    4.TypeScipt решает проблемы с типами данных

    • @lega911
      @lega911 5 ปีที่แล้ว

      Можно ещё проще, просто перенести авэйты в следующую строку, после выполнения ф-ий

    • @arturmavlyuchenko7647
      @arturmavlyuchenko7647 5 ปีที่แล้ว

      а причем тут тайпскрипт блять?

  • @maxvst1
    @maxvst1 5 ปีที่แล้ว

    Про передачу объекта в функцию - это не проблема одного лишь Javascript, более того, это вообще не проблема. Такое поведение характерно и ожидаемо для многих языков программирования, где объекты передаются по ссылке, а не по значению. Тот же Python, тот же C работают так же. Почему Вы ненавидите Javascript за те моменты, в которых он ведет себя так же как и другие языки программирования?

  • @maxleskin7444
    @maxleskin7444 5 ปีที่แล้ว +6

    Это настоящая любовь, когда любишь и ненавидишь одновременно

  • @spanchbob3079
    @spanchbob3079 5 ปีที่แล้ว +10

    Привет! Теперь сними пожалуйста почему любишь JS!

    • @DJamal1803
      @DJamal1803 5 ปีที่แล้ว +6

      его не за что люитть

    • @maxleskin7444
      @maxleskin7444 5 ปีที่แล้ว

      @@DJamal1803есть ха, что браузеры развиваются и внедряют новые стандарты

    • @xBesss
      @xBesss 5 ปีที่แล้ว +3

      Любить js - это как будто остаться со срашной девушкой на безлюдном острове)

    • @ulargray4313
      @ulargray4313 5 ปีที่แล้ว

      @@xBesss Несмотря на это он лидирует в топ 3. Ежегодно между прочим. Можно сделать вывод , лучше уж со страшной но с умной , или с умеющей варить борщяк :с

    • @xBesss
      @xBesss 5 ปีที่แล้ว +4

      @@ulargray4313 он в топе, потому что нет аналогов, фактически монополия среди языков)

  • @BHy4OK
    @BHy4OK 5 ปีที่แล้ว +4

    у isNaN еще есть прелесть, если в него передать строку isNaN("hello") > true

    • @2152311564132542
      @2152311564132542 5 ปีที่แล้ว +2

      Для этого придумали Number.isNaN

    • @edgerunner2023
      @edgerunner2023 5 ปีที่แล้ว +4

      так глобальный isNaN преобразует аргумент в число, а hello - нечисловая строка

    • @BHy4OK
      @BHy4OK 5 ปีที่แล้ว

      @Alexander Borisenko да не, я без предъяв) глобальные функции в новых спеках постепенно переезжают в статические методы Number.

  • @777homosapien
    @777homosapien 2 ปีที่แล้ว

    Прошу ознакомиться как хранятся данные с плавающей точкой, и вы поймете почему сложение дробных чисел будет давать такие результаты (подсказка = мантисса экспонента).

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  2 ปีที่แล้ว

      Георгий, многие это знают и понимают. Тем не менее это очень неудобно.

    • @777homosapien
      @777homosapien 2 ปีที่แล้ว

      @@SeniorSoftwareVlogger Согласен. Спасибо за ответ. Может я не так сформулирован комментарий. Это посыл к нашей общей боли - товарищей которые вошли в "айти" по курсам, и в большинстве случаев не знаю базы и не очень хотят развиваться. Если что то извините.

  • @nsname
    @nsname 5 ปีที่แล้ว

    TypeScript вроде многое решает?

  • @xaapt
    @xaapt 5 ปีที่แล้ว +1

    - А давайте возьмем самый отсосный язык програмированния, написанный за 10 дней и сделаем его единственным для разработки самой быстрорастущей и доступной платформы
    - А давайте!
    (шел 1995 год, никто ничего не знал)

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  5 ปีที่แล้ว

      А ведь был шанс получить Бейсик вместо Джаваскрипта! Да здравствует Брендон!

  • @eugenerudakov3624
    @eugenerudakov3624 5 ปีที่แล้ว

    Относительно того, что многое, например массивы в javascript это объекты - это нормально для динамических языков и является их преимуществом. Smalltalk из 70х, например. Думаю у вам стоит изучить концепцию динамических языков пристальнее.

  • @ЕгорЖолнин-е1й
    @ЕгорЖолнин-е1й 4 ปีที่แล้ว +14

    Тема с числами не только с js. Многие популярные языки используют один и тот же стандарт IEEE-754 - все он виноват, а не js)

    • @BohdanVR666
      @BohdanVR666 4 ปีที่แล้ว

      А для чего это нужно?

    • @ЕгорЖолнин-е1й
      @ЕгорЖолнин-е1й 4 ปีที่แล้ว +2

      @@BohdanVR666 компьютеры не умеют точно вычислять числа с плавающей точкой (натуралтные). Для обхода этого используют приближенные вычисления, до определенного знака. IEEE-754 описывает как раз способ вычисления натуральных чисел. И т,к, это приближенные вычисления, то они дают подобные артефакты

  • @magister1978
    @magister1978 5 ปีที่แล้ว +1

    Какую цель преследовал автор, снимая это видео? Сделать мир лучше? Не верю! Поныть? Возможно! Отсечь потенциальных конкурентов? Вероятно!

  • @Dest424
    @Dest424 3 ปีที่แล้ว +1

    11:36 - иронично это слушать в то время как typescript набрал огромную популярность nowadays))

    • @daun55
      @daun55 3 ปีที่แล้ว +1

      @bitmap im too согласен with тобой

  • @АртемПечерский-с8ф
    @АртемПечерский-с8ф 2 ปีที่แล้ว

    Require, import это просто паттерн модуль, реализован через оборачивание кода в самовызывающиюся анонимную функцию. Что с этим то не так? Не хочешь export писать, ну заворачивай в такие функции, а то вдруг уберут из стандарта)

  • @antifree007
    @antifree007 5 ปีที่แล้ว +4

    Typescript в помощь

  • @alexshalov2695
    @alexshalov2695 5 ปีที่แล้ว

    Ну по поводу погрешности в 0.1 + 0.2 = 0.300..04 это тут дело не в самом JS, а в машинной точности. Это рядовая проблема из-за того, что такие числа как 0.1 в двоичной системе счисления не могут быть представлены конечным количеством бит из-за своей периодичной сущности.

  • @stan5214
    @stan5214 3 ปีที่แล้ว +1

    Я пытаюсь выучить ReactJS, и моя постоянная головная боль это область видимости функций и передача объектов между функциями объектов (function isn't defined etc). Какім-то чудом я еще не разбіл ноут. Если вам есть что сказать по этому поводу, напишите пожалуйста

    • @andreiosipov2766
      @andreiosipov2766 2 ปีที่แล้ว +2

      Начните с основ программирования, потом изучите язык JS, а потом уже фреймворк

    • @alexperemey6046
      @alexperemey6046 ปีที่แล้ว

      Или пиши на Typescript, тогда эти штуки у тебя будут вылезать сразу при написании, а не во время работы приложения )).

  • @ggnorton7
    @ggnorton7 5 ปีที่แล้ว +1

    Много чего высосано из пальца. Про 0.1 + 0.2 все уже все сказали, по поводу асинхронности - ну, для этого надо читать спецификацию того, как это работает, а не думать, что язык заработает так только потому,что тебе так кажется. Про платформу - тоже очень странно.

  • @Termonna
    @Termonna 5 ปีที่แล้ว +3

    очень сильно пригорел, когда обнаружил, что конструктор Array в js создаёт не массив, а невесть что. В одних условиях это массив, в других это становится то ли хэш таблицей, то ли списком

    • @dmitry.gashko
      @dmitry.gashko 5 ปีที่แล้ว +1

      Ну так, если вы используете массив как массив, то он и будет массивом. Он (возможно), красиво и последователь разместится себе в памяти. Но если вы туда как минимум положите разные типы - это уже будет тяжелее, а если еще и своих методов/свойств добавите - как js-у понять, что это?
      Js - язык с динамической типизацией. Это обеспечивает его гибкость. Это все опримизации. Они сделаны, что все работало быстрее. Темболее программисту этого не выдно. Это все только внутри.

    • @Termonna
      @Termonna 5 ปีที่แล้ว

      @@dmitry.gashko в спеке не указана даже такая особенность массивов, а во фронтенд далеко не все переходят после изучения строготипизированных языков) К тому же, из очевидной мутации - добавление нового элемента, разные типы данных в массиве, хотя видел инфу, что мутация происходит и для массивов >1000 элементов. Как вообще управлять кодом, если нигде не описаны подобные вещи? Окей, добавьте неявные мутации, но опишите их в доке.
      Нет, это не оптимизации, а ровно наоборот (хэштаблицы занимают больше памяти на 20-30%, чем массивы). Это не работает быстрее (даже оптимальные алгоритмы страшно подбирать, ведь с одними структурами данных они работают быстро - с другими медленно. Напишешь бинарный поиск для массива, а массив мутировал в хэштаблицу и всё, ты сделал только хуже).
      Гибкость жса это не про оптимизацию, это про прощание ошибок. Все эти шутки про сжирающий всё место Хром, безумно лагающий ИЕ и прочее появились не только благодаря стараниям разработчиков браузеров, но и благодаря фронтенд разработчикам, которые не могут полноценно управлять ресурсами и не имеют доступа к подобной информации

    • @dmitry.gashko
      @dmitry.gashko 5 ปีที่แล้ว

      @@Termonna Оптимизация это не про спецификации и не про стандарты.
      Это все про V8.

    • @dmitry.gashko
      @dmitry.gashko 5 ปีที่แล้ว

      @@Termonna Ну и, желательно, кстати, не забывать что js язык с динамеческой типизацией, и большинство всех этих вещей вытекают из этого.

  • @dmitry9894
    @dmitry9894 5 ปีที่แล้ว +1

    Я ненавижу js, хотя даже веб за различие в стандартах от браузера к браузеру и сука БАГИ в движках, а так же производительность, она для SPA просто отвратительная. А так же есть такая классная система как ios которая просто не запустить сайт(приложение) если вы используете слишком много ресурсов. Пример из жизни: у меня есть контент который имеет фиксированный aspect ratio и я хочу масштабировать весь контент в зависимости от разрешения экрана, но эти "великолепные" браузеры так великолепно отрабатывают scale, как будь то я запускаю ядерный реактор

  • @ЕвгенийСниховский-ь8ь
    @ЕвгенийСниховский-ь8ь 5 ปีที่แล้ว +1

    Надоел ангуляр, но не надоел JavaScript. Что бы ты изучал дальше на моем месте: react, vue, или svelte?

    • @nouneim2947
      @nouneim2947 5 ปีที่แล้ว +9

      скрытая реклама svelte...

    • @СерёгаСокольский
      @СерёгаСокольский 5 ปีที่แล้ว

      Реклама третьего. К чему?

    • @ЕвгенийСниховский-ь8ь
      @ЕвгенийСниховский-ь8ь 5 ปีที่แล้ว

      Вы серьезно? :D
      Я уже 4й год педалю на ангуляре. Он мне нравится и со своими задачами справляется прекрасно, но хочется попробовать что-то другое. Я просто перечислил самые хайповые технологии, которые меня потенциально интересуют.

    • @СерёгаСокольский
      @СерёгаСокольский 5 ปีที่แล้ว

      @@ЕвгенийСниховский-ь8ь Тогда Vue, так как он взял лучшие стороны React и Angular, а также избавился от их недостатков. Если посмотрите в сторону React, то после Angular покажется довольно странным внедрение HTML в JS, а не наоборот. То есть реакт пропагандирует идею, что ВСЁ ЕСТЬ JS и точка. Во вью же старые добрые директивы ангуляра и старый добрый виртуальный дом реакта.

    • @ЕвгенийСниховский-ь8ь
      @ЕвгенийСниховский-ь8ь 5 ปีที่แล้ว

      @@СерёгаСокольский Вот как раз и хочется выйти из зоны комфорта. Вы своим комментарием пока добавили плюсик к реакту в мои раздумия. Спасибо, большое! :)
      Может кому еще будет интересно, почему пока склоняюсь к реакту после ангуляр для себя:
      - функциональный подход вместо ООП
      - jsx, как описал Сергей выше
      - сильное живое комьюнити, по крайней мере по сравнению с ангуляром
      - react native просто унижает ionic (багов меньше, живых рабочих сторонних модулей больше)

  • @prodigy9152
    @prodigy9152 5 ปีที่แล้ว +2

    Полюбишь JavaScript когда придется сайт пилить.
    А говном полить можно любой язык на самом деле, даже великий и могучий C++.

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  5 ปีที่แล้ว

      Плюсы в первую очередь! :D Я пол жизни пишу на JS

  • @preenxus3425
    @preenxus3425 5 ปีที่แล้ว

    а ты знаешь джаву? можно такое же видео по джаве? если есть что ненавидеть, конечно)

  • @angular-developer-e1t
    @angular-developer-e1t 5 ปีที่แล้ว

    Круто. Глубокие знания.

    • @Илья-с1л6э
      @Илья-с1л6э 5 ปีที่แล้ว +1

      если это стеб, то норм

    • @angular-developer-e1t
      @angular-developer-e1t 5 ปีที่แล้ว

      @@Илья-с1л6э Нет не стёб. Кратко и с юмором.

    • @Илья-с1л6э
      @Илья-с1л6э 5 ปีที่แล้ว

      @@angular-developer-e1t тогда вам стоит самому изуть тему, потому что автор не сильно знаком с JS и экосистемой

    • @angular-developer-e1t
      @angular-developer-e1t 5 ปีที่แล้ว

      @@Илья-с1л6э Я уже полтора года как фронтед девелопер и мне хватает.

  • @g.n._
    @g.n._ 5 ปีที่แล้ว

    Мне с -дивана- бэкенда показалась хорошая идея компиляции программ с другого языка на js. Типа как в react, angular, scalajs и куче других подобных. По крайней мере для тех, кто предпочитает компилируемые языки.
    Долгоиграющие проекты - это везде похоже боль.

  • @kapusta-v-lui-vi
    @kapusta-v-lui-vi 5 ปีที่แล้ว

    Ты сторонник одинарных кавычек или двойных?

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  5 ปีที่แล้ว +4

      Только двойные

    • @kapusta-v-lui-vi
      @kapusta-v-lui-vi 5 ปีที่แล้ว

      @@SeniorSoftwareVlogger Уважаю! Поддерживаю!

    • @user-tc8jh8sm9y
      @user-tc8jh8sm9y 4 ปีที่แล้ว

      Я его дпуг. Он сторонник только двойных кавычек, а также 4х пробелов вместо табуляции.

    • @mike_tallon
      @mike_tallon 4 ปีที่แล้ว

      Даааа, только двойные! не привык к одинарным))

  • @kadzme
    @kadzme 5 ปีที่แล้ว

    Кстати, проблема округления и не только, свойственны и другим современным языкаи поограммирования, которые используют IEEE-754 стандарт представления чисел. Пожалуй вме что вы рассказали нельзя отнести к странностям, недостаткам, за исключением наследования, которой действительно медленнее классического, но и то только с позиции обьяснения человеку, а анализ кода и оптимизацию JIT никто не отменял. В целом непонимание языка от его невероятной гибкости, заложенной в его основе.

  • @CyberAcidPlanet
    @CyberAcidPlanet 5 ปีที่แล้ว

    У ES модулей есть замечательная особенность. Попробуйте в браузере динамически импортировать модуль у которого есть такой экспорт: export const then = () => console.log('Hello!')

  • @RusFarFaz
    @RusFarFaz 5 ปีที่แล้ว

    Спасибо вам за столь информативные влоги. Скажите пожалуйста, в Германии берут на работу программистов без профильного высшего образования? есть гражданство еврпейской страны

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  5 ปีที่แล้ว +1

      Берут, опыт важнее если программистом

  • @YauhenKavalchuk
    @YauhenKavalchuk 5 ปีที่แล้ว +1

    "Как я вас понимаю")))

  • @monsterbesel
    @monsterbesel 5 ปีที่แล้ว +4

    Гоу тоже самое про php или руби))

    • @mexvision-3556
      @mexvision-3556 5 ปีที่แล้ว

      в php 2-часовое видео получится.

  • @yakut54
    @yakut54 5 ปีที่แล้ว +5

    А мне нравится js.... наверно потому что я больше ничего не знаю 😜✌

    • @BohdanVR666
      @BohdanVR666 4 ปีที่แล้ว

      Та же хрень с питоном)

  • @ТимурАбдулов
    @ТимурАбдулов 5 ปีที่แล้ว

    Отсылки прикольные гы ) Хороший видос

  • @maksimmnatsakanov2853
    @maksimmnatsakanov2853 5 ปีที่แล้ว +2

    Что за мода обсирать язык, который не знаешь и на котором не пишешь? Серьъёзно, если бы знал js на нормальном уровне (а не поверхностном), то понимал бы почему-то там что-либо, а не иначе. Все не понимая просто от незнания языка. Зачем вообще писать на языке, который не нравится? Вот не понимаю я этого. Зачем лезть туда, что не понимаешь и ещё ругать, это же фейспалм.

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  5 ปีที่แล้ว

      🙄

    • @maksimmnatsakanov2853
      @maksimmnatsakanov2853 5 ปีที่แล้ว

      @@SeniorSoftwareVlogger ничего личного. Это я в целом (мысли в слух:)), а к вам никаких претензий. На счёт 'писать на каком-то другом языке, который транслируется в js, сразу на км пришёл ts. Основная его функция, как понятно из названия, строгая типизация.

    • @SeniorSoftwareVlogger
      @SeniorSoftwareVlogger  5 ปีที่แล้ว

      @@maksimmnatsakanov2853 какую из 7 названных причин TS лечит?