S>> Ииии? Нужно компилировать под каждую платформу отдельно.
S>Вы можете сделать приложение на .Net, чтобы именно из .Net использовать повторно C#-код.
В большинстве случаев да. S>Однако из того же Python или JS — уже не сможете библиотеку использовать, хотя это самый популярный ЯП.
Почему? Например .Net через тот же COM прекрасно используется. В том же 1С
Здравствуйте, Serginio1, Вы писали:
S>>Однако из того же Python или JS — уже не сможете библиотеку использовать, хотя это самый популярный ЯП. S> Почему? Например .Net через тот же COM прекрасно используется. В том же 1С
Потому что НЕТ и такова реальность.
Покажите мне хотя бы одну .Net библиотеку, которую авторы предлагают для использования на других языках на всех 6 платформах. ОДНУ!!!
Это просто вы можете верить что так можно, блажен кто верует. Но когда столкнетесь с реальностью — поймёте что это не возможно в принципе, даже за миллионы долларов нет.
Готов поспорить что вы такой библиотеки не найдете.
Здравствуйте, Shmj, Вы писали:
S>>>Однако из того же Python или JS — уже не сможете библиотеку использовать, хотя это самый популярный ЯП. S>> Почему? Например .Net через тот же COM прекрасно используется. В том же 1С
S>Потому что НЕТ и такова реальность.
S>Покажите мне хотя бы одну .Net библиотеку, которую авторы предлагают для использования на других языках на всех 6 платформах. ОДНУ!!!
S>Это просто вы можете верить что так можно, блажен кто верует. Но когда столкнетесь с реальностью — поймёте что это не возможно в принципе, даже за миллионы долларов нет.
S>Готов поспорить что вы такой библиотеки не найдете.
Вопрос, а зачем? На самом деле .Net хорош во многом, но прежде всего в рефлексии и динамической компиляции.
.Native AOT прежде всего для обфускации и оптимизации критических по скорости приложений.
Но если ооочень хочется то можно https://github.com/dotnet/samples/tree/main/core/nativeaot/NativeLibrary
Суть в том, что сейчас не все классы поддерживают AOT. Много динамической компиляции или рефлексии без ограничений на типы.
Но сейчас такие вещи обходятся интерпретацией Il кода.
Ну и .Native AOT всего то года 2-3!
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S> Вопрос, а зачем?
Чтобы твою библиотеку могли использовать разные разработчики из разных ЯП на 6 платформах. Иначе придется под каждую платформу под каждый язык писать что-то в нуля, а это увеличивает работу сотни и тысячи раз — кроме разработки еще и поддержку.
S>На самом деле .Net хорош во многом, но прежде всего в рефлексии и динамической компиляции.
1. На Windows.
2. На Linux.
3. MacOS.
4. iOS.
5. Android.
6. WASM.
Есть примеры вызова из Python, .Net, Java.
И таких библиотек много. Представляете что было бы, если бы для каждой ОС и для каждой платформы пришлось писать код с нуля???
И во взрослом мире программирования все библиотеки такие. Работают на всех платформах и использовать можно из всех ЯП.
А теперь попробуйте найти хотя бы ОДНУ .Net библиотеку, которую так же можно использовать. Нет и не может быть такого. Сразу начинаются вопросы — а типа зачем, да можно же и без этого и т.д.
S> Ну и .Native AOT всего то года 2-3!
Ну вот когда достигнет зрелости — тогда и можно будет рассматривать.
Здравствуйте, Serginio1, Вы писали:
S>>>.Native AOT прежде всего для обфускации и оптимизации критических по скорости приложений. S>>>Но если ооочень хочется то можно https://github.com/dotnet/samples/tree/main/core/nativeaot/NativeLibrary
S>>Уже обсуждали — это не работает в моб. осях и WASM. Вообще.
S> Угу а как же Blazor WASM то работает?
.NET Native это предшественник Native AOT .Net Native использует ту же серверную часть, что и компилятор C++, который оптимизирован для статических сценариев предварительной компиляции.
.NET Native может обеспечить производительность на уровне C++ для разработчиков управляемого кода, так как эта технология использует те же или аналогичные средства, что и C++, как показано в этой таблице.
и солнце б утром не вставало, когда бы не было меня
Далее — есть ли пример хотя бы одной .Net библиотеки, которую можно использовать из любого языка на всех 6 платформах? Хотя бы одна?
Скорее всего сделать такое не возможно в принципе — это фундамент, а в фундаменте как всегда заложена мина. Т.е. это чисто вещь в себе — будете использовать из приложений .Net, и с ограничениями, все будет медленно, приложения будут большими + не всегда стабильно работать.
Здравствуйте, Shmj, Вы писали:
S>Здравствуйте, Serginio1, Вы писали:
S>>>А как можно перевести в C++ ? Разве такая возможность есть? S>> Вот нахрена я тебе ссылки даю? S>>https://learn.microsoft.com/ru-ru/dotnet/core/deploying/native-aot/?tabs=linux-ubuntu%2Cnet8#prerequisites S>>Для ubuntu например нужен clang.
S>Напрямую C++ код можно получить?
S>Далее — есть ли пример хотя бы одной .Net библиотеки, которую можно использовать из любого языка на всех 6 платформах? Хотя бы одна?
S>Скорее всего сделать такое не возможно в принципе — это фундамент, а в фундаменте как всегда заложена мина. Т.е. это чисто вещь в себе — будете использовать из приложений .Net, и с ограничениями, все будет медленно, приложения будут большими + не всегда стабильно работать.
Почему нельзя объясни? Это всё твои предположения. Еще раз все компилится в С++ а из него в нужный машинный код!
Вместо теоретических размышлений и вопросов — дай хотя бы ОДНУ практически реализованную библиотеку, которая такой фукнционал предоставляет — т.е. чтобы был запуск на 6 платформах и возможность использовать из любого языка.
Уверен что нет таких библиотек. Ни одной.
И при попытке реализовать — будет масса проблем, после которых неудобства синтаксиса С++ или Rust вам покажутся цветочками.
Жду от вас практическую бибилиотеку. Ну или вы попробуйте сделать. Уверен что нет таких библиотек и когда РЕАЛЬНО попробуете сделать (а не языком) — столкнетесь с непреодолимыми сложностями. Может сделать и даже статью на Хабре запилить если что-то получится из этого (и даже если не получится).
Еще раз есть проблемы с компиляцией в рантайме, которая обходится через интерпретатор и рефлексия без ограничений.
S>Жду от вас практическую бибилиотеку. Ну или вы попробуйте сделать. Уверен что нет таких библиотек и когда РЕАЛЬНО попробуете сделать (а не языком) — столкнетесь с непреодолимыми сложностями. Может сделать и даже статью на Хабре запилить если что-то получится из этого (и даже если не получится).
Мне они не нужны. И времени на данный момент тоже, что бы статьи писал. Возможность есть. Многие используют, так как в много библиотек. Но не все они на данный компилируются.
Но вот блазор в вэбассембли содержит еще и IL код который интерпретируется.
Но ты же утверждаешь, что нет возможности. Я тебе привел что IL код переводится в C++ а из него уже в код на нужной платформе со сборщиком мусора.
Здравствуйте, Serginio1, Вы писали:
S> Мне они не нужны. И времени на данный момент тоже, что бы статьи писал. Возможность есть. Многие используют, так как в много библиотек. Но не все они на данный компилируются. S>Но вот блазор в вэбассембли содержит еще и IL код который интерпретируется. S> Но ты же утверждаешь, что нет возможности. Я тебе привел что IL код переводится в C++ а из него уже в код на нужной платформе со сборщиком мусора.
Меня интересуют не философские измышления и как в теории это возможно (может быть) — а практика.
Вы хотите сказать что это возможно, но еще никто в мире не сделал ни одной библиотеки кроссплатформенной, не смотря на то что такая возможность присутствует?
Т.е. реально думаете что на C# можно написать код, который компилить скриптами для всех 6 платформ и потом использовать из любого ЯП, как на нормальных ЯП? Реально думаете что возможно это, но никто еще не сделал такой библиотеки в мире?
Здравствуйте, Shmj, Вы писали:
S> Скорее всего сделать такое не возможно в принципе — это фундамент, а в фундаменте как всегда заложена мина. Т.е. это чисто вещь в себе — будете использовать из приложений .Net, и с ограничениями, все будет медленно, приложения будут большими + не всегда стабильно работать.
Во, смари: https://www.remobjects.com/elements/ Шесть языков, шарп в том числе, с возможностью фигачить под семь программных платформ (прикинь, на шарпе можешь фигачить под жэвээм и ведроид). Пользуйся. Средства для кросс наличествуют.
Здравствуйте, rudzuk, Вы писали:
R>Во, смари: https://www.remobjects.com/elements/ Шесть языков, шарп в том числе, с возможностью фигачить под семь программных платформ (прикинь, на шарпе можешь фигачить под жэвээм и ведроид). Пользуйся. Средства для кросс наличествуют.
Но это платное — чтобы не учить C++ и писать ущербные библиотеки на любимом шарпике — вам придется платить налог $999 за вход и 749/year за обновление. При этом платформа не известная, не популярная и вы не сможете найти команду под эту платформу.
Так же не думаю что там все гладко — скорее всего банальные либы будут получаться дутые — типа мин. функционал — 5 МБ, а добавил чуть либ — уже 50 МБ, притом что такая же читая на C++ будет 500 Кб.
Смотрите на суть — смотрите не на финтифлюшки а на фундамент.
Здравствуйте, Shmj, Вы писали:
S> Но это платное — чтобы не учить C++ и писать ущербные библиотеки на любимом шарпике — вам придется платить налог $999 за вход и 749/year за обновление.
$999 не за вход, а за все языки. За один язык — $749. Впрочем, есть и за 200 баксов вариант. Зато любая платформа на любимом язычке, а не пердолинг с сисиплюсами и растаманией. Не хочешь платить — пердолься и дальше.
S> При этом платформа не известная, не популярная и вы не сможете найти команду под эту платформу.
Здравствуйте, Shmj, Вы писали:
S> Так же не думаю что там все гладко — скорее всего банальные либы будут получаться дутые — типа мин. функционал — 5 МБ, а добавил чуть либ — уже 50 МБ, притом что такая же читая на C++ будет 500 Кб.
S>> Мне они не нужны. И времени на данный момент тоже, что бы статьи писал. Возможность есть. Многие используют, так как в много библиотек. Но не все они на данный компилируются. S>>Но вот блазор в вэбассембли содержит еще и IL код который интерпретируется. S>> Но ты же утверждаешь, что нет возможности. Я тебе привел что IL код переводится в C++ а из него уже в код на нужной платформе со сборщиком мусора.
S>Меня интересуют не философские измышления и как в теории это возможно (может быть) — а практика.
S>Вы хотите сказать что это возможно, но еще никто в мире не сделал ни одной библиотеки кроссплатформенной, не смотря на то что такая возможность присутствует?
S>Т.е. реально думаете что на C# можно написать код, который компилить скриптами для всех 6 платформ и потом использовать из любого ЯП, как на нормальных ЯП? Реально думаете что возможно это, но никто еще не сделал такой библиотеки в мире?
То есть ты утверждаешь, что на С++ невозможно компилить код для 6 платформ?
IL код прекрасно транслируется в С++. А кто там, что пишет мне неизвестно. Я даже нативными библиотеками не пользуюсь. Вернее если и пользуюсь, то они где то далеко скрыты в PInvoke
и их минимум.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, rudzuk, Вы писали:
R>$999 не за вход, а за все языки. За один язык — $749. Впрочем, есть и за 200 баксов вариант. Зато любая платформа на любимом язычке, а не пердолинг с сисиплюсами и растаманией. Не хочешь платить — пердолься и дальше.
Все-равно — ты платишь за якобы неспособность выучить нормальный язык, который умеет все это из коробки.
А что на выходе то получается? Каков размер мин. библиотеки WASM получается?
S>> При этом платформа не известная, не популярная и вы не сможете найти команду под эту платформу. R>Завязывай, теоретик.
Дело вот в чем. Ты можешь создать либу на C# — но чтобы другие ее могли использовать на всех 6 платформах им нужно заплатить $749. Бывает что у либы 1 млн. пользователей — и каждый из 1 млн. — должен заплатить $749 — а это уже почти миллиард долларов.
Все дело в деньгах — на нормальных платформах все это БЕСПЛАТНО для всех.
Более того — это вендорлок. Что ты будешь делать, если эта конторка загнется или решит перестать поддерживать твой язык?