Йуные розроботчеги, которые шутят про Си++ и жабаскрипт немного не понимают, что такое на самом деле "выстрелить себе в ногу", ибо знают только последний, а про кресты только слышали и чуть-чуть читали. Так вот, мой йуный друх, "выстрелить себе в ногу" - это не получить 2+2 = 22, или NaNNaNNaN Batman!, это несколько глубже.
Это получить bsod при неизвестных обстоятельствах, которые ты будешь методом проб и ошибок определять две недели, это по чуть-чуть утекающая память, а течь ты можешь найти только используя GDB и чутьё, а чтобы мёдом жизнь не казалось, то в дебаге утечки нет, только в оптимизированном проде. А хотите ёблю с потоками в приложении, где разраб слегка упоролся по темплейтам? А слабо найти там дедлок?
Поверьте, Javascript отвратительный язык, но даёт возможность только порезать пальчик. Сегодняшние изнеженные фронтэндеры почему-то думают, что это "размолотить ноги в фарш". Нет, мой йуный друх, ты просто не знаешь, что такое хардкор.
Люди не заставшие тех времён, когда даже огороженный со всех сторон и предназначенный для детей среднего школьного возраста Паскаль позволял записать непристойное в какой-нибудь интимный уголок памяти, где его совсем не ждали. Что уже говорить о потоках на плюсах.
А JS из своей песочницы никуда не выберется. И поток в нём один. А если помнить, что всё что можно привести к строке жабаскрипт приведёт к строке, то большая часть удивительных случаев рассосётся сама собой.
О даа, заполняем страницу памяти инструкциями, помечаем ее как кодовый сегмент , и оно начинало работать... Ээх первые вирусы с постоянно изменяющимся кодом на asm... Ээх до NT мир был прекрасен.
По Js отстаёте, working threads давно есть в nоdejs , но callback hell делает код не читаемым, а более менее среднем проекте. если ты не под смузи, а typescript.. система типов без rtti .. хотя кому это все надо хуяк-в продакшн , память жрёт? AWS autoscaling ...
Working threads есть давно, но пользуются им почти никогда. Я когда-то упарывался, но со всякими голландскими кубернетесами сейчас их тупо не к чему применять. А вот callback hell это что-то семи-восьмилетней давности. Его почти сразу начали разруливать через async.js, потом подвезли промизы, особо упоротые разруливали елдой, но это из области эзотерического программирования, а в наш век async/await как бы вообще об этом не вспоминают.
Ну значит старый энтерпрайз изначально имел некоторую предустановленную рукожопость. И я снимаю шляпу перед отвагой людей, затеявших писать энтерпрайзное решение во времена 0.х-овых версий ноды.
А так, если проект с вами надолго, эти конюшни надо планомерно покрывать тестами и рефакторить под что-то читаемое. Имхо, дешевле будет, чем каждый раз одной рукой кодить, а второй глазки в орбитах удерживать.
Судя по косвенным признакам, там таки монолит. А его разбирать так, чтобы проблем по итогам было меньше, чем до, куда сложнее, чем рассказывают адепты микросервисов.
В JS все таки один поток, второй поток это либо движок бразера либо нода (либо другая среда). Можно загуглить по словам event loop
А асинхронные функции в js реально асинхронны в той же мере, в какой уместно говорить об асинхронности применительно к "нормальным приложениям". Определяешь а.ф., запускаешь, твой код продолжает выполнение, а а.ф. работает независимо от него.
Погугли "как сделать sleep в js", на первой странице гугла о асинхронных функциях вылезет.
на одноядерном проце всё не труЪ-параллельно выполняется.
Только где сейчас найти одноядерные процессоры?
можно и не давать, с другой стороны. микросервисы они на то и микро. там важен минимализм во всем. платим-то мы за ресурсы в облаке совсем нефиговые деньги
Можно не давать, ведь пользовательский код в асинхронных функциях от этого параллельно выполняться не начнут все равно.
Да и для поиска утечек есть куча удобных инструментов, ну а кто ими не пользуется сам себе злобный буратино
Увы, но для поиска утечек самый нормальный это Valgrind который ток под линь, под винду есть другая штука под названием heob, но как по мне, она работает как-то странно.
хм, а как же срачь? уже 3 часа прошло. Неужели тут и вправду сидят умные, вдумчивые, бородатые дяди, которые знают за свое и поэтому что то доказывать не имеют желания?
Я вижуалкой мало пользуюсь, в основном использую фреймворк Qt, потому сижу на их IDE, и если честно, нравится больше вижуалки А аналогом PVS есть clang-tidy который идет вшитым в креатор, и меня в принципе устраивает. Отдельного полноценного анализатора как Valgrind все равно в винде оч сильно не хватает.
Можно заявить, что мол пишем под винду софт, но это отягчающее обстоятельство как по мне 😏
Удивительно, но программисты пишут софт для результата, а не для процесса, а единственная пк-ос в которой работают люди - это винда. За маааленьким исключением макоси
зря люди под виндой работают, многое прекрасно делается в линуксе, за исключением каких-то специфических вещей + надёжно/бесплатно/вирусов нет/не сломается на ровном месте и тд и тп
разрабатывая софт под винду - мы не даём Винде помереть пораньше)
пропустил полгода обноы, а потом накатил через upgrade? Ось до скончания веков будет орать, что что-то сломано, но так и не скажет что.
отвал гуи - стабильно раз в полгода.
у тебя не работает специфическая камера? Лезь в ядро, в этой версии отключена поддержка протокола/технологии.
Линь хорош, особенно кучей иструментов для ит, но ломается он ничуть не хуже винды
и кстати, у меня плазма не падает почему-то)
если нужно средство для работы одного сервиса - берешь линь, если нужно для человека - винда. если бы на винде крутился один почтовый сервер, или там субд, то и она бы не ломалась. ну и с тех пор, как пользователи перестали жить под админом, надёжность выросла на порядки
Можно использовать Valgrind c WSL2 на винде.
Собственно, нас так и учили - по крайней мере, на CLion с этим проблем не возникает.
Я коэш дика извиняюсь, а поцчему надо отлаживать обфусцированный код? У вас чо - сорца нет?
Я был в этой ситуации. Буквально неделю назад с этой херней закончил. У заказчика был модуль от другого разработчика, ошибка и отсутствие связи с тем самым разработчиком. При этом если с бэком исходники были, то от фронта только обфусцированный код. От такая хуйня.
Еще раз дико извиняюсь.
Мой пойнт следующий -- если от фронта / бека на JS нет сорца, то трогать это бессмысленно по нескольким причинам.
1 - На vanilla JS практически никто ничего уже не пишет. Везде используются фреймворки
2 - Дикая смесь из JS + TS может быть даже в одном проекте
3 - Webpack + Babel + build отсекают все разработчицкие зависимости и конвертят код в человеконечитаемое нечто
4 - Unit-тесты уже не поправишь
Те смысл такой работы -- найти разово ошибку, которая возникла непонятно от чего, до следующей ошибки которая вылезет обязательно, и возможно в результате текущей правки?
Я бы в прод такое запускать не стал.
Форматирование - это наименьшая проблема обфусцированного кода. Особенно когда исходники явно на ts были и все было собрано в один мега main.js.
Обфускация должна убираться на момент дебага. Но вообще, разработка на высокоуровневых языках (хотя хз как я js к ним причислил) отличается от разработки на более низкоуровневых. Как правило, вопросы управления памятью - это вопросы к интерпретатору. Ты просто знаешь, что вот здесь и здесь может быть хуета, поэтому при отладке только локализуешь проблему до нескольких функций, а дальше проверяешь что происходит после интерпретации. Как-правило, проблема не требует погружения до уровня изучения заполнения памяти, и ограничивается приблизительным пониманием того, что происходит на верхних слоях абстракций.
В этом разница между любителями "щей++" и высокоуровневых языков. Первые не считают вторых программистами потому, что они не изучают как код работает с памятью и процессором, с низкоуровневыми слоями ОС. А вторые не любят первых потому, что они не изучают концептуальную сторону разработки, не углубляются в философию абстракций и высокоуровневых паттернов. По сути же, это две ветки одной профессии.
Допустим, использование Promise в js - это паттерн и абстракция над пулом задач языка. Типы данных в пайтоне - это не совсем реальные типы, а абстракции над типами. Понимание того, что есть изменяемые и неизменяемые типы, а также, гарантирующие и не гарантирующие порядок сортировки, дают большой простор для разработки новых концепций проектирования классов. Например, использования dataclasses для написания сериализаторов или интерфейсов. Изменяемость и неизменяемость данных приводит к необходимости обходить это, когда надо поменять неизменяемую переменную, либо, когда код ненамеренно редактирует изменяемую.
Promis это вообще не абстракция и не паттерн и тем более не высокоуровневый, это всего лишь один из простейших типов для асинхронного взаимодействия. Который существует в любом языке где есть асинхронный код и делает он ровно тоже самое.
Типы данных в python это просто "типы" и от того что в python они имеют разные свойства и методы не меняет того факта что каждый из них представляется PyObject в С.
А это вообще какой то швах "типы гарантирующие и не гарантирующие порядок сортировки", вау реализация красно чёрного дерева наверно только в "Python" существует.
"использования dataclasses", ляя это называется "рефлексия" которая ещё бывает compile time и runtime. И это то что очень легко реализуется в любом интерпретируемом языке. И это не фича и не что то новое это существует уже хз сколько лет.
О какой неизменяемости данных можно вообще говорить в js где даже const это не const.
Паттерны и абстракции вообще не привязаны к языку хотя можно говорить про разные уровни абстракций и паттернализации. Я ожидал услышать что то более вменяемое, например про паттерн проектирования или абстрактные типы данных.
Promis это вообще не абстракция и не паттерн и тем более не высокоуровневый, это всего лишь один из простейших типов для асинхронного взаимодействия.
https://developer.mozilla.org/ru/docs/Web/JavaScript/Referen...
Типы данных в python это просто "типы" и от того что в python они имеют разные свойства и методы не меняет того факта что каждый из них представляется PyObject в С.В пайтон всё является объектом. PyObject - это объект, как ни странно.
сорян конечно но у тебя насрано пздцНе, милчеловек. Насрано в голове у тебя, если ты путаешь такие понятия, как объект и тип. Или обёртку и тип. Рекомендую ознакомиться с устройством очередей событий в JS прежде, чем писать опусы на тему "объект - это не объект, а тип".
https://developer.mozilla.org/ru/docs/Web/JavaScript/Referen...
Серьёзно? Я тоже умею ссылки кидать
OMG.. "Тип данных" это больее широкое понятие чем "обёртка" или "объект" я не стану размениваться на эти мелочи это вообще не существенно в контексте обсуждения.
Чел, я вносил правки в libuv, для сборки под qnx, на которой и построены очередей событий в JS, мне не надо рассказывать как они устроены. Если это для тебя что то интересное и любопытное, то в мире C++ это всего лишь ещё одна реализация одной из многих моделей паралелизма под нзванием Event Loop. Если ты спозобен мыслить лишь в "абстракциях" одной конкретной реализации, одной конкретной модели паралелизма, то про какие "высокоуровневые парадигмы" ты вообще говоришь?
Там, в добавок, само приложение жрало 40-60 гигов (не утечка, не хреновый код, действительно перелопачивало столько данных)
Как разраб на плюсах, мне проще
Прям КЭП- оказывается разрабу на плюсах проще на плюсах, чем на том в чем он не дупля не отбивает.
Олсо, обфусцированый код на плюсах с защитой от декомпиляции каким то там упаковщиком вообще типа сказка дебажить.
Это первый момент, а второй, часто ли нужно обфусцировать бинарник для прода? Как часто ты вообще это видел? Вот собирать js код в один файл для поставки задача абсолютно рядовая
Вот собирать js код в один файл для поставки задача абсолютно рядовая
- на JS минификация, обфускацию никто не делает почти.
- Не в один файл, а в набор.
- Только на фронте
- минимизация отключается, просто запустив сервер не в прод режиме
- хотя на это пофик, ибо для дебага в браузере юзаються sourcemap, т.е разраб видит не минимизированный код при отладке, как Сишник видит строки кода вместо asm инструкций.
хоть кто-то нашёлся, кто может объяснить значение "выстрилить себе в ногу". А то банальные баги из-за кривокода называют "выстрелить себе в ногу" или "фарш" - это действительно детсад какой-то.
Javascript тщательно оберегает разраба от фатальных ошибок. И кодят на нём кто попало, кто на Си не осилит ни одной простой готовой программы написать без утечек памяти.
И кодят на этом Си сплошные неграмотные лохи, кто не осилит ни одной простой готовой программы на ассемблере написать.
Лёгкий порог входа - это, конечно, минус языка. Такое ощущение, что люди просто завидуют js разработчикам. И зарплатам, и что не надо заниматься ебаниной
Нормальный язык жс, и нечего называть нас "изнеженными" просто потому, что мы не страдаем так, как вы. Я вообще сомневаюсь, что эти шутки пишут фронтэндеры. Их пишут первокуры, которые написали хэлло ворлд и решили, что они охренеть какие программисты.
Потому что нормальные фронты в курсе, зачем создавался жс, как нелепо сравнивать его с другими языками, и как обойти его подводные камни. И сопли не жуют в интернетиках.
Я не буду спорить что каждый язык для своих задач и что для фронта у джс просто нет конкурентов, но в сравненни с языками с нормальным ооп такими как java или c# -- js это ебаный набор костылей.
Ну а что ты хочешь от языка, спецификация для которого была сделана за неделю? Я смотрел новые версии - ECMA честно пытается сделать из него удобоваримый ЯП, проблема как всегда в обратной совместимости. Потому что если её убрать - 3/4 веба наебнется. Но и поддерживать уже сил нет. Можно все свалить на Netscape (неделя на спеки, помним, да?) - да только смысла нет, netscape давно уже почил в бозе. Ну и он как бы создавался, чтобы на страничке там снежинки красиво падали, а не вот это вот все. А еще долбанный node. Охуенная же идея - мы и так вынуждены пользоваться одним из самых хуевых ЯП на фронте, давайте его затащим еще и на бэк!
П.с. для фронта таки есть конкурент - webasm.
> Потому что если её убрать - 3/4 веба наебнется.
Нет, если разрешить запускать старые сайты «в режиме совместимости» и ввести понятие модульности.
Ну то есть «хорошие сайты» могут начать постепенно переходить на новый язык, который синтаксически не совместим с js, но может вызывать функции оттуда и быть вызванными. И лет через 10 большинство сколько-нибудь значимых сайтов будет на новой парадигме.
Понимаешь, ТS - это костыль. И тот факт, что ты, защищая JS вынужден упоминать этот костыль как раз доказывает, что JS - хуевый язык. Да, не спорю, TS делает его более удобоваримым, но все равно он не решает все проблемы.
А нода, как я написал выше, мне не нравится тем, что плохой язык затащили туда, где ему не место.
А, ну тогда понятно, почему тебе JS хорошим языком кажется. С жавы уже даже самые упорные жависты бегут в котлин/скалу, а пых... ну что пых, про него все и так ясно.
С жавы уже даже самые упорные жависты бегут в котлинЗвучит так, будто котлин - это что-то принципиально новое, совсем не джава.
Мне JS кажется хорошим языком - потому что я пишу на нем более 5 лет, хорошо его знаю, видел много разных проектов, и знаю как писать так чтобы было и понятно и удобно и все остальное. Не особо вижу минусов языка!
вы как то умудряетесь понимать, что каждый инструмент для своих задач и сравнивать JS с Java и C#.
JS - встраиваемый язык, для управления приложением.
Java, C# - языки на которых можно писать полноценные приложения.
Очень хочется, всех кто критикует JS, заставить переписать весь веб на C.
нет никаких сомнений что получится отлично, и память нигде течь не будет... и быстро будет, и поддерживать легко и дёшево. а расширять функционал вообще как два пальца .
говнокодить можно на чем угодно.
> Очень хочется, всех кто критикует JS, заставить переписать весь веб на C.
Очень хочется, всех кто критикует Ладу, заставить ездить на УАЗе.
Мы ведь такие тупые, не знаем демагогического приема «ложная дихотомия».
причем тут демагогия?
JS в мире программирования что то вроде груши для битья. это притом, что альтернатив ему сейчас нет, насколько я знаю.
Тогда об чем пошутейки то?
Инструмент выполняет свою функцию, и раз альтернатив нет, значит это самый дешевый вариант. Как только это станет не так - появятся альтернативы.
альтернатив ему сейчас нет
Всегда было навалом альтернатив. Сейчас - C#/Blazor, к примеру. А вообще, сейчас TS становится практически стандартом де-факто.
допустим, какой процент сайтов использует JS, и какой то, что вы перечислили?
Это напоминает мне дискуссию Linux vs Windows. При всех косяках винды именно windows стала одной из самых массовых ОС, и наряду с удешевлением железа, именно низкий порог входа обеспечил колосальный толчок развития ПК.
То же самое и с JS. При всех его недостатках, именно он обеспечил толчок веб индустрии.
Вполне возможно технологии которые вы упомянули совершат прорыв. прямо сейчас это не так.
какой процент сайтов использует JS, и какой то, что вы перечислили?
Речь шла про наличие альтернатив. Таки они есть.
При всех его недостатках, именно он обеспечил толчок веб индустрии.
Мы ему настолько обязаны, что должно быть стыдно признаать, что язык объективно устарел?
чего вам стыдится, вы как-нибудь, без меня разберетесь.
одно дело признавать, что существуют проблемы, которые пока не ясно как решать.
другое дело по любому удобному поводу поливать работающее решение.
с JS'ом, PHP и многим другим происходит именно это. Устраивается мишень для "остроумия".
Мне не понятно с какой целью это происходит.
Устраивается мишень для "остроумия".
Зачем так близко к сердцу принимать критику пусть даже любимой технологии?
Говорить о недостатках любых технологий важно и нужно, дабы не допускать религиозной увлеченности по причинам недоинформированности. Серебряных пуль нет. У винтажных технологий всегда будет больше недостатков больше, чем у более современных.
ты зэ знаешь что TS это JS? :)А ты же знаешь, что нет? И когда говорят про TypeScript, то чаще всего подразумевают использование фишек этого языка в процессе кодинга.
> Очень хочется, всех кто критикует JS, заставить переписать весь веб на C.
>Очень хочется, всех кто критикует Ладу, заставить ездить на УАЗе.
С логикой поработайте. У вас проблемы!
Плюсы и минусы чего?
Если взять текущие языки, но не одних легче загонять малоопытных, другие удобнее в финансах (например, kdb), третьи удобны для работы с базами, четвёртые позволяют лучше контролировать программу, пятые позволяют легче писать большие программы, шестые позволяют лучше работать в больших коллективах, седьмые позволяют дольше присасываться к бюджету, восьмые известны тимлиду/менеджеру (а значит ищут людей именно на них), девятые упрощают vendor lock-in и так далее.
Собственно, плюсы и минусы будут только при постановки задачи и только в сравнении с чем-то.
Тут надо гуглить кто считается создателем ООП и какое оно было изначально ) (Если что в js именно оно)
Тут проблема, что "нормальный" он по сугубо субъективному мнению предвзятых разрабов, которые и пишут на этих "нормальных" ЯП, но вдруг реалии заставляют свитчится на JS, но конечно не на сам JS, а на TS. А потом 10+ лет ходят и везде с недоумевающим видом вопрошают, почему еще все не пишут хотя бы на TS- он хоть как то похож на "нормальную" джаву!! почему!? почему!? Та же хрень, как дельфину предложить ноги приделать- на суше ведь самое то!
Кому больше? Фронтам? Ерунда, Сишникам и джавистам сложнее. А если юзать, например, тайпскрипт, как сказал человек выше, то проблем становится в разы меньше. Плюс, фреймворк нормальный, плюс думать, как оно будет работать в будущем и перестать писать убогие костыли - вуаля, у вас нормально поддерживаемый код и не надо с ним "ебаться".
Кому больше? Фронтам? Ерунда,
ну недавно сеньор Фронт Реакт/Ангулярист оффер на 12к$ поднял в Украине.
Если по-нормальному писать на плюсах, то допустить утечку памяти (которую не заметит банальный линтер, тот же clang-tidy) крайне сложно. Если не упарываться с какими-нибудь хардкорными оптимизациями, но в таких ситуациях кто угодно может течь, и go, и раст. Последний раз у меня тёк именно go, весьма извращённый код там был...
А вот ебля с потоками и дедлоки - о да, классика, тут плюсую. Добавим в коллекцию ещё непотокобезопасные типы (для плюсов не сильно актуально, а всё тот же go передаёт привет). И ещё асинхронности добавим, и протухающие переменные, передаваемые в колбэки через захват в лямбду по ссылке, вот где красота.
А мемы про JS обычно сводятся к нестрогой типизации, ну да, это зло, но во-первых, это сильно проще отлаживать, а во-вторых, да кто вообще сейчас пишет на чистом JS'е, когда есть TypeScript?..
Настолько охуенно, что его всю дорогу пытаются спрятать под CoffeScript, Dart, TypeScript, Flow и т.п.
Дык в этом и охуенность. Гибкий, относительно безопасный. Чего ещё надо для написания веба? Конечно, не без своих заёбов, но, в целом, язык очень неплох
Чего ещё надо для написания веба?
Хотя бы начать с сильной типизации и вообще развитой системы типов (в т.ч. в рантайме).
Хотя бы начать с сильной типизации и вообще развитой системы типов
Вот мне твоя "сильная" типизация в динамическом не типизированном ЯП была бы настолько желанной и полезной, как говно в трусах :)))
И вообще, типизированные ЯП это мамонты, удел которых писать ядро ОС или части встраиваемых систем- они эволюционно устарели и при удешевлении ресурсов железа вымрут как мухи, но очень доставляет, что кодеры этих ЯП, свято верят, что это у них прогрессивность :)
На момент создания js отсутствие типизации было киллер-фичей. Вспомните, как этот язык появился - сроки горели ярким пламенем. Ну и языки без типизации легче в освоении, что понизило порог входа новых разработчиков и позволило (как один из факторов) js так широко распространиться.
На момент создания js отсутствие типизации было киллер-фичей.
Выходит, JS устарел? В целом, я согласен, его нишей должно оставаться то, для чего он создавался и идеально подходит - скриптовое расширение браузерных стилей. Для бизнес-логики сейчс уже зреет WASM, который позволит обойти фатальные недостатки JS.
Ну как устарел... Он развивается как может. Сейчас это совсем не тот язык, который был изначально. Со временем его сменит что-то более новое и удобное, как и все остальные современные языки
На момент создания js отсутствие типизации было киллер-фичей.
Это и есть киллер фича. Вместо программистов внутренним представлением данных и оптимизаций доступа к ним занимается дохрена умный движок, который все ровно оптимизирует твой код на JS примерно к такому же коду, если бы он был написан на низкоуровневом ЯП. То есть результат сопоставим для большинства приложений, а роботы на порядок меньше.
Называть ручную установку типов правильным или прогрессивным доставляет немало лулзов, ибо это обычное подгорание у определенного среза кодеров.
Вы не выкупаете суть типизации как таковой и статической в частности) Оптимизация - это часть успеха.
Типы позволют более полно выразить нюансы и ограничения контрактов в коде. И среда (рантайм, компилятор и т.п.) сможет лучше отслеживать ошибки в коде. Это тесты, которые уже написаны за вас при минимальных усилиях. Это документация. Это прочная основа для рефакторингов.
Эксепшн в рантайме всегда лучше внезапного NAN в интерфейсе. Ошибка компилятора - всегда лучше эксепшна в рантайме. А ошибки в коде будут всегда и у всех.
Хех достаточно выкупаю уже 15 лет как :) Я как бы дипломированный Embeded разараб то есть плюсы, ASM, VHDL, но по коммерции я CTO JS/Nodejs, ну и год делфи повеслал до этого.
И нет, мне смешивать не надо, это ЯП с разными соглашениями, паттернами и парадигмами, в том числе в разработке, они должны остаться поляризованными, а не перенимать старческие болезни. И сюрприз, хоть с каким то внятным опытом нету в JS разрабов никаких проблем с неявными типами от слова совсем, по крайней мере частых и которые не решаются за 10 сек. Эти недостатки сугубо ошибки наблюдающего с другой церкви. TS это не документация, это частичное пересечение с темой, вопрос документирования публичных интерфейсов закрывается достаточно простыми инструментами типа JSDOC и главное делаются уже постфактум, что отлично ложится на Ажайл. И его абсолютно достаточно, чтобы вникнуть в интефейс модуля, хотя зачастую и он избыточен и чисто формален, если код написан прозрачно.
Эксепшн в рантайме всегда лучше внезапного NAN в интерфейсе.
Ага точно. Эксепшн он то не внезапный, а вот обычное примитивное значение в качестве результата- вот где неожиданность! )) Ой произошло непойманное исключение... Нажмите, чтобы продолжить ебаться с ловлей эксепшенов от криворукого джуна софтины. Абсолютно не лучше.
Это тесты, которые уже написаны за вас при минимальных усилиях.
Ржу в голосину))) минимальных мать его усилиях )) ахах)) минимальные усилия это не заниматься бредом в ЯП без строгих типов, особенно до написания стабильной версии кода. Тесты все ровно придется писать, если нужно качество и это не MVP ибо TS по факту проверяет только что разраб имеет опыт в JS более полу года и не сидит на героине.
Документация это не зона ответственности TS, как бы вам этого не хотелось, дабы обосновать его практическую пользу. Это сугубо костыль, не более. Как внешний дополнительный инструмент для описания публичных интерфейсов, как d.ts файлы он может быть полезным, как надстройка ЯП, которая якобы что то там фиксит по мнению лагеря свитчеров - нафик не нужна. Если конечно не цель ебаться с тем, с чем ЯП тебя не обязывает, а потом ныть лиду или на стековерфлов, что не собирается, потому что кто то там накосячил, или опенсорс с кривыми тайпингами импортировали в проект.
вопрос документирования публичных интерфейсов закрывается достаточно простыми инструментами типа JSDOC и главное делаются уже постфактум
С тем же TS вам не нужно это делать постфактум. Эта документация УЖЕ написана и синхронизирована с кодобазой (ибо ее часть).
Нажмите, чтобы продолжить ебаться с ловлей эксепшенов от криворукого джуна софтины.. Абсолютно не лучше.
Получить такое сообщение после фатальной поломки состояния приложения/данных в базе и т.п. едва ли будет лучше. Fail-fast как бы.
Тесты все ровно придется писать,
Такие тесты - не нужно. Да и вы бы не стали наверняка)
TS....Это сугубо костыль, не более
Согласен. Но совместимого с легаси на JS выбора пока не так много.
Дык нам олдам ваш тайпскрипт с прочими поделками нафик не нужен, эти проекты плодят свитчеры и для свитчеров.
Мне так лет 10 тому рассказывали, что прототипное наследование - это круто и ООП маст дай. А теперь даже в язык сахар косящий под Java завезли.
Ох неучи...
1) Наследование и осталось прототипным, добавили только семантику, которая делает ровно тоже, что куча библиотек-инициализаторов прототипных цепочек. Библиотек, предоставляющих API ала $.Class(constructor, proto, [staticProto]) были с незапамятных времен, зарезали просто велосипедостроение на эту тему. И ввели ее в основном из-за свитчеров и особенно джавистов. Есть небольшой нюанс в порядке построения цепочки, но он не так важен в большинстве случаев.
2) Прототипное ООП тоже ООП, отсутствие семантической структуры класса никогда не делало JS не ООП, разве только что в умах всяких джавистов. JS объектно-функциональный ЯП и в нем всегда были классы, просто в виде конструкторов, а класс нынче это ровно тот же конструктор.
косящий под Java завезли.
3) Уморительно, что юзание ключевого слова class это закос и именно под джаву )))
Уморительно, что юзание ключевого слова class это закос и именно под джаву
Там одним ключевым словом не обошлось. Таки да, больше всего напоминает джаву. Кому все эту нужно, если не свитчерам?) А теперь это стандарт. Так же и со статической типизацией. Только если остальные всасывают мудрость индустрии за десятки лет и осваивают TS, некоторые другие на форумах будут рассказывать, насколько это все им не нужно, пока это не станет новым стандартом в землях JS.
Там одним ключевым словом не обошлось.
А ну-ка просвети, что ж там поменялось в классах JS. Только TS свой сюда не пихай, это сугубо внешний валидатор, который на ЯП и оптимизирующий компилятор вообще никакого воздействия не оказывает.
Не станет оно стандартом, потому что это поделка для свитчеров, которую кое как продвинули за счет их вливаний в наши ряды и Ангуляра . Для динамического ЯП оно не несет никакого профита и не юзатся оптимизатором от слова вообще. Это просто разносить СПИД по здоровых ЯП. Да, если у тебя в команде половина вчерашних джавистов, то тут особо выхода нет- они на чистом JS и о его соглашениях не бум-бум, но все ровно отношение от этого не поменяется к этой поделке.
Всасывает они только говницо, которое десятки лет мешало жить в других ЯП и стало причиной того, почему пришлось бежать с таких "мудрых" тонущих ЯП свитчиться на "унылый" JS.
что ж там поменялось в классах JS.
Выше писал - сахар добавили. Невозможный для фанатов скрепного JS.
Дальше идет что-то религиозное личное мнение без аргументации, которому мне нечего противопоставить, извините.
Все тобой написанное справедливо, если писать вообще весь код самостоятельно и не использовать либы, что не возможно в 99% продакшн проектов и не так уж редко бывают такие зависимости, что просто охуеть и задебажить будет по факту невозможно, без человека, который строил проект с нуля, и то ему попотеть придется.
А по поводу ужасности js, лично я не согласен, он кажется ебанутым только по началу из за его банального предназначения, управление по факту любыми системами, которыми не всегда очевидно, как управлять. Но эту проблему почти полностью решил тайпскрипт и с учетом того, что зная всего лишь js, который учится примерно за месяц, я могу написать приложение по сути для всего (веб, мобилка, десктоп), язык вообще не выглядит ужасным говном, пусть и теряется некоторая производительность на выходе (которую по факту можно и не терять, заказывая некоторые модули на нативном языке).
IT-юмор
5.6K поста52.4K подписчиков
Правила сообщества
Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору