Re[11]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.03.17 15:58
Оценка:
Здравствуйте, anonymous, Вы писали:

A>Нет, не при чём, это ж просто инструмент. Когда ты режешь себе палец, это нож виноват или ты чего-то не учёл?


Это очень сложный вопрос — люди склонные к переменам, развитию, ищут причину прежде всего в себе, таким образом учатся, скажут скорее так: "Не учел"
Люди не склонные меняться, развиваться, ищут виноватых вокруг себя и в инструментах: "Ну и что что 90% всех разработчиков знают JS, знамо дело — язык говно и писать на нём невозможно!"
Re[18]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.03.17 16:04
Оценка: :)
Здравствуйте, StandAlone, Вы писали:

I>>Что сказать хотел ?


SA>То, что это ублюдочное, сраное говно, дико похожее на "мракобесный индусский C", которое еще до ES6 повсюду тащили с собой разные ангуляры, стало возможным к реализации только благодаря и посредством ублюдочному JS.

SA>Отсюда чад кутежа, угара и жопотраха при попытке использовать JS для чего-то кроме Hello world.

Я не знаю как интерпретировать твои эмоции, жопотрах и прочие вещи. У нас на проекте никакого кутежа, угара и жопотраха, что не так ?

Если тебе промисы не нравятся, то всё в порядке — это важная идиома. Её устройство никак не говорит и не должно говорить о том, какой у ней профит. Собтсвенно именно потому и есть идиома.
Сконцентрируйся на проблеме и сформулируй её без эмоций и жопотраха.
Re[10]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.03.17 16:06
Оценка:
Здравствуйте, StandAlone, Вы писали:

I>>Промисы — библиотечная фича, а не языковая. До вхождения в стандарт их годами использовали отдельной библиотекой и были ровно те же проблемы.


SA>Золотые слова! И после вхождения в стандарт они несут с собой те же самые проблемы, обусловленные тем же самым языком.

SA>Порождая M в степени N новых проблем, при попытке написать на этом самом языке что-то с M фич и N строк кода.

Разумеется, это не так. Промисы есть и в других языках, или же есть аналогичный механизм. И там ровно те же проблемы, один в один. Забыл поставить return — получаешь непредсказуемое поведение. Поставил лишний return — снова непойми что. Асинхронщина во всех языках вот такая. Исключением являются только те языки, в которых эта модель встроена в сам язык. Я сходу даже не назову такой
Re[10]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.03.17 16:13
Оценка:
Здравствуйте, neFormal, Вы писали:

I>>В разных семействах языков ожидания совершенно различные и это ежу понятно.


F>но если берут фичу из другого языка, то зачем её портить?


А её никто не "брал". Взяли самую простую реализацию, которая только в голову пришла. До 2005го года никто не верил, что на JS можно всерьёз писать код, потому язык и развивался особенным образом.
И вот не только развился, но и убрал всех прямых и косвенных конкурентов.

I>>В динамических языках вообще говоря стараются избегать сокращенных форм записи, поскольку очень легко ошибиться.


F>вообще говоря, это неправда.


Правда.

F>в питоне, руби, эрланге, лиспах... да везде пишут сокращённо, если позволяет синтаксис. в js просто сделано ректально.


Это неверно. Пишут кратко, но не сокращенно. В своём уме никто не будет зиповать код в динамическом языке. Что на питоне, что в лиспе это АДъ и Израиль. Есть исключения, навроде DSL, но это исключения.

I>>Тебе не нравится динамическая типизация а не JS.

F>мне вот нравится динамика, но js — говно.

Здесь большое противоречие.
Re[10]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.03.17 16:14
Оценка: -1
Здравствуйте, neFormal, Вы писали:

F>>>а при чём здесь типизация? проблема же в отсутствии проверки количества переданных аргументов. здесь типов нет.

I>>Подсчет количества аргументов это требование времени выполнения — аргумент функции есть колбек определенного вида. То есть, самая что ни есть типизация.

F>арность — это ещё не типизация.


Это уже типизация, поскольку одновременно мы знаем, что аргумент является функцией.
Re[13]: JS - очень простой язык
От: novitk США  
Дата: 22.03.17 16:20
Оценка:
Здравствуйте, anonymous, Вы писали:

A>Давай возьмём первый Haskell и попробуем предать в map в качестве колбека функцию, принимающую 2 аргумента.

Строго говоря в Хаскелле нет функций принимающих "2 аргумента".

A>А потом Perl, и то же самое. Какой вариант развития событий общепринят теперь?

Perl — плохой язык. Даже хуже чем JS.

A>Отдельно стоит обсудить, что в некоторых языках несколько реализаций map с разным поведением.

В любом "другом" известном мне ЯП семантика map вполне устоявшаяся и означает применение одного параметра к "колбеку" и пришло к нам из глубокой древности математики/лиспа. Семантика самого применения может быть разная, поэтому в случае Хаскеля в твоем случае "2-х аргументов" происходит карринг, а в случае щирпотреба ошибка арности/типизации.

Наркота которая я вижу здесь это "экономить на спичках", вместо нормального решения, как в том же питоне.
Re[2]: JS - очень простой язык
От: TimurSPB Интернет  
Дата: 22.03.17 16:32
Оценка:
>> ['10','10','10','10','10'].map(parseInt)
Легко же. Делаем простой цикл:
var arr=['10', '10', '10']
for( item in arr  ) console.log(parseInt(item))

И получаем 0 1 2
Make flame.politics Great Again!
Re[3]: JS - очень простой язык
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 22.03.17 16:44
Оценка:
Здравствуйте, TimurSPB, Вы писали:

>>> ['10','10','10','10','10'].map(parseInt)

TSP>Легко же. Делаем простой цикл:
TSP>
TSP>var arr=['10', '10', '10']
TSP>for( item in arr  ) console.log(parseInt(item))
TSP>

TSP>И получаем 0 1 2

Потому, что Iterators and Generators



let list = [4, 5, 6];

for (let i in list) {
   console.log(i); // "0", "1", "2",
}

for (let i of list) {
   console.log(i); // "4", "5", "6"
}
и солнце б утром не вставало, когда бы не было меня
Отредактировано 22.03.2017 16:45 Serginio1 . Предыдущая версия .
Re[3]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.03.17 16:56
Оценка:
Здравствуйте, TimurSPB, Вы писали:

>>> ['10','10','10','10','10'].map(parseInt)

TSP>Легко же. Делаем простой цикл:
TSP>
TSP>var arr=['10', '10', '10']
TSP>for( item in arr  ) console.log(parseInt(item))
TSP>

TSP>И получаем 0 1 2

И правильно. in итерирует по ключам. of — по значениям.
Re[11]: JS - очень простой язык
От: Somescout  
Дата: 22.03.17 16:59
Оценка:
Здравствуйте, anonymous, Вы писали:

S>>Соответственно и речи не идёт об "одинаковых именах функций и операторах": я знаю что делает map, я в курсе существования массивов в js и знаю как они записываются. Я ожидаю что array.map(f) применит функцию f к каждому элементу массива. Но, внезапно, в функции вылазит какой-то index, который не упомянут в коде вообще, и передаётся как один из параметров. Неожиданное, и абсолютно неочевидное поведение.

A>Именно об этом и идёт. Ты знаешь, что делает map в языке X, и требуешь, чтобы ровно то же самое он делал в языке Y. Твоё желание совершенно понятно. Но не ясно, почему разработчики библиотеки должны следовать ему.
Что-то вы в демагогию ударились: map в js разве не применяет функцию к каждому элементу массива, что вы говорите "требуешь, чтобы ровно то же самое он делал в языке Y"? Претензия (которую вы, видимо, сейчас в третий раз проигнорируйте) в том, что в эту функцию проскальзывает скрытый параметр, никак не представленный в коде.

A>Где?

А ниже, где вы считаете это всё "фичей".

S>>А язык, который молча позволил совершить эти две ошибки совершенно ни при чём. Собственно смотрите выше мою вкусовщину.

A>Нет, не при чём, это ж просто инструмент. Когда ты режешь себе палец, это нож виноват или ты чего-то не учёл?
Если у ножа нет скользкая ручка, плавно переходящая в лезвие? Виноват я буду лишь в том что вообще взял этот нож.
Но ещё раз:
S>А язык, который молча позволил совершить эти две ошибки совершенно ни при чём?
ARI ARI ARI... Arrivederci!
Re[12]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.03.17 18:12
Оценка:
Здравствуйте, Somescout, Вы писали:

S>>>А язык, который молча позволил совершить эти две ошибки совершенно ни при чём. Собственно смотрите выше мою вкусовщину.

A>>Нет, не при чём, это ж просто инструмент. Когда ты режешь себе палец, это нож виноват или ты чего-то не учёл?
S>Если у ножа нет скользкая ручка, плавно переходящая в лезвие? Виноват я буду лишь в том что вообще взял этот нож.

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

S>Но ещё раз:

S>>А язык, который молча позволил совершить эти две ошибки совершенно ни при чём?

Абсолютно. Навык кодинга на таком языке приходит за то же время, что и с другими языками. Большинство ошибок в JS совсем другого сорта, а именно
Вот мой хитпарад, того с чем чаще сталкиваюсь в чужом коде:

1 потеря this,
2 ошибки мутабельности в замыканиях,
3 ошибки из за скопа,
4 неявное выделение конских объемов памяти,
5 циклические ссылки js-dom,
6 сравнение ссылок и объектов,
7 корявая работа с DOM,
8 ошибки наследования — аналогично языкам с наследованием,
9 ошибки обработки исключений
10 ошибки написания асинхронного кода — аналогично в любом многозадачном коде,
11 ошибки с массивами , в основном кода вместо готовых функций пишутся велосипеды и происходит путаница в индексах/итераторах.

здесь чисто джаваскриптовых ошибок 1, 3, 5, 6 и всё. Всё остальное в полный рост и в питоне, и в С++, и в С#, и в Java. Я думаю и где угодно примерно такой же расклад. Кроме Хаскеля. В ём ошибки компиляции
Re[19]: JS - очень простой язык
От: StandAlone  
Дата: 22.03.17 18:12
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Я не знаю как интерпретировать твои эмоции, жопотрах и прочие вещи.


Это не эмоции, а оценочная констатация качества JS и поделий на нем.

I>У нас на проекте никакого кутежа, угара и жопотраха, что не так ?


Все в порядке, Томми. Все тип-топ. Я просто не совсем уверен в выборе цвета(с)

I>Если тебе промисы не нравятся, то всё в порядке — это важная идиома. Её устройство никак не говорит и не должно говорить о том, какой у ней профит. Собтсвенно именно потому и есть идиома.

I>Сконцентрируйся на проблеме и сформулируй её без эмоций и жопотраха.

Ты просто посмотри, какой мир яркий без наркотиков
как это делается более-менее нормально на более-менее нормальном языке.
https://github.com/Microsoft/referencesource/blob/master/mscorlib/system/threading/Tasks/Task.cs#L4631
Re[20]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.03.17 18:17
Оценка:
Здравствуйте, StandAlone, Вы писали:

I>>Сконцентрируйся на проблеме и сформулируй её без эмоций и жопотраха.


SA>Ты просто посмотри, какой мир яркий без наркотиков

SA>как это делается более-менее нормально на более-менее нормальном языке.
SA>https://github.com/Microsoft/referencesource/blob/master/mscorlib/system/threading/Tasks/Task.cs#L4631

На счет тасков я не соглашусь. Это абстракция того же порядка, что и промисы. И проблемы ровно те же. На SO вопросы по таскам валятся как из ведра, гораздо чаще промисов и это при том, что на JS пишет много больше людей, чем на всём дотнете вместе взятом.

И ты можешь сравнить — один только Task.cs без каментов это гораздо больше строчек, чем вся реализация промисов стандарта А+.
Отредактировано 22.03.2017 18:28 Pauel . Предыдущая версия .
Re[21]: JS - очень простой язык
От: StandAlone  
Дата: 22.03.17 18:27
Оценка: :)
Здравствуйте, Ikemefula, Вы писали:

I>На счет тасков я не соглашусь. Это абстракция того же порядка, что и промисы.




При чем тут промизы?! Это не "абстракция не того же порядка"!
И то, и другое — лишь попытки реализации CSP!
Разного радиуса кривизны.
И в случае с JS этот самый радиус приближается к радиусу Шварцшильда! Чисто потому что сам язык, да-да, сам вот этот вот замечательный язык такой же, спроектирован в виде бутылки Клейна и позволяет появление мертворожденных уродцев типа Q.
В черную дыру которого уже улетел не один миллион человеко-часов дебага и багофикса.
Re[11]: JS - очень простой язык
От: neFormal Россия  
Дата: 22.03.17 18:44
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>>>В разных семействах языков ожидания совершенно различные и это ежу понятно.

F>>но если берут фичу из другого языка, то зачем её портить?
I>А её никто не "брал". Взяли самую простую реализацию, которая только в голову пришла.

так "брал" или не "брал"?
всё-таки её притащили из других языков. когда юзера начали жаловаться, мол, "ачо у нас нет этих фп-шных map-reduce??7"

I>До 2005го года никто не верил, что на JS можно всерьёз писать код, потому язык и развивался особенным образом.

I>И вот не только развился, но и убрал всех прямых и косвенных конкурентов.

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

F>>в питоне, руби, эрланге, лиспах... да везде пишут сокращённо, если позволяет синтаксис. в js просто сделано ректально.

I>Это неверно. Пишут кратко, но не сокращенно. В своём уме никто не будет зиповать код в динамическом языке. Что на питоне, что в лиспе это АДъ и Израиль. Есть исключения, навроде DSL, но это исключения.

раскрой тему. что в твоём понимании "кратко" и что "сокращённо"?

I>>>Тебе не нравится динамическая типизация а не JS.

F>>мне вот нравится динамика, но js — говно.
I>Здесь большое противоречие.

никакого. в остальных языках хотя бы типизация строгая.
...coding for chaos...
Re[21]: JS - очень простой язык
От: StandAlone  
Дата: 22.03.17 18:52
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I> На SO вопросы по таскам валятся как из ведра, гораздо чаще промисов и это при том, что на JS пишет много больше людей, чем на всём дотнете вместе взятом.


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

I>И ты можешь сравнить — один только Task.cs без каментов это гораздо больше строчек, чем вся реализация промисов стандарта А+.


Вон оно как, Михалыч! Вон оно где качество кода-то, в строчках!
Фигня, что и функционала Task имеет на порядок больше, и к нормальной реализации CSP гораздо ближе, и всякую мелочь типа NVI с ко-et-контравариантностью поддерживает, не будем уже о грустном типа статического анализа.
Главное, что наш прекрасный JS позволяет откладывать компактно:
var ref = function (value) {
    if (value && value.then)
        return value;
    return {
        then: function (callback) {
            var result = defer();
            // XXX
            enqueue(function () {
                result.resolve(callback(value));
            });
            return result.promise;
        }
    };
};

Отредактировано 22.03.2017 18:55 StandAlone . Предыдущая версия .
Re[22]: JS - очень простой язык
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 22.03.17 19:00
Оценка: :)
Здравствуйте, StandAlone, Вы писали:

SA>Это потому что тасками пользуются технически грамотные люди и в случае чего смело озвучивают свое справедливое WTF. А жабоскриптеры уже просто привыкли к неевклидовости окружающего мира, и безропотно закручивают спиральные гвозди часовыми отвертками, бхх.


Я тебе уже приводил примеры использования await в JS и TS.
Другое дело нужно обсуждать использовать Js ввиде ассемблера для C#,Ts Dart и прочих типизированных языков
и солнце б утром не вставало, когда бы не было меня
Re[14]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 19:21
Оценка:
Здравствуйте, novitk, Вы писали:

A>>Давай возьмём первый Haskell и попробуем предать в map в качестве колбека функцию, принимающую 2 аргумента.

N>Строго говоря в Хаскелле нет функций принимающих "2 аргумента".

Не важно, функцию, которая возвращает функцию. Ну, например:
map (+) [1,2,3]


A>>А потом Perl, и то же самое. Какой вариант развития событий общепринят теперь?

N>Perl — плохой язык. Даже хуже чем JS.

Не важно, map там работает «ожидаемым» образом.

A>>Отдельно стоит обсудить, что в некоторых языках несколько реализаций map с разным поведением.

N>В любом "другом" известном мне ЯП семантика map вполне устоявшаяся и означает применение одного параметра к "колбеку" и пришло к нам из глубокой древности математики/лиспа.

В JS то же самое, просто не забудь предать функцию, принимающую ровно один аргумент.
Re[11]: JS - очень простой язык
От: neFormal Россия  
Дата: 22.03.17 19:23
Оценка:
Здравствуйте, anonymous, Вы писали:

A>>>В обсуждаемом же примере ошибка ещё в том, что parseInt нельзя использовать без второго параметра,

F>>а интерпретатор позволяет.
A>Как и во многих других языках.

список в студию!

A>>>Итого мы имеем: разработчик не разобрался в инструменте, совершил две ошибки и получил не то, что хотел. Хороший пример, когда танцевать помешали яйца.

F>>ересь, записанная в документации, не перестаёт быть ересью. в данном примере как раз разработчику и надо помнить, что map можно сделать только вприсядку и подпрыгивая.
A>Ты так и не объяснил, в чём подпрыгивание.

в том, что для применения ф-ции к списку нужно её обернуть в другую

A>И почему оно на твой взгляд допустимо везде, кроме JS.


список в студию!
...coding for chaos...
Re[12]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 19:29
Оценка:
Здравствуйте, Somescout, Вы писали:

S>Что-то вы в демагогию ударились: map в js разве не применяет функцию к каждому элементу массива, что вы говорите "требуешь, чтобы ровно то же самое он делал в языке Y"? Претензия (которую вы, видимо, сейчас в третий раз проигнорируйте) в том, что в эту функцию проскальзывает скрытый параметр, никак не представленный в коде.


Он не будет проскальзывать, если ты не будешь подсовывать ему функцию, принимающую более одного параметра. Вот мне не понятно: ты ожидаешь, что map будет последовательно вызывать функцию с одним параметром, и при этом передаёшь в map функцию, принимающую 2 аргумента. Только мне одному кажется, что это не нормально?

S>>>А язык, который молча позволил совершить эти две ошибки совершенно ни при чём. Собственно смотрите выше мою вкусовщину.

A>>Нет, не при чём, это ж просто инструмент. Когда ты режешь себе палец, это нож виноват или ты чего-то не учёл?
S>Если у ножа нет скользкая ручка, плавно переходящая в лезвие? Виноват я буду лишь в том что вообще взял этот нож.

Не надо превращать мою иллюстрацию в аргумент.

S>>А язык, который молча позволил совершить эти две ошибки совершенно ни при чём?


Не при чём. Я ж ответил уже.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.