1.7, Голдер и Рита (?), 23:58, 03/08/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +9 +/– |
Создавать эффективные приложения с небольшим количеством кода — вот причина, по которой я обожаю язык Си.
| |
|
2.13, Аноним (-), 00:37, 04/08/2025 [^] [^^] [^^^] [ответить]
| –3 +/– |
Поддержка кода и исправление бегов в понятие "эффективные приложения" входит))?
Или как наовнякали, так пусть работает.
Ну пока за пределы буфера не выйдет.
| |
|
3.27, Аноним (27), 08:05, 04/08/2025 [^] [^^] [^^^] [ответить]
| –5 +/– |
> Поддержка кода и исправление бегов в понятие "эффективные приложения" входит))?
Нет, конечно. Туда не входит даже проверки данных/параметров на корректность, ибо эффективность сразу улетучивается.
А зачем все это нужно, если у сишочника в случае чего есть универсальная отмаза "и чо, я этот хэллоуворлд писал в одно лицо для самого себя, и в моем конкретном случае все работает111"? (Если что, это был реальный аргумент от одного местного эксперта).
| |
|
4.37, Аноним (37), 09:22, 04/08/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Нет, конечно. Туда не входит даже проверки данных/параметров на корректность, ибо эффективность сразу улетучивается
В своем последнем проекте я тоже пришел к данному решению. Проверка производится до вызова функций, реализующих алгоритм. Функции считают, что входные данные и параметры абсолютно корректны.
Если Вы посмотрите на реализации математических алгоритмов во многих математических библиотеках, там это не так. И это действительно снижает эффективность, увеличивает объем кода и дополнительно грузит программиста, отвлекая от реализации алгоритмов.
| |
|
5.39, Аноним (39), 10:13, 04/08/2025 [^] [^^] [^^^] [ответить]
| +/– |
> снижает эффективность
Если предположить, что наша функция всегда будет складывать 2+2, как по вашему должна выглядеть эффективная функция (алгоритм) сложения - всегда возвращающая 4 (return 4;)? И эту фукцию разве корректно формально называть "эффективной функцией сложения двух чисел"?
| |
|
6.41, Cyd (?), 10:54, 04/08/2025 [^] [^^] [^^^] [ответить]
| +/– |
int getRandomNumber() {
return 4; // chosen by fair dice roll
//guaranteed to be random
}
| |
|
7.45, Аноним (39), 11:21, 04/08/2025 [^] [^^] [^^^] [ответить]
| +1 +/– |
ну мы же рассуждаем про "эффективность" в контексте "избавлений от проверок на допустимые значения ВХОДНЫХ параметров", а в вашем "классическом" примере нет входных параметров.
| |
|
|
|
4.59, Аноним (59), 18:17, 04/08/2025 [^] [^^] [^^^] [ответить]
| +1 +/– |
Проверка параметров это дикие тормоза, совершенно бесполезные, не решающие никаких задач, просто изгадить код. Такое проходит только в корпоративном гвнокоде, где на производительность плевать "докупят еще серверов", но для программ пользователя такое свинство недопустимо.
| |
|
5.63, Bottle (?), 21:42, 04/08/2025 [^] [^^] [^^^] [ответить]
| +/– |
Корректность важнее производительности: в чём смысл кода, если он выполняет не то, что тебе нужно?
| |
5.87, Аноним (87), 12:33, 06/08/2025 [^] [^^] [^^^] [ответить]
| +/– |
Решение задачи "допускать к дальнейшей обработке только данные, удовлетворяющие бизнес-инварианту" не считается?
| |
|
4.66, Аноним (66), 02:45, 05/08/2025 [^] [^^] [^^^] [ответить]
| +1 +/– |
Есть функции, внутренние, где проверки излишни. Потому что у этих самых функций есть своя функциональность и предсказуемое поведение, при предсказуемых и заранее определенных вводных данных.
Проверки нужно выполнять только во внешних функциях, которые взаимодействуют с внешним миром. Обмазывать абсолютно все функции в коде проверками это моветон и признак плохого программирования.
| |
|
5.72, Аноним (-), 16:05, 05/08/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Есть функции, внутренние, где проверки излишни. Потому что у этих самых функций
> есть своя функциональность и предсказуемое поведение, при предсказуемых и заранее определенных
> вводных данных.
А потом их кто-то внутри вызывает с иными входными данными и... отстреливает себе ногу.
И заодно своим пользователям.
> Обмазывать абсолютно все функции в коде проверками это моветон и признак плохого программирования.
Обмазывать их приходится только в недоязыках. Где напр. нужно или в каждом вызове нужно проверять на null, или получать дыру.
В нормальных языках это решается в системой типов, которые не дают передать невалидные данные.
| |
|
6.90, . (?), 14:02, 06/08/2025 [^] [^^] [^^^] [ответить]
| +/– |
> А потом их кто-то внутри вызывает с иными входными данными и... отстреливает себе ногу.
для этого существуют тесты и дебагверсия.
| |
|
|
|
|
2.28, Аноним (27), 08:09, 04/08/2025 [^] [^^] [^^^] [ответить]
| –2 +/– |
> с небольшим количеством код
Лол, а как только у нас что-то больше хэллоуврлда, то внезапно появляются самописные строки, контейнеры и всякая банальшина типа split_string() (естественно, без тестов и проверок).
| |
|
3.38, Аноним (37), 09:24, 04/08/2025 [^] [^^] [^^^] [ответить]
| +7 +/– |
Вам показывают проекты из серии "Программисты шутят", а Вы относитесь к ним слишком серьезно. Реальные проекты на C выглядят иначе.
| |
|
4.43, Фнон (-), 11:14, 04/08/2025 [^] [^^] [^^^] [ответить]
| –6 +/– |
> Вам показывают проекты из серии "Программисты шутят",
Ты хотел сказть маются уетой?
> а Вы относитесь к ним слишком серьезно.
Эх(((, к вам когда-то на собеседование приходили всякие олимпиадники?
> Реальные проекты на C выглядят иначе.
Теорема г-на Эскобара говорит противоположное))
Думаете такой фигни в проде не будет?
Типа неявных манипуляций юникодом или "код с огромным числом операторов goto"?
| |
|
|
2.32, jura12 (ok), 08:18, 04/08/2025 [^] [^^] [^^^] [ответить]
| +/– |
о чем вы? ассемблер не пробовали? там ваша эффективность будет еще выше.
| |
2.74, Аноним (74), 18:56, 05/08/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Создавать эффективные приложения с небольшим количеством кода — вот причина, по которой я обожаю язык Си.
Но именно этого он и не умеет от слова совсем. Стандартная библиотека настолько никакая что там нет даже строк, не говоря даже о хэшмапах. А язык настолько никакой, что половину кода будет занимать бойлерплейт для обработки ошибок и освобождения памяти.
| |
|
|
2.33, EULA (?), 08:19, 04/08/2025 [^] [^^] [^^^] [ответить]
| +8 +/– |
Уу. 41 год забывают, забывают и никак не могут забыть. Конкурс проводится с 1984 года. Большинство комментаторов ОпенНета еще не родились, когда конкурс проводился в первый раз. И похоже, что все отметившиеся на сегодня здесь, не доживут до того момента, когда конкурс будут проводить в последний раз.
| |
|
3.42, Аноним (-), 10:57, 04/08/2025 [^] [^^] [^^^] [ответить]
| –6 +/– |
> Конкурс проводится с 1984 года.
В США чемпионат по метанию лепешек навоза проводится с 1970х (В РФ с 2010го вроде бы).
А соревнование по броскам йоркширским пудингом было еще в 1839 году, правда с перерывами.
И скорее всего переживет всех отметившихся сегодня.
Польза от сего конкурса примерно такая же как от вышеперечисленных.
Хотя... возможно метание навозом даже полезнее.
| |
|
4.46, EULA (?), 11:22, 04/08/2025 [^] [^^] [^^^] [ответить]
| +2 +/– |
Грэйдон Хор тоже участвовал в конкурсе необычных и бесполезных вещей в IT. Победил. Теперь его проект некоторые люди считают панацеей от кривых рук в программировании.
| |
|
5.47, Аноним (-), 11:30, 04/08/2025 [^] [^^] [^^^] [ответить]
| –4 +/– |
> Теперь его проект некоторые люди считают панацеей от кривых рук в программировании.
Проблема в том, что еще не родился сишник с прямыми руками.
Доказано 40+ годами написания сишных дыреней.
| |
|
6.49, EULA (?), 12:05, 04/08/2025 [^] [^^] [^^^] [ответить]
| +2 +/– |
Ну-да, ну-да.
В "безопасных" языках такие перлы учудили, что умудрились сделать дыры там, где в сишных аналогичных проектах их не было. Например CVE-2023-42456 и CVE-2025-46718. Там еще и десяток других ошибок обработки строк и переменных окружения есть, позволяющее обойти ограничения /etc/sudoers, которых нет в оригинале. Три ошибки просто нельзя исправить из-за особенностей языка.
Ой! Это же кривые руки разработчика! Но в безопасном языке - это норма и не является проблемой языка, а в "небезопасном" - это проблема языка.
| |
|
7.50, Аноним (-), 12:24, 04/08/2025 [^] [^^] [^^^] [ответить]
| –3 +/– |
А ничего что это логические ошибки? И еще не придумано способа избегать логических ошибок, кроме формальной верификации. Как только придумают, я буду первым кто будет топить за закапывания раста.
Зато в дыpяшке можно нажать 28 раз Back Space и обойти ввод пароля (opennet.ru/opennews/art.shtml?num=43536) Какой еще йазыг позволяет такой проделать!
Раз ты вспомнил sudo - вот логические CVE-2021-23240, CVE-2019-19234.
Но в комплекте идут CVE-2021-23239 с race condition, CVE-2021-3156 с buffer overflow и прочие типикАл сишные баги.
| |
|
8.53, EULA (?), 13:29, 04/08/2025 [^] [^^] [^^^] [ответить] | +3 +/– | А ничего, что при работе с памятью тоже логические ошибки Для C и C есть треб... большой текст свёрнут, показать | |
|
9.54, Аноним (-), 13:48, 04/08/2025 [^] [^^] [^^^] [ответить] | –2 +/– | Нет, это особое подмножество ошибок Которые по какой-то странной случайности ... большой текст свёрнут, показать | |
|
10.81, EULA (?), 06:36, 06/08/2025 [^] [^^] [^^^] [ответить] | +/– | Для кого характерны Для васянов, которые языки программирования изучают по коми... большой текст свёрнут, показать | |
|
9.79, Аноним (-), 02:33, 06/08/2025 [^] [^^] [^^^] [ответить] | +/– | Не требуется, компилятор Rust сам вставит проверку Если поделить на ноль, то бу... большой текст свёрнут, показать | |
|
10.80, EULA (?), 06:00, 06/08/2025 [^] [^^] [^^^] [ответить] | +/– | Тогда почему есть метод атаки на сервисы написанные на Rust через передача данны... текст свёрнут, показать | |
|
|
|
|
|
|
|
|
|
1.25, Аноним (25), 07:22, 04/08/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
Если зайти по ссылке: https://www.ioccc.org/2024/kurdyukov3/ogvm.html
Написать в текстовом поле: doomp.bin
Нажать кнопку Start, то запустится Doom прямо в браузере.
Автор также бонусом добавил нативную JIT (быстрый JIT без оптимизаций) версию с поддержкой архитектур x86, x86_64, aarch64 и e2k.
Web версия тоже содержит JIT, только на JS, JS позволяет генерить и выполнять JS код во время выполнения.
> Утилита для удаления артефактов из JPEG-изображений
Это урезанная обфусцированная копия утилиты JPEG Quant Smooth (есть в некоторых дистрибутивах линукс как jpegqs).
| |
1.26, 1 (??), 07:59, 04/08/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> На первый взгляд программа возводит в квадрат числа от 1 до 10, но на деле показывается рецепт приготовления жареного лосося. Код 15 строк и содержит манипуляции с незаметными символами Unicode.
Объясните. Никакого рецепта по ссылке не вижу. Компилировал, выводит квадраты чисел.
| |
|
2.35, Аноним (35), 08:40, 04/08/2025 [^] [^^] [^^^] [ответить] | +1 +/– | Как компилировал Качай 2024_cable2 tar bz2 и запускай gcc prog c a out Seas... большой текст свёрнут, показать | |
|
1.30, Аноним (30), 08:15, 04/08/2025 [ответить] [﹢﹢﹢] [ · · · ]
| –3 +/– |
Так Си и так запутанный! Сколько новостей было что люди не справляются с буфером.
| |
1.34, jura12 (ok), 08:19, 04/08/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
я боролся с багами в С++. оказалось что я забываю ставить звездочку или амперсанд.
| |
|
2.56, Аноним (56), 14:46, 04/08/2025 [^] [^^] [^^^] [ответить]
| +1 +/– |
Конкурсная работа с запуском Doom была написана в сентябре 2020-го, и потом опыт её создания помог в портировании Doom на телефон. Можно заметить, что у патча для ванильного Doom из конкурса и патча к Doom для FPDoom есть много общего.
| |
|
1.48, onanim (?), 11:46, 04/08/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
вот вы бухтите о проблемах с памятью в Си, а иногда это не баг, а фича!
https://serverfault.com/questions/86968/dnsmasq-how-to-increase-ttl
> You can actually bypass the 3600 second --min-cache-ttl check by exploiting an integer overflow bug in the dnsmasq C source code, without any need for recompiling. Here is a value which works:
>
> Via CLI: --min-cache-ttl=6442450943
>
> Via dnsmasq.conf: min-cache-ttl=6442450943 | |
|
2.88, Аноним (83), 12:34, 06/08/2025 [^] [^^] [^^^] [ответить]
| +/– |
Конечно не баг, а фича.
И тормозящщие приложения не Баг, а фича.
Это такой вайб.
| |
|
1.55, Аноним (16), 14:33, 04/08/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Некоторые работы странные: требуют тонны бинарей байткодов, подготовленных другими самописными утилитами. Так можно что угодно сложное сделать...
| |
1.61, Ваганыч (?), 18:58, 04/08/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
В конкурсе по написанию понятного кода на языке Си победить никто не смог…
| |
1.67, Аноним (66), 02:47, 05/08/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Вообще конечно каждый раз восхищаюсь победителями, только Си способен такие талантливые вещи проворачивать. Востину язык для хакинга.
| |
|
|
3.69, Аноним (-), 11:45, 05/08/2025 [^] [^^] [^^^] [ответить]
| +/– |
Такие вещи, которые делаются в конкурсе IOCCC, нигде не делаются.
| |
|
4.76, Аноним (74), 19:03, 05/08/2025 [^] [^^] [^^^] [ответить]
| +/– |
Ещё раз, какие вещи? Все победители абсолютно тривиальны. В нулевых были интересные работы, а сейчас одна банальщина.
| |
|
|
2.75, Аноним (74), 19:02, 05/08/2025 [^] [^^] [^^^] [ответить]
| +/– |
Талантливое здесь... что именно? Обзывать переменные одной буквой и склеивать код в одну строку можно на любом ЯП, даже питоне. Писать короткие программы тоже, причём на других ЯП это сильно проще, потому что у них в стандартной библиотеке есть хоть что-то.
| |
|
1.73, Аноним (74), 18:53, 05/08/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Кроме лосося, слабо, просто очень слабо. Берём произвольный ничем не выдающийся код, обфусцируем стандартным образом (по сути однобуквенные названия переменных), форматируем в виде изображения стандартным образом. Всё.
| |
|
2.78, Аноним (16), 21:56, 05/08/2025 [^] [^^] [^^^] [ответить]
| +/– |
> слабо, просто очень слабо
Слабо выписать опкоды виртуалки для дума?
| |
|
1.82, User097 (ok), 09:20, 06/08/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> Помощник в решении головоломки Wordle, в которой нужно угадать пятибуквенное слово за шесть попыток (код).
С помощью ИИ транслировал код на Nim: sharetext.io/04773086
| |
|