Doge
Где-то были папиры что современные гц не сильно уступают языкам без них
В throughput не уступают. В потреблении памяти и latency - ещё как уступают
Doge
Даже затюненные на low-latency гц уступают
Denis
у тебя будут паузы на gc так и так
Vladislav
Вообще вроде ты писал что на расте имеет смысл писать что-то лоулевельное. А если интерпрайз то умереть можно
Doge
Вообще вроде ты писал что на расте имеет смысл писать что-то лоулевельное. А если интерпрайз то умереть можно
Да, тупо энтерпрайз на нём писать, потому что захотелось - это будет больно
Vasily
Ну нетворк стек писать на расте ок, думаю
Doge
Вообще вроде ты писал что на расте имеет смысл писать что-то лоулевельное. А если интерпрайз то умереть можно
В рациональности писать стандартный энтерпрайз на нём я несколько сомневаюсь
Vladislav
Егор писал что в мс ставят на раст как замену плюсам
Vasily
Логично
Vasily
Если сделают нормальный интероп с .net, будет как связка питон + с++
Vladislav
А раст pinvokнуть можно? Там наверно опять интерфейсы на С надо писать
Denis
с дотнетом интероп через unsafe C, да
Vasily
F# + rust вообще ок связка должна быть
Denis
https://github.com/KodrAus/rust-csharp-ffi https://blog.datalust.co/rust-at-datalust-how-we-integrate-rust-with-csharp/ https://www.youtube.com/watch?v=0B1U3fVCIX0 Но умные люди придумали вот
Vladislav
Кстати, раз тут такая тема
Doge
Вообще вроде ты писал что на расте имеет смысл писать что-то лоулевельное. А если интерпрайз то умереть можно
Ну и да, ещё деталь. Большинство языков с приличным гц сейчас - это либо управляемые языки с jit (jvm и дотнет), либо языки с тупым компилятором (гошечка). Если тебе хочется хорошего оптимизируещего компилятора, то у тебя вариантов немного: либо системные языки без гц (си, си++, раст и т.д.), либо хаскель.
Doge
А раст pinvokнуть можно? Там наверно опять интерфейсы на С надо писать
Там abi обычно сишное берут, своего стабильного abi там нет
Vladislav
А у плюсов менглинг имен зависит же тупо от компилятора или от платформы на которой собирают тоже?
Doge
а как же graalvm ?
Он далеко не всегда спасает и там сложно предсказывать, что сделает или не сделает компилятор в плане оптимизации твоих абстракций
Doge
а как же graalvm ?
Ну и да запустить приложение в прод на грааль вм - это приключение
Denis
ну я если честно еще не игрался особо, но good to know А то там обещают райские угодья и компиляцию в нативный код
Doge
ну я если честно еще не игрался особо, но good to know А то там обещают райские угодья и компиляцию в нативный код
Ну я игрался с ним на дотти, получается прикольно, но любая джавовая зависимость, которая активно рефлексию используют и у тебя ощутимые проблемы
Denis
ну рефлексия это на многих рантаймах проблема да
Doge
Ну я игрался с ним на дотти, получается прикольно, но любая джавовая зависимость, которая активно рефлексию используют и у тебя ощутимые проблемы
Поэтому на чисто ФП скале приложение внезапно сильно проще запустить на граале, чем обычное джавовское
Denis
мб поэтому он на хайпе
Denis
> There isn't a standard scheme by which even trivial C++ identifiers are mangled, and consequently different compilers (or even different versions of the same compiler, or the same compiler on different platforms) mangle public symbols in radically different (and thus totally incompatible) ways. Consider how different C++ compilers mangle the same functions:
Pavel
Говно, как обычно
ну медленно понятно, лечится несложно. а что такое "GC вжух сделает"?
Dr. Friedrich
а что должно быть на своем VPS, что оно схавало деплой? И что должно деплоить?
Слушай, ну я не знаю. Агент от системы управления конфигурацией и Докер-клиент, например.
Dr. Friedrich
А у плюсов менглинг имен зависит же тупо от компилятора или от платформы на которой собирают тоже?
От того и другого, плюс иногда между версиями компилятора различается, но это скорее исключение.
Ilya
ну медленно понятно, лечится несложно. а что такое "GC вжух сделает"?
Там новый сиквенс создаётся на каждый Seq.tail, вроде бы. Хотя может быть не о том речь.
Nuxs🏴‍☠️
Помогите
Nuxs🏴‍☠️
Как эту часть кода перенести в F#?
Nuxs🏴‍☠️
ITransformer mlModel = mlContext.Model.Load(GetAbsolutePath(MODEL_FILEPATH), out DataViewSchema inputSchema);
Nuxs🏴‍☠️
Мда
Nuxs🏴‍☠️
Пока ждал ответа, сам решил методом тыка
Hog
out-параметр будет туплей
Hog
let model, schema = load(...)
Nuxs🏴‍☠️
ответ такой:
Nuxs🏴‍☠️
let mutable inputSchema = null let mlModel = mlContext.Model.Load("", &inputSchema)
Hog
Так же, как и всякие .TryParse
Nuxs🏴‍☠️
Никогда не использовал TryParse
Nuxs🏴‍☠️
Он какой-то не от мира сего
Hog
И TryGet?
Nuxs🏴‍☠️
И TryGet?
Что это?
Hog
IDictionary
Hog
Ну не использовал, вот поэтому и рожаешь такое. &Мутабл
Ilya
Он какой-то не от мира сего
Зато эксепшенам не кидается при любом удобном случае.
Hog
Что может быть лучше свежепойманного эксепшона!
Ilya
Да не, я именно про создание нового сиквенса. То есть Seq.tail не равносилен IEnumerable.Skip(1). Кэш для фиббоначи — это бред, извините меня.
Pavel
`Seq.tail не равносилен IEnumerable.Skip(1)` это еще почему?
Vladimir
Ну не использовал, вот поэтому и рожаешь такое. &Мутабл
далеко не везде там можно через туплю сделать, только некоторые стандартные функции
Hog
Не всегда один аут в такое превращается?
Vladimir
ага
Vladimir
где-то эти превращения специально описаны
Pavel
Да не, я именно про создание нового сиквенса. То есть Seq.tail не равносилен IEnumerable.Skip(1). Кэш для фиббоначи — это бред, извините меня.
я так полагаю using не просто так тут стоит https://github.com/microsoft/referencesource/blob/master/System.Core/System/Linq/Enumerable.cs#L638-L645
Hog
где-то эти превращения специально описаны
Во такой - с последним аут параметром мне кажется всегда.
Vladimir
неа) в любых сторонних либах не будет превращаться
Vladimir
даже если сам напишешь аут параметр - тоже не будет
Vladimir
:) наоборот! для самых используемых обертки написали за тебя
Hog
А если этот аут будет булом?
Hog
Ну, вот захотел я TryGetParse
Vladimir
нету там магии) где-то в исходниках под каждый кейс лежит своя обертка
Vladimir
надо искать где это
Hog
Очень странно
Hog
Там же не только обёртка работает, но и прямой вот такой вызов
Vladimir
да, я пока хз как это сделано)
Pavel
public static string X(int x, out bool ok1, out bool ok2) { ok1 = true; ok2 = false; return "a"; }
Pavel
match ClassLibrary1.Class1.X 1 with | "", true, _ -> 1 | _ -> 0
Pavel
нет там оберток. маразм же
Vladimir
:( я точно видел что не работало на сторонних либах
Vladimir
ладно, через полчаса найду контрпример
Hog
ты гонишь :)
Hog
https://gist.github.com/grishace/a8ee55198378eb2fbf58bf7434b11ace