LINUX.ORG.RU
ФорумTalks

Почему тулинг для Си такое дерьмо?

 


0

3

Программируем в колледже на Си, сейчас пишу свой минишелл. Из основных требований отсутствие утечек памяти. И все в разработке отвратительно, от самого си с его топорностью, до сборки до дебаггинга (это просто ад).

Си - отсутствие нормальной обработки ошибок, структуры с бесконечным синтаксисом со звездочками для передачи указателей. Возврат одного значения из функций или костыли с массивами. Отсутствие RAII. Постоянный выбор передать в функцию указатель на данные или вернуть новую (хз как лучше, кроме соображений о скорости при больших размерах данных).

Сборка - Makefile с его отвратительным неинтуитивным синтаксисом. Cmake нельзя.

Дебаггинг - в VSCode из коробки для проекта из больше чем 1-го .с файла ничего не работает. Да и не из коробки это работает коряво. Остается lldb и gdb, а это то еще веселье на проекте больше чем хэллоу ворлд. Valgrind тоже не самый лучший вариант. Приходится извращаться с дебагом через printf.

Смотрю на тулзы для разработки под современные SPA фреймворки и там можно найти все что хочешь для удобства.

Почему Си такое говно?

Перемещено Zhbert из development

Это не си говно, это ты бестолковый студент с завышенным ЧСВ. Давай вернемся к этому вопросу лет через 10-15.

Zhbert ★★★★★
()

Более корректно - язык Си для умеющих думать и «собирать» тулкиты под свои задачи самостоятельно , а не про все готовенькое.

fpastush
()
Последнее исправление: fpastush (всего исправлений: 1)

CMake нельзя

Кому нельзя? Правда cmake - генератор, сам лета итоге не запускает сборку.

RAII

Посмотри как реализуют, например, в Darktable.

Меняй колледж, раз учиться не хочешь.

grem ★★★★★
()

Си - отсутствие нормальной обработки ошибок, структуры с бесконечным синтаксисом со звездочками для передачи указателей. Возврат одного значения из функций или костыли с массивами … … Почему Си такое говно?

Потому что Си - это достаточно низкоуровневый язык) Ну и сочинили его достаточно давно, когда слово «программист» означало совсем не то, что сейчас. Вы бы еще на Ассемблер тут пожалились!)) Не нравится - не используйте для своих задач. Может, вам и не надо всего этого.

vinvlad ★★
()
Ответ на: комментарий от avg_linux_enjoyer

И правильно делают, идея в том, чтобы студента научить думать с самых базовых принципов. Вот когда научишься, тогда уже можно ставить красивенькие IDE, так как будешгь понимать что под капотом происходит.

fpastush
()
Ответ на: комментарий от avg_linux_enjoyer

Лучше научись думать и нормально программировать. Си прям очень хорошо выпрямляет руки. Это если тебе это по жизни нужно будет, конечно. Если нет — нашлепай ерунды, чтобы сдать, и успокойся.

И да — в сообщении моем выше нет ни капли оскорблений или личностей. Не больше, чем в «си дерьмо». Просто забавно наблюдать такие громкие высказывания от человека, который ни опыта не имеет, ни толком не знает языка. А еще забавнее, что я сам был таким же, когда учился. Тоже срывал покровы и кричал про дерьмо. И мне на этом же форуме объяснили, что проблема не в языке :)

А еще можно сделать красивый ход — позвать сюда адепта Си и действующего преподавателя — @Croco, который, скорее всего, расскажет тебе то же, что я в первом сообщении, но не факт, то более мягко :)

Zhbert ★★★★★
()

Почему тулинг для Си такое дерьмо?

Потому что ТС вместо программирования нужно идти назад в школу и искать вакансию чистильщика унитазов. СИ и его тулинг - это одно из немногих, что осталось сейчас нормального. Без абстракций если говорить конкретно: сейчас посмотреть даже на JS-овскую гномощель - жрет как не в себе, а ничего толкового при этом делать не умеет.

Was2023
()
Последнее исправление: Was2023 (всего исправлений: 1)

SPA фреймворки

Почему си такое говно?

Ясно.

Дебаггинг - в VSCode из коробки для проекта из больше чем 1-го .с файла ничего не работает. Да и не из коробки это работает коряво. Остается lldb и gdb, а это то еще веселье на проекте больше чем хэллоу ворлд

VSCode использует gdb для отладки. Откуда VSCode должен знать про твою сложную систему сборки? Настрой VS Code, в интернете куча инструкций. Например, https://dev.to/talhabalaj/setup-visual-studio-code-for-multi-file-c-projects-1jpi

Короче, хватит ныть, пили свой минишел!

realbarmaley ★★
()
Ответ на: комментарий от avg_linux_enjoyer

Тут недавно рассказывали, что все айтишники — полоумные чуваки с проблемами с головой. Остановись, подумой!

Zhbert ★★★★★
()
Ответ на: комментарий от avg_linux_enjoyer

Мне надо в айти. Я тоже хочу стейки есть как вы тут

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

Was2023
()
Ответ на: комментарий от avg_linux_enjoyer

Я думал платят за перекладывание json, а не за знание си

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

Was2023
()
Ответ на: комментарий от avg_linux_enjoyer

Я после тулинга для Си ничего не боюсь

Дело тут не в боязни, а в КПД и благоразумии. Ладно, на ЛОР-е тут уже «сердце бьется у людей в стиле „диско“» и как бы тут уже поздняк кидаться куда-то. Но ты ж молодой, подумай, что есть способы лучше заработать на стейк.

Was2023
()
Последнее исправление: Was2023 (всего исправлений: 1)

C - это было заточено изначально под программирование терминал и консоль, когда кроме черного фона и текста ничего нет в 70-80 годы прошлого века. Поддержка графики в С - очень плохо, из-за специфики языка. Тулкины, как явление, cтали развиваться на много позже - начало 21 века, стек С уже был мало актуален. Delphi, там ява всякая - это да. Уже практически все есть. А С - здесь увы, приходиться или в ручную пердолить или вообще обходитъся без них. Хотя, есть проекты с поддержкой - но там там на столько забагованное, что смотреть туда даже не хочетъся.

nager
()

Сейчас тебе тут объяснят как правильно страдать. Ты неправильно страдаешь, нужно больше боли! А другие языки для слабаков и неосиляторов.

InterVi ★★★★★
()
Ответ на: комментарий от vinvlad

Ну, это реально недалеко от ассемблера ушедший язык.)

А ещё есть С–, который ещё ближе к железу.

Dorif ★★★
()

Ну, а для чего ты думаешь в Ядро начали всирать Раст? Ради какой-то там мифической безопасности? Чушь. Даже деды из Ядра понимают, что молодежь не хочет использовать pdp-говно и если ничего не делать, его просто некому будет писать лет через десять. Вот и пытаются завлечь модным-молодежным.

А почему оно такое ты можешь понять по ответам в этом треде: ментальность в стиле «Си идеальный, а ты тупой» оставляет Си в прошлом. Си научит тебя думать! (наверное о самовыпиле)

MoldAndLimeHoney
()
Последнее исправление: MoldAndLimeHoney (всего исправлений: 1)
Ответ на: комментарий от Zhbert

Достойный троллинг, мне даже жаль тс. Его тут просто раскатают в лепёшку.

InterVi ★★★★★
()
Ответ на: комментарий от vinvlad

Хм, я как раз на ассемблере arm thumb2 вчера программную написал…

realbarmaley ★★
()
Ответ на: комментарий от avg_linux_enjoyer

Ни за то, и ни за другое. Платят за пользу нанимателю. И тут она может быть очень разной - в зависимости от нанимателя и специалиста. А ещё специалист бывает многопрофильный.

К.О.

Dorif ★★★
()
Ответ на: комментарий от MoldAndLimeHoney

Единственное адекватное мнение в этом треде. Хотя безопасность всё же зря засрал — она тоже важна.

InterVi ★★★★★
()
Ответ на: комментарий от avg_linux_enjoyer

плохо думал!

Мой папа не любит виртуальных машин
Где-то со времени Java 1
Его как-то пытались соблазнить на .NET,
Но он смотрел на .NET, как будто его нет
C++ или C# — это юнцам по вкусу
За решёткой есть жизнь, и на кладбище есть плюсы,
Но мой папа не любит эти модные приколы,
Только чистый Си, по заветам старой школы

Папа может в Си, папа-папа может в Си
Пока это так — всё в порядке на Руси
Папа может в Си, папа-папа может в Си
.NET или Java? Нетушки, мерси
Папа может в Си, папа-папа может в Си
Python или Ruby? Господи, спаси!
Папа может в Си, папа-папа может в Си
Пока это так — всё в порядке на Руси
 
Только хардкор! Настоящее мясо!
Никакого ООП, никаких тебе классов!
БДСМ пати с утра и до утра
Мой папа чётко знает, что такое буфера
2^161 способов отстрелить себе конечности
Отладка даёт представление о вечности
Кто не умер сразу — тот уже неубиваем
20 лет стаж — мой папа стал джедаем

©

InterVi ★★★★★
()
Последнее исправление: InterVi (всего исправлений: 1)
Ответ на: комментарий от MoldAndLimeHoney

Ну, а для чего ты думаешь в Ядро начали всирать Раст? Ради какой-то там мифической безопасности? Чушь. Даже деды из Ядра понимают, что молодежь не хочет использовать pdp-говно и если ничего не делать, его просто некому будет писать лет через десять. Вот и пытаются завлечь модным-молодежным. А почему оно такое ты можешь понять по ответам в этом треде: ментальность в стиле «Си идеальный, а ты тупой» оставляет Си в прошлом. Си научит тебя думать! (наверное о самовыпиле)

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

Was2023
()
Последнее исправление: Was2023 (всего исправлений: 2)

Это как М. Задорнов: Если обезьяна выживет у нас на севере, то человеком станет. Так же и тут. Если ты на С научишься программы писать, то программистом станешь. Это хороший тренажёр для мозгов.

xwicked ★★☆
()
Последнее исправление: xwicked (всего исправлений: 1)
Ответ на: комментарий от avg_linux_enjoyer

запрещено линтером юзать goto

Кстати, правильным кодописателям вопрос: Почему использование goto является плохим тоном кодинга, в то время как assembler юзает его и в хвост и в гриву? JMP=GOTO.

xwicked ★★☆
()
Ответ на: комментарий от avg_linux_enjoyer

Ты сам читаешь, что пишешь? То cmake нельзя использовать (кем?), то линтер запрещает что-то (это вообще бред).

grem ★★★★★
()
Ответ на: комментарий от xwicked

Почему использование goto является плохим тоном кодинга

Не является, просто пихать его не нужно куда попало.

grem ★★★★★
()
Ответ на: комментарий от xwicked

Почему использование goto является плохим тоном кодинга, в то время как assembler юзает его и в хвост и в гриву?

С goto можно написать так, что хрен поймешь куда что прыгает. А можно при помощи его сократить код и улучшить его читаемость. Это инструмент, опасный как лезвие бритвы (как многое другое в Си), который в умелых руках может творить чудеса. А может и превратить жизнь программера в кошмар. Как и весь Си)

iron ★★★★★
()

Плюс минус все хорошо написал, не согласится с этим может либо большой фанат С, либо тот кто на нем не писал, но очень вдохновился его авторитетом.

Отсутствие RAII

См _cleanup_free_ https://github.com/systemd/systemd/blob/main/src/libsystemd/sd-login/sd-login...

Постоянный выбор передать в функцию указатель на данные или вернуть новую

Указатель лучше если структура большая.

Сборка - Makefile с его отвратительным неинтуитивным синтаксисом. Cmake нельзя.

Ну это уже не проблемы С.

Дебаггинг - в VSCode

Не стоит писать код в редакторе, есть CLion.

Почему Си такое говно?

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

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 2)
Ответ на: комментарий от MoldAndLimeHoney

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

MOPKOBKA ★★★★★
()

Текст карлика духа, а не настоящего инженера-разработчика. Иди формочки клепай на typescript

cobold ★★★★★
()
Ответ на: комментарий от MOPKOBKA

ну почему, мелкософтовые макаки чет переписывают у себя в ядре на расте. По крайней мере они об этом рассказывают (см. анекдот про «…а вы тоже рассказывайте»)

cobold ★★★★★
()
Ответ на: комментарий от iron

С goto можно написать так, что хрен поймешь куда что прыгает

Плюсую. В своё время любители были циклы и подпрограммы через goto реализовывать.

tiinn ★★★★★
()

Почему Си такое говно?

потому что валгринд не хочет быть отладчиком
мейкфайл не хочет быть интуитивно понятным, как сиська
а сишечка не хочет быть SPA фреймворком

очевидно же.

беги, минишелл-девелопер, беги

olelookoe ★★★
()

Всё так. Для нормального дебага с мультиоконностью можешь хоть BorlandC 3.1 взять, но остальные проблемы оно не решает совсем.

tiinn ★★★★★
()

Не люблю С++ с института. Как сказал мой согруппник, «Здесь ты с каждой кнопочкой потрахаешься, зато производительность». Ушёл сперва на Delphi, потом на C# - там не надо трахаться, там можно просто писать.

tiinn ★★★★★
()
Последнее исправление: tiinn (всего исправлений: 1)
Ответ на: комментарий от Zhbert

Это не си говно, это ты бестолковый студент с завышенным ЧСВ. Давай вернемся к этому вопросу лет через 10-15.

Да нет, он прав. Си и правда говно.

Си прям очень хорошо выпрямляет руки.

АХАХАХАХАХАХАХАХА!

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

А что?

Та ниче. Просто почитаешь тебя, так все говно. Вот стало интересно, есть ли хоть что-то не говно)

iron ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)