Связку C#.NET можно заменить на C++.Qt или на что-то менее удобное тоже с C++. Ещё C# используется в некоторых коммерческих игровых движках в качестве скриптового языка, там дополнительно появятся варианты со скриптовыми языками, вроде Lua, Python и так далее.
Здравствуйте, velkin, Вы писали:
V>Связку C#.NET можно заменить на C++.Qt или на что-то менее удобное тоже с C++. Ещё C# используется в некоторых коммерческих игровых движках в качестве скриптового языка, там дополнительно появятся варианты со скриптовыми языками, вроде Lua, Python и так далее.
Предлагаешь asp.net сервисы переписывать на C++ да qt ? Интересная концепция.
Здравствуйте, Pauel, Вы писали:
P>Предлагаешь asp.net сервисы переписывать на C++ да qt ? Интересная концепция.
Обычное веб-приложение лучше переписать на PHP, встраиваемая база Sqlite, серверная Postgres. Но это совет для одинокого разработчика с ограниченными ресурсами.
А так да, можно написать веб-сервер на C++ с Qt, если хватит ресурсов в виде первоклассных программистов, а значит денег и времени. В этом приложении веб-интерфейс может быть всего лишь дополнительной мордой наряду с консольным и графическим интерфейсом. А функциональные возможности такой системы практически безграничны.
Такое приложение может включать в себя как клиент, так и сервер. Быть не только централизованным или децентрализованным, но и распределённым. Согласись, что обычное скриптовое веб-приложение я не могу так просто установить себе на десктоп, ноутбук, смартфон. Но ситуация радикально меняется, если использовать C++ с Qt5.
Видишь там вверху комментарий про то, что язык программирования и библиотеки подбираются под задачу. Но очевидно же, что в такой ответ включены возможности самих разработчиков, такие как умственные, денежные, временные. А имея кучу денег я бы лично нанял первоклассных С++ программистов.
Некоторые решения приходится принимать из-за нищебродства. Даже скрипты и плагины от сторонних разработчиков не нужны, если хватает ресурсов запихнуть всё в главное приложение. Хочу ли я как пользователь писать скрипт или плагин? Нет, не хочу. Я хочу чтобы всё было идеально интегрировано в основное ядро программы и нужный мне функционал сразу работал.
Да, и ещё не стоит забывать, что продукция Майкрософт сильно платная и ничуть не лучше свободных аналогов. Там говорят продажи в России были построены на откатах. Ни один человек в здравом уме не выберет сверх дорогой закрытый продукт, который не только могут, а уже запретили у него в стране, когда рядом первоклассные бесплатные и свободные аналоги.
Я пишу бесплатные и свободные потому, что это не одно и тоже. Свободная программа может быть как платной, так и бесплатной, это несколько раз упоминается в лицензии.
В общем думаю мысль понятна. Денег мало длинный шмель ты в кибитку не хади. Денег много и на C++ можешь с нуля написать любой движок. Те кто пишут скриптовые веб-приложения будут по сравнению с тобой жалкими инвалидами.
Здравствуйте, Shmj, Вы писали:
S>Во-первых, чем C# принципиально отличается от Java?
есть небольшие отличия в семантике.
сборки в C# отличаются от жава — в жава каждый класс компилится в отдельный файл.
сборки шарпа имеют версию, жава нет.
в шарпе можно классы размещать где попало, в жава(и ди) строгое соотвествие названия пакета и класса файловой системе(по моему более удобно и просто).
сейчас за жавой не слежу может еще что-то появилось.
главное что роднит оба яп они оба требуют полной загрузки классов в память. и тут не спасают даже нативные перекомпиляторы.
напишите любой аналог на D, Rust, zig, Nim, C/C++ и вы будете рыдать наблюдая как C# java стартуют, а вышепречисленные уже отработали.
scala clojure имеют еще более жирный рантайм. на глаз заметен более медленный старт по сравнению с жавой.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[4]: Если не C#, тогда что? (и закроем эту тему)
V>Обычное веб-приложение лучше переписать на PHP, встраиваемая база Sqlite, серверная Postgres. Но это совет для одинокого разработчика с ограниченными ресурсами.
Я сейчас одну очень странную веСЧь скажу В некоторых случаях sqlite годится не только в качестве встраиваемой базы, но и вполне даже разделяемой и высоконагруженной. Вот, например, ребятки заморочились и раскочегарили её до каких-то совсем невероятных скоростей: https://blog.expensify.com/2018/01/08/scaling-sqlite-to-4m-qps-on-a-single-server/
К слову, по качеству кода, стабильности и бесперебойности sqlite вообще-то один из лучших в мире программных проектов. Тестовое покрытие в 608 раз больше самого проекта, Карл Смотрите и учитесь у мастеров (https://www.sqlite.org/testing.html). А возможность писать сверхбыстрые хранимки в нативном коде и подрубать их к движку динамической библиотекой — это вообще что-то с чем-то. Для сложного матстата и аналитических баз — то, что доктор прописал. Если же запись превалирует над чтением то, наверное, нет, лучше оставаться в postgres.
Здравствуйте, zx zpectrum, Вы писали:
V>>Обычное веб-приложение лучше переписать на PHP, встраиваемая база Sqlite, серверная Postgres. Но это совет для одинокого разработчика с ограниченными ресурсами. ZZ>Я сейчас одну очень странную веСЧь скажу В некоторых случаях sqlite годится не только в качестве встраиваемой базы, но и вполне даже разделяемой и высоконагруженной.
Это одна из классификаций баз данных. И не важно кто и как использует Sqlite от этого она серверной не станет. У неё файловый доступ, а для серверной нужен сетевой. Для примера серверные это такие базы данных как Postgres, MySQL, SQL Server. Это характеристика самой базы данных, а не стороннего проекта, который её использует, даже если сам проект распределённый.
ZZ>Я сейчас одну очень странную веСЧь скажу В некоторых случаях sqlite годится не только в качестве встраиваемой базы, но и вполне даже разделяемой и высоконагруженной. Вот, например, ребятки заморочились и раскочегарили её до каких-то совсем невероятных скоростей: https://blog.expensify.com/2018/01/08/scaling-sqlite-to-4m-qps-on-a-single-server/
Интересно! ZZ>К слову, по качеству кода, стабильности и бесперебойности sqlite вообще-то один из лучших в мире программных проектов. Тестовое покрытие в 608 раз больше самого проекта, Карл Смотрите и учитесь у мастеров (https://www.sqlite.org/testing.html).
Про это в книжке Эффективное тестирование написано, кстати (см. мой пост пр эту книжку в форуме по тестированию)
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[6]: Если не C#, тогда что? (и закроем эту тему)
V>Это одна из классификаций баз данных. И не важно кто и как использует Sqlite от этого она серверной не станет. У неё файловый доступ, а для серверной нужен сетевой.
Под сетевым доступом ты что имеешь ввиду?
Вообще-то сервер может базу данных от сети полностью экранировать.
Принимая все запросы извне и отправляя их базе данных.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Если не C#, тогда что? (и закроем эту тему)
Здравствуйте, velkin, Вы писали:
V>Связку C#.NET можно заменить на C++.Qt или на что-то менее удобное тоже с C++.
В этих ваших C++ всё ещё у каждой библиотеки свои строки и коллекции?
В Qt всё так же свои QString и вот эти вечные конвертации через char*, чтобы одну и ту же строку между разными библиотеками прокинуть?
Re[6]: Если не C#, тогда что? (и закроем эту тему)
V>Это одна из классификаций баз данных. И не важно кто и как использует Sqlite от этого она серверной не станет. У неё файловый доступ, а для серверной нужен сетевой. Для примера серверные это такие базы данных как Postgres, MySQL, SQL Server. Это характеристика самой базы данных, а не стороннего проекта, который её использует, даже если сам проект распределённый.
Понятное дело. Сетевой, распределённой, производительной и геореплицируемой является совокупность из sqlite и обвязки от этих ребят, а не сама sqlite. Но тем не менее, масштабируемость впечатляет. Причём это не шараш-монтаж какой-то, а весьма известный проект с именитыми клиентами.
Re[4]: Если не C#, тогда что? (и закроем эту тему)
Здравствуйте, velkin, Вы писали:
P>>Предлагаешь asp.net сервисы переписывать на C++ да qt ? Интересная концепция.
V>Обычное веб-приложение лучше переписать на PHP, встраиваемая база Sqlite, серверная Postgres. Но это совет для одинокого разработчика с ограниченными ресурсами.
V>А так да, можно написать веб-сервер на C++ с Qt, если хватит ресурсов в виде первоклассных программистов, а значит денег и времени. В этом приложении веб-интерфейс может быть всего лишь дополнительной мордой наряду с консольным и графическим интерфейсом. А функциональные возможности такой системы практически безграничны.
Последние лет 20 можно говорить уверенно, что ни ресурсов в виде первоклассных программистов, ни денег, ни времени не хватит.
Именно это послужило причиной роста популярности менеджед платформ.
V>Такое приложение может включать в себя как клиент, так и сервер. Быть не только централизованным или децентрализованным, но и распределённым. Согласись, что обычное скриптовое веб-приложение я не могу так просто установить себе на десктоп, ноутбук, смартфон. Но ситуация радикально меняется, если использовать C++ с Qt5.
Не только можешь, но и делаешь. Скайпом пользуешься? Это обычное веб приложение. Teams, Slack — оно же. Посмотри внимательно на софт в телефоне — там найдешь кучу такого же.
Более того, PWA это в чистом виде сайт, сохраненный у тебя на устройстве, который умеет сам себя обновлять.
V>Видишь там вверху комментарий про то, что язык программирования и библиотеки подбираются под задачу. Но очевидно же, что в такой ответ включены возможности самих разработчиков, такие как умственные, денежные, временные. А имея кучу денег я бы лично нанял первоклассных С++ программистов.
Конторы, у которых много денег, шота не торопятся переписывать веб приложения на С++.
Re[5]: Если не C#, тогда что? (и закроем эту тему)
Здравствуйте, zx zpectrum, Вы писали:
ZZ>Я сейчас одну очень странную веСЧь скажу В некоторых случаях sqlite годится не только в качестве встраиваемой базы, но и вполне даже разделяемой и высоконагруженной. Вот, например, ребятки заморочились и раскочегарили её до каких-то совсем невероятных скоростей
Объективные причины для этого есть или ребята просто знали эту СУБД и решили не изучать другие, а прикрутить эту, потому что могут?
ZZ>К слову, по качеству кода, стабильности и бесперебойности sqlite вообще-то один из лучших в мире программных проектов. Тестовое покрытие в 608 раз больше самого проекта, Карл Смотрите и учитесь у мастеров (https://www.sqlite.org/testing.html).
Не знаю что они там тестируют. В первый день знакомства я каждые полчаса тестовую базу пересоздавал, т.к. она падала.
Кончится место на диске — держи сломанную БД, т.к. режим без журнала использовал.
Начинаешь использовать с журналом, по какой-то другой причине ломается БД.
Для меня стабильность СУБД — это когда БД так просто не ломается и падает программа, а не данные.
ZZ>А возможность писать сверхбыстрые хранимки в нативном коде и подрубать их к движку динамической библиотекой — это вообще что-то с чем-то.
UDF так-то не только в SQLite есть
Re[3]: Если не C#, тогда что? (и закроем эту тему)
Здравствуйте, vaa, Вы писали: vaa>напишите любой аналог на D, Rust, zig, Nim, C/C++ и вы будете рыдать наблюдая как C# java стартуют, а вышепречисленные уже отработали.
У дотнета всё не так уж плохо со временем старта. JVM — да, тормоз ещё тот.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[6]: Если не C#, тогда что? (и закроем эту тему)
K>Объективные причины для этого есть или ребята просто знали эту СУБД и решили не изучать другие, а прикрутить эту, потому что могут?
Рассказывали в своё время, что много чего пробовали, но остановились на не совсем привычном решении. У их CEO целая философия вокруг правильного (по его мнению) гео-распределенного хранения данных выстроена: https://review.firstround.com/your-database-is-your-prison-heres-how-expensify-broke-free. Мол-де, три и более легковесных узла хранения на sqlite, размещаемых на разных континентах с первых дней проекта, лучше традиционного подхода с централизованной базой, поверх которой пост-фактум прикручивается распределенность.
На Реддите ему, понятное дело, мягенько насовали за подобный дерзкий абсолютизм, но потом сошлись во мнениях на центральной точке: мол, хорошо живётся Экспенсифаю, множество клиентов с бухгалтерскими данными, нагрузки больше аналитические, чем транзакционные, и поэтому CAP–теорема больно по этой схеме хранения не ударила, а ведь могла бы. Поэтому решение имеет право на жизнь, но не надо безусловно рекомендовать этот опыт другим.
K>Не знаю что они там тестируют. В первый день знакомства я каждые полчаса тестовую базу пересоздавал, т.к. она падала. K>Кончится место на диске — держи сломанную БД, т.к. режим без журнала использовал. K>Начинаешь использовать с журналом, по какой-то другой причине ломается БД. K>Для меня стабильность СУБД — это когда БД так просто не ломается и падает программа, а не данные.
Значит, как-то не так готовили Sqlite солидное изделие, бесперебойно крутящееся чуть более, чем везде, в mission critical в том числе. Однако, его легкомысленное название ("lite") многих сбивает с толку. Tак-то это не самая простая штука. Ей надо проникнуться, а не просто схватить в руки и шарашить.
Re[4]: Если не C#, тогда что? (и закроем эту тему)
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, vaa, Вы писали: vaa>>напишите любой аналог на D, Rust, zig, Nim, C/C++ и вы будете рыдать наблюдая как C# java стартуют, а вышепречисленные уже отработали. S>У дотнета всё не так уж плохо со временем старта. JVM — да, тормоз ещё тот.
на самом деле чистый jvm-код можно настроить на более быстрый старт. например уменьшив максимальный размер кучи до 30-60МБ и другими ключами.
но вот взять любую демку из вебасм фрэймворков, тот же yew раста и блазоровский хелловорд и сравнить. не нужно секундомера чтобы понять что и сколько грузится.
и разве не цель большинства участников данного форума в оптимизации программы, а загрузка это ведь часть процесса.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[2]: Если не C#, тогда что? (и закроем эту тему)
Здравствуйте, velkin, Вы писали:
V>Здравствуйте, vaa, Вы писали:
V>Связку C#.NET можно заменить на C++.Qt или на что-то менее удобное тоже с C++. Ещё C# используется в некоторых коммерческих игровых движках в качестве скриптового языка, там дополнительно появятся варианты со скриптовыми языками, вроде Lua, Python и так далее.
Можно и на брейнфак заменить, только зачем?
C++ давно пора самого в могилу отправить, язык ради языка, а не решения задач бизнеса. Единственное где он хоть как то годен это геймдев.
Re[2]: Если не C#, тогда что? (и закроем эту тему)
Здравствуйте, mtnl, Вы писали:
M>Очевидно, Kotlin M>C# оставим учебным языком для университета (ну как у отцов паскаль был), после которого удобно переходить на Kotlin
Чем он лучше то, в нем даже expression trees нет?
Re[2]: Если не C#, тогда что? (и закроем эту тему)
Здравствуйте, microuser, Вы писали:
M>Здравствуйте, mtnl, Вы писали:
M>>Очевидно, Kotlin M>>C# оставим учебным языком для университета (ну как у отцов паскаль был), после которого удобно переходить на Kotlin M>Чем он лучше то, в нем даже expression trees нет?
S>>>Во-первых, чем C# принципиально отличается от Java?
Gt_>>на C# не напишешь что-то размером с хадуп или cassandra.
M>Голословное необоснованное заявление, технически платформы почти ничем не отличаются
у меня нет заявлений, я озвучил факт. помню майкрософт пыталась налабать аналог хадупу на C# (DryadLINQ) и нешмогла, запихнула hadoop/jvm в свой mssql big data и azure synapse.
даже вещей размером с kafka или spark не наблюдается на C#.
S>>>>Во-первых, чем C# принципиально отличается от Java?
Gt_>>>на C# не напишешь что-то размером с хадуп или cassandra.
M>>Голословное необоснованное заявление, технически платформы почти ничем не отличаются
Gt_>у меня нет заявлений, я озвучил факт. помню майкрософт пыталась налабать аналог хадупу на C# и нешмогла, запихнула hadoop/jvm в свой mssql big data и azure synapse. Gt_>даже вещей размером с kafka или spark не наблюдается на C#.
Gt_>Gt_
Ты ерунду написал, а не факт. Я так про любой язык так написать могу, где хадуп на питоне/го/расте/джаваскрипте и т. д.? Ах нету, ну все пиши пропало, несерьезные языке, на помоечку.
dotnet core появился позже чем вышеперечисленные продукты, до этого смысла писать что либо похожее и смысла не было, т.к. на сервере с линуксом это просто бы не работало.
А сейчас зачем изобретать велосипед, эти продукты можно спокойно использовать на любом языке и платформе включая C#.
Re[4]: Если не C#, тогда что? (и закроем эту тему)
Здравствуйте, Mr.Delphist, Вы писали:
MD>Здравствуйте, microuser, Вы писали:
M>>Здравствуйте, mtnl, Вы писали:
M>>>Очевидно, Kotlin M>>>C# оставим учебным языком для университета (ну как у отцов паскаль был), после которого удобно переходить на Kotlin M>>Чем он лучше то, в нем даже expression trees нет?
MD>Вы про это? https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/expression-trees/
Да
Re[4]: Если не C#, тогда что? (и закроем эту тему)
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, vaa, Вы писали: vaa>>напишите любой аналог на D, Rust, zig, Nim, C/C++ и вы будете рыдать наблюдая как C# java стартуют, а вышепречисленные уже отработали. S>У дотнета всё не так уж плохо со временем старта. JVM — да, тормоз ещё тот.
не стал проверять жаву, но дотнет 6 натив релиз лин64 против раст релиз (консольный ХВ), в среднем 80 к 1.
Это такая столовая ложка дегтя в бочке дотнета.
тот же ди всего 3 к 1.
Здравствуйте, rudzuk, Вы писали:
B>> S>Во-первых, чем C# принципиально отличается от Java?
B>> Тем, что от C# не тошнит!
R>Ты просто привык.
Эх приходится для замарина программировать на Java и отлаживать. Тошнит.
Не знаю, что за Java не для андроида. Но для андроида я так понимаю заменяют котлином и дартом
и солнце б утром не вставало, когда бы не было меня
Re[5]: Если не C#, тогда что? (и закроем эту тему)
Здравствуйте, vaa, Вы писали:
vaa>не стал проверять жаву, но дотнет 6 натив релиз лин64 против раст релиз (консольный ХВ), в среднем 80 к 1. vaa>Это такая столовая ложка дегтя в бочке дотнета. vaa>тот же ди всего 3 к 1.
Здравствуйте, Serginio1, Вы писали:
S> Эх приходится для замарина программировать на Java и отлаживать. Тошнит.
Нунезнаю... Меня от языков вообще не тошнит. Только от одинэскириллица .
S> Не знаю, что за Java не для андроида. Но для андроида я так понимаю заменяют котлином и дартом
Вот и ответ на вопрос: почему ведроид лагает, а яблофон нет
По Котлину уже сами создатели каялись, что навводили фичей и поздно поняли, что зря (на хабре было интервью с главпацаном, который наигрался в игрушку и отошел от дел). Дарт вообще дитя гугловского них-синдрома
В действительности, что жаба, что шарп — все едино, близнецы-братья. Жаба более консервативна, и это хорошо, не будет стыдно за поспешно принятые решения. К шарпу пытаются прикрутить всего и побольше. В результате не язык, а свалка. Вместо того, чтобы сделать нормальную работу с шаблонным кодом, они впендюривают костыль генерик матх и прутся. Тфу на них, обоих двух.
Здравствуйте, vaa, Вы писали:
vaa>не стал проверять жаву, но дотнет 6 натив релиз лин64 против раст релиз (консольный ХВ), в среднем 80 к 1.
А конкретные времена каковы?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[6]: Если не C#, тогда что? (и закроем эту тему)
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, vaa, Вы писали:
vaa>>не стал проверять жаву, но дотнет 6 натив релиз лин64 против раст релиз (консольный ХВ), в среднем 80 к 1. S>А конкретные времена каковы?
C# (.net 6.0.300)
real 0m0,076s
user 0m0,035s
sys 0m0,012s
rustc 1.61.0 (fe5b13d68 2022-05-18)
real 0m0,001s
user 0m0,001s
sys 0m0,000s
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[6]: Если не C#, тогда что? (и закроем эту тему)
сразу не заметил подвоха, что аот только для публикации выполняется. простого билд-релиза не достаточно.
но я все свойства что в статье указал, не только аот.
Здравствуйте, rudzuk, Вы писали:
R>В действительности, что жаба, что шарп — все едино, близнецы-братья. Жаба более консервативна, и это хорошо, не будет стыдно за поспешно принятые решения. К шарпу пытаются прикрутить всего и побольше. В результате не язык, а свалка. Вместо того, чтобы сделать нормальную работу с шаблонным кодом, они впендюривают костыль генерик матх и прутся. Тфу на них, обоих двух.
Категорически не согласен! Тот же Linq, Pattern Matching, Source Generator кстати это и есть замена шаблонов которые создаются с помощью кодогенерации.
Надеюсь прикрутят более интересных инструментов
генерик матх это упрощение работы с числовыми типами. Расширение описания интерфейсов с перегрузкой операторов.
Кроме того куча изменений для ускорения работы с нативом (Span, ref struct,ref fields,Function Pointers) а так же Native AOT
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали: S>генерик матх это упрощение работы с числовыми типами. Расширение описания интерфейсов с перегрузкой операторов.
Помимо генерик матх, static virtual members позволяют, например, обойти ограничение ограничений на конструкторы (pun intended).
Допустим, я хочу, чтобы меня параметризовывали типом, у которого есть конструктор от 1го строкового параметра. В современном дотнете я так сделать не могу, придётся реализовывать двухфазную инициализацию, или городить городушки с активатором (ненадёжно), либо дополнительно параметризовывать фабрикой:
двухфазная инициализация
public interface IRequest: IDisposable
{
void Init(string url);
void Send(byte[] data);
}
public static Send<T>(string url, byte[] data)
where T: IRequest, new
{
using(var t = new T()) // :(
{
t.Init(url);
t.Send(data);
}
}
фабрика
public interface IRequest: IDisposable
{
void Send(byte[] data);
}
public interface IRequestFactory<T>
where T: IRequest
{
T Create(string url);
}
public static Send<T, F>(string url, byte[] data)
where T: IRequest, new
where F: IRequestFactory<T>, new
{
var f = new IRequestFactory(); // :( Ну, мы, конечно можем это закешировать, или обойти через struct, но осадочек остаётся.using(var t = f.Create(url))
t.Send(data);
}
При наличии static virtual всё это можно свернуть в значительно более простую, понятную, и компактную запись:
public interface IRequest<T>: IDisposable
where T: IRequest<T>
{
static virtual T Create(string url);
void Send(byte[] data);
}
public static Send<T>(string url, byte[] data)
where T: IRequest
{
using(var t = T.Create(url))
t.Send(data);
}
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[5]: Если не C#, тогда что? (и закроем эту тему)
Здравствуйте, vaa, Вы писали: vaa>на самом деле чистый jvm-код можно настроить на более быстрый старт. например уменьшив максимальный размер кучи до 30-60МБ и другими ключами.
Удивительный эффект. Не очень понятно, почему стартап JVM зависит от макс. размера кучи; ну, и его сокращение — прямая дорога в ад: ведь чем меньше куча, тем чаще нужно делать GC. vaa>но вот взять любую демку из вебасм фрэймворков, тот же yew раста и блазоровский хелловорд и сравнить. не нужно секундомера чтобы понять что и сколько грузится. vaa>и разве не цель большинства участников данного форума в оптимизации программы, а загрузка это ведь часть процесса.
Загрузка играет роль только в двух сценариях:
1. мы запускаем какое-то приложение для пользователя, и хочется чтобы запуск происходил без визуальных лагов
2. мы запускаем какое-то приложение тысячи раз в секунду, и хочется, чтобы сумма задержек была поменьше.
Вариант 1, по большому счёту, означает, что любые времена лучше 100мс уже устраивают. По моим субьективным впечатлениям, джава ухитряется продолбать даже такую мягкую метрику, несмотря на наличие интерпретатора (== отсутствие JIT-delays).
Вариант 2 — это какие-то утилиты командной строки, которые вызываются над списками в десятки тыщ файлов, при этом сами делают что-то простое. Там да, стартап тайм в 30мс сильно хуже стартап тайма в 3мс, при условии самой работы, занимающей 20мс.
Ну, как бы да — управляемая среда, она не про это. Хотя вот по соседству пишут, что .Net уже и эту нишу окучил благодаря AOT. В Java, как я понимаю, официальный ответ — "поднимайте сервер, а саму утилиту делайте нативным тонким прокси к этому серверу". Ну, вот как языковые сервисы для VS Code — никто в здравом уме не запускает новый экземпляр JVM на каждое событие вроде "code completion".
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[8]: Если не C#, тогда что? (и закроем эту тему)
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, Sinclair, Вы писали:
S>Сразу вспоминается Delphi с виртуальными конструкторами!
Именно, именно. Ну, и class virtual method там тоже были во вполне себе полный рост.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[6]: Если не C#, тогда что? (и закроем эту тему)
Здравствуйте, Sinclair, Вы писали: S>Удивительный эффект. Не очень понятно, почему стартап JVM зависит от макс. размера кучи; ну, и его сокращение — прямая дорога в ад: ведь чем меньше куча, тем чаще нужно делать GC.
по-моему ничего удивительного, просто объем кода который нужно загрузить.
речь идет от минимальном значении. насколько я понимаю, жава при старте пытается зарезервировать указанное значение, инициализируя огромный кусок памяти.
проверял я это еще во времена 1.6. S>Ну, как бы да — управляемая среда, она не про это. Хотя вот по соседству пишут, что .Net уже и эту нишу окучил благодаря AOT. В Java, как я понимаю, официальный ответ — "поднимайте сервер, а саму утилиту делайте нативным тонким прокси к этому серверу". Ну, вот как языковые сервисы для VS Code — никто в здравом уме не запускает новый экземпляр JVM на каждое событие вроде "code completion".
я выше уже приводил, АОТ не работает дальше ХВ(стандартную библиотеку фшарпа не осилил).
Не все же сервера. клиентов больше. и самое странное, что старый дотнет стартовал шустрее.
Неужели библиотеки стали жирнее или настолько изменились технологии. мне кажется 1 плюс возможно большАя связанность тянет за собой кучу кода.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[7]: Если не C#, тогда что? (и закроем эту тему)
Здравствуйте, vaa, Вы писали:
vaa>Здравствуйте, Sinclair, Вы писали: S>>Удивительный эффект. Не очень понятно, почему стартап JVM зависит от макс. размера кучи; ну, и его сокращение — прямая дорога в ад: ведь чем меньше куча, тем чаще нужно делать GC. vaa>по-моему ничего удивительного, просто объем кода который нужно загрузить.
Объём загружаемого кода зависит от того, что написано в main. От размера кучи он никак не зависит.
vaa>речь идет от минимальном значении. насколько я понимаю, жава при старте пытается зарезервировать указанное значение, инициализируя огромный кусок памяти.
Да, у Оракла все советы про оптимизацию стартап тайма сводятся к "покрутите размер кучи" и "установите минимальный размер кучи равный максимальному".
Резервируют они макс. размер; а мин. размер сразу коммитят. Я так понял, что на это время и уходит.
vaa>я выше уже приводил, АОТ не работает дальше ХВ(стандартную библиотеку фшарпа не осилил).
Ну, значит есть к чему стремиться. vaa>Не все же сервера. клиентов больше. и самое странное, что старый дотнет стартовал шустрее.
Вот это странно. Там же наоборот прикрутили множество мер по ускорению — tiered compilation, всё такое. vaa>Неужели библиотеки стали жирнее или настолько изменились технологии. мне кажется 1 плюс возможно большАя связанность тянет за собой кучу кода.
Ну, это нетрудно посмотреть — в блоге про ускорение .Net 7 было показано, как трассировать JIT.
И заодно можно увидеть, сколько всего дёргается перед тем, как hello world получает управление в Main().
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[7]: Если не C#, тогда что? (и закроем эту тему)
Здравствуйте, vaa, Вы писали: vaa>Не все же сервера. клиентов больше. и самое странное, что старый дотнет стартовал шустрее. vaa>Неужели библиотеки стали жирнее или настолько изменились технологии. мне кажется 1 плюс возможно большАя связанность тянет за собой кучу кода.
Ну тут может играть роль оптимизация JIT кода. На Core выполнение быстрее https://devblogs.microsoft.com/dotnet/performance_improvements_in_net_7/
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, vaa, Вы писали:
S>Кстати ты помнится ругался на скорость компиляции в Webassembly S>Интересно изменилась ли скорость в .Net 7 и какова скорость Native AOT
последние опыты в нет7 на ХВ показали быструю компиляцию. вебассембли не проверял.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[9]: Если не C#, тогда что? (и закроем эту тему)
Здравствуйте, vaa, Вы писали: vaa>последние опыты в нет7 на ХВ показали быструю компиляцию. вебассембли не проверял.
Я, похоже, нашёл экспоненциалочку в .Net 6. Есть проектик, в котором код типа такого кладёт компилятор навзничь:
var q =
from x1 in source
from x2 in source
from x3 in source
from x4 in source
from x5 in source
from x6 in source
from x7 in source
from z1 in Result.InitWith(0)
from z2 in Result.InitWith(0)
from z3 in Result.InitWith(0)
from z4 in Result.InitWith(0)
select ValueTuple.Create(
0*z1[-1, -1] + 0*z2[-1, -1] + 0*z3[-1, -1] + 0*z4[-1, -1] + 0*x1 + 0*x2 + 0*x3 + 0*x4 + 0*x5 + 0*x6 + 0*x7,
0*z1[-1, -1] + 0*z2[-1, -1] + 0*z3[-1, -1] + 0*z4[-1, -1] + 0*x1 + 0*x2 + 0*x3 + 0*x4 + 0*x5 + 0*x6 + 0*x7,
0*z1[-1, -1] + 0*z2[-1, -1] + 0*z3[-1, -1] + 0*z4[-1, -1] + 0*x1 + 0*x2 + 0*x3 + 0*x4 + 0*x5 + 0*x6 + 0*x7,
0*z1[-1, -1] + 0*z2[-1, -1] + 0*z3[-1, -1] + 0*z4[-1, -1] + 0*x1 + 0*x2 + 0*x3 + 0*x4 + 0*x5 + 0*x6 + 0*x7);
Конкретно это ещё компилируется за разумное время, но если добавить ещё несколько from, то сборка начинает работать с привычной скоростью С++.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: Если не C#, тогда что? (и закроем эту тему)
Gt_>на C# не напишешь что-то размером с хадуп или cassandra.
С другой стороны, на Java я с трудом себе представляю извраты наподобие таких: https://github.com/Ryujinx/Ryujinx. Под которые кроме садо-мазо-C++ и конкурентов-то нет.
Современный кроссплатформенный Дотнет любят и ценят за другое. За удобнейшую возможность спускаться с высокого уровня на очень низкий. Эмитирование кода на лету, динамические рекомпиляции, дёргание железа, безболезненная интеграция с ОС и нативом, вот это всё.
В секурити и в серверной части, плотно интегрированной со всяческой железячной и низкоуровневой экзотикой, он весьма в ходу, например.
Для классических данных да, лучше брать хоженный вдоль и поперек JVM, с накопленной базой знаний на все вопросы.
.Net в этом отношении в теории как бы не менее мощный, однако куда более экзотичный и экспериментальный.
Т.е. что-то размером с хадуп или cassandra теоретически написать можно, но "полимеров" придется профукать куда больше.
Re[2]: Если не C#, тогда что? (и закроем эту тему)
Для job security – однозначно Подозреваю, что на этих языках будут многовековые проекты. Если человечество доживёт, конечно.
А ежели захочется безопасности в представлении здорового человека — бронебойных mission–critical решений — то почему бы и не Ада?
Это, блин, храм, построенный толковейшими практиками. Каждая мелочь продумана, а не набыдлокожена. После неё всё остальное напоминает какие-то шараш-шиномонтажки и стихийные рынки
Re[4]: Если не C#, тогда что? (и закроем эту тему)
ZZ>Современный кроссплатформенный Дотнет любят и ценят за другое. За удобнейшую возможность спускаться с высокого уровня на очень низкий. Эмитирование кода на лету, динамические рекомпиляции, дёргание железа, безболезненная интеграция с ОС и нативом, вот это всё.
если в самом деле любят, где проекты ? где что-то типа андройд, хадупа, кафки, касандры ? нету же ничего. по мне его любят корпорации описывать унылую бизнес логику, что раньше в сторед процедурах держали.
Re[5]: Если не C#, тогда что? (и закроем эту тему)
Здравствуйте, Gt_, Вы писали:
Gt_>если в самом деле любят, где проекты ? где что-то типа андройд, хадупа, кафки, касандры ? нету же ничего. по мне его любят корпорации описывать унылую бизнес логику, что раньше в сторед процедурах держали.
Здравствуйте, zx zpectrum, Вы писали:
ZZ>А ежели захочется безопасности в представлении здорового человека — бронебойных mission–critical решений — то почему бы и не Ада? ZZ>Это, блин, храм, построенный толковейшими практиками. Каждая мелочь продумана, а не набыдлокожена. После неё всё остальное напоминает какие-то шараш-шиномонтажки и стихийные рынки
Gt_>>если в самом деле любят, где проекты ? где что-то типа андройд, хадупа, кафки, касандры ? нету же ничего. по мне его любят корпорации описывать унылую бизнес логику, что раньше в сторед процедурах держали.
S> https://survey.stackoverflow.co/2022/#most-popular-technologies-misc-tech-prof
S>Обрати внимание на Xamarin и сравни с QT
так то не элита, что работает над серьезными проектами, а индюшатина что настраивает бизнес логику унылых корпоративных систем. я в курсе что таких подавляющее большинство, но им то по барабану чего там язык умеет. у них и питочник в топе.
Re[7]: Если не C#, тогда что? (и закроем эту тему)
S>> https://survey.stackoverflow.co/2022/#most-popular-technologies-misc-tech-prof
S>>Обрати внимание на Xamarin и сравни с QT
Gt_>так то не элита, что работает над серьезными проектами, а индюшатина что настраивает бизнес логику унылых корпоративных систем. я в курсе что таких подавляющее большинство, но им то по барабану чего там язык умеет. у них и питочник в топе.
А кто элита? С++, Фортран, Кобол?
и солнце б утром не вставало, когда бы не было меня
Gt_>>так то не элита, что работает над серьезными проектами, а индюшатина что настраивает бизнес логику унылых корпоративных систем. я в курсе что таких подавляющее большинство, но им то по барабану чего там язык умеет. у них и питочник в топе. S>А кто элита? С++, Фортран, Кобол?
Я перечислил выше проекты
Re[9]: Если не C#, тогда что? (и закроем эту тему)
Gt_>>>так то не элита, что работает над серьезными проектами, а индюшатина что настраивает бизнес логику унылых корпоративных систем. я в курсе что таких подавляющее большинство, но им то по барабану чего там язык умеет. у них и питочник в топе. S>>А кто элита? С++, Фортран, Кобол?
Gt_>Я перечислил выше проекты
И что это за хрень? И при чем тут языки? C# прекрасно работает на андроиде, а pache cassandra это база данных?
Хадуп тоже. При чем тут языки?
и солнце б утром не вставало, когда бы не было меня
Gt_>>Я перечислил выше проекты S>И что это за хрень? И при чем тут языки? C# прекрасно работает на андроиде, а pache cassandra это база данных? S>Хадуп тоже. При чем тут языки?
последняя попытка разжувать: если C# в самом деле хорош и его любят, где серьезные проекты ? почему не видно проектов с серьезной многопоточкой, управлением памятью как у касандры, кафки, спарка ? или хотя бы просто больших проектов, как андройд. все что наблюдаю я на С# — унылая бизнес логика совершенно стандартных прог.
Re[11]: Если не C#, тогда что? (и закроем эту тему)
Gt_>последняя попытка разжувать: если C# в самом деле хорош и его любят, где серьезные проекты ? почему не видно проектов с серьезной многопоточкой, управлением памятью как у касандры, кафки, спарка ? или хотя бы просто больших проектов, как андройд. все что наблюдаю я на С# — унылая бизнес логика совершенно стандартных прог.
Потому что мелкомягкие сделали все что могли, для предотвращения портирования рантайма за пределы windows. Дабы долю windows на серверах окончательно не обнулить.
Единственный более-менее рабочий сторонний рантайм mono который работает Unity,Xamarin,c# в web-assembly создан пиратским образом вопреки всему и его уже транклюкировали.
Плюс опенсорсники автоматически вычеркивают языки и библиотеки, контролируемые корпорациями, из списка на рассмотрение при старте проектов. Ибо фатально.
Re[2]: Если не C#, тогда что? (и закроем эту тему)
T>Потому что мелкомягкие сделали все что могли, для предотвращения портирования рантайма за пределы windows. Дабы долю windows на серверах окончательно не обнулить. T>Единственный более-менее рабочий сторонний рантайм mono который работает Unity,Xamarin,c# в web-assembly создан пиратским образом вопреки всему и его уже транклюкировали. T>Плюс опенсорсники автоматически вычеркивают языки и библиотеки, контролируемые корпорациями, из списка на рассмотрение при старте проектов. Ибо фатально.
ну подожди, .net core уже лет 7 как опенсоурс и кросплатфоменный. метания майкрософт вокруг гуи не столь уж цепляют проекты о которых я говорю.
Re[13]: Если не C#, тогда что? (и закроем эту тему)
Нормальный .net Core >5.0+, это конец 2020. До этого портировать софт с .net framework было больно. И конечно его тут-же сняли с поддержки. Его кроссплатфоменность весьма относительна.
Инструментов разработки аж две штуки — Visual Studio и Rider. Превый требует в "community" постоянной авторизации через учетку майкрософт, второй платный.
Опен-сорсники на такое предложение крутят пальцем у виска.
Поверьте с управлением памятью, многопоточностью и асинхронностью у версий выше .net core 5.0 никаких проблем.
Ранее не было штатных пулов памяти , Span и ref value поэтому высоконагруженный код приходилось писать через unsafe костыли.
С асинхронностью и пулами потоков было нормально где-то с .net framework 4.5
Здравствуйте, Teolog, Вы писали:
T>Плюс опенсорсники автоматически вычеркивают языки и библиотеки, контролируемые корпорациями, из списка на рассмотрение при старте проектов. Ибо фатально.
Что за чушь? На гитхабе проектов на C# чуть больше, чем овер дофига. Да и сам проект C# тоже на гитхабе. О каких опенсорсниках идёт речь?
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Если не C#, тогда что? (и закроем эту тему)
Здравствуйте, vaa, Вы писали:
vaa>не стал проверять жаву, но дотнет 6 натив релиз лин64 против раст релиз (консольный ХВ), в среднем 80 к 1.
Глянуть бы на код тестов. Там работа джита в .net случайно не тестируется? Да и итоговые цифры довести бы хотя бы до нескольксих секунд, чтобы было понятно, что на времена не влияют какие-нибудь флуктуации.
vaa>Это такая столовая ложка дегтя в бочке дотнета.
Да, да. Давай на код глянем.
Если нам не помогут, то мы тоже никого не пощадим.
Re[6]: Если не C#, тогда что? (и закроем эту тему)
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, vaa, Вы писали:
vaa>>не стал проверять жаву, но дотнет 6 натив релиз лин64 против раст релиз (консольный ХВ), в среднем 80 к 1.
IT>Глянуть бы на код тестов. Там работа джита в .net случайно не тестируется? Да и итоговые цифры довести бы хотя бы до нескольксих секунд, чтобы было понятно, что на времена не влияют какие-нибудь флуктуации.
vaa>>Это такая столовая ложка дегтя в бочке дотнета.
IT>Да, да. Давай на код глянем.