The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Релиз набора компиляторов GCC 13

26.04.2023 16:37

После года разработки опубликован релиз свободного набора компиляторов GCC 13.1, первый значительный выпуск в новой ветке GCC 13.x. В соответствии с новой схемой нумерации выпусков, версия 13.0 использовалась в процессе разработки, а незадолго до выхода GCC 13.1 уже ответвилась ветка GCC 14.0, на базе которой будет сформирован следующий значительный релиз GCC 14.1.

Основные изменения:

  • В состав GCC принят фронтэнд для сборки программ на языке программирования Modula-2. Поддерживается сборка кода, соответствующего диалектам PIM2, PIM3 и PIM4, а также принятому ISO-стандарту для данного языка.
  • В дерево исходных текстов GCC добавлен фронтэнд c реализацией компилятора языка Rust, подготовленного проектом gccrs (GCC Rust). В текущем виде фронтэнд отмечен как экспериментальный и отключён по умолчанию. После доведения фронтэнда до готовности (ожидается в следующем выпуске), штатный инструментарий GCC сможет использоваться для компиляции программ на языке Rust без необходимости установки компилятора rustc, построенного с использованием наработок LLVM.
  • В механизм оптимизации на этапе связывания (LTO) добавлена поддержка cервера управления заданиями (jobserver), поддерживаемого проектом GNU make для оптимизации выполнения параллельной сборки в несколько потоков. В GCC jobserver применяется для распараллеливания работ при LTO-оптимизации в контексте всей программы (WPA, Whole-program Analysis). Для взаимодействия с jobserver по умолчанию применяются именованные каналы (--jobserver-style=fifo).
  • В статическом анализаторе (-fanalyzer) предложено 20 новых диагностических проверок, среди которых "-Wanalyzer-out-of-bounds", "-Wanalyzer-allocation-size", "-Wanalyzer-deref-before-check", "-Wanalyzer-infinite-recursion" -Wanalyzer-jump-through-null", "-Wanalyzer-va-list-leak".
  • Реализована возможность вывода диагностики в формате SARIF, основанном на JSON. Новый формат можно использовать для получения результатов статического анализа (GCC -fanalyzer), а также для получения сведений о предупреждениях и ошибках. Включение производится опцией "-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file", где опции с "json" приводят к выводу в специфичном для GCC варианте формата JSON.
  • Реализованы некоторые возможности, определённые в Си-стандарте C23, такие как константа nullptr для определения нулевых указателей, упрощение использования списков с переменным числом аргументов (variadic), расширение возможностей перечислений, атрибут noreturn, разрешение использования constexpr и auto при определении объектов, операторы typeof и typeof_unqual, новые ключевые слова alignas, alignof, bool, false, static_assert, thread_local и true, разрешение указания пустых скобок при инициализации.
  • Реализованы некоторые возможности, определённые в стандарте C++23, такие как возможность размещения меток в конце составных выражений, совместимость с типом char8_t, директива препроцессора #warning, разделённые (\u{}, \o{}, \x{}) и именованные ('\N{LATIN CAPITAL LETTER A}') escape-последовательности, static operator(), static operator[], оператор равенства внутри выражений, исключение некоторых ограничений по использованию constexpr, поддержка UTF-8 в исходных текстах.
  • В libstdc++ улучшена экспериментальная поддержка стандартов C++20 и C++23, например, добавлена поддержка заголовочного файла <format> и std::format, расширены возможности заголовочного файла <ranges>, добавлены дополнительные типы с плавающей запятой, реализованы заголовочные файлы <experimental/scope> и <experimental/synchronized_value>.
  • Добавлены новые атрибуты функций для документирования того, что в целочисленной переменной передаётся файловый дескриптор: "__attribute__((fd_arg(N)))", "__attribute__((fd_arg_read(N)))" и "__attribute__((fd_arg_write(N)))". Указанные атрибуты могут использоваться в статическом анализаторе (-fanalyzer) для выявления некорректной работы с файловыми дескрипторами.
  • Добавлен новый атрибут "__attribute__((assume(EXPR)))", при помощи которого можно сообщить компилятору, что выражение истинно и компилятор может использовать данный факт это без вычисления выражения.
  • Добавлен флаг "-fstrict-flex-arrays=[level]" для выбора поведения при обработке гибкого элемента-массива в структурах (Flexible Array Members, массив неопределённого размера в конце структуры, например, "int b[]").
  • Добавлен флаг "-Wenum-int-mismatch" для вывода предупреждений в случае несоответствия между перечисляемым типом и целым типом.
  • Во фронтэнде для языка Fortran полностью реализована поддержка финализации.
  • Во фронтэнде для языка Go добавлена поддержка обобщённых функций и типов (дженериков), обеспечена совместимость с пакетами для языка Go 1.18.
  • В бэкенде для архитектуры AArch64 реализована поддержка CPU Ampere-1A (ampere1a), Arm Cortex-A715 (cortex-a715), Arm Cortex-X1C (cortex-x1c), Arm Cortex-X3 (cortex-x3) и Arm Neoverse V2 (neoverse-v2). В опцию "-march=" добавлена поддержка аргументов "armv9.1-a", "armv9.2-a" и "armv9.3-a". Добавлена поддержка процессорных расширений FEAT_LRCPC, FEAT_CSSC и FEAT_LSE2.
  • В бэкенд для архитектуры ARM добавлена поддержка CPU STAR-MC1 (star-mc1), Arm Cortex-X1C (cortex-x1c) и Arm Cortex-M85 (cortex-m85).
  • В бэкенд для архитектуры x86 добавлена поддержка процессоров Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, Granite Rapids, а также процессоров AMD Zen 4 (znver4). Реализованы предложенные в процессорах Intel расширения архитектуры набора команд AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT и AMX-COMPLEX. Для языков C и C++ на системах с SSE2 предоставлен тип __bf16.
  • В бэкенде генерации кода для GPU AMD Radeon (GCN) реализована возможность использования ускорителей AMD Instinct MI200 для повышения производительности OpenMP/OpenACC. Улучшена векторизация с использованием инструкций SIMD.
  • Значительно расширены возможности бэкенда для платформы LoongArch.
  • В бэкенде для архитектуры RISC-V добавлена поддержка CPU T-Head's XuanTie C906 (thead-c906). Реализована поддержка векторных обработчиков, определённых в спецификации RISC-V Vector Extension Intrinsic 0.11. Добавлена поддержка 30 расширений спецификаций RISC-V.
  • При формировании разделяемых объектов с указанием опции "-shared" прекращено добавление кода запуска после добавления окружения для вычислений с плавающей запятой, если включены оптимизации "-Ofast", "-ffast-math" или "-funsafe-math-optimizations".
  • Поддержка отладочного формата DWARF реализована почти во всех конфигурациях.
  • Добавлена опция "-gz=zstd" для сжатия отладочной информации с использованием алгоритма Zstandard. Прекращена поддержка устаревшего режима сжатия отладочной информации "-gz=zlib-gnu".
  • Добавлена начальная поддержка OpenMP 5.2 (Open Multi-Processing) и продолжена реализация стандартов OpenMP 5.0 и 5.1, определяющих API и способы применения методов параллельного программирования на многоядерных и гибридных (CPU+GPU/DSP) системах с общей памятью и блоками векторизации (SIMD).
  • Прекращена поддержка устаревшего формата хранения отладочной информации "STABS" (включался опциями -gstabs и -gxcoff), созданного в 1980-е годы и применяемого в отладчике dbx.
  • Объявлена устаревшей поддержка Solaris 11.3 (код для поддержки данной платформы будет удалён в следующем выпуске).


  1. Главная ссылка к новости (https://gcc.gnu.org/pipermail/...)
  2. OpenNews: В состав GCC включена поддержка языка программирования Modula-2
  3. OpenNews: Фронтэнд для языка Rust доведён до готовности к интеграции в GCC 13
  4. OpenNews: Релиз набора компиляторов GCC 12
  5. OpenNews: Проект по добавлению в GCC поддержки распараллеливания процесса компиляции
  6. OpenNews: Проект GCC разрешил приём изменений без передачи Фонду СПО прав на код
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/59038-gcc
Ключевые слова: gcc, compile
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (310) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 17:09, 26/04/2023 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –7 +/
     

     ....ответы скрыты (4)

  • 1.2, asdasd (?), 17:09, 26/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –8 +/
    > разрешение использования constexpr и auto при определении объектов

    На кой auto в C? В C++ он нужен из-за монструозных template'тов.

     
     
  • 2.4, warlock66613 (ok), 17:13, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Для уменьшения дублирования кода.
     
     
  • 3.58, Аноним (58), 21:31, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    И прострела пяток поизящнее, как на JS :)
     
     
  • 4.76, warlock66613 (ok), 22:01, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > И прострела пяток поизящнее, как на JS :)

    На самом деле применение автовывода типов может помогать бороться со слабостями системы типов.

    Например, в C# есть атавизм в конструкции 'foreach': 'foreach(ItemType item in collection)' неявно приводит элементы 'collection' к типу 'ItemType'. Поэтому возможность писать 'foreach(var item in collection)' позволяет перенести часть ошибок с этапа выполнения на этап компиляции.

    В Си тоже есть такие слабости типизации, которые могут быть устранены умелым применением 'auto'.

     
     
  • 5.78, Аноним (78), 22:06, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    И обувает статический анализатор на возможность проверить баганул ли тут кодер и... большой текст свёрнут, показать
     
     
  • 6.93, Илья (??), 22:51, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Софт на шарпее вообще любит крайне неочевидно баговать, течь и проч и отлаживать его занятие очень на любителя. Неявная автоматика один из замечательных методов прострела себе пяток.

    Очень интересно было бы пример услышать. Я думаю, ты выдаёшь желаемое за действительное.

    Дебаггер работает отлично, средства анализа кода лучшие из всего, что представлено на рынке. Решарпер, рослин. Райдер и visual studio или vocoder как среды разработки. Статическая типизация везде. Есть даже di контейнер, который на этапе компиляции не пропускает забыть регистрацию.


    Что тебе ещё надо?
    Чего тебе ещё надо?

     
     
  • 7.109, Аноним (-), 01:14, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Например малоочевидные утечки памяти в мало-мальски крупных дотнет программах пр... большой текст свёрнут, показать
     
     
  • 8.150, Инжиниринг (?), 10:16, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это не общеизвестный пример Есть ссылка на баги в таких проектах ... текст свёрнут, показать
     
     
  • 9.216, InuYasha (??), 17:50, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Я под НДА, но проекты на моно у нас текут Могу сказать только что там дохрена-д... текст свёрнут, показать
     
  • 9.236, Аноним (-), 23:06, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Те проекты - confidential proprietary и сослаться на это вообще совсем не вариан... текст свёрнут, показать
     
  • 6.108, Аноним (108), 01:12, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Всегда удивляло что находятся люди, которые избыточный код считают дополнительной проверкой.
     
  • 6.207, warlock66613 (ok), 16:49, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Например как?

    Например если взять следующий код без авто.

        short i = -3;
        unsigned short u = i;

    Тут будет неявное преобразование типа. С авто его не будет.

        short i = -3;
        auto u = i;

     
     
  • 7.237, Аноним (237), 23:10, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >     short i = -3;
    >     unsigned short u = i;

    При том если вы написали unsigned вы реально имели в виду намерение поработать с положительными числами и дальнейший код, вероятно, уповал на данное допущение. За вон то - можно варнинг в два счета получить, особенно если вас хватит на -Wconversion.

    > Тут будет неявное преобразование типа. С авто его не будет.

    И варнинг за назначение знакового беззнаковому, что явно баг.

    >     short i = -3;
    >     auto u = i;

    А вот тут варнингов не будет, но если вы вон там unsigned писали, вероятно, дальнейшая логика этого хотела, но вы заныкали это намерение и вот тут варнинга уже не будет. Добро пожаловать в мир багов. И спасибо за отличную иллюстрацию как именно можно стрельнуть себе в пятку auto.

     
  • 5.90, Илья (??), 22:39, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Например, в C# есть атавизм в конструкции 'foreach': 'foreach(ItemType item in collection)' неявно приводит элементы 'collection' к типу 'ItemType'.

    В c# в обоих случаях с типом не будет проблем.

    Давай пример, а?

     
  • 2.5, Жироватт (ok), 17:16, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Для детей, выросших на всяких нескучных язычках с выводм типа при копиляции? Ну чтобы не пугать их компиляторозависимыми {инт, инт_малый, инт_большой, инт_оче_большой, инт_с_перламутровыми_пуговицами, инт_от_майкрософтов}.
    А может в качестве иллюстрации того, что почти все типы в С так или иначе есть особо интерпретирумое в зависимости от указнного в коде токена, int.
    А может просто, по приколу, чтобы число-размер от sizeof(х) было нескучным.
     
     
  • 3.7, Аноним (7), 17:32, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В си всё void* и любые типы это всего-лишь небольшой сахарок компилятора, было бы чем пугать. Мне кажется сомнительной идея перетягивать всё из плюсов, всё равно типизации в языке 0.
     
     
  • 4.13, Жироватт (ok), 17:51, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Ну, указатели (тупо целое положительное число в hex) уже вводит их в ступор.
    И если с функцией, возвращающее это число, они еще более-менее справляются, и даже могут дать команду освободить занятое по нему, то примитивнейшая арифметика с ним, их уже выводит в кататонический ступор.
    А ты говоришь чем пугать, чем пугать.
    > Мне кажется сомнительной идея перетягивать всё из плюсов,

    Ну, лишний сахарок, если его немного, редко когда откровенно вредным. Особенно если он сможет в распознавание user-defined типо, вроде struct this_is_very_important_self_documented_struct_type_caption_of_piece_userdata_staff, спрятанного в заголовочнике

     
     
  • 5.77, warlock66613 (ok), 22:05, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > указатели (тупо целое положительное число в hex)

    Oh, my sweet summer child…

     
     
  • 6.80, Аноним (78), 22:08, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не пугай кататоника.
     
  • 6.132, Жироватт (ok), 08:16, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Таки шо вы таки говорите...
     
  • 6.228, Аноним (228), 21:12, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Оно точно положительное? Есть отрицательный указатель? Может просто hex для удобства, а на самом деле указатель и в двоичной и в десятичной и в восмеричной нотации можно написать?
     
     
  • 7.265, n00by (ok), 07:10, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Адрес в памяти по определению положителен. Указатель помимо адреса может включать содержимое сегментного регистра, например.
     
     
  • 8.277, warlock66613 (ok), 10:49, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Я бы для начала спросил а является ли указатель числом адресом И ответ нет,... текст свёрнут, показать
     
     
  • 9.282, n00by (ok), 12:54, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    ISO IEC 9899 2017 6 2 5 Types 21 Arithmetic types and pointer types are collecti... большой текст свёрнут, показать
     
     
  • 10.292, warlock66613 (ok), 15:49, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Не совсем в DOS а вообще в реальном режиме и не совсем 20 мог быть и 20, и 16... текст свёрнут, показать
     
     
  • 11.301, n00by (ok), 18:35, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Я так и не понял, зачем повторно вырезаете мои слова про сегментный регистр и ре... большой текст свёрнут, показать
     
     
  • 12.302, warlock66613 (ok), 19:09, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну надо же, какой умный этот ваш процессор Не знаю, то ли вы переводите неправи... большой текст свёрнут, показать
     
     
  • 13.304, n00by (ok), 20:04, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вы заявляли про два числа Откуда они взялись types - это множественное число ... большой текст свёрнут, показать
     
     
  • 14.306, warlock66613 (ok), 21:33, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В программах на Си для реального режима x86 дальние far указатели представлены... текст свёрнут, показать
     
     
  • 15.308, n00by (ok), 11:05, 29/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вопрос был, откуда это мнение взято Цитирую IA-32 SDM, Vol 1 1 3 4 Segmented A... большой текст свёрнут, показать
     
  • 15.345, Аноним (78), 03:12, 02/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Интересно насколько вообще то нечто вообще соответствовало каким либо стандартам... текст свёрнут, показать
     
  • 8.319, Аноним (319), 09:23, 30/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    так адрес в памяти или адрес памяти ... текст свёрнут, показать
     
     
  • 9.320, n00by (ok), 10:37, 30/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Адрес ячейки Ячейка памяти находится в памяти Русский язык позволяет опускать ... текст свёрнут, показать
     
  • 5.149, Аноним (149), 10:09, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >  Ну, указатели (тупо целое положительное число в hex) уже вводит их в ступор.

    Начитаются такого и потом конпелируют только с -O0 потому, что даже -O1 "бажит" их божественный код...

     
  • 4.49, Аноним (49), 20:55, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > В си всё void* и любые типы это всего-лишь небольшой сахарок компилятора, было бы чем пугать.

    В любом языке со статической типизацией типы -- это "всего-лишь небольшой сахарок компилятора". Информация о типах теряется после компиляции, типы не переживают AST.

    > всё равно типизации в языке 0.

    0 в ассемблере.

     
     
  • 5.60, Аноним (60), 21:36, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > В любом языке со статической типизацией типы -- это "всего-лишь небольшой сахарок компилятора".

    C++ там есть рантайм инфа о типе для динамического каста.

     
  • 5.82, Аноним (78), 22:11, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Информация о типах теряется после компиляции, типы не переживают AST.

    Какой-нибудь ubsan очень резко не согласится с тобой. Он очень даже переживает это и прекрасно расскажет в какой переменной с каким типом ты дал маху. Разумеется оверхед на рантайм проверки значений добавится а размер бинаря станет крупнее, за счет хранения вот этих сведений и кода с проверками. Но так можно из сей сделать что-то типа явы или дотнета, если вы это и правда хотели, особенно если asan еще включить :)

    >> всё равно типизации в языке 0.
    > 0 в ассемблере.

    И даже там чуть более чем ноль может быть. Скажем можно проверить что константа лезет в регистр, все такое.

     
  • 3.21, Бывалый смузихлёб (?), 18:34, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Когда в якобы типизированные ЯП вводили подобия auto - иные адепты типизации и параллельно ненавистники недостаточно-типизированного жс с ходу начинали сс.ать кипятком и в три пасти жрать из корыта
    Дело, похоже, совсем не в детях. А если бы не хотели их пугать - так не показывали бы лишний раз раст


     
  • 3.143, 4рл (?), 09:37, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    inttype.h сто лет в обед, а вы до сих пор "платформозависимые" используете?
     
  • 2.6, name (??), 17:31, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >auto в C

    Вот и настал тот день, когда я больше не хочу писать на Си. Я долго его ждал, но не мог придумать почему.

     
     
  • 3.8, _RORO_ (ok), 17:35, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Даже не из-за остутствия контроля за границами массивов?
     
     
  • 4.29, name (??), 18:47, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А я не пользуюсь массивами :-р Вообще, убогая структура дынных.
     
     
  • 5.35, Вы забыли заполнить поле Name (?), 19:30, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Привет мир продолжит работать без auto, не переживай ты так
     
     
  • 6.239, Аноним (228), 23:20, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    формалисты введут обязательное правило использование auto. А так-как у них мозга нет, то и объяснять им бесполезно. Они устали отбиваться от насмешек молодых про застарелость typedef и отсутствие типа для булевой переменной.
     
  • 5.36, _RORO_ (ok), 19:32, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Без них ты бы даже коммент не смог написать, потому что любая строка это массив букв
     
     
  • 6.42, name (??), 20:22, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Только лох использует строки-массивы. Самурай юзает связанные письки.
     
     
  • 7.53, Dzen Python (ok), 21:17, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    (((((defun opennet(net(open(net()))))))))
     
     
  • 8.119, Аноним (119), 04:37, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Интересно, что некие гендерфлюидные нотки здесь есть, но в целом да ... текст свёрнут, показать
     
  • 8.121, Аноним (121), 04:41, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Флюгик, чуток со скобками ошибся Но в целом простительно ... текст свёрнут, показать
     
  • 6.63, Аноним (60), 21:43, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    <зануда вкл> буквы в букваре <зануда выкл>
    можно получать доступ к строке через указатель.
    имя массива это указатель на первый элемент.
    можно через указатель хранить разреженные строки (символы через один или через два байта - привет интернализация)
     
  • 6.65, Аноним (60), 21:49, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    строка это тип string
    в С это указатель с определенной дистанцией смещения оканчивающийся null-символом.
    в C++ это класс с методами в придачу.
    в rust это тип с типажами в придачу.

    Так что не любая, а для Вас это массив.

     
  • 5.74, Аноним (74), 21:58, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > А я не пользуюсь массивами :-р Вообще, убогая структура дынных.

    Блин как же ты пакеты по сети передаешь в портабельном кроссплатформенном виде?

     
     
  • 6.141, name (??), 09:29, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А зачем массивы при передаче пакетов? Структы, указатели на память.. в каком месте массивы?
     
     
  • 7.229, Аноним (228), 21:21, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вероятно подразумевалось, что массив понятен всем ОС и языкам. Передается он как полезная нагрузка на уровне приложений. Хотя для этого существует маршалинг, потому что передавать надо не только общие типы.
     
  • 7.240, Аноним (-), 23:21, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А указатели на память, типа, не массивы В сях вообще отличие достаточно маргина... большой текст свёрнут, показать
     
  • 5.126, Илья (??), 06:52, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А чем ты пользуешься?
     
     
  • 6.140, name (??), 09:28, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В общем случае графами. В частных - списками и деревьями.
     
     
  • 7.168, _RORO_ (ok), 12:43, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну так в графах и деревьях под капотом тоже массив
     
     
  • 8.179, name (??), 13:58, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Лолшто ... текст свёрнут, показать
     
     
  • 9.266, n00by (ok), 07:13, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Посмотрите исходники malloc ... текст свёрнут, показать
     
     
  • 10.286, name (??), 14:19, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    От меня это не зависит Я там за границы массива не выйду ... текст свёрнут, показать
     
     
  • 11.289, n00by (ok), 15:10, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Зато можно вызвать mmap и реализовать граф поверх той памяти, заменив указател... текст свёрнут, показать
     
  • 7.230, Аноним (228), 21:27, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    не всегда оправдано.
     
  • 3.9, СекторГаза (?), 17:37, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Остаётся подвал?
     
  • 2.11, _RORO_ (ok), 17:43, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Всякие int,long размер которых не определён спецификацией это ни рыба ни мясо. Есть смысл или чётко определять размер (uint32,int32,int64,float32,float64...) или выводить тип автоматически
     
     
  • 3.57, Аноним (60), 21:28, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Поэтому Си и завоевал популярность.
    int - наиболее подходящий для аппаратной платформы.
    long в два раза длиннее int.  

    разрядность изменяется, а код остается, надо только сравнивать с границами.
    если нужно точно, то есть простой способ узнать размер.

     
     
  • 4.64, Аноним (64), 21:46, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +8 +/
    > long в два раза длиннее int.

    Садись, два.

     
     
  • 5.68, Аноним (60), 21:52, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    однобайтное целое (англ. tiny int) — 8 бит, -128 ÷ 127;
    короткое целое (англ. short int) — 16 бит, −32 768 ÷ 32 767;
    длинное целое (англ. long int, также int32) — 32 бита, −2 147 483 648 (−231) ÷ 2 147 483 647 (231−1);
    двойное длинное целое (англ. long long int, также large int, big int, int64) — 64 бита, -9 223 372 036 854 775 808 (−263) ÷ 9 223 372 036 854 775 807 (263−1);

    Википедия. Чтобы быстро. для 32 битной шины.

     
     
  • 6.83, Аноним (-), 22:19, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Википедия. Чтобы быстро. для 32 битной шины.

    Небось еще и русская, где это какой-то отсебяша накорябал? А надо было читать стандарты. В стандарте регламентируется только минимальная ширина. Реальная в энной реализации может быть и больше.

    Более того - почти весь код уверен что в int лезет минимум 32 бита. Хотя по стандарту сказано лишь про не менее 16. И попытавшись вон там для AVR заказать вот это вот для скорости (по стандарту же ок!) можно нехило лаптем щей откушать - при том что формально это будут баги в коде.

    Ни про какие 32-битные или сколько там еще шины в стандартах вообще ничего не сказано. Как впрочем и про допустим стэк и его использование локальными переменными, и прочие типовые допущения которые ниоткуда не следуют.

     
  • 6.94, FF (?), 23:09, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    в Cortex M int и long 32 бита, а long long уже 64
     
     
  • 7.95, FF (?), 23:10, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    и опять же это компиляторы и задефайнено так, это же программная условность
     
  • 5.73, Аноним (60), 21:58, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/

    #include <stdio.h>
    void main(){
            int a;
            long b;
            printf("%d %d\n",sizeof(a),sizeof(b));
            return;
    }

    вывод: 4 8
    4 байта и 8 байт соответственно

     
     
  • 6.75, Аноним (74), 22:01, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это хреновые способ доказать что-то. Ваша конкретная машина - не все возможности реализации си на той или иной платформе. Ну вон на AVR можно int как 32 бита сделать. А можно и как 16. Оба варианта, кстати, одинаково валидны по стандарту, второй быстрее, толко де-факто много кода non compliant и вести себя будет криво. Хотя формально это баг именно кривого кода удумавшего что int видите ли может быть более 16 битов, чего никто не обещал.
     
     
  • 7.81, Аноним (60), 22:09, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Профессор, когда-то я это знал, а потом основательно забыл. (с) почти ))
    Потому что на практике не встречался с этими платформами.
     
     
  • 8.86, Аноним (-), 22:21, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну как бы если мы про стандарты и код, при этом не важно с какими платформами кт... текст свёрнут, показать
     
  • 8.105, Аноним (64), 00:54, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну, с 64-битными Виндой и Линухом-то все встречались На первой long 32 бит, на ... текст свёрнут, показать
     
     
  • 9.156, n00by (ok), 11:17, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Эпичнее встречи с int a sizeof WCHAR Когда оно работает в Windows с двухбайтн... текст свёрнут, показать
     
     
  • 10.214, InuYasha (??), 17:28, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    rol, ты мне немного мозг подамажил таким примером Но это ещё что Когда у тебя... текст свёрнут, показать
     
     
  • 11.259, Аноним (228), 00:39, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Маршалинг должен быть ... текст свёрнут, показать
     
  • 11.268, n00by (ok), 07:36, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Да накосячил с арифметикой Сейчас не найду ту тему на ЛОРе, массив создавался д... текст свёрнут, показать
     
  • 10.233, Аноним (228), 22:41, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Что оно 1 WCHAR в винде определен, а linux нет 2 wchar_t имеет платформоза... текст свёрнут, показать
     
     
  • 11.267, n00by (ok), 07:28, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В моём сообщении единственная строка с кодом int a sizeof WCHAR переносят в ... текст свёрнут, показать
     
  • 6.211, Аноним (211), 16:58, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    неа, оно так не работает. оно зависит не только от апаратуры но и от ос.
    например long:
    OS Architecture Size of "long" type
    Windows IA-32         4 bytes
    Intel® 64 4 bytes
    Linux IA-32         4 bytes
    Intel® 64 8 bytes
    mac OS Intel® 64 8 bytes
     
  • 6.274, Аноним (-), 10:08, 28/04/2023 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 4.169, InuYasha (??), 12:45, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    ага, до первого хардкода или ошибки с sizeof()
     
  • 3.170, InuYasha (??), 12:48, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это был закос под кроссплатформенность и одновременно упрощение, который в итоге вылился в гигантский гемор. Я тоже пишу целый огромный хэдер только для стандартизации типов. Причём, ровно так как ты и написал. Потому что меня бесят _t для примитивов.
     
  • 2.17, Аноним (108), 18:20, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Он нужен чтобы не писать одно и то же и не ошибаться.
    Когнитивная нагрузка ниже, читается легче, api и abi не меняет, сплошные преимущества.
     
  • 2.28, soomrack (ok), 18:47, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +8 +/
    auto это очень хорошее ключевое слово, если им правильно пользоваться. Оно позволяет делать код менее прибитым к типам данных и более простым. Только нужно им праивльно пользоваться.

    Вот, например, писать
        auto idx = 0;
    не стоит, т.к. это будет int, а не long int, и не unsigned int, и т.д.

    А писать
        auto alice = person;
    очень даже правильно, т.к. тип alice будет такой же как у person и можно будет спокойно менять тип person при рефакторинге, не затрагивая эту часть кода. Да и ошибиться с именем структуры тоже не получится, т.к. тут просто auto.

     
     
  • 3.32, Аноним (32), 19:08, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Или тебе нужен был определенный тип alice, а теперь кто-то "порефакторил" код изменив person и у тебя теперь везде потенциальные ошибки, но которые не всплывают на этапе компиляции.
     
     
  • 4.34, soomrack (ok), 19:25, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если нужен прям определенный тип, то там auto ставить, конечно, нельзя. auto это доп возможности, удобные, но как и все в ЯП оно дает много вариантов как выстрелить себе в ногу.
     
     
  • 5.43, Аноним (32), 20:38, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В zig просто выводится тип автоматически, без этих костылей.

    В принципе auto - это необходимый, к сожалению, костыль в С++.

     
  • 3.55, Аноним (60), 21:20, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Если это так, то си перестает быть языком статической типизации.
     
     
  • 4.158, n00by (ok), 11:24, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Если это так, то си перестает быть языком статической типизации.

    Веет башпрограммистами автономных операционных систем.

    Статическая типизация - это когда тип фиксируется на этапе трансляции.

     
  • 3.88, Аноним (-), 22:33, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А потом мы не узнаем случайно что вооооооон там код не умел на самом деле работа... большой текст свёрнут, показать
     
  • 3.227, Аноним (228), 21:09, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > auto alica = person;

    Это издевательство над оператором присвоения.
    А какое значение у person и нужно ли оно в alisa?
    Чем typedef не угодил?
    Си уже определяет типы неявно? Переписывать учебники, справочники, вики?

     
  • 2.37, Вы забыли заполнить поле Name (?), 19:34, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Не пользуйся
     
  • 2.46, Аноним (60), 20:49, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > На кой auto в С?

    Тип auto был всегда по умолчанию.
    int a; это auto int a;

     
     
  • 3.51, Аноним (60), 20:56, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Или они ушли от статической типизации и auto может быть чем угодно?
    у меня gcc v8.3 на auto a; предупредил, что будет считать а целым типом.
     
     
  • 4.89, Аноним (-), 22:36, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Или они ушли от статической типизации и auto может быть чем угодно?

    Не ушли но это именно вот тот другой auto, как в новых плюсах.

    > у меня gcc v8.3 на auto a; предупредил,

    А он разве умел C23? (C2x)

     
     
  • 5.104, Аноним (60), 00:52, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > вот тот другой auto, как в новых плюсах.

    Значит auto это то что может реализовать компилятор, а не то что хочет программист.
    На вопрос почему, будет ответ я так вижу. Вы же не определили четко.

     
  • 2.146, Аноним (146), 09:45, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А что, в Си запретили использование макросов? Вполне может там оказаться удобно пользоваться 'auto':

    #define SWAP(a,b) do { auto t = a; a = b; b = t; } while(0)

     
     
  • 3.242, Аноним (242), 23:38, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    code code Смотрите дети как себе метко в пятки стрелять, да не просто а в п... большой текст свёрнут, показать
     
     
  • 4.269, n00by (ok), 08:09, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Как вам например SWAP(x++, ++y)? А если SWAP(++x, y++)?

    Не надо так писать. Видно же, что это макрос.

     
     
  • 5.330, Аноним (-), 23:35, 30/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Иногда очень соблазнительно воткнуть туда вот именно некое выражение Из соображ... большой текст свёрнут, показать
     
     
  • 6.339, n00by (ok), 10:13, 01/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >> Не надо так писать. Видно же, что это макрос.
    > Иногда очень соблазнительно воткнуть туда вот именно некое выражение.

    "Я захотел нарушить конвенцию, но виноват вон тот".

     
     
  • 7.346, Аноним (-), 03:29, 02/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В реально требовательных штуках, типа MISRA, насколько я помню, конвенция такова... большой текст свёрнут, показать
     
  • 4.291, Аноним (291), 15:17, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Хинт: в этом макро радикально не хватает как минимум скобочек

    это макро было иллюстративным и только.

    > Как вам например SWAP(x++, ++y)?

    Никак. Написавший такие аргументы в таком макро -- идиот, лечить бесполезно. Выстрелить себе в любую часть тела на Си не было проблемой вообще никогда. Макросы от того и пишут большими буквами, чтобы те, кто ими пользуются понимали "хрупкость" и осознавали возможности сайд-эффектов.

    > А то что вы хотели на самом деле _Generic называется, и таки начиная с C11 - есть.

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

    > Смотрите дети ...

    Проецирование своих комплексов наружу? Ну-ну

     
     
  • 5.331, Аноним (-), 23:53, 30/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем подавать пример как делать не надо, особенно если есть куда менее стремные... большой текст свёрнут, показать
     
  • 2.154, n00by (ok), 11:04, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    По ссылке define dataCondStoreTG P, E, D do ... большой текст свёрнут, показать
     
  • 2.244, Аноним (228), 23:48, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > В C++ он нужен из-за монструозных template'тов.

    Говорите прямо - запутались. auto как палочка выручалочка. Что получится не важно, главное скомпилировать.

     
  • 2.262, Аноним (262), 04:26, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > На кой auto в C? В C++ он нужен из-за монструозных template'тов.

    Трольнул, круасафчег ! Все отписавшиеся выше не знают не то что сей, их к компу мамка подпускать не должна пока к&r на зубок не выучат.

     

     ....большая нить свёрнута, показать (110)

  • 1.12, Tita_M (ok), 17:44, 26/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > bool, false и true

    Кто лучше знает, это получается, что в новом стандарте Си появился полноценный булевый тип? Что мешало добавить его раньше?

     
     
  • 2.14, Аноним (14), 17:51, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не особо нужен. char и значений 0, 1 всегда хватало.
    Си, в отличие от C++ - это не о абстракциях.
     
     
  • 3.85, Tron is Whistling (?), 22:20, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Конкретно с char(byte) ты бахнешься на процах, которые требуют выравнивания при обращении к памяти.
    Ну или займёшь 64-битное слово на каждый буль.
     
     
  • 4.97, Аноним (97), 23:12, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Плохому танцору известно что мешает. В 2023 жаловатся на вышеперечисленное просто смешно.
     
  • 4.124, Пользователь чебурнета (?), 05:59, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Можно юнионом укладывать в чар 8 булей. А выравнивание -- это проблема компилятора.
     
     
  • 5.133, Аноним (133), 08:46, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Чо... хранить логические переменные в одном бите? Ну можно, конечно, но изврат какой-то.
     
     
  • 6.137, Аноним (137), 09:05, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    погугли, что такое программирование, а потом про битовые поля
     
     
  • 7.220, InuYasha (??), 18:15, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    И тут аноны откроют для себя флаги. )
     
  • 7.243, Аноним (228), 23:47, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    они всегда были затратные если только одно битовое поле. Хард программирование исключается из утверждения.
     
  • 6.177, Пользователь чебурнета (?), 13:30, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, лучше в 64. Параллельно запивая смузи.

    Обычный приём, который преподаётся в старших классах при изучении страктов и юнионов.

     
     
  • 7.275, Срыватель покровов (?), 10:23, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Мало в каких школах дают Сишечку. В основном дают Питон сейчас. Си скорее на первом курсе изучают.
     
     
  • 8.314, Пользователь чебурнета (?), 17:20, 29/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Верно, но это уже неустранимые проблемы нынешней системы образования, обсуждать ... текст свёрнут, показать
     
     
  • 9.317, Аноним (317), 01:18, 30/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В младших - Assembler, в средней школе - Brainfuck, в старших - Rust По выпуску... текст свёрнут, показать
     
     
  • 10.318, Пользователь чебурнета (?), 01:36, 30/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Молодец, теперь попробуй осуществить свой педагогический эксперимент, начав с со... текст свёрнут, показать
     
  • 5.245, Аноним (245), 23:59, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Можно юнионом укладывать в чар 8 булей.

    Лучше struct'ом. Проблема однако в том что это хотя и сэкономит RAM под були, сгенерит лишний код на RMW этого счастья. Результат как правило медленнее работает и жирнее по коду, так что особого профита с этого лайфхака не наступает.

     
     
  • 6.305, Пользователь чебурнета (?), 20:36, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Код будет жирнее -- ну может быть, от компилятора и опций зависит. Что будет медленнее -- не верю.

    В крайнем случае можнно просто создать переменную типа int8_t, и для манипуляций с конкретным битом использовать операции по маске. И в /** камментах **/ не забыть написать, для чего используется каждый бит :)

     
     
  • 7.332, Аноним (-), 00:13, 01/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Чтобы хранить 8 булей в 1 байте внезапно, выставить бит в 1 более не немедлен... большой текст свёрнут, показать
     
  • 3.101, oficsu (ok), 23:58, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Серьёзно, char в качестве bool? Чтобы strict aliasing многого о себе не возомнил? Типичный такой эффективный Си
     
     
  • 4.238, Аноним (228), 23:13, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Поэтому в добром Си, на котором писали ОС, и не было этого типа. Была логика: 0 и всё остальное.
    И можно выбирать для хранения выровненный тип.
    Но пришло другое поколение и появился bool и auto (
     
  • 3.136, Аноним (137), 09:00, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    то чувство, когда маленькие дети не знают про stdbool.h, но рассказывают всем о том, как всегда было
     
  • 2.15, Жироватт (ok), 17:57, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +7 +/
    [ ] Деды (Ритчи и Керниган) не пользовались, и тебе не надо.
    [ ] Не писали с валио-трулио, неча и начинать.
    [ ] Нуля и единицы хватит всем.
    [ ] Зачем тебе тип, который всего 1 бит, если быстрее юзать выровненные по размеру регистра целые?
    [ ] А для поля таких флажков тем более выровненные по регистру слово/полуслово, да в десятичном виде!
    [ ] Так быстрее же!
    [ ] Зачем терять 7 бит на мусор, когда нужен всего 1?
    [ ] Читаемый код должен быть тому, кто сидит около регистров, а не мимо-пацану с тремя классами алгола церковно-фортановой школы!

    -----
    Выбирай любой набор причин.

     
  • 2.18, xsignal (ok), 18:20, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А зачем он нужен? По-моему 0/1, проще чем false/true.
     
     
  • 3.40, Вы забыли заполнить поле Name (?), 20:11, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Разная смысловая нагрузка (типы они для людей): получается ты своим болевым типом можешь делать тоже что с целым числом (складывать, умножать и и.п.) - зачем это нужно? Ты можешь возразить, что можно просто так не делать, но тогда мы перекладываем дополнительные поверки на погромите, а ему и так есть над чем думать.
     
  • 3.52, Аноним (60), 21:15, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    0/что_угодно_целое
    for(int i=10;i;i--){
    //тело
    }
    Лучше так не писать
     
  • 3.67, Аноним (74), 21:51, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > А зачем он нужен? По-моему 0/1, проще чем false/true.

    Например:



    uint8_t var1 = 256;
    if (var1) do_something(); // Хоть var1 не ноль на вид, там 0 и сюда не попадем!





    bool var1 = 256;
    if (var1) do_something(); // А вот тут будет вызвано (var1 == true)


    Секрет в том false залекларен как 0, true как 1, а все что больше обрубается при матеметике до 1. И в принципе можно при статическом анализе варнинги кидать если там более 1. Меньше места для прострела пяток в целом. Просто более специфицированный под задачу begavior, более уместный.

     
     
  • 4.106, _kp (ok), 01:03, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>uint8_t var1 = 256

    На подобное заведомое переполнение gcc ругается.
    И когда из большего типа в меньше без приведения типа присваивают, тоже ругается.

    Про bool - верно.

     
     
  • 5.123, Аноним (123), 05:58, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > На подобное заведомое переполнение gcc ругается

    И это если повезёт. Недавно искал проблему в коде, где

    > printf("%d == %d (%d)\n", a, b, a == b);

    выводило то ли "9 == 11 (1)", то ли "11 == 11 (0)" просто из-за такого вот неопределённого поведения где-то рядом в коде, после которого компиятор получил карт-бланш на любые извращения в целях копеечной оптимизации.

     
  • 5.246, Аноним (-), 00:08, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > На подобное заведомое переполнение gcc ругается.

    Это был простейший пример. В реальном коде будет нечто ближе к:



    uint8_t var1 = 255;
    ...
    var1++;
    if (var1) ... // Ну и вот кто тут про ноль из-за mod(2^8) math подумает? :)



    ...и на это ругаться уже не будет в общем случае.

    > И когда из большего типа в меньше без приведения типа присваивают, тоже ругается.

    Если кто храбрый -Wconversion ему в руки, узнаете много нового о своем коде и его (без)глючности и (без)опасности в плане работы с целыми числами.

    > Про bool - верно.

    Его все же специально сделали для логических выражовываний, с inеeger'ами это не сколько более стремное занятие.

     
     
  • 6.276, _kp (ok), 10:23, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/

    > Если кто храбрый -Wconversion ему в руки,

    Да, 90% бестолковых предупреждений, но для своего кода, так использую, иногда помогает же.
    Но оно не отлавливает опечатки с присвоеним разных типов, и если типы совпадают по размеру, то по мнению компилятора сойдёт и так.

     
     
  • 7.333, Аноним (237), 00:30, 01/05/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вообще-то вполне толковых, а то что часто прокатывает и так - на самом деле без ... большой текст свёрнут, показать
     
     
  • 8.342, _kp (ok), 10:33, 01/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще то, в первую очередь интересует отлов ошибочного присваивания не тому тип... текст свёрнут, показать
     
     
  • 9.347, Аноним (-), 03:43, 02/05/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А что это за ситуации вообще Мной это не распознается как какая-то типовая проб... большой текст свёрнут, показать
     
     
  • 10.349, _kp (ok), 12:35, 02/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Это считай руко опство в проектах которые пишут несколько человек, и особенно в ... текст свёрнут, показать
     
     
  • 11.352, Аноним (58), 07:39, 07/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Мне пример этого интересен, как бы это могло выглядеть Потому что сходу баг так... текст свёрнут, показать
     
  • 4.113, Ванёк (?), 02:14, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Если использовать uint8_t как bool, то производительность упадёт. Лучше использовать uint32_t - производительность выше.
     
     
  • 5.122, Аноним (123), 05:55, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Лучше использовать uint32_t - производительность выше

    А если использовать 64 байта и выравнивать на 64 байта, то автоматом избавимся ещё и от проблем с мультипроцессорностью из-за доступа нескольких ядер к одной строке кеша.

     
     
  • 6.160, n00by (ok), 11:46, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А что там такое может храниться может на практике, что разные ядра лезут в смежные ячейки?
     
  • 5.157, _kp (ok), 11:17, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Если использовать uint8_t как bool, то производительность упадёт. Лучше использовать uint32_t
    > - производительность выше.

    Для intel 32bit - да. А других архитектурах может быть быстрее.

     
     
  • 6.190, Ванёк (?), 14:59, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    На x86_64 операции с uint32_t будут быстрее, чем с uint8_t и uint16_t.
     
     
  • 7.204, фф (?), 16:25, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    а на AVR?
     
     
  • 8.213, _kp (ok), 17:12, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вы сами догадываетсь На Cortex и Risc-v 32bit 8 16 битный bool быстрее 32х битн... текст свёрнут, показать
     
  • 7.221, n00by (ok), 18:15, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > На x86_64 операции с uint32_t будут быстрее, чем с uint8_t и uint16_t.

    Когда будут и кто обещал? Пока операции с регистрами занимают одинаковое количество тактов (uint16_t не беру в расчёт, это почти не используют), а чтение из памяти в сумме быстрее для компактных данных.

     
     
  • 8.231, Ванёк (?), 22:04, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    См документацию по ассемблеру x86_64 ... текст свёрнут, показать
     
     
  • 9.271, n00by (ok), 08:40, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем я буду смотреть всякую чепуху, какую Вы и процитировать стесняетесь Я смо... текст свёрнут, показать
     
  • 6.222, n00by (ok), 18:21, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Из относительно современных нашёл такое только для Atom не путать с Silvermont ... большой текст свёрнут, показать
     
  • 5.247, Аноним (-), 00:12, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Если использовать uint8_t как bool, то производительность упадёт. Лучше использовать uint32_t
    > - производительность выше.

    Вот прям так универсально? Ну попробуйте свой совет на AVR. И получите пролет по скорости в разы. Компилеру виднее как bool оформить потребно на его платформе в вон тех гарантиях. Переумничать компилер? Вы скорее пятки себе прострелите с таким уровнем знаний.

     
  • 4.151, fidoman (ok), 10:24, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    "uint8_t var1 = 256;"

    И в этом весь C. Сделать для быстрого косособачинга кривую функцию компилятора (обрезание типов молча) и гору ad-hoc библиотечных функций. Заявить этот набор "стандартом". 30 лет со всем этим мяснить, порождая горы прог и утилит, дырявых в самых неожиданных местах. Через 30 лет начать пытаться сделать из этого Паскаль с C-синтаксисом.

     
     
  • 5.184, Пользователь чебурнета (?), 14:22, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > И в этом весь C. Сделать для быстрого косособачинга кривую функцию компилятора
    > (обрезание типов молча) и гору ad-hoc библиотечных функций. Заявить этот набор
    > "стандартом". 30 лет со всем этим мяснить, порождая горы прог и
    > утилит, дырявых в самых неожиданных местах. Через 30 лет начать пытаться
    > сделать из этого Паскаль с C-синтаксисом.

    А теперь ещё раз и по-русски.

     
     
  • 6.264, _ (??), 05:23, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    дитё порвало ( | )  :-D
    сию конструкцию засунуть в компилятор и понять что не собеётся, ума (предсказуемо) - не хватило :)
     
     
  • 7.272, n00by (ok), 08:50, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    И соберётся и запустится. Эффект окажется для некоторых неожиданным. Особенно для перепутавших компилятор с линкером.
     
  • 7.334, Аноним (237), 00:31, 01/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > сию конструкцию засунуть в компилятор и понять что не собеётся, ума (предсказуемо)
    > - не хватило :)

    Соберется, но в современных компилерах warning выдаст.

     
  • 5.249, Аноним (-), 00:14, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > И в этом весь C. Сделать для быстрого косособачинга кривую функцию компилятора
    > (обрезание типов молча)

    Не угадал, де факто там варнинг в современных компилерах будет. Но как утрированый пример сойдет, влом было кодить обман варнинга в утрированом примере, извини.

    > утилит, дырявых в самых неожиданных местах. Через 30 лет начать пытаться
    > сделать из этого Паскаль с C-синтаксисом.

    Где там и чего от паскаля вообще? Это я как прогавший на паскале спрашиваю.

     
  • 2.23, Аноним (23), 18:35, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Он уже был в С11 как _Bool, сейчас stdbool.h решили деприкейтнуть.

    Сам bool вообще штука так себе, например в структурах DoP лучше не добавлять его. Он по-сути нужен только при касте, т.к каст у int другой.

     
     
  • 3.69, Аноним (74), 21:53, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Он и вон тем stdbool'ом был как bool вывешен (как typedef вроде). То что для нормального була вместо левоватого _Bool надо добавочный хидер вообще смотрелось странновато как по мне.
     
  • 3.71, Аноним (74), 21:56, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Целочисленные типы сей как булеан довольно опасная штука, они врапаются по основанию 2, как минимум unsigned - и можно внезапно получить инверсную логику.

    Для signed превыщение min/max это по сути UB, хотя в 23 и последних плюсах вроде собирались регламентировать только 1 формат представления (twos complement) и тогда это уже "defined behavior" будет. Но в более ранних не указано как знак и знаковые хранить и там возможно нескллько вариантов. Формально валидных и - с разным поведением при переполнении, потому и UB.

     
     
  • 4.102, oficsu (ok), 00:04, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Для signed превыщение min/max это по сути UB, хотя в 23 и последних плюсах вроде собирались регламентировать только 1 формат представления

    Ну да, оставили только two's complement

    > и тогда это уже "defined behavior" будет

    Нет, не будет. Поскольку возможность переполнения мешает ещё и оптимизатору

     
     
  • 5.250, Аноним (-), 00:17, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну да, оставили только two's complement

    Видимо дотумкало что столько UB сколько там есть - не рулит совершенно.

    >> и тогда это уже "defined behavior" будет
    > Нет, не будет. Поскольку возможность переполнения мешает ещё и оптимизатору

    Если остался только 1 формат хранения - по идее его wrap конкретно определен уже. А оптимизатор не имеет права нарушать иллюзии прописаные в стандарте. Хотя я и не смотрел этот кусок на тему гарантий, стандарт еще не вышел даже вроде?!

     
     
  • 6.315, oficsu (ok), 20:14, 29/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, допустим Дело же не в нём Проблема в том, что оптимизатор может заложиться... большой текст свёрнут, показать
     
     
  • 7.335, Аноним (-), 00:40, 01/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Компилер обязан поддерживать заявленную абстракцию В том числе и в оптимизере, ... большой текст свёрнут, показать
     
  • 2.26, Совершенно другой аноним (?), 18:43, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Тип и раньше был, как минимум с C99, только надо было включать stdbool.h. А если без включения, то был _Bool.
     
     
  • 3.96, FF (?), 23:12, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    макаки написали, макаки убежали, им бесполезно доказывать, они не программисты
     
  • 2.159, n00by (ok), 11:33, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> bool, false и true
    > Кто лучше знает, это получается, что в новом стандарте Си появился полноценный
    > булевый тип? Что мешало добавить его раньше?

    Когда язык проектировали как замену ассемблеру, тогда булевый тип хранился во флагах процессора. Тогда идея заставить компилятор тратить под один бит целый байт выглядела дикой - это оставляли на совесть программисту.

     

     ....большая нить свёрнута, показать (61)

  • 1.19, Аноним (19), 18:24, 26/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    несчастливый номер, пожалуй пропущу эту версию анбора конпиляторов
     
     
  • 2.24, xsignal (ok), 18:35, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А в Китае число 4 боятся, как огня, хотя ничего такого в нём нет.
     
     
  • 3.25, Аноним (7), 18:41, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > А в Китае число 4 боятся, как огня, хотя ничего такого в
    > нём нет.

    Почему нет, если читается как "смерть"? Но, я думаю, в целом,  в китае большой прогресс в истреблении мракобесия, особенно, по сравнению религиозным фанатизмом соседей. Вот что трудовые лагеря животворящие делают!

     
     
  • 4.31, Tita_M (ok), 18:52, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >в китае большой прогресс в истреблении мракобесия

    Уничтожение древних текстов и старых храмов, которые могли бы правдиво рассказать о древней истории и заместо старинных зданий клепать новоделы это не истребление мракобесия.

     
  • 3.27, name (??), 18:44, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Дану, стремное какое-то. Тоже начну бояться.
     
  • 3.134, Аноним (134), 08:53, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Пятёрка конечно лучше четвёрки, но тройка еще хуже. Самое счастливое число это 5.
     
  • 3.218, InuYasha (??), 18:11, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    13. 1 + 3 = 4. Вуаля! (тут чинацйы собрали кирпичей на новую Стену)
     
  • 2.41, Вы забыли заполнить поле Name (?), 20:13, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > несчастливый номер

    Бэкхенд на расте как раз добавили, плохой знак

     
  • 2.164, n00by (ok), 12:22, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > несчастливый номер, пожалуй пропущу эту версию анбора конпиляторов

    Повеяло мракобесием автономной ОС, у которой уже пять штук 12-х версий.

    Если понимать, откуда оно пошло и что такое дюжина - так как раз 12-й Дом - Дом Смерти.

     
     
  • 3.205, фф (?), 16:29, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    дюжина - это 12 костяшек на 4 пальцах одной руки, которые считали пятым(большим)
     
     
  • 4.224, n00by (ok), 18:30, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Только костяшками считали не сами костяшки, а что-то из жизни. Например, 4 времени года по 3 месяца.
     
  • 3.279, Аноним (279), 11:22, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    у Cisco IOS'a не было 13 версии,была 12 а потом 15. Циско - молодцы.
     
     
  • 4.283, n00by (ok), 13:04, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    У них и этажей нет 13-х, что с них взять, если это давняя традиция. Вон те в автономной ОС умело устроили карго-культ своему господину.
     
  • 3.287, name (??), 14:22, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Хм. А я всегда думал, что это про Иисуса -- если вместе соберутся 13 человек, то 1 в течении года умрет. Что даже чисто теоретически вполне вероятно.
     
     
  • 4.288, n00by (ok), 14:56, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Наша Эра началась с т.н. Великого соединения Юпитера и Сатурна в знаке Рыб в момент зимнего солнцестояния. И кстати в 2020-м она таким же соединением в Козероге закончилась. Наберите в поисковике "Эра Водолея" - вот примеры, как астролухи путают знаки Зодиака и созвездия, строя из себя знатоков и паря мозг охлосу.
     
  • 2.217, InuYasha (??), 18:10, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > несчастливый номер, пожалуй пропущу эту версию анбора конпиляторов

    нормально. 2.6 было топовое ядро. 26 = 13*2.

     

  • 1.33, AKTEON (?), 19:11, 26/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как там netcdf - компилируется ??
     
     
  • 2.307, Михаил (??), 07:29, 29/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А не должен, что ли?
     

  • 1.44, Alexey Torgashin (?), 20:42, 26/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Даааа, такие популярные языки добавлены (не только в 13), Модула и Фортран…. И не видно что кто-то ненавидит эти старенькие плохонькие языки . А вот Паскаль ненавидят, и там и тут лезут уроды с критикой . Хотя Паскаль мощнее и лучше и проще и изящнее Модулы и Фортрана. Я на нем CudaText пишу. Гислер ТоталКомандер пишет.
     
     
  • 2.47, Аноним (39), 20:54, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Fortran там сто лет как.
     
  • 2.48, xsignal (ok), 20:54, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Паскаль - отличный язык. По сути, это тот же Си, только с более понятным новичкам синтаксисом - типа, begin/end вместо фигурных скобок. Я когда-то с Паскаля без особых усилий на Си перешёл - там всё точно так же, только запись короче)
     
     
  • 3.66, _kp (ok), 21:49, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну да, с удобным ср@чем из всех всех всех переменных функции в её начале.
    По мне, так подобные анахронизмы даже хуже чем излишняя многословность, ибо плодит трудно обнаружимые ошибки использования переменных.

    Не знаю как сейчас, но когда то в Делфи были коварные проблемы с многопоточным кодом на многоядерных процессорах, что у нас и стало одним из гвоздей в крышку его гроба.
    Может быть, сейчас и исправили, не знаю, но поезд ушёл.

    А из хорошего помню, по сравнению с Си, более удобная проверка типов, простые var параметры функций, оператор with.
    По сравнению с C++, был существенно ПРОЩЕ для НАЧАЛЬНОГО обучения программирования, то есть как одного из первых языков.

     
     
  • 4.84, AKTEON (?), 22:19, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >Ну да, с удобным ср@чем из всех всех всех переменных функции в её начале.

    1)Однопроходный компилятор - наше все.
    2) А как чудно решается эта проблема в фортране ...

     
     
  • 5.110, _kp (ok), 01:15, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Переменные в начале логического блока тоже перевариваются однопроходным компилятором, и практически без усложнения компилятора.

    Это просто древний архаизм, который по недосмотру и стечению обстоятельств не исправили вовремя.

    Сейчас в embarcadero это и подобные деревянности исправлены, но уже не актуально.

     
  • 5.161, n00by (ok), 12:01, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >>Ну да, с удобным ср@чем из всех всех всех переменных функции в её начале.
    > 1)Однопроходный компилятор - наше все.

    В любом случае переменная объявляется до использования.

     
  • 5.180, Аноним (180), 14:00, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вам изобрели компьютеры чтобы не быть ограниченными одним проходом - нет, хотят г-но жрать.
     
  • 4.135, Аноним (134), 08:57, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > плодит трудно обнаружимые ошибки использования переменных

    Наоборот уменьшает. И все знают где в тексте статически определены все переменные.

     
     
  • 5.152, _kp (ok), 10:34, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >> плодит трудно обнаружимые ошибки использования переменных
    > Наоборот уменьшает. И все знают где в тексте статически определены все переменные.

    Знают, что определены где то там, вдалеке, но не где используются.
    А вот их использование, и особенно неправильное, очень плохо обнаружимо, в чём и проблема. И компилятор тут и пол-warning'a не выдаст.

    А вобще, это "дурной стиль" ;)

     
  • 5.251, Аноним (-), 00:22, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Наоборот уменьшает. И все знают где в тексте статически определены все переменные.

    С другой стороны, переменные для циклов типа for (uint8_t i = 0; i < 10; i++) и элегантно и прозрачно хинтит оптимизеру область использования переменной, и позволяет не захламлять сюжетно важный блок с описанием переменных aux сущностями нужными на 1 этот цикл и более - нигде.


     
  • 3.91, Аноним (-), 22:42, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну вот для обучения он отличный Для программирования реальных проектов мерзость... большой текст свёрнут, показать
     
  • 3.114, DEF (?), 02:56, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Днищенский язык. Вы только вдумайтесь, в Паскале длина массива и интервал индексов - это составные части типа. Невозможно в одну функцию или процедуру передавать массивы разной длины, так как они имеют разные типы.

    type vector1 = array [1..25] of real;
    type vector2 = array [2..26] of real;

    var
      vec1: vector1;
      vec2: vector2;

     
     
  • 4.117, Аноним (64), 03:58, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Днищенский язык. Вы только вдумайтесь, в Паскале длина массива и интервал индексов - это составные части типа

    Это отличная вещь под названием строгая типизация. Ты еще Аду не видел.

    Проблема в том, что ты привык к убогим языкам.

    > Невозможно в одну функцию или процедуру передавать массивы разной длины, так как они имеют разные типы.

    Ну вообще-то можно:

    https://www.freepascal.org/docs-html/ref/refsu68.html

     
  • 4.181, Аноним (180), 14:07, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Днищенский язык. Вы только вдумайтесь, в Паскале длина массива и интервал индексов - это составные части типа. Невозможно в одну функцию или процедуру передавать массивы разной длины, так как они имеют разные типы.

    А где нет? А C++, например, 'array<T, 10>' и 'array<T, 11>' тоже разные типы. В паскале есть и динамические массивы - 'array of real'. Днищенский он совсем не поэтому.

     
     
  • 5.235, Аноним (228), 22:59, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Убогие какие-то функции получаются. И всё из-за одного формального параметра размера массива?
    поэтому удобно передать информацию: указатель на массив определенных элементов и количество элементов. Для меня это естественно.  
    Не забывайте Си разрабатывался как язык для написания операционной системы.
     
  • 5.253, Аноним (-), 00:26, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Да даже на си так можно. Если нужно.

    typedef struct array10_t { arr[10] };

    vs

    typedef struct array11_t { uint8_t arr[11] };

    И далее вы это by value или by pointer уже не сможете перепутать. Что так то хорошо - спасет от случая когда вы 11-й элемент в массиве на 10 дереференсить пытались. Не то чтоб это совсем не получится, но это будет минимум баг, максимум вулн.

     
     
  • 6.255, Аноним (-), 00:28, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Упс, название типа потеряно. Примерно так: typedef struct array10_t { arr[10] } array10_t;
     
  • 4.192, InuYasha (??), 15:08, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Там точно не ":=" ? А днищенство языка там начинается с 1. Потому что.
     
     
  • 5.210, Аноним (210), 16:57, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Все нормальные люди считают с 1, в нормальных языках типа Фортрана, Паскаля тоже с 1, в Ада - используются range, в математике нумерация с 1.
    И только отбитые сишники решили, что делать индексом сдвиг указателя на голову массива это офигенная идея. К сожалению этого овнокод победил, и остальные начали делать также.
     
     
  • 6.212, Пользователь чебурнета (?), 17:08, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Все нормальные люди считают с 1, в нормальных языках типа Фортрана, Паскаля
    > тоже с 1, в Ада - используются range, в математике нумерация
    > с 1.

    Ни один истинный шотландец...

     
  • 6.215, InuYasha (??), 17:48, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А вы по утрам не приходите в канцтовары покричать на линейки и рулетки? )
    Вот, такие же "нормальные" люди, наверно, изобретают лифты с кнопками "4 3 2 1 -1 -2" )
     
  • 6.234, Аноним (228), 22:47, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Докажите, что для написания ОС такая нумерация было бы лучше?
     
  • 6.294, Аноним (-), 16:23, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > в математике нумерация с 1.

    Нет, в математике нумерация оттуда, откуда удобно. Твоё математическое образование видимо упустило такую тему матана как ряды, где используется исключительно нумерация с нуля, потому что индекс 0 очень удобно порождает показатель степени 0, который даёт нам член ряда без x (c x в нулевой степени). Без него пришлось бы писать конструкции типа x^{i-1}, что увеличивает количество писанины.

     
  • 2.56, Аноним (56), 21:21, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Так переписывай на Модулу скорее. Модула-2 это же продвинутый Паскаль. Считай это для тебя будет рывок вперед. Это как с Перла перейти сразу на Раку.
     
     
  • 3.72, _kp (ok), 21:57, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вряд ли будут переписывать. Вот, если б был delphi диалект object pascal, то можно было бы и готовые наработки использовать, а если в одном проекте на gcc без бубнов можно было бы совмещать код на разных языках, так что то уместне было б и на objeсt pascal писать.
    А Модула.. это после деревянных древних Паскалей шаг вперёд, а после Делфи скачок назад.
     
     
  • 4.311, Аноним (-), 12:45, 29/04/2023 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.92, Аноним (-), 22:42, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Это как с Перла перейти сразу на Раку.

    Т.е. очередное нафиг нужное хзчто? На этому раке никто как раз и не прогает, во всяком случае, перловка попадается а раки нет :)

     
  • 2.98, Аноним (180), 23:28, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Это просто феерия какая-то - любитель одного старенького плохонького языка опуск... большой текст свёрнут, показать
     
     
  • 3.103, AHOHNM (?), 00:43, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    А вот несогласен с такой оценкой Паскаля Вполне успешный язык, с хорошей систе... большой текст свёрнут, показать
     
     
  • 4.198, Аноним (180), 15:21, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вы не написали с чем именно вы не согласны Написанное вами написанному мной ниг... большой текст свёрнут, показать
     
  • 3.296, Alexey Torgashin (?), 16:28, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Большое спасибо. Что просветили насчет Модулы и Фортрана, буду знать что на них сделано много научных библиотек.
     
     
  • 4.300, Аноним (180), 17:26, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А не надо ёрничать. Действительно, просвещайтесь:

    https://en.wikipedia.org/wiki/List_of_numerical_libraries#Fortran

     
  • 2.144, Аноним (7), 09:38, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    За что их ненавидеть Про модула не знаю ничего, а на фортране сегодня все наибо... большой текст свёрнут, показать
     
     
  • 3.165, Бывалый смузихлёб (?), 12:29, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    может оказаться что дело совсем не в производительности, а в огромных горах старых наработок, которые с нуля не так чтобы сильно хотят переписывать. Ведь зачастую проще что-то что уже есть допилить, чем что-то полностью с нуля создавать
     
     
  • 4.178, Аноним (7), 13:36, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Этот аргумент работает с коболом. Но где ты его помимо банкоматов увидишь сегодня? Фортран выбирают именно из-за того, что он хорош для вычислений.
     
  • 2.176, InuYasha (??), 13:05, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вот за это ТоталКомандер, АИМП и прочие школоподелки из 90ых презренны.
     
  • 2.187, Аноним (187), 14:42, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А, ну да, Паскаль не старенький ;)
     
     
  • 3.206, _hide_ (ok), 16:38, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Классический Паскаль старше C. Это на заметку так.
    Но да, современные диалекты современны в меру умений разработчика. В гибкости отстают от языков с непрямой работой с памятью, а в производительности от языков а-ля ассемблер (как классический C). Весь антихайп из-за того, что этот язык программирования требует слишком серьёзной подготовки для написания адекватного кода.
     
  • 3.290, Alexey Torgashin (?), 15:15, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Паскаль старенький. Но он вбирает в себя новые веяния. Дженерики, анонимные функции, for-in, КОРБА-интерфейсы, атрибуты в [], поддержка разных CPU + OS, и т.д. Все это появляется.
     
  • 2.252, AKTEON (?), 00:25, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну и как там в паскале с параллелизмом в гетерогенных вычислительных системах ??
     
  • 2.351, BeLord (ok), 17:03, 05/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Пакет под Альт Линукс есть или самому собирать, я про CudaText?
     

     ....большая нить свёрнута, показать (41)

  • 1.50, Аноним (39), 20:55, 26/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Как там дела у Iain Buclaw?
     
     
  • 2.107, Hck3r (?), 01:08, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Всё отлично :)
    D живее всех живых
     

  • 1.54, Аноним (54), 21:19, 26/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не ну модула-2 топчик, кто бы спорил.
     
  • 1.70, Аноним (64), 21:55, 26/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > В соответствии с новой схемой нумерации выпусков, версия 13.0 использовалась в процессе разработки

    Как же достало, что каждый проект придумывает свою невиданную ранее систему версионирования. Были же семантические версии десятками лет, Но нет: надо, чтобы люди при каждом релизе вспоминали, что том разработчики имели в виду - для каждого доброй дюжины проектов.

     
     
  • 2.99, Аноним (180), 23:32, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Как же достало, что каждый проект придумывает свою невиданную ранее систему версионирования. Были же семантические версии десятками лет, Но нет: надо, чтобы люди при каждом релизе вспоминали, что том разработчики имели в виду - для каждого доброй дюжины проектов.

    Нормальным людям (включая мантейнеров пакетов и разработчиков) это нахрен не нужно, вообще всё равно какая там циферка где меняется. И это правильно, потому что ничего через циферки не выразить, и semver доказал свою полною несостоятельность.

     
     
  • 3.118, Аноним (64), 04:08, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > И это правильно, потому что ничего через циферки не выразить

    Можно выразить масштаб изменений.

    > semver доказал свою полною несостоятельность

    Разве что как раз этим уникумам, которые изобретают свой велосипед.

     
     
  • 4.202, Аноним (180), 15:56, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, можно выразить только наличие очередного релиза и упорядочить релизы и то ... большой текст свёрнут, показать
     
     
  • 5.226, Аноним (64), 19:47, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ох уж эти опеннетные умники, разбирающиеся в разработке Ты сам себе противоречи... большой текст свёрнут, показать
     
     
  • 6.299, Аноним (180), 17:21, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я такого не утверждал, научись читать - я привёл semver как пример _попытки_ сде... большой текст свёрнут, показать
     
     
  • 7.343, warlock66613 (ok), 10:51, 01/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    То, что вы хотите от semver чего-то, что он не может — не проблема semver, это ваша проблема.
     
  • 3.280, Аноним (280), 12:06, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >И это правильно, потому что ничего через циферки не выразить, и semver доказал свою полною несостоятельность.

    Ты когда-нибудь зависимости руками собирал?

     
  • 2.148, Аноним (148), 09:55, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Были же семантические версии десятками лет

    $ less --version
    less 629 (PCRE2 regular expressions)
    Copyright (C) 1984-2023  Mark Nudelman

     
  • 2.155, Аноним (155), 11:15, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И чем тебя не устраивает:

    GCC 13.1 released [2023-04-26]
    GCC 12.2 released [2022-08-19]
    GCC 10.4 released [2022-06-28]
    GCC 9.5 released [2022-05-27]
    GCC 12.1 released [2022-05-06]
    GCC 11.3 released [2022-04-21]
    GCC 11.2 released [2021-07-28]
    GCC 9.4 released [2021-06-01]
    GCC 8.5 released [2021-05-14]
    GCC 11.1 released [2021-04-27]
    GCC 10.3 released [2021-04-08]
    GCC 10.2 released [2020-07-23]
    GCC 10.1 released [2020-05-07]
    GCC 9.3 released [2020-03-12]
    GCC 8.4 released [2020-03-04]
    GCC 7.5 released [2019-11-14]
    GCC 9.2 released [2019-08-12]
    GCC 9.1 released [2019-05-03]

     
     
  • 3.166, Аноним (166), 12:32, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Тем, что половины номеров тут нет. Например, 10.0.0 или 12.1.1. То есть вы предлагаете мне просто запомнить, какие версии есть, а каких нет.
     
     
  • 4.191, Ванёк (?), 15:02, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    10.0.0 или 12.1.1 - это не релизные версии, это текущие версии, над которыми ведётся работа, по завершении которой эти версии получают другие номера - в данном случае 10.1 и 12.2.
     

  • 1.87, nc (ok), 22:21, 26/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Мне интересно, почему в языковые расширения (https://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html , https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Extensions.html) до сих пор не добавили свойства (properties), реализованные во многих языках, в том числе и во многих расширениях С++ (как минимум в MSVC и C++Builder). Реально полезная штука как минимум для изучения огромных унаследованных кодовых баз, когда нужно перехватить обращение к тому или иному объекту/полю. Причем полная эмуляция этой фичи перегрузками операторов невозможна. Куда можно написать предложение разработчикам компилятора?
     
     
  • 2.100, Ананоним (?), 23:37, 26/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Потому что свойства это только для тех, кто очень полюбил визуальное "программирование" мышкой. А для тех кто текстом программирует, свойства это как собаке пятая лапа. get-теры set-теры тебе в помощь.
     
     
  • 3.111, _kp (ok), 01:38, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вы считаете, что без GUI дизайнера интерфейса писать гораздо быстрее, чисто в тексте, не видя в процессе того что получается? ;)
    То то чистый C++ для GUI не очень удобен.

    А get-теры и set-теры, это почти как begin и end и пятая нога. С одной стороны, работает - не трогай, но и если не развиваться, "засахарится" и морально устареет.

     
     
  • 4.116, Аноним (116), 03:23, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Отправлено _kp, 27-Апр-23 01:38

    Вы считаете, что без GUI дизайнера интерфейса писать гораздо быстрее, чисто в тексте, не видя в процессе того что получается? ;)
    Можно и без дизайнера видеть что получается, в тч в реалтайме. Так например используют vim для написания статей latex в pdf. Или тестировщики так тестируют gui.
    Дизайнеры это по сути комбайн, но все то же самое может и отдельно работать.
    Ну а в идеале не должно быть необходимости постоянно смотреть что получается. Результат итак должен быть очевиден (так например было с html в конце 90ых).

     
  • 4.129, Аноним (56), 07:40, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Программист совсем ничего не должен знать про GUI. GUI должен делать дизайнер. Возможно в Фигме, а программист должен брать оттуда циферки и вставлять в своё приложение. Возможно это даже промежуточный программист, которого можно назвать верстальщиком. Никаких других способов получить красивый дизайн не существует.  
     
     
  • 5.175, InuYasha (??), 13:02, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Программисту надо иметь права на отламыванию пальцев дизайнеру, если что.
     
     
  • 6.197, Аноним (56), 15:19, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Даже с таким правом и даже с визуальным программированием у программиста дизайн будет полный ... отстой. Обычно даже UX отстой чего уж там.
     
  • 5.186, Аноним (187), 14:32, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    У многих проектов 2 - 3 разработчика, а то и всего один. Вот теперь если они ещё и десигнеров для проектов искать начнут, то на собственно разработку времени не останется. Полезного кода больше не увидим.
     
     
  • 6.196, Аноним (56), 15:17, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Значит дизайн будет фи ка лия. С этим ничего нельзя поделать это данность. Это надо принять.
     
  • 3.131, nc (ok), 08:15, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Свойства как концепция вообще никакого отношения к визуальному программированию не имеют. Это особая трансформация синтаксического дерева, позволяющая прозрачно заменить обращения на чтение и на запись к некоторому полю данных на вызовы функций. Здесь существенна именно прозрачная замена - то есть при замене свойства на поле и обратно остальной код менять не требуется.
     
     
  • 4.182, _kp (ok), 14:14, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Свойства как концепция вообще никакого отношения к визуальному программированию не имеют.

    Ну в чистом виде не имеют, но значительно упрощают графический дизайнер интерфейса, и не только его.
    В общем, было бы полезно добавить.


     
  • 3.303, Аноним (64), 19:17, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > А для тех кто текстом программирует, свойства это как собаке пятая лапа. get-теры set-теры тебе в помощь.

    Отличная логика. Добавили operator[], перегрузку, пользователськие операторы, RTTI, но свойства - "собаке пятая лапа".

     
  • 2.162, n00by (ok), 12:11, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Пишите на Vala, там есть свойства и в довесок GObject.
     
  • 2.172, InuYasha (??), 12:54, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    лол, заставил меня вспомнить те годы. Да не, проперти - это костыль какой-то. Если что и было нужного в быдлере - это _кложуре для коллбэков.
     
     
  • 3.248, nc (ok), 00:14, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Это целиком и полностью покрывается возможностями std::function
     
  • 2.281, Аноним (280), 12:10, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В спортлото напиши, Си сделан не для скрытой сложности, в противном случае там давно была бы перегрузка операторов уже давно.
     

  • 1.112, zog (??), 01:43, 27/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Сборка toolchain с GCC всё так же является чёрной магией с кучей заклинаний?
     
  • 1.127, жявамэн (ok), 07:02, 27/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    бекенды для го и хруста....
    этим вообще кто то пользуется лол
     
     
  • 2.128, Аноним (56), 07:36, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Те кто не хотят борова чекать.
     
  • 2.139, Аноним (134), 09:13, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В сборочных дистрах (Gentoo, LFS) не пользуются ржавым из-за необходимости тащить его компилятор. После добавления ржавого в gcc популярность программ на нем теоретически должна вырасти. У меня в системе, например тяжелая математика на foltran и наличие этого компилятора не особо мешает.

    Go не пошел у меня из-за его "менеджера пакетов" после попытки установить ipfs выкинул. Ржавый тоже может не пойти по этой причине.

     
     
  • 3.145, Аноним (145), 09:43, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Не со всем согласен: https://blogs.gentoo.org/mgorny/2021/02/19/the-modern-packagers-security-night слишком большая "дроблённость" rust & go способствует внедрению закладок в используемые либы. Однако обязательное внедрение подписей PGP может помочь решить проблему.
     
  • 3.232, Аноним (232), 22:28, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Некогда, когда ещё программировал и занимался наукой, переписал критическую часть рассчётной программы (МКЭ) на Си, и скорость выросла в разы. Фортран - это хорошо, но очень уж не оптимизированно.
     
     
  • 4.270, Дед Ананий (?), 08:17, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Современный Fortran - вполне себе годный инструмент. Для realtime, может, и не подойдет, но для расчета эмуляций процессов при ядерном взрыве с распаралеливанием вычислений - вполне себе. Многое зависит также и от квалификации программиста.
     
     
  • 5.348, Аноним (-), 03:49, 02/05/2023 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.316, soomrack (ok), 20:33, 29/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    К сожалению, для firefox уже нужно ставить Rust Но с ним есть одна дикая вещь в... большой текст свёрнут, показать
     
  • 2.174, InuYasha (??), 13:00, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Пьющие кровавые смузи хипстеры.
     
     
  • 3.201, Аноним (56), 15:48, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Свободные и независимые хипстеры, которые за чистоту кода против корповых компиляторов.
     

  • 1.153, Штыбель (?), 10:40, 27/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Объявлена устаревшей поддержка Solaris 11.3

    Хотя бы 11.4 поддерживается.

     
  • 1.167, Аноним (167), 12:35, 27/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Решил тут попробовать G++. И что?
    1) Возможности явно указать точку входа прямо в коде нет, хотя она была в любом древнем компиляторе. Отрубаешь stdlib и приходится указывать точку входа через командную строку.
    2) Отрубить .edata если она пустая возможности нет, даже при использовании gc-sections
    3) Отрубить hintы в импорте возможности нет
    4) 64х битный и 32х битный компиляторы ведут себя по разному, так что везде приходится тыкать условную компиляцию.
     
     
  • 2.188, Аноним (187), 14:44, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Разве манипуляции с секциями ELF не задача линкера?
     
     
  • 3.189, Аноним (7), 14:54, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Просто тут другой под к вопросу. Один ламеровендузятский, где всё пихают в кучу, и другой нормальный, где инструменты занимаются своими вещами и дают контроль программисту. Я так понимаю, в этом суть проблемы.
     
     
  • 4.225, n00by (ok), 18:46, 27/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В Виндосе в MSVC точка входа задавалась ключём линкеру /ENTRY:function. В ассемблерах можно в исходном тексте указывать. Может он так троллит?
     
  • 2.260, Аноним (245), 00:43, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Си это не ассемблер Но если сильно хочется, линкерскрипт или командлайн к вашим... большой текст свёрнут, показать
     

  • 1.173, Ilya Indigo (ok), 12:59, 27/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    GCC 13 и не слова про #include <cstdio>.
     
     
  • 2.313, Аноним (245), 17:17, 29/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >cstdio

    А это ещё что?

     
     
  • 3.323, Аноним (133), 15:38, 30/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    stdio.h
     
  • 3.327, Ilya Indigo (ok), 19:03, 30/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >>cstdio
    > А это ещё что?

    https://runebook.dev/ru/docs/cpp/header/cstdio
    Почти в каждом 1-ом патче для C++ пакетов в имени которого присутствует gcc13.

     

  • 1.273, Ананий (?), 09:31, 28/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Можно оффтоп ради саморазвития, раз уж тут околосистемные погромисты собрались. В линукс/бсд/солярисах такой же идиотизм с исполняемыми файлами как и в шиндовом EXE, когда в заголовке прописываются смещения в коде, которые нужно обновлять для выделенного блока памяти каждый раз при запуске?
     
     
  • 2.278, Пидор Пэн (?), 10:50, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В виндовых x64 exe этого уже нет, так как код стал PIC-подобным
     
     
  • 3.321, Аноним (133), 15:31, 30/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А если какой-нибудь кульхацкер на ASM'е наваяет с прямой адресацией?
     
     
  • 4.340, n00by (ok), 10:24, 01/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Кульхацкер если что наваяет, то потом обязательно проверит. Тем он и отличается от анонимного эксперта.
     
  • 2.284, n00by (ok), 13:22, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Точнее, не в заголовке, а в таблице релокаций. Релоки не обязательны для запуска, раньше по умолчанию в exe их не было. Нужны они для загрузки по любым адресам. Можно писать код так, что релоки не понадобятся. Компиляторы-линкеры генерировали релоки, поскольку код получался более компактным. Зависит это от процессора, а не от ОС. В gcc ищите в справке position-independent code.

    И кстати "шиндовый EXE" грамотно называется PE/COFF. А "COFF was introduced in 1983, in AT&T's UNIX System V". ;)

     
     
  • 3.310, Аноним (-), 12:39, 29/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >И кстати "шиндовый EXE" грамотно называется PE/COFF. А "COFF was introduced in 1983, in AT&T's UNIX System V". ;)

    Открою тебе срашную тайну! Тс-сc! Тока никому не говори: "DOS/Windows - это изуродованный Xenix". Ублюдок Билли специально путь в файловой системе обозначил обратным слешем (\), чтобы все его продукт приняли за оригинальную, с чистого листа написанную ОС!

     
     
  • 4.312, n00by (ok), 15:06, 29/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Это для меня не тайна, что тороидального Анонима (-) лучше не читать. 86-DOS Билли купил у Тима Патерсона, а NT у DEC вместе с командой разработчиков VMS.
     
  • 3.322, Аноним (133), 15:37, 30/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Только UNIX System V COFF был без всяких там PE - M$ улучшайзингов.
     
     
  • 4.341, n00by (ok), 10:25, 01/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Только UNIX System V COFF был без всяких там PE - M$
    > улучшайзингов.

    Разверните мысль, приведите парочку для примера.

     
  • 2.336, Аноним (237), 00:47, 01/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > такой же идиотизм с исполняемыми файлами как и в шиндовом EXE,
    > когда в заголовке прописываются смещения в коде, которые нужно обновлять для
    > выделенного блока памяти каждый раз при запуске?

    В 32 bit x86 - а куда вы денетесь? У x86 код не является position independent и его нельзя перенести в другие адреса без сильного патчинга программы, потому что проц режимами адресации не вышел - не умеет относительно PC (IP) референситься, например. Это вообще от ОС не зависит, только от архитектуры проца. Можно еще грузить все в фиксированые адреса но это не гибко и может быть неудачно для секурити. Если хакер знает все адреса функций, ему так сильно удобнее атаку развивать.

    В x86-64 все заметно приличнее, но там тоже смотреть нюансы надо.

     

  • 1.285, Коми (?), 14:03, 28/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Серверы, сервисы и прочая мутата в компиляторах...докатились.
     
  • 1.293, Аноним (-), 16:21, 28/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >В состав GCC принят фронтэнд для сборки программ на языке программирования Modula-2.

    Его используют только в российской оборонке! ИМХО, в наборе компиляторов GCC он не нужен.

     
  • 1.295, Аноним (-), 16:24, 28/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >После доведения фронтэнда до готовности (ожидается в следующем выпуске), штатный инструментарий GCC сможет использоваться для компиляции программ на языке Rust без необходимости установки компилятора rustc, построенного с использованием наработок LLVM.

    Проблема не в том, что есть он в наборе компилятор или нет. Должно произойти 2 вещи.
    1. Язык Rust должен одобрить Столлман.
    2. Язык Rust должен иметь копилефтную лицензию (в том числе и все библиотеки в Cargo).

     
     
  • 2.298, Анонин (?), 17:12, 28/04/2023 [^] [^^] [^^^] [ответить]  
  • –4 +/
    1. Всем по... на деда
    2. Раковый копилефт оставьте себе. Тут свободная лицензия.
     
     
  • 3.309, Аноним (-), 12:32, 29/04/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Свободной считается только лицензия типа копилефта. Это отражено на сайте GNU и FSF и много раз отмечено в научных трудах и СМИ. Лицензии типа Mozilla_PL, БЗД (всех 4-х клаусов), МИТ-щина, Апаче, "Общественное достояние" считаются пермиссивщиной, их ещё называют "Открытый код (Open Source)".
     
     
  • 4.326, Анонин (?), 17:54, 30/04/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Свободной по чьему мнение? По мнению гнутеллы и фсф?
    Ахаха, ну разумеется это рачье будет кричать что только их лицухи по настоящему свободные.

    BSD, MPL, MIT, PublicDomain - вот где  настоящая свобода, а не швaбoдka® гплнутых фанатиков.

     
  • 2.324, Аноним (133), 15:40, 30/04/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Люто плюсую твои слова, брат Аноним.
     

  • 1.297, Аноним0 (?), 16:45, 28/04/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Главное, чтобы swap не рос
     
     
  • 2.325, Аноним (133), 15:43, 30/04/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Rust же защищает от Use after free ;)
     
     
  • 3.337, Аноним (237), 00:48, 01/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Rust же защищает от Use after free ;)

    Вон тот список CVE готов поспорить с этим храбрым утверждением.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру