Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.90/198: Рейтинг темы: голосов - 198, средняя оценка - 4.90
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708

Что за тип данных uint32_t?

30.07.2019, 22:34. Показов 40503. Ответов 171
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Это без знаковый int, который занимает 32 бита. А вот t, что значит?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.07.2019, 22:34
Ответы с готовыми решениями:

Как побитово скопировать uint32_t в float, минуя при этом выделения uint32_t в оперативную память
Всем привет, недавно заинтересовал такой вопрос ниже. Как ПОБИТОВО скопировать uint32_t в float, минуя при этом выделения uint32_t в...

Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?
Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?

Скажите пожалуйста, что это за тип данных?!
int **allocate2D(int rows, int cols) { int **arr2D; int i, j; arr2D = (int**)malloc(rows*sizeof(int*)); for(i=0;...

171
 Аватар для COKPOWEHEU
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,099
09.08.2019, 23:19
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Renji Посмотреть сообщение
Да, да, сегодня в универсальном sha512 потребности нет.
Что еще в кучу смешаем? Строки и файлы уже смешали, осталось добавить длинные целые, структуры, устройства, потоки и прочее.
Цитата Сообщение от Renji Посмотреть сообщение
Так вам теперь все же стало понятно
Да на ваш-то счет уже давно стало понятно. "С++ наш бог, все кто не копируют из него недостойны существовать". Ничего другого от вас пока не слышно.
Цитата Сообщение от Renji Посмотреть сообщение
Программирование без IDE, это тоже самое что забивание гвоздей ботинком
Угу, а еще то же самое, что поедание вторника и форматирование красного ультразвука. Кончайте с заведомо неверными аналогиями.
Впрочем, ваш ответ вполне понятен: "программировать на С++ без костылей нельзя".
Цитата Сообщение от Renji Посмотреть сообщение
Имеем массив объектов, которые нельзя перемещать простым memcpy.
Что же это за объекты такие, что перемещать не просто накладно, а нельзя вообще?
Цитата Сообщение от Renji Посмотреть сообщение
Как это надо было делать: ну, раз нельзя memcpy, попытаемся расширить массив, никуда его не перемещая.
Так оно вроде так и происходит. Сначала пытаемся расширить выделенную память, и только если невозможно - перемещаем.
Это только в С++ какие-то проблемы с реаллокацией объектов, в Си-то с этим нормально.
Цитата Сообщение от Renji Посмотреть сообщение
Читаем исходное утверждение - "Вообще-то, mtx_lock уже восемь лет как часть стандартных библиотек Си.".
А потом читаем стандарт и убеждаемся, что это утверждение неверно.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
10.08.2019, 00:09
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Что еще в кучу смешаем? Строки и файлы уже смешали, осталось добавить длинные целые, структуры, устройства, потоки и прочее.
Еще неплохо взять пример с Питона и разрешить читать-писать картинки через стрим (BytesIO), завернутый на образ файла в памяти. Наш ответ tmpfs, ага.
Так подсчет хеша от текста и файла разносим по разным функциям? При том что за вычетом операций чтения, эти функции будут совпадать до последней буковки. Или потребности в хеш-функциях сегодня нет?
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Угу, а еще то же самое, что поедание вторника и форматирование красного ультразвука. Кончайте с заведомо неверными аналогиями.
Вы либо пользуетесь инструментами разработанными для решения проблем, либо страдаете от проблем. Вот собственно и вся аналогия.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Что же это за объекты такие, что перемещать не просто накладно, а нельзя вообще?
Банальное Small String Optimization. Короткие строки сохраняются во вшитый в стринг буфер, не дергая динамическую память. При перемещении такого стринга с места на место, линки на буффер придется обновить. Совершенно верно, в Си с этим нормально. Нет оптимизации - нет проблемы с ее реализацией.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А потом читаем стандарт и убеждаемся, что это утверждение неверно.
Убеждаемся что в программах помеченных макросом "Многопоточность? Не, не слышали" мьютексы можно не поддерживать. Что и логично - нафига они в однопоточных приложениях то? Но в стандарте мьютексы таки описаны.
0
 Аватар для COKPOWEHEU
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,099
10.08.2019, 08:31
Цитата Сообщение от Renji Посмотреть сообщение
Еще неплохо взять пример с Питона
Все понятно. Вот только про утаскивание всего подряд в язык я уже писал: получается помойка.
Цитата Сообщение от Renji Посмотреть сообщение
Наш ответ tmpfs, ага.
Ах да, еще же можно к языку примешать операционную систему.
Цитата Сообщение от Renji Посмотреть сообщение
Вы либо пользуетесь инструментами разработанными для решения проблем, либо страдаете от проблем.
А разработчики некоторых языков еще и создают проблемы, чтобы без средств решения было невозможно пользоваться.
И именно об этом я говорю: хорошо спроектированный код просто не нуждается в подобных костылях. Причем язык, на котором код написан, даже не особо влияет на читаемость.
Цитата Сообщение от Renji Посмотреть сообщение
Банальное Small String Optimization. Короткие строки сохраняются во вшитый в стринг буфер, не дергая динамическую память.
Что еще за вшитый в стринг буфер? Строка это просто массив char'ов, без всякиз объектов. Или у вас опять навязчивое желание натянуть С++ на Си?
Цитата Сообщение от Renji Посмотреть сообщение
Но в стандарте мьютексы таки описаны.
В стандарте описаны рекомендуемые названия. Но пока они не стали обязательными, стандартными их считать нельзя. Точно так же как какие-нибудь strcpy_s, которые вроде бы описаны, но никому даром не нужны, соответственно что есть рекомендациях стандарта, что нет.
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
10.08.2019, 12:46
От
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
А вот t, что значит?
До
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Что еще за вшитый в стринг буфер?
Всего 83 сообщения.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
10.08.2019, 16:44
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
И именно об этом я говорю: хорошо спроектированный код просто не нуждается в подобных костылях. Причем язык, на котором код написан, даже не особо влияет на читаемость.
Ну да, ну да. Зачем нам этот костыль с "за секунду нажал F2 и у тебя открылся нужный хедер, на нужном месте". В хорошо спроектированном языке мы всего минуты за три ручками откроем нужный хедер в nano и ручками же пролистаем до нужного места. Деды так делали, отцы так делали и мы будем делать.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Что еще за вшитый в стринг буфер? Строка это просто массив char'ов, без всякиз объектов. Или у вас опять навязчивое желание натянуть С++ на Си?
Строки произвольной длины, это массив в динамической памяти. А выделение чего либо в динамической памяти тормозит. Для этого и быстрый буфер.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
В стандарте описаны рекомендуемые названия. Но пока они не стали обязательными, стандартными их считать нельзя.
Можно до тех пор пока рекомендованные названия компилируются в 99% мест, а не рекомендованные в 99% мест компилятор не кушает.
0
 Аватар для COKPOWEHEU
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,099
11.08.2019, 00:45
Цитата Сообщение от Renji Посмотреть сообщение
В хорошо спроектированном языке мы всего минуты за три ручками откроем нужный хедер
То есть вы еще и язык от IDE не отличаете. Совсем прекрасно.
Даже не буду намекать, что ни к изначальной теме, ни к локальной (про длину стандартных имен) этот выкрик не имеет ни малейшего отношения.
Цитата Сообщение от Renji Посмотреть сообщение
Строки произвольной длины, это массив в динамической памяти.
В Си нет строк произвольной длины. Вы опять тянете весь мусор, который знаете, туда, где ему не место?
Цитата Сообщение от Renji Посмотреть сообщение
Можно до тех пор пока рекомендованные названия компилируются в 99% мест
Даже тогда нельзя. Рекомендация это всего лишь рекомендация, а не гарантия.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
11.08.2019, 01:07
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
То есть вы еще и язык от IDE не отличаете. Совсем прекрасно.
То есть, вспоминаем разговор про перегрузки.
Я: Сделано через неудобную конструкцию.
Вы: Неа, оно удобно, чтобы искать объявление перегруженной функции.
Я: Это делается в IDE одной кнопкой за секунду, без всяких Generic.
Вы: Не хочу в IDE за секунду, хочу в nano ручками файл листать.

Ну а про имена еще раз. Все эти короткие read удобны ровно до тех пор, пока read у вас один. Но чтоб он был один, он должен читать из какого-то универсального объекта. А универсальный объект представляющий и файл, и память, и черта лысого вы не хотите. А значит у вас появляется выводок из fread, dread, cread, которые так и просят чтоб их кто-то перепутал.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
В Си нет строк произвольной длины.
Таким образом, в Си нет и работы с файлами содержащими в себе строки произвольной длины. Прощай парсинг XML и JSON.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Даже тогда нельзя. Рекомендация это всего лишь рекомендация, а не гарантия.
Окей, так и записываем - VLA в Си тоже нет. Ибо с макросом __STDC_NO_VLA__ поддержку VLA можно послать куда подальше.
0
 Аватар для COKPOWEHEU
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,099
11.08.2019, 07:46
Цитата Сообщение от Renji Посмотреть сообщение
Не хочу в IDE за секунду, хочу в nano ручками файл листать.
Если языком невозможно пользоваться без IDE - с ним что-то не так и он годится только для узкоспециальных задач.
Цитата Сообщение от Renji Посмотреть сообщение
А значит у вас появляется выводок из fread, dread, cread, которые так и просят чтоб их кто-то перепутал.
Что у вас за задача, если понадобились низкоуровневые аналоги системного вызова read? Или речь идет опять о неумении разделять код по уровням?
Цитата Сообщение от Renji Посмотреть сообщение
Таким образом, в Си нет и работы с файлами содержащими в себе строки произвольной длины. Прощай парсинг XML и JSON.
А Си-шники-то не знают что у них какие-то проблемы с парсингом файлов.
Цитата Сообщение от Renji Посмотреть сообщение
Окей, так и записываем - VLA в Си тоже нет. Ибо с макросом __STDC_NO_VLA__ поддержку VLA можно послать куда подальше.
Оно и правильно: небезопасная штука. Невозможно определить успешность выделения массива. Обычный *alloc ненамного длиннее, зато позволяет обрабатывать ошибки.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
11.08.2019, 08:44
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Если языком невозможно пользоваться без IDE - с ним что-то не так и он годится только для узкоспециальных задач.
Возможно. Вместо F2, ройтесь в хедерах через ctrl+F, ктож не дает. Но через IDE быстрее хоть на Си пиши, хоть на плюсах. Так что кому реально важно быстро найти нужную перегрузку функции, тот сидит в IDE. А кому нужно не чтоб быстро, а чтоб как в восьмидесятые, ну так ему и Generic не нужен.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Что у вас за задача, если понадобились низкоуровневые аналоги системного вызова read?
Библиотека для подсчета хеша sha512. Должна кушать и восьмисимвольные пароли, и дампы диска. Второе требует механизмов чтения файла по кускам. И что, реализовывать sha512 два раза, один раз под fread, другой раз под прямое чтение входных данных из памяти?
Ну а семейство read появляется, если все же идти путем "для каждого источника по отдельной функции".
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А Си-шники-то не знают что у них какие-то проблемы с парсингом файлов.
Равно как и не знают что у них нет строк произвольной длины.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Оно и правильно: небезопасная штука. Невозможно определить успешность выделения массива. Обычный *alloc ненамного длиннее, зато позволяет обрабатывать ошибки.
Как будто для обычных массивов успешность выделения определить можно и функция без VLA не может выбить stack overflow.
VLA выделяет память за константное время, malloc за хрен знает какое, alloca в стандарте нет даже в форме рекомендации. Так и записываем, скорость работы программы для Си не критична.
0
 Аватар для COKPOWEHEU
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,099
11.08.2019, 17:05
Цитата Сообщение от Renji Посмотреть сообщение
Так что кому реально важно быстро найти нужную перегрузку функции
А кому не важно заниматься мазохизмом, просто не перегружает функции на каждый чих, а структурирует программы.
Цитата Сообщение от Renji Посмотреть сообщение
Должна кушать и восьмисимвольные пароли, и дампы диска.
Не знаю, как производится вычисление sha256, но для CRC16 стандартный способ - передавать данные порциями. В конце концов, встраивать чтение файла в вычисление криптографического алгоритма будет лишь тот, кто любит заваривать чай в тарелке с пельменями.
Цитата Сообщение от Renji Посмотреть сообщение
Равно как и не знают что у них нет строк произвольной длины.
Отсюда вывод - при парсинге файлов прекрасно можно обойтись без строк переменной длины, а вы опять ищете себе проблемы только для того чтобы героически их превозмогать.
Цитата Сообщение от Renji Посмотреть сообщение
Как будто для обычных массивов успешность выделения определить можно и функция без VLA не может выбить stack overflow.
Для обычных массивов это гораздо более предсказуемо. Собственно, это основная проблема С++: провоцирует неоптимальный код.
Цитата Сообщение от Renji Посмотреть сообщение
Так и записываем, скорость работы программы для Си не критична.
Ну да, на Си не пишут критичный ко времени и объему код. Ни драйвера, ни ядра ОС, ни прошивки для контроллеров. Все пользуются исключительно Питоном!
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
11.08.2019, 22:02
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А кому не важно заниматься мазохизмом, просто не перегружает функции на каждый чих, а структурирует программы.
Кому не важно заниматься мазохизмом, тот просто пользуется перегруженной функцией, не интересуясь где там она перегружена. А если кому надо просто список перегрузок посмотреть, это опять же покажет IDE.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Не знаю, как производится вычисление sha256, но для CRC16 стандартный способ - передавать данные порциями.
И конечно же эта передача будет делаться через отдельную функцию. А потом все это разрастается в зоопарк из msha512 для прямого чтения из памяти, ssha512 для хеша от строк, fsha512 для чтения файла заданного FILE* и fnsha512 для чтения данных из файла заданного текстовым именем "file.txt".
Финальным акордом кто-то случайно путает ssha512 с fnsha512 и долго удивляется почему это хеш берется не от файла, а от его имени.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Отсюда вывод - при парсинге файлов прекрасно можно обойтись без строк переменной длины, а вы опять ищете себе проблемы только для того чтобы героически их превозмогать.
Ну и как будем возвращать результат парсинга JSON-строки, если ее размер по стандарту ничем не ограничен, а строк произвольной длины у нас нету?
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Для обычных массивов это гораздо более предсказуемо.
VLA обшивается проверкой if(vlaSize>256)return errorCode и предсказуемо падает реже. Потому что хапает не более 256 элементов. Обычный массив всегда хапает по 256 элементов и предсказуемо падает чаще.
А malloc под Линуксом вообще по умолчанию работает через overcommit "выдадим программе сто терабайт, а потом пристрелим при попытке воспользоваться памятью". Удачи вам в предсказании поведения подобного кода.
C++
1
2
3
4
5
6
7
8
9
int main()
{
    std::size_t count=0;
    while(malloc(1<<30))
        ++count;
    //We have 131062 gygabyte! Or not...
    std::cout<<"We have "<<count<<" gygabyte!"<<std::endl;
    return 0;
}
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Ну да, на Си не пишут критичный ко времени и объему код. Ни драйвера, ни ядра ОС, ни прошивки для контроллеров. Все пользуются исключительно Питоном!
Пишут не пытаясь заменить VLA на malloc.
0
 Аватар для COKPOWEHEU
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,099
12.08.2019, 10:12
Цитата Сообщение от Renji Посмотреть сообщение
Кому не важно заниматься мазохизмом, тот просто пользуется перегруженной функцией
тот НЕ пользуется перегруженной функцией, потому что нужна она крайне редко. Собственно, в Си мне перегрузка не была нужна ни разу. Вот в С++ другое дело. Видимо, сказывается различный подход к программированию.
Цитата Сообщение от Renji Посмотреть сообщение
А потом все это разрастается в зоопарк
У вас - не удивлюсь. У нормальных людей, повторяю, таких проблем не возникает. Потому что они думают над архитектурой программ и не пытаются складывать числа, строки, файлы и прочие объекты, которые видят.
Цитата Сообщение от Renji Посмотреть сообщение
Ну и как будем возвращать результат парсинга JSON-строки, если ее размер по стандарту ничем не ограничен, а строк произвольной длины у нас нету?
Понятия не имею, мне эта проблема не интересна. Посмотрите в исходниках соответствующих библиотек, если так уж надо.
Цитата Сообщение от Renji Посмотреть сообщение
Удачи вам в предсказании поведения подобного кода.
Очевидная утечка памяти, это уже не анализировать, а исправлять надо.
Если весь ваш код похож на это, я не удивлен что Си вам не дается. Сидите на своих Питонах и дальше.
.
А вообще, прежде чем продолжать обсуждение, сформулируйте наконец, что же именно вы пытаетесь доказать.
Если то, что С++ лучший язык - так это неправда и не нуждается в доказательствах.
Если то, что С++ лучше хотя бы Си, то это тоже неправда, иначе Си бы вымер.
Если то, что в Си куча атавизмов и неудачных решений, то это и так ни для кого не секрет.
Впрочем, все это оффтопик.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
12.08.2019, 10:48
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
тот НЕ пользуется перегруженной функцией, потому что нужна она крайне редко.
Потому что вынужден вместо этого заводить cbrt_long и cbrt_float... извините, cbrtl и cbrtf. И рассказывать всем плюсовикам о том что зелен, дескать, виноград перегрузок, тотчас оскомину набьешь.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Понятия не имею, мне эта проблема не интересна. Посмотрите в исходниках соответствующих библиотек, если так уж надо.
Посмотрел. В первой же попавшейся библиотеке и SSO, и длинные_и_понятные_имена, и строки произвольной длины. Никаких мифических архитектур, позволяющих лепить короткие имена не наблюдается.
C
1
2
3
4
5
6
static const char *
get_string_component(const struct json_object *jso)
{
    return (jso->o.c_string.len < LEN_DIRECT_STRING_DATA) ?
           jso->o.c_string.str.data : jso->o.c_string.str.ptr;
}
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Если то, что С++ лучше хотя бы Си, то это тоже неправда, иначе Си бы вымер.
Си по факту подмножество современного C++, не более. Плюс-минус мелкие шероховатости уровня "вот в Си у меня каст FILE*->int* компилируется, хотя и с варнингом. А в C++ вместо варнинга ошибка!". Ну ладно, подмножество C++ с расширениями от gcc. Подмножество не может быть лучше целого.
А то что не вымер, ну так легаси код. И Линукс Торвальд кричащий что-то про тупых плюсовиков, когда ему предлагают перепилить ядро на плюсах.
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
12.08.2019, 11:13
Renji, что Вас удивляет в коротких именах?
Язык C разрабатывался для UNIX.
Сокращения всего и вся в Unix в порядке вещей.
Потому часто даже опции в программах не читаемые.
Получается что-то вроде prg -xcvhgds file.txt.
Говорят, это устраивает коренных юниксоводов.
Для нелюдей изобрели опции с длинными именами.
Я вообще удивлен, что atoi называется не просто ati или a.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
12.08.2019, 11:20
Цитата Сообщение от Croessmah Посмотреть сообщение
Renji, что Вас удивляет в коротких именах?
Язык C разрабатывался для UNIX.
А UNIX вышел лет пятьдесят тому назад. О том и речь, что короткие имена существуют исключительно по историческим причинам. В новом коде к истории не привязанном, от них спокойно отказываются. А исходные uint32_t и uint_fast32_t это какой-то монстр Франкенштейна. Типа, вот вам длинное имя fast, вот вам подчеркивание между частями имен, но хоть type, хоть type то дайте сократить, ироды!
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
12.08.2019, 11:36
Цитата Сообщение от Renji Посмотреть сообщение
хоть type то дайте сократить, ироды!
ИМХО, с _type будет еще страшнее. _t самое то.
Так что здесь на вкус и цвет.
К слову, также сокращен unsigned integer до uint.
почему-то это Вас никак не расстраивает.
Суффикс _t и префикс T - весьма распространены, так что их использование вполне нормально.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
12.08.2019, 11:42
Цитата Сообщение от Croessmah Посмотреть сообщение
К слову, также сокращен unsigned integer до uint.
почему-то это Вас никак не расстраивает.
Сокращение integer->int общепринятое, причем далеко за пределами C/C++. А uint следует либо в стандарт наконец ввести (именно как отдельное имя), либо на unsigned заменить.
0
 Аватар для COKPOWEHEU
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,099
12.08.2019, 13:27
Цитата Сообщение от Renji Посмотреть сообщение
Потому что вынужден вместо этого заводить
Могу еще раз повторить: когда перегрузка нужна - да, заводится куча функций и заворачивается в макрос. Но в подавляющем большинстве случаев она просто не нужна.
Цитата Сообщение от Renji Посмотреть сообщение
Посмотрел. В первой же попавшейся библиотеке и SSO, и длинные_и_понятные_имена, и строки произвольной длины. Никаких мифических архитектур, позволяющих лепить короткие имена не наблюдается.
Поздравляю, вы в очередной раз опровергли свое же утверждение!
Потому что я нигде не утверждал что ни одна программа на Си не содержит и не должна содержать длинных имен.
Цитата Сообщение от Renji Посмотреть сообщение
Си по факту подмножество современного C++, не более.
И ассемблер - подмножество С++, ведь есть asm(). Ну и что?
Цитата Сообщение от Renji Посмотреть сообщение
Подмножество не может быть лучше целого.
Вы так говорите, будто Си не существует как самостоятельный язык, а является придатком к С++. Это чушь.
Цитата Сообщение от Renji Посмотреть сообщение
А то что не вымер, ну так легаси код.
Тебе дать определение легаси-кода? Легаси код, это код, который никто не не переписал под современные стандарты и тянут из соображений совместимости. А вовсе не тот код, на котором пишут новые проекты.
Цитата Сообщение от Renji Посмотреть сообщение
И Линукс Торвальд кричащий что-то про тупых плюсовиков, когда ему предлагают перепилить ядро на плюсах.
Зачем на С++, есть же куда более современные языки. Что там сейчас в тренде, Раст, кажется? Давайте уж на нем переписывайте, чего мелочиться с "тяжким наследием Си"
Цитата Сообщение от Croessmah Посмотреть сообщение
Для нелюдей изобрели опции с длинными именами.
Не столько для нелюдей, просто мало-мальски значащие однобуквенные сокращения кончились...
Но использовать для частых операций короткие опции (а также имена и т.п.) действительно удобно, кто пробовал тот знает.
Цитата Сообщение от Renji Посмотреть сообщение
В новом коде к истории не привязанном, от них спокойно отказываются.
... и от консоли отказываются, у них теперь окошки с сотней вложенных менюшек, а вместо устаревшего man'а, где расписывается принцип действия программы и ключи, применяется кошерное Руководство Пользователя, где в картиночках подробно нарисовано, как добиться нужного пользователю результата. Разумеется, никого не волнует, что интерфейс меняется чаще, чем Руководство, что добиться того функционала, что действительно нужен пользователю, порой невозможно в принципе. Слава прогрессу и отказу от страшной черной консоли и колдунских флагов запуска.
Цитата Сообщение от Renji Посмотреть сообщение
А uint следует либо в стандарт наконец ввести (именно как отдельное имя), либо на unsigned заменить.
Зачем вносить uint в стандарт?
unsigned int == unsigned и без того в стандарте с самого начала, как и long int == long, как и прочий неявный int.
.
Главный вопрос вы, похоже, не заметили:
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
сформулируйте наконец, что же именно вы пытаетесь доказать.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
12.08.2019, 22:32
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Могу еще раз повторить: когда перегрузка нужна - да, заводится куча функций и заворачивается в макрос. Но в подавляющем большинстве случаев она просто не нужна.
Так и записываем, зоопарк из printf/sprintf/fprintf в подавляющем большинстве случаев не нужен. Кстати, ни в какой макрос он не заворачивается.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Поздравляю, вы в очередной раз опровергли свое же утверждение!
Потому что я нигде не утверждал что ни одна программа на Си не содержит и не должна содержать длинных имен.
У меня все ходы записаны.
"К сожалению, в ЯВУ это необходимость, но вот Си или Ассемблер оперируют куда более простыми объектами и в гораздо меньшем количестве. Там длинные имена просто не нужны. "
Вот о том и спорим, действительно ли Си такой замечательный язык, что ни длинных имен там не нужно, ни SSO не нужно. Или все как у всех, а за короткие имена держатся только по причине ретроградства.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
И ассемблер - подмножество С++, ведь есть asm(). Ну и что?
Хуже. Ассемблер это подмножество G++. Синтаксис ассемблера у Интеллов и синтаксис ассемблера у GNU Assembler несовместимы даже на уровне банального mov (Intel Syntax vs AT&T Syntax). И да, как самостоятельный язык Ассемблер сдох. Ибо нужен по большей части только в качестве асм-вставок.

Си пока что очень нужен чтобы пересобирать Линукс из исходников. Потому что на предложения переписать сишный код на чем то другом, Торвальдс выкатывает возражения стиля "ты урод, C++ уродство, STL-уродский глюкодром, кто скажет что не глюкодром, тот урод". И к сожалению, я тут никакой экспрессии от себя не добавлял. Как такие Торвальдсы свалят наконец на пенсию, так Си и окончательно растворится в C++.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Зачем вносить uint в стандарт?
Затем, что если uint32_t такое замечательное сокращение, что его надо протащить в стандарт, то и uint будет не менее замечательным сокращением. А когда uint32_t тащим, uint не тащим, это больше похоже на "да, у нас тут длинное_имя, но вот из принципа хоть одно сокращение, а воткну".
0
 Аватар для COKPOWEHEU
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,099
13.08.2019, 10:30
Цитата Сообщение от Renji Посмотреть сообщение
Так и записываем, зоопарк из printf/sprintf/fprintf в подавляющем большинстве случаев не нужен. Кстати, ни в какой макрос он не заворачивается.
Вам - несомненно не нужен. Сидите на своем С++ и радуйтесь. Тем же, кто пишет на Си, нужен. И, заметьте, они в нем не путаются и не видят нужды заворачивать разные функции в макрос.
Цитата Сообщение от Renji Посмотреть сообщение
"К сожалению, в ЯВУ это необходимость, но вот Си или Ассемблер оперируют куда более простыми объектами и в гораздо меньшем количестве. Там длинные имена просто не нужны. "
И где противоречие? В стандартной библиотеке обычно не нужны (разве что какая-то редко используемая экзотика). В юзерском коде - это его, юзера, дело, как ему удобнее. Еще раз: уровни абстракции. Не приписывайте мне всякой чуши, я не такой фанатик как вы и не пытаюсь навязать откровенно вредные парадигмы всем вокруг.
Цитата Сообщение от Renji Посмотреть сообщение
Хуже. Ассемблер это подмножество G++.
У-у-у, как все запущено... Что вы понимаете под G++, кстати, не гнутый ли компилятор часом? Если так, ваше высказывание еще большая чушь, чем выглядит на первый взгляд.
Цитата Сообщение от Renji Посмотреть сообщение
Синтаксис ассемблера у Интеллов и синтаксис ассемблера у GNU Assembler несовместимы
Это здесь каким боком?! Ну вот какое отношение различие диалектов в семействе ассемблеров (они все разные, если что) имеет к длине имен в Си или типу данных uint32_t?!
Цитата Сообщение от Renji Посмотреть сообщение
И да, как самостоятельный язык Ассемблер сдох.
Ну да, то есть компиляторов (правильнее, конечно, ассемблеров, но чтоб не путаться) под ассемблер не существует, язык не развивается и на нем никто не пишет.
Цитата Сообщение от Renji Посмотреть сообщение
Си пока что очень нужен чтобы пересобирать Линукс из исходников.
Разработчикам gtk тоже Торвальдс мешает? И над программистами контроллеров он стоит с талмудом K&R готовый покарать отступников? И даже те, кто хочет просто программировать на простом языке, без изучения вообще всех изобретенных человечеством парадигм, осмеливаются открыть IDE c C++ лишь в подвале под одеялом, ибо Торвальдс не дремлет.
Тяжко жить в вашем мире...
Цитата Сообщение от Renji Посмотреть сообщение
Затем, что если uint32_t такое замечательное сокращение, что его надо протащить в стандарт
С этого начали. Логичнее было бы назвать этот тип покороче, но разработчики опасались за совместимость со всякими изобретателями u32. Оттуда же получилось невероятно кривое название _Bool.
Цитата Сообщение от Renji Посмотреть сообщение
и uint будет не менее замечательным сокращением
Обычно не нужно на практике. Учитывая, что размер int не стандартизован, нет особого смысла в типе данных с вдвое большим диапазоном. Но если кому-то вдруг действительно понадобится, может сделать typedef или просто unsigned.
.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
сформулируйте наконец, что же именно вы пытаетесь доказать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.08.2019, 10:30

std::vector<int> Что это за тип данных?
std::vector&lt;int&gt; indexes_1, indexes_2; // Used for homography Что это за тип данных?

Что значит (для сущности «вершина» создать новый тип данных)?
Задание такое: Написать функцию для вычисления площади треугольника на плоскости, заданного координатами вершин. (для сущности «вершина»...

Восьмибитный тип переменной (что за тип, но не BYTE и не CHAR?
Вроде давно занимаюсь программированием на С++, но встала проблема... Есть некий массив переменных имеющих 8 битный размер... без знака...

Объясните, что это: "static const uint32_t collisionCategory = 0x1 << 0"?
Встретил в одном туториале по SpriteKit следующую строчку static const uint32_t projectileCategory = 0x1 &lt;&lt; 0; Подскажите...

Как сделать тип данных или уже есть такой тип данных который состоит из всех печатыемых символов?
Как сделать тип данных или уже есть такой тип данных который состоит из всех печатыемых символов? Если есть то как он называется ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru