LINUX.ORG.RU
ФорумTalks

А все таки почему js такая бяка?

 


1

2

Вернее кусок г..на, создававшийся в явно удолбаном состоянии сознания? Ну вот в каком состоянии надо быть, чтобы обозвать метод добавление элемента в начало массива unshift()? И почему удаление элемента из массива делается методом splice()? И какого черта for in умеет обходить свойства объекта (да и то коряво, требуя проверок hasOwnProperty), но не умеет по массиву. И почему в языке нет средств синхронизации, хотя всякие события/коллбэки могут прилетать асинхронно?

И таких «какого черта» - еще вагон и маленькая тележка. Как люди на этом пишут вообще? Вернее даже так: как же надо покорежить себе мозг, чтобы не просто писать на этом, но еще и считать js чуть ли не лучшим инструментом.

★★★★

Вернее даже так: как же надо покорежить себе мозг, чтобы не просто писать на этом, но еще и считать js чуть ли не лучшим инструментом.

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

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

shift — сдвиг массива с удалением первого элемента. Это логично.

Но обозвать добавление элемента unshift'ом можно было только по укурке.

crowbar
()

Вернее даже так: как же надо покорежить себе мозг, чтобы не просто писать на этом, но еще и считать js чуть ли не лучшим инструментом.

Дебилы, сэр.

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

Фанат cmd - звучит примерно так-же, как копрофаг. Я еще понимаю, поспорить насчет bash vs powershell, но cmd..

Nagwal ★★★★
() автор топика

So, yes, it would be great if fixing your browser involved actions that were not semantically equivalent to voodoo. But, on the bright side, things could always be worse. For example, it would definitely be horrible if your browser’s scripting language combined the prototype-based inheritance of Self, a quasi-functional aspect borrowed from LISP, a structured syntax adapted from C, and an aggressively asynchronous I/O model that requires elaborate callback chains that span multiple generations of hard-working Americans.

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

Ну, если авторы js из перла вдохновение черпали, то удивляться конечно нечему. Только вот непонятно - из ненависти ко всему человечеству они это делали или по тупости?

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

Не в смысле троль, а школота.

Нет, он из другого IT, из альтернативной Java-реальности.

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

Ну в браузере то ладно, делать нехрен, приходится на этой каке писать. Только некоторые особо одаренные это на сервак тянут в виде node.js, да и как встраиваемый язык js тоже не редко применяется.

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

Да ладно, на сервак. Тут вон на js десктопные приложения делать пытаются (man atom text editor).

EXL ★★★★★
()

А вот с мастдайкой та же история была: замотали кусок необработанного говна в фантик, типа, вы пока так жрите, а мы со временем добавим внутрь дерьма начинку, а там, глядишь, и глазурью покроем; а если будете хорошо себя вести, то лет через N-ть — хотя, нет, N-ть мало, пусть будет M-ть — вообще заменим дерьмо на мармелад! А как-то прижилось: народ жрет и не жужжит. И даже забыли про обещание внутрь начинку добавить!

Так и с жабоскриптом: склепали впопыхах дерьмишко, позволяющее скрипты в хытымыэль внедрять, да как-то и забили на это.

Eddy_Em ☆☆☆☆☆
()

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

потому что поток 1. с чем ты его синхронизировать собрался?

waker ★★★★★
()

А все таки почему js такая бяка?

Потому что на его разработку Айком была потрачена всего неделька. Типичный «slap shit together and deploy».

EXL ★★★★★
()

Как люди на этом пишут вообще?

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

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

Вот этот момент я так до конца и не раскурил. Там есть куча асинхронных событий. Т.е. допустим у меня какой-то объект может модифицировать внтрутреннее состояние в зависимости от действий пользователя и при получении события из вебсокета. У меня есть гарантия что оно не сколлапсирует в какой-то момент?

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

Или мне надо руками (или какими-то сторонними приблудами) городить очереди событий на каждый чих?

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

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

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

Ну, с окнами все не так страшно, в итоге мармелад потихоньку вытесняет говно. Времена 98-й уже давно миновали. А вот с яваскриптом все еще печальнее, уже es6 на подходе, но проблем он особо не поправит.

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

У меня есть гарантия что оно не сколлапсирует в какой-то момент?

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

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

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

можешь хотеть и делать что угодно.

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

не принимай это так близко к сердцу.

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

пока программисты (не путать с хелловордистами) пишут такое

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

crowbar
()

Читая, не покидало ощущение дежавю, как будто это копипаста откуда-то.

Ну вот в каком состоянии надо быть, чтобы обозвать метод добавление элемента в начало массива unshift()?

Помимо perl также используется в php и ruby.

И почему удаление элемента из массива делается методом splice()?

Потому что универсальный метод. Кроме perl также есть в php и, внезапно, в c#. И вообще, сращивание массива (array splice) означает добавление новых элементов из списка, возможно, с замещением элементов, уже хранящихся в массиве.

Забыл ещё традиционное «нет классов и наследования».

Как люди на этом пишут вообще?

Лично я считаю, что JavaScript — не самый сложный, неудобный или некрасивый язык. Меня, например, больше напрягает длинное ключевое слово function, чем неитерируемость массива поэлементно. Предпочитаю функциональный вызов _.each() или аналог, хотя всякое бывает. Недавно пришлось совместно итерировать пару массивов через var i = 0; while (true) { if ... else break; } Оказалось более красивым, чем какие-либо другие. И вообще, многих путает сишный синтаксис, как будто это императивный язык, хотя на javascript намного удобнее писать в функциональном стиле. Фреймворки типа AngularJS этому только помогают.

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

Сочувствую. Большего говна чем ext-gwt в частности и gwt вообще я для построению морды не видел. Да и отдельно extjs тоже далеко не мармелад.

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

А также любой кульхацкер можно оправдать свою собственную профнепригодность.

Предложите свой язык для браузеров.

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

http://twinlogix.com/en/blog/javascript-multi-threading-and-extjs-4

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

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

Для кого-то может и подойдёт, но получается довольно громоздко и часто скручивает руки. По-моему, лучше делать GUI, используя традиционный HTML (или через препроцессор типа Slim/HAML), сдобренный CSS- и JS-фреймворками. Получается намного более гибко и удобно.

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

Времена 98-й уже давно миновали

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

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от static_lab

Помимо perl также используется в php и ruby.

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

Потому что универсальный метод...

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

Забыл ещё традиционное «нет классов и наследования».

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

Лично я считаю, что JavaScript — не самый сложный, неудобный или некрасивый язык.

Да понятно что можно и хуже отыскать, один plsql с abap-ом чего стоят.

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

Ай, слющай, ты уже все уши своим тырпрайзом прожужжал. На чем там только морды не пишут. Я в свое время даже на голых сервлетах с out.println('<html>here</bljat>') образчики наблюдал. Так что не показатель.

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

Только кому нужны «народные умельцы», когда есть промышленные инфраструктуры?

Считаете связки типа Bootstrap/AngularJS или даже БЭМ-тулкит неинтерпрайзными? Согласен, большую часть интерфейса делать, возможно, дольше, но в сложных веб-приложениях часто возникают нестандартные элементы, обусловленные дизайном или требованиями. ExtJS вполне можно использовать, если есть на то основания. Главное — помнить об ограничениях.

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

plsql

Что это такое? Чем ЭТО отличается от «PL/SQL» (TM)???

А про якобы «глюкавые» «плохие» ExtJS и GWT/GXT расскажите Сименсу, Айрбасу, Локхиду, Боингу, Нортропу, Сити банку, Сони, IBM, HP и другим.

А умничать будете на собеседовании.

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

количество статей и постов на форумах о том, как сэмулировать классы на яваскрипте - говорит о том, что отсутствие этой функциональности - скорее баг, нежели фича

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

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

Так не о том речь, а о том что вменяемость языка и его использование в enterprize — вещи ортогональные.

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

А про якобы «глюкавые» «плохие» ExtJS и GWT/GXT расскажите Сименсу, Айрбасу, Локхиду, Боингу, Нортропу, Сити банку, Сони, IBM, HP и другим.

Если на говно налепить кучу красивых шильдиков под лозунгом our partners, оно говном быть не перестанет. А что у перечисленных компаний есть бюджеты держать раздутый штат разработчиков, поддерживающих это говно, чтоб не развалилось по дороге - то это проблемы менеджмента этих компаний. Флаг им в руки и кризис на встречу.

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

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

Да я и не спорю что возможно без классов программировать. Это просто один из инструментов. Довольно удобный и 99% разработчиков привычный. Поэтому я и говорю, что его отсутствие это скорее баг, нежели фича. С классами кстати в es6 вроде ситуацию поправят.

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

Я смотрю, этот ваш энтерпрайз хуже чем армия, ей-богу.

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

•Не говорите мне, что «хорошие разработчики могут писать хороший код на любом языке», или что «плохие разработчики что-то там ещё». Это ничего не значит. Хороший плотник может забить гвоздь камнем или молотком, но где вы видели плотников забивающих что-либо камнями?

chkalov
()

Думаю, это произошло из тех времён, когда js не умел массивы, а только стек.

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

Я бОльшую часть такого не напрограммирую, а тупо на css опишу.

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