All streams
Search
Write a publication
Pull to refresh
15
0

User

Send message
а чем вам generic классы не угодили?

тем что в C# нельзя написать такой метод
static T Sum<T>(T x, T y): where T: operator (+) => x + y;
который бы работал для любых типов, у которых объявлен статический оператор сложения.


А в F# можно

У MS нет монорепозитория. По крайней мере 6 лет назад не было. Это нереально.

Говорят, для венды такая.

Если бы все крупные компании не писали собственные велосипеды, а брали только готовые решения, то собственно, вы никогда бы не увидели ни Kubernetes, ни React, ни Clickhouse(яндекс)

Всё так. Но товарищ заявляет что решения выше не подходят Я.Маркету из-за масштабов, что, на мой взгляд, уже проявление NIH синдрома, скорее.

Они действительно строят на них собственную инфраструктуру или как Amazon, предоставляют их клиентам облака?

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

Если взять публичные данные
https://www.similarweb.com/top-websites/category/e-commerce-and-shopping


Е-коммерция Волмарта на 7ом месте и туда ходит 450М уникальных человек в месяц. Я.Маркет на 47ом с 80М посетителей в месяц.


При этом Волмарт как бы крупнейший ритейл в мире с ~5000 реальных магазинов и это только в США (есть ещё кучи выкупленных брендов в других странах).


АйТи тут огромное даже если брать только е-коммерцию. С учётом физ-ритейла масштабы уже совсем страшные. Товарооборот, ценообразование, логистика, складское ПО, да даже ПО для управления персоналом (2 миллиона человек) — любая задача сразу превращается в HighLoad Cup.


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


При этом все густо обмазано вполне стандартными решениями — кафки, кубы и пр.


Есть и прикольные нестандартные. Кэш на коболе с интересными свойствами


https://github.com/walmartlabs/zECS

Да, стоит, Docker и Kubernetes работают не настолько хорошо, чтобы их можно было использовать в масштабах Яндекса.

Смешно. Масштабы Яндекса несравнимы например с масштабами Walmart, а там активно пользуются стандартными кубами, кафками и докерами.


Может просто кто-то не умеет их готовить?


Это нормально, представьте на своём месте несчастного админа, который должен чинить ваш велосипед даже не представляя как он работает.

Для этого придумали плейбуки. Написал, отдал суппорту и всё, ты уже вторая, а то и третья линия поддержки

Да что вы говорите. А Котлин первый в мире язык с рекордами или нет?


А если нет, возможно существует вероятность что и Ява, и Котлин списали домашку?

Влепил минус статье за низкий технический уровень.


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


Потому что ну невозможно на серьезных щах брать тест кейсом однопоточную CPU bound. Очевидно что вся эти махинации с колбеками, ожиданиями будут медленнее синхронного кода (для синхронной-то задачи, вот это поворот).

Ну в фшарпе компилятор немного глуповат, да.

Он пытается соответствать рантайму, который ожидает генерик функцию. Но в рантайме такого констрейна на генерик типы нет, поэтому в такой записи компилятор выведет не генерик тип, а конкретный по первому использованию.


Но если использовать SRTP, то можно юзать констрейны, которых в рантайме нет, но такие функции не могут доехать до рантайма, поэтому их надо инлайнить.


let inline add x y = x + y


И все заработает.

Констрейнов на наличие стат методов в типе в сишарпе нет.


В фшарпе есть.

А вот rank-2 уже нельзя. В том же хаскеле...

Ну так и фшарп не хаскель, зачем на него ориентироваться?

Лично мое мнение, что это все неидиоматично для фшарпа и выглядит так себе. Но тем не менее...


Вот полный набор хкт енкодинга
https://eiriktsarpalis.wordpress.com/2019/07/02/applying-the-tagless-final-pattern-in-f-generic-programs/


А вот пример инлайн сртп функции, невыразимой в сишарпе


// associate HKT encoding to underlying type using SRTPs let inline private assoc<'F, 'a, 'Fa when 'F : (static member Assign : App<'F, 'a> * 'Fa -> unit)> = ()

Извините что вторым ответом, с телефона сложно.


Цитирование это преобразование куска кода в AST с последующей работой с ним.


SRTP — statically resolved type parameters. возможность сделать хоть хкт, хоть структурную типизацию, хоть любого вида констрейны на тип. Тайп классы описываются в SRTP, да.

Инлайна в сишарпе нет. Есть атрибут обещания джита.
Операторы только стандартные, сделать тот же '>>=' нельзя.

Продуктивность выше.


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


Там же не только ДУ (а это как бы супер), ещё комп экспрешны, цитирование, операторы, инлайн функции, SRTP и многое, многое другое.

Для фшарпа идиоматично ООП. Это не функциональный язык. Те кто ищет от фшарпа хаскеля, его не найдут. Вполне идиоматично юзать весь набор сишарп кода. Это не только мое мнение, а ещё и автора языка Дона Сайма. Ознакомиться с этим мнением можно в его книге Expert F#.


Большинство усилий направляется на совместимость с сишарпом, а не на ФП фичи именно поэтому.

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

Фшарп затем на дотнете и задумали чтобы присосаться к готовому набору пакетов, а не делать свои с нуля (привет оКамлу, да и хаскелю)
Драйвера ДБ, СДК, UI, асп нет тот же. Их незачем переписывать.


Если для Вас это не аргумент, то вперёд писать прод на Блодвене.

Но если вы уже настроились на ML то лучше взять хаскель, разве нет?

Конечно нет, ведь фшарп это в первую очередь дотнет, нугеты, вижуал студия, ажура и отличный рантайм. То что называется экосистема. Хаскель курит в сторонке

и странным синтаксисом.

Но ведь это обычный ML...

Information

Rating
Does not participate
Registered
Activity