Здравствуйте, Sinclair, Вы писали:
S>Меня вот, к примеру, время стартапа джавы бесит неимоверно. И это при том, что я сам на ней не работаю — студенты показывают свои приложения на спринге. S>Вот он ко мне подходит, стартует приложение, и успевает всё про это приложение рассказать, пока эта хрень взлетит.
Это "особенность" спринга, а не джавы как платформы. Другой вопрос, что студенты не заморачиваются и берут что популярнее. И, конечно, дотнет всегда будет впереди со своей предкомпиляцией байткода.
Здравствуйте, ·, Вы писали:
P>>·>Протыкается явными операциями протыкания. А не как typescript — втихушку теряется инфа. P>>То есть, с хаскелем ты привел невалидный пример. ·>Это пример возможности явного протыкания системы типов.
Именно. А речь то была совсем про другое — дыра при отсутствии намеренного протыкания системы типов.
P>>В тайпскрипте readonly это единственное место, где теряется инфа. И судя по гитхабу, это мало кого волнует. ·>С коллекциями тоже проблема была, но, слава богу, пофиксили недавно.
А с коллекциями что не так? Тоже ужос-ужос который никого не волнует?
·>Плюс null checks вроде сделано, но, по моему опыту, никто не использует, т.к. неюзабельно. Ты вот используешь?
Не понял что за фича такая.
P>>Потому, что тебе это не нравится? ·>Потому, что компилятор тебе явно говорит, что типы не проверяются. Компилятору не нравится, причём тут я?
Я ж говорю — у меня ничего не говорит. Т.е. есть вариант, когда всё пройдет в прод.
P>>Я в джава коде регулярно встречаю и такое, и всевозможные касты, и что угодно. Т.е. это фактическое положение дел. ·>Это не дыры в системе типов явы, а баги в конкретном коде. Ещё ни один яп не смог заставить писать безбажый код.
Фактически в джаве в норме использовать олскульные вещи, что ты сам же и продемонстрировал совсем недавно. Соответсвенно дыра есть, и на неё до сих пор напарываются.
Здравствуйте, Pauel, Вы писали:
P>>>То есть, с хаскелем ты привел невалидный пример. P>·>Это пример возможности явного протыкания системы типов. P>Именно. А речь то была совсем про другое — дыра при отсутствии намеренного протыкания системы типов.
Про что была речь сказать сложно. Свою демагогию "без особых заморочек" ты так и не раскрыл. Unsafe в хаскеле ты считаешь заморочками, а заморочки в других ЯП ты не считаешь. Молодец, конечно, но что считаешь заморочками ты — вряд ли кого-то интересует.
P>>>В тайпскрипте readonly это единственное место, где теряется инфа. И судя по гитхабу, это мало кого волнует. P>·>С коллекциями тоже проблема была, но, слава богу, пофиксили недавно. P>А с коллекциями что не так? Тоже ужос-ужос который никого не волнует?
Ковариантность-контравариантность. "Никого не волнует" — это ещё одна демагогия, "необоснованное обобщение".
P>·>Плюс null checks вроде сделано, но, по моему опыту, никто не использует, т.к. неюзабельно. Ты вот используешь? P>Не понял что за фича такая.
strictNullChecks
P>>>Потому, что тебе это не нравится? P>·>Потому, что компилятор тебе явно говорит, что типы не проверяются. Компилятору не нравится, причём тут я? P>Я ж говорю — у меня ничего не говорит. Т.е. есть вариант, когда всё пройдет в прод.
Он выдаёт предупреждение, что типы у тебя не проверяются в compile-time. И, внезапно, они не проверились. Что тебе не нравится то?
P>>>Я в джава коде регулярно встречаю и такое, и всевозможные касты, и что угодно. Т.е. это фактическое положение дел. P>·>Это не дыры в системе типов явы, а баги в конкретном коде. Ещё ни один яп не смог заставить писать безбажый код. P>Фактически в джаве в норме использовать олскульные вещи, что ты сам же и продемонстрировал совсем недавно. Соответсвенно дыра есть, и на неё до сих пор напарываются.
Нет, не в норме. Это backward compatibility и легко отключается.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали:
P>>Именно. А речь то была совсем про другое — дыра при отсутствии намеренного протыкания системы типов. ·>Про что была речь сказать сложно. Свою демагогию "без особых заморочек" ты так и не раскрыл. Unsafe в хаскеле ты считаешь заморочками, а заморочки в других ЯП ты не считаешь.
Вроде очевидно — ты сам привел пример неявной ненамереной поломки в ТС. А в Хаскеле ты настаиваешь на явной намеренной.
Отсюда ясно, что твой аргумент про Хаскель невалидный.
P>>А с коллекциями что не так? Тоже ужос-ужос который никого не волнует? ·>Ковариантность-контравариантность. "Никого не волнует" — это ещё одна демагогия, "необоснованное обобщение".
Ковариантность-контравариантность штука хорошая. Тебя смущает, что в ТС её добавили позже, чем в джаву, или что?
ТС вообще появился в тот момент, когда джаве было без малого лет 20.
Тем не менее, свою долю на бакенде он уже отнял.
P>>·>Плюс null checks вроде сделано, но, по моему опыту, никто не использует, т.к. неюзабельно. Ты вот используешь? P>>Не понял что за фича такая. ·>strictNullChecks
Вполне себе годная вещь. Штука в том, что эта хрень засоряет апи, который экспозишь из библиотеки, т.к. надо всегда указывать возможные null и undefined. Здесь снова та же вещь — ТС не исправляет жээс. А раз так, то всегда могут влезать null и undefined.
Если другая сторона этим не пользуется, то смысла здесь не сильно то и много. Т.е. это работает для библиотечного кода, но не для связки.
Вообще, судя по тому, как идут дела на дотнете или джаве, таким фичам нужно большое время, что бы проникнуть в код.
P>>Я ж говорю — у меня ничего не говорит. Т.е. есть вариант, когда всё пройдет в прод. ·>Он выдаёт предупреждение, что типы у тебя не проверяются в compile-time. И, внезапно, они не проверились. Что тебе не нравится то?
Честно говоря, не знаю про что ты говоришь. Где его смотреть надо? Я все по дефолту юзаю.
P>>Фактически в джаве в норме использовать олскульные вещи, что ты сам же и продемонстрировал совсем недавно. Соответсвенно дыра есть, и на неё до сих пор напарываются. ·>Нет, не в норме. Это backward compatibility и легко отключается.
Здравствуйте, Pauel, Вы писали:
P>>>Именно. А речь то была совсем про другое — дыра при отсутствии намеренного протыкания системы типов. P>·>Про что была речь сказать сложно. Свою демагогию "без особых заморочек" ты так и не раскрыл. Unsafe в хаскеле ты считаешь заморочками, а заморочки в других ЯП ты не считаешь. P>Вроде очевидно — ты сам привел пример неявной ненамереной поломки в ТС. А в Хаскеле ты настаиваешь на явной намеренной. P>Отсюда ясно, что твой аргумент про Хаскель невалидный.
Так в упомянутых яп (java/c++/c#/haskell) везде ломать надо намеренно. Небольшим исключением является java, т.к. из-за backward compatibility чтобы поломка стала фатальной ошибкой — нужно прописать дополнительные параметры компилятору, что собственно полностью аналогично необходимости прописывать compilerOptions.strict=true в ts. Так что либо мой аргумент валидный, либо твоё утверждение о неявных поломках в других яп — невалидно. Выбирай.
P>>>А с коллекциями что не так? Тоже ужос-ужос который никого не волнует? P>·>Ковариантность-контравариантность. "Никого не волнует" — это ещё одна демагогия, "необоснованное обобщение". P>Ковариантность-контравариантность штука хорошая. Тебя смущает, что в ТС её добавили позже, чем в джаву, или что?
Не смущает. Просто говорю, что да, возможно лет через 5 ts станет хорошим яп. Ведь фичу добавили только месяц назад, теперь ведь ещё все либы надо апдейтить...
P>ТС вообще появился в тот момент, когда джаве было без малого лет 20.
Во-во. Уже шли по протоптанной тропке и всё равно дров наломали.
P>Тем не менее, свою долю на бакенде он уже отнял.
У пхп и перла.
P>>>Я ж говорю — у меня ничего не говорит. Т.е. есть вариант, когда всё пройдет в прод. P>·>Он выдаёт предупреждение, что типы у тебя не проверяются в compile-time. И, внезапно, они не проверились. Что тебе не нравится то? P>Честно говоря, не знаю про что ты говоришь. Где его смотреть надо? Я все по дефолту юзаю.
Надо прописать "-Xlint:unchecked -Werror". Что является хорошим тоном для современных проектов. Будет вот так:
Main.java:16: warning: [unchecked] unchecked call to add(E) as a member of the raw type ArrayList
x.add(5); // собака в массиве котов
^
where E is a type-variable:
E extends Object declared in class ArrayList
error: warnings found and -Werror specified
1 error
1 warning
P>>>Фактически в джаве в норме использовать олскульные вещи, что ты сам же и продемонстрировал совсем недавно. Соответсвенно дыра есть, и на неё до сих пор напарываются. P>·>Нет, не в норме. Это backward compatibility и легко отключается. P>Т.е. условно, о чем и речь.
Ок, можно натянуть сову на джаву, формально. Осталось тебе ещё рассказать такое про с++ и c#.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали:
·>Так в упомянутых яп (java/c++/c#/haskell) везде ломать надо намеренно. Небольшим исключением является java, т.к. из-за backward compatibility чтобы поломка стала фатальной ошибкой — нужно прописать дополнительные параметры компилятору, что собственно полностью аналогично необходимости прописывать compilerOptions.strict=true в ts. Так что либо мой аргумент валидный, либо твоё утверждение о неявных поломках в других яп — невалидно. Выбирай.
В C# буквально не получится тот же вариант, что и в ТС, будет просто ошибка в рантайме т.к. C# хранит типы в рантайме.
В Джаве, скажем, если ты не на массивах которые reifable, то из за type erasure случайные "фиксы" то тут, то там.
P>>Ковариантность-контравариантность штука хорошая. Тебя смущает, что в ТС её добавили позже, чем в джаву, или что? ·>Не смущает. Просто говорю, что да, возможно лет через 5 ts станет хорошим яп. Ведь фичу добавили только месяц назад, теперь ведь ещё все либы надо апдейтить...
TS это лучший из яп которых пруд пруди в ноде/браузере. readonly при своей дырявости имеет несколько вариантов для предоставления гарантий. Т.е. не такая это и страшая вещь, как ты тут расписываешь. Это в джаве в норме использовать мутабл дизайн. В динамических языках такое вобщем избегают. Такой вот парадокс.
P>>ТС вообще появился в тот момент, когда джаве было без малого лет 20. ·>Во-во. Уже шли по протоптанной тропке и всё равно дров наломали.
Ничего пока что не наломали. Конкуренты типа того же Flow, вот те наломали дров, поскольку взялись именно исправлять жээс.
P>>Тем не менее, свою долю на бакенде он уже отнял. ·>У пхп и перла.
И у джавы в т.ч. Веб-приложения, т.е. фронтенд-бакенд большей частью переползают на Fulstack Node с тайпскриптом.
P>>Т.е. условно, о чем и речь. ·>Ок, можно натянуть сову на джаву, формально. Осталось тебе ещё рассказать такое про с++ и c#.
Зачем? С С++ все просто — читай внимательно свою же ссылку. C С# все ровно так же ,как в джаве, только
1 из за отсутствия type erasure ты гарантировано получишь исключение в рантайме в любых типах, а не только массивах, если там не object под капотом
т.е. animals[0] = new Cats() будет иногда работать, а иногда будет кидать исключение
2 типы вида IList никто из фремворка не выбросил, а это означает неявный каст к object и всё, приехали.
Т.е. на мой взгляд и в джаве, и шарпе дженерики надо было добавлять изначально. А так все гарантии в сложных случаях приходится обеспечивать руками, следовательно, время от времени будут дыры. У тебя, понятно, есть скил "писать без багов", судя по прошлой беседе, тут ты сразу начнешь возражать
Здравствуйте, Pauel, Вы писали:
P>·>Так в упомянутых яп (java/c++/c#/haskell) везде ломать надо намеренно. Небольшим исключением является java, т.к. из-за backward compatibility чтобы поломка стала фатальной ошибкой — нужно прописать дополнительные параметры компилятору, что собственно полностью аналогично необходимости прописывать compilerOptions.strict=true в ts. Так что либо мой аргумент валидный, либо твоё утверждение о неявных поломках в других яп — невалидно. Выбирай. P>В C# буквально не получится тот же вариант, что и в ТС, будет просто ошибка в рантайме т.к. C# хранит типы в рантайме.
Java тоже хранит типы в рантайме. Вариант в C# не получится лишь потому, что там легаси с raw types нет.
P>В Джаве, скажем, если ты не на массивах которые reifable, то из за type erasure случайные "фиксы" то тут, то там.
По-моему ты не очень правильно понимаешь, что такое type erasure.
P>>>Ковариантность-контравариантность штука хорошая. Тебя смущает, что в ТС её добавили позже, чем в джаву, или что? P>·>Не смущает. Просто говорю, что да, возможно лет через 5 ts станет хорошим яп. Ведь фичу добавили только месяц назад, теперь ведь ещё все либы надо апдейтить... P>TS это лучший из яп которых пруд пруди в ноде/браузере.
Не спорю. Но явно не лучший в бэке, и именно по той главной причине, что он поверх js.
P>readonly при своей дырявости имеет несколько вариантов для предоставления гарантий. Т.е. не такая это и страшая вещь, как ты тут расписываешь. Это в джаве в норме использовать мутабл дизайн. В динамических языках такое вобщем избегают. Такой вот парадокс.
Можно и иммутабл, просто, как правило, тормознее. Но т.к. нода и так безбожно тормозит, то одним тормозом больше, одним меньше, уже не столь важно, главное чтобы хоть как-то работало, иначе поседеешь на поисках багов.
P>>>ТС вообще появился в тот момент, когда джаве было без малого лет 20. P>·>Во-во. Уже шли по протоптанной тропке и всё равно дров наломали. P>Ничего пока что не наломали. Конкуренты типа того же Flow, вот те наломали дров, поскольку взялись именно исправлять жээс.
Не наломали по сравнению с другими js-улучшателями, но не по сравнению с другими яп, типа того же c#.
P>>>Тем не менее, свою долю на бакенде он уже отнял. P>·>У пхп и перла. P>И у джавы в т.ч. Веб-приложения, т.е. фронтенд-бакенд большей частью переползают на Fulstack Node с тайпскриптом.
Может быть местами, где деньги на программистах экономят, но вряд ли большей частью.
P>>>Т.е. условно, о чем и речь. P>·>Ок, можно натянуть сову на джаву, формально. Осталось тебе ещё рассказать такое про с++ и c#. P>Зачем? С С++ все просто — читай внимательно свою же ссылку.
Там явно написано, что нельзя: No, you cannot convert between vectors of different types.
P>C С# все ровно так же ,как в джаве, только 1 из за отсутствия type erasure ты гарантировано получишь исключение в рантайме в любых типах, а не только массивах, если там не object под капотом
В java ты тоже получишь исключение, только в месте приведения типа элемента взятого из коллекции, а не в момент его добавления. Разберись что такое type erasure.
P>т.е. animals[0] = new Cats() будет иногда работать, а иногда будет кидать исключение
Это не будет кидать исключение. Исключение будет кидать Dog d = dogs[0].
P>2 типы вида IList никто из фремворка не выбросил, а это означает неявный каст к object и всё, приехали.
Не понял, зачем его выбрасывать?
P>Т.е. на мой взгляд и в джаве, и шарпе дженерики надо было добавлять изначально. А так все гарантии в сложных случаях приходится обеспечивать руками, следовательно, время от времени будут дыры. У тебя, понятно, есть скил "писать без багов", судя по прошлой беседе, тут ты сразу начнешь возражать
Таких неявных как в ts дыр — нет. Есть явно протыкаемые дыры как в хаскелле.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали:
P>>В Джаве, скажем, если ты не на массивах которые reifable, то из за type erasure случайные "фиксы" то тут, то там. ·>По-моему ты не очень правильно понимаешь, что такое type erasure.
Наоборот Массивы в джаве reifable, это факт. А вот остальные типы — нет, там просто type erasure. Т.е. вопрос в том, как именно ты будешь с этим работать.
P>>TS это лучший из яп которых пруд пруди в ноде/браузере. ·>Не спорю. Но явно не лучший в бэке, и именно по той главной причине, что он поверх js.
JS во многих вопросах обходит и джаву, и дотнет.
·>Можно и иммутабл, просто, как правило, тормознее. Но т.к. нода и так безбожно тормозит, то одним тормозом больше, одним меньше, уже не столь важно, главное чтобы хоть как-то работало, иначе поседеешь на поисках багов.
Ога. "Безбожно тормозит", как выяснилось в этом же треде, в пределах стат погрешности. Исключение — многопоточные вычисления.
P>>Ничего пока что не наломали. Конкуренты типа того же Flow, вот те наломали дров, поскольку взялись именно исправлять жээс. ·>Не наломали по сравнению с другими js-улучшателями, но не по сравнению с другими яп, типа того же c#.
C# уже 20 лет. ТС — всего 10, если считать от экспериментальной версии. Джаве — все 30.
P>>Зачем? С С++ все просто — читай внимательно свою же ссылку. ·>Там явно написано, что нельзя: No, you cannot convert between vectors of different types.
Ты продолжаешь читать только ту часть, что удобная для тебя.
P>>C С# все ровно так же ,как в джаве, только 1 из за отсутствия type erasure ты гарантировано получишь исключение в рантайме в любых типах, а не только массивах, если там не object под капотом ·>В java ты тоже получишь исключение, только в месте приведения типа элемента взятого из коллекции, а не в момент его добавления. Разберись что такое type erasure. P>>т.е. animals[0] = new Cats() будет иногда работать, а иногда будет кидать исключение ·> Это не будет кидать исключение. Исключение будет кидать Dog d = dogs[0].
Непринципиально, в какой строчке. Важно — из за чего. Т.е. код может будет хромать, то валится, то нет, в зависимости от поведения "где то там"
P>>2 типы вида IList никто из фремворка не выбросил, а это означает неявный каст к object и всё, приехали. ·>Не понял, зачем его выбрасывать?
Здравствуйте, Pauel, Вы писали:
P>>>В Джаве, скажем, если ты не на массивах которые reifable, то из за type erasure случайные "фиксы" то тут, то там. P>·>По-моему ты не очень правильно понимаешь, что такое type erasure. P>Наоборот Массивы в джаве reifable, это факт. А вот остальные типы — нет, там просто type erasure. Т.е. вопрос в том, как именно ты будешь с этим работать.
Не все остальные, а только генерики. В общем неясно к чему всё это. В чём твой поинт?
P>·>Не спорю. Но явно не лучший в бэке, и именно по той главной причине, что он поверх js. P>JS во многих вопросах обходит и джаву, и дотнет.
А brainfuck во многих вопросах обходит js.
P>·>Можно и иммутабл, просто, как правило, тормознее. Но т.к. нода и так безбожно тормозит, то одним тормозом больше, одним меньше, уже не столь важно, главное чтобы хоть как-то работало, иначе поседеешь на поисках багов. P>Ога. "Безбожно тормозит", как выяснилось в этом же треде, в пределах стат погрешности. Исключение — многопоточные вычисления.
Так ведь выяснилось, что ты наврал. Т.к. работала нативная либа на плюсах, а не нода. Это, кстати, круто, что java нередко работает так же быстро, как и нативные либы.
P>>>Ничего пока что не наломали. Конкуренты типа того же Flow, вот те наломали дров, поскольку взялись именно исправлять жээс. P>·>Не наломали по сравнению с другими js-улучшателями, но не по сравнению с другими яп, типа того же c#. P>C# уже 20 лет. ТС — всего 10, если считать от экспериментальной версии. Джаве — все 30.
Ну вроде уж гоговорились, что вот когда TCу будет 20, тогда и приходи в бэкенд. А пока он годится только чтобы дыры js затыкать на фронте.
P>>>Зачем? С С++ все просто — читай внимательно свою же ссылку. P>·>Там явно написано, что нельзя: No, you cannot convert between vectors of different types. P>Ты продолжаешь читать только ту часть, что удобная для тебя.
Тебя, надеюсь, не затруднит процитировать ту часть, которая удобна тебе.
P>>>т.е. animals[0] = new Cats() будет иногда работать, а иногда будет кидать исключение P>·> Это не будет кидать исключение. Исключение будет кидать Dog d = dogs[0]. P>Непринципиально, в какой строчке. Важно — из за чего. Т.е. код может будет хромать, то валится, то нет, в зависимости от поведения "где то там"
Ну да, поэтому и используют обёртки подобные IList.
P>>>2 типы вида IList никто из фремворка не выбросил, а это означает неявный каст к object и всё, приехали. P>·>Не понял, зачем его выбрасывать? P>Затем, что он умножает количество ошибок.
Каких ошибок? Говори конкретно.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали:
P>>Ога. "Безбожно тормозит", как выяснилось в этом же треде, в пределах стат погрешности. Исключение — многопоточные вычисления. ·>Так ведь выяснилось, что ты наврал. Т.к. работала нативная либа на плюсах, а не нода.
Уже давно на бакенде.
·>Тебя, надеюсь, не затруднит процитировать ту часть, которая удобна тебе.
Зачем? Ты все равно выкусишь то, что тебе удобно.
Бенчмарков было больше одного. Из них ты ожидаемо выбрал тот, где либа и проигнорил те, что без либы.
Какой смысл доказывать тебе?
·>Ну да, поэтому и используют обёртки подобные IList.
Б>Библиотеки более зрелые (для бэкенда). Б>Сам язык более стройный (последовательный), более расширяемый, развивается быстро Б>Нет браузерного легаси
Это теория или практика?
Питон таки тормозит-с. Хотя ява-скрипт — тоже.
Меня, конечно, вообще удручаети общее состояние отрасли. Всё на коленке, хренак-хренак и в боевую часть.
Пытаюсь анализировать elscticseach. Есть 1.5 (знаю!) и 6.8 (тоже). 2000 гб каждая.
scoll не работает в первой.
search кончается на 1% во второй при выборке в 100, 1000, 10000 элементов.
Код на 20 строк, но работает 5 часов. Королева в шоке (с)
Какого хрена не придумали combined schema? Почему mapping отменили, но они всё ещё есть. Но даже там где есть, они не учитывают вложенность?
Почему в питоне слияние словарей не учивает списки? *перезатираются последним, вместо слияния* И ещё довольные такие, типа это редкость. Сам пиши.
Чё, вообще за нах?
Здравствуйте, scf, Вы писали: scf>Это "особенность" спринга, а не джавы как платформы. Другой вопрос, что студенты не заморачиваются и берут что популярнее. И, конечно, дотнет всегда будет впереди со своей предкомпиляцией байткода.
А казалось бы — ну включите JIT с 0-ля запусков. Но нет, наоборот — сейчас дефолт, ЕМНИП, 10000 исполнений (а когда-то был 1000).
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Ватакуси, Вы писали:
В>Это теория или практика? В>Питон таки тормозит-с. Хотя ява-скрипт — тоже.
Тормоза джаваскрипта сильно преувеличены. У него есть проблемы с многопоточностью и тяжелыми вычислениями, которые блокируют эвент-луп. В отличие от питона, сам по себе он достаточно быстрый, во многих вопросах примерно как джава и часто даже быстрее.
P>Тормоза джаваскрипта сильно преувеличены. У него есть проблемы с многопоточностью и тяжелыми вычислениями, которые блокируют эвент-луп. В отличие от питона, сам по себе он достаточно быстрый, во многих вопросах примерно как джава и часто даже быстрее.
И современные сайты это конечно опровергают.
Инет сумашедший по скорости, железо тоже, но сайты тупят по 2-5-10 секунд.
Я видел сайты с 15 секундной задержкой!
Голый js, по-минимуму ещё ничего, но как только ангуляры/реакты/вуе и прочий бред привязывают, всё туши свет.
Здравствуйте, Ватакуси, Вы писали:
P>>Тормоза джаваскрипта сильно преувеличены. У него есть проблемы с многопоточностью и тяжелыми вычислениями, которые блокируют эвент-луп. В отличие от питона, сам по себе он достаточно быстрый, во многих вопросах примерно как джава и часто даже быстрее.
В>И современные сайты это конечно опровергают. В>Инет сумашедший по скорости, железо тоже, но сайты тупят по 2-5-10 секунд. В>Голый js, по-минимуму ещё ничего, но как только ангуляры/реакты/вуе и прочий бред привязывают, всё туши свет.
Ужос, всё как c WPF, а до того WinForms, а до того MFC, а до того Delfi, а до того Turbo Vision...
UI в норме тормозит, т.е. какая бы ни была технология под капотом, вечно находится 100500 софтин на которые весь инет жалуется, что тормозят.
Причины не в программистах — UI почти всегда пишется с целью time to market. Вот те, кто выиграли эту гонку, могут себе позволить ширкарный UI который еще и быстро работает.
Здравствуйте, Ватакуси, Вы писали:
В>Это теория или практика? В>Питон таки тормозит-с. Хотя ява-скрипт — тоже.
Все относительно. На io-bound задачах тормоза не ощущаются, а писать намного приятней из-за хороших библиотек и удобного языка.
На cpu-bound задачах, конечно хуже, но есть подходящие библиотеки, которые все это ускоряют, и часто этого бывает достаточно.
И конечно, есть cpu-bound задачи со сложными алгоритмами, где питон противопоказан — но таких не так уж и много.
С бэкендом (в том числе нагруженном) на питоне сталкиваюсь на практике, работает норм. На мой взгляд, в Java/C# нет гибкости и простоты питона в разработке. На TS я много не писал, но на JS приходилось. Начиная с ES-2015 наконец стал нормальным языком, но я бы все равно предпочел питон (современный, с типами).
В>Меня, конечно, вообще удручаети общее состояние отрасли. Всё на коленке, хренак-хренак и в боевую часть.
Нужно писать тесты, на любом языке. Тогда норм.
В>Пытаюсь анализировать elscticseach. Есть 1.5 (знаю!) и 6.8 (тоже). 2000 гб каждая. В>scoll не работает в первой. В>search кончается на 1% во второй при выборке в 100, 1000, 10000 элементов. В>Код на 20 строк, но работает 5 часов. Королева в шоке (с) В>Какого хрена не придумали combined schema? Почему mapping отменили, но они всё ещё есть. Но даже там где есть, они не учитывают вложенность?
Это я не распарсил.
В>Почему в питоне слияние словарей не учивает списки? *перезатираются последним, вместо слияния* И ещё довольные такие, типа это редкость. Сам пиши.
Про "слияние словарей не учивает списки". Почему ты считаешь, что при слиянии надо списки объединять, а не заменять? Лично для меня это не очевидно. Написать функцию не проблема — 4-5 строк
Здравствуйте, Pauel, Вы писали:
P>Здравствуйте, Ватакуси, Вы писали:
В>>Это теория или практика? В>>Питон таки тормозит-с. Хотя ява-скрипт — тоже.
P>Тормоза джаваскрипта сильно преувеличены. У него есть проблемы с многопоточностью и тяжелыми вычислениями, которые блокируют эвент-луп. В отличие от питона, сам по себе он достаточно быстрый, во многих вопросах примерно как джава и часто даже быстрее.
То ест в JS уже добавили потоки и примитивы синхронизации. Или только промисы?
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
P>>Тормоза джаваскрипта сильно преувеличены. У него есть проблемы с многопоточностью и тяжелыми вычислениями, которые блокируют эвент-луп. В отличие от питона, сам по себе он достаточно быстрый, во многих вопросах примерно как джава и часто даже быстрее. S> То ест в JS уже добавили потоки и примитивы синхронизации. Или только промисы?
Промисы к многопоточности никакого отношения не имеют, это просто оболочка поверх колбека, всё в том же потоке.
Потоки и примитивы синхронизации — такого нет. Есть воркеры, куда передаём посредством структурного клонирования, т.е. задорого, или же передаём владение, если объект вида ArrayBuffer, что далеко не всегда удобно.
Итого — можно передавать только большие куски работы. А вот так, что бы сообща обрабатывать какие то данные — такое вряд ли.
P>Потоки и примитивы синхронизации — такого нет. Есть воркеры, куда передаём посредством структурного клонирования, т.е. задорого, или же передаём владение, если объект вида ArrayBuffer, что далеко не всегда удобно.
P>Итого — можно передавать только большие куски работы. А вот так, что бы сообща обрабатывать какие то данные — такое вряд ли.
Понятно. Из за того, что нет примитивов синхронизации нельзя использовать промисы. В C# таски как раз могут быть и из пула потоков так и полноценным потоком (LongRunning) https://habr.com/ru/company/ruvds/blog/437984/
Модуль worker_threads
Потоки воркеров выполняются в изолированном контексте. Они обмениваются информацией с главным процессом, используя сообщения. Это избавляет нас от проблемы «состояния гонок», которой подвержены многопоточные среды. При этом потоки воркеров существуют в том же процессе, в котором находится основная программа, то есть, при таком подходе, в сравнении с применением форков процессов, используется гораздо меньше памяти.
Кроме того, работая с воркерами, можно пользоваться разделяемой памятью. Так, специально для этой цели созданы объекты типа SharedArrayBuffer. Их стоит использовать только в тех случаях, когда в программе нужно выполнять сложную обработку больших объёмов данных. Они позволяют экономить ресурсы, необходимые на выполнение сериализации и десериализации данных при организации обмена данными между воркерами и основной программой посредством сообщений.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Pauel, Вы писали:
P>>>Ога. "Безбожно тормозит", как выяснилось в этом же треде, в пределах стат погрешности. Исключение — многопоточные вычисления. P>·>Так ведь выяснилось, что ты наврал. Т.к. работала нативная либа на плюсах, а не нода. P>Что не так с этим примером? P>https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/spectralnorm-node-7.html
Ок. Похоже node осилил jit плоских циклов с байт-буферами. Не очень ясно, почему в коде явы массивы в цикле выделяются, поэтому какое-то непонятное сравнение. Для систем с jit такой бенчмарк мало что показывает. Это как мериться производительностью "hello world".
P>>>C# уже 20 лет. ТС — всего 10, если считать от экспериментальной версии. Джаве — все 30. P>·>Ну вроде уж гоговорились, что вот когда TCу будет 20, тогда и приходи в бэкенд. А пока он годится только чтобы дыры js затыкать на фронте. P>Уже давно на бакенде.
В бекенд чего только не тащат, даже php. Это не значит, что оно того стоит.
P>·>Тебя, надеюсь, не затруднит процитировать ту часть, которая удобна тебе. P>Зачем? Ты все равно выкусишь то, что тебе удобно. P>Бенчмарков было больше одного. Из них ты ожидаемо выбрал тот, где либа и проигнорил те, что без либы. P>Какой смысл доказывать тебе?
Ты конткест потерял. Перечитай что тут обсуждается.
P>·>Ну да, поэтому и используют обёртки подобные IList. P>Ну да, компенсируют проблемы языка.
Языком компенсируют проблемы языка?! Это как?
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай