|
2.8, Аноним (8), 22:32, 23/11/2024 [^] [^^] [^^^] [ответить]
| +12 +/– |
А те, кому реально это было нужно — не ждали и использовали <stdbool.h>, начиная с C99…
| |
|
3.68, Анон28679234 (?), 02:39, 24/11/2024 [^] [^^] [^^^] [ответить]
| +14 +/– |
Вообще довольно странно рассуждать о примитивных типах как о "реально нужных" или ненужных
При определенной степени ментальных упражнений можно даже ассемблер называть синтаксическим сахаром для электроцепи, однако я не вижу очереди желающих написать себе сайт с помощью паяльника
| |
|
4.132, Аноним (132), 10:17, 24/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
Поверьте налепив сверху на ассемблер макросов можно с легкостью слабать любой сайт ))
| |
|
5.184, Аноним (184), 15:06, 24/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
Ассемблер это и есть набор макросов над набором инструкций процессора.
А вот если бы кто-то придумал способ превращать более абстрактные, высокоуровневые конструкции в ассемблер для любого набора инструкций...
| |
5.327, Аноним (-), 14:55, 26/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Поверьте налепив сверху на ассемблер макросов можно с легкостью слабать любой сайт ))
На сях микросервис может как на go быть, если правильную либу взять. Т.е. полстранички текста. Скажем см https://lwan.ws - hello world менее чем полстраницы может быть. И это на сях. После чего он еще и в топе любого тематичного бенча отвиснет.
А покажете на асме такое? :)
| |
|
|
|
2.72, Аноним (-), 03:35, 24/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Ну надо же, bool/true/false подвезли! Я дожил до этого момента!
Это еще что! Как тебе такое Элон Маск?!
> Появилась поддержка использования спецификатора constexpr для определения объектов.
А вот тут...
> Добавлена поддержка префиксов "0b" и "0B" для указания целых значений в двоичной форме
...всем микроконтроллерщикам радоваться полчаса!
| |
|
3.146, Тот_Самый_Анонимус_ (?), 11:46, 24/11/2024 [^] [^^] [^^^] [ответить]
| –3 +/– |
Ну, кстати, 0b, 0B и %b были вполне логичны изначально. А вот true и false излишни. Меня радовало их отсутствие после мерзского паскаля.
| |
|
4.147, нах. (?), 11:49, 24/11/2024 [^] [^^] [^^^] [ответить]
| +3 +/– |
не, ну как только в процессорах появятся "true" и "false", а не jz, так сразу пусть и приходят.
А пока да - совершенно вредоносная фигня, скрывающая суть операций. Тем более в языке с автоматическим приведением типов.
| |
|
5.186, Аноним (-), 15:22, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> не, ну как только в процессорах появятся "true" и "false", а не
> jz, так сразу пусть и приходят.
> А пока да - совершенно вредоносная фигня, скрывающая суть операций. Тем более
> в языке с автоматическим приведением типов.
Наличие или отсутствие "jz" в конкретном процессоре - вообще не гарантировано. А если ты хотел на ассемблере шпрехать - вот на нем и шпрехай. Прибитый к 1 архитектуре сишка нафиг не упал.
| |
|
6.197, нах. (?), 16:15, 24/11/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Наличие или отсутствие "jz" в конкретном процессоре - вообще не гарантировано.
лолшта? Процессор без условного перехода - еще не изобрели. А когда изобретут, в нем вряд ли будут работать процедурные языки вообще.
| |
|
7.206, Аноним (-), 16:39, 24/11/2024 [^] [^^] [^^^] [ответить]
| –2 +/– |
>> Наличие или отсутствие "jz" в конкретном процессоре - вообще не гарантировано.
> лолшта? Процессор без условного перехода - еще не изобрели.
Как именно реализованы у конкретного проца условные переходы и какие там условия - это implementation defined и это как раз то от чего мы в си хотим абстрагироваться. Не хотели - юзали бы макроассемблеры, мля.
> А когда изобретут, в нем вряд ли будут работать процедурные языки вообще.
Ну какие-то условные операнды конечно быть должны, но так для понимания на тебе SUBLEQ. Такой вот набор команд. Не совсем jz, да? Конечно это мастеркласс брейнфаку как надо было но это тюринг полный набор команд :)
| |
|
8.236, нах. (?), 18:50, 24/11/2024 [^] [^^] [^^^] [ответить] | +1 +/– | но проца с истиными true false ты конечно же не покажешь Проца без jz полагаю т... большой текст свёрнут, показать | |
|
|
10.252, нах. (?), 10:15, 25/11/2024 [^] [^^] [^^^] [ответить] | +/– | Он у меня вообще непригоден для условных переходов, его только сравнить с другим... большой текст свёрнут, показать | |
|
9.297, Аноним (-), 18:34, 25/11/2024 [^] [^^] [^^^] [ответить] | +/– | На минуточку вся цифровая логика это 1 и 0, true и false И что такое 5 если я... большой текст свёрнут, показать | |
|
|
|
|
13.370, Аноним (370), 05:23, 30/11/2024 [^] [^^] [^^^] [ответить] | +/– | Да, у комитета полудурков есть привычка - сделать 90 фичи и затем почему-то фее... большой текст свёрнут, показать | |
|
|
|
|
|
|
|
|
|
4.181, Аноним (181), 14:52, 24/11/2024 [^] [^^] [^^^] [ответить]
| –2 +/– |
> Ну, кстати, 0b, 0B и %b были вполне логичны изначально.
ЧСХ я ими и пользовался уже лет 10. Просто как GNU Extension. Все равно вон та фирмварь чем-то кроме GCC - не соберется. Ибо в стандартном си даже положить объект в конкретную секцию нельзя.
> А вот true и false излишни. Меня радовало их отсутствие после мерзского паскаля.
Особенно радовадо в каком-нибудь
uint8_t var = 0xFF + 1;
...
if (var)
else // А мы точно собирались - сюда?!
| |
|
3.237, Аноним (237), 18:51, 24/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Добавлена поддержка префиксов "0b" и "0B" для указания целых значений в двоичной форме
Пятьдесят джва года ждал!
Как в DOS в своё время не хватало, всякие железки в порты тыкать.
| |
|
4.257, нах. (?), 11:47, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
>> Добавлена поддержка префиксов "0b" и "0B" для указания целых значений в двоичной форме
> Пятьдесят джва года ждал!
> Как в DOS в своё время не хватало, всякие железки в порты
> тыкать.
так и запишем - восьмеричная система счисления тебе не далась.
(а начинал бы не с доса а с нормальных систем на нормальных компьютерах - знал бы, что двоичная форма нахрен не нужна)
| |
|
5.301, Аноним (-), 18:51, 25/11/2024 [^] [^^] [^^^] [ответить] | +/– | Ну попробуй программировать битовые поля в хардварных регистрах в восьмеричной с... большой текст свёрнут, показать | |
|
|
|
|
1.6, Аноним (6), 22:25, 23/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
>Структуры, объединения и перечисления разрешено определять более одного раза в одной области видимости с одним и тем же содержимым и повторяющимся тегом.
а это зачем?
| |
|
|
3.17, Аноним (6), 23:23, 23/11/2024 [^] [^^] [^^^] [ответить]
| –5 +/– |
> Чтоб меньше конфликтов было при всяких #include и inline.
И как 50 лет жили без этого.
| |
|
4.32, Аноним (32), 00:14, 24/11/2024 [^] [^^] [^^^] [ответить]
| +8 +/– |
С матами и постоянными переименованиями всего и вся лишь бы этот комп-депилятор перестал жаловаться, а уже начал комп-депилировать.
| |
4.95, Аноним (-), 06:55, 24/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
>> Чтоб меньше конфликтов было при всяких #include и inline.
> И как 50 лет жили без этого.
Ну, как, как, городили костыли типа
#ifndef HAVE_WTF_H
#define HAVE_WTF_H
...(основная тушка)...
#endif
| |
|
|
|
1.7, Аноним (7), 22:30, 23/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +10 +/– |
> Вызов функции realloc() с нулевым размером переведён в разряд неопределённого поведения.
Нужно больше неопределённого поведения! Потом, когда вылезут очередные уязвимости из-за работы с памятью, можно будет с уверенностью утверждать, что где-то ещё оптимизатор смог ускорить работу на 0.01% благодаря этому!
| |
|
2.11, Аноним (11), 22:41, 23/11/2024 [^] [^^] [^^^] [ответить]
| +8 +/– |
Ничего удивительного, в этом языке даже int + int является неопределенным поведением. Нам в 2024 ясно видна дикость этого, а вот палео-кодерам из палео-70-ых это казалось нормальной идеей.
| |
|
3.28, Аноним (31), 00:06, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> int + int является неопределенным поведением
Воо, это вообще лютая дичь, я до сих пор не понимаю, КАК такое возможно в языке для системного программирования.
| |
|
4.29, Аноним (31), 00:08, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
П.с. а еще больше недоумеваю от тех УМВРщиков, которые в упор это не замечают.
| |
|
5.33, Аноним (32), 00:16, 24/11/2024 [^] [^^] [^^^] [ответить]
| +9 +/– |
Потому что системный язык должен полагаться на то как происходит сложение на аппаратном уровне в конкретной системе, а не воротить абстракцию над абстракцией лишь бы все было везде одинаково. Кому надо одинаково идут на джаваскрипт зачем им Си?
| |
|
6.44, Аноним (-), 00:41, 24/11/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Потому что системный язык должен полагаться на то как происходит сложение на
> аппаратном уровне в конкретной системе, а не воротить абстракцию над абстракцией
> лишь бы все было везде одинаково. Кому надо одинаково идут на
> джаваскрипт зачем им Си?
Вон то на практике вело к дохреналиону багов, увы и ах. А абстракции что, как вон то алго не считай, а если ему надо не менее 32 битов для корректной работы - то хоть ты тресни, но ты или дашь эти 32 бита, или профачишь вычисления. В ряде случаев еще и с вулнами, отрицательными индексами массивов и прочими характерными факапами. И спасибо еще если это дамп памяти по сети или в эфир улетит. А то бывает и такое, heartbleed соврать не даст.
| |
|
7.48, mister_0 (?), 00:47, 24/11/2024 [^] [^^] [^^^] [ответить]
| +6 +/– |
int a + int b <= int max
из этого условия можно вывести weakest predicate и проверить его до сложения
int max - int a => int b
если это условие не работает, то складывать не надо, будет страшный оверфлоу.
один if и тот сделать не могут, подавай им сразу новый язык, бороу чекер, безразмерную арифметику и прочее.
| |
|
|
|
10.96, Аноним (-), 07:16, 24/11/2024 [^] [^^] [^^^] [ответить] | +1 +/– | Меня для начала колышет в системщине - делать доступы конкретного размера А не ... большой текст свёрнут, показать | |
10.258, нах. (?), 11:49, 25/11/2024 [^] [^^] [^^^] [ответить] | +/– | ну проверка битика вообще-то почти халявная Хз почему в низкоуровневом языке ее... текст свёрнут, показать | |
|
|
8.56, Аноним (-), 01:16, 24/11/2024 [^] [^^] [^^^] [ответить] | +6 +/– | Если значение int a отрицательное, будет переполнение при вычитание underflow... текст свёрнут, показать | |
|
|
|
11.189, Аноним (189), 15:39, 24/11/2024 [^] [^^] [^^^] [ответить] | +/– | И во сколько раз у нас накроется скорость всей математики таким манером Не хоти... большой текст свёрнут, показать | |
|
|
9.79, Neon (??), 05:38, 24/11/2024 [^] [^^] [^^^] [ответить] | +/– | А простое сложение расползается кучей кода с кучей багов Спасибо, не надо... текст свёрнут, показать | |
|
8.122, Аноним (122), 09:33, 24/11/2024 [^] [^^] [^^^] [ответить] | +1 +/– | Когда мне нужно было решить задачу проверки на переполнение, я использовал intpr... текст свёрнут, показать | |
8.170, Аноним (166), 13:22, 24/11/2024 [^] [^^] [^^^] [ответить] | +/– | Если вам нужен язык для вычислительной математике - берите фортран и не пудрите ... текст свёрнут, показать | |
|
7.105, 21yosenior (?), 08:41, 24/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
На практике ничего иного не наблюдается. Языки с иными свойствами почему-то миру ничего дать не смогли. Поэтому там может быть хоть в 10 раз больше багов - это никак не влияет на оценку.
| |
|
8.125, Bottle (?), 09:43, 24/11/2024 [^] [^^] [^^^] [ответить] | –2 +/– | Практика не показатель качества - выживают не самые сильные и умные, а самые ада... текст свёрнут, показать | |
|
7.176, Аноним (166), 14:30, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
>ты или дашь эти 32 бита, или профачишь вычисления.
Для вычислений используйте Фортран.
| |
|
6.46, Аноним (-), 00:45, 24/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Потому что системный язык должен полагаться на то как происходит сложение
> на аппаратном уровне в конкретной системе
Угу, именно поэтому они это не implementation-defined, не хотя бы unspecified, а вот сразу UB!
Что бы когда ты писал код, то как он будет работать было именно ХЗ, в зависимости от платформы, железа, флагов, степени безумия разраба компилятора, которые может просто выкинуть твой код нафиг с обоснование "не, ну не бывает же UB в нормальном коде".
| |
|
7.54, анон (?), 01:10, 24/11/2024 [^] [^^] [^^^] [ответить]
| –2 +/– |
Такова плата за генерацию эффективного кода. Никто же не заставляет использовать именно Си
| |
|
8.69, Аноним (-), 02:50, 24/11/2024 [^] [^^] [^^^] [ответить] | +/– | Так ведь всё с точностью до наоборот В Си надо обложить код if ами чтобы не пол... текст свёрнут, показать | |
8.74, Bottle (?), 04:10, 24/11/2024 [^] [^^] [^^^] [ответить] | +2 +/– | О дааа Тот самый эффективный код на Си, известный своими утечками памяти А то,... текст свёрнут, показать | |
|
9.152, Аноним (166), 12:23, 24/11/2024 [^] [^^] [^^^] [ответить] | –1 +/– | Уже давно есть типы фиксированной ширины и контроль переполнения Задирание шири... текст свёрнут, показать | |
|
|
7.120, Аноним (73), 09:31, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Аноним написал много латинских слов, и думает, что написал что-то умное.
А на самом деле, implementation-defined, unspecified и undefined, это буквально одно и то же. Что конкретно скрывается за UB, должно быть задокументировано в документации к компилятору.
| |
|
6.47, Аноним (-), 00:46, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Ну давай, расскажи мне как ты собрался из Си "полагаться на то как происходит сложение на аппаратном уровне" если переполнение int'ов есть undefined behavior а не implementation-defined behavior.
| |
6.78, Neon (??), 05:35, 24/11/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
Пусть на ассемблере кодят, раз им нужно сложение на аппаратном уровне в конкретной системе. Язык высокого уровня уже по любому абстракция
| |
6.90, morphe (?), 06:13, 24/11/2024 [^] [^^] [^^^] [ответить] | +2 +/– | Вот только всё современное железо реализует это как two s complement, и сложение... большой текст свёрнут, показать | |
|
7.111, Аноним (244), 08:54, 24/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
> А в сях стандарт написан так, что сложение может происходить на абаках
Ты просто не умеешь этим гордиться, а они умеют.
| |
|
|
5.104, 21yosenior (?), 08:39, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Просто они знают, что ub является переполнение, а не сложение. Поэтому у них всё работает.
| |
|
4.254, Аноним (254), 10:51, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> КАК такое возможно в языке для системного программирования
Вы видимо не системный программист, раз задаётесь таким простейшим вопросом.
| |
|
3.42, mister_0 (?), 00:37, 24/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
ну так ты проверь перед сложением или можешь после сложения в регистр flags посмотреть, там есть бит переполнения.
а ещё есть люди которые рапэраунд с оверфлоу путают
| |
|
|
|
6.53, Аноним (-), 01:04, 24/11/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
> ну придётся ассемблерную вставку сделать.
А ничего что на сях мы писали - чтобы портабельно было, м?!
| |
|
7.123, Аноним (73), 09:36, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Вы писали на сях, чтобы было быстро, а не чтобы было портабельно.
Оптимальное соотношение между скоростью разработки и скоростью работы программы.
| |
|
8.192, Аноним (191), 15:46, 24/11/2024 [^] [^^] [^^^] [ответить] | +/– | Для непортабельного у нас уже был ассемблер, но пример Colibri OS почему-то наме... текст свёрнут, показать | |
|
|
6.81, Neon (??), 05:40, 24/11/2024 [^] [^^] [^^^] [ответить]
| +3 +/– |
А на хрена тогда С нужен ? Если нужно сразу на ассемблере фигачить
| |
|
5.51, mister_0 (?), 00:55, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
но я выше ответил, что проще считать post condition выводить weakest predicate и проверять его до вызова и никаких тебе оверфлоу.
или ты думаешь, что только использования раста и питона это единственный способ?
| |
|
6.65, Аноним (64), 02:19, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> или ты думаешь, что только использования раста и питона это единственный способ?
Скажем так, единственный способ - это не использование С.
| |
|
7.108, 21yosenior (?), 08:48, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Пистон написан на си, поэтому там ситуация таже самая. Раст компилируется си компилятором, поэтому ситуация снова такая же. Хоть паскалик бы в пример привёл - не настолько позорно было бы.
| |
|
|
|
6.119, 21yosenior (?), 09:21, 24/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Нет, похоже всё ещё хуже - там в новости написано "Добавлена поддержка заголовочных файлов <stdckdint.h>". Это даже в стандарте теперь есть, но почему-то эксперты говорят "в си нет способа".
| |
|
7.188, Аноним (-), 15:31, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Какие милые костили))
И даже это стандартизировали только через _пол-века_ после создания самого языка.
А зачем следование параметров поменяли?
| |
|
|
|
4.52, Аноним (-), 01:04, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> ну так ты проверь перед сложением или можешь после сложения в регистр
> flags посмотреть, там есть бит переполнения.
В сях нет стандартного способа посмотерть флаги, внезапно.
> а ещё есть люди которые рапэраунд с оверфлоу путают
Wrapround определен и гарантирован только для unsigned, если что.
| |
|
5.82, Neon (??), 05:41, 24/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
> В сях нет стандартного способа посмотерть флаги, внезапно.
Такой системный язык))). Близкий к аппаратуре
| |
|
6.97, Аноним (-), 07:28, 24/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
>> В сях нет стандартного способа посмотерть флаги, внезапно.
> Такой системный язык))). Близкий к аппаратуре
Внезапно он еще и про портабельность. А имплементация флагов у разных процов - довольно разная бывает. Так что - ограничения жанра, скажем так.
В парадигмах C вообще возможны как таковые только mem-mapped доступы. Если нечто не отмаплено в память - ну, этого нет. На память об этом вся современная периферия как раз mem mapped, а всякие io пространства - легаси. Заодно mem mapped железки и DMA удобны, чего уж там. Самый лучший код - это его отсутствие!
| |
|
7.124, Аноним (244), 09:40, 24/11/2024 [^] [^^] [^^^] [ответить] | +1 +/– | Ну, у C есть ещё стандартизированные расширения из ISO IEC TR 18037 Среди кото... большой текст свёрнут, показать | |
|
8.195, Аноним (195), 16:06, 24/11/2024 [^] [^^] [^^^] [ответить] | +/– | Ну вот такой вот хреновый стандарт, со звездочкой и 5-м шрифтом 1 из многочис... большой текст свёрнут, показать | |
|
9.233, Аноним (244), 18:33, 24/11/2024 [^] [^^] [^^^] [ответить] | +/– | Ну блин, это была не реклама AVR, а история про то, что если не отмаплено, то в ... текст свёрнут, показать | |
|
|
11.317, Аноним (244), 09:08, 26/11/2024 [^] [^^] [^^^] [ответить] | +/– | Но всё-таки есть стандарт на добавление подобных кейвордов Наоборот, они изба... большой текст свёрнут, показать | |
|
12.329, Аноним (-), 16:09, 26/11/2024 [^] [^^] [^^^] [ответить] | +1 +/– | Но называя вещи своими именами - это не сработало Де факто - подобный код не по... большой текст свёрнут, показать | |
|
|
14.341, Аноним (-), 00:29, 27/11/2024 [^] [^^] [^^^] [ответить] | +/– | Почти не считается Даже просто самому определить регистры AVR ки - брейнфак Иб... большой текст свёрнут, показать | |
|
|
|
|
|
|
8.268, фф (?), 13:23, 25/11/2024 [^] [^^] [^^^] [ответить] | +/– | вот кстати, сюда же можно было бы замапить регистры процессора и проверять бит п... текст свёрнут, показать | |
|
|
|
5.112, 21yosenior (?), 08:55, 24/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
> В сях нет стандартного способа посмотерть флаги, внезапно.
Не позорься - написал выше этот способ.
> Wrapround определен и гарантирован только для unsigned, если что.
Опять же, нужно меньше позориться. ++*(unsigned*)&int_var - переполняй сколько хочешь.
| |
|
6.148, Аноним (-), 11:52, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> переполняй сколько хочешь.
Поздравляю.
Своим костылем с кастом к unsigned вы только подтверждаете что проблему UB, что убогость сишки в целом.
Продолжайте в том же духе))
| |
6.196, Аноним (195), 16:13, 24/11/2024 [^] [^^] [^^^] [ответить] | –1 +/– | Тебе там уже написали что ты облажался А, ты за добавкой пришел Ну я тебе ее о... большой текст свёрнут, показать | |
|
|
|
3.103, 21yosenior (?), 08:38, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Судя по всему решение хорошее. Как иначе объяснить, что весь софт написан на этой дикости, а на чём-то ином не аписано ничего.
| |
|
4.222, Аноним (-), 17:22, 24/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Весь нормальный софт написан на плюсах.
Даже самый сишный компилятор гцц и тот не осилили на сишке продолжать.
А на сишке или легаси нуано, или упертый Айм Финнишь, который просто не хочет признать свою ошибку.
А до с++ была ада. Но быдлокоделам было легче писать на си.
| |
|
|
|
1.15, Маковод (?), 23:02, 23/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +9 +/– |
Всё это ерунда, есть же православный ANSI C (C89). Всё остальное — ненужный реверс инжиниринг с синтаксическим сахаром.
| |
|
2.41, Аноним (-), 00:34, 24/11/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Всё это ерунда, есть же православный ANSI C (C89). Всё остальное —
> ненужный реверс инжиниринг с синтаксическим сахаром.
Вот ты на нем и прогай. А я меньше чем на C99 в принципе не согласен, а лучше минимум 11, ибо делать из г-на и палок аналог static assert'а - ну такое себе.
| |
|
1.18, nc (ok), 23:26, 23/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| –2 +/– |
Расширения GNU давно пора принимать в стандарты С и С++. Простые и полезные идеи, уже давно реализованные и многократно проверенные.
Единственное чего не хватает - расширения __declspec(property) в С++, которое есть в msvc и clang, но нет в gcc.
| |
|
2.135, Аноним (244), 10:29, 24/11/2024 [^] [^^] [^^^] [ответить] | +/– | Нет, C практически заморожен И не один GCC имеет власть - не захотят остальные ... большой текст свёрнут, показать | |
|
3.198, Аноним (-), 16:23, 24/11/2024 [^] [^^] [^^^] [ответить] | –1 +/– | Де факто актуальные компилеры C это GCC и Clang Майкрософт хотя-бы C99 уже смог... большой текст свёрнут, показать | |
|
4.220, Аноним (244), 17:15, 24/11/2024 [^] [^^] [^^^] [ответить] | +/– | Так ты 2 2 написал, а сложить не сложил Я сложу из C99 выкинули VLA, C99 стал ... большой текст свёрнут, показать | |
|
5.223, Аноним (244), 17:28, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> потому что от языка требуется некоторая прямая совместимость
То есть требуется не только чтобы старый код работал в новых компиляторах (обратная совместимость). но и хорошее взаимодействие между старым и новым кодом. То есть старый код тянет назад будущие версии языка. Это как если бы в JS не стали добавлять "use strict", потому что он диалект создаёт. Проблему даже сложно осознать, но в C++ она есть.
| |
5.307, Аноним (-), 21:22, 25/11/2024 [^] [^^] [^^^] [ответить] | +/– | У них, помнится, далеко не только VLA не хватало, по жизни Народ заманался ждат... большой текст свёрнут, показать | |
|
6.318, Аноним (244), 11:08, 26/11/2024 [^] [^^] [^^^] [ответить] | +/– | Нет, вас MISRA и то, и другое запретила, а вы вольнодумствуете о разумных реакц... большой текст свёрнут, показать | |
|
7.324, fuggy (ok), 14:03, 26/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Да кто же эту MISRA будет использовать. Если это не критическая программа, то никто это использовать не будет. А если критическая, то они использует это и без MISRA и всё равно ошибки допускают. Вот если бы это было встроено в компиляторы на уровне варнингов. А так как нужно для оптимизации иногда ходить по тонкой грани UB они от этого плюются.
| |
7.330, Аноним (-), 17:05, 26/11/2024 [^] [^^] [^^^] [ответить] | +/– | Вообще-то и правильно сделала в своей области, если уж мы об этом И на микрокон... большой текст свёрнут, показать | |
|
|
|
|
|
|
1.40, Аноним (-), 00:31, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
> атрибут [[noreturn]] позволяет указать, что функция не возвращает значений
Вообще-то он указывает что функция никогда не возвращается. Скажем main в фирмвари - возвращаться некуда и его можно задекларить так (экономит немного кода в прологе функции).
| |
|
|
3.308, Аноним (-), 21:23, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Тоже глаз зацепился. Думаю: что, void отменили, что ли?
Да это автор новости прогнал, увы и ах, но такое тоже бывает.
| |
|
|
1.58, Аноним (58), 01:20, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
14 версия при сборке пакетов ругалась на указатели, 15 будет ругаться если код не той версии. Страшно представить на что 16 версия ругаться будет.
| |
|
2.281, _kp (ok), 16:07, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Если не указываете явно с каким стандартом Си компилировать исходник, то не все ли равно. :)
| |
|
1.70, мяв (?), 02:59, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
что-то фигня какая-то с auto..
auto myNum = superCalculator(2,2);
и иди гадай, кого там возвращает твоя функция.
а потом твой друг пойдет гадать и лазать в соседнем файле, когда откроет код .. псоле чего окажется, что эту фцнкцию где-то там по дороге перекрыли/перепилили/вовсе другой файл включили и она тперь возвращает int, вместо uint :|
зачем вообще такое добавлять в язык со сторой типизацией?
ну, серьезно, это ж лол какой-то.
послезавтра эта функция будет char* возвращать. и я, вместо жалобы на неправельный тип в декларации, увижу 100500 жалоб в черт пойми, каких частях кода.
а auto молча станет char*.
| |
|
2.84, Neon (??), 05:43, 24/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
Какие проблемы ? Смотрим объявление функции. В современных IDE это автоматом подсвечивается при наведении на функцию
| |
|
|
4.288, nilsys (?), 16:59, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
ну вы можете хоть на бумажках писать, но большинство людей ориентируются на использование подходящих для работы инструментов
| |
|
|
2.86, Илья (??), 05:48, 24/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
Значит, типизация не строгая. Должно сломаться всё по цепочке.
А то, что ты тип возвращаемого значения меняешь в публичном апи - это отдельный вопрос
| |
|
3.163, Аноним (166), 12:57, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Ну неявно это можно понимать как тип "возвращенный функцией". Освобождает от знания интерфейса функции, но оставляет вопросы сопряжения с другими типами. В си никогда не было строгой типизации. Была идея "адаптивной типизации".
| |
|
2.99, Аноним (-), 07:45, 24/11/2024 [^] [^^] [^^^] [ответить] | +/– | Да вот блин да, научились у некоторых - а конкретно плюсеров Но порой таки - уд... большой текст свёрнут, показать | |
|
3.331, arisu (ok), 17:26, 26/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Си вообще забавная штука. Вроде низкоуровневый, но функция на самом деле может
> и получить и вернуть даже struct.
причём для передачи структуры по значению ABI требует, чтобы все её поля бережно засунули в стек по одному. нет, не просто блоб-структуру, которую можно потом нормально адресовать, а поля один за одним, как будто это обычные параметры соответствующего типа. мне даже не хочется представлять, чем закидывался тот, кто это придумал.
| |
|
4.342, Аноним (-), 00:43, 27/11/2024 [^] [^^] [^^^] [ответить] | +/– | Сам по себе стандарт C не регламентирует никакие ABI А для ARM так и вовсе 2 AB... большой текст свёрнут, показать | |
|
5.343, arisu (ok), 01:21, 27/11/2024 [^] [^^] [^^^] [ответить] | +/– | успехов писать на 171 стандарте си 187 как удобно когда надо 8212 down ... большой текст свёрнут, показать | |
|
6.361, Аноним (-), 19:26, 28/11/2024 [^] [^^] [^^^] [ответить] | +/– | Вообще, вот именно программы под Linux - вполне себе могут быть conforms to И... большой текст свёрнут, показать | |
|
7.363, arisu (ok), 20:24, 28/11/2024 [^] [^^] [^^^] [ответить] | +/– | правда, они даже ввод и вывод делать не могут 8212 потому что в языке си нет ... большой текст свёрнут, показать | |
|
8.372, Аноним (-), 06:06, 30/11/2024 [^] [^^] [^^^] [ответить] | +/– | А stdio h это что, мой глюк Тот же printf можно и на мк завести Он в полной ... большой текст свёрнут, показать | |
|
9.374, arisu (ok), 06:25, 30/11/2024 [^] [^^] [^^^] [ответить] | +/– | ух ты, это у нас теперь часть языка эвона как как это ты же выше сам сказал, ... текст свёрнут, показать | |
|
|
|
|
|
|
|
2.113, Бывалый Смузихлёб (ok), 08:57, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Зато, как славно показали себя иные адепты строгой и явной типизации и отсутствия такого у того же ЖС вот то ли дело сишечка
Стоило лишь в некоторые ЯП подвезти auto. Наворачивали за обе щёки и обмазывали вообще всё до чего могли дотянуться, а не использовали ранее - тупо потому что такой возможности не было
| |
2.162, ProfessorNavigator (ok), 12:51, 24/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
В С++ auto есть уже достаточно давно, и да, может вызывать проблемы. В том числе с читаемостью кода. Но есть у него и плюсы. Когда у вас std::find_if возвращает например итератор вида std::vector<std::tuple<MyClassOne, MyClassTwo, std::shared_ptr<MyClassThree>>>::iterator, то проще написать auto it = std::find_if(...). В данном случае и так сразу видно, итератор чего вернётся, и понятно - каким он будет. Поэтому auto вполне уместно - от него читаемость кода только повысится. Но злоупотреблять им естественно не стоит. Иначе, как вы правильно заметили, потом просто запутаетесь, какая функция что возвращает, и будете ловить проблемы на ровном месте.
| |
2.235, Аноним (166), 18:45, 24/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
Не позволяйте автомату (компилятору) определять ваш код за вас.
Кроме того есть версии библиотек.
| |
|
3.253, nobody12 (?), 10:31, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Увы, если для С++ это имеет смысл, чтобы не писать типы из 100500 шаблонов (привет Boost), то для обычного С это действительно вредительство
| |
|
4.269, Аноним (244), 14:19, 25/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
> чтобы не писать типы из 100500 шаблонов
А в сях 100500 макросов.
> то для обычного С это действительно вредительство
Ядро линукса, поиск гитхаба, ищем где используют кривые аналоги auto.
typeof(x) - 55 файлов.
__typeof__(x) - 13 файлов.
__auto_type - 9 файлов.
typeof(var) ... = ... var - до 1000 файлов (backreference в поиске не работает)
Начни с главного вредителя, Торвальдса.
| |
|
5.309, Аноним (-), 21:25, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Ядро линукса, поиск гитхаба, ищем где используют кривые аналоги auto.
> typeof(x) - 55 файлов.
> __typeof__(x) - 13 файлов.
> __auto_type - 9 файлов.
> typeof(var) ... = ... var - до 1000 файлов (backreference в поиске
> не работает)
typeof(var) это мягко говоря не синоним auto и может использоваться чертовой кучей иных способов.
> Начни с главного вредителя, Торвальдса.
Да, начните. Сделайте свой проект, дайте этому негодяю мастеркласс. Что, слабо? А сколько пафосу было...
| |
|
6.316, Аноним (244), 08:15, 26/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
>> typeof(var) ... = ... var - до 1000 файлов
> typeof(var) это мягко говоря не синоним auto и может использоваться чертовой кучей
> иных способов.
А буквой t ещё древние римляне пользовались. Я ведь полную конструкцию привёл, не надо её обрезать.
> Да, начните. Сделайте свой проект, дайте этому негодяю мастеркласс.
- ананасы в пицце (вывод типов в C) - это вредительство
- пиццерия на букву G давным-давно добавила, а в неё ходит коллектив L
- займитесь ими!
- ???
Это вы здесь вредительство искали. Или уже вредительство уже не вредительство, когда оказалось, что его Линус одобрил?
| |
|
|
|
|
|
1.77, Аноним (77), 05:35, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
Зачем снова новый тип char8_t, если уже есть char и unsigned char. Более того есть еще stdint.h где есть int8_t и uint8_t. Почему?
| |
|
2.140, Аноним (-), 11:24, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Почему? А потому что диды-недостандартописаки смогли подоcpaть даже в такой простой вещий как char.
Вот ответь на простой вопрос - обычный char будет знаковым или беззнаковым?
А вот хз, как повезет. Для gcc он по умолчанию signed, но если использовать флаг -funsigned-char, то будет unsigned. Но опять же не везде - для Android NDK он по умолчанию unsigned и если что нужно юзать -fsigned-char.
А для MSVC он по умолчанию signed, но флаг нужно использовать другой.
При этом char8_t определен однозначно:
"char8_t is an unsigned integer type used for UTF-8 and is the same type as unsigned char."
en.cppreference.com/w/c/string/multibyte/char8_t
| |
|
3.155, Аноним (166), 12:29, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Диды писали для себя и не думали о глобализации. Еще они дали местным инженерам адаптировать для своей аппаратной платформы.
| |
|
2.154, Аноним (166), 12:27, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Потому что стандартом символа стал уникод. Кроме того это унификация под типы фиксированной ширины.
| |
|
3.182, Truth Seeker (?), 14:54, 24/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
Давайте проведем эксперимент в Debian
vi test.c
#include <stdio.h>
int main(int argc, const char *argv[])
{
printf("%s\n", argv[1]);
return 0;
}
make test
./test Привет!
Привет!
Вопрос: Что я делаю не так ?
| |
|
4.199, Аноним (-), 16:28, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> make test
> ./test Привет!
> Привет!
> Вопрос: Что я делаю не так ?
Ну, для начала - не проверяешь что argv[1] вообще был, хотя-бы :). Так что если это запустить без аргументов... :)
| |
|
5.208, Truth Seeker (?), 16:48, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Не проверяю для краткости. Вопрос не об этом. "Привет!" - это UTF-8 строка, а в main char** .
| |
|
6.284, _kp (ok), 16:14, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
>>UTF-8 строка, а в main char
Так Вы со строкой ничего и не делаете, а выводите что дали. Длина и то, по завершающему нулю.
А вот если, например, посимвольно будете выводить, или посчитать длину..
| |
|
7.373, Аноним (-), 06:17, 30/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Так Вы со строкой ничего и не делаете, а выводите что дали.
> Длина и то, по завершающему нулю.
> А вот если, например, посимвольно будете выводить, или посчитать длину..
А вы вообще знаете как правильно считать посимвольно какие-нибудь иероглифы, всякие там модификаторы, RTL/LTR и тому подобные приколы? Unicode в этом смысле - тот еще брейнфак получился. А вот смайликов не хотели? А еще и цветных, а?!
| |
|
|
5.216, Truth Seeker (?), 17:00, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
./test Привет! > hello.txt
hexdump -C hello.txt
00000000 d0 9f d1 80 d0 b8 d0 b2 d0 b5 d1 82 21 0a |............!.|
| |
|
6.229, Аноним (166), 18:12, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Про это и говорю. Вы прозрачно работаете с char не подозревая о его ширине. Когда-то она была равна 8 битам.
| |
|
7.255, Аноним (6), 11:14, 25/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Это не прозрачно. Printf %s просто выводит байты и эмулятор терминала пытается их интерпретировать (по случайному совпадению он настроен на utf-8). Если ты попробуешь работать с текстом посимвольно, быстро осознаешь, что тут не так. При этом wchar обычно для utf-16, но там тоже не каждые 16 бит что-то означают. Одно из заметных следствий из этого состоит в том, что файловое имя в 64 символа не поместится в 255 байтное ограничение для имён файлов. И нельзя навскидку сказать, сколько символов можно будет записать -- это может быть и 64 и 255 и сколько угодно между этими значениями.
| |
|
|
5.271, Аноним (271), 14:36, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Так что если это запустить без аргументов... :)
Думаю, Вы привели неудачный аргумент. Всегда нужно знать, какие аргументы передать в функцию, и какие функция ожидает. Можно, конечно, в функции сделать обработку неправильных аргументов или вообще пустых, но это дополнительно утяжеляет функцию.
Помнится, была (может, и сейчас есть) великобританская библиотека что-то типа Applied Statistics. Там каждая функция стандартно анализировала все эти вещи, включая неправильные значения переданных параметров. Считаю это излишним. Очистку и контроль данных лучше делать до вызова алгоритма их обработки, не увеличивая объем кода в 2-3 раза.
| |
|
6.310, Аноним (-), 21:27, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
>> Так что если это запустить без аргументов... :)
> Думаю, Вы привели неудачный аргумент. Всегда нужно знать, какие аргументы передать в
> функцию, и какие функция ожидает.
В данном случае достаточно запустить прогу без аргументов и она радостно брякнется, референснув argv[1] которого там даже в проекте нет :)
| |
|
|
4.259, Аноним (259), 11:51, 25/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Вот сразу видно счастливого человека!
Ни разу не е*ался с длинами символов и кодировками)
| |
|
5.265, Аноним (237), 12:19, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
А потом начинается диакретика. А потом какие-нибудь арабские языки… и идёшь вешаться.
| |
|
6.280, Аноним (-), 16:05, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Цитата из Википедии.
>Стандарт Юникод поддерживает письменности языков как с направлением написания слева направо (англ. left-to-right, LTR), так и с написанием справа налево (англ. right-to-left, RTL) — например, арабское и еврейское письмо. В обоих случаях символы хранятся в «естественном» порядке; их отображение с учётом нужного направления письма обеспечивается приложением.
Блин это так сложно (сарказм). Иди вешайся, лично я пас.
| |
|
5.273, Аноним (271), 14:43, 25/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Ни разу не е*ался с длинами символов и кодировками)
Ага, особенно для языков с написанием справа налево и с иероглифическим письмом.
Поэтому маленький пример приведу. В естественно-научных дисциплинах 99% мировых публикаций выходит на английском языке. По крайней мере в этой области есть ли смысл вообще переводить ПО на локальные языки? Для себя решил, что ради 1% тратить кучу времени на локализацию и интернационализацию в ущерб смысловой начинке проекта - нет. В новом проекте избавляемся от переводов и кодировок в принципе - там нет ни одной буквы на не-латинице.
| |
|
6.282, Аноним (-), 16:09, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
>По крайней мере в этой области есть ли смысл вообще переводить ПО на локальные языки?
Внутри пещеры. смысла нет.
>Для себя решил, что ради 1% ...
Рад за тебя. Хоть что-то сам решаешь.
>В новом проекте избавляемся от переводов и кодировок в принципе - там нет ни одной буквы на не-латинице
Не понял логический смысл этого предложения.
| |
6.286, Аноним (-), 16:21, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> В естественно-научных дисциплинах 99% мировых публикаций выходит на английском языке.
> В новом проекте избавляемся от переводов и кодировок в принципе - там нет ни одной буквы на не-латинице.
А потом твой пользователь пытается сохранить файл с путем или именем и... приложение падает?
Думаю это плохой опыт для пользователя)
Я уже молчу что япония, корея, израиль - это весьма развитые страны страны отличной научной базой.
И китай, кстати, тоже.
| |
|
|
|
|
|
1.87, Аноним (87), 05:50, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| –3 +/– |
> Удалена возможность определения функций в стиле K&R C, используемом до принятия спецификации ANSI C и описанном в книге "The C Programming Language" Кернигана и Ритчи.
Так это уже не тот язык С, который придумали его изобретатели Брайан Керниган и Деннис Ритчи. Это совсем совсем другой язык "С23" и т.д. и т.п. А значит, можно использовать старый стандарт 89 года, с оговоркой, что это настоящий язык С.
| |
|
2.136, Аноним (244), 10:42, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> старый стандарт 89 года
Так это тоже "уже не тот язык С" - в K&R C не было UB (поэтому переиздание книжки K&R устарело примерно в момент выхода).
| |
|
|
4.200, Аноним (244), 16:29, 24/11/2024 [^] [^^] [^^^] [ответить] | +/– | Не важно что Пропасть между K R C и C89 важна Переносимый ассемблер поднялся... большой текст свёрнут, показать | |
|
|
6.227, Аноним (244), 17:48, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Тогда выходит, что и C89 & С23 - разные миры. Это такая же ерунда, как про Кернигана, Ритчи и "их" C89.
Парадигма языка менялась только в C89. C23 добавляет memset_explicit, не потому что он такой весь новый, а чтобы решить проблему, созданную в C89.
| |
|
5.221, Truth Seeker (?), 17:21, 24/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
В 1988 году я ещё играл в "Лунолёт" на МК-61 и таких подробностей про С89 не знал. Я говорю "условно", чтобы принять ранний стандарт за эталон, так как он реализован в GCC. Оставлю опции компилятору. Но буду за этим следить тоже.
| |
|
6.300, Аноним (-), 18:45, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
>В 1988 году я ещё играл в "Лунолёт" на МК-61 и таких подробностей про С89 не знал.
В 1988 у нас кроме чёрно-белого телевизора ничего не было. На цветной телевизор денег не хватало. Ты видимо сынок богатого зажравшегося политработника.
| |
|
7.319, Аноним (264), 12:19, 26/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Да ладно вам, MK-61 и МК-52 рядовым студентам покупали обычные родители.
| |
|
|
|
|
|
2.294, Bottle (?), 17:31, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Я тебе скажу, о! ужас!, суровую правду жизни: ты и на русском языке говоришь не эпохи Рюрика, а на языке Пушкина, Толстого, Достоевского.
Да, Сишка не может кристализироваться и быть идеальной. Ей нужно развитие.
| |
|
1.88, Аноним (87), 05:53, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
Оригинальный язык С описан в книге "The C Programming Language" Кернигана и Ритчи. Все остальное я могу с полным правом игнорировать. Отныне все мои проекты будут базироваться исключительно на книге "The C Programming Language".
| |
|
|
3.224, Truth Seeker (?), 17:33, 24/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
Грамматику языка С я реализую по этой книге. Что не будет сюда подходить, то отнесу на счет дополнительных правил. Можно сказать, что это будет новая ветка развития С, с того момента.
| |
|
|
3.177, Truth Seeker (?), 14:36, 24/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
Я использую vim - подсветка синтаксиса, авто-дополнение, многооконность в консоли, форматирование, замена и поиск regex, вставка результатов команды. Например, я могу вставить в текст прямо из сайта, не выходя из vim.
| |
|
4.267, Аноним (264), 12:34, 25/11/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
Но это уже не TrueЪ. Надо пользоваться тем, что был во времена K&R.
| |
|
|
2.215, Аноним (-), 16:59, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Скажи почему ты такой немодный? Модные и молодёжные будут использовать C23!
| |
|
1.89, Аноним (87), 06:01, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
> указания имён неиспользуемых параметров при определении функций (как в C++)
> определения атрибутов как в С++
Также языком С++ лично я считаю язык представленный в книге The C++ Programming Language (1st edition). Все остальное - это выдумки, и я могу их с полным правом игнорировать.
| |
|
2.117, Аноним (-), 09:17, 24/11/2024 [^] [^^] [^^^] [ответить]
| +3 +/– |
Требую больше постов о том, как ты игнорируешь. Я большой любитель поведения людей, которое можно описать словами "я такая противоречивая сегодня".
| |
|
1.92, ijuij (?), 06:35, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> Удалена возможность определения функций в стиле K&R C
Это меня огорчает, у меня есть ещё код в подобном стиле!
| |
|
2.93, ijuij (?), 06:46, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
А так мне все нововведения нравятся, и особенно хочу отметить это:
> Добавлены типы "_BitInt (N)" и "unsigned _BitInt (N))" для определения целых чисел с указанным числом битов
🔝
| |
|
|
4.202, Аноним (-), 16:31, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Мммм. Как же мне не хватало переменных длиной 3, 7, 11 бит
Вообще иногда удобно. Если мне нужен диапазон 0..7 и при этом алго корректно работает, отдельно кодить валидацию и что вообще делать если на вход дали 20 ибо даже с uint8_t так можно было - сами понимаете.
Хотя конечно если очень сильно хотелось - можно было битовыми полями в struct это организовать, но у struct'ов есть свои скелеты в шкафу. Главный из которых - если мы полтора параметра хотели, разворачивать огород с typedef struct было несколько не с руки.
| |
|
3.109, Аноним (109), 08:53, 24/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Это ж какой простор для UB!
Ну и вообще, полностью идёт вразрез с идеей сишки. Всякие char/int реализуются аппаратно by design, а это-то как?
| |
|
4.142, Советский инженер (ok), 11:29, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Ну и вообще, полностью идёт вразрез с идеей сишки.
т.е. когда поле структуры 3,7,11 бит - это не идет в разрез,
а вот когда это отдельная переменная - то уже идет?
так по твоему?
| |
|
|
|
|
8.248, Аноним (248), 08:48, 25/11/2024 [^] [^^] [^^^] [ответить] | +1 +/– | О, теперь слово Question оказывается нельзя применять Когда уже запретят пить... текст свёрнут, показать | |
|
|
6.204, Аноним (-), 16:34, 24/11/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Есть масочная операция над регистром и есть ячейка памяти.
А в чем проблема чтобы расширить битовые поля чтобы они не были только в struct? Ну или почему как member struct'а так можно - а по отдельности ни ни?
Вы же понимаете что когда мы хотели это - мы таки заводили struct? Просто печатать было больше. И только.
| |
|
7.230, Аноним (166), 18:21, 24/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
struct это сущность
Битовое поле это дополнительная операция над сущностью.
Биты не хранятся.
| |
|
8.287, _kp (ok), 16:25, 25/11/2024 [^] [^^] [^^^] [ответить] | +/– | Смотря на каких аппаратных архитектурах Где то и косвенно адресуемые биты есть ... текст свёрнут, показать | |
|
|
|
|
|
|
|
1.153, Аноним (153), 12:26, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Успехов GCC конечно, но лучше я буду использовать odin-lang и даже zig-lang уже сейчас.
| |
|
2.304, Аноним (304), 20:33, 25/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
А я буду использовать GCC, потому что он есть везде - от Windows до Haiku.
| |
|
3.306, Аноним (153), 21:13, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Да ты и сбр*шь. Зачем писать под всё подряд, только распылять свои силы.
| |
|
4.321, Аноним (264), 12:25, 26/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Ну если под Windows понимать Msys2, то там отличий от юзерспейса под Linux немного. Рзве что, только в отношении API сокетов.
| |
|
|
|
1.156, Аноним (156), 12:30, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
... которое теперь приводит к выводу типа при определении объектов, что позволяет использовать признак "auto" вместо типа для определения типа переменных на основе типа выражения для их инициализации
типа всё понятно
| |
|
2.183, ijuij (?), 14:56, 24/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
Пожалуйста, наберитесь терпения! Скоро всё увидите, даже не сомневайтесь! 🌟
| |
2.205, Аноним (-), 16:35, 24/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
> На С++23 я уже видел проекты, а кто-нибудь видел проект на С23?
Учитывая что он финализировался без году неделю как? Coming soon! :D
Я вот уже думаю - не заапгрейдить ли мне тут 1 из болванок для моих фирмварей на это :)
| |
|
|
4.362, Аноним (-), 19:45, 28/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
>> Учитывая что он финализировался без году неделю как? Coming soon! :D
> Да. Например https://github.com/stephenberry/glaze.
>> Requires C++23
Так мы ж вроде про C23 - которы буквально на днях финализировался только. Так что на самом деле он так то C24 скорее, и тот под конец года :). При чем тут та плюсота?
А так жесткие требования к компилеру от либы - вовсе даже и не фича, а гемора пачка.
| |
|
|
|
1.207, Аноним (-), 16:46, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
>GCC 15 будет использовать стандарт C23 по умолчанию
Это ещё одно доказательство того, что GCC самый передовой в Мире компилятор.
| |
1.226, Аноним (-), 17:44, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
>Добавлена поддержка подстановки "%b" для обработки двоичных значений в семействах функций printf() и scanf().
Раньше чтобы десятичное число вывести в двоичном виде как делали?
| |
|
2.234, Аноним (166), 18:39, 24/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Самостоятельно формировали строку в буфере и выводили через спецификатор %s.
| |
|
3.289, _kp (ok), 17:06, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Часто это уже добавлено в компиляторах для контроллеров. Ничего нового, просто зафиксировали.
В том числе gcc, ибо для этого компилятор пересобирать не надо, а всего то мелкая правка в libc.
| |
|
|
1.232, Аноним (166), 18:30, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
А есть где нибудь статистика используемых ассемблерных инструкций тем или иным компилятором?
| |
1.243, Аноним (304), 20:53, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
> Стиль K&R подразумевает описание типов аргументов после определения функции, например, "int add(a, b) int a, b; {}"
Что это было?
| |
|
2.247, fuggy (ok), 01:52, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Функции с пустым списком аргументов теперь обрабатываются как функции, не принимающие аргументы.
Вона ещё было. Тоже с каких-то древних годов тащили.
| |
|
3.256, Аноним (6), 11:42, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
в плюсах можно писать main() и в си только main(void) -- насколько это хорошая идея судить не возьмусь, но тащить плюсы в си тема не здоровая.
| |
|
4.260, Аноним (237), 12:12, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Подобные вещи к плюсам вообще отношения не имеют, как раз их назад тащить есть смысл.
| |
4.270, Аноним (271), 14:29, 25/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
> тащить плюсы в си тема не здоровая
Почему нет? Пишу алгоритмы (бэкэнды) фактически на C с использованием удобных, как мне кажется, возможностей C++ (управление памятью и файловый/потоковый ввод-вывод). Конечно, все это без проблем обрабатывается компилятором g++ как C++.
Код, и без того сложный, получается лаконичным и легко сопровождаемым. А почти все, что предлагается выше, делает код эстетически некрасивым, даже неприятным. И толку от этого ноль.
| |
|
5.276, Аноним (6), 15:01, 25/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Это глупость. Либо пишешь на си, чтобы не иметь недостатков плюсов, либо на плюсах, если они позволяют генерировать более эффективный код в конкретном случае. При включении плюсов любой код становится заражённым плюсами. Тут и ресурсоёмкость, и раскрутка стека/исключений, и рантаймы, часто утечки на ровном месте и найти их куда сложнее чем в си, и, опять же, стандарт перегружен и нужно его понимать -- легче ошибиться. Наконец, нет ABI (до сих пор) и это прямо боль, так что применения ограничены.
| |
|
6.292, Аноним (264), 17:20, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
И что вам это ABI так жить мешает? Ну перекомпилируете ваш код, если что. Есть же libffi, если к другим языкам надо. И к тому же, большое изменение ABI, помнится, было последний раз при переходе с g++ v3.3 на v3.4.
| |
|
7.295, Аноним (6), 17:37, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
В реальном коде будут бинарные компоненты, да и в целом пересобирать все зависимости при каждом обновлении тулчейна не очень приятно. И часто не вариант, потому что сборка обновлённым компилятором очень часто сломана (отличный пример интеловские либы, в том числе опенсорсные). Ну вот взять wxwidgets -- все проги после смены компилятора разлетаются во все стороны. Такое вот ABI. Или вон взять osl (https://github.com/AcademySoftwareFoundation/OpenShadingLanguage) -- требует держать старый тулчейн для себя и всех как либо связанных компонентов годами. И openimageio туда же. Это всё опенсорс (каждый раз приходится пересобирать по десятку связанных пакетов), с проприетарными компонентами всё слишком печально.
| |
7.334, arisu (ok), 17:37, 26/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> И что вам это ABI так жить мешает? Ну перекомпилируете ваш код,
> если что.
угу. всё бросил и побежал перекомпилировать, как только бравые парни в g++ что-то сломали. ну, я ж программы и библиотеки пишу не для того, чтобы решать практические задачи, а чтобы писать программы и библиотеки.
по какой-то странной причине (недосмотр, надеюсь, его скоро исправят) код на си перекомпилировать не надо. с нетерпением жду отмены этой устаревшей концепции.
| |
|
|
5.285, Аноним (-), 16:17, 25/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Это плохая практика. Большинство людей от этого давно отошли. Пиши либо на чистом Си, либо на плюсах, не смешивай код.
| |
|
6.314, Аноним (271), 06:41, 26/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Возможно, и так. Но если нужна DLL, наружу всё-равно выглядывает C.
| |
|
|
4.291, _kp (ok), 17:11, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> в плюсах можно писать main() и в си только main(void)
можно и классику - int main[-1];
| |
|
|
|
|
2.302, Аноним (302), 19:25, 25/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Код, соответстующий C89, гораздо красивее, совместимость выше, его все используют и т. д.
| |
|
3.322, Аноним (264), 12:31, 26/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Кто все? Даже в ядре уже объявили C11, в Glibc и подавно был C99, как минимум.
| |
|
4.326, Аноним (302), 14:27, 26/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Ладно, не все, но свои программы я пишу в соответствии со стандартом C89.
| |
|
5.336, Аноним (-), 17:50, 26/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Ладно, не все, но свои программы я пишу в соответствии со стандартом C89.
Да хоть на Algol-60 пиши, кому тут какое дело?
| |
|
|
|
|
1.274, Аноним (271), 14:47, 25/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Представим, что каждые 5 лет обновляется учебник родного языка. Причем заменяется процентов 10 слов и процентов 30 правил. В языках программирования возможно. Может, оставят Кернигана-Ритчи в покое и направят усилия в плодотворное русло?
| |
|
2.278, Аноним (272), 15:13, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Да компиляторы все равно обратную совместимость сохранят, не беспокойся.
| |
|
3.335, arisu (ok), 17:41, 26/11/2024 [^] [^^] [^^^] [ответить] | +/– | ага как gcc13, например, который стал ругаться на snprintf buf, sizeof buf , ... большой текст свёрнут, показать | |
|
4.337, Аноним (-), 17:58, 26/11/2024 [^] [^^] [^^^] [ответить] | +/– | Ну ты то известный раздолбай-концептуал, уж прости Это таки случай когда семеро... большой текст свёрнут, показать | |
|
5.338, arisu (ok), 18:11, 26/11/2024 [^] [^^] [^^^] [ответить] | +/– | угу и игнорирование явного указания на то, что я понимаю, что делаю 8212 в в... большой текст свёрнут, показать | |
|
6.344, Аноним (-), 03:09, 27/11/2024 [^] [^^] [^^^] [ответить] | +/– | Это как бы уже некий тупняк, но да - роботам слава Я в паре мест плевался на ст... большой текст свёрнут, показать | |
|
7.345, arisu (ok), 08:38, 27/11/2024 [^] [^^] [^^^] [ответить] | +/– | 8230 который авторы гоцэцэ багом не считают к сожалению, соответствующий тике... большой текст свёрнут, показать | |
|
8.364, Аноним (-), 20:46, 28/11/2024 [^] [^^] [^^^] [ответить] | +/– | Лично мне довольно пофиг - я в целом вполне могу жить с GCC и мне в общем нормал... большой текст свёрнут, показать | |
|
9.365, arisu (ok), 22:00, 28/11/2024 [^] [^^] [^^^] [ответить] | +/– | ну, кто-то молча хавает что дали, а кто-то не хочет это всё отлично но соверше... большой текст свёрнут, показать | |
|
|
|
|
|
|
|
2.290, Аноним (264), 17:09, 25/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Допустим, Кернигана и Ритчи оставили в покое. А в какое плодотворное русло направлять усилия, совершенно новые языки пилить? Так эти усилия и так полны плодами.
| |
|
3.352, _ (??), 06:15, 28/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Допустим, Кернигана и Ритчи оставили в покое.
Похоже таки отпустили на пенсию :)
> А в какое плодотворное русло направлять усилия, совершенно новые языки пилить? Так эти усилия и так полны плодами.
Это да :) Но это - другое.
А для Си - для меня самая большая хотелка - сделайте в нём модули (да хоть как в Go) и уберите нах инклюды ... а может даже и весь препроц! 8-о ... хотя наверное это уже ыкстрмизьмЪ :)
| |
|
4.353, arisu (ok), 09:33, 28/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> А для Си - для меня самая большая хотелка - сделайте в
> нём модули
это слишком смелая концепция. помилуй, идее модулей всего-то каких-то пол-века. кто ж такой непровереный на практике новодел в серьёзный язык позволит добавить?!
| |
|
|
|
1.339, Я (??), 22:27, 26/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
strdup очень безопасная функция, особенно когда принимает неалоцированную строку, питонисты добились её утверждения в стандартные
| |
1.348, InuYasha (??), 20:49, 27/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Вот, реально задалбывает в плюсах: ну ввели вы новую погребень - ДАЙТЕ ЛЮДЯМ ЭТО ПРОВЕРИТЬ!
> добавление константы nullptr
#if !defined(nullptr) - хрен вам! сосите лапу.
#define nullptr (void *)0x0 // условно
так уже достало писать слой портабельности на все компиляторы с 90ых годов!..
| |
1.349, InuYasha (??), 20:55, 27/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
> В стандарт включены операторы typeof и typeof_unqual,
20 лет просил об этой хреноте и всё равно сделали что-то ж...не то что хотелось. А всего-то надо было typeof(a) == typeof(b)...
| |
|
2.359, Аноним (-), 19:14, 28/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
>> В стандарт включены операторы typeof и typeof_unqual,
> 20 лет просил об этой хреноте и всё равно сделали что-то ж...не то что хотелось. А всего-то надо было typeof(a) == typeof(b)...
Зато комми-тет может пообсуждать это годика 3 и выпустить новый стандарт!
| |
|
|