LINUX.ORG.RU
ФорумTalks

/d/искуссии о javascript и node.js

 ,


1

2

Не раз замечал как местные эксперты ненавидят это, называя js игрушкой, несуществующим языком, и.т.п. Очевидно, что npm ниочень, но жить можно, то есть это не фатально. Больше интересует сам язык. Что там нынче счтитают эталоном динамически типизированного скриптового ЯП, python? Будьте добры, расскажите пожалуйста, почему же так ужасно спроектировн жс и какие вы видите фатальные недостатки языка. Честное слово, при огромном количестве хейтерства на ЛОРе ни разу не видел хоть сколько-нибудь вменяемого обоснования.

Перемещено tailgunner из development

Да тут ненависть не только к языку, сколько к тому, что всяких хипсторы, следуя моде, пихают его во все щели, в и.ч. и туда, где он нахрен ненужен. Кто-то даже файловый менеджер на нём писал.

najlus ★★★★★
()
Ответ на: комментарий от ggrn

Строго говоря, это не проблемы npm. Это проблемы идиотов, которые не могут следовать простому правилу — все свое ношу с собой. Полагаться при сборке на сервер какого-то Васи из этих ваших интернетов — ну просто верх умственной деятельности. ЕМНИП, Майкл Роджерс еще давно в факе на nmpjs говорил об этом, и даже не советовал использовать npm для управления зависимостями при деплое, а только в dev. Т.е. их как-бэ даже об этом предупреждали, поэтому нет ничего удивительного что они огребли. Хотя так или иначе был брошен нехилый камень в огород npm. Но анальную боль он принес только тем, кто не сам не смог о себе позаботиться.

znenyegvkby
()
Ответ на: комментарий от znenyegvkby

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

2 PolarFox тото я и смотрю много пользователей слаквари.

ggrn ★★★★★
()

фатальные недостатки языка

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

special-k ★★★★
()
Ответ на: комментарий от tailgunner

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

gadfly ★★
()
Ответ на: комментарий от PolarFox

Комьюнити в котором «двигайся быстро и ломай вещи» — общепринятая норма.

Это ты с руби явно путаешь. У js-комьюнити другая проблема, туда приходит много народу из других ЯП (статических, типизированных), и часто не потому что хочется, а потому, что жизнь заставила (их статические языки никому не нужны), и начинается утиный синдром во все поля: то не привычно, это не привычно, то нельзя делать, это нельзя делать (в смысле они веб-разработчикам начинают рассказывать, что им, оказывается, нельзя делать), возникают эти упоротые обязательные привязки ко всяким lodash (стандартная библиотека нужна же) и т.д.

special-k ★★★★
()

Ванильный JavaScript ужасен, но с обвесом Lodash, RxJS и прочих jQuery даже доставляет.

GoodPerson
()
> [] == false
true
> ![] == false
true
> [] == ![]
true


Это, в общем-то, все, что нужно знать про JS.
Можно добавить еще

[quote] typeof null[br][/quote]'object'
[quote] null.toString()[br][/quote]TypeError: Cannot read property 'toString' of null

unikoid ★★★
()
Ответ на: комментарий от PolarFox

Вряд ли. Популярность штуковин вроде typoscript, как бы намекает. Да и es6 с его классами, гетерами, сетерами, в общем-то, тоже.

special-k ★★★★
()
Последнее исправление: special-k (всего исправлений: 1)
Ответ на: комментарий от Deleted

тот пост писало днище, которое не знает даже что такое флоат и почему он работает именно так (0.1 + 0.2 не равно 0.3).

Днищем сейчас выставляешь себя ты, ибо не способен отличить логический тип от его бинарного представления (одного из них!). Если бы в жс был фиксированный int, ты тоже бросался бы на людей за наезды на переполнение?

staseg ★★★★★
()

Я тоже раньше считал его детским. Просто он как-то со мной параллельно рос. И я на него не обращал внимания совсем. Потом стал изучать и удивился, во что он превратился. Теперь его полностью достаточно для веба, как со стороны клиента, так и сервера.

th3m3 ★★★★★
()

Недостатки:
1. Необходимость адской лесенки коллбэков (асинхронность!) с одновременным последовательным выполнением (уже /0). Про промисы знаю.
2. Легаси объекты браузера, к которым привязаны практики проектирования.
3. В статьях (и головах веб-макак) путаница языка и фреймворков. Модный js уделал сдохший перл по количеству способов реализации чего-либо

У меня главный вопрос к писателям сервера на js: вы в курсе, что на куче других инструментов это пишется проще и быстрее?

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 2)
Ответ на: комментарий от Shadow

Модный js уделал сдохший перл по количеству способов реализации чего-либо

До руби все равно еще далеко.

на куче других инструментов это пишется проще и быстрее?

Названия инструментов в студию. Прямо сейчас, пока тебе никто случайно не объяснил, что инструменты выбираются исходя из задачи и требований к решению, и серебряной пули здесь быть не может и рассуждать об абстрактном «этом» смысла не имеет в принцип.

unikoid ★★★
()
Ответ на: комментарий от unikoid

Я имел ввиду общие задачи типа десктопного файл-менеджера. Писать такое на ноде может только очень упоротый (TCL/Tk лучше подходят). Как бОльшая часть данных, используемых людьми, не подходят для хранения в не-реляционных СУБД, так и большая часть алгоритмов плохо кодируются такой хохмой, как js.

Ты говоришь, серебряной пули не существует. Но уже в этой теме был «кококо, фронт-бэк на одном языке». Допустим, есть spa. Для поисковика на питоне или пыхе отдельный не spa UI будет менее многословным и лучше читаемым (при условии, что SPA RESTful)

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от staseg

Если бы в жс был фиксированный int, ты тоже бросался бы на людей за наезды на переполнение?

Естественно!

Deleted
()
Ответ на: комментарий от Shadow

вопрос к писателям сервера
задачи типа десктопного файл-менеджера

Ок, ясно@понятно.

Но уже в этой теме был «кококо, фронт-бэк на одном языке»

Не вижу противоречий. Когда «бэк» сводится к тому, чтоб сходить в пару API или сделать один запрос в кэш/БД - нет смысла ради такого нанимать отдельного «бэкендера», с таким даже верстальщик справится.

unikoid ★★★
()
Ответ на: комментарий от unikoid

Только почему-то молодежь на ноде с монгой интернет-торговлю автоматизирует.

Shadow ★★★★★
()

Не умеет в нормальный классический ООП, нет модульности, нет строгой типизации (мне с ней как-то спокойнее), а так вполне неплох, особенно в своей родной нише на сайтиках.

peregrine ★★★★★
()
Ответ на: комментарий от Debasher

Флаги на неизменяемость\незаписываемость полей, не расширяемость объектов есть испокон веков. Вкупе с прокси из es6 иммутабельные типы запиливают как два пальца.

Еще есть const.

Не ясно, что тебе еще надо.

Многопоточность это не о языке, а об окружении. JS никак не отрицает многопоточность своей концепцией (даже напротив), это просто по дефолту все движки однопоточны. И то, есть исключения. Например в браузерном окружении есть webworkers, которые суть отдельные треды.

На ноде же компонуются кластеры.

int64
()

JS-хейтерство сейчас модно. Началось с упорото-лиспонавтского ресурса Hacker News. И далее распространилось по местечковым быдлоилиткам.

Хейтер лает - караван идёт. Всем ES6, посоны.

border-radius
()
Ответ на: комментарий от int64

бла бла

это всё натягивание ежа на пень

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

например, толку то от многопоточности если нет нормальных примитивов для синхронизации и средств коммуникации, например?

толку от возможной иммутабельности если ей буду пользоваться только я?

Debasher ★★★★★
()
Ответ на: бла бла от Debasher

если нет нормальных примитивов для синхронизации и средств коммуникации, например

postMessage/onmessage

border-radius
()
Ответ на: комментарий от int64

ES6-проксяки - это вообще сверхмощная штука. Но смотрящим на фокс как на нетскейп ретроградам этого не понять.

border-radius
()
Ответ на: бла бла от Debasher

нет нормальных примитивов для синхронизации и средств коммуникации

Всё есть. Строки и числа - примитивы. Еще есть бинарные массивы. Ими и синхронизируется всё. API коммуникации тоже есть. Суть в том, что это апи не задача языка, а задача окружения. Им и стандартизуется (как в случае с вебворкерами, за спеку отвечает w3c)

толку от возможной иммутабельности если ей буду пользоваться только я?

Что значит от возможной? Она есть уже очень много лет. Те кому надо ей пользуются, те кому не надо, нет.

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

В том и прелесть JS. В нем можно соорудить удобную для тебя концепцию, не в ущерб всему остальному. Нужна статическая типизация? Используй препроцессоры. Нужна иммутабельность по дефолту, используй в тех же препроцессорах декораторы, или запили отдельный конструктор для иммутабельных типов. Нужно классовое ООП, оно легко реализуется поверх прототипного. Всё о чём любят просить - интерфейсы, множественное наследование, примеси, етк. В js всё можно допилить под себя, если надо, а вот если бы всё о чем ноют было бы по дефолту включено, не факт что это было бы проще выпилить.

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

В общем перегруженность, это всегда зло.

int64
()
Ответ на: комментарий от Debasher

Не NH, а HN - Hacker News, главный лиспанутый рассадник заразы JS-хейтерства.

border-radius
()
Ответ на: комментарий от int64

Что значит от возможной? Она есть уже очень много лет.

Вот здесь следует уточнить, что речь идёт об иммутабельности свойств. Иммутабельность обычных переменных появилась только в ES6.

border-radius
()
Последнее исправление: border-radius (всего исправлений: 1)
Ответ на: комментарий от border-radius

Ну, да. Ранее не было const. Но кому надо было, могли сделать себе отдельный объект, в котором поля бы были неизменяемы. Разве что пришлось бы брать на себя работу сборщика мусора, и выпиливать их вручную.

int64
()
Ответ на: комментарий от int64

нет нормальных примитивов для синхронизации и средств коммуникации

Всё есть. Строки и числа - примитивы.

Что ты несёшь?

В том и прелесть JS.

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

Debasher ★★★★★
()
Ответ на: комментарий от Debasher

Вот как раз из-за такой прелести пусть идёт нахер и терпит унижения

Ты такой странный. Будто язык что-то теряет от твоей к нему ненависти. Теряешь только ты, свои нервные клетки, разве что.

int64
()
Ответ на: комментарий от Debasher

Возможность что-то сделать ничего не стоит если это не является идеоматичным общеиспользоваемым приёмом

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

int64
()
Ответ на: комментарий от int64

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

неправильная аналогия

Debasher ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.