Re[15]: Упоротость С++
От: so5team https://stiffstream.com
Дата: 08.09.23 11:52
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>>Только вот .NET -- это не только и не столько про конкретный набор инструкций. Или тот же GC -- это уже не часть платформы .NET?

S>Например компиляция в AOT использует С++ компилятор. Там же присутствует и GC. Где там платформа .NET?

А "там" -- это хде?
Re[14]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 08.09.23 11:52
Оценка:
Здравствуйте, so5team, Вы писали:


S>Все это досужие переливания из пустого в порожнее без учета исторического контекста и достигнутых результатов.

А ну вот и исторический контекст появился! То есть язык изначально не был досконально продуман?
Ок. Я вот приводил пример с TS. Опять же IL в AOT переводят в С++, затем компилруют в натив с учетом GC.
Кто мешает сделать язык, как надстройка над C++, близкий к тому же C#
Но на C# значительно приятнее программировать!
и солнце б утром не вставало, когда бы не было меня
Re[16]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 08.09.23 11:53
Оценка:
Здравствуйте, so5team, Вы писали:

S>Здравствуйте, Serginio1, Вы писали:


S>>>Только вот .NET -- это не только и не столько про конкретный набор инструкций. Или тот же GC -- это уже не часть платформы .NET?

S>>Например компиляция в AOT использует С++ компилятор. Там же присутствует и GC. Где там платформа .NET?

S>А "там" -- это хде?

В AOT или в том же Unity для IOS
и солнце б утром не вставало, когда бы не было меня
Re[17]: Упоротость С++
От: so5team https://stiffstream.com
Дата: 08.09.23 11:58
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>>>>Только вот .NET -- это не только и не столько про конкретный набор инструкций. Или тот же GC -- это уже не часть платформы .NET?

S>>>Например компиляция в AOT использует С++ компилятор. Там же присутствует и GC. Где там платформа .NET?

S>>А "там" -- это хде?

S> В AOT

АОТ -- это всего лишь Ahead of Time. Т.е. один из способов получения кода для исполнения. Вы хотите сказать, что GC присутствует только во время AOT компиляции программы, а после компиляции GC уже нет?
Re[18]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 08.09.23 12:41
Оценка:
Здравствуйте, so5team, Вы писали:


S>АОТ -- это всего лишь Ahead of Time. Т.е. один из способов получения кода для исполнения. Вы хотите сказать, что GC присутствует только во время AOT компиляции программы, а после компиляции GC уже нет?

За GC отвечает отдельная DLL ка. Но в коде С++ присутствует код для сборки мусора.
https://learn.microsoft.com/ru-ru/windows/uwp/dotnet-native/net-native-and-compilation

.NET Native заменяет полную среду CLR на оптимизированную среды выполнения, которая в первую очередь содержит сборщика мусора. Оптимизированная среда выполнения находится в библиотеке mrt100_app.dll, которая является локальной для приложения и имеет размер только несколько сотен килобайт. Это возможно потому, что статическое связывание устраняет необходимость во многих операциях, реализуемых средой CLR.


Это относится к UWP шному .NET Native. .Native AOT должен быть таким же.

Вот D тоже исплользует сборку мусора. Но никакой среды у него нет.
https://ru.wikipedia.org/wiki/D_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)#%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D1%8C%D1%8E

При этом можно включать и отключать сборку мусора

D использует сборщик мусора для управления памятью, однако возможно и ручное управление с помощью перегрузки операторов new и delete, а также с помощью malloc и free, аналогично C. Сборщик мусора можно включать и выключать вручную, можно добавлять и удалять области памяти из его видимости, принудительно запускать частичный или полный процесс сборки. Существует подробное руководство, описывающее различные схемы управления памятью в D для тех случаев, когда стандартный сборщик мусора неприменим.

и солнце б утром не вставало, когда бы не было меня
Отредактировано 08.09.2023 12:55 Serginio1 . Предыдущая версия .
Re[19]: Упоротость С++
От: so5team https://stiffstream.com
Дата: 08.09.23 13:29
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>>АОТ -- это всего лишь Ahead of Time. Т.е. один из способов получения кода для исполнения. Вы хотите сказать, что GC присутствует только во время AOT компиляции программы, а после компиляции GC уже нет?

S> За GC отвечает отдельная DLL ка. Но в коде С++ присутствует код для сборки мусора.
S>https://learn.microsoft.com/ru-ru/windows/uwp/dotnet-native/net-native-and-compilation

Ну вот вам и ответ. Хотя, в вашей упоротости, вы можете сказать, что эта DLL-а к .NET-у не имеет отношения.

S>Вот D тоже исплользует сборку мусора. Но никакой среды у него нет.


Так ведь речь и не про D. К тому же количество платформ, на которые портирован D, не сказать, что большое.

Ну или покажите мне отличный от HelloWorld пример программы на C#, которая была бы написана не под .NET.
Re[20]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 08.09.23 14:12
Оценка:
Здравствуйте, so5team, Вы писали:

S>Здравствуйте, Serginio1, Вы писали:


S>>>АОТ -- это всего лишь Ahead of Time. Т.е. один из способов получения кода для исполнения. Вы хотите сказать, что GC присутствует только во время AOT компиляции программы, а после компиляции GC уже нет?

S>> За GC отвечает отдельная DLL ка. Но в коде С++ присутствует код для сборки мусора.
S>>https://learn.microsoft.com/ru-ru/windows/uwp/dotnet-native/net-native-and-compilation

S>Ну вот вам и ответ. Хотя, в вашей упоротости, вы можете сказать, что эта DLL-а к .NET-у не имеет отношения.

Это просто дллка как в D. Она отвечает за сборку мусора.
S>>Вот D тоже исплользует сборку мусора. Но никакой среды у него нет.

S>Так ведь речь и не про D. К тому же количество платформ, на которые портирован D, не сказать, что большое.

Разговор про сборку мусора!
S>Ну или покажите мне отличный от HelloWorld пример программы на C#, которая была бы написана не под .NET.
Еще раз .Native AOT не использует CLR. Это чисто нативная сборка. И mrt100_app.dll это нативная библиотека. Не в .Native AOT там все в одном файле

https://metanit.com/sharp/tutorial/24.1.php

Там как раз и пример с HelloWorld. Можно использовать на компе без .Net и размер небольшой, по сравнению с CLR

В итоге скомпилированный файл exe можно запускать на 64-разрядных Windows даже там, где не установлен .NET.

Один из главных минусов компиляции в нативное приложение — это его размер, например, как видно на скриншоте при компиляции с .NET 8.0 Preview простое консольное приложение, которое выводит на консоль строку, занимает 1793 Кб. Но стоит отметить, что по сравнению с .NET 7.0 в .NET 8.0 размер нативного приложения значительно уменьшен, и команда разработчиков .NET продолжает работать над этим, поэтому в будущем размер приложения может ужаться значительно. Кроме того, можно применять различные оптимизации. Самая простейшая — использовать инвариантный режим для параметров глобализации, для чего надо добавить в файл проекта настройку

<InvariantGlobalization>true</InvariantGlobalization>
Так, только эта настройка позволила в моем случае уменьшить размер приложения с 1793 КБ до 1567 КБ

В дополнение к большему размеру стоит отметить и некоторые другие недостатки подобной модели публикации. Прежде всего не для всех типов проектов, библиотек и сред данная модель может быть доступна. Так, поддержка консольных приложений добавлена с самого начала — в .NET 7.0. А вот для ASP.NET Core эта модель доступна только начиная с .NET 8.0. Кроме того, поддержка MacOS также добавлена толькр в .NET 8.0 (для Windows и Linux поддержка имеет уже в .NET 7)


Можно еще и оптимизировать
https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/optimizing
и солнце б утром не вставало, когда бы не было меня
Re[21]: Упоротость С++
От: so5team https://stiffstream.com
Дата: 08.09.23 14:29
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>>Ну вот вам и ответ. Хотя, в вашей упоротости, вы можете сказать, что эта DLL-а к .NET-у не имеет отношения.

S> Это просто дллка как в D. Она отвечает за сборку мусора.

Вы не понимаете, что наличие такой DLL-ки и есть та самая песочница, которая вам обеспечена .NET-ом?

S>Еще раз .Native AOT не использует CLR.


Т.е. .NET Native -- это не .NET. Ну раз уж там нет CLR?
Re[22]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 08.09.23 14:54
Оценка:
Здравствуйте, so5team, Вы писали:

S>>>Ну вот вам и ответ. Хотя, в вашей упоротости, вы можете сказать, что эта DLL-а к .NET-у не имеет отношения.

S>> Это просто дллка как в D. Она отвечает за сборку мусора.

S>Вы не понимаете, что наличие такой DLL-ки и есть та самая песочница, которая вам обеспечена .NET-ом?

Наличие сборки мусора не делает D песочницей!
S>>Еще раз .Native AOT не использует CLR.

S>Т.е. .NET Native -- это не .NET. Ну раз уж там нет CLR?

А, что по твоему есть песочница? То есть перевели в С++, скомпилировали, получили размер значительно меньше CLR, запускается без .Net
Это, что? Сборка мусора, это не CLR. Это аналог менеджера памяти, который и в C++ можно засунуть как в D
и солнце б утром не вставало, когда бы не было меня
Re[2]: Упоротость С++
От: dmitry_npi Россия  
Дата: 08.09.23 15:09
Оценка:
Здравствуйте, student__, Вы писали:

__>масса нововедений именно упрощают язык.


Это я согласен. Я больше про то, что пользователи языка стараются навертеть посильнее. Посмотрите, сколько на тут на форуме постов в стиле "я вставил шаблон в шаблон чтобы использовать шаблон пока использую шаблон — посмотрите что не так". Или "я эмулировал фичу, которой нет в языке". Вот именно что заставляет людей такое делать?

__>auto, range-based for loop, starship-operator, треды из коробки,

Это однозначно полезные фичи. Особенно что касается стандартной библиотеки.

__>это вы просто не видели кода стандартной библиотеки C++...

Видел, видел... и с отладчиком ходил. Правда, только в реализацию от MS. Не знаю, что там у gcc и других.
Атмосферная музыка — www.aventuel.net
Re[23]: Упоротость С++
От: so5team https://stiffstream.com
Дата: 08.09.23 15:18
Оценка: :)
Здравствуйте, Serginio1, Вы писали:

S>>Вы не понимаете, что наличие такой DLL-ки и есть та самая песочница, которая вам обеспечена .NET-ом?

S> Наличие сборки мусора не делает D песочницей!

Это вы от большого ума сперва говорите о песочнице, а потом...

S>>Т.е. .NET Native -- это не .NET. Ну раз уж там нет CLR?

S>А, что по твоему есть песочница?

спрашиваете что это за песочница такая?

S>Это, что?


Это то, о чем я говорил раньше
Автор: so5team
Дата: 16.08.23
: "Тогда как для Java или C# есть песочница с некоторыми гарантиями от JVM/.NET".

Когда вы компилируете свой C# хоть под CLR, хоть под .NET Native, вы имеете некоторые гарантии от .NET. Одна из них -- это тот самый GC.

Но я понял, .NET Native у вас это не .NET. Все, узбагойтесь.
Re[24]: Упоротость С++
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 08.09.23 15:43
Оценка:
Здравствуйте, so5team, Вы писали:

S>>>Вы не понимаете, что наличие такой DLL-ки и есть та самая песочница, которая вам обеспечена .NET-ом?

S>> Наличие сборки мусора не делает D песочницей!

S>Это вы от большого ума сперва говорите о песочнице, а потом...

Я такого не говорил!
S>>>Т.е. .NET Native -- это не .NET. Ну раз уж там нет CLR?
S>>А, что по твоему есть песочница?

S>спрашиваете что это за песочница такая?


S>>Это, что?

Я не знаю. Ты почему то её упомянул.
S>Это то, о чем я говорил раньше
Автор: so5team
Дата: 16.08.23
: "Тогда как для Java или C# есть песочница с некоторыми гарантиями от JVM/.NET".


S>Когда вы компилируете свой C# хоть под CLR, хоть под .NET Native, вы имеете некоторые гарантии от .NET. Одна из них -- это тот самый GC.


S>Но я понял, .NET Native у вас это не .NET. Все, узбагойтесь.


Когда ты скомпилируешь С++ ты получаешь некоторые гарантии так же ка и от сборщика мусора!
У вас там куча вариантов ссылок!

Но у .Net много вариантов использования CLR. В том числе и динамическая компиляция, рефлексия итд

Но вообще то речь шла об языках и их проектировании. От натива никуда не деться. В C# например нельзя наследовать структуры итд. То есть по максимуму использовать стек.
Нельзя как в том же D использовать не только сборку мусора, но и ручное управление памятью.

Но вот С++ могли бы многое взять из того же TS для упрощения написания кода и отладки.
Даже сначала в TS появились async/await который компилился в JS, а примерно года через 2 только в JS.
По мне так нужен такой язык над C++, который компилировался в C++, но использовал все парадигмы того же C#, и скрывал недостатки легаси и прочего.
и солнце б утром не вставало, когда бы не было меня
Re[12]: Упоротость С++
От: rameel https://github.com/rsdn/CodeJam
Дата: 09.09.23 22:05
Оценка:
Здравствуйте, so5team, Вы писали:

S>Надо полагать именно поэтому .NET спустя два десятка лет своего безоговорочного доминирования представлен на значительно большем количестве платформ, чем C++. Или...?


Ну да, миллионы мух не могут ошибаться. Или...?

S>Завод по выпуску легковых автомобилей продуман лучше, чем горнообогатительный комбинат.

S>Сравнение такого же качество.

Демагогия и попытка увести разговор в другое русло. Речь шла о вполне конкретном случае, вот его и сравнивай.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[13]: Упоротость С++
От: so5team https://stiffstream.com
Дата: 10.09.23 08:02
Оценка:
Здравствуйте, rameel, Вы писали:

S>>Надо полагать именно поэтому .NET спустя два десятка лет своего безоговорочного доминирования представлен на значительно большем количестве платформ, чем C++. Или...?


R>Ну да, миллионы мух не могут ошибаться. Или...?


А миллионы мух здесь это кто? Производители ОС или железа?
Скажем, Google для своей Фукции использует Си, C++, Rust и Dart, проигнорировав существование .NET. Можно ли считать, что это произошло потому что .NET разработчики .NET смотрели шире?

S>>Завод по выпуску легковых автомобилей продуман лучше, чем горнообогатительный комбинат.

S>>Сравнение такого же качество.

R>Демагогия и попытка увести разговор в другое русло. Речь шла о вполне конкретном случае, вот его и сравнивай.


И какой же это случай, можно конкретнее?

Разговор был о том, что разработчики C# и Java имеют возможность закладываться на некоторые гарантии, которые обеспечиваются .NET-ом и JVM. В качестве примера были приведены размерности char и int. На что было сказано, что это просто потому, что C# лучше продуман.

Я здесь в упор сравнения конкретных случаев не вижу. А вот демагогию в виде "лучше продуман" вижу и не удивлен, т.к. евангелисты .NET на RSDN-е в мастерстве демагогии дадут фору кому угодно.
Re[3]: Упоротость С++
От: Went  
Дата: 10.09.23 09:50
Оценка:
Здравствуйте, dmitry_npi, Вы писали:

_>Это я согласен. Я больше про то, что пользователи языка стараются навертеть посильнее. Посмотрите, сколько на тут на форуме постов в стиле "я вставил шаблон в шаблон чтобы использовать шаблон пока использую шаблон — посмотрите что не так". Или "я эмулировал фичу, которой нет в языке". Вот именно что заставляет людей такое делать?


Тогда почему ваша тема не называется "Упоротость некоторых С++-нишиков"?
Re[14]: Упоротость С++
От: rameel https://github.com/rsdn/CodeJam
Дата: 10.09.23 12:03
Оценка:
Здравствуйте, so5team, Вы писали:

R>>Ну да, миллионы мух не могут ошибаться. Или...?


S>А миллионы мух здесь это кто?


Апелляция к большинству так себе аргумент.

S>Производители ОС или железа?


Производители железа используют C/C++, вовсе не потому, что он такой насквозь продуманный, просто альтернатив особо то и нет, как нет альтернатив javascript'у в браузере, вот и приходится ковырять тем, что есть.

S>Скажем, Google для своей Фукции использует Си, C++, Rust и Dart, проигнорировав существование .NET. Можно ли считать, что это произошло потому что .NET разработчики .NET смотрели шире?


Google много что делает странного, например, Go. И с каких пор гугл равно качество и правильно? И во-вторых, как это связано?

S>И какой же это случай, можно конкретнее?


Платформенно-зависимый тип безальтернативно.

S>Разговор был о том, что разработчики C# и Java имеют возможность закладываться на некоторые гарантии, которые обеспечиваются .NET-ом и JVM. В качестве примера были приведены размерности char и int. На что было сказано, что это просто потому, что C# лучше продуман.


Вот для чего примеры приведены, для того и сказано, чем C# лучше продуман в данном случае. Я не вижу здесь утверждения, что C# во всем лучше продуман, у него своих косяков хватает, и даже таких, что были заимствованы из C/C++, может и не напрямую, но все же.

S>т.к. евангелисты .NET на RSDN-е в мастерстве демагогии дадут фору кому угодно.


Какую бы фору не давали, адепты C/C++ все равно вне конкуренции)
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[15]: Упоротость С++
От: so5team https://stiffstream.com
Дата: 10.09.23 12:33
Оценка:
Здравствуйте, rameel, Вы писали:

R>Апелляция к большинству так себе аргумент.


Это не ответ на вопрос. Так кого следует понимать под миллионом мух? Ведь платформы для ОС или для аппаратно-программных комплексов выбирает далеко не так много людей, если сравнивать, например, с разработкой pet-project-а в свободное время.

S>>Производители ОС или железа?


R>Производители железа используют C/C++, вовсе не потому, что он такой насквозь продуманный, просто альтернатив особо то и нет, как нет альтернатив javascript'у в браузере, вот и приходится ковырять тем, что есть.


Если у какого-то продукта есть преимущества, то этот продукт с течением времени вытесняет конкурентов. Это видно на примере того же JavaScript, который сначала должен был добавлять динамику для веб-страничек, а сейчас используется для разработки, в том числе и десктоп приложений.

Соответственно, если платформа .NET была хорошо продумана и ее разработчики смотрели куда шире, то где результаты? А если результатов нет, то может все не так однозначно?

В конце-концов программные продукты масштаба .NET создают не ради любви к искусству и не для того, чтобы показать что что-то в принципе возможно, а для достижения каких-то целей.

S>>Скажем, Google для своей Фукции использует Си, C++, Rust и Dart, проигнорировав существование .NET. Можно ли считать, что это произошло потому что .NET разработчики .NET смотрели шире?


R>Google много что делает странного, например, Go.


Go решил проблему, которая у них была.
И, как ни странно, Go пришелся ко двору еще много кому, т.к. другие сталкивались с похожими проблемами.

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

R>И с каких пор гугл равно качество и правильно?


Google просто как пример конторы, в которой далеко не самые глупые люди пошли на создание новой ОС. Но почему-то они не захотели повторять какой-нибудь Midori OS или Singularity.

R>И во-вторых, как это связано?


См. выше на счет того, что если у продукта есть преимущества, то эти преимущества будут эксплуатироваться.

S>>И какой же это случай, можно конкретнее?


R>Платформенно-зависимый тип безальтернативно.


OK. Т.е. нужно рассмотреть тот факт, что в C#/Java количество бит для типов вроде char и int зафиксировано и гарантировано как тот самый аспект, в котором язык (конкретно C#) продуман лучше, чем C++. Правильно я понял ваше пожелание?
Re[4]: Упоротость С++
От: dmitry_npi Россия  
Дата: 10.09.23 13:51
Оценка:
Здравствуйте, Went, Вы писали:

W>Тогда почему ваша тема не называется "Упоротость некоторых С++-нишиков"?


Подозреваю, что-то в языке заставляет людей такое делать. Или культура использования С++ как-то поощряет такие костыли. (почему?)
Атмосферная музыка — www.aventuel.net
Re[5]: Упоротость С++
От: Went  
Дата: 11.09.23 13:26
Оценка:
Здравствуйте, dmitry_npi, Вы писали:

_>Здравствуйте, Went, Вы писали:


W>>Тогда почему ваша тема не называется "Упоротость некоторых С++-нишиков"?


_>Подозреваю, что-то в языке заставляет людей такое делать. Или культура использования С++ как-то поощряет такие костыли. (почему?)

Не заставляет, а позволяет. Если кто-то захотел повыделываться и написал что-то монструозное просто потому что С++ это позволяет — это не проблема языка. Если кто-то не может собрать мысли в кучку и пишет говнокод только потому что он компилируется — это не проблема языка. Если кто-то совсем не учится или не воспринимает советы и использует конструкции не по назначению — это тоже не проблема языка. Я сейчас вынужден отложить С++ и работаю над чужим проектом на C#. Так вот столько монструозного говнокода, использующего возможности языка не по назначению, я на С++ не видел за всю жизнь.
Re[7]: Упоротость С++
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 26.09.23 19:25
Оценка:
Здравствуйте, Alekzander, Вы писали:

A>>>Ага. Только вот Microsoft ещё в 90-х написала свою стандартную библиотеку (если совсем точно, то за год до степановской наркомании).

S>>Ага. Только это не работало нигде больше.
S>>Так что стандартной она не была просто о смысла слова "стандартный".

A>Аргумент: ошибки в комитетовском дизайне C++ (сравнительно с C#) надо простить, потому, что C++ появился намного раньше C#.

A>Возражение: альтернативный майкрософтовский дизайн C++ тоже появился намного раньше C#, и даже раньше STL, который лёг в основу комитетовского дизайна, и там всё было хорошо и просто.
A>Контрвозражение: э... э... щас чё-нить придумаем... а альтернативный майкрософтовский дизайн больше нигде не работал, вот!

А можно узнать, что это за альтернативный майкрософтовский дизайн?
Маньяк Робокряк колесит по городу
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.