Re: JS - очень простой язык
От: neFormal Россия  
Дата: 21.03.17 15:09
Оценка: 5 (3) +3 :))) :))) :))) :))) :))) :))
Здравствуйте, StandAlone, Вы писали:

SA>Замечательный язык, не правда ли?! простой, выразительный, элегантный и эффективно решающий типичные проблемы.


да норм. то ли дело вот это:
> [1,2,3].map(parseInt)
< [1, NaN, NaN]

> ['10','10','10','10','10'].map(parseInt)
< [10, NaN, 2, 3, 4]
...coding for chaos...
Re[2]: JS - очень простой язык
От: StandAlone  
Дата: 21.03.17 14:57
Оценка: :))) :))) :)))
Здравствуйте, vsb, Вы писали:

vsb>А можно раскрыть мысль? Внимательно прочитал код, по-моему он и вправду очень простой.


https://www.youtube.com/watch?v=3Sd4drXMrZo
Отредактировано 21.03.2017 18:47 StandAlone . Предыдущая версия .
Re[2]: JS - очень простой язык
От: IID Россия  
Дата: 21.03.17 16:16
Оценка: 2 (2) +2
Здравствуйте, vdimas, Вы писали:

V>С++

V>
V>doSomething()
V>    .then(doSomethingElseInAnyCase)
V>    .next(doSomethingElseOnSuccess)
V>    .recovery(doSomethingElseOnError);
V>


С++
std::unique_ptr<ColorARGB [] > renderBuffer(new ColorARGB[gifIn->SWidth * gifIn->SHeight]);

забыли выделенное — получили RCE (Remote Code Execution). Баг CVE-2017-0476 мартовского бюллетеня безопасности Android.
kalsarikännit
Re: JS - очень простой язык
От: vsb Казахстан  
Дата: 21.03.17 14:47
Оценка: +4
А можно раскрыть мысль? Внимательно прочитал код, по-моему он и вправду очень простой. Практически первый курс университета, разве что функции высшего порядка могут изучать чуть позже.
Re[5]: JS - очень простой язык
От: StandAlone  
Дата: 21.03.17 18:53
Оценка: +1 :)))
Здравствуйте, anonymous, Вы писали:

A>Тогда не понятно, что эти примеры должны были продемонстрировать.


Я, конечно, не уверен, но могу предположить, что коллега демонстрировал свое восхищение потрясающей стройностью и непревзойденной продуманностью архитектуры нашего замечательного 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;
        }
    };
};
Отредактировано 21.03.2017 19:06 StandAlone . Предыдущая версия .
Re[6]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 06:04
Оценка: 3 (1) +1 -1
Здравствуйте, Somescout, Вы писали:

A>>Тогда не понятно, что эти примеры должны были продемонстрировать.

S>Как бы сказать: без документации понять почему так происходит не просто.

Это странный аргумент из разряда «настоящие программисты не читают мануалы».

S>По-хорошему, при нормальном дизайне языка такие грабли должны быть очевидны — либо map должна требовать точного количества аргументов у функции, либо аргументы должны передаваться явно, что-то вроде такого:

S>
S>array.Map( (value,index) => ParseInt(value,index) );
S>

S>А js ради экономии нескольких символов позволяет создать подобную ситуацию.

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

Правильный путь для приведённого выше примера не отличается от того, что предложил ты:
array.map(function (e) { return parseInt(e) });

а для продвинутых можно и так:
[1, 2, 3].map(Number);
Re[17]: JS - очень простой язык
От: StandAlone  
Дата: 22.03.17 14:47
Оценка: +3
Здравствуйте, Ikemefula, Вы писали:

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


То, что это ублюдочное, сраное говно, дико похожее на "мракобесный индусский C", которое еще до ES6 повсюду тащили с собой разные ангуляры, стало возможным к реализации только благодаря и посредством ублюдочному JS.
Отсюда чад кутежа, угара и жопотраха при попытке использовать JS для чего-то кроме Hello world.
Re[3]: JS - очень простой язык
От: Ведмедь Россия  
Дата: 21.03.17 16:31
Оценка: +2
Здравствуйте, rFLY, Вы писали:

vsb>>А можно раскрыть мысль?

FLY>+1 я тоже что-то не понял. Примеры передачи анонимных функций, что они должны показать?

Я думаю это про типизацию. По крайней мере это примеры "случайных" ошибок, которые во многих языках ловятся на уровне проверки синтаксиса. Для JS в этом случаевсе варианты валидны даже если вместо результата выполнения функции передаешь саму функцию.
Да пребудет с тобой Великий Джа
Re[3]: JS - очень простой язык
От: Evgeny.Panasyuk Россия  
Дата: 21.03.17 22:34
Оценка: +2
Здравствуйте, IID, Вы писали:

IID>С++

IID>std::unique_ptr<ColorARGB [] > renderBuffer(new ColorARGB[gifIn->SWidth * gifIn->SHeight]);
IID>забыли выделенное

Ошибка в том что использовали new, да ещё и неумеючи, вместо например std::make_unique, std::vector или вовсе image/view.
Ошибка в том что не протестировали — valgrind выдал бы mismatched delete на первом же прогоне
Re[12]: JS - очень простой язык
От: neFormal Россия  
Дата: 22.03.17 19:42
Оценка: +2
Здравствуйте, Ikemefula, Вы писали:

I>Это очень сложный вопрос — люди склонные к переменам, развитию, ищут причину прежде всего в себе, таким образом учатся, скажут скорее так: "Не учел"

I>Люди не склонные меняться, развиваться, ищут виноватых вокруг себя и в инструментах:

ой не могу! жаваскрипт-боги объясняют плебеям суть их поведения

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

I>"Ну и что что 90% всех разработчиков знают JS, знамо дело — язык говно и писать на нём невозможно!"


разве что 90% разработчиков на JS его знают.
и это ещё оптимистичная оценка.
...coding for chaos...
Re[5]: JS - очень простой язык
От: neFormal Россия  
Дата: 23.03.17 11:59
Оценка: +2
Здравствуйте, anonymous, Вы писали:

G>>>Ничего особенного если знаешь сигнатуры map и parseint.

F>>да, главное привыкнуть к жжению. потом и перестаёшь замечать.
A>Жжение-то вызвано отходом от единственно верного шаблона. У многих с этим нет проблем — нет и жжения.

эти люди допускают насилие над логикой и не могут удержаться от употребления наркотиков.
не будь как они.
...coding for chaos...
Re[3]: JS - очень простой язык
От: fmiracle  
Дата: 21.03.17 18:59
Оценка: 1 (1)
Здравствуйте, rFLY, Вы писали:

vsb>>А можно раскрыть мысль?

FLY>+1 я тоже что-то не понял. Примеры передачи анонимных функций, что они должны показать?

Это про промисы. "Неочевидные вещи для начинающих". Кажется, прямо копия из какой-то статьи в инете. Вроде где-то я такое видел уже.
Promise — это объект-оболочка над асинхронным выполнением. Позволяет запустить асинхронную операцию и позволяет связывать несколько операций в цепочки или параллельные вычисления. Важный момент — промис не имеет отдельного метода запуска, он просто создается и дальше останется только ждать результата. Потому отложенный запуск — через создающие функции.

// вот два метода, запускающие что-то асинхронно.
let f1 = () => new Promise(...);
let f2 = () => new Promise(...);

// если надо запустить их в параллель:
f1();
f2();

// а если надо последовательно:
f1().then( f2 ); // после окончания первого промиса будет выполнена f2, получен новый промис и запущен.

// отсюда частый косяк людей, которые делают связку, не изучив документацию или учебник пишут так:
f1().then( f2() ); // упс, так это же получился запуск двух промисов в параллель!
Re[3]: JS - очень простой язык
От: vdimas Россия  
Дата: 21.03.17 22:14
Оценка: +1
Здравствуйте, IID, Вы писали:

IID>std::unique_ptr<ColorARGB [] > renderBuffer(new ColorARGB[gifIn->SWidth * gifIn->SHeight]);


А зачем тут массив выделяется по new?
Дичь какая-то.

Ага:
/jni/GifTranscoder.cpp

Всё ясно, все свободны. ))
В плюсовом коде никто так не делает.
А если надо было выделить буфер байт для отправки в Джаву, то выделять надо было через сишные malloc/free, бо класс unique_ptr позволяет задавать свой deleter:
template<class T, class Deleter = std::default_delete<T>> 
class unique_ptr;


=============
А вообще да, меня в С++ раздражают некоторые вещи, унаследованные из С. Вот как раз автоматическое приведение массива к указателю на первый его элемент.
Re[9]: JS - очень простой язык
От: Somescout  
Дата: 22.03.17 15:24
Оценка: +1
Здравствуйте, anonymous, Вы писали:

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


Извините, тут небольшая описка — не интерпретировать запись функции, а интерпретировать выражение (statement).

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

S>>Я в курсе. Поэтому (в частности) и считаю что JS — говно.

A>Вкусовщина. Нет смысла обсуждать.
Ну да, поэтому я и написал: я считаю. А ниже вы свою вкусовщину лепите:

A>Но тем не менее это фича. И люди, пропагандирующие единственно верный способ типизации или описания функций выглядят странно.

A>Вкусовщина. Нет смысла обсуждать.

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


А язык, который молча позволил совершить эти две ошибки совершенно ни при чём. Собственно смотрите выше мою вкусовщину.
ARI ARI ARI... Arrivederci!
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:14
Оценка: -1
Здравствуйте, neFormal, Вы писали:

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

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

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


Это уже типизация, поскольку одновременно мы знаем, что аргумент является функцией.
Re[21]: JS - очень простой язык
От: StandAlone  
Дата: 22.03.17 18:27
Оценка: :)
Здравствуйте, Ikemefula, Вы писали:

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




При чем тут промизы?! Это не "абстракция не того же порядка"!
И то, и другое — лишь попытки реализации CSP!
Разного радиуса кривизны.
И в случае с JS этот самый радиус приближается к радиусу Шварцшильда! Чисто потому что сам язык, да-да, сам вот этот вот замечательный язык такой же, спроектирован в виде бутылки Клейна и позволяет появление мертворожденных уродцев типа Q.
В черную дыру которого уже улетел не один миллион человеко-часов дебага и багофикса.
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[17]: JS - очень простой язык
От: neFormal Россия  
Дата: 23.03.17 08:59
Оценка: +1
Здравствуйте, anonymous, Вы писали:

A>>>def foo (*args):

F>>а вот и он!
F>>я так понимаю, смутило всё таки слово "явный". так вот, это явное объявление, что тут будет список.
A>И что? Где явность в foo(bar)? Ты уверен что эта функция принимает именно столько параметров и именно в такой последовательности?

я даже оставил нужный кусок. но ты не осилил понять

F>>в ф-цию для map не передавать аргументы? что-то твои отговорки совсем нелепыми стали.

A>Почему бы и нет? Может, эта функция обязана работать со специальной переменной, а не с аргументом?

опять в наркоманию свалился. прекращай употребление.
...coding for chaos...
Re[3]: JS - очень простой язык
От: neFormal Россия  
Дата: 23.03.17 10:56
Оценка: +1
Здравствуйте, gandjustas, Вы писали:

G>Ничего особенного если знаешь сигнатуры map и parseint.


да, главное привыкнуть к жжению. потом и перестаёшь замечать.
...coding for chaos...
Re[15]: JS - очень простой язык
От: novitk США  
Дата: 23.03.17 14:59
Оценка: +1
Здравствуйте, anonymous, Вы писали:

A>Не важно, функцию, которая возвращает функцию. Ну, например:

A>map (+) [1,2,3]
Что например? Это абсолютно нормальный код с очевидным результатом, например:
#zipWith ($) (map (+) [1,2,3]) [1, 2, 3]
[2,4,6]

Эквивалент на JS порождает очередной wtf:
#[10, 20, 30].map(function(a, b){ return a + b; })
[ 10, 21, 32 ]

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

A>Не важно, map там работает «ожидаемым» образом.
В perl-е все работает не "ожидаемым" способом поэтому его просто надо забыть, как страшный сон, что собственно и произошло.

A>В JS то же самое, просто не забудь предать функцию, принимающую ровно один аргумент.

A если забыл, то сам себе злой буратин! That's the spirit!
Re[17]: JS - очень простой язык
От: Somescout  
Дата: 24.03.17 02:36
Оценка: +1
Здравствуйте, anonymous, Вы писали:

S>>1) Если язык не способен контролировать элементарные ошибки, грош цена такому языку.

A>Ну сколько можно твои вкусы обсуждать?
Вы имеете в виду ваши вкусы? Потому что ничего разумного, подтверждающего вашу точку зрения, кроме "это нормально", вы не привели.

A>>>Я не переходил на аналогии. Я использовал иллюстрацию. Мой тезис находится непосредственно перед ней.

S>>В таком случае я проиллюстрировал другую точку зрения. И мой тезис вы знаете.
A>>>Ты игнорируешь тезис и пытаешься развить аналогию.
S>>Ваш тезис "язык идеален, а тот кто не согласен не прав, ибо пункт 1". Нет, я с таким тезисом (особенно в отношении js) не согласен, что и выразил.
A>Если ты возомнил себя мастером демагогии, я тебя разочарую.
Да куда мне до вас. А всё же объясните: почему вам позволено "иллюстрировать", а мне нет? Просто (не)интересно.

A>Это не надо называть. Надо приводить контраргументы — в этом суть дискуссии. Пока их не видно.

С вашей стороны — безусловно. Я привожу примеры почему подобное плохо, вы отвечаете только "это нормально", "язык такой" — ну просто замечательные аргументы, особенно если гонять их по кругу.
ARI ARI ARI... Arrivederci!
Re[6]: JS - очень простой язык
От: Ops Россия  
Дата: 25.03.17 02:36
Оценка: +1
Здравствуйте, Somescout, Вы писали:

S>Как бы сказать: без документации понять почему так происходит не просто. То есть когда о такое уже спотыкался, всё понятно, но в первый раз(ы) — WTF?


Вот еще:
> const arr = new Array(4);
[undefined, undefined, undefined, undefined]

Вроде нормально? А если так?
> arr.map((elem, index) => index);
[undefined, undefined, undefined, undefined]
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[25]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.03.17 12:13
Оценка: +1
Здравствуйте, neFormal, Вы писали:

I>>Терпимость языка далеко не самый важный фактор. Флеш был актуален до тех пор, пока HTML5 не вышел. После этого он вылез

F>флэш был актуален до выпила nsplugins. html5 тут ни при чём, особенно в игрушках. там-то он облажался.

До прихода html5 флеш был практически везде, как минимум в виде баннера


I>>Я сказал, что "питон отмер", а не "заменили питон на JS". Изначально было три языка — питон, vbs и js. Во всех продуктах, юзеры, которые не программисты, выбрали разновидность vbs. Само как то вышло. Потому я взял и вырезал питон, никто не всплакнул и ни одного тикета в суппорт не пришло. Количество юзеров было довольно большое, все заказчики — гиганты индустрии.


F>понятно. тогда питон мало кто использовал.


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

F>>>можно и так, но можно и просто примеров.

I>>Это в основном рассказы знакомых в геймдеве и мой собственный опыт. Чего я сам писал, аддоны, из последнего: http://www.oolite.org/ Были и другие вещи, на них я ссылок не могу найти.

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

F>но в скором времени загадят всё. особенно на бэкенде. на фронте что-то я сомневаюсь.

Для AI перформанса много не нужно, убер-фичи не сильно актуальны. Скажем, тот же Quake C или как там скрипт в старых квейках назывался, можно спокойно заменить на JS.

Вот например Duke Nukem http://wiki.eduke32.com/wiki/How_to_manually_reload
Зачем писать на этом уродце если есть возможность встроить JS тот же ?
Re[14]: JS - очень простой язык
От: vdimas Россия  
Дата: 27.03.17 15:26
Оценка: :)
Здравствуйте, Ikemefula, Вы писали:

I>Как думаешь, кто даёт взятку людям, что бы они тащили JS во все области ?


Сейчас, наоборот, Гугл тратить десятки лямов в год, чтобы убежать от JS.


I>Все такие умные, у всех JS — говно, и каким то чудом это говно проникает вообще везди и очень успешно


Это круги по воде от шумных судебных процессов начала 2000-х годов.


I>У тебя есть объяснение?


Потому что JS ничей.
У людей есть реальный страх подвязаться на чью-то "личную" технологию.

Вон, даже взять Sun и Джаву, было объявлено, что это якобы общий стандарт, и?
Да аж нихрена не общий. За попытку развивать Джаву задолбали судами MS.

Теперь MS стала умнее, вместо развития JS выпустила "надстройку" над ним — TS. ))
JS - очень простой язык
От: StandAlone  
Дата: 21.03.17 14:40
Оценка:
Джентльмены, дико извиняюсь за опоздание к срачу. Поскольку он уже стремительно набирает критическую массу и скоро сколлапсирует, возьму на себя смелость воспользоваться замечательной цитатой для создания отдельного топика.
Итак, два примера доказательства subj!:

1) 
doSomething().then(function () {
  return doSomethingElse();
});

2)
doSomething().then(function () {
  doSomethingElse();
});

3)
doSomething().then(doSomethingElse());

4)
doSomething().then(doSomethingElse);



success()
.then(function() { console.log('1+'); return fail(); }, function () {console.log('1-'); })
.then(function() { console.log('2+'); }, function () {console.log('2-'); return success();})
.then(function() { console.log('3+'); }, function () {console.log('3-'); })
.done();


Замечательный язык, не правда ли?! простой, выразительный, элегантный и эффективно решающий типичные проблемы.
Re: JS - очень простой язык
От: vdimas Россия  
Дата: 21.03.17 16:07
Оценка:
Здравствуйте, StandAlone, Вы писали:

SA>
SA>doSomething().then(doSomethingElse);
SA>


С++
doSomething()
    .then(doSomethingElseInAnyCase)
    .next(doSomethingElseOnSuccess)
    .recovery(doSomethingElseOnError);



SA>Замечательный язык, не правда ли?


Фигня полная. ))
Re[2]: JS - очень простой язык
От: rFLY  
Дата: 21.03.17 16:28
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>А можно раскрыть мысль?

+1 я тоже что-то не понял. Примеры передачи анонимных функций, что они должны показать?
Re[2]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 21.03.17 16:34
Оценка:
Здравствуйте, neFormal, Вы писали:

F>да норм. то ли дело вот это:

F>
>> [1,2,3].map(parseInt)
F>< [1, NaN, NaN]
F>


map передаёт в колбек 3 параметра, parseInt принимает два, из которых второй — основание системы счисления. Итого:
parseInt(1, 0);   # зависит о реализации, скорее всего 1 по основанию 10
parseInt(2, 1);   # 2 - не число по основанию 1
parseInt(3, 2);   # 3 - не число по основанию 2


F>
>> ['10','10','10','10','10'].map(parseInt)
F>< [10, NaN, 2, 3, 4]
F>


Аналогично.
Re[4]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 21.03.17 16:42
Оценка:
Здравствуйте, Ведмедь, Вы писали:

В>Я думаю это про типизацию. По крайней мере это примеры "случайных" ошибок, которые во многих языках ловятся на уровне проверки синтаксиса. Для JS в этом случаевсе варианты валидны даже если вместо результата выполнения функции передаешь саму функцию.


Ну, это старый срач: статическая против динамической. Ничего нового JS тут не превносит.
Re[4]: JS - очень простой язык
От: vsb Казахстан  
Дата: 21.03.17 16:42
Оценка:
Здравствуйте, Ведмедь, Вы писали:

vsb>>>А можно раскрыть мысль?

FLY>>+1 я тоже что-то не понял. Примеры передачи анонимных функций, что они должны показать?

В>Я думаю это про типизацию. По крайней мере это примеры "случайных" ошибок, которые во многих языках ловятся на уровне проверки синтаксиса. Для JS в этом случаевсе варианты валидны даже если вместо результата выполнения функции передаешь саму функцию.


Нетипизированных языков как бы половина, если не больше. И, судя по популярности, поклонников у них хватает. PHP, Python, Ruby, Perl, Lua, Lisp, это только из тех, которые на слуху. Понятно, что это несёт свои минусы, но и плюсы это тоже свои имеет, иначе ими бы просто никто не пользовался.

Кроме того в случае с JS есть как минимум два простых варианта добавить типы: TypeScript и Flow, если уж очень хочется.
Re[4]: JS - очень простой язык
От: rFLY  
Дата: 21.03.17 17:07
Оценка:
Здравствуйте, Ведмедь, Вы писали:

В>Я думаю это про типизацию.

Тут без реализации функции then сложно что-то сказать. Она может легко обрабатывать то, что возвращают (или не возвращают) колбэки. На андефайн у нее может быть своя логика, на значение другая, на функцию третья.
Re[5]: JS - очень простой язык
От: StandAlone  
Дата: 21.03.17 18:36
Оценка:
Здравствуйте, rFLY, Вы писали:

В>>Я думаю это про типизацию.

FLY>Тут без реализации функции then сложно что-то сказать.



Вы, поди, господа, из Си плюсплюс шарп ово Урюпинска?...
— Эх, бросить бы всё и уехать в Урюпинск!..
Re[3]: JS - очень простой язык
От: neFormal Россия  
Дата: 21.03.17 18:40
Оценка:
Здравствуйте, anonymous, Вы писали:

A>map передаёт в колбек 3 параметра, parseInt принимает два, из которых второй — основание системы счисления. Итого:


спасибо, я в курсе этих нюансов кривого языка.
...coding for chaos...
Re[4]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 21.03.17 18:48
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>map передаёт в колбек 3 параметра, parseInt принимает два, из которых второй — основание системы счисления. Итого:

F>спасибо, я в курсе этих нюансов кривого языка.

Тогда не понятно, что эти примеры должны были продемонстрировать.
Re[6]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 21.03.17 19:05
Оценка:
Здравствуйте, StandAlone, Вы писали:

SA>Я, конечно, не уверен, но могу предположить, что коллега демонстрировал свое восхищение потрясающей стройностью и непревзойденной продуманностью архитектуры нашего замечательного JS:

SA>Image: 1452745558498.png

Логичный вопрос тогда: как будет единственно правильно?
Re[6]: JS - очень простой язык
От: rFLY  
Дата: 21.03.17 19:06
Оценка:
Здравствуйте, StandAlone, Вы писали:

SA>Вы, поди, господа, из Си [s]пл

Вас смущает передача функцифункций по ссылкам или делегатов?
А в каком языке по Вашему мнению это сделано правильно? Или правильно было вообще не делать?
Re: JS - очень простой язык
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 21.03.17 19:07
Оценка:
Здравствуйте, StandAlone, Вы писали:


SA>Джентльмены, дико извиняюсь за опоздание к срачу. Поскольку он уже стремительно набирает критическую массу и скоро сколлапсирует, возьму на себя смелость воспользоваться замечательной цитатой для создания отдельного топика.

SA>Итак, два примера доказательства subj!:

SA>[java]

SA>1)
SA>doSomething().then(function () {
SA> return doSomethingElse();
SA>});


ну он позволяет и так await ECMAScript 2017 Draft (ECMA-262)

await doSomething();
return doSomethingElse();


При этом TS позволяет это делать и для ES3/ES5

TypeScript 2.1: async/await for ES3/ES5

function delay(ms) {
    return new Promise(function (resolve) {
        setTimeout(resolve, ms);
    });
}
async function asyncAwait() {
    console.log("Knock, knock!");
    await delay(1000);
    console.log("Who's there?");
    await delay(1000);
    console.log("async/await!");
}
и солнце б утром не вставало, когда бы не было меня
Отредактировано 21.03.2017 21:22 Serginio1 . Предыдущая версия .
Re[4]: JS - очень простой язык
От: StandAlone  
Дата: 21.03.17 19:15
Оценка:
Здравствуйте, fmiracle, Вы писали:

F> Кажется, прямо копия из какой-то статьи в инете.

F> Кажется


F>... Позволяет запустить асинхронную операцию и позволяет связывать несколько операций в цепочки или параллельные вычисления. Важный момент — промис не имеет отдельного метода запуска, он просто создается и дальше останется только ждать результата. Потому отложенный запуск — через создающие функции.


О да, дорогие мои маленькие любители наркотиков! Мы тут все еще говорим про JS
*кот_ржет.гиф*
Re[4]: JS - очень простой язык
От: rFLY  
Дата: 21.03.17 19:30
Оценка:
Здравствуйте, fmiracle, Вы писали:

F>Это про промисы.

Понятно, не сталкивался. Поэтому из спора самовыпиливаюсь. Решил, что это самописный метод и даже в голову не пришло, что при всем желании его нельзя было бы назвать зарезервированым словом.
Все, поплыл, уже языки путать начал ) Пойду лучше спать
Отредактировано 21.03.2017 19:32 rFLY . Предыдущая версия .
Re[5]: JS - очень простой язык
От: neFormal Россия  
Дата: 21.03.17 20:41
Оценка:
Здравствуйте, anonymous, Вы писали:

A>>>map передаёт в колбек 3 параметра, parseInt принимает два, из которых второй — основание системы счисления. Итого:

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

продемонстрировать то, как простые, очевидные и общепринятые вещи можно сделать через жопу ещё проще и очевидней.
...coding for chaos...
Re[6]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 21.03.17 21:28
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>Тогда не понятно, что эти примеры должны были продемонстрировать.

F>продемонстрировать то, как простые, очевидные и общепринятые вещи можно сделать через жопу ещё проще и очевидней.

А можно определение этих «простых, очевидных и общепринятых вещей» с подтверждающими ссылками?
Re[5]: JS - очень простой язык
От: Somescout  
Дата: 22.03.17 02:42
Оценка:
Здравствуйте, anonymous, Вы писали:

A>>>map передаёт в колбек 3 параметра, parseInt принимает два, из которых второй — основание системы счисления. Итого:

F>>спасибо, я в курсе этих нюансов кривого языка.

A>Тогда не понятно, что эти примеры должны были продемонстрировать.


Как бы сказать: без документации понять почему так происходит не просто. То есть когда о такое уже спотыкался, всё понятно, но в первый раз(ы) — WTF?
По-хорошему, при нормальном дизайне языка такие грабли должны быть очевидны — либо map должна требовать точного количества аргументов у функции, либо аргументы должны передаваться явно, что-то вроде такого:
array.Map( (value,index) => ParseInt(value,index) );


А js ради экономии нескольких символов позволяет создать подобную ситуацию.
ARI ARI ARI... Arrivederci!
Re[6]: JS - очень простой язык
От: TK Лес кывт.рф
Дата: 22.03.17 05:26
Оценка:
Здравствуйте, Somescout, Вы писали:

S>По-хорошему, при нормальном дизайне языка такие грабли должны быть очевидны — либо map должна требовать точного количества аргументов у функции, либо аргументы должны передаваться явно, что-то вроде такого:


С чего это вдруг? Если функции нужен первый параметр, то какой смысл перечислять все остальные если оно все равно не используется?
Можно считать, что в общем виде любая функция принимает на вход бесконечное число параметров. просто, не все они значимые.

S>
S>array.Map( (value,index) => ParseInt(value,index) );
S>

S>А js ради экономии нескольких символов позволяет создать подобную ситуацию.

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

A>>>Тогда не понятно, что эти примеры должны были продемонстрировать.

F>>продемонстрировать то, как простые, очевидные и общепринятые вещи можно сделать через жопу ещё проще и очевидней.
A>А можно определение этих «простых, очевидных и общепринятых вещей» с подтверждающими ссылками?

выбирай:
http://zvon.org/other/haskell/Outputprelude/map_f.html
https://docs.python.org/2/library/functions.html#map
http://maximomussini.com/posts/ruby-to_proc/
https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node90.html
...coding for chaos...
Re[8]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 06:28
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>А можно определение этих «простых, очевидных и общепринятых вещей» с подтверждающими ссылками?

F>выбирай:
F>http://zvon.org/other/haskell/Outputprelude/map_f.html
F>https://docs.python.org/2/library/functions.html#map
F>http://maximomussini.com/posts/ruby-to_proc/
F>https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node90.html

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

A>Почему это вдруг стало «простыми, очевидными и общепринятыми вещами»? Я просил определение, ссылки на исследования.


выбирай:
https://ru.wiktionary.org/wiki/%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B9
https://ru.wiktionary.org/wiki/%D0%BE%D1%87%D0%B5%D0%B2%D0%B8%D0%B4%D0%BD%D1%8B%D0%B9
https://ru.wiktionary.org/wiki/%D0%BE%D0%B1%D1%89%D0%B5%D0%BF%D1%80%D0%B8%D0%BD%D1%8F%D1%82%D1%8B%D0%B9

A>Пока я вижу «мне так привычнее и переучиваться не желаю».


зачем переучиваться на ущербный язык, который создаёт проблемы там, где у других их нет?
и я не говорил про привычку, я говорил про общепринятые подходы. и подтвердил ссылками.
пока что от тебя кроме "почитайте мануал про то, как это делать вприсядку, но не подпрыгивая" ничего другого не было.
...coding for chaos...
Re[10]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 08:19
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>Почему это вдруг стало «простыми, очевидными и общепринятыми вещами»? Я просил определение, ссылки на исследования.

F>выбирай:
F>https://ru.wiktionary.org/wiki/%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B9
F>https://ru.wiktionary.org/wiki/%D0%BE%D1%87%D0%B5%D0%B2%D0%B8%D0%B4%D0%BD%D1%8B%D0%B9
F>https://ru.wiktionary.org/wiki/%D0%BE%D0%B1%D1%89%D0%B5%D0%BF%D1%80%D0%B8%D0%BD%D1%8F%D1%82%D1%8B%D0%B9

Я так и думал.

A>>Пока я вижу «мне так привычнее и переучиваться не желаю».

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

Не переучивайся, тебя не заставляют. Но и не ной тогда.

F>и я не говорил про привычку, я говорил про общепринятые подходы. и подтвердил ссылками.


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

F>пока что от тебя кроме "почитайте мануал про то, как это делать вприсядку, но не подпрыгивая" ничего другого не было.


Я ничего такого не писал. Это ты почему-то решил, что аналогичный используемым в других языках способ array.map(function (e) { return parseInt(e) }) — это приседания и подпрыгивания.
Re[11]: JS - очень простой язык
От: neFormal Россия  
Дата: 22.03.17 08:55
Оценка:
Здравствуйте, anonymous, Вы писали:

A>>>Пока я вижу «мне так привычнее и переучиваться не желаю».

F>>зачем переучиваться на ущербный язык, который создаёт проблемы там, где у других их нет?
A>Не переучивайся, тебя не заставляют. Но и не ной тогда.

ооо, в интернете кто-то объявил монополию на посты и запрещает мне говорить правду!

F>>и я не говорил про привычку, я говорил про общепринятые подходы. и подтвердил ссылками.

A>Нет, ты привёл пару ссылок и заявил, что именно это и есть общепринятый подход, без каких либо доказательств.

там четыре популярных языка с реализацией map. из них три — динамические.
это и называется "общепринятым". определение слова прочитаешь выше по треду.

F>>пока что от тебя кроме "почитайте мануал про то, как это делать вприсядку, но не подпрыгивая" ничего другого не было.

A>Я ничего такого не писал.

ну да, конечно:

Это странный аргумент из разряда «настоящие программисты не читают мануалы».

http://rsdn.org/forum/flame.comp/6732658.1
Автор: anonymous
Дата: 22.03.17


скажи теперь, что твои слова неправильно поняли.

A>Это ты почему-то решил, что аналогичный используемым в других языках способ array.map(function (e) { return parseInt(e) }) — это приседания и подпрыгивания.


это не аналогично исходному примеру.
ты бы ещё циклы привёл в качестве примера. в результате делают же то же самое.
...coding for chaos...
Re: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.03.17 09:16
Оценка:
Здравствуйте, StandAlone, Вы писали:

SA>Джентльмены, дико извиняюсь за опоздание к срачу. Поскольку он уже стремительно набирает критическую массу и скоро сколлапсирует, возьму на себя смелость воспользоваться замечательной цитатой для создания отдельного топика.

SA>Итак, два примера доказательства subj!:

...

SA>Замечательный язык, не правда ли?! простой, выразительный, элегантный и эффективно решающий типичные проблемы.


Ты привел пример проблем динамической типизации вообще + особенности конкретной библиотеки. При чем здесь JavaScript ?
Re[6]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.03.17 09:19
Оценка:
Здравствуйте, StandAlone, Вы писали:

A>>Тогда не понятно, что эти примеры должны были продемонстрировать.


SA>Я, конечно, не уверен, но могу предположить, что коллега демонстрировал свое восхищение потря


А при чем здесь архитектура JS? динамическая типизация + особенности конкретной библиотеки
Re[12]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 09:47
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>Не переучивайся, тебя не заставляют. Но и не ной тогда.

F>ооо, в интернете кто-то объявил монополию на посты и запрещает мне говорить правду!

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

F>>>и я не говорил про привычку, я говорил про общепринятые подходы. и подтвердил ссылками.

A>>Нет, ты привёл пару ссылок и заявил, что именно это и есть общепринятый подход, без каких либо доказательств.
F>там четыре популярных языка с реализацией map. из них три — динамические. это и называется "общепринятым". определение слова прочитаешь выше по треду.

Давай возьмём первый Haskell и попробуем предать в map в качестве колбека функцию, принимающую 2 аргумента. А потом Perl, и то же самое. Какой вариант развития событий общепринят теперь? Отдельно стоит обсудить, что в некоторых языках несколько реализаций map с разным поведением.

F>>>пока что от тебя кроме "почитайте мануал про то, как это делать вприсядку, но не подпрыгивая" ничего другого не было.

A>>Я ничего такого не писал.
F>Это странный аргумент из разряда «настоящие программисты не читают мануалы».
F>http://rsdn.org/forum/flame.comp/6732658.1
Автор: anonymous
Дата: 22.03.17

F>скажи теперь, что твои слова неправильно поняли.

Нет, их явно в интересах демагогии неправильно представили. Что в мануале написано про приседания и подпрыгивания — твои измышления.

A>>Это ты почему-то решил, что аналогичный используемым в других языках способ array.map(function (e) { return parseInt(e) }) — это приседания и подпрыгивания.

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

Исходный пример вообще неверен. Я говорю о других языках.
Re[7]: JS - очень простой язык
От: neFormal Россия  
Дата: 22.03.17 09:49
Оценка:
Здравствуйте, Ikemefula, Вы писали:

A>>>Тогда не понятно, что эти примеры должны были продемонстрировать.

SA>>Я, конечно, не уверен, но могу предположить, что коллега демонстрировал свое восхищение потря
I>А при чем здесь архитектура JS? динамическая типизация + особенности конкретной библиотеки

а при чём здесь типизация? проблема же в отсутствии проверки количества переданных аргументов. здесь типов нет.
...coding for chaos...
Re[13]: JS - очень простой язык
От: neFormal Россия  
Дата: 22.03.17 09:54
Оценка:
Здравствуйте, anonymous, Вы писали:

A>Правду — говори. Но ты ноешь, что инструмент позволил тебе выстрелить себе в ногу, хотя раньше, когда ты направлял ствол в ногу и нажимал курок, такого не случалось.


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

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


давай. тащи сюда пример на перле! сравним с другими динамиками

A>Нет, их явно в интересах демагогии неправильно представили. Что в мануале написано про приседания и подпрыгивания — твои измышления.


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

A>>>Это ты почему-то решил, что аналогичный используемым в других языках способ array.map(function (e) { return parseInt(e) }) — это приседания и подпрыгивания.

F>>это не аналогично исходному примеру. ты бы ещё циклы привёл в качестве примера. в результате делают же то же самое.
A>Исходный пример вообще неверен. Я говорю о других языках.

меняешь тему? ооок.
...coding for chaos...
Re[14]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 09:59
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>Правду — говори. Но ты ноешь, что инструмент позволил тебе выстрелить себе в ногу, хотя раньше, когда ты направлял ствол в ногу и нажимал курок, такого не случалось.

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

Нет, ныть — приводить надуманные примеры и выдавать их фатальные недостатки.

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

F>давай. тащи сюда пример на перле! сравним с другими динамиками

Я тебе предложил уже сравнить две реализации. Как успехи?

A>>Нет, их явно в интересах демагогии неправильно представили. Что в мануале написано про приседания и подпрыгивания — твои измышления.

F>это объективный факт. потому что можно обойти эту проблему, например, через лямбду. через короткий синтаксис, а не то, что ты приводишь.

Я и привёл лямбду.

A>>>>Это ты почему-то решил, что аналогичный используемым в других языках способ array.map(function (e) { return parseInt(e) }) — это приседания и подпрыгивания.

F>>>это не аналогично исходному примеру. ты бы ещё циклы привёл в качестве примера. в результате делают же то же самое.
A>>Исходный пример вообще неверен. Я говорю о других языках.
F>меняешь тему? ооок.

Нет. Тема у нас о том, что в JS есть фатальный недостаток по сравнению с другими языками.
Re[8]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 10:01
Оценка:
Здравствуйте, neFormal, Вы писали:

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


А как правильно? Проверять или не проверять?
Re[7]: JS - очень простой язык
От: StandAlone  
Дата: 22.03.17 10:05
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>А при чем здесь архитектура JS? динамическая типизация + особенности конкретной библиотеки

Чего-чего особенности????
Re[15]: JS - очень простой язык
От: StandAlone  
Дата: 22.03.17 10:18
Оценка:
Здравствуйте, anonymous, Вы писали:

A>Нет. Тема у нас о том, что в JS есть фатальный недостаток по сравнению с другими языками.


Нет, это у вас какой-то свой междусобойчик организовался.
А тема вообще-то о том, какой JS простой, стильный, клевый и позволяющий делать крутые штуки. Я тут уже реализацию then приводил, но ее что-то никто не заметил
Попробую еще раз.
Вот вам, например! Красота-то какая, ляпота! Где-нибудь еще такое видели? И в отладке, и в поддержке
var when = function (value, _callback, _errback) {
    var result = defer();
    var done;

    _callback = _callback || function (value) {
        return value;
    };
    _errback = _errback || function (reason) {
        return reject(reason);
    };

    // XXX
    var callback = function (value) {
        try {
            return _callback(value);
        } catch (reason) {
            return reject(reason);
        }
    };
    var errback = function (reason) {
        try {
            return _errback(reason);
        } catch (reason) {
            return reject(reason);
        }
    };

    enqueue(function () {
        ref(value).then(function (value) {
            if (done)
                return;
            done = true;
            result.resolve(ref(value).then(callback, errback));
        }, function (reason) {
            if (done)
                return;
            done = true;
            result.resolve(errback(reason));
        });
    });

    return result.promise;
};
Re[16]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 10:28
Оценка:
Здравствуйте, StandAlone, Вы писали:

SA>Вот вам, например! Красота-то какая, ляпота! Где-нибудь еще такое видели? И в отладке, и в поддержке


Что я должен там увидеть?
Re[15]: JS - очень простой язык
От: neFormal Россия  
Дата: 22.03.17 10:36
Оценка:
Здравствуйте, anonymous, Вы писали:

A>Нет, ныть — приводить надуманные примеры и выдавать их фатальные недостатки.


рекомендую обратиться к толковому словарю. а то выдумываешь терминологию прямо на ходу.

A>Я тебе предложил уже сравнить две реализации. Как успехи?


понятно, набросил и в кусты.

A>>>Нет, их явно в интересах демагогии неправильно представили. Что в мануале написано про приседания и подпрыгивания — твои измышления.

F>>это объективный факт. потому что можно обойти эту проблему, например, через лямбду. через короткий синтаксис, а не то, что ты приводишь.
A>Я и привёл лямбду.

и не осилил дочитать строчку.

A>Нет. Тема у нас о том, что в JS есть фатальный недостаток по сравнению с другими языками.


он весь — один сплошной фатальный недостаток.
...coding for chaos...
Re[9]: JS - очень простой язык
От: neFormal Россия  
Дата: 22.03.17 10:39
Оценка:
Здравствуйте, anonymous, Вы писали:

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

A>А как правильно? Проверять или не проверять?

зависит от целей.
с какой-то стороны язык должен ограничивать. а если этого не делать, выбирать вариант "абы как", то получается js.
так и до брейнфака недалеко.
...coding for chaos...
Re[16]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 10:40
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>Я тебе предложил уже сравнить две реализации. Как успехи?

F>понятно, набросил и в кусты.

Что-то не так с результатами эксперимента?

F>>>это объективный факт. потому что можно обойти эту проблему, например, через лямбду. через короткий синтаксис, а не то, что ты приводишь.

A>>Я и привёл лямбду.
F>и не осилил дочитать строчку.

Это несущественно.

A>>Нет. Тема у нас о том, что в JS есть фатальный недостаток по сравнению с другими языками.

F>он весь — один сплошной фатальный недостаток.

Да, и этот недостаток в том, что он тебе не нравится.
Re[10]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 10:42
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>А как правильно? Проверять или не проверять?

F>зависит от целей.

Нет-нет, должен быть один «простой, очевидный и общепринятый» способ. Так какой?

F>с какой-то стороны язык должен ограничивать.


Кому должен?
Re[7]: JS - очень простой язык
От: Somescout  
Дата: 22.03.17 10:53
Оценка:
Здравствуйте, TK, Вы писали:

TK>С чего это вдруг? Если функции нужен первый параметр, то какой смысл перечислять все остальные если оно все равно не используется?

TK>Можно считать, что в общем виде любая функция принимает на вход бесконечное число параметров. просто, не все они значимые.

Ну и получаем проблему, приведённую neFormal.

S>>
S>>array.Map( (value,index) => ParseInt(value,index) );
S>>

S>>А js ради экономии нескольких символов позволяет создать подобную ситуацию.

TK>так исходную проблему то не решили... тогда уж надо требовать точного соответствия имен аргументов у функции


Решили — мы вызываем именно ту перегрузку функции, которая нам нужна (Я в курсе, что в js синтаксически нет перегрузок).
ARI ARI ARI... Arrivederci!
Отредактировано 22.03.2017 11:40 Somescout . Предыдущая версия .
Re[17]: JS - очень простой язык
От: neFormal Россия  
Дата: 22.03.17 11:11
Оценка:
Здравствуйте, anonymous, Вы писали:

A>>>Я тебе предложил уже сравнить две реализации. Как успехи?

F>>понятно, набросил и в кусты.
A>Что-то не так с результатами эксперимента?

ты их не привёл. хотя и сослался.
я вот привёл примеры того, чего знаю. что происходит в перле — я без понятия.

A>>>Нет. Тема у нас о том, что в JS есть фатальный недостаток по сравнению с другими языками.

F>>он весь — один сплошной фатальный недостаток.
A>Да, и этот недостаток в том, что он тебе не нравится.

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

A>>>А как правильно? Проверять или не проверять?

F>>зависит от целей.
A>Нет-нет, должен быть один «простой, очевидный и общепринятый» способ. Так какой?

в контексте js должен быть ещё хуже, чем они сделали. жалкоскриптеры должны страдать.

F>>с какой-то стороны язык должен ограничивать.

A>Кому должен?

программисту. иначе нет разницы от написания кода на брейнфаке, например.
...coding for chaos...
Re[18]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 11:17
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>Что-то не так с результатами эксперимента?

F>ты их не привёл. хотя и сослался.

Ты ведь утверждаешь, что map в этих экспериментах будет вести себя каким-то общепринятым способом. Значит ты проводил эксперименты и можешь ответить на мой вопрос хотя бы про Haskell.
Re[16]: JS - очень простой язык
От: std.denis Россия  
Дата: 22.03.17 11:22
Оценка:
SA>Вот вам, например! Красота-то какая, ляпота! Где-нибудь еще такое видели? И в отладке, и в поддержке

Да, в STL например
Re[12]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 11:23
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>>>А как правильно? Проверять или не проверять?

F>>>зависит от целей.
A>>Нет-нет, должен быть один «простой, очевидный и общепринятый» способ. Так какой?
F>в контексте js должен быть ещё хуже, чем они сделали. жалкоскриптеры должны страдать.

Ты не ответил на вопрос.

F>>>с какой-то стороны язык должен ограничивать.

A>>Кому должен?
F>программисту. иначе нет разницы от написания кода на брейнфаке, например.

В чего ты взял, что в Brainfuck нет ограничений? Попытка смешать в кучу эзотерический синтаксис и ограничения — демагогия. И нет, не должен тебе ничего произвольно взятый ЯП.
Re[13]: JS - очень простой язык
От: neFormal Россия  
Дата: 22.03.17 11:54
Оценка:
Здравствуйте, anonymous, Вы писали:

A>>>Нет-нет, должен быть один «простой, очевидный и общепринятый» способ. Так какой?

F>>в контексте js должен быть ещё хуже, чем они сделали. жалкоскриптеры должны страдать.
A>Ты не ответил на вопрос.

я не знаю, как сделать ещё хуже. по работе у меня требуют обратного.

F>>>>с какой-то стороны язык должен ограничивать.

A>>>Кому должен?
F>>программисту. иначе нет разницы от написания кода на брейнфаке, например.
A>В чего ты взял, что в Brainfuck нет ограничений? Попытка смешать в кучу эзотерический синтаксис и ограничения — демагогия. И нет, не должен тебе ничего произвольно взятый ЯП.

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

A>>>Что-то не так с результатами эксперимента?

F>>ты их не привёл. хотя и сослался.
A>Ты ведь утверждаешь, что map в этих экспериментах будет вести себя каким-то общепринятым способом. Значит ты проводил эксперименты и можешь ответить на мой вопрос хотя бы про Haskell.

у тебя эксперимент другой. перевод темы у тебя в очередной раз не получился.
...coding for chaos...
Re[14]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 12:07
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>>>Нет-нет, должен быть один «простой, очевидный и общепринятый» способ. Так какой?

F>я не знаю, как сделать ещё хуже. по работе у меня требуют обратного.

Я спросил: какой из способов «простой, очевидный и общепринятый» — проверять количество переданных аргументов в функцию или нет?

F>>>>>с какой-то стороны язык должен ограничивать.

F>и таки язык должен. если не может, я его выкидываю. и так делают все нормальные программисты испокон веков.

То есть программисты, использующие ЯП с динамической типизацией — ненормальные. С нестрогой типизацией — ненормальные. С объявлением переменных не в начале блока инструкций — ненормальные. С возможностью выхода за пределы выделенной памяти — ненормальные. И так далее. На чём ты пишешь, кстати?
Re[20]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 12:09
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>Ты ведь утверждаешь, что map в этих экспериментах будет вести себя каким-то общепринятым способом. Значит ты проводил эксперименты и можешь ответить на мой вопрос хотя бы про Haskell.

F>у тебя эксперимент другой. перевод темы у тебя в очередной раз не получился.

Такой же, с которого началась эта ветка. Но понятно, озвучить результат ты стесняешься.
Re[15]: JS - очень простой язык
От: neFormal Россия  
Дата: 22.03.17 12:40
Оценка:
Здравствуйте, anonymous, Вы писали:

A>>>>>Нет-нет, должен быть один «простой, очевидный и общепринятый» способ. Так какой?

F>>я не знаю, как сделать ещё хуже. по работе у меня требуют обратного.
A>Я спросил: какой из способов «простой, очевидный и общепринятый» — проверять количество переданных аргументов в функцию или нет?

простой — не проверять
очевидный — проверять
общепринятый — проверять

A>То есть программисты, использующие ЯП с динамической типизацией — ненормальные. С нестрогой типизацией — ненормальные. С объявлением переменных не в начале блока инструкций — ненормальные. С возможностью выхода за пределы выделенной памяти — ненормальные. И так далее.


ты сейчас всех ненормальными назвал. ты, не я.

A>На чём ты пишешь, кстати?


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

A>>Я спросил: какой из способов «простой, очевидный и общепринятый» — проверять количество переданных аргументов в функцию или нет?

F>простой — не проверять
F>очевидный — проверять
F>общепринятый — проверять

Закроем пока глаза на спорность этих утверждений. И как это совместить?

A>>То есть программисты, использующие ЯП с динамической типизацией — ненормальные. С нестрогой типизацией — ненормальные. С объявлением переменных не в начале блока инструкций — ненормальные. С возможностью выхода за пределы выделенной памяти — ненормальные. И так далее.

F>ты сейчас всех ненормальными назвал. ты, не я.

Ты же сказал, что нормальные программисты на таком не пишут:

и таки язык должен [ограничивать]. если не может, я его выкидываю. и так делают все нормальные программисты испокон веков.

Только не говори, что «ограничивать» имеет какое-то другое значение.

A>>На чём ты пишешь, кстати?

F>на всём, что под руки попадётся.

Ну, озвучь уж, чем нормальные программисты пользуются.
Re[7]: JS - очень простой язык
От: Somescout  
Дата: 22.03.17 12:57
Оценка:
Здравствуйте, anonymous, Вы писали:

A>Это странный аргумент из разряда «настоящие программисты не читают мануалы».

Языки строятся на некотором ожидаемом поведении, если можно интерпретировать запись функции, но для понимания её поведения нужно лезть в мануал — то это не ожидаемое поведение и потенциальный источник ошибок.
Конкретно в этом случае ожидается применение функции parseInt к элементам коллекции. Вместо этого функция применяется не только к элементам коллекции, но и к нескольким дополнительным скрытым параметрам (мы нигде в записи не видим существование индекса) — в результате на выходе появляются не ожидаемые данные.

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

Я в курсе. Поэтому (в частности) и считаю что JS — говно.

A>Это как динамическая типизация — нужно следить самому за тем, что ты делаешь, хотя можно встать в позу и заявить, что «ради экономии пары символов» не ввели статическую.

А можно встать в позу и орать "Это не баг, это фича!!!".

A>Правильный путь для приведённого выше примера не отличается от того, что предложил ты:

A>
A>array.map(function (e) { return parseInt(e) });
A>

Это то же самое что и у меня, просто записанное по другому. Но речь слегка не об этом — я рассматривал именно существование неправильного способа использования и определение своей анонимной функции не отменяет наличие кривого map'а.
ARI ARI ARI... Arrivederci!
Re[17]: JS - очень простой язык
От: neFormal Россия  
Дата: 22.03.17 13:12
Оценка:
Здравствуйте, anonymous, Вы писали:

A>>>Я спросил: какой из способов «простой, очевидный и общепринятый» — проверять количество переданных аргументов в функцию или нет?

F>>простой — не проверять
F>>очевидный — проверять
F>>общепринятый — проверять
A>Закроем пока глаза на спорность этих утверждений. И как это совместить?

поднапрячься и сделать ограничения. да, это требует усилий.

A>>>То есть программисты, использующие ЯП с динамической типизацией — ненормальные. С нестрогой типизацией — ненормальные. С объявлением переменных не в начале блока инструкций — ненормальные. С возможностью выхода за пределы выделенной памяти — ненормальные. И так далее.

F>>ты сейчас всех ненормальными назвал. ты, не я.
A>Ты же сказал, что нормальные программисты на таком не пишут:
A>

и таки язык должен [ограничивать]. если не может, я его выкидываю. и так делают все нормальные программисты испокон веков.

A>Только не говори, что «ограничивать» имеет какое-то другое значение.

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

A>>>На чём ты пишешь, кстати?

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

не js
...coding for chaos...
Re[8]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.03.17 13:21
Оценка:
Здравствуйте, Somescout, Вы писали:

S>Здравствуйте, anonymous, Вы писали:


A>>Это странный аргумент из разряда «настоящие программисты не читают мануалы».

S>Языки строятся на некотором ожидаемом поведении, если можно интерпретировать запись функции, но для понимания её поведения нужно лезть в мануал — то это не ожидаемое поведение и потенциальный источник ошибок.

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

S>Конкретно в этом случае ожидается применение функции parseInt к элементам коллекции. Вместо этого функция применяется не только к элементам коллекции, но и к нескольким дополнительным скрытым параметрам (мы нигде в записи не видим существование индекса) — в результате на выходе появляются не ожидаемые данные.


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

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

S>Я в курсе. Поэтому (в частности) и считаю что JS — говно.

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

A>>Правильный путь для приведённого выше примера не отличается от того, что предложил ты:

A>>
A>>array.map(function (e) { return parseInt(e) });
A>>

S>Это то же самое что и у меня, просто записанное по другому. Но речь слегка не об этом — я рассматривал именно существование неправильного способа использования и определение своей анонимной функции не отменяет наличие кривого map'а.

В каждом языке существуют и кривые способы использования фич, и неявные эффекты. К одним ты просто привык. К тем что не привык — те вызывают боль. Такая жизнь.
Re[8]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 13:33
Оценка:
Здравствуйте, Somescout, Вы писали:

A>>Это странный аргумент из разряда «настоящие программисты не читают мануалы».

S>Языки строятся на некотором ожидаемом поведении, если можно интерпретировать запись функции, но для понимания её поведения нужно лезть в мануал — то это не ожидаемое поведение и потенциальный источник ошибок.

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

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

S>Я в курсе. Поэтому (в частности) и считаю что JS — говно.

Вкусовщина. Нет смысла обсуждать.

A>>Это как динамическая типизация — нужно следить самому за тем, что ты делаешь, хотя можно встать в позу и заявить, что «ради экономии пары символов» не ввели статическую.

S>А можно встать в позу и орать "Это не баг, это фича!!!".

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

A>>Правильный путь для приведённого выше примера не отличается от того, что предложил ты:

A>>
A>>array.map(function (e) { return parseInt(e) });
A>>

S>Это то же самое что и у меня, просто записанное по другому. Но речь слегка не об этом — я рассматривал именно существование неправильного способа использования и определение своей анонимной функции не отменяет наличие кривого map'а.

Что угодно можно использовать неправильно — тут вообще нечего обсуждать. В обсуждаемом же примере ошибка ещё в том, что parseInt нельзя использовать без второго параметра, поскольку поведение в этом случае не определено и зависит от реализации. Итого мы имеем: разработчик не разобрался в инструменте, совершил две ошибки и получил не то, что хотел. Хороший пример, когда танцевать помешали яйца.
Re: JS - очень простой язык
От: rameel https://github.com/rsdn/CodeJam
Дата: 22.03.17 13:35
Оценка:
Здравствуйте, StandAlone, Вы писали:

SA>Замечательный язык, не правда ли?! простой, выразительный, элегантный и эффективно решающий типичные проблемы.


The year is 2017. Desktop applications are written in JavaScript. Your CPU is busy rendering a blinking cursor.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[8]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.03.17 13:37
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>>>Тогда не понятно, что эти примеры должны были продемонстрировать.

SA>>>Я, конечно, не уверен, но могу предположить, что коллега демонстрировал свое восхищение потря
I>>А при чем здесь архитектура JS? динамическая типизация + особенности конкретной библиотеки

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


Подсчет количества аргументов это требование времени выполнения — аргумент функции есть колбек определенного вида. То есть, самая что ни есть типизация.
Re[18]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 13:38
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>>>Я спросил: какой из способов «простой, очевидный и общепринятый» — проверять количество переданных аргументов в функцию или нет?

F>>>простой — не проверять
F>>>очевидный — проверять
F>>>общепринятый — проверять
A>>Закроем пока глаза на спорность этих утверждений. И как это совместить?
F>поднапрячься и сделать ограничения. да, это требует усилий.

Ну так, кто поднапрягся? Где параметры одновременно проверяются и не проверяются?

A>>>>То есть программисты, использующие ЯП с динамической типизацией — ненормальные. С нестрогой типизацией — ненормальные. С объявлением переменных не в начале блока инструкций — ненормальные. С возможностью выхода за пределы выделенной памяти — ненормальные. И так далее.

A>>Ты же сказал, что нормальные программисты на таком не пишут:
F>со всем списком — да, не пишут. с нестрогой типизацией стараются не трогать. в остальных случаях с ограничениями всё нормально.

То есть таки какое-то своё определение слова «ограничивать». Ну, поделись.

A>>Ну, озвучь уж, чем нормальные программисты пользуются.

F>не js

Чего стесняться-то?
Re[19]: JS - очень простой язык
От: neFormal Россия  
Дата: 22.03.17 13:49
Оценка:
Здравствуйте, anonymous, Вы писали:

F>>поднапрячься и сделать ограничения. да, это требует усилий.

A>Ну так, кто поднапрягся? Где параметры одновременно проверяются и не проверяются?

какая-то наркомания уже пошла.
...coding for chaos...
Re[8]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 22.03.17 13:49
Оценка:
Здравствуйте, StandAlone, Вы писали:

SA>Здравствуйте, Ikemefula, Вы писали:


I>>А при чем здесь архитектура JS? динамическая типизация + особенности конкретной библиотеки

SA> Чего-чего особенности????

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

SA>Нет, это у вас какой-то свой междусобойчик организовался.

SA>А тема вообще-то о том, какой JS простой, стильный, клевый и позволяющий делать крутые штуки. Я тут уже реализацию then приводил, но ее что-то никто не заметил
SA>Попробую еще раз.
SA>Вот вам, например! Красота-то какая, ляпота! Где-нибудь еще такое видели? И в отладке, и в поддержке

Что сказать хотел ?
Re[9]: JS - очень простой язык
От: neFormal Россия  
Дата: 22.03.17 13:52
Оценка:
Здравствуйте, Ikemefula, Вы писали:

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

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

арность — это ещё не типизация.
...coding for chaos...
Re[9]: JS - очень простой язык
От: neFormal Россия  
Дата: 22.03.17 13:57
Оценка:
Здравствуйте, Ikemefula, Вы писали:

S>>Языки строятся на некотором ожидаемом поведении, если можно интерпретировать запись функции, но для понимания её поведения нужно лезть в мануал — то это не ожидаемое поведение и потенциальный источник ошибок.

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

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

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


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

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


мне вот нравится динамика, но js — говно.
...coding for chaos...
Re[9]: JS - очень простой язык
От: neFormal Россия  
Дата: 22.03.17 14:11
Оценка:
Здравствуйте, anonymous, Вы писали:

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


а интерпретатор позволяет.

A>поскольку поведение в этом случае не определено и зависит от реализации.


JS — очень простой язык

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


ересь, записанная в документации, не перестаёт быть ересью.
в данном примере как раз разработчику и надо помнить, что map можно сделать только вприсядку и подпрыгивая.
...coding for chaos...
Re[9]: JS - очень простой язык
От: StandAlone  
Дата: 22.03.17 14:45
Оценка:
Здравствуйте, Ikemefula, Вы писали:

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


Золотые слова! И после вхождения в стандарт они несут с собой те же самые проблемы, обусловленные тем же самым языком.
Порождая M в степени N новых проблем, при попытке написать на этом самом языке что-то с M фич и N строк кода.
Re[10]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 15:23
Оценка:
Здравствуйте, neFormal, Вы писали:

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

F>а интерпретатор позволяет.

Как и во многих других языках.

A>>поскольку поведение в этом случае не определено и зависит от реализации.

F>JS — очень простой язык

Я этого не утверждал. Более того, на мой взгляд, JS довольно сложный язык из-за прототипов.

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

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

Ты так и не объяснил, в чём подпрыгивание. И почему оно на твой взгляд допустимо везде, кроме JS.
Re[20]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 15:24
Оценка:
Здравствуйте, neFormal, Вы писали:

F>>>поднапрячься и сделать ограничения. да, это требует усилий.

A>>Ну так, кто поднапрягся? Где параметры одновременно проверяются и не проверяются?
F>какая-то наркомания уже пошла.

Я тебе давно на это намекал, наконец-то ты это осознал.
Re[9]: Позвольте вас проигнорировать (-)
От: Somescout  
Дата: 22.03.17 15:25
Оценка:
ARI ARI ARI... Arrivederci!
Re[10]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 15:49
Оценка:
Здравствуйте, Somescout, Вы писали:

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

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

Именно об этом и идёт. Ты знаешь, что делает map в языке X, и требуешь, чтобы ровно то же самое он делал в языке Y. Твоё желание совершенно понятно. Но не ясно, почему разработчики библиотеки должны следовать ему.

S>>>Я в курсе. Поэтому (в частности) и считаю что JS — говно.

A>>Вкусовщина. Нет смысла обсуждать.
S>Ну да, поэтому я и написал: я считаю. А ниже вы свою вкусовщину лепите:

Где?

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

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

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

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


Это очень сложный вопрос — люди склонные к переменам, развитию, ищут причину прежде всего в себе, таким образом учатся, скажут скорее так: "Не учел"
Люди не склонные меняться, развиваться, ищут виноватых вокруг себя и в инструментах: "Ну и что что 90% всех разработчиков знают JS, знамо дело — язык говно и писать на нём невозможно!"
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[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[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[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>>А язык, который молча позволил совершить эти две ошибки совершенно ни при чём?


Не при чём. Я ж ответил уже.
Re[12]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 19:41
Оценка:
Здравствуйте, neFormal, Вы писали:

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

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

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

A>>Ты так и не объяснил, в чём подпрыгивание.

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

Не для применения, а для приведения к нужному тебе интерфейсу. Тебе нужна функция, принимающая один аргумент — будь добр это обеспечить. А ты делаешь «и так сойдёт», а потом удивляешься.
Re[13]: JS - очень простой язык
От: neFormal Россия  
Дата: 22.03.17 19:49
Оценка:
Здравствуйте, anonymous, Вы писали:

A>>>Как и во многих других языках.

F>>список в студию!
A>Любой язык, в котором можно создать функцию с переменным числом аргументов (вариативную).

давай списком уже.
например, в C или Python это требует специального явного синтаксиса.
не уверен, что слово "явный" тебе знакомо, поэтому возможно придётся погуглить и поразмышлять на досуге.

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

A>Не для применения, а для приведения к нужному тебе интерфейсу. Тебе нужна функция, принимающая один аргумент — будь добр это обеспечить. А ты делаешь «и так сойдёт», а потом удивляешься.

если кто-то передаёт неявные параметры, то, конечно, я удивлюсь.
это ж надо додуматься — проектировать язык по принципу "и так сойдёт"!
...coding for chaos...
Re[4]: JS - очень простой язык
От: TimurSPB Интернет  
Дата: 22.03.17 20:52
Оценка:
S>for (let i of list) {
S> console.log(i); // "4", "5", "6"
S>}
S>[/java]

will be generated as:

var numbers = [1, 2, 3];
for (var _i = 0; _i < numbers.length; _i++) {
var num = numbers[_i];
console.log(num);
}

Ясно, понятно
Make flame.politics Great Again!
Re[4]: JS - очень простой язык
От: TimurSPB Интернет  
Дата: 22.03.17 20:56
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Здравствуйте, 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

I>И правильно. in итерирует по ключам. of — по значениям.

Так себе. Сделали бы отдельно foreach и for. Почва для ошибок же
Make flame.politics Great Again!
Re[14]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 21:18
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>>>Как и во многих других языках.

F>>>список в студию!
A>>Любой язык, в котором можно создать функцию с переменным числом аргументов (вариативную).
F>давай списком уже. например, в C или Python это требует специального явного синтаксиса.

Специального?
def foo (*args):
    print args
def bar (fn):
    fn(1, 2)
bar(foo)


F>не уверен, что слово "явный" тебе знакомо, поэтому возможно придётся погуглить и поразмышлять на досуге.


Хамишь.

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

A>>Не для применения, а для приведения к нужному тебе интерфейсу. Тебе нужна функция, принимающая один аргумент — будь добр это обеспечить. А ты делаешь «и так сойдёт», а потом удивляешься.
F>если кто-то передаёт неявные параметры, то, конечно, я удивлюсь.

В таком случае и передача элемента первым параметром неявная, нигде ж не сказано, что в функцию вообще что-либо будет передаваться. (В мануале сказано, но этот путь не для правильных программистов.)
Re[13]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 22.03.17 21:26
Оценка:
Здравствуйте, neFormal, Вы писали:

I>>Люди не склонные меняться, развиваться, ищут виноватых вокруг себя и в инструментах:

F>ой не могу! жаваскрипт-боги объясняют плебеям суть их поведения

Я не пишу на JS. Тебе бы вместо фантазий об оппонентах сосредоточиться на аргументах.

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


https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-js
Re[15]: JS - очень простой язык
От: neFormal Россия  
Дата: 23.03.17 06:41
Оценка:
Здравствуйте, anonymous, Вы писали:

A>Специального?

A>
A>def foo (*args):
A>


а вот и он!
я так понимаю, смутило всё таки слово "явный". так вот, это явное объявление, что тут будет список.

F>>если кто-то передаёт неявные параметры, то, конечно, я удивлюсь.

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

в ф-цию для map не передавать аргументы?
что-то твои отговорки совсем нелепыми стали.
...coding for chaos...
Re[14]: JS - очень простой язык
От: neFormal Россия  
Дата: 23.03.17 06:50
Оценка:
Здравствуйте, anonymous, Вы писали:

A>Я не пишу на JS.


это не обязательное условие.

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

A>https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-js

фигня какая-то. там даже ActionScript записали. это извращение какое-то, а не выбор.
не, понятно, что они все могут конпеляться в какой-то js, но весь нюанс в том — в какой именно.
потом как посмотришь на выхлоп, так больно становится. ужасы, как в ранних версиях jython'а.
а на деле, я слышал, используется сейчас разве что TypeScript и ClosureScript, остальные померли. даже Coffee.
...coding for chaos...
Re[15]: JS - очень простой язык
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 23.03.17 07:27
Оценка:
Здравствуйте, neFormal, Вы писали:


F>фигня какая-то. там даже ActionScript записали. это извращение какое-то, а не выбор.

F>не, понятно, что они все могут конпеляться в какой-то js, но весь нюанс в том — в какой именно.
F>потом как посмотришь на выхлоп, так больно становится. ужасы, как в ранних версиях jython'а.
F>а на деле, я слышал, используется сейчас разве что TypeScript и ClosureScript, остальные померли. даже Coffee.
Вот именно, что слышал. Попробуй использовать и ты поймешь разницу между TS и JS.
При этом TS компилируется в es3/es5.
А ты прсмотри на assembler. Кого волнует во что компилится, главное что бы быстро и надежно работало
и солнце б утром не вставало, когда бы не было меня
Re[16]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 23.03.17 08:08
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>def foo (*args):

F>а вот и он!
F>я так понимаю, смутило всё таки слово "явный". так вот, это явное объявление, что тут будет список.

И что? Где явность в foo(bar)? Ты уверен что эта функция принимает именно столько параметров и именно в такой последовательности?

F>>>если кто-то передаёт неявные параметры, то, конечно, я удивлюсь.

A>>В таком случае и передача элемента первым параметром неявная, нигде ж не сказано, что в функцию вообще что-либо будет передаваться. (В мануале сказано, но этот путь не для правильных программистов.)
F>в ф-цию для map не передавать аргументы? что-то твои отговорки совсем нелепыми стали.

Почему бы и нет? Может, эта функция обязана работать со специальной переменной, а не с аргументом?
Re[15]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 23.03.17 08:09
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-js

F>фигня какая-то.

Аргумент.
Re[16]: JS - очень простой язык
От: Ops Россия  
Дата: 23.03.17 08:33
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> А ты прсмотри на assembler. Кого волнует во что компилится, главное что бы быстро и надежно работало


Знаешь, а ассемблер часто проще читать, чем вот это вот... Больше всего вымораживает многократное оборачивание в анонимные функции ради эмуляции блоковой области видимости.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[16]: JS - очень простой язык
От: neFormal Россия  
Дата: 23.03.17 08:57
Оценка:
Здравствуйте, Serginio1, Вы писали:

F>>а на деле, я слышал, используется сейчас разве что TypeScript и ClosureScript, остальные померли. даже Coffee.

S> Вот именно, что слышал. Попробуй использовать и ты поймешь разницу между TS и JS.

это ты так гениально опроверг моё утверждение?

S> А ты прсмотри на assembler. Кого волнует во что компилится, главное что бы быстро и надежно работало


ага, те самые качества, которыми js похвастаться не может.
...coding for chaos...
Re[16]: JS - очень простой язык
От: neFormal Россия  
Дата: 23.03.17 09:00
Оценка:
Здравствуйте, anonymous, Вы писали:

A>>>https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-js

F>>фигня какая-то.
A>Аргумент.

отоночо! ты больше двух слов осмыслить не можешь. я-то думал...
...coding for chaos...
Re[17]: JS - очень простой язык
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 23.03.17 09:01
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Здравствуйте, Serginio1, Вы писали:


S>> А ты прсмотри на assembler. Кого волнует во что компилится, главное что бы быстро и надежно работало


Ops>Знаешь, а ассемблер часто проще читать, чем вот это вот... Больше всего вымораживает многократное оборачивание в анонимные функции ради эмуляции блоковой области видимости.

Я кстати не читаю, и во что компилируется TS тоже. Мне нервы жалко, только по острой необходимости
и солнце б утром не вставало, когда бы не было меня
Re[17]: JS - очень простой язык
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 23.03.17 09:07
Оценка:
Здравствуйте, neFormal, Вы писали:

F>Здравствуйте, Serginio1, Вы писали:


F>>>а на деле, я слышал, используется сейчас разве что TypeScript и ClosureScript, остальные померли. даже Coffee.

S>> Вот именно, что слышал. Попробуй использовать и ты поймешь разницу между TS и JS.

F>это ты так гениально опроверг моё утверждение?

Я ничего не опровергал. Я только предлагал. Все таки проще говорить о том, на чем писал.
S>> А ты прсмотри на assembler. Кого волнует во что компилится, главное что бы быстро и надежно работало

F>ага, те самые качества, которыми js похвастаться не может.

Скорости вполне хватает для большинства задач. Там где нужны числодробилки есть плагины, а сейчас Webassembly.
Сейчас JS уже другой и развивается с каждым годом. Другое дело, что многие ориентируются на es3/es5
А если мы говорим о языке, то используем TS и радуемся возможностям "нормальных" языков к каким привыкло большинство не JS программистов.
и солнце б утром не вставало, когда бы не было меня
Отредактировано 23.03.2017 9:07 Serginio1 . Предыдущая версия .
Re[17]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 23.03.17 09:14
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>>>https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-js

F>>>фигня какая-то.
A>>Аргумент.
F>отоночо! ты больше двух слов осмыслить не можешь. я-то думал...

Ну, и последний аргумент — хамство. Ты победил.
Re[18]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 23.03.17 09:18
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>И что? Где явность в foo(bar)? Ты уверен что эта функция принимает именно столько параметров и именно в такой последовательности?

F>я даже оставил нужный кусок. но ты не осилил понять

То же самое можно сказать про тебя.

F>>>в ф-цию для map не передавать аргументы? что-то твои отговорки совсем нелепыми стали.

A>>Почему бы и нет? Может, эта функция обязана работать со специальной переменной, а не с аргументом?
F>опять в наркоманию свалился. прекращай употребление.

В Perl именно так. Но понятно, что ты не можешь выйти за пределы раз и навсегда усвоенного шаблона.
Re[17]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 23.03.17 09:22
Оценка:
Здравствуйте, Ops, Вы писали:

S>> А ты прсмотри на assembler. Кого волнует во что компилится, главное что бы быстро и надежно работало

Ops>Знаешь, а ассемблер часто проще читать, чем вот это вот... Больше всего вымораживает многократное оборачивание в анонимные функции ради эмуляции блоковой области видимости.

Можно ещё машинный код читать. Но зачем?
Re[18]: JS - очень простой язык
От: Ops Россия  
Дата: 23.03.17 09:33
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Я кстати не читаю, и во что компилируется TS тоже. Мне нервы жалко, только по острой необходимости


Понятно, что по доброй воле читать не будешь. Так необходимость-то бывает? И вот тут, сравнение будет не в пользу JS.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[19]: JS - очень простой язык
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 23.03.17 09:40
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Здравствуйте, Serginio1, Вы писали:


S>> Я кстати не читаю, и во что компилируется TS тоже. Мне нервы жалко, только по острой необходимости


Ops>Понятно, что по доброй воле читать не будешь. Так необходимость-то бывает? И вот тут, сравнение будет не в пользу JS.

Бывает случайно откроешь не Ts а JS. Ну и иногда интересно во, что это компилится.
Иногда волосы дыбом становятся
и солнце б утром не вставало, когда бы не было меня
Re[18]: JS - очень простой язык
От: neFormal Россия  
Дата: 23.03.17 09:43
Оценка:
Здравствуйте, anonymous, Вы писали:

A>Ну, и последний аргумент — хамство. Ты победил.


ты сам начал. с чего вдруг к тебе должно быть иное отношение?
...coding for chaos...
Re[19]: JS - очень простой язык
От: neFormal Россия  
Дата: 23.03.17 09:47
Оценка:
Здравствуйте, anonymous, Вы писали:

F>>я даже оставил нужный кусок. но ты не осилил понять

A>То же самое можно сказать про тебя.

ты-то можешь сказать, но сути это не поменяет.

A>В Perl именно так. Но понятно, что ты не можешь выйти за пределы раз и навсегда усвоенного шаблона.


начал откровенно врать?
https://perldoc.perl.org/functions/map.html
...coding for chaos...
Re[18]: JS - очень простой язык
От: neFormal Россия  
Дата: 23.03.17 09:52
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>>> Вот именно, что слышал. Попробуй использовать и ты поймешь разницу между TS и JS.

F>>это ты так гениально опроверг моё утверждение?
S>Я ничего не опровергал.

Вот именно, что слышал.

окай

F>>ага, те самые качества, которыми js похвастаться не может.

S> Скорости вполне хватает для большинства задач. Там где нужны числодробилки есть плагины, а сейчас Webassembly.

вот на него и надеемся, а js рассматривать в качестве asm — нездоровая идея, от бедности.
...coding for chaos...
Re[2]: JS - очень простой язык
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 23.03.17 10:39
Оценка:
Здравствуйте, neFormal, Вы писали:

F>Здравствуйте, StandAlone, Вы писали:


SA>>Замечательный язык, не правда ли?! простой, выразительный, элегантный и эффективно решающий типичные проблемы.


F>да норм. то ли дело вот это:

F>
>> [1,2,3].map(parseInt)
F>< [1, NaN, NaN]

>> ['10','10','10','10','10'].map(parseInt)
F>< [10, NaN, 2, 3, 4]
F>

Ничего особенного если знаешь сигнатуры map и parseint.
Re[19]: JS - очень простой язык
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 23.03.17 10:49
Оценка:
Здравствуйте, neFormal, Вы писали:

F>>>ага, те самые качества, которыми js похвастаться не может.

S>> Скорости вполне хватает для большинства задач. Там где нужны числодробилки есть плагины, а сейчас Webassembly.

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

А он не будет участвовать в построении DOM, событий. Будет тупо вызываться из JS.
Нет ему замены. А программировать нужно сегодня и сейчас.
и солнце б утром не вставало, когда бы не было меня
Re[19]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 23.03.17 11:04
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>Ну, и последний аргумент — хамство. Ты победил.

F>ты сам начал. с чего вдруг к тебе должно быть иное отношение?

Я тебе не хамил, поэтому у тебя нет ни единой причины хамить мне.
Re[20]: JS - очень простой язык
От: Ops Россия  
Дата: 23.03.17 11:05
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> А он не будет участвовать в построении DOM, событий. Будет тупо вызываться из JS.

S> Нет ему замены. А программировать нужно сегодня и сейчас.

Ну вот надежда как раз, что все это запилят. А завтра тоже надо будет программировать.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[20]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 23.03.17 11:05
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>В Perl именно так. Но понятно, что ты не можешь выйти за пределы раз и навсегда усвоенного шаблона.

F>начал откровенно врать? https://perldoc.perl.org/functions/map.html

Цитату, опровергающую мои слова.
Re[4]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 23.03.17 11:08
Оценка:
Здравствуйте, neFormal, Вы писали:

G>>Ничего особенного если знаешь сигнатуры map и parseint.

F>да, главное привыкнуть к жжению. потом и перестаёшь замечать.

Жжение-то вызвано отходом от единственно верного шаблона. У многих с этим нет проблем — нет и жжения.
Re[21]: JS - очень простой язык
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 23.03.17 11:41
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Здравствуйте, Serginio1, Вы писали:


S>> А он не будет участвовать в построении DOM, событий. Будет тупо вызываться из JS.

S>> Нет ему замены. А программировать нужно сегодня и сейчас.

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

WebAssembly по сути унификация плагинов. PNaCl например. Ничего нового. Другое дело, что TS может компилироваться сразу в байт код
https://v8project.blogspot.ru/2016/08/firing-up-ignition-interpreter.html
и солнце б утром не вставало, когда бы не было меня
Re[22]: JS - очень простой язык
От: Ops Россия  
Дата: 23.03.17 11:58
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> WebAssembly по сути унификация плагинов. PNaCl например. Ничего нового.

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

A>>>В Perl именно так. Но понятно, что ты не можешь выйти за пределы раз и навсегда усвоенного шаблона.

F>>начал откровенно врать? https://perldoc.perl.org/functions/map.html
A>Цитату, опровергающую мои слова.

A>>Почему бы и нет? Может, эта функция обязана работать со специальной переменной, а не с аргументом?
A>В Perl именно так. Но понятно, что ты не можешь выйти за пределы раз и навсегда усвоенного шаблона.


каждая строчка по ссылке опровергает.
да хотя бы эти взять:
my @chars = map(chr, @numbers);

my @squares = map { $_ * $_ } @numbers;
...coding for chaos...
Re[23]: JS - очень простой язык
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 23.03.17 12:04
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Здравствуйте, Serginio1, Вы писали:


S>> WebAssembly по сути унификация плагинов. PNaCl например. Ничего нового.

Ops>Пока да, но чего-то обещают. Поэтому и речь о надежде.
Ну к этому времени и JS будет совсем другим. Добавили модульность, async await. Linq прикручивают http://www.javascriptlinq.com/
Правда типизация пока только в TS.
и солнце б утром не вставало, когда бы не было меня
Re[22]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 23.03.17 12:09
Оценка:
Здравствуйте, neFormal, Вы писали:

A>>>Почему бы и нет? Может, эта функция обязана работать со специальной переменной, а не с аргументом?

A>>В Perl именно так. Но понятно, что ты не можешь выйти за пределы раз и навсегда усвоенного шаблона.
F>каждая строчка по ссылке опровергает. да хотя бы эти взять:
F>
F>my @chars = map(chr, @numbers);
F>my @squares = map { $_ * $_ } @numbers;
F>


В Perl аргументы функции находятся в переменной-массиве @_, соответственно, доступ к первому будет выглядеть как $_[0]. А $_ — это специальная переменная, не имеющая отношения к аргументам. То есть map внутри выглядит как-то так:
sub map {
    my $cb = shift @_;
    my @res;
    for (@_) {               # тут неявно local $_ = <очередной элемент>
        push @res, $cb->();  # вызов без параметров
    }
    return @res;
}
Re[24]: JS - очень простой язык
От: Ops Россия  
Дата: 23.03.17 12:13
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Ну к этому времени и JS будет совсем другим. Добавили модульность, async await. Linq прикручивают http://www.javascriptlinq.com/

Сколько ложек меда нужно добавить?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[22]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 23.03.17 12:24
Оценка:
Здравствуйте, StandAlone, Вы писали:

SA>И в случае с JS этот самый радиус приближается к радиусу Шварцшильда! Чисто потому что сам язык, да-да, сам вот этот вот замечательный язык такой же, спроектирован в виде бутылки Клейна и позволяет появление мертворожденных уродцев типа Q.


Аналоги Q я видел вне JS задолго до появления их в JS. Как то так

SA>В черную дыру которого уже улетел не один миллион человеко-часов дебага и багофикса.


В многопоточном коде улетает не меньшее количество кода
Re[12]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 23.03.17 12:27
Оценка:
Здравствуйте, neFormal, Вы писали:

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


Кратко — короткий, простой, понятный код. Сокращенно — это уже зипование, когда начинают экономить на синтаксисе.

I>>Здесь большое противоречие.


F>никакого. в остальных языках хотя бы типизация строгая.


И соответственно перформанс никакой.
Re[22]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 23.03.17 12:29
Оценка:
Здравствуйте, StandAlone, Вы писали:

SA>Главное, что наш прекрасный JS позволяет откладывать компактно:

SA>
SA>var ref = function (value) {
SA>    if (value && value.then)
SA>        return value;
SA>    return {
SA>        then: function (callback) {
SA>            var result = defer();
SA>            // XXX
SA>            enqueue(function () {
SA>                result.resolve(callback(value));
SA>            });
SA>            return result.promise;
SA>        }
SA>    };
SA>};
SA>

SA>

Ты лучше расскажи, зачем тебе в этом коде дебагать ? В браузере уже есть промисы свои, их не надо проверять и дебажить
Re[13]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 23.03.17 12:33
Оценка:
Здравствуйте, neFormal, Вы писали:

F>ты вот думаешь первым делом "не учёл", потому что у тебя нет выбора. ты обречён копаться в кривой поделке без возможности её выкинуть. такая же фигня с 1с-никами


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

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


Выбор вообще говоря есть.

F>исходя их этого становится понятно, почему вы тут оправдываете откровенно ущербный js, а другие восхищаются вашей упёртостью.


Как думаешь, кто даёт взятку людям, что бы они тащили JS во все области ?
Все такие умные, у всех JS — говно, и каким то чудом это говно проникает вообще везди и очень успешно
У тебя есть объяснение ?
Re[23]: JS - очень простой язык
От: neFormal Россия  
Дата: 23.03.17 12:40
Оценка:
Здравствуйте, anonymous, Вы писали:

A>В Perl аргументы функции находятся в переменной-массиве @_, соответственно, доступ к первому будет выглядеть как $_[0]. А $_ — это специальная переменная, не имеющая отношения к аргументам. То есть map внутри выглядит как-то так:


что-то первое работает, а второе нет:
print (map {$_ * $_} (1,2,3));
print (map {$_[0] * $_[0]} (1,2,3));

где-то ты неправильного говоришь.

и тем не менее даже в перле это сделано классически, а не как в js.
...coding for chaos...
Re[13]: JS - очень простой язык
От: neFormal Россия  
Дата: 23.03.17 12:49
Оценка:
Здравствуйте, Ikemefula, Вы писали:

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

I>Кратко — короткий, простой, понятный код. Сокращенно — это уже зипование, когда начинают экономить на синтаксисе.

примеры?
вот короткий код:
map(str, [1,2,3])

какой тут сокращённый будет?

F>>никакого. в остальных языках хотя бы типизация строгая.

I>И соответственно перформанс никакой.

это что же, у нас у js перфоманс появился?
нет, правда?
...coding for chaos...
Re[14]: JS - очень простой язык
От: neFormal Россия  
Дата: 23.03.17 12:54
Оценка:
Здравствуйте, Ikemefula, Вы писали:

F>>ты вот думаешь первым делом "не учёл", потому что у тебя нет выбора. ты обречён копаться в кривой поделке без возможности её выкинуть. такая же фигня с 1с-никами

I>Да легко выбрасывается, только все конкуренты сдохли.

"все" — это один и тот полудохлый vbs?

I>Это значит, что крутые герои на поверку оказались хуже говна, потому что не могут его сбороть.


никому не было нужно. веб в таком виде взлетел без разумного анализа, на том, что было.

I>Выбор вообще говоря есть.


js или ts?

I>Как думаешь, кто даёт взятку людям, что бы они тащили JS во все области ?


мозг. перестаёт утомляться, выбрасывает эндорфины.

I>Все такие умные, у всех JS — говно, и каким то чудом это говно проникает вообще везди и очень успешно

I>У тебя есть объяснение ?

"везде" — это где? кроме скриптинга html js можно встретить разве что в виде ноды. да и ту выпинывают все, кому не лень.
...coding for chaos...
Re[24]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 23.03.17 12:54
Оценка:
Здравствуйте, neFormal, Вы писали:

F>что-то первое работает, а второе нет:

F>
F>print (map {$_ * $_} (1,2,3));
F>print (map {$_[0] * $_[0]} (1,2,3));
F>

F>где-то ты неправильного говоришь.

Второе вообще не функция, а блок кода — отдельная сущность, в нём нет @_ (на самом деле есть, но с уровня выше). Но даже если подсунуть туда функцию, @_ будет пуст, потому что в колбек значение передаётся именно через специальную переменную $_. Поэтому и работают конструкции типа map chr, 42, многие встроенные функции по умолчанию используют $_, если их вызвали без параметра.

F>и тем не менее даже в перле это сделано классически, а не как в js.


Уж точно не классически. Передай в map функцию, которая ожидает именно аргумент, и ничего не заработает.
Re[13]: JS - очень простой язык
От: Somescout  
Дата: 23.03.17 13:14
Оценка:
Здравствуйте, anonymous, Вы писали:

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

Я ожидаю, что язык в такой ситуации покажет мне синтаксическую ошибку. Но в случае с js я прошу слишком много.

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

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

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

A>Не при чём. Я ж ответил уже.
Фанатично.
ARI ARI ARI... Arrivederci!
Re[14]: JS - очень простой язык
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 23.03.17 13:49
Оценка:
Здравствуйте, Somescout, Вы писали:

S>Здравствуйте, anonymous, Вы писали:


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

S>Я ожидаю, что язык в такой ситуации покажет мне синтаксическую ошибку. Но в случае с js я прошу слишком много.
TS подскажет
Кстати
https://www.typescriptlang.org/docs/handbook/functions.html
function buildName(firstName: string, lastName?: string) {
    if (lastName)
        return firstName + " " + lastName;
    else
        return firstName;
}

let result1 = buildName("Bob");                  // works correctly now
let result2 = buildName("Bob", "Adams", "Sr.");  // error, too many parameters
let result3 = buildName("Bob", "Adams");         // ah, just right


Воспринимай остальные параметры как необязательные.

При этом

https://www.typescriptlang.org/docs/handbook/type-compatibility.html

Comparing two functions
While comparing primitive types and object types is relatively straightforward, the question of what kinds of functions should be considered compatible is a bit more involved. Let’s start with a basic example of two functions that differ only in their parameter lists:
let x = (a: number) => 0;
let y = (b: number, s: string) => 0;

y = x; // OK
x = y; // Error

To check if x is assignable to y, we first look at the parameter list. Each parameter in x must have a corresponding parameter in y with a compatible type. Note that the names of the parameters are not considered, only their types. In this case, every parameter of x has a corresponding compatible parameter in y, so the assignment is allowed.
The second assignment is an error, because y has a required second parameter that ‘x’ does not have, so the assignment is disallowed.
You may be wondering why we allow ‘discarding’ parameters like in the example y = x. The reason for this assignment to be allowed is that ignoring extra function parameters is actually quite common in JavaScript. For example, Array#forEach provides three parameters to the callback function: the array element, its index, and the containing array. Nevertheless, it’s very useful to provide a callback that only uses the first parameter:
let items = [1, 2, 3];

// Don't force these extra parameters
items.forEach((item, index, array) => console.log(item));


// Should be OK!
items.forEach(item => console.log(item));

Now let’s look at how return types are treated, using two functions that differ only by their return type:
let x = () => ({name: "Alice"});
let y = () => ({name: "Alice", location: "Seattle"});

x = y; // OK
y = x; // Error because x() lacks a location property

The type system enforces that the source function’s return type be a subtype of the target type’s return type.
и солнце б утром не вставало, когда бы не было меня
Re[15]: JS - очень простой язык
От: Somescout  
Дата: 23.03.17 14:25
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, Somescout, Вы писали:


S>>Здравствуйте, anonymous, Вы писали:


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

S>>Я ожидаю, что язык в такой ситуации покажет мне синтаксическую ошибку. Но в случае с js я прошу слишком много.
S> TS подскажет
Разве? Мне нравится TS, но конкретно в этом случае ошибки скорее всего не будет — ибо совместимость. Если только самому переопределить описание map, то да, будет нормальная проверка.
ARI ARI ARI... Arrivederci!
Re[16]: JS - очень простой язык
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 23.03.17 14:27
Оценка:
Здравствуйте, Somescout, Вы писали:

S>Здравствуйте, Serginio1, Вы писали:


S>>Здравствуйте, Somescout, Вы писали:


S>>>Здравствуйте, anonymous, Вы писали:


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

S>>>Я ожидаю, что язык в такой ситуации покажет мне синтаксическую ошибку. Но в случае с js я прошу слишком много.
S>> TS подскажет
S>Разве? Мне нравится TS, но конкретно в этом случае ошибки скорее всего не будет — ибо совместимость. Если только самому переопределить описание map, то да, будет нормальная проверка.
Подскажет, что параметры опциональны пометив как x? Сейчас проверю
и солнце б утром не вставало, когда бы не было меня
Re[17]: JS - очень простой язык
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 23.03.17 14:38
Оценка:
Здравствуйте, Serginio1, Вы писали:
S>>Разве? Мне нравится TS, но конкретно в этом случае ошибки скорее всего не будет — ибо совместимость. Если только самому переопределить описание map, то да, будет нормальная проверка.
S> Подскажет, что параметры опциональны пометив как x? Сейчас проверю

Для

* Performs the specified action for each element in an array.
      * @param callbackfn  A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array.
      * @param thisArg  An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
      */
    forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void;


Но вот для map куча перегрузок


  * Calls a defined callback function on each element of an array, and returns an array that contains the results.
      * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.
      * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
      */
    map<U>(this: [T, T, T, T, T], callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): [U, U, U, U, U];
    /**
      * Calls a defined callback function on each element of an array, and returns an array that contains the results.
      * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.
      * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
      */
    map<U>(this: [T, T, T, T], callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): [U, U, U, U];
    /**
      * Calls a defined callback function on each element of an array, and returns an array that contains the results.
      * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.
      * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
      */
    map<U>(this: [T, T, T], callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): [U, U, U];
    /**
      * Calls a defined callback function on each element of an array, and returns an array that contains the results.
      * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.
      * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
      */
    map<U>(this: [T, T], callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): [U, U];
    /**
      * Calls a defined callback function on each element of an array, and returns an array that contains the results.
      * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.
      * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
      */
    map<U>(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[];
    /**


То есть для калбеков мы можем опускать параметры если их не используем
и солнце б утром не вставало, когда бы не было меня
Отредактировано 23.03.2017 14:53 Serginio1 . Предыдущая версия .
Re[16]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 23.03.17 15:08
Оценка:
Здравствуйте, novitk, Вы писали:

A>>Не важно, функцию, которая возвращает функцию. Ну, например:

A>>map (+) [1,2,3]
N>Что например? Это абсолютно нормальный код с очевидным результатом, например:
N>#zipWith ($) (map (+) [1,2,3]) [1, 2, 3]
N>[2,4,6]

Нет. Именно как я написал:
map (+) [1,2,3]


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

A>>Не важно, map там работает «ожидаемым» образом.
N>В perl-е все работает не "ожидаемым" способом поэтому его просто надо забыть, как страшный сон, что собственно и произошло.

Я же сказал, не важно. Ты пытаешься сменить тему.

A>>В JS то же самое, просто не забудь предать функцию, принимающую ровно один аргумент.

N>A если забыл, то сам себе злой буратин! That's the spirit!

Да. Удивительно, правда? Есть языки, которые не контролируют каждый твой шаг.
Re[14]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 23.03.17 15:18
Оценка:
Здравствуйте, Somescout, Вы писали:

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

S>Я ожидаю, что язык в такой ситуации покажет мне синтаксическую ошибку. Но в случае с js я прошу слишком много.

При чём тут синтаксис? А так очень многие языки перекладывают ответственность на программиста, JS тут не при чём. Они тебе не подходят, это понятно, но это не значит, что они неправильные.

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

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

Я не переходил на аналогии. Я использовал иллюстрацию. Мой тезис находится непосредственно перед ней. Ты игнорируешь тезис и пытаешься развить аналогию.

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

A>>Не при чём. Я ж ответил уже.
S>Фанатично.

Агрументация навешиванием ярлыков. Чувствую, разговор затянулся.
Re[17]: JS - очень простой язык
От: novitk США  
Дата: 23.03.17 15:20
Оценка:
Здравствуйте, anonymous, Вы писали:

A>Нет. Именно как я написал:

A>map (+) [1,2,3]
К чему ты это написал? Разницы между скажем питоном и хаскеллем в реализации map-a нет. Есть разница в реализации плюса.

N>>В perl-е все работает не "ожидаемым" способом поэтому его просто надо забыть, как страшный сон, что собственно и произошло.

A>Я же сказал, не важно. Ты пытаешься сменить тему.
Что дает аргумент "это же самое говно есть в другом говно-языке"?

N>>A если забыл, то сам себе злой буратин! That's the spirit!

A>Да. Удивительно, правда? Есть языки, которые не контролируют каждый твой шаг.
Да, да... ведь если отстрелить себе ноги можно сэкономить на обуви.
Re[15]: JS - очень простой язык
От: Somescout  
Дата: 23.03.17 16:10
Оценка:
Здравствуйте, anonymous, Вы писали:

A>При чём тут синтаксис? А так очень многие языки перекладывают ответственность на программиста, JS тут не при чём. Они тебе не подходят, это понятно, но это не значит, что они неправильные.

1) Если язык не способен контролировать элементарные ошибки, грош цена такому языку.
2) Вроде тут не язык мне подбираем, а я высказываю что именно мне не нравится в js. Вы же пытаетесь мне доказать, что на самом деле я должен любить эти "милые нелепости", ибо так они и задуманы.

A>Я не переходил на аналогии. Я использовал иллюстрацию. Мой тезис находится непосредственно перед ней.

В таком случае я проиллюстрировал другую точку зрения. И мой тезис вы знаете.
A>Ты игнорируешь тезис и пытаешься развить аналогию.
Ваш тезис "язык идеален, а тот кто не согласен не прав, ибо пункт 1". Нет, я с таким тезисом (особенно в отношении js) не согласен, что и выразил.

A>Агрументация навешиванием ярлыков. Чувствую, разговор затянулся.

А как это назвать? Если, допустим, фанаты Эппла говорят "этой функции нет, значит она вам не нужна" — их обоснованно называют фанатами. Тут то же самое.
ARI ARI ARI... Arrivederci!
Re[18]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 23.03.17 18:57
Оценка:
Здравствуйте, novitk, Вы писали:

A>>Нет. Именно как я написал:

A>>map (+) [1,2,3]
N>К чему ты это написал? Разницы между скажем питоном и хаскеллем в реализации map-a нет. Есть разница в реализации плюса.

К тому, что идёт обсуждение передачи в map функции двух аргументов вместо функции одного.

N>>>В perl-е все работает не "ожидаемым" способом поэтому его просто надо забыть, как страшный сон, что собственно и произошло.

A>>Я же сказал, не важно. Ты пытаешься сменить тему.
N>Что дает аргумент "это же самое говно есть в другом говно-языке"?

Нет, аргумент звучит так: нечто есть в другом языке. Твой «контраргумент»: это говноязык. А если я скажу, что у тебя говноаргументы, я выиграю спор?

N>>>A если забыл, то сам себе злой буратин! That's the spirit!

A>>Да. Удивительно, правда? Есть языки, которые не контролируют каждый твой шаг.
N>Да, да... ведь если отстрелить себе ноги можно сэкономить на обуви.

Нет-нет: соблюдай технику безопасности, и не отстрелишь себе ноги. Тебе больше нравится подход: мы не дадим тебе ружьё. Ну, ладно. Я не вижу, что тут можно обсуждать.
Re[16]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 23.03.17 19:03
Оценка:
Здравствуйте, Somescout, Вы писали:

S>Здравствуйте, anonymous, Вы писали:


A>>При чём тут синтаксис? А так очень многие языки перекладывают ответственность на программиста, JS тут не при чём. Они тебе не подходят, это понятно, но это не значит, что они неправильные.

S>1) Если язык не способен контролировать элементарные ошибки, грош цена такому языку.

Ну сколько можно твои вкусы обсуждать?

S>2) Вроде тут не язык мне подбираем, а я высказываю что именно мне не нравится в js. Вы же пытаетесь мне доказать, что на самом деле я должен любить эти "милые нелепости", ибо так они и задуманы.


Я ничего такого не говорил. Я утверждаю, что это не недостатки. Любовь ты можешь подобрать себе сам.

A>>Я не переходил на аналогии. Я использовал иллюстрацию. Мой тезис находится непосредственно перед ней.

S>В таком случае я проиллюстрировал другую точку зрения. И мой тезис вы знаете.
A>>Ты игнорируешь тезис и пытаешься развить аналогию.
S>Ваш тезис "язык идеален, а тот кто не согласен не прав, ибо пункт 1". Нет, я с таким тезисом (особенно в отношении js) не согласен, что и выразил.

Зачем так тупо перевирать вот это?

A>Нет, [язык] не при чём, это ж просто инструмент.

Если ты возомнил себя мастером демагогии, я тебя разочарую.

A>>Агрументация навешиванием ярлыков. Чувствую, разговор затянулся.

S>А как это назвать? Если, допустим, фанаты Эппла говорят "этой функции нет, значит она вам не нужна" — их обоснованно называют фанатами. Тут то же самое.

Это не надо называть. Надо приводить контраргументы — в этом суть дискуссии. Пока их не видно.
Re[18]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 24.03.17 05:00
Оценка:
Здравствуйте, Somescout, Вы писали:

S>>>1) Если язык не способен контролировать элементарные ошибки, грош цена такому языку.

A>>Ну сколько можно твои вкусы обсуждать?
S>Вы имеете в виду ваши вкусы?

Нет, я имею в виду твои вкусы.

S>Да куда мне до вас. А всё же объясните: почему вам позволено "иллюстрировать", а мне нет? Просто (не)интересно.


Нет, всё же вернёмся к моему тезису: язык не при чём, это просто инструмент.

A>>Это не надо называть. Надо приводить контраргументы — в этом суть дискуссии. Пока их не видно.

S>С вашей стороны — безусловно.

Нет, с твоей. (Отличный уровень аргументации. Напиши теперь, что всё же с моей.)
Re[19]: JS - очень простой язык
От: Somescout  
Дата: 24.03.17 05:07
Оценка:
Здравствуйте, anonymous, Вы писали:

A>Нет, я имею в виду твои вкусы.

А, то есть когда вы говорите что подобное нормально — это объективный факт, а когда я говорю что нет — это вкусовщина. Ок, вопросов нет, идите лесом уважаемый.
ARI ARI ARI... Arrivederci!
Re[14]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 24.03.17 07:53
Оценка:
Здравствуйте, neFormal, Вы писали:

F>вот короткий код:

F>
F>map(str, [1,2,3])
F>

F>какой тут сокращённый будет?

Ты показал зипование, сэкономил на слове lambda. Если последовательность константа, то лучше использовать comprehension.
Если же последовательность не константа, то лучше писать явно, не возникает геморроя с необязательными переменными
map(lambda x: str(x), arrayOfNumbers)

Примерно так. Извини, на питоне не писал много лет.

I>>И соответственно перформанс никакой.

F>это что же, у нас у js перфоманс появился?
F>нет, правда?

Именно. В полтора раза выше самого лучшего питона. По тестам techempower идет рядом с новым дотнетом.
Re[15]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 24.03.17 08:05
Оценка:
Здравствуйте, neFormal, Вы писали:

I>>Да легко выбрасывается, только все конкуренты сдохли.


F>"все" — это один и тот полудохлый vbs?


Вот неполный список языков поддерживаемых в разное время браузерами: vbs, perl, python, rexx, tcl
Прямые конкуренты, прямее некуда, ни один не выжил

Непрямые конкуренты — С++, C# и Action Script: activex, flash, silverlight

Языки, которые транслируются в JS: gwt, script#, coffee, dart

I>>Это значит, что крутые герои на поверку оказались хуже говна, потому что не могут его сбороть.

F>никому не было нужно. веб в таком виде взлетел без разумного анализа, на том, что было.

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

I>>Как думаешь, кто даёт взятку людям, что бы они тащили JS во все области ?

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

И это правильно.

I>>У тебя есть объяснение ?

F>"везде" — это где? кроме скриптинга html js можно встретить разве что в виде ноды. да и ту выпинывают все, кому не лень.

Ога. JS пролазит везде. Сервер, Десктоп, IoT например. И в микроконтролеры пролез.
Re[15]: JS - очень простой язык
От: neFormal Россия  
Дата: 24.03.17 09:01
Оценка:
Здравствуйте, Ikemefula, Вы писали:

F>>какой тут сокращённый будет?

I>Ты показал зипование, сэкономил на слове lambda.
I>Если же последовательность не константа, то лучше писать явно, не возникает геморроя с необязательными переменными
I>
I>map(lambda x: str(x), arrayOfNumbers)
I>


дык:
1. всё же понятно
2. нет лишней переменной x
3. код проще для чтения. иначе зачем использовать ФВП, если есть боязнь таких выражений?

I>Если последовательность константа, то лучше использовать comprehension.


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

F>>это что же, у нас у js перфоманс появился?

I>Именно. В полтора раза выше самого лучшего питона. По тестам techempower идет рядом с новым дотнетом.

хм, дотнета там рядом не увидел. "самый лучший питон" там flask, который давно не самый лучший.
но вообще да, голая нода быстрее. за счёт того, что в ней совсем ничего нет, и даже тело запроса приходится парсить отдельным плагином.
интересно, протекает ли она, как раньше.
...coding for chaos...
Re[16]: JS - очень простой язык
От: neFormal Россия  
Дата: 24.03.17 09:14
Оценка:
Здравствуйте, Ikemefula, Вы писали:

F>>"все" — это один и тот полудохлый vbs?

I>Вот неполный список языков поддерживаемых в разное время браузерами: vbs, perl, python, rexx, tcl

перл вроде видел в такой ипостаси. про остальных не в курсе. когда они успели-то?

I>Непрямые конкуренты — С++, C# и Action Script: activex, flash, silverlight


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

I>Языки, которые транслируются в JS: gwt, script#, coffee, dart


и не только. есть scalajs, есть лиспы.

I>Это значит экономика джаваскрипта оказалась выгоднее других


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

I>>>Как думаешь, кто даёт взятку людям, что бы они тащили JS во все области ?

F>>мозг. перестаёт утомляться, выбрасывает эндорфины.
I>И это правильно.

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

I>>>У тебя есть объяснение ?

F>>"везде" — это где? кроме скриптинга html js можно встретить разве что в виде ноды. да и ту выпинывают все, кому не лень.
I>Ога. JS пролазит везде. Сервер, Десктоп, IoT например. И в микроконтролеры пролез.

фигня это всё. как питон в raspberryPi или lego mindstorm. поиграются и бросят.
когда потребуется решать реальные задачи они придут к другим технологиям. потому что мощность и выразительность языка конечны, да и рантайм не для таких вещей.
на десктопе же оно давно. в разных осях его часто пытались протащить. но для скриптинга в приложениях оно не очень подходит.
...coding for chaos...
Re[16]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 24.03.17 09:27
Оценка:
Здравствуйте, neFormal, Вы писали:

F>дык:

F>1. всё же понятно

Кому ? Тебе или тому, кто будет после тебя код читать ?

F>2. нет лишней переменной x


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

F>3. код проще для чтения. иначе зачем использовать ФВП, если есть боязнь таких выражений?


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

I>>Если последовательность константа, то лучше использовать comprehension.

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

Это не страшно, явно == хорошо.

F>>>это что же, у нас у js перфоманс появился?

I>>Именно. В полтора раза выше самого лучшего питона. По тестам techempower идет рядом с новым дотнетом.

F>хм, дотнета там рядом не увидел. "самый лучший питон" там flask, который давно не самый лучший.


Рядом или даже выше дотнета. Как то так. В целом позиции нода в этих тестах очень высокие, в некоторых даже в десятке.

F>но вообще да, голая нода быстрее. за счёт того, что в ней совсем ничего нет, и даже тело запроса приходится парсить отдельным плагином.

F>интересно, протекает ли она, как раньше.

Именно, в ней совсем ничего нет, в том и дело.
Re[17]: JS - очень простой язык
От: neFormal Россия  
Дата: 24.03.17 09:43
Оценка:
Здравствуйте, Ikemefula, Вы писали:

F>>дык:

F>>1. всё же понятно
I>Кому ? Тебе или тому, кто будет после тебя код читать ?

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

F>>2. нет лишней переменной x

I>Она явно показывает, сколько ты параметров используешь в каком виде.

аа, я понял. это изза того, что js передаёт всё неявно, ты боишься, что и здесь будет лажа.
ну, блин, я даже не знаю. это, конечно, психологическая проблема: одним нужно явно прописать использование в коде, другим надо, чтобы язык спасал от лажи с неявной передачей аргументов.

F>>3. код проще для чтения. иначе зачем использовать ФВП, если есть боязнь таких выражений?

I>Догадываться о неявных деталях значит проще ? ФВП у тебя и так есть, это фича не для зипования, а для комбинирования функций, дсл например.
I>Это не страшно, явно == хорошо.

всё более чем явно. просто не так, как в js

I>Именно, в ней совсем ничего нет, в том и дело.


да, но для работы всё это нужно, поэтому такая синтетика нездорово выглядит.
тот же flask, например, содержит много чего. при этом по некоторым тестам он может сливать даже более жирной django. всё сложно.
...coding for chaos...
Re[17]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 24.03.17 10:22
Оценка:
Здравствуйте, neFormal, Вы писали:

F>>>"все" — это один и тот полудохлый vbs?

I>>Вот неполный список языков поддерживаемых в разное время браузерами: vbs, perl, python, rexx, tcl

F>перл вроде видел в такой ипостаси. про остальных не в курсе. когда они успели-то?


По моему в конце 90х примерно. В начале нулевых уже почти никого не осталось.

I>>Непрямые конкуренты — С++, C# и Action Script: activex, flash, silverlight


F>в принципе, у них был шанс стоять рядом. кабы не косяки с ns-контейнером и безопасностью.

F>но на замену никогда не катили.

Именно потому, что js был хилый, ajax не придумали, а DOM был слабо динамичный, куча всякого убер-динамичного UI делалось на всяих флешах и активиксах.
БОлее того, уже в начале нулевых были hta приложения, фактически, браузер без секурити который запускает всякие activex. Сейчас к этом вернулись только в виде nwjs и electron.
То если, на этих технологиях пытались пилить 'более лучший веб', потому что в браузеры никто не верил.
Скажем, когда я изучал activex, кругом во всех доках, журналах и блогах были примеры в основном по UI. И это было очень круто — один и тот же компонент в браузере и в офисе да забесплатно.

Все изменилось, когда Гугл показал какие чудеса можно творить внятным аджаксом, динамическим DOM и тд и тд. Соответственно все ящеры быстро сдохли.

I>>Языки, которые транслируются в JS: gwt, script#, coffee, dart

F>и не только. есть scalajs, есть лиспы.

I>>Это значит экономика джаваскрипта оказалась выгоднее других


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

F>но я не вижу экономических причин в том, что какой-нибудь питон не заменил js. вижу только то, что в браузеры не встраивали.

Выходит, что встраивали и все это отгнило.

I>>И это правильно.


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


Весь прогресс идет именно в том направлении, где мозг меньше устаёт и эндорфинов больше.

I>>Ога. JS пролазит везде. Сервер, Десктоп, IoT например. И в микроконтролеры пролез.


F>фигня это всё. как питон в raspberryPi или lego mindstorm. поиграются и бросят.

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

Именно скриптинг в приложениях на JS появился еще раньше аджаксов всяких.
Re[18]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 24.03.17 10:28
Оценка:
Здравствуйте, neFormal, Вы писали:

I>>Кому ? Тебе или тому, кто будет после тебя код читать ?


F>всем, кого я знаю. это настолько обыденное явление, что ещё лет 10 назад было нормой и описывалось в туториалах по языку.

F>время прошло, а ты так и перерос боязнь передачи ф-ций?

Предлагаешь закрывать глаза на баги в чужом питоновском коде ?

I>>Она явно показывает, сколько ты параметров используешь в каком виде.


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


Я предпочитаю всё делать явно. Если в питоне затейники объявляют необязательные аргументы, ты огребаешь ровно те же проблемы, только хуже. Ибо есть иллюзия что питон все проверяет.

F>ну, блин, я даже не знаю. это, конечно, психологическая проблема: одним нужно явно прописать использование в коде, другим надо, чтобы язык спасал от лажи с неявной передачей аргументов.


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

I>>Догадываться о неявных деталях значит проще ? ФВП у тебя и так есть, это фича не для зипования, а для комбинирования функций, дсл например.

I>>Это не страшно, явно == хорошо.

F>всё более чем явно. просто не так, как в js


Покажи где в твоём примере явная передача параметров. Представь, что вместо map какой нибудь xxx. Сразу станет некомфортно.

I>>Именно, в ней совсем ничего нет, в том и дело.


F>да, но для работы всё это нужно, поэтому такая синтетика нездорово выглядит.

F>тот же flask, например, содержит много чего. при этом по некоторым тестам он может сливать даже более жирной django. всё сложно.

Нужно всё не не сразу и далеко не во всех проектах. Так что для нода находится пространство.
Re[18]: JS - очень простой язык
От: neFormal Россия  
Дата: 24.03.17 10:48
Оценка:
Здравствуйте, Ikemefula, Вы писали:

F>>перл вроде видел в такой ипостаси. про остальных не в курсе. когда они успели-то?

I>По моему в конце 90х примерно. В начале нулевых уже почти никого не осталось.

понятно. я большинство из них не встречал в дикой природе.

I>БОлее того, уже в начале нулевых были hta приложения, фактически, браузер без секурити который запускает всякие activex. Сейчас к этом вернулись только в виде nwjs и electron.


сейчас это всё через мобильные приложения типа facebook'а

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


гугл это сделал, потому что уже тогда было понятно, что все эти технологии нерабочие.
activex к середине нулевых практически помер. остался лишь в рамках стека технологий мелкософта. например, для ie, msoffice.

I>Выходит, что встраивали и все это отгнило.


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

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

I>Весь прогресс идет именно в том направлении, где мозг меньше устаёт и эндорфинов больше.

да, а потом всё рушится, если нет развития.

I>Именно скриптинг в приложениях на JS появился еще раньше аджаксов всяких.


он же для бравзеров был наделан.
в приложениях типа игр js практически не встречается.
...coding for chaos...
Re[19]: JS - очень простой язык
От: neFormal Россия  
Дата: 24.03.17 10:56
Оценка:
Здравствуйте, Ikemefula, Вы писали:

F>>всем, кого я знаю. это настолько обыденное явление, что ещё лет 10 назад было нормой и описывалось в туториалах по языку.

F>>время прошло, а ты так и перерос боязнь передачи ф-ций?
I>Предлагаешь закрывать глаза на баги в чужом питоновском коде ?

бага же нет.

I>Я предпочитаю всё делать явно. Если в питоне затейники объявляют необязательные аргументы, ты огребаешь ровно те же проблемы, только хуже. Ибо есть иллюзия что питон все проверяет.


тут нет необязательных аргументов, в том-то и дело.

I>Это статистика. В большинстве случаев, когда я вижу зипованый код как у тебя, там почти всегда ошибки находятся. Кодинг занимает мизерную часть времени, что бы на нём вот так экономить.


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

F>>всё более чем явно. просто не так, как в js

I>Покажи где в твоём примере явная передача параметров. Представь, что вместо map какой нибудь xxx. Сразу станет некомфортно.

дело ж именно в том, что тут как раз map. это очень стандартная операция.
другой случай я тоже могу представить. например, у меня есть несколько ф-ций, которые отправляют схожие запросы. если отделить формирование параметров и саму отправку, то получится что-то типа:
create(do_send, get_create_params())
update(do_send, get_update_params())
delete(do_send, get_delete_params())

это как абстрагирование через типы, только через ф-ции.

I>Нужно всё не не сразу и далеко не во всех проектах. Так что для нода находится пространство.


окай, не буду спорить. не сталкивался с ситуацией, когда нужна голая нода.
...coding for chaos...
Re[19]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 24.03.17 11:46
Оценка:
Здравствуйте, neFormal, Вы писали:

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


F>гугл это сделал, потому что уже тогда было понятно, что все эти технологии нерабочие.


Они как раз были рабочие. Флеш до сих пор в нише. Аплеты держались до 10го года.

F>activex к середине нулевых практически помер. остался лишь в рамках стека технологий мелкософта. например, для ie, msoffice.


I>>Выходит, что встраивали и все это отгнило.


F>не видел примеров встраивания хотя бы питона.


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

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




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

I>>Весь прогресс идет именно в том направлении, где мозг меньше устаёт и эндорфинов больше.
F>да, а потом всё рушится, если нет развития.

Как и везде.

I>>Именно скриптинг в приложениях на JS появился еще раньше аджаксов всяких.


F>он же для бравзеров был наделан.

F>в приложениях типа игр js практически не встречается.

Это не так. Не в большинстве случаев, но есть. Я даже писал расширения на ём.
Re[20]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 24.03.17 11:52
Оценка:
Здравствуйте, neFormal, Вы писали:

I>>Предлагаешь закрывать глаза на баги в чужом питоновском коде ?


F>бага же нет.


Наоборот, полно. Ктото же этот код пишет, прикинь ?

I>>Я предпочитаю всё делать явно. Если в питоне затейники объявляют необязательные аргументы, ты огребаешь ровно те же проблемы, только хуже. Ибо есть иллюзия что питон все проверяет.

F>тут нет необязательных аргументов, в том-то и дело.

Все в порядке — в питоне есть и необязательные, и переменной длины.

I>>Это статистика. В большинстве случаев, когда я вижу зипованый код как у тебя, там почти всегда ошибки находятся. Кодинг занимает мизерную часть времени, что бы на нём вот так экономить.


F>зависит от задач. ну или от скорости придумывания решений.


Проектирование всегда занимает на порядок больше времени, если ты конечно не тривиальные задачи чпокаешь.

F>но в данном примере особого сокращения нет. это не экономия на спичках, это бОльшая выразительность кода.


Все эти неявные фокусы вылазят боком при правильном тестировании.

I>>Покажи где в твоём примере явная передача параметров. Представь, что вместо map какой нибудь xxx. Сразу станет некомфортно.


F>дело ж именно в том, что тут как раз map. это очень стандартная операция.


Я и говорю — частный случай, в котором все в порядке.

F>другой случай я тоже могу представить. например, у меня есть несколько ф-ций, которые отправляют схожие запросы. если отделить формирование параметров и саму отправку, то получится что-то типа:

F>это как абстрагирование через типы, только через ф-ции.

Это уже почти дсл.
Re[20]: JS - очень простой язык
От: neFormal Россия  
Дата: 24.03.17 12:16
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Они как раз были рабочие. Флеш до сих пор в нише. Аплеты держались до 10го года.


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

F>>не видел примеров встраивания хотя бы питона.

I>Питон работал в браузере, его не надо было встраивать.

а когда это было?

I>Мы встраивали питон в своё приложение, кстати говоря, он быстро отгнил, практически мгновенно.


что за приложение было? какое применение питона?

F>>он же для бравзеров был наделан.

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

поделись историями успеха.
...coding for chaos...
Re[21]: JS - очень простой язык
От: neFormal Россия  
Дата: 24.03.17 12:23
Оценка:
Здравствуйте, Ikemefula, Вы писали:

F>>бага же нет.

I>Наоборот, полно. Ктото же этот код пишет, прикинь ?

wat?

F>>тут нет необязательных аргументов, в том-то и дело.

I>Все в порядке — в питоне есть и необязательные, и переменной длины.

ключевое слово "тут".

I>Проектирование всегда занимает на порядок больше времени, если ты конечно не тривиальные задачи чпокаешь.


больше, чем кодирование? ты там алгоритмы кодирования на js пишешь, что у тебя текста мало?
впрочем, после пассажа про dsl я уже не уверен в совпадении терминологии.

F>>но в данном примере особого сокращения нет. это не экономия на спичках, это бОльшая выразительность кода.

I>Все эти неявные фокусы вылазят боком при правильном тестировании.

во1х, это явное указание
во2х, тестирование от этого не страдает. или показывай пример.

F>>другой случай я тоже могу представить. например, у меня есть несколько ф-ций, которые отправляют схожие запросы. если отделить формирование параметров и саму отправку, то получится что-то типа:

F>>это как абстрагирование через типы, только через ф-ции.
I>Это уже почти дсл.

да хоть что. код становится проще, читабельней, хорошо поддаётся правке.
...coding for chaos...
Re[23]: JS - очень простой язык
От: StandAlone  
Дата: 24.03.17 13:10
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Аналоги Q я видел вне JS задолго до появления их в JS. Как то так


Разумеется! Мракобесного индусского C кода очень много.
Но все разумные люди ничего серьезного на C давным-давно не делают.
А когда-то были попытки, isapi такой.
http://rsdn.org/article/inet/wrisapi.xml
Автор(ы): Алексей Остапенко
Дата: 01.04.2003
В статье описываются принципы написания ISAPI-расширений для веб-сервера Microsoft IIS. Даются рекомендации
по их отладке. В качестве дополнения рассматривается методика записи сообщений в лог Windows NT.
В версии 1.1 существенно переработан метод создания пула нитей.
В версии 1.2 исправлена ошибка инициализации/деинициализации расширения при выключенном кешировании
ISAPI-приложений.


Но именно потому что он мракобесный и write-only, от него отказались.
Re[23]: JS - очень простой язык
От: StandAlone  
Дата: 24.03.17 13:13
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Ты лучше расскажи, зачем тебе в этом коде дебагать ? В браузере уже есть промисы свои, их не надо проверять и дебажить


В каком — этом??? Любая машина со временем превращается в опель, любое приложение на JS, который сложнее Hello world, превращается в набор из показанных мной компактных личинок.
Write-only код, написан чукчей-нечитателем, неподдерживаем в принципе.
Именно об этой фиче нашего простого языка мы тут и разговариваем.
Re[24]: JS - очень простой язык
От: alex_public  
Дата: 24.03.17 17:14
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Ну к этому времени и JS будет совсем другим. Добавили модульность, async await. Linq прикручивают http://www.javascriptlinq.com/

S> Правда типизация пока только в TS.

Очаровательный сайтик — даже навигация (меню и ссылки) работает только в 1/3 случаев. Даже боюсь представить что они там предлагают в своих библиотеках.
Re[25]: JS - очень простой язык
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 24.03.17 17:28
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, Serginio1, Вы писали:


S>> Ну к этому времени и JS будет совсем другим. Добавили модульность, async await. Linq прикручивают http://www.javascriptlinq.com/

S>> Правда типизация пока только в TS.

_>Очаровательный сайтик — даже навигация (меню и ссылки) работает только в 1/3 случаев. Даже боюсь представить что они там предлагают в своих библиотеках.

Ну это первая попавшаяся ссылка есть и другие реализации https://github.com/kutyel/linq.ts
https://github.com/kutyel/linq.ts/blob/master/test/list.ts
и солнце б утром не вставало, когда бы не было меня
Re[7]: JS - очень простой язык
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 25.03.17 06:25
Оценка:
Здравствуйте, Ops, Вы писали:


>> arr.map((elem, index) => index);

Ops>[undefined, undefined, undefined, undefined]
Ops>[/code]

Не знаю насчет мап, но for дает индекс.

 <tr *ngFor="let rows of RowsRange; let row = index">

                            <td *ngFor="let col of ColsRange; let i = index">

                                <input type="text" (keypress)="KeyPress($event,Puzzle[row*9+i].value)" (click)="Click(Puzzle[row*9+i])" [class.IsFocused]="Puzzle[row*9+i].IsFocused"

                                       [(ngModel)]="Puzzle[row*9+i].value" [disabled]="Puzzle[row*9+i].disabled" size="3" maxlength="1">

                            </td>

                        </tr>




export class SudokuComponent {

    RowsRange = new Array(9);

    ColsRange = this.RowsRange;
и солнце б утром не вставало, когда бы не было меня
Re[8]: JS - очень простой язык
От: Ops Россия  
Дата: 25.03.17 07:03
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Не знаю насчет мап, но for дает индекс.


Ну вот еще и неконсистентность...
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[8]: JS - очень простой язык
От: StandAlone  
Дата: 25.03.17 09:45
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>
S> <tr *ngFor="let rows of RowsRange; let row = index">

S>                            <td *ngFor="let col of ColsRange; let i = index">

S>                                <input type="text" (keypress)="KeyPress($event,Puzzle[row*9+i].value)" (click)="Click(Puzzle[row*9+i])" [class.IsFocused]="Puzzle[row*9+i].IsFocused"

S>                                       [(ngModel)]="Puzzle[row*9+i].value" [disabled]="Puzzle[row*9+i].disabled" size="3" maxlength="1">

S>                            </td>

S>                        </tr>
S>


Это уже другое убожество. Индус-трия запуталась в собственных соплях и через 15 лет вернулась к ASP с первыми php4-шаблонизаторами. Синдром NotInventedHere в исполнении гугла.
Ожидаем в ближайшие пару лет изобретения WebForms и WebComponents. Собственно компоненты они уже пытаются изобретать во втором Ангуляре(или уже 5м?6м?слегка отстал от новостей(
Re[9]: JS - очень простой язык
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 25.03.17 10:04
Оценка:
Здравствуйте, StandAlone, Вы писали:

SA>Здравствуйте, Serginio1, Вы писали:


S>>
S>> <tr *ngFor="let rows of RowsRange; let row = index">

S>>                            <td *ngFor="let col of ColsRange; let i = index">

S>>                                <input type="text" (keypress)="KeyPress($event,Puzzle[row*9+i].value)" (click)="Click(Puzzle[row*9+i])" [class.IsFocused]="Puzzle[row*9+i].IsFocused"

S>>                                       [(ngModel)]="Puzzle[row*9+i].value" [disabled]="Puzzle[row*9+i].disabled" size="3" maxlength="1">

S>>                            </td>

S>>                        </tr>
S>>


SA>Это уже другое убожество. Индус-трия запуталась в собственных соплях и через 15 лет вернулась к ASP с первыми php4-шаблонизаторами. Синдром NotInventedHere в исполнении гугла.

SA>Ожидаем в ближайшие пару лет изобретения WebForms и WebComponents. Собственно компоненты они уже пытаются изобретать во втором Ангуляре(или уже 5м?6м?слегка отстал от новостей(

Так это и есть Angular 2. Только это ближе к Razor, но на клиенте.
Сейчас сервер только выдает получает данные в виде JSON. DOM строится на клиенте.
[(ngModel)]="Puzzle[row*9+i].value"

это двухсторонняя привязка. То есть изменения Puzzle[row*9+i].value вне input отразятся в input, а при изменении в input изменится и value объекта.

Что касается
[class.IsFocused]="Puzzle[row*9+i].IsFocused"


то изменяется класс IsFocused при изменении свойства IsFocused объекта.
и солнце б утром не вставало, когда бы не было меня
Отредактировано 25.03.2017 11:55 Serginio1 . Предыдущая версия . Еще …
Отредактировано 25.03.2017 11:54 Serginio1 . Предыдущая версия .
Отредактировано 25.03.2017 10:35 Serginio1 . Предыдущая версия .
Re[7]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 25.03.17 11:51
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Вот еще:

Ops>
>> const arr = new Array(4);
Ops>[undefined, undefined, undefined, undefined]
Ops>


Вероятно это зависит от реализации, но по стандарту:
[<4 empty slots>]

что не то же самое.

Ops>Вроде нормально? А если так?

Ops>
>> arr.map((elem, index) => index);
Ops>[undefined, undefined, undefined, undefined]
Ops>


Аналогично.
[<4 empty slots>]


> var a = [];
> a[2] = 1;
> a;
[<2 empty slots>, 1];
> a.map((e, i) => i);
[<2 empty slots>, 2];
Re[8]: JS - очень простой язык
От: Ops Россия  
Дата: 25.03.17 17:59
Оценка:
Здравствуйте, anonymous, Вы писали:

A>Вероятно это зависит от реализации, но по стандарту:

A>что не то же самое.
А в чем принципиальная разница? И почему, как здесь рядом подсказали, в цикле индексы есть? Я правильно понимаю, что понять этого нельзя, нужно тупо запомнить?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[9]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 25.03.17 20:05
Оценка:
Здравствуйте, Ops, Вы писали:

A>>Вероятно это зависит от реализации, но по стандарту:

A>>что не то же самое.
Ops>А в чем принципиальная разница? И почему, как здесь рядом подсказали, в цикле индексы есть? Я правильно понимаю, что понять этого нельзя, нужно тупо запомнить?

Тут дело в том, как устроен массив в JS: это объект с полем length и полями с именами 0, 1, 2 и так далее, то есть индексы это не смещения, а названия полей. Когда создаётся массив длиной, например, 4, в поле length записывается значение 4, а поля 0, 1, 2 и 3 не создаются вообще, а не только не инициализируются. Я не знаю, как работает map, но могу предположить, что он бежит от 0 до length не включительно, и если поля с соответствующим названием-индексом нет, то переходит к следующей итерации, не вызывая колбек. В результате получается массив той же длины и снова без полей-индексов.

И в цикле индексов нет тоже:
for (var i in new Array(4)) { console.log(i) }

ничего не выведет.

Разве что так:
var a = new Array(4);
for (var i = 0; i < a.length; i++) { console.log(i) }

Но тут индекс берётся из внешнего по отношению к массиву источника.
Re[9]: JS - очень простой язык
От: StandAlone  
Дата: 25.03.17 20:38
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>А в чем принципиальная разница? И почему, как здесь рядом подсказали, в цикле индексы есть? Я правильно понимаю, что понять этого нельзя, нужно тупо запомнить?


Я в ужасе покрываюсь липким потом. Схожу с ума, или вы прикидываетесь?
Вы вообще о чем, какие циклы?
В каком цикле? В том, что Serginio1 притащил? Там нет никаких циклов! Это директива сраного Ангуляра.
Зачем он постоянно тащит сюда, в обсуждение JS, всякие какашки, типа ангуляра или майкрософтовской правотипной отрыжки решительно непонятно.
А директива, джентльмены, это совсем не языковая фича. Это что-то вроде вот такого.
var ngIfDirective = ['$animate', '$compile', function($animate, $compile) {
  return {
    multiElement: true,
    transclude: 'element',
    priority: 600,
    terminal: true,
    restrict: 'A',
    $$tlb: true,
    link: function($scope, $element, $attr, ctrl, $transclude) {
        var block, childScope, previousElements;
        $scope.$watch($attr.ngIf, function ngIfWatchAction(value) {

          if (value) {
            if (!childScope) {
              $transclude(function(clone, newScope) {
                childScope = newScope;
                clone[clone.length++] = $compile.$$createComment('end ngIf', $attr.ngIf);
                // Note: We only need the first/last node of the cloned nodes.
                // However, we need to keep the reference to the jqlite wrapper as it might be changed later
                // by a directive with templateUrl when its template arrives.
                block = {
                  clone: clone
                };
                $animate.enter(clone, $element.parent(), $element);
              });
            }
          } else {
            if (previousElements) {
              previousElements.remove();
              previousElements = null;
            }
            if (childScope) {
              childScope.$destroy();
              childScope = null;
            }
            if (block) {
              previousElements = getBlockNodes(block.clone);
              $animate.leave(previousElements).done(function(response) {
                if (response !== false) previousElements = null;
              });
              block = null;
            }
          }
        });
    }
  };
}];

Шик, блеск, красота, не правда ли?! Я ж говорил, что JS хороший язык, он позволяет отложить много отличного компактного кода, совсем как старый добрый С!
Re[10]: JS - очень простой язык
От: StandAlone  
Дата: 25.03.17 20:43
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Так это и есть Angular 2.


Да неужели. Кто бы мог подумать!

S>Только это ближе к Razor, но на клиенте.


Отличная шутка, Евгений Ваганович! Razor, ну конечно же, как же, не иначе. А фанерный кукурузник это что-то ближе к Space Shuttle, но на совхозном поле.

S> то изменяется класс IsFocused при изменении свойства IsFocused объекта.


Все это прекрасно! Давайте немного почитаем отзывы пользователей Ангуляр2. Оффтопить так оффтопить!
https://meebleforp.com/blog/36/angular-2-is-terrible

<ul class="session-container-list">
  <li class="session-container"
    *ngFor="let container of containers"
    [class.empty-container]="container.sessions.length === 0" (click)="container.sessions.length === 0&&!isPublic&&!isAnalytics&&addNewSession(container)" [style.cursor]="(!isPublic&&!isAnalytics)?'pointer':'auto'">
    <ul *ngIf="!isPublic" class="session-list"
        [dragula]='"column"' [dragulaModel]='container.sessions'
        data-column-type="absolute"
        [attr.data-container]="getContainerData(container) | json">
      <li class="session-wrapper"
        *ngFor="let session of container.sessions"
        [attr.data-session-id]="session.id"
        [attr.data-session-placeholder]="session.placeholder"
        [attr.data-session-start]="session.start?session.start.toISOString():''"
        [attr.data-session-duration]="session.duration"
        [class.placeholder]="session.placeholder">
        <my-session [session]="session" [offsetDate]="offsetDate" [agenda]="agenda" [isPublic]="isPublic" [isAnalytics]="isAnalytics"
          (onSessionEdited)="onSessionEdited($event)"
          (onSpeakerEdited)="onSpeakerEdited($event)"
          (onSpeakerAdded2)="onSpeakerAdded($event)"
          (onVenueEdited)="onVenueEdited($event)"
          (onVenueAdded2)="onVenueAdded($event)"
          (onSessionDeleted)="onSessionDeleted($event)"
          ></my-session>
      </li>
    </ul>
    <ul *ngIf="isPublic && container.sessions" class="session-list">
      <li class="session-wrapper"
        *ngFor="let session of container.sessions"
        [class.placeholder]="session.placeholder">
        <my-session [session]="session" 
                    [offsetDate]="offsetDate" 
                    [agenda]="agenda" 
                    [isPublic]="isPublic" 
                    [isAnalytics]="isAnalytics" 
                    *ngIf="session.toggle"
                    [token]="token"
                    [interested]="isInterestedInSession(session)"
                    (onSessionInterestEdited)="onSessionInterestEdited($event)"
                    [analyticsData]="getAnalyticsDataForSession(session)">
        </my-session>
      </li>
    </ul>
  </li>
</ul>


Звездические ноги!!!! Я вою, вою от восторга!
Отредактировано 25.03.2017 20:46 StandAlone . Предыдущая версия .
Re[10]: JS - очень простой язык
От: Ops Россия  
Дата: 25.03.17 21:12
Оценка:
Здравствуйте, StandAlone, Вы писали:

SA>Вы вообще о чем, какие циклы?

SA>В каком цикле? В том, что Serginio1 притащил? Там нет никаких циклов! Это директива сраного Ангуляра.

Ну я не сильный JS-писатель, не знаю нюансов, думал, что так теперь принято на нем писать, а прочитать и разобраться в том ужасе, каюсь, не осилил, поверил на слово
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[10]: JS - очень простой язык
От: Ops Россия  
Дата: 25.03.17 21:26
Оценка:
Здравствуйте, anonymous, Вы писали:

A>Тут дело в том, как устроен массив в JS: это объект с полем length и полями с именами 0, 1, 2 и так далее, то есть индексы это не смещения, а названия полей. Когда создаётся массив длиной, например, 4, в поле length записывается значение 4, а поля 0, 1, 2 и 3 не создаются вообще, а не только не инициализируются. Я не знаю, как работает map, но могу предположить, что он бежит от 0 до length не включительно, и если поля с соответствующим названием-индексом нет, то переходит к следующей итерации, не вызывая колбек. В результате получается массив той же длины и снова без полей-индексов.


Понятно. Массив есть, ненулевой длины, элементов нет, и индексов нет, но длина есть. Все ясно, просто и логично.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[11]: JS - очень простой язык
От: Mystic Artifact  
Дата: 25.03.17 21:31
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Понятно. Массив есть, ненулевой длины, элементов нет, и индексов нет, но длина есть. Все ясно, просто и логично.

Более того — движки выделяют память реальную и кусками, а JS-блудники ещё и хотят всяких Int32Array. Возникает резонный вопрос — что такое array, когда он разрежен, а когда нет, и зачем им вдруг нужны типы?
Отредактировано 25.03.2017 21:32 Mystic Artifact . Предыдущая версия .
Re[11]: JS - очень простой язык
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 26.03.17 05:25
Оценка:
Здравствуйте, StandAlone, Вы писали:


SA>Звездические ноги!!!! Я вою, вою от восторга!


Я рад за то, что Angular 2 привел тебя в восторг.
На самом деле это компонент с привязками с дочерними компонентами и родительским
Но это аналогично и WPF. Там иногда еще страшнее.
Обычно такой код соответствует универсальным компонентам.
Используй готовые компоненты http://www.primefaces.org/primeng/#/
Главное, что ты не работаешь с DOM напрямую. Только декларативно.


Ты кстати программировал на Angular 2?

Кстати статья написана всего после 2 х недель изучения Angular 2.
Ты один из тех, кто судит о Паваротти о том как Рабинович напел?
и солнце б утром не вставало, когда бы не было меня
Отредактировано 26.03.2017 6:19 Serginio1 . Предыдущая версия . Еще …
Отредактировано 26.03.2017 6:17 Serginio1 . Предыдущая версия .
Отредактировано 26.03.2017 6:05 Serginio1 . Предыдущая версия .
Отредактировано 26.03.2017 5:44 Serginio1 . Предыдущая версия .
Re[11]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 26.03.17 05:48
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Понятно. Массив есть, ненулевой длины, элементов нет, и индексов нет, но длина есть. Все ясно, просто и логично.


Не просто, но логика в этом определённая есть. И главное — ты вряд ли столкнёшься с этой особенностью. Пример выше искусственен, получать массив индексов с помощью map — зачем?
Re[12]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 26.03.17 09:54
Оценка:
Здравствуйте, Mystic Artifact, Вы писали:

Ops>>Понятно. Массив есть, ненулевой длины, элементов нет, и индексов нет, но длина есть. Все ясно, просто и логично.

MA> Более того — движки выделяют память реальную и кусками, а JS-блудники ещё и хотят всяких Int32Array. Возникает резонный вопрос — что такое array, когда он разрежен, а когда нет, и зачем им вдруг нужны типы?

Int32Array — это array-like объект, который не имеет отношения к Array, это буфер с иным поведением. Так же объект Arguments, который хранит аргументы функции, похож по интерфейсу на Array, но не связан с ним. Они все похожи лишь наличием поля length и полей-индексов.
Re[21]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.03.17 09:45
Оценка:
Здравствуйте, neFormal, Вы писали:

I>>Они как раз были рабочие. Флеш до сих пор в нише. Аплеты держались до 10го года.

F>флэш не в нише интерфейсов. игрушки на нём делали, да и сейчас делают. потому что удобно графоний натягивать.

Флеш во все времена был в нише интерфейсов. Именно потому и в играх он взлетел.

F>а апплеты держались вплоть до отключения nsplugins в бравзерах. потому что разные банки любили их использовать. в остальных сферах они померли.


I>>Питон работал в браузере, его не надо было встраивать.


F>а когда это было?


Гдето в районе нулевых

I>>Мы встраивали питон в своё приложение, кстати говоря, он быстро отгнил, практически мгновенно.


F>что за приложение было? какое применение питона?


Навроде САПР. Три семейства продуктов или даже четыре, я уже не помню. Полная автоматизация приложения, юзер может как в MS Office, написать всё что угодно на скрипте, вызвать любую публичную функцию приложения и тд.

F>>>в приложениях типа игр js практически не встречается.

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

F>поделись историями успеха.


Тебе нужна статистика, доля рынка и тд или что ?
Re[24]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.03.17 09:47
Оценка:
Здравствуйте, StandAlone, Вы писали:

SA>В каком — этом??? Любая машина со временем превращается в опель, любое приложение на JS, который сложнее Hello world, превращается в набор из показанных мной компактных личинок.

SA>Write-only код, написан чукчей-нечитателем, неподдерживаем в принципе.

Отладка промисов никакого отношения к этому не имеет. Можно подумать один ты имеешь дело с кодом такого чукчи.

SA>Именно об этой фиче нашего простого языка мы тут и разговариваем.


Это фича библиотеки, а не языка.
Re[22]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.03.17 09:55
Оценка:
Здравствуйте, neFormal, Вы писали:

I>>Проектирование всегда занимает на порядок больше времени, если ты конечно не тривиальные задачи чпокаешь.


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


Больше. Кодинг это просто набор текста. 1мб текста набирается за смешное количество времени. С учетом помощи IDE, копипасты так и вовсе время 0. А чем ты занят останое количество времени ?


F>>>но в данном примере особого сокращения нет. это не экономия на спичках, это бОльшая выразительность кода.

I>>Все эти неявные фокусы вылазят боком при правильном тестировании.

F>во1х, это явное указание


Врёшь. Ты не знаешь, сколько аргументов из необязательных будут использованы. Следовательно — неявное.

F>во2х, тестирование от этого не страдает. или показывай пример.


Страдает читаемость и сопровождение.

F>да хоть что. код становится проще, читабельней, хорошо поддаётся правке.


Читабельно, это когда связи видны. А ты их собтвенно и прячешь.
Re[22]: JS - очень простой язык
От: neFormal Россия  
Дата: 27.03.17 10:07
Оценка:
Здравствуйте, Ikemefula, Вы писали:

F>>флэш не в нише интерфейсов. игрушки на нём делали, да и сейчас делают. потому что удобно графоний натягивать.

I>Флеш во все времена был в нише интерфейсов. Именно потому и в играх он взлетел.

не совсем потому.
там хорошие средства для анимации и более-менее терпимый язык. особенно с 3ей версии.

I>>>Мы встраивали питон в своё приложение, кстати говоря, он быстро отгнил, практически мгновенно.

F>>что за приложение было? какое применение питона?
I>Навроде САПР. Три семейства продуктов или даже четыре, я уже не помню. Полная автоматизация приложения, юзер может как в MS Office, написать всё что угодно на скрипте, вызвать любую публичную функцию приложения и тд.

мило.
а чего тогда отмер? и на что заменили? почему на js?

F>>>>в приложениях типа игр js практически не встречается.

I>>>Это не так. Не в большинстве случаев, но есть. Я даже писал расширения на ём.
F>>поделись историями успеха.
I>Тебе нужна статистика, доля рынка и тд или что ?

можно и так, но можно и просто примеров.
...coding for chaos...
Re[23]: JS - очень простой язык
От: neFormal Россия  
Дата: 27.03.17 10:11
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>>>Проектирование всегда занимает на порядок больше времени, если ты конечно не тривиальные задачи чпокаешь.

F>>больше, чем кодирование? ты там алгоритмы кодирования на js пишешь, что у тебя текста мало?
I>Больше. Кодинг это просто набор текста. 1мб текста набирается за смешное количество времени. С учетом помощи IDE, копипасты так и вовсе время 0. А чем ты занят останое количество времени ?

пишу прототипы или в интернетики
не знаю, у меня проектирование — это пара-тройка часов перед началом крупных работ.

F>>>>но в данном примере особого сокращения нет. это не экономия на спичках, это бОльшая выразительность кода.

I>>>Все эти неявные фокусы вылазят боком при правильном тестировании.
F>>во1х, это явное указание
I>Врёшь. Ты не знаешь, сколько аргументов из необязательных будут использованы. Следовательно — неявное.

не, ну нормально же сидели. что сразу "врёшь"?
я знаю, сколько аргументов будет использовано. необязательных среди них нет. это ж map, он везде такой (кроме поделки в js)

F>>во2х, тестирование от этого не страдает. или показывай пример.

I>Страдает читаемость и сопровождение.

ты просто не хочешь развиваться(как сам же и писал)

F>>да хоть что. код становится проще, читабельней, хорошо поддаётся правке.

I>Читабельно, это когда связи видны. А ты их собтвенно и прячешь.

это ФВП, здесь так принято.
нафига оно вообще, если ты боишься использовать ф-ции, как данные? галочку в фичах языка поставить? колбэки передавать? фи!
...coding for chaos...
Re[23]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.03.17 11:07
Оценка:
Здравствуйте, neFormal, Вы писали:

I>>Флеш во все времена был в нише интерфейсов. Именно потому и в играх он взлетел.


F>не совсем потому.

F>там хорошие средства для анимации и более-менее терпимый язык. особенно с 3ей версии.

И давно у тебя анимация перестала быть интерфейсом ? Терпимость языка далеко не самый важный фактор. Флеш был актуален до тех пор, пока HTML5 не вышел. После этого он вылез

I>>Навроде САПР. Три семейства продуктов или даже четыре, я уже не помню. Полная автоматизация приложения, юзер может как в MS Office, написать всё что угодно на скрипте, вызвать любую публичную функцию приложения и тд.


F>мило.

F>а чего тогда отмер? и на что заменили? почему на js?

Я сказал, что "питон отмер", а не "заменили питон на JS". Изначально было три языка — питон, vbs и js. Во всех продуктах, юзеры, которые не программисты, выбрали разновидность vbs. Само как то вышло. Потому я взял и вырезал питон, никто не всплакнул и ни одного тикета в суппорт не пришло. Количество юзеров было довольно большое, все заказчики — гиганты индустрии.

F>>>поделись историями успеха.

I>>Тебе нужна статистика, доля рынка и тд или что ?

F>можно и так, но можно и просто примеров.


Это в основном рассказы знакомых в геймдеве и мой собственный опыт. Чего я сам писал, аддоны, из последнего: http://www.oolite.org/ Были и другие вещи, на них я ссылок не могу найти.
Re[24]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.03.17 11:15
Оценка:
Здравствуйте, neFormal, Вы писали:


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

I>>Больше. Кодинг это просто набор текста. 1мб текста набирается за смешное количество времени. С учетом помощи IDE, копипасты так и вовсе время 0. А чем ты занят останое количество времени ?

F>пишу прототипы или в интернетики

F>не знаю, у меня проектирование — это пара-тройка часов перед началом крупных работ.

А в чем заключаются эти "крупные работы" ? Если тебе код диктуют, то конечно это объясняет, почему на проектирование всего чуть-чуть врмени уходит. В нормальных проектах проектирование начинается задолго до того, как будет

I>>Врёшь. Ты не знаешь, сколько аргументов из необязательных будут использованы. Следовательно — неявное.


F>не, ну нормально же сидели. что сразу "врёшь"?

F>я знаю, сколько аргументов будет использовано. необязательных среди них нет. это ж map, он везде такой (кроме поделки в js)

Давай проверим ? xxx(yyy) Сколько здесь аргументов и как будешь проверять ? Опаньки!
И что делать, если yyy задним числом поменяют на версию с необязательными аргументами ?

I>>Страдает читаемость и сопровождение.


F>ты просто не хочешь развиваться(как сам же и писал)


Наоборот. Я стараюсь учитывать частоту ошибок в чужом! коде.

F>>>да хоть что. код становится проще, читабельней, хорошо поддаётся правке.

I>>Читабельно, это когда связи видны. А ты их собтвенно и прячешь.

F>это ФВП, здесь так принято.


Если ты напишешь слово lambda, количество ФВП не уменьшится.

F>нафига оно вообще, если ты боишься использовать ф-ции, как данные? галочку в фичах языка поставить? колбэки передавать? фи!


Re[24]: JS - очень простой язык
От: neFormal Россия  
Дата: 27.03.17 11:26
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>И давно у тебя анимация перестала быть интерфейсом ?


с момента появления.

I>Терпимость языка далеко не самый важный фактор. Флеш был актуален до тех пор, пока HTML5 не вышел. После этого он вылез


флэш был актуален до выпила nsplugins. html5 тут ни при чём, особенно в игрушках. там-то он облажался.

I>Я сказал, что "питон отмер", а не "заменили питон на JS". Изначально было три языка — питон, vbs и js. Во всех продуктах, юзеры, которые не программисты, выбрали разновидность vbs. Само как то вышло. Потому я взял и вырезал питон, никто не всплакнул и ни одного тикета в суппорт не пришло. Количество юзеров было довольно большое, все заказчики — гиганты индустрии.


понятно. тогда питон мало кто использовал.

F>>можно и так, но можно и просто примеров.

I>Это в основном рассказы знакомых в геймдеве и мой собственный опыт. Чего я сам писал, аддоны, из последнего: http://www.oolite.org/ Были и другие вещи, на них я ссылок не могу найти.

ну, вообще, окромя хипсторных поделок, js нигде не используется.
но в скором времени загадят всё. особенно на бэкенде. на фронте что-то я сомневаюсь.
...coding for chaos...
Re[25]: JS - очень простой язык
От: neFormal Россия  
Дата: 27.03.17 11:36
Оценка:
Здравствуйте, Ikemefula, Вы писали:

F>>пишу прототипы или в интернетики

F>>не знаю, у меня проектирование — это пара-тройка часов перед началом крупных работ.
I>А в чем заключаются эти "крупные работы" ? Если тебе код диктуют, то конечно это объясняет, почему на проектирование всего чуть-чуть врмени уходит. В нормальных проектах проектирование начинается задолго до того, как будет

крупные работы — это новые подсистемы, заметный рефакторинг(хотя с ним проще), внедрение какой-то неожиданной логики.

F>>я знаю, сколько аргументов будет использовано. необязательных среди них нет. это ж map, он везде такой (кроме поделки в js)

I>Давай проверим ? xxx(yyy) Сколько здесь аргументов и как будешь проверять ? Опаньки!
I>И что делать, если yyy задним числом поменяют на версию с необязательными аргументами ?

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

I>>>Страдает читаемость и сопровождение.

F>>ты просто не хочешь развиваться(как сам же и писал)
I>Наоборот. Я стараюсь учитывать частоту ошибок в чужом! коде.

как я уже писал, это тебя js приучил к проблемам на каждом шагу. и твоя ценность проявляется не в решении задач, а в умении добиваться хоть каких-либо результатов с этим уродцем.
результат предсказуем: когда js помрёт, ты останешься на обочине прогресса.

F>>это ФВП, здесь так принято.

I>Если ты напишешь слово lambda, количество ФВП не уменьшится.

с доп.конструкциями страдает читабельность.

F>>нафига оно вообще, если ты боишься использовать ф-ции, как данные? галочку в фичах языка поставить? колбэки передавать? фи!

I>

правильно, уходи от ответа!
...coding for chaos...
Re[25]: JS - очень простой язык
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 27.03.17 12:19
Оценка:
Здравствуйте, neFormal, Вы писали:

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

F>но в скором времени загадят всё. особенно на бэкенде. на фронте что-то я сомневаюсь.

Программирование DocumentDB на стороне сервера: хранимые процедуры, триггеры баз данных и определяемые пользователем функции

Узнайте, каким образом интегрированное транзакционное выполнение JavaScript в Azure DocumentDB позволяет разработчикам создавать хранимые процедуры, триггеры и определяемые пользователем функции (UDF) непосредственно на платформе JavaScript. Это позволяет разработчикам писать логику приложения для баз данных, которая может быть отправлена и выполнена непосредственно в разделе хранения базы данных.

и солнце б утром не вставало, когда бы не было меня
Re[26]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.03.17 12:29
Оценка:
Здравствуйте, neFormal, Вы писали:

F>>>не знаю, у меня проектирование — это пара-тройка часов перед началом крупных работ.

I>>А в чем заключаются эти "крупные работы" ? Если тебе код диктуют, то конечно это объясняет, почему на проектирование всего чуть-чуть врмени уходит. В нормальных проектах проектирование начинается задолго до того, как будет

F>крупные работы — это новые подсистемы, заметный рефакторинг(хотя с ним проще), внедрение какой-то неожиданной логики.


То есть, продумывать подсистему не надо ? Логику, стало быть, ты придумываешь быстрее чем на кнопки давишь ?

I>>Давай проверим ? xxx(yyy) Сколько здесь аргументов и как будешь проверять ? Опаньки!

I>>И что делать, если yyy задним числом поменяют на версию с необязательными аргументами ?

F>это не js, не переноси его ущербность на нормальные языки.

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

Не map а xxx(yyy)

F>все неожиданные ситуации вываливаются на тестах. так что всё хорошо.


А что, в JS ктото запрещает код тестом покрыть ?

I>>Наоборот. Я стараюсь учитывать частоту ошибок в чужом! коде.


F>как я уже писал, это тебя js приучил к проблемам на каждом шагу. и твоя ценность проявляется не в решении задач, а в умении добиваться хоть каких-либо результатов с этим уродцем.

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

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

F>>>это ФВП, здесь так принято.

I>>Если ты напишешь слово lambda, количество ФВП не уменьшится.

F>с доп.конструкциями страдает читабельность.


Читабельность это не про количество символов, а про количество видимых связей. Каждый параметр это связь.

F>>>нафига оно вообще, если ты боишься использовать ф-ции, как данные? галочку в фичах языка поставить? колбэки передавать? фи!

I>>

F>правильно, уходи от ответа!


Я тебе уже ответил — лямбды не уменьшают количество ФВП.
Re[26]: JS - очень простой язык
От: neFormal Россия  
Дата: 27.03.17 12:31
Оценка:
Здравствуйте, Serginio1, Вы писали:

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

F>>но в скором времени загадят всё. особенно на бэкенде. на фронте что-то я сомневаюсь.
S>Программирование DocumentDB на стороне сервера: хранимые процедуры, триггеры баз данных и определяемые пользователем функции

ты бы ещё монгу вспомнил.
в нормальном постгресе пишут на питоне!
...coding for chaos...
Re[27]: JS - очень простой язык
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 27.03.17 12:33
Оценка:
Здравствуйте, neFormal, Вы писали:

F>Здравствуйте, Serginio1, Вы писали:


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

F>>>но в скором времени загадят всё. особенно на бэкенде. на фронте что-то я сомневаюсь.
S>>Программирование DocumentDB на стороне сервера: хранимые процедуры, триггеры баз данных и определяемые пользователем функции

F>ты бы ещё монгу вспомнил.

F>в нормальном постгресе пишут на питоне!
DocumentDB это NoSQL и вышла совсем недавно

Ну и в SQL пишут на C#, только с кучей ограничений. Народ использует TS для компиляции в JS.
https://benoitpatra.com/2016/07/09/programming-well-structured-javascript-stored-procedures-for-documentdb-with-typescript-and-systemjs/
и солнце б утром не вставало, когда бы не было меня
Отредактировано 27.03.2017 12:34 Serginio1 . Предыдущая версия .
Re[27]: JS - очень простой язык
От: neFormal Россия  
Дата: 27.03.17 12:48
Оценка:
Здравствуйте, Ikemefula, Вы писали:

F>>крупные работы — это новые подсистемы, заметный рефакторинг(хотя с ним проще), внедрение какой-то неожиданной логики.

I>То есть, продумывать подсистему не надо ?

продумывание и проектирование — это практически одно и то же

I>Логику, стало быть, ты придумываешь быстрее чем на кнопки давишь ?


обычно, да.

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

I>Не map а xxx(yyy)

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

I>Читабельность это не про количество символов, а про количество видимых связей. Каждый параметр это связь.


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

I>Я тебе уже ответил — лямбды не уменьшают количество ФВП.


они увеличивают количество кода, который надо прочитать. плюс пунктуация.
а можно всё делать без них.
...coding for chaos...
Re[28]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.03.17 13:06
Оценка:
Здравствуйте, neFormal, Вы писали:

F>>>крупные работы — это новые подсистемы, заметный рефакторинг(хотя с ним проще), внедрение какой-то неожиданной логики.

I>>То есть, продумывать подсистему не надо ?

F>продумывание и проектирование — это практически одно и то же


Повторяю вопрос — надо ли думать когда подсистему пишешь ?

I>>Логику, стало быть, ты придумываешь быстрее чем на кнопки давишь ?

F>обычно, да.

Это значит, что логика тривиальная, не надо ни спеки курить, ни требования анлизировать, ни ограничения выяснять, ни проблемы решать, вообще ничего — чисто кодить да и все.

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

I>>Не map а xxx(yyy)

F>ты переводишь тему с одного конкретного варианта на целый класс, где возможно всё: от вызова с разным количеством аргументов до манкипатчинга.

F>до чего ты дойдёшь в этом абсурде — я не знаю, но ответить тут мне нечего.

А ты попробуй на секундочку отвлечься от map. В ём, кстати говоря, типичный код пишется в лямбдах. Каждый случай map уникальный, если только речь не про наколеночный dsl.

F>все по-разному читают код.

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

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

I>>Я тебе уже ответил — лямбды не уменьшают количество ФВП.


F>они увеличивают количество кода, который надо прочитать. плюс пунктуация.

F>а можно всё делать без них.

Я уже понял, что у тебя особый, альтернативный метод чтения, когда не надо смысловые связи выделять.
Re[29]: JS - очень простой язык
От: neFormal Россия  
Дата: 27.03.17 13:17
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Повторяю вопрос — надо ли думать когда подсистему пишешь ?


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

I>>>Логику, стало быть, ты придумываешь быстрее чем на кнопки давишь ?

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

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

F>>ты переводишь тему с одного конкретного варианта на целый класс, где возможно всё: от вызова с разным количеством аргументов до манкипатчинга.

I>А ты попробуй на секундочку отвлечься от map.

а я что сделал строчкой выше?
хочешь обсудить какой-нибудь дикий вариант и через это одержать невероятную эпическую победу в споре про map? врядли получится.

I>В ём, кстати говоря, типичный код пишется в лямбдах. Каждый случай map уникальный, если только речь не про наколеночный dsl.


по разному бывает. местами проще в comprehension всё написать.

I>Читать — это выявлять смысловые связи между элементами кода глазом, без помощи инструмента. Их количество зависит в т.ч. от необязательных параметров.

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

зачем мне связь с лямбдой, которая нифига не делает?
...coding for chaos...
Re[30]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.03.17 15:21
Оценка:
Здравствуйте, neFormal, Вы писали:

F>зачем мне связь с лямбдой, которая нифига не делает?


Лямбда как раз демонстрирует явно какие ты параметры передаёшь или не передаёшь.
Re[31]: JS - очень простой язык
От: neFormal Россия  
Дата: 27.03.17 15:30
Оценка:
Здравствуйте, Ikemefula, Вы писали:

F>>зачем мне связь с лямбдой, которая нифига не делает?

I>Лямбда как раз демонстрирует явно какие ты параметры передаёшь или не передаёшь.

дык, где надо я её пишу, где не надо, опускаю.
я же в курсе, как оно используется. это ж не js.
...coding for chaos...
Re[25]: JS - очень простой язык
От: anonymous Россия http://denis.ibaev.name/
Дата: 27.03.17 15:36
Оценка:
Здравствуйте, neFormal, Вы писали:

I>>Терпимость языка далеко не самый важный фактор. Флеш был актуален до тех пор, пока HTML5 не вышел. После этого он вылез

F>флэш был актуален до выпила nsplugins. html5 тут ни при чём, особенно в игрушках. там-то он облажался.

Именно HTML5 с его canvas и убил Flash.
Re[11]: JS - очень простой язык
От: vdimas Россия  
Дата: 27.03.17 15:40
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Разумеется, это не так. Промисы есть и в других языках, или же есть аналогичный механизм. И там ровно те же проблемы, один в один. Забыл поставить return — получаешь непредсказуемое поведение. Поставил лишний return — снова непойми что. Асинхронщина во всех языках вот такая. Исключением являются только те языки, в которых эта модель встроена в сам язык. Я сходу даже не назову такой


В плюсах подобных проблем нет. Там если не выставил promise в конечное значение перед удалением, то связанный future навечно не подвиснет. При разрушении неразресолвленного promise ему будет установлено исключение future_error, которое получат клиенты future.

Но для этой кухни требуется гарантированное разрушение. В плюсах оно идёт изкаробки.

Собсно, я об этот момент споткнулся на дотнете, когда макетировал lock-free реализацию Promise/Future.
Без реализации IDisposable в Promise эта кухня получается ненадёжной.
Ровно по этим же причинам MS не рекомендует управлять объектом Task явно (это аналог пары PromiseFuture), а только создавать Task при запуске реального асинхронного процесса, т.е. речь о том, чтобы клиенты класса Task не управляли его состоянием сами, пусть этим управляет низлежащая отлаженная библиотека.
Re[15]: JS - очень простой язык
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.03.17 15:41
Оценка:
Здравствуйте, vdimas, Вы писали:

I>>Как думаешь, кто даёт взятку людям, что бы они тащили JS во все области ?

V>Сейчас, наоборот, Гугл тратить десятки лямов в год, чтобы убежать от JS.

И для этого вводит новый тулчейн JS в движок v8 что бы ввести в JS новые оптимизации ?
Или в той части, где фичи языка оптимизирует ?
Re[16]: JS - очень простой язык
От: vdimas Россия  
Дата: 27.03.17 16:42
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>>>Как думаешь, кто даёт взятку людям, что бы они тащили JS во все области ?

V>>Сейчас, наоборот, Гугл тратить десятки лямов в год, чтобы убежать от JS.
I>И для этого вводит новый тулчейн JS в движок v8 что бы ввести в JS новые оптимизации ?

Для этого он тратит десятки лямов в год на альтернативные технологии.


I>Или в той части, где фичи языка оптимизирует ?


Сейчас финансирование этого направления ведется по остаточному принципу, большую часть девелоперов с v8 уже давно перегнали на разработку Dart VM.

Собсно, ключевых разработчиков v8 перегнали на разработку Dart еще аж в 2011-м, именно поэтому ничего серьезного с v8 с 2011-го не происходило. Мы это уже обсуждали, кста.
Re[26]: JS - очень простой язык
От: neFormal Россия  
Дата: 27.03.17 18:53
Оценка:
Здравствуйте, anonymous, Вы писали:

I>>>Терпимость языка далеко не самый важный фактор. Флеш был актуален до тех пор, пока HTML5 не вышел. После этого он вылез

F>>флэш был актуален до выпила nsplugins. html5 тут ни при чём, особенно в игрушках. там-то он облажался.
A>Именно HTML5 с его canvas и убил Flash.

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

флэш помер изза проблем с безопасностью. там же адоб пинали все, кому не лень. взломы были обыденным явлением.
после этого отключили nsplugins и всё, флэшу места не нашлось.
так бы он ещё пожил бы, пока допилили бы webasm и как раз канвасы.
...coding for chaos...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.