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

  Рет қаралды 78,764

Senior Software Vlogger

Senior Software Vlogger

5 жыл бұрын

Я программирую только на джаваскрипте вот уже 4 года, до этого использовал его как и любой фулстек разработчик. В этом видео я собрал все самые болевые точки Javascript, которые взрывали мне мозг.
Для тех кто хотел разобраться в JavaScript, появилась отличная возможность сделать это. Онлайн школа Glo Academy запускает бесплатный воркшоп. На котором за 4 дня ты напишешь свой аналог сайта Кинопоиск на чистом JS. Воркшоп пройдет в формате онлайн-уроков с домашними заданиями.
Ссылка для регистрации - wep.wf/suufq7
Статья 2ality.com/2012/04/number-enco...
Презентация: slides.com/dimarozhkov/whyiha...
Поддержи канал! seniorsoftwarevlogger.com/sup...
Рекомендую 👍 seniorsoftwarevlogger.com/rec...
Телеграм: t.me/seniorsoftwarevlogger
Инстаграм: / seniorsoftwarevlogger
Меня зовут Дима, я программирую всю свою жизнь, в основном веб сайты. С 2014 года я живу в Германии, где после некоторого поиска я нашел свою идеальную компанию. В этой компании я очень быстро начал расти по карьерной лестнице, сперва до тех лида, теперь и до менеджера. На своем канале я рассказываю о превратностях профессии программиста и про другие жизненные темы.
#ityoutubersru

Пікірлер: 627
@arthurkhairullin
@arthurkhairullin 4 жыл бұрын
Javascript: *has mutations* C++ pointers: *hold my beer*
@sakuranasty
@sakuranasty 5 жыл бұрын
А теперь видео почему ты любишь js, а то грустно стало)
@Mike-hp3fh
@Mike-hp3fh 4 жыл бұрын
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.
@user-fo5qu5rc2k
@user-fo5qu5rc2k 4 жыл бұрын
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 3 жыл бұрын
@@user-fo5qu5rc2k чтоб не напрягаться с типами, есть тайпскрипт.
@d.n.2143
@d.n.2143 5 жыл бұрын
Почему Джон Уик стал программистом?🤔
@user-bv5qq5wv2o
@user-bv5qq5wv2o 5 жыл бұрын
Ну а куда ему в киберпанке без этого...
@TakemuraGoro
@TakemuraGoro 5 жыл бұрын
Это прикрытие хакера Baba_Yaga.
@kostiantynyemets1934
@kostiantynyemets1934 5 жыл бұрын
Это Джон Сноу
@user-ej4dc7ul9o
@user-ej4dc7ul9o 5 жыл бұрын
Расскажите про все языки программирования, которые вы знаете. Как учили, где информацию о них брали
@Sevenvad
@Sevenvad 5 жыл бұрын
Я на немного решил, что winderton - это реально такой тип данных в JS
@topkyrgyz2923
@topkyrgyz2923 5 жыл бұрын
Добрый день, можете пожалуйста название своего кресла написать. И за сколько купили?
@KoichiHub
@KoichiHub 2 жыл бұрын
Киану Ривз реально крутой мужик! Практически все видосы его смотрю, реально интересно :)
@nick_kol_nick
@nick_kol_nick 5 жыл бұрын
Привет, может тут уже спрашивали, но все же. Что ты думаешь про webassembly? Заменит ли он в конечном счете Javascript? (сорри за холиварную постановку вопроса)
@slnt_opp
@slnt_opp 5 жыл бұрын
ну конкурентов помимо много, так что можно просто ндеятся, что что-нибудь заменит)
@BHy4OK
@BHy4OK 5 жыл бұрын
да легко. если от всего технического абстрагироваться, то он приходит к миру с одной из величайших сущностей человека - ленью. бэкендеры могут спокойно писать на своих языках и это будет пахать на фронте. яркий пример Blazor от мелкомягких. фигачишь на c# и фронт готов
@user-gd7gy7st4l
@user-gd7gy7st4l 5 жыл бұрын
@@BHy4OK двачую, сам юзал blazor, очень классная технология
@roduman
@roduman 5 жыл бұрын
100 пудов заменит.
@vsezanyato
@vsezanyato 5 жыл бұрын
@@slnt_opp а что там ещё есть ?
@HarnFan
@HarnFan 5 жыл бұрын
Ничего не понял, но очень интересно
@kusha_718
@kusha_718 5 жыл бұрын
+ xD
@TheStrongestBaka
@TheStrongestBaka 5 жыл бұрын
Вставлять рекламу воркшопа на JS в видео о ненависти к этому языку - это гениально.
@nightdog007
@nightdog007 5 жыл бұрын
в js много проблем, но это не отменяет того что он нужен и востребован сейчас
@kisli3000
@kisli3000 5 жыл бұрын
Привет, а можешь расскызать про typeScript решает ли он проблемы, и если да, то почему его обычно не используют?
@ThePASHI4
@ThePASHI4 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!');
@teea3731
@teea3731 5 жыл бұрын
Выучил js по этому видео
@dimageorgiev5798
@dimageorgiev5798 5 жыл бұрын
Сенсей помог тебе постичь дзен ;)
@t33a25
@t33a25 5 жыл бұрын
Совершенно не против рекламы,просто она у тебя начинается как-то неожиданно :D
@van777ok3
@van777ok3 5 жыл бұрын
Привет) Интересный видос,спасибо) Вот такого плана бы побольше)
@user-zk5ym9ut1j
@user-zk5ym9ut1j 5 жыл бұрын
Это не "мутации" объектов, это передача по ссылке. Компутер сайнс, емае.
@dmitriibychkov9406
@dmitriibychkov9406 5 жыл бұрын
Да, узколобым фронтендерам не ведомо что так во всех языках
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger 5 жыл бұрын
Детектед 😂
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger 5 жыл бұрын
На kzbin.info/www/bejne/oZDQg6R6pMp0fck он там я тоже обосрался сказав по привычке "передача по указателю"
@user-zk5ym9ut1j
@user-zk5ym9ut1j 5 жыл бұрын
@@SeniorSoftwareVlogger давненько наблюдаю твой канал, очень много полезных видосов для "вкатывальщиков" вайти, но сразу возникает вопрос - как ты сам относишься к феномену повального "войтивайти"?
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger 5 жыл бұрын
@Владислав Дараган мой пукан молчит, не полыхает. Какие с этим проблемы?
@dmitriymaslov946
@dmitriymaslov946 5 жыл бұрын
Дмитрий, почему в видео присутствует "winderton" ?? будет какой-то коллаб, обзор или что-нибудь в этом стиле?
@TheVipUsers
@TheVipUsers 5 жыл бұрын
видео получилось очень классное)) Можешь запилить подобное про Erlang? А то тема очень интерестная но на KZbin материала по ней очень мало))
@dimageorgiev5798
@dimageorgiev5798 5 жыл бұрын
Дим Приветствую ! Делиться империческим опытом бесценно!! Спасибо за ценный контент !
@a.khakimov
@a.khakimov 5 жыл бұрын
казалось бы, причем тут winderton
@user-bw6ix4vf4p
@user-bw6ix4vf4p 5 жыл бұрын
да, причем тут этот счв'шный /dev/null ?
@ilya_khabibullin
@ilya_khabibullin 5 жыл бұрын
А причем, кстати?
@cascadengineering
@cascadengineering 5 жыл бұрын
@@ilya_khabibullin Виндер в одном из стримов высказался о некоторых блогерах, включая автора этого канала, что они - нули и не умеют как следует доносить мысль до аудитории. Если бы он был хоть немного умнее/постарше/дипломатичнее, то знал бы, что делать выводы о человеке сугубо по видосам, не поработав с ним лично, - весьма поспешно и,как минимум, низко. Более того, он кичится своим инглишем, а по факту его уровень ниже upper intermediate. Пойдет для неформальных попизделок и просмотра фильмов с субтитрами или попыток произвести впечатление на школоту артистичностью при попытках сэмулировать американское произношение. Не более, во всяком случае на данный момент.
@zaemiel
@zaemiel 5 жыл бұрын
@@cascadengineering А дайте, плиз, ссылку на этот видос, если возможно. Хочу поглядеть :)
@cascadengineering
@cascadengineering 5 жыл бұрын
@@zaemiel Он закрывает доступ к стримам через какое-то время, и они становятся доступными только тем, кто является его патронами (через patreon.com).
@user-zb5pr4wv8d
@user-zb5pr4wv8d 5 жыл бұрын
Отсылки прикольные гы ) Хороший видос
@AndrewVaganovPage
@AndrewVaganovPage 5 жыл бұрын
- Я уже устал про комментарий про 0.1 + 0.2 === 0.30000000000004... Посмотрите пожалуйста на другие языки. Там по бОльшей части происходит тоже самое. 0.30000000000000004.com/ - На мобильных устройствах ты тоже не контролируешь платформу - Пример с глубокими колбеками - так никто не пишет (либо в команду нужен эксперт, который оттучит делать такую жесть). Promise-hell тоже не делают обычно. Даже лет 8 назад, когда они были в драфтах, в статьях глубоко критиковали такую запись. - Наследованием в JS почти никто не балуется. От того что компоненты в Реакте начинаются со слова Class, ООП это назвать язык не поворачивается. - Babel - у всех тот же самый JS. Бандл у клиента тот же самый (за редким исключением). Как минимум позволяет на разных платформах писать один код. И если мы больше не поддериживаем IE11, то мы просто можем отключить ту часть, которая её полифилила или преобразовывала, вместо рефакторинга всего кода. Во всех языках есть свои компромиссы продиктованные историей и платформой. И на любом языке можно писать хорошо.
@yevhenukrainianer4781
@yevhenukrainianer4781 5 жыл бұрын
Так как многопоточности добиваться правильно в ДжС ?
@artemustimov9463
@artemustimov9463 5 жыл бұрын
@@yevhenukrainianer4781 никак. JS однопоточный по определению.
@AndrewVaganovPage
@AndrewVaganovPage 5 жыл бұрын
@@yevhenukrainianer4781 Можете добиться этого при помощи вебворкеров. Но это сухой ответ и это не всегда удобно. Исходить нужно от задачи. Возможно вам хватит просто правильно приготовленной асинхронности. Если сильно нужна именно многопоточность, то возьмите другой язык который под это заточен. Как правило, люди в отрыве от программирования не пытаются молотком срубить дерево. Молоток прекрасно забивает гвозди, но им тяжело срубить дерево, но это не проблема молотка. Это не минус JS, он просто напросто не создавался для этого. А вот всё что по асинхронности там работает прекрасно.
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger 5 жыл бұрын
Многопоточность есть в вебассембли и комитет джаваскрипта уже думает, как ее в сам язык запилить.
@AndrewVaganovPage
@AndrewVaganovPage 5 жыл бұрын
@@SeniorSoftwareVlogger ​ Думаю пройдёт ещё не один год пока это станет реально удобным. C WASM можно уже хоть сейчас, но это уже отдельный слой приложения.
@sergejchap62
@sergejchap62 10 ай бұрын
в каком языке программирования решена проблема обновления? С учетом новых фич. Такой есть, если не придуман полгода или год назад. Это как бы вопрос, но не уверен надо ставить знак ? На чистом JS в продакшен наверное мало кто выходит. Это Vues, TypeScr, NestJs ... и далее, которые не уверен все кто-то понимает или хотя бы знает. Наверное в этих фреймворках учтены перечисленные проблемы. Хотя, все конечно не надо надеяться можно учесть в любом ЯП.
@IceKorm
@IceKorm 5 жыл бұрын
Привет! Не нашёл твоей телеги в описании. Плюс, у тебя сайт упал: Error establishing a database connection
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger 5 жыл бұрын
Телега в описании и сайт поднялся 🙌
@demimurych1
@demimurych1 2 жыл бұрын
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 жыл бұрын
Можно ещё через 5 лет зайти с новой порцией разоблачений ;)
@demimurych1
@demimurych1 2 жыл бұрын
@@SeniorSoftwareVlogger Молодой человек. Я уверен в том, что Вы и сейчас не в состоянии пройти собеседования даже на позицию Junior разработчика с вопросами которые касаются только базовой платформы языка которая не менялась с 1994 года. Если Вы думаете иначе я Вам онлайн это могу продемонстрировать, задав Вам бызовые вопросы, выслушать ваши ответы и показать потом как на самом деле. Так что конечно же апелляция к 5 годам хороший аргумент, но не в Вашем случае.
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger 2 жыл бұрын
Ух! Ну не смогу так не смогу 🤣
@kulikoffAS
@kulikoffAS 2 жыл бұрын
капец ты душнила
@bukkaneer
@bukkaneer 2 жыл бұрын
Спасибо, надо будет некоторые вещи себе в календарик учебный внести.
@BarrBozzO
@BarrBozzO 4 жыл бұрын
Привет, а что за микрофон петличка, подскажите?
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger 4 жыл бұрын
kit.com/seniorsoftwarevlogger
@AxelGt30
@AxelGt30 5 жыл бұрын
Еще появился TypeScript аля расширенный JS. Расскажи про реакт и\или ангулар, что лучше и тп
@MrSevenZZZ
@MrSevenZZZ 5 жыл бұрын
Лучше vuejs.
@ivansidorov5
@ivansidorov5 5 жыл бұрын
TS это костыль в JS , имеет кучу проблем и недоделок
@ArtemKuznetsovTV
@ArtemKuznetsovTV 5 жыл бұрын
@@ivansidorov5 ts шикарен после js
@vabka-7708
@vabka-7708 5 жыл бұрын
@@ivansidorov5 TS хорош, но если сравнивать с тем же C#, который тоже от микрософта, то экспириенс бедноват. Продолжаем ждать wasm
@ivansidorov5
@ivansidorov5 5 жыл бұрын
@@ArtemKuznetsovTV Ты просто не пробвоал нормальные языки
@eugenerudakov3624
@eugenerudakov3624 5 жыл бұрын
Про колбеки несуразица. Что мешает использовать ссылку на функцию вместо ее реализации в калбеке?
@drovoseg
@drovoseg 5 жыл бұрын
Лишний аргумент у функции. А их может быть длинная цепочка.
@Acid31337
@Acid31337 5 жыл бұрын
Эх, классика. В 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 жыл бұрын
@@love.society про 3.00000...4 -- да. Это не вина языка, это просто то, как работает железо. Железо не умеет нормально работать с числами, которые не делятся на 2, такими как 2/3 или 3/7. Всегда будет определённая погрешность. Если интересно, то почитай информацию на сайте 0.30000000000000004.com
@vlad071096
@vlad071096 5 жыл бұрын
Идиотизм не в плавающей точке, а в том, что целочисленного типа нет.
@user-gw6df6ns7e
@user-gw6df6ns7e 5 жыл бұрын
На самом деле это потому, что лень было рантайм делать.
@Acid31337
@Acid31337 5 жыл бұрын
@@vlad071096 на самом деле есть, надо места знать )) Настоящая целочисленная арифметика включается при наличии битового оператора который ничего не делает, например, вот целочисленное деление: a / b | 0. Правда только 32 бита.
@alexeykarchiganov2267
@alexeykarchiganov2267 3 жыл бұрын
Насчет NaN: это все абсолютно нормально и есть в других ЯП, не только в JS. И работает оно так же. Значение NaN должно было использоваться в случаях, когда, например, +inf делится на +inf. Вот что должно получиться? По правилам мат анализа должно было получиться ИДИНАХУЙ. То же самое и с взятием корня из отрицательного числа. Ну просто нужно было такое значение, которое, в случае правильного срабатывания программы, дает какой-то адекватный результат и записывает свое значение в адрес памяти, отведенный для числа. А в случае неправильного - выдает ИДИНАХУЙ, но при этом не валит полностью всю программу. Таким образом тебе не нужно заранее проверять перед каждой операцией число на валидность. Ну вот допустим у тебя огромная формула с делениями, взятиями корней и степеней. Будешь каждую бинарную операцию записывать в отдельную переменную и проверять, можно ли ее использовать дальше? Да ну нахуй. Ну и также решили, что было бы удобно, что NaN не равен ничему, даже самому себе; поэтому нужно вызывать отдельную функцию. Так что JS вполне себе нормальный ЯП, не настолько уж хуже остальных.
@alexandersmurov1738
@alexandersmurov1738 5 жыл бұрын
Спасибо за видео 🖤 Вы работали с ангуляром? Есть возможность посоветовать книгу/курс? Буду очень благодарен. Всех благ!
@monsterbesel
@monsterbesel 5 жыл бұрын
Александр Смуров сейчас наверное скажу неприятную для тебя вещь ,но если ты знаешь основы языка, то иди скачивай Фреймворк , открывай доку и практикуйся. Напиши в начале авторизацию ,подёргай какие-то апишки. Придумай себе задачу (мини пэт проект) и попробуй его написать. Примеров как писать на нагуляно можешь на гитхабе поискать
@user-vq2hp3cx4x
@user-vq2hp3cx4x 5 жыл бұрын
Громкость звука нужно сделать больше!!! Еле-еле слышно
@preenxus3425
@preenxus3425 5 жыл бұрын
а что это за hacktoberfest?
@sviat2459
@sviat2459 5 жыл бұрын
Джс просто відрізняється від тієї мови до якої він звик. В цілому це просто інструмент, який чудово виконує свою роботу. У нього є певні нюанси, але і сам світ неідеальний. Хлопчина цього не хоче розуміти, так само як і не хоче зрозуміти причини чому так. Джс був написаний на колінці за декілька днів на своєму початку. Це була примітивна мова для того, щоб хоч якось добавити інтерактив у веб. І що ми маємо зараз? ну ви всі самі знаєте Перед розробниками ядра джс стоять набагато серйозніші виклики ніж перед творцями більшості інших мов. Кросбраузерність, кросдевайсність, , величезний зоопарк областей застосування і треба то все хоч якось продумати і заставити працювати і найголовніше - треба вводити нові апішки, розвивати мову, але і потрібно підтримувати за будь яку ціну старий функціонал джс, тому що багато вебсайтів працюють на старому апі Ну трохи про нюанси джави (типу, а у вас теж не все гладко) - всі кажуть, що у джави є типізація і бла блабла. protected / private і подібні класні штуки ооп. У джави крім цього ще є така чудова штука, як Рефлексія через яку можна дістатись до методів (і не тільки) будь якого класу, включаючи приватні. Тобто ми можемо спокійно отримати доступ до приватного методу будь якого класу. Що якби, не сильно гуд. Також воно дозволяє створити інстанс класу в рантаймі програми, при чому ім"я класу може бути невідоме до момента рану програми. Чи колл методу інстанса класу по його імені. Якось динамічно виходить) - на рахунок мутабельності джс. Так у джави також є mutable objects, при чому більшість класів в джаві - мутабли. Більше того, багато людей в джаві юзають mutable на повну, оосбливо в біг даті. Тому що кожен раз робити новий "імутабл" об"єкт при якійсь маніпуляції з датою, ресурсозатратно і б"є по пам"яті, особливо у випадку з великими об"ємами даних - лапша коду в джс. Ой боже ж ти мій, а джавовські легендарні Хелло ворлд класи з '''public static final void main()''' то зовсім не лапша, чи тонни геттерів\сеттерів в класах джс якраз через свою динамічність набагато лаконічніший і менш verbose ніж будь яка типізована мова Одним словом факати особливості мови це нерозумно, чесно кажучи. Набагато правильніше буде спробувати зрозуміти чому так, або ж просто слідувати правилам мови, а з досвідом і прийде розуміння цих самих правил.
@prosto_razrabotka
@prosto_razrabotka 5 жыл бұрын
Классное видео!
@prgrant5320
@prgrant5320 5 жыл бұрын
Мы хотим такие видосы
@user-zr2qb1kz7j
@user-zr2qb1kz7j 4 жыл бұрын
Все сказанное, очень спорно. Сложилось впечатление, что это кликбэйт. Сам автор как будто не очень понимает, о чем говорит. Гораздо справедливее отметить, например typeof null === 'object' [1, 2] + [3, 4] === '1,23,4' Вот это действительно странно. Но и у этого есть обьяснения
@somestrangeperson
@somestrangeperson 5 жыл бұрын
Классное видео:)
@cojib9361
@cojib9361 5 жыл бұрын
Ничего нового, но жизненно. Рад что мою боль понимают)
@alexey.sibirtsev
@alexey.sibirtsev 5 жыл бұрын
Ну начнём с того, что js не при чём при вычислении 0.1+0.2, это проблема хранения данных в двоичной системе, что прописано в IEEE 754
@alexey.sibirtsev
@alexey.sibirtsev 5 жыл бұрын
Да и в целом, исторически js -- это язык браузерный, поэтому есть много боли, при попытках сделать его языком универсальным, но то что получилось на сегодняшний день выглядит более чем многообещающим
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger 5 жыл бұрын
🙄
@alexey.sibirtsev
@alexey.sibirtsev 5 жыл бұрын
@@SeniorSoftwareVlogger ну и аудитория у тебя :)
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger 5 жыл бұрын
@@alexey.sibirtsev и не говори, mansplain`ят вещи о которых сказано на первой минуте.
@serezha4755
@serezha4755 5 жыл бұрын
@@SeniorSoftwareVlogger Это архитектураная проблема компютера что получение нецелие числа хранятся с чудовешним остатком и в фильме "Матрица" как я помню из за этого и произашло сбой в системе․
@agostev12
@agostev12 5 жыл бұрын
javascript всегда был объектно ориентированный или у тебя ООП исключительно с классами связан? кароче много чего высосано из пальца та же проблема складывания чисел 0.1+0.2 это все по стандарту IEEE 754 которым следует не только js а и много других языков
@dmitrygerenrot9765
@dmitrygerenrot9765 3 жыл бұрын
NaN - единственный объект, который != самому себе.
@aerahtv0000
@aerahtv0000 5 жыл бұрын
а как тебе Lua или С# в сравнении с JS ?
@GrigoryZdanovich
@GrigoryZdanovich 5 жыл бұрын
Новый день, новый фреймворк, слишком медленно
@chikenmacnugget
@chikenmacnugget 5 жыл бұрын
@@matsitskyss хах, смешно
@xcxc-iu3rb
@xcxc-iu3rb 5 жыл бұрын
@@matsitskyss только фреймворк это не лопата, чтобы начать эффективно пользоваться фреймворком, на изучение его надо потратить больше времени, чем на язык программирования. А при устройстве на работу от тебя будут ждать знания туевой хучи этих фреймворков. Ничего классного не вижу.
@plasticine6712
@plasticine6712 5 жыл бұрын
@@xcxc-iu3rb вы какие-то странные фреймворки используете, раз вам их учить приходится. В контексте джаваскрипта по крайней мере.
@user-ce1qw4ey6i
@user-ce1qw4ey6i 4 жыл бұрын
@@matsitskyss потому что все недофреймворки херовые, вот и пилят кучу.
@elderlykite4605
@elderlykite4605 5 жыл бұрын
Сделай пожалуйста ролик про курсы программирования . Интересно твое мнение , лучше ли те люди которые закончили курсы , чем те которые зависали 5 лет в университете , хотя бы на раннем этапе работы с ними . Надеюсь ты прочтешь...
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger 5 жыл бұрын
Я прочёл! Просрать свое время бездарно можно как на курсах, так и в универе. С той разницей, что диплом ценится хотя бы при эмиграции, а сертификат курсов вообще никому не нужен. Ни курсы но универ сами по себе не определяют качество специалиста и окончание одного не означает, что можно игнорить другое
@YOhellpie
@YOhellpie 5 жыл бұрын
Крутое видео!
@AndreyLLIaBepMa
@AndreyLLIaBepMa 5 жыл бұрын
Познавательный ролик на самом деле
@nen777w
@nen777w 5 жыл бұрын
0.1 + 0.2 = 0.3000x не потому происходит что JS плохой, а потому что невозможно уместить в отведенных под одно число двоичных разрядов sizeof(double) все возможные представления вещественных чисел. Поэтому на "дальних от 0 дистанциях" жертвуют точностью. Рекомендую ознакомиться как устроены числа с плавающей запятой. На счёт того что все в JS объект, а что ты хотел в языке с динамической типизацией?
@BohdanVR666
@BohdanVR666 4 жыл бұрын
Нууу, то что все - объект это, по моему, вообще не минус, а про числа - почему нельзя просто взять количество цифр посте точки у первого числа, у второго и сравнить а потом округлить до количества цифр после точки того числа, у которого это значение больше Или сделать все просто Просто сделать так, что 0.1 == 0.100000... (без сюрпризов в конце) И 0.2 == 0.200000... (тоже без сюрпризов) Я не понимаю, почему этого нет?
@VeloVetal
@VeloVetal 2 жыл бұрын
@@BohdanVR666 потому что IEEE 754
@StepanChuevYT
@StepanChuevYT 2 жыл бұрын
"На счёт того что все в JS объект, а что ты хотел в языке с динамической типизацией?", на самом деле это не так. Например когда мы написали вот так: let n = 3; Мы сделал переменную с примитивным типом "number", но что будет если мы вызовем у этого числа метод toString: n.toString(); создастся объект обёртка, т.е вот такое выражение: new Number(n).toString(); А т.к функция-конструктор возвращает объект в котором есть метод toString, мы можем его вызвать. Ещё стоит сказать что многие движки это оптимизируют. А вот если бы мы сразу записали: let n = new Number(3); В переменной n уже хранилась бы ссылка на объект, но тогда возникнет проблема с typeof.
@user-qs2hf4gn3k
@user-qs2hf4gn3k 5 жыл бұрын
Дима, спасибо! Сталкиваюсь с ЖС по столку поскольку (15-25% рабочего времени) и этого всего не знал, а тут так сжато, и доходчиво по подводным камням - самое то. Сделай пожалуйста нечто похожее про Руби\Рельсы, Я думаю не Я один кому это интересно, спасибо.
@dmitry.gashko
@dmitry.gashko 5 жыл бұрын
Почитайте learn.javascript.ru Если вы используете js под 3 рабочего времени такие вещи знать уж точно нужно)
@user-uc1yt7fu8j
@user-uc1yt7fu8j 3 жыл бұрын
про плавающие числа и передачу по ссылке пророфлил, причем тут js вообще. в старых языках и с# есть структуры которые копируются
@wswebus922
@wswebus922 5 жыл бұрын
Классное видео. Напоминает чайка-менеджмент (Прилетел, нагадил, улетел). А будет ли видел как эти проблемы исправлять? Или как писать код так, что бы не ходить по граблям? 🤔
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger 5 жыл бұрын
Парень из закреплённого коммента расскажет! 👌 А если серьезно, то планирую. Это чтобы аппетит разыгрался
@aleksyantkiewicz4369
@aleksyantkiewicz4369 4 жыл бұрын
Я только собираюсь учить JS и ничего в нем не смыслю, но почитав коментарии понял, что программирование бывает веселее всяких там кинокомедий. Особенно добил комент про жонглирование хуями. Ржу в голос и вытираю слезы :)
@antonmanin3521
@antonmanin3521 3 жыл бұрын
не бросил js?
@CyberAcidPlanet
@CyberAcidPlanet 5 жыл бұрын
У ES модулей есть замечательная особенность. Попробуйте в браузере динамически импортировать модуль у которого есть такой экспорт: export const then = () => console.log('Hello!')
@user-yb8ll6nv1f
@user-yb8ll6nv1f Жыл бұрын
Require, import это просто паттерн модуль, реализован через оборачивание кода в самовызывающиюся анонимную функцию. Что с этим то не так? Не хочешь export писать, ну заворачивай в такие функции, а то вдруг уберут из стандарта)
@cybertabak8951
@cybertabak8951 5 жыл бұрын
Классный контент! Можешь рассказать о плюсах минусах Golang, перспективах. Я начинал изучать программирование давно и плевался от ПХП, с джаваскриптом были какие-то мучения, а GO очень понравился. Может Я - мясо и программирование не моё ? Летаю в сомнениях. Хотел бы разработать AI, который будет обучать людей английскому, но это так фантазии школьника, в реальности все слишком сложно. Посоветуй что-нить (
@cascadengineering
@cascadengineering 5 жыл бұрын
Сосредоточься на чем-то одном - выбери стек, сделай небольшой проект от начала и до конца. Гуманитарии заходят в прогинг и нормально себя чувствуют, поэтому качай скилл, ориентируясь на требования вакансий, и перестанешь считать себя мясом.
@cybertabak8951
@cybertabak8951 5 жыл бұрын
@@cascadengineering Спасиба!
@yamuru22
@yamuru22 5 жыл бұрын
сори я полный нубас, но я слышал краем уха, что в новом бабеле убрали стейджи, я заблуждаюсь?
@user-yw9wx4lv2w
@user-yw9wx4lv2w 5 жыл бұрын
можно и так сказать, сегодня все плагины ставить нужно отдельно, и сказать бабелю какие браузеры/версии ноды хочешь поддерживать. На основании этого он сам определяет какие фишки компилить, а какие можно оставить
@monsterbesel
@monsterbesel 5 жыл бұрын
Гоу тоже самое про php или руби))
@mexvision-3556
@mexvision-3556 5 жыл бұрын
в php 2-часовое видео получится.
@nikolayserdyuk9753
@nikolayserdyuk9753 5 жыл бұрын
Супер!
@ivnnis
@ivnnis 5 жыл бұрын
класcное выступление на e3)
@dancecoder
@dancecoder 2 жыл бұрын
Классы в js всё же имеют отличие от функции с прототипом. Попробуйте вызвать конструктор класса без оператора new.
@RusFarFaz
@RusFarFaz 5 жыл бұрын
Спасибо вам за столь информативные влоги. Скажите пожалуйста, в Германии берут на работу программистов без профильного высшего образования? есть гражданство еврпейской страны
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger 5 жыл бұрын
Берут, опыт важнее если программистом
@norzqq
@norzqq 5 жыл бұрын
имхо не все так грустно, мне после с# очень даже зашел js, поначалу только немного ох*ел, но теперь не хочется обратно на статику
@predaytor
@predaytor 5 жыл бұрын
Что с шарпом не так? Идеальный же язык
@norzqq
@norzqq 5 жыл бұрын
@@predaytorэмм, я не давал никакой оценки с#
@DevilAlex03
@DevilAlex03 5 жыл бұрын
Тоже ах*ел, когда начал изучать js (недавно), но только после полугода на плюсах) Но только не уверен, что захочется остаться, пока чувствую себя неуютно
@huismuis5521
@huismuis5521 5 жыл бұрын
@@DevilAlex03 попробуй typescript. Хотя он тоже не идеальный, со своими багами и особенностями (к примеру, когда проверяешь переменную на undefined и используешь ее во вложенной функции, тебе компилятор ошибку выдает и говорит что нужно опять проверить на undefined).
@user-pq7dj1ny4h
@user-pq7dj1ny4h 5 жыл бұрын
Если ты дотнетчик, то JS скоро не нужен будет. Когда выйдет релиз Blazor, можно будет на шарпе фронт писать. А вообще шарп почти идеальный язык.
@Dest424
@Dest424 2 жыл бұрын
11:36 - иронично это слушать в то время как typescript набрал огромную популярность nowadays))
@daun55
@daun55 2 жыл бұрын
@bitmap im too согласен with тобой
@andreymanaenko1638
@andreymanaenko1638 5 жыл бұрын
Круто. Глубокие знания.
@user-yw9wx4lv2w
@user-yw9wx4lv2w 5 жыл бұрын
если это стеб, то норм
@andreymanaenko1638
@andreymanaenko1638 5 жыл бұрын
@@user-yw9wx4lv2w Нет не стёб. Кратко и с юмором.
@user-yw9wx4lv2w
@user-yw9wx4lv2w 5 жыл бұрын
@@andreymanaenko1638 тогда вам стоит самому изуть тему, потому что автор не сильно знаком с JS и экосистемой
@andreymanaenko1638
@andreymanaenko1638 5 жыл бұрын
@@user-yw9wx4lv2w Я уже полтора года как фронтед девелопер и мне хватает.
@preenxus3425
@preenxus3425 5 жыл бұрын
а ты знаешь джаву? можно такое же видео по джаве? если есть что ненавидеть, конечно)
@jenyaspace
@jenyaspace 5 жыл бұрын
Но чем например чисто технически отличается класс в JS от класса в Java?
@qazyhn94
@qazyhn94 5 жыл бұрын
В Js класс нифига не класс) это функция а вообще объект))
@ElmoLovesYou2
@ElmoLovesYou2 5 жыл бұрын
вот!!! наконец полезняк пошёл
@g.n._
@g.n._ 5 жыл бұрын
Мне с -дивана- бэкенда показалась хорошая идея компиляции программ с другого языка на js. Типа как в react, angular, scalajs и куче других подобных. По крайней мере для тех, кто предпочитает компилируемые языки. Долгоиграющие проекты - это везде похоже боль.
@AlexFloppy
@AlexFloppy 5 жыл бұрын
Может не все еще в курсе, оставлю это здесь : ['1', '7', '11'].map(parseInt);
@davidapk323
@davidapk323 3 жыл бұрын
спасибо, перехотелось связываться с js особенно ещё потому, что до этого есть опыт питона
@user-ei5ve3zl7k
@user-ei5ve3zl7k 3 жыл бұрын
ой, а дай тебе lisp или perl вообще вздернешься, наверное
@davidapk323
@davidapk323 3 жыл бұрын
@@user-ei5ve3zl7k это признак моей слабости или всё же прагматичности?
@DrZlad
@DrZlad 2 жыл бұрын
@@davidapk323 держаться от джс по дальше- всегда хорошая идея! А я сам пишу на джс, но никому его не советую!
@ilyao.naumenko4831
@ilyao.naumenko4831 5 жыл бұрын
Есть мнение, dart сможет заменить javascript, что думаете об этом?
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger 5 жыл бұрын
Один раз не смог, а теперь и Тайпскрипт подрос
@ilyao.naumenko4831
@ilyao.naumenko4831 5 жыл бұрын
@@SeniorSoftwareVlogger то есть, typescript, возможно альтернатива javascript? Или надежда, js сможет исправить костыли и возможно ли это?
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger 5 жыл бұрын
Все возможно 🙏
@AssassinNCR
@AssassinNCR 5 жыл бұрын
Пункт 2 с мутацией объекта не понял. Что здесь неудобного, разве в других языках как-то по-другому реализовано? Я думаю, модифицировать исходные параметры метода - это в любом случае плохое решение. Еще Макконнелл в "Совершенном коде" писал: "не используйте параметры метода в качестве рабочих переменных". При таком подходе выстрелить себе в ногу гораздо легче и метод труднее сопровождать. Интересно посмотреть кейс, в котором это понадобилось. Вообще, изучая JS, я тоже много плевался и делал много ошибок. В основном это происходит от того, что язык очень многое позволяет сделать - на этапе изучения легко наломать дров. Но с опытом гибкость языка становится преимуществом. Для тех, кому это всё же не нравится в силу личных убеждений, есть TypeScript.
@ArtemKuznetsovTV
@ArtemKuznetsovTV 5 жыл бұрын
+1
@dmitry.gashko
@dmitry.gashko 5 жыл бұрын
@Тимофей Кривенко При чем, только, здесь, функциональное наследование???? Та штука к мета программированию находится ближе чем к функциональному программированию))
@dmitry.gashko
@dmitry.gashko 5 жыл бұрын
Во многих языках можно контролировать, передвать объект по ссылки либо копировать. В том же С/С++: void func(User user) {} // копируется, и если в функции поменять что-то в объекте, то во внешнем коде ничего не поменяется void func(User &user) {} // передается по ссылке (как в js/java...) void func(User *user) {} // передается указатель (суть таже, но немного по другому (на самом деле предыдущий способ, скорее сокращение этого)) И все же как в js мне нравится больше. Хоть и как в C++ тоже интересно. Как минимум гибкости в больше, хоть и подывает сложность.
@kookaburru
@kookaburru 5 жыл бұрын
Вот когда будете поддерживать реальный проект, тогда прймете что мутация объекта не есть гуд.
@kookaburru
@kookaburru 5 жыл бұрын
@Сергей Семенов, проблема в том что если проект чужой вы будете долго искать ошибку мутации. В своём проекте конечно вы уже сами контролируете код. Например в React по умолчанию принята анмутабельность, но если там где то в коде объект изменится, то вы ногу сломаете пока будете искать баг. Думаю автор именно это имел ввиду.
@xBesss
@xBesss 5 жыл бұрын
Кратко о текущей веб разработке: стремленние юзать максимальное количество инструментов, которые конвертируют норм код в говно код ( понятный браузеру)
@MAGIKru
@MAGIKru 5 жыл бұрын
Еще бы про TypeScript упоминуть бы было не плохо.
@ivansidorov5
@ivansidorov5 5 жыл бұрын
Это такой же костыль
@mivnvi.4685
@mivnvi.4685 5 жыл бұрын
@@ivansidorov5 Мозг твой костыль, TypeScript отличный объектно ориентированный язык.
@ivansidorov5
@ivansidorov5 5 жыл бұрын
@@mivnvi.4685 github.com/microsoft/TypeScript/issues куча проблем TS. норм только для HelloWorld и Junior задач , когда используешь в фреймворке с современными фичами - там полно говна всплывает. не всегда типы подсказывает. тормозит, зайди в русское сообщество в телеге, все дерьмом поливают его, крмое джунов которые написали (a:number, s:string) и думают что у них в проекте Ts)))))00
@ivansidorov5
@ivansidorov5 5 жыл бұрын
@@mivnvi.4685 Если и хочется типизации качественной, то вали из JS и бери нормальный язык, ане обмазывайся костылями. ты считаешь TS нормальным языком, потому что тебе не с чем сравнивать. и да ООП не нужен в 2019 году в JS) ты отстал от жизни.
@mivnvi.4685
@mivnvi.4685 5 жыл бұрын
@@ivansidorov5 чем тебе типизация TS не угодила? Приведи хоть 1 факт. Если TS объектно ориентированный это не значит, что на нем не пишут в функциональном стиле. Ты типичный ретранслятор, который слепо пересказывает чужое мнение.
@user-yr4vw3ll2v
@user-yr4vw3ll2v 4 жыл бұрын
Тема с числами не только с js. Многие популярные языки используют один и тот же стандарт IEEE-754 - все он виноват, а не js)
@BohdanVR666
@BohdanVR666 4 жыл бұрын
А для чего это нужно?
@user-yr4vw3ll2v
@user-yr4vw3ll2v 4 жыл бұрын
@@BohdanVR666 компьютеры не умеют точно вычислять числа с плавающей точкой (натуралтные). Для обхода этого используют приближенные вычисления, до определенного знака. IEEE-754 описывает как раз способ вычисления натуральных чисел. И т,к, это приближенные вычисления, то они дают подобные артефакты
@atmospheric_b
@atmospheric_b 5 жыл бұрын
ну как по мне babel - единственное решение, когда в мире столько браузеров и они не унифицированы. А что делать то? Как быть с internet explorer?
@strawberrymiles
@strawberrymiles 5 жыл бұрын
скрытая реклама Winderton’a
@maxleskin7444
@maxleskin7444 5 жыл бұрын
Это настоящая любовь, когда любишь и ненавидишь одновременно
@szyk0v
@szyk0v 5 жыл бұрын
Все ответы в книге "Yout don't know JS". Ну блин не ожидал от тебя. Классы это прекрасно. Люди городили монстров на основе прототипов пытаясь сделать из прототипов наследование. На вам классы. И тут полилось "Ой это не круто. Внутри прототипы." Babel это не новый JS это и есть JS. Это даже не суперсет как TS. Это просто обычный транспайлер. А негативный опыт у тебя с экспериментальными функциями. Их никто тебя и не просил использовать. Это везде отмечается. Async/Await это вообще проще некуда. Пришло из C#. Куда сложнее понять callback/promise. А модули это вообще прекрасно. Наконец то можно писать что-то нормальное.
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger 5 жыл бұрын
Сергей :) Все в порядке, жди другое видео 😉
@YauhenKavalchuk
@YauhenKavalchuk 5 жыл бұрын
"Как я вас понимаю")))
@777homosapien
@777homosapien Жыл бұрын
Прошу ознакомиться как хранятся данные с плавающей точкой, и вы поймете почему сложение дробных чисел будет давать такие результаты (подсказка = мантисса экспонента).
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Георгий, многие это знают и понимают. Тем не менее это очень неудобно.
@777homosapien
@777homosapien Жыл бұрын
@@SeniorSoftwareVlogger Согласен. Спасибо за ответ. Может я не так сформулирован комментарий. Это посыл к нашей общей боли - товарищей которые вошли в "айти" по курсам, и в большинстве случаев не знаю базы и не очень хотят развиваться. Если что то извините.
@stan5214
@stan5214 2 жыл бұрын
Я пытаюсь выучить ReactJS, и моя постоянная головная боль это область видимости функций и передача объектов между функциями объектов (function isn't defined etc). Какім-то чудом я еще не разбіл ноут. Если вам есть что сказать по этому поводу, напишите пожалуйста
@andreiosipov2766
@andreiosipov2766 2 жыл бұрын
Начните с основ программирования, потом изучите язык JS, а потом уже фреймворк
@alexperemey6046
@alexperemey6046 Жыл бұрын
Или пиши на Typescript, тогда эти штуки у тебя будут вылезать сразу при написании, а не во время работы приложения )).
@p343nk4
@p343nk4 5 жыл бұрын
1:40 - Всё верно, NaN *это число!* Неопределенность или NaN (от not a number) - это представление, придуманное для того, чтобы арифметическая операция могла всегда вернуть какое-то не бессмысленное значение. В IEEE754 NaN представлен как число, в котором E=Emax+1, а мантисса не нулевая. Источник: habr.com/ru/post/112953/
@RedkeiGost
@RedkeiGost 4 жыл бұрын
Кстати да, видел где-то, как пишут на питоне и транслируют сие в джаваскрипт. Skulpt называлась.
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger 4 жыл бұрын
потому что мало багов, нужно еще баги транслятора :)
@BohdanVR666
@BohdanVR666 4 жыл бұрын
А чё, так можно было?
@alexshalov2695
@alexshalov2695 5 жыл бұрын
Ну по поводу погрешности в 0.1 + 0.2 = 0.300..04 это тут дело не в самом JS, а в машинной точности. Это рядовая проблема из-за того, что такие числа как 0.1 в двоичной системе счисления не могут быть представлены конечным количеством бит из-за своей периодичной сущности.
@dmitry.gashko
@dmitry.gashko 5 жыл бұрын
Эхх. Что-то подсказывает, что по мере просмотра видео напечатаю много букв... 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 жыл бұрын
Кстати, не знал, про BigInt. Посмотрел - классная штука. Создал число, запись которого весит пару мегабайт))
@BHy4OK
@BHy4OK 5 жыл бұрын
у isNaN еще есть прелесть, если в него передать строку isNaN("hello") > true
@2152311564132542
@2152311564132542 5 жыл бұрын
Для этого придумали Number.isNaN
@edgerunner2023
@edgerunner2023 5 жыл бұрын
так глобальный isNaN преобразует аргумент в число, а hello - нечисловая строка
@BHy4OK
@BHy4OK 5 жыл бұрын
@Alexander Borisenko да не, я без предъяв) глобальные функции в новых спеках постепенно переезжают в статические методы Number.
@ChinaraIbr
@ChinaraIbr 3 жыл бұрын
Кариес - зачет )
@antonluhanskyi8450
@antonluhanskyi8450 4 жыл бұрын
о у меня тоже есть такая футболка))
@kookaburru
@kookaburru 5 жыл бұрын
Не понимаю почему все набросились на автора видео? Как по мне он все верно сказал. Он просто уточнил некоторые особенности языка, которыхз нет в компилируемых. Я не увидел никакой некомпетентности.
@bobomurod
@bobomurod 5 жыл бұрын
spasibo
@KostiaBazrov
@KostiaBazrov 5 жыл бұрын
про AWAIT -очень даже очевидно.!. для чайников js еще заставляет помечать функцию как async
@KostiaBazrov
@KostiaBazrov 5 жыл бұрын
в новой версии ето выпилить грозились
@antifree007
@antifree007 4 жыл бұрын
Typescript в помощь
@vitaliytarakanov7609
@vitaliytarakanov7609 5 жыл бұрын
самый лучший видос
@imbydlo1552
@imbydlo1552 2 жыл бұрын
Правильно сказал! Зачем писать на JavaScript, если все равно он будет компилироваться на JavaScript??? Буду писать на своём любимом c# используя blazor. Вот еще приближается net core 6 который добавить ещё больше фичи для него
@kirill-eremin
@kirill-eremin 5 жыл бұрын
Да. Модули это просто нечто. Это мне больше всего непонятно в языке. Если сейчас взять чистый JS без каких-либо библиотек, то получится, что я должен писать все в одном файле. Мне надо обязательно тащить с собой require.js или что-то подобное.
@mivnvi.4685
@mivnvi.4685 5 жыл бұрын
Никто в здравом уме не станет создавать ВЕБ-приложение с помощью ванильного js. Зачем "изобретать велосипед" ?
@kirill-eremin
@kirill-eremin 5 жыл бұрын
@@mivnvi.4685 Да. Я об этом и говорю. И мне не понятно почему язык довели до такого состояния.
@spanchbob3079
@spanchbob3079 5 жыл бұрын
Привет! Теперь сними пожалуйста почему любишь JS!
@DJamal1803
@DJamal1803 5 жыл бұрын
его не за что люитть
@maxleskin7444
@maxleskin7444 5 жыл бұрын
@@DJamal1803есть ха, что браузеры развиваются и внедряют новые стандарты
@xBesss
@xBesss 5 жыл бұрын
Любить js - это как будто остаться со срашной девушкой на безлюдном острове)
@ulargray4313
@ulargray4313 5 жыл бұрын
@@xBesss Несмотря на это он лидирует в топ 3. Ежегодно между прочим. Можно сделать вывод , лучше уж со страшной но с умной , или с умеющей варить борщяк :с
@xBesss
@xBesss 5 жыл бұрын
@@ulargray4313 он в топе, потому что нет аналогов, фактически монополия среди языков)
@volodymyrgachkovsky7256
@volodymyrgachkovsky7256 5 жыл бұрын
0.1 + 0.2 это прикол не JS вообще. Даже тот же C/C++ даст такой же результат
@serhiis_
@serhiis_ 5 жыл бұрын
js и php имеют общие проблемы с типами. Так как там нету обычного целого типа и возникают такие проблемы. В нормальных языках для точных "космических" расчетов не используют дробные типы вообще. Так как в дробном типе очень много проблем в числе 0.999999 и -0.00000007 на уровне архитектуры процессора. То же сложение 0.1+0.2 можно сделать (1+2)/10 и проблем не будет. Эти моменты используют не только в инженерных расчетах, но и в гемдеве. Заменять дробные числа натуральной дробью избавляет движок от многих проблем с точностью и округлением.
@user-yi3ud1ld8c
@user-yi3ud1ld8c 5 жыл бұрын
при складывании double проблем не будет. double delta = 0.1 + 0.2 будет 0.3000
@niklkelbon3662
@niklkelbon3662 3 жыл бұрын
на С++ ты можешь написать свои дробные числа, которые такой хуйней страдать не будут. Как собственно можешь и использовать просто другой тип чисел, которые точные.
@nsname
@nsname 5 жыл бұрын
TypeScript вроде многое решает?
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger 5 жыл бұрын
почти ничего ;)
Ну Лилит))) прода в онк: завидные котики
00:51
The delivery rescued them
00:52
Mamasoboliha
Рет қаралды 10 МЛН
Это на Javascript!? 🤯
21:55
Senior Software Vlogger
Рет қаралды 25 М.
💩 Bad coder VS 👨‍💻 Programmer. Programmer Etiquette
13:33
Senior Software Vlogger
Рет қаралды 114 М.
Худший язык программирования эвер!
12:16
Как пройти в IT?
Рет қаралды 167 М.
Что произошло с JavaScript?
21:37
Миша Ларченко
Рет қаралды 32 М.
Зря учить веб программирование в 2022?
11:23
Senior Software Vlogger
Рет қаралды 174 М.
THE MOST FREQUENT MISCONCEPTIONS ABOUT OOP
19:37
ExtremeCode
Рет қаралды 539 М.
Почему начинающие не понимают Javascript
7:32
Web Developer Blog
Рет қаралды 227 М.
Симуляция простейшей жизни на JavaScript
11:23
Кот с микрофоном
Рет қаралды 62 М.