Здесь вопрос в том, что понимать под 'легче'. В моем комментарии под этим подразумевалась сложность разработки, а не освоения. Я согласен с тем, что С++/CLI не так то и прост в плане освоения. Но в плане разработки GUI-части, WinForms явно проще чем WinAPI, MFC и WTL.
На данный момент std::start_lifetime_as немного кривой: он в некоторых компиляторах генерирует излишний код: https://godbolt.org/z/EfbMva5Te. Как видно из приведенного кода, лучше использовать std::bit_cast. Кроме того, std::bit_cast требует C++20, а не C++23.
На WinAPI разрабатывать проект со сложным GUI тяжело. MFC и WTL это достаточно сложные обертки над WinAPI. Те же WinForms значительно легче, хотя это также обертка над WinAPI, и там не чистый C++, а С++/CLI. Есть еще WPF но там тоже С++/CLI и нет дизайнера окон (он есть только для проектов на настоящих managed языках типа C#). Следует также сказать, что Microsoft не советует использовать С++/CLI. Qt на выходе дает бинарные файлы большого размера (если статическая линковка), или надо распространять с .dll-файлами библиотек Qt, что выливается также в большой размер сборок.
Windows XP не поддерживала Secure Boot (базовое требование античитов некоторых игр сегодня), загрузку в UEFI режиме (т. е. только MBR диски, а не GPT), UAC (любой пользователь с админ правами всегда сидит под root), ASLR (рандомизация адрессного пространства).
А зачем устанавливать Git for Windows, если он в данной инструкции применяется только для скачивания (клонирования) GitHub-репозитория? Скачать репозиторий в zip-файле с GitHub можно посредством браузера, который уже встроен в Windows. А распаковать zip-файл сможет Windows Explorer.
Да, хуже чем Windows 8. Единственная моя претензия к Windows 8: нет классического пуска, и все. Но если очень хочется нормальный "пуск", то Classic Shell или Start8.
Не правильнее ли во время чтения парсить? -- ну так вначале все равно надо прочитать. Или вот потом сгенерировать большой выхлоп программы: пишем все строку, а потом выводим одним вызовом write. Так будет быстрее. Операции с диском небыстрые относительно операций с данными из ОЗУ. Вообще, по-хорошему, чтобы прочитать, рекомендуется делать mmap/madvice/munmap.
А вот на самом деле, тут Windows права. Ибо стандарт ISO C11 (Annex K) резервирует функции типа strcat_s, strcpy_s и strcmp_s . Строго следуя стандарту языка языка С, программы не имеют права определять собственные функции с этими именами. В libc для Linux по умолчанию эти функции скрыты. Чтобы gcc с libc их увидел, надо писать #define __STDC_WANT_LIB_EXT1__ 1. В Windows эти функции были давно, до С11, как нестандартные расширения.
И кстати, заявлено, что собирается любым C99/C11 компилятором. Но это не так, например: gcc 16.1.0 на Windows падает с ошибкой, ибо strcat_s это нестандартная функция из состава стандартной C библиотеки под Windows, а перегрузки функций в C нет. Проект, однако, собирается на g++ под Windows, но это компилятор языка C++, а не C.
Памяти много, 4+ GiB не жалко. Распарсить какой-нибудь большой датасет там: раз памяти много, то чтобы быстрее обработать можно загрузить сразу все. Стандартный std::string может содержать '\0' в середине строки. ReadFile из WinAPI или std::fread из <cstdio> спокойно прочитают контент с символом '\0'. WriteFile из WinAPI или std::fwrite из <cstdio> спокойно запишут контент с символом '\0' в середине. Правда, следует проявлять осторожность при подаче результата от .data() в функцию, которая ожидает нуль-терминированную строку типа char*.
Вот кстати не понимаю тех, кто пишет, что школа необходима для социализации. На мой взгляд, для социализации достаточна какая-нибудь спортивная секция (или там художественная или музыкальная школа). Только здесь конечно вопрос в том, как сейчас набирают в спортивные секции: в моем детстве туда хотели набирать только "перспективных".
Если у ребенка в 13-14 лет появится мечта выиграть олимпиаду топового уровня, и он до этого олимпиадами не занимался, то это уже, как правило, слишком поздно: чтобы выиграть олимпиаду топового уровня, нужно начинать заниматься значительно раньше.
Так WebView2 доступен много где: WinUI 3/WinForms/WPF. Почему бы не делать на WPF, там и на C++/CLI можно, и распространение стандартным образом. В WinUI 3 C++ более-менее стандартный, или какой-то нестандартный диалект типа C++/CLI?
1) Это не обозначение, которое очевидно. Его можно понимать как последовательность комплексных чисел. Но некорректность применения готовых формул логарифма для вычисленияэто не снимает. Множестваиразличны. Как определены операции для чисел видане дано. 3) А в статье вы так пишете, не различаяи. 6) Это как раз точные вычисления. 4.0000000000025, 4.0000000000026 и 4 это принципиально разные вещественные числа. Как они получены неважно. С точки зрения определения действительного числа они различны. Ознакомьтесь вначале с определением вещественного числа в математике. У вас приближенные вычисления, а не точные. 8) При том, что это некорректно. Согласно вашему примеру, читатель может подумать, что целая часть числа 1.3 это 2, чтобы целая часть определалась согласованным образом для всех действительных чисел.
Unisys ClearPath Dorado
Так и в C# c WinForms/WPF всё было просто. В С++Builder тоже несложно было, но там своя специфика.
Здесь вопрос в том, что понимать под 'легче'. В моем комментарии под этим подразумевалась сложность разработки, а не освоения. Я согласен с тем, что С++/CLI не так то и прост в плане освоения. Но в плане разработки GUI-части, WinForms явно проще чем WinAPI, MFC и WTL.
На данный момент std::start_lifetime_as немного кривой: он в некоторых компиляторах генерирует излишний код: https://godbolt.org/z/EfbMva5Te. Как видно из приведенного кода, лучше использовать std::bit_cast. Кроме того, std::bit_cast требует C++20, а не C++23.
На WinAPI разрабатывать проект со сложным GUI тяжело. MFC и WTL это достаточно сложные обертки над WinAPI. Те же WinForms значительно легче, хотя это также обертка над WinAPI, и там не чистый C++, а С++/CLI. Есть еще WPF но там тоже С++/CLI и нет дизайнера окон (он есть только для проектов на настоящих managed языках типа C#). Следует также сказать, что Microsoft не советует использовать С++/CLI. Qt на выходе дает бинарные файлы большого размера (если статическая линковка), или надо распространять с .dll-файлами библиотек Qt, что выливается также в большой размер сборок.
Windows XP не поддерживала Secure Boot (базовое требование античитов некоторых игр сегодня), загрузку в UEFI режиме (т. е. только MBR диски, а не GPT), UAC (любой пользователь с админ правами всегда сидит под root), ASLR (рандомизация адрессного пространства).
Так давайте тогда поставим Visual Studio полностью, ведь она может быть также использована для других задач.
А зачем устанавливать Git for Windows, если он в данной инструкции применяется только для скачивания (клонирования) GitHub-репозитория? Скачать репозиторий в zip-файле с GitHub можно посредством браузера, который уже встроен в Windows. А распаковать zip-файл сможет Windows Explorer.
Да, хуже чем Windows 8. Единственная моя претензия к Windows 8: нет классического пуска, и все. Но если очень хочется нормальный "пуск", то Classic Shell или Start8.
Ну это дело вкуса. Я вот считаю интерфейс Windows XP худшим за всю историю Windows, начиная с Windows 95.
Не правильнее ли во время чтения парсить? -- ну так вначале все равно надо прочитать. Или вот потом сгенерировать большой выхлоп программы: пишем все строку, а потом выводим одним вызовом write. Так будет быстрее. Операции с диском небыстрые относительно операций с данными из ОЗУ. Вообще, по-хорошему, чтобы прочитать, рекомендуется делать mmap/madvice/munmap.
А вот на самом деле, тут Windows права. Ибо стандарт ISO C11 (Annex K) резервирует функции типа
strcat_s,strcpy_sиstrcmp_s. Строго следуя стандарту языка языка С, программы не имеют права определять собственные функции с этими именами. В libc для Linux по умолчанию эти функции скрыты. Чтобы gcc с libc их увидел, надо писать#define __STDC_WANT_LIB_EXT1__ 1. В Windows эти функции были давно, до С11, как нестандартные расширения.И кстати, заявлено, что собирается любым C99/C11 компилятором. Но это не так, например: gcc 16.1.0 на Windows падает с ошибкой, ибо strcat_s это нестандартная функция из состава стандартной C библиотеки под Windows, а перегрузки функций в C нет. Проект, однако, собирается на g++ под Windows, но это компилятор языка C++, а не C.
Памяти много, 4+ GiB не жалко. Распарсить какой-нибудь большой датасет там: раз памяти много, то чтобы быстрее обработать можно загрузить сразу все. Стандартный std::string может содержать '\0' в середине строки. ReadFile из WinAPI или std::fread из <cstdio> спокойно прочитают контент с символом '\0'. WriteFile из WinAPI или std::fwrite из <cstdio> спокойно запишут контент с символом '\0' в середине. Правда, следует проявлять осторожность при подаче результата от .data() в функцию, которая ожидает нуль-терминированную строку типа char*.
Ну мне понадобиться. Прочитать > 4 GiB файл полностью.
А что по OrderBy? Было бы интересно увидеть для OrderBy и его сравнение с Sort.
Вот кстати не понимаю тех, кто пишет, что школа необходима для социализации. На мой взгляд, для социализации достаточна какая-нибудь спортивная секция (или там художественная или музыкальная школа). Только здесь конечно вопрос в том, как сейчас набирают в спортивные секции: в моем детстве туда хотели набирать только "перспективных".
Если у ребенка в 13-14 лет появится мечта выиграть олимпиаду топового уровня, и он до этого олимпиадами не занимался, то это уже, как правило, слишком поздно: чтобы выиграть олимпиаду топового уровня, нужно начинать заниматься значительно раньше.
Так WebView2 доступен много где: WinUI 3/WinForms/WPF. Почему бы не делать на WPF, там и на C++/CLI можно, и распространение стандартным образом. В WinUI 3 C++ более-менее стандартный, или какой-то нестандартный диалект типа C++/CLI?
1) Это не обозначение, которое очевидно. Его можно понимать как последовательность комплексных чисел. Но некорректность применения готовых формул логарифма для вычисления
это не снимает. Множества
и
различны. Как определены операции для чисел вида
не дано.
и
.
. Как они получены неважно. С точки зрения определения действительного числа они различны. Ознакомьтесь вначале с определением вещественного числа в математике. У вас приближенные вычисления, а не точные.
3) А в статье вы так пишете, не различая
6) Это как раз точные вычисления. 4.0000000000025, 4.0000000000026 и 4 это принципиально разные вещественные числа
8) При том, что это некорректно. Согласно вашему примеру, читатель может подумать, что целая часть числа 1.3 это 2, чтобы целая часть определалась согласованным образом для всех действительных чисел.