LINUX.ORG.RU
ФорумTalks

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

 


1

2

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

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

★★★★

Ответ на: комментарий от vurdalak

Вообще-то текст такой, что сделали. Но вообще таки да :)

Deleted
()

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

Потому что в других языках в том числе метод удаления первого элемента называется shift?

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

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

Хотя в JS есть какой-то charm. Ничего лучше в плане фигак-фигак и в продакшен я не видел.

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

Не, она уже похуже была. А вот четверку вспоминаю — класс! Там ничего ненужного не было. И настраивалась почти по-человечески (если забыть про сраный реестр).

Eddy_Em ☆☆☆☆☆
()

shift, splice — функции из перла, как уже сказали. Поскольку данные имена перешли во многие другие ЯП это означает, что выбор был успешен. И да, многие ЯП слишком english-фицированны, т.к. обусловлено человеческим фактором (ассоциации работают лучше с похожими словами из родного языка).

И твоя критика не имеет никакого смысла, т.к. ты не лингвист. Был бы лингвистом и знал бы хорошо английский, то мнение было иное. И критика была бы иной.

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

Скорее просто люди не умеют программировать иначе, чем классами

Два чая этому господину.

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

extJS

Ужаснахъ.

Мнение кульхацкеров в enterpriZe никого не интересуют.

В одном проекте тебя напрягли смешать логику server-side контроллера и клиентской вьюшки через задницу (extJS), и об этом надо радоваться на форуме, оправдываясь «мнением очередного тормозного ынтырпрайза»?

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

Все-таки хотят сделать в каком-то виде - http://discuss.rust-lang.org/t/summary-of-efficient-inheritance-rfcs (https://github.com/rust-lang/rfcs/pull/245, например).

Я так понимаю, этого очень хочет, как минимум, команда Servo, для более эффективного представления DOM.

Да и даже сейчас есть #![feature(struct_inherit)], если очень уж надо, хотя эту реализацию потом наверняка уберут.

https://github.com/rust-lang/rust/blob/2f15dcd4d/src/test/run-pass/inherit-st...

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

И твоя критика не имеет никакого смысла

«Вернее кусок г..на, создававшийся в явно удолбаном состоянии сознания?» — это вообще больше похоже на крик базарной бабки, а не на критику.

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

Потому что в других языках в том числе метод удаления первого элемента называется shift?

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

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

Почему симметричные по действию методы должны иметь несимметричные названия? unshift очень понятно и логично.

Reset ★★★★★
()

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

Синхронизации чего с чем?

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

С чего ты взял что «списки» в жс мутабельные? Ня:

var a = [1,2,3,4,5];
delete a[2];
console.log(a); // [1,2,undefined,4,5]

И еще ня:

var a = {a:1, b:2, c:3, d:4, e:5};
delete a.c;
console.log(a); // Object {a=1,b=2,d=4,e=5]
deep-purple ★★★★★
()
Ответ на: комментарий от fang

«Вернее кусок г..на, создававшийся в явно удолбаном состоянии сознания?» — это вообще больше похоже на крик базарной бабки, а не на критику.

Но ведь JS и правда кусок говна, создававшийся в явно удолбаном состоянии сознания.

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

С того, что будь они не мутабельными, вот такого бы не получилось:

var lst = [1,2,3,4,5];
lst.splice(3, 1);
console.log(lst) //[1, 2, 3, 5]

Были бы они не мутабельными, console.log(lst) должен бы был выдать [1, 2, 3, 4, 5]

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

splice возвращает новый массив, _модифицируя_ при этом текущий. Если это не мутабельное поведение, то я китайский летчик.

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

Смотри:

var x = {a: 1, b: 2};
var a = [1,2,x,4];
var b = a.splice(2);
console.log(a, b, b[0] == x); // [1, 2] [Object { a=1, b=2}, 4] true

Возвращает новый и изменяет текущий одновременно. Ну вот, пока я писал и то ж самое написал.

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

Я не вырывал - просто сказал что нет там никаких хитрых выкрутасов, а все просто как топор.

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

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

Но ведь JS и правда кусок говна,

Ну, python, в котором, скажем, deep copy из коробки есть, поприятнее будет. Но, в общем и целом, недостатки жабоскрипта большой боли не причиняют.

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

Ну, python, в котором, скажем, deep copy из коробки есть, поприятнее будет

По сравнению с JS, Python - просто вершина адекватного дизайна.

tailgunner ★★★★★
()

У нас в школе про таких говорят: «Пукан рвет».

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

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

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

зачем эмулировать классы и почему отсутсвие оных минус?

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