LINUX.ORG.RU
ФорумTalks

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

 


0

3

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

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

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

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

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

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

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

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

я линуксоид

дома как систему использую kali

У меня для тебя плохие новости.

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

Но с кали — это уже перебор.

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

Но это паскаль - язык почти чисто учебный

На нем есть годный софт. Тот же Double Commander или Total Commander. И я уже молчу про тонны морд для циклотронов и прочих коллайдеров.

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

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

Участвовал в таком процессе, ага.

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

Да. Хотя бы чтобы по звуку понять, когда у тебя шаровая заскрипела, чтобы вовремя притормозить, а не на столб намотаться. Или что у тебя двигло троит, ремень засвистел и т.д. Чтобы не встрять потом на ремонт в полляма или гроб.

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

Надо читать книжки И думать.

Вообще я это и имел ввиду. Потому что программиста и отличает нестандартное мышление, а народ думает только по книжкам.

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

пишут в vim

Точно, это показатель крутости. А еще если терминальный мультиплексор настроить можно на работе стать самым крутым из крутых матерых профи.

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

Я не троллю и поэтому на этом форуме (в основном в рид онли) и сижу потому что люблю линукс и свободное ПО.

Но на десктопе он не в самом лучшем виде из-за отсутствия такого же финансирования как на серверах, к сожалению.

А публика тут возрастная и любит Си, у которого отсутствуют нормальные инструменты для разработки.

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

Язык Ada имеет очень строгую систему типов

Были и другие языки со строгой системой типов. Но по настоящему это всё стало популярно с появлением ООП и соответствующей методологии программирования. Интерфейсы, принцип Лисков, контракты и вся вот эта тема. Только тогда типы стали восприниматься как нечто самоценное, а не просто указание компилятору, сколько байт выделять под переменную.

начинавших с Бейсика

Никакие Бейсики тут ни при чём. Такова была культура в целом.

no-such-file ★★★★★
()
Ответ на: комментарий от avg_linux_enjoyer

Я далеко не возрастной (щкольникъ ещё), а си и ассемблер осилил. А ты нет. Книжки почитай, что ли. Столярова, K&R, а самое главное исходники крутых проектов, типа UNIX System V, plan9, ну а ещё рекомендую изучить проекты от suckless, ещё можно почитать Кормен, алгоритмы.

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

Живо, живо. Ещё удобно использовать Kate с clangd и clang-format. Но автодополнение не Ъ :}

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

Точно, это показатель крутости

Бро, это тот самый показатель. Повзрослеешь, поймешь. Последовательность такая: становишься профи, и с некоторого момомента приходишь к использованию vim (остальное дерьмо не всралось и даром). Не наоборот.

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

Линус перешел от microemacs к nano, он то явно круче всех. Еще сидит на Fedora с GNOME, так что если сидишь на другом, то можешь сразу увольняться, программирование не для тебя.

Ну и конечно самый пик могущества наступает, когда ты работаешь из под Windows, сидя в своей маргинальной системе через PuTTY, как Dennis Ritchie - https://anders.unix.se/images/dmr_screenshot.gif

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

А с вима на емакс, постигая дзен лиспа.

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

Пишут на сишке, плюсах в vim

vim – это конструктор. По дефолту в нем есть самое базовое. Когда начинаешь в нем что-либо писать и ощущаешь что в чем чего-то не хватает, то добавляешь нужный функционал плагинами. Через некоторое время vim превращается в максимально легковесную и быструю среду разработки, которая имеет только те фичи которые тебе нужны.

Это тоже самое что и с дистрибами линукса. Кто-то ставит себе убунту/митнт и прочие дистрибы, которые по дефолту настроены и готовы к употреблению искаропки. А кто-то больше предпочитает фряху/генту/арч и постепенно добавлять нужный софт по мере необходимости. Дело вкуса, по большому счету…

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

так что если сидишь на другом

Да, сижу на openbsd с cwm.

то можешь сразу увольняться

Без сопливых

Ну и конечно самый пик могущества наступает, когда ты работаешь из под Windows

Пробовал, какое-то оно там все дерьмовое в этой ваше windows, куда ни сунься.

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

vim – это конструктор. По дефолту в нем есть самое базовое. Когда начинаешь в нем что-либо писать и ощущаешь что в чем чего-то не хватает, то добавляешь нужный функционал плагинами. Через некоторое время vim превращается в максимально легковесную и быструю среду разработки, которая имеет только те фичи которые тебе нужны.

Бредятина, у него тормозной язык, а IDE пишутся нормальными программистами на нормальных языках. Более того, все плагины там это работа с текстом, а не кодом, нету буквально даже автоимпортера классов, ничего нету. Поставь хоть все плагины, вим начнет запускаться час, но и на 10% к нормальной IDE не приблизится. Эти плагины еще и не дружат между собой, остается только самому что то дописывать, непонятно правда почему в таком случае не взять IDEA Community и не дописать к ней плагины.

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

По сравнению с OpenBSD+cwm виндовс это райское наслаждение, больше функционала, быстрее, лучше настраивается.

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

Через некоторое время vim превращается в максимально легковесную и быструю среду разработки

В хреновесную. Ну сам то пробовал сделать из вима полноценную ИДЕ или с чужих слов? Я не знаю ни одного(!!!) разработчика, который бы использовал вим в качестве основной ИДЕ, хотя работаю в продуктовой компании на примерно 20к сотрудников. И до того, в меньших конторах, никто в виме не писал. Сам пробовал несколько раз мигрировать на вим/емакс насмотревшись кул-стори на ютубе, этим невозможно без мата пользоваться.

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

как систему использую kali

Чувак, это детектор мамкиного хацкера со знаниями с ютубчика, а не линуксоида.

her_s_gory
()
Ответ на: комментарий от FishHook

Я не знаю ни одного

Это всего лишь твой круг. Сидит на болоте квакша, и квакает: ни одной лягушки не знаю, которая бы…

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

По сравнению с OpenBSD+cwm виндовс это райское наслаждение

От декларации сочетания венды и райского наслаждения тянет гомосятиной или бдсм-ом.

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

Бредятина, у него тормозной язык

У него – это у кого? Если речь идет о самом vim, то да, однопоточный, но довольно существенно ускоренный в 8-й и 9-й версии вима. Какие-нить тяжеловесные плагины да, могут тормозить. Именно по этому создали его форк – neovim, в котором есть все что нужно: многопоточность, плагины помимо vimscript еще и на lua и на многих других языках, асинхронное взаимодействие плагинов с ядром редактора и многое другое. Для своего ситуативного программинга на сишке и редактирования конфигов я юзаю vim с несколькими плагинами. И представь себе, у меня ничего не тормозит, в то же время есть все необходимые мне фичи ИДЕ-шки без какго-либо лишнего шлака.

Более того, все плагины там это работа с текстом, а не кодом

Очень зависит от ЯП. Есть ЯП к которым очень просто наваять плагины, есть к которым существенно сложнее, к примеру жаба.

поставь хоть все плагины, вим начнет запускаться час

Бред. Как минимум потому, что ты добавляешь только тот функционал который тебе нужно. А в ИДЕ большинство фич неотключаемы.

Эти плагины еще и не дружат между собой

Можно юзать специализированные сборки под конкретный ЯП. И там, в основном, все замечательно.

непонятно правда почему в таком случае не взять IDEA Community и не дописать к ней плагины

Я тебе уже написал почему: дело вкуса. Кому-то убунта, а кому-то арчик самосборный.

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

$< - символ < во всех осях обозначает ввод - исходный файл

$@ - @ читается как at - куда положить

предельно очевидно. Я бы понял если б ты докопался до $% или ещё чего-то такого

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

Именно по этому создали его форк – neovim, в котором есть все что нужно: многопоточность, плагины помимо vimscript еще и на lua и на многих других языках, асинхронное взаимодействие плагинов с ядром редактора и многое другое.

Lua тоже большой тормоз.

Для своего ситуативного программинга на сишке и редактирования конфигов я юзаю vim с несколькими плагинами. И представь себе, у меня ничего не тормозит, в то же время есть все необходимые мне фичи ИДЕ-шки без какго-либо лишнего шлака.

Ты конфиги редактируешь, какая еще IDE?

Ладно, смотри, простейшая фича IDE, я пишу на любом из этих языков: Java, Python, PHP, C. Если я добавляю функцию из заголовочного файла, или пакета который еще не был подключен в файл, то она автоматически добавляет use, import, #include. Как это реализовать в vim?

Фича номер два, когда я пишу SQL запрос в строке Java, Python, PHP, C, IDE мне дает автокомплит в SQL по таблицам и функциям, учитывая диалект БД, как такое получить в vim?

Есть ЯП к которым очень просто наваять плагины, есть к которым существенно сложнее, к примеру жаба.

К яве наоборот довольно легко, а вот для PHP крайне сложно.

Можно юзать специализированные сборки под конкретный ЯП. И там, в основном, все замечательно.

Нет конечно, не существует кода который сравняет недоредактор с IDE.

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

Ну сам то пробовал сделать из вима полноценную ИДЕ или с чужих слов?

А мне и не нужна ИДЕ. Было время – сидел и IDEA. В какой-то момент меня задолбали тормоза, понял что из ее возможностей я не использую даже 10%. Потом потихоньку начал надстраивать нужные мне фичи в vim-е и со временем в качестве основы переполз на него. И это мой личный «путь». У других, понятное дело, все может быть совсем иначе.

Cам пробовал несколько раз мигрировать на вим/емакс

Ну что поделаешь. Любимый редактор – дело интимное). Кому-то получается переползти и взвесив все за и против, человек остается в плюсе, по личным ощущениям. Кто-то набив оскомину возвращается к ИДЕ. Каждому свое…

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

Ты конфиги редактируешь, какая еще IDE?

Ты читай все что я пишу, а не только то что тебе нравится. Я писал что ситуативно програмлю, как минимум на сишке и еще на пароче языках. Естественно vim по функционалу не может на 100% заменить ИДЕ. Но некоторые наиболее вадный его фичи, вполне.

Если я добавляю функцию из заголовочного файла, или пакета который еще не был подключен в файл, то она автоматически добавляет use, import, #include. Как это реализовать в vim?

Мне лень решать твою задачу. Я бы проискал готовый плагин. Если бы не нашел, стряпал скриптик в пару строк, который бы юзал ctags и добавлял в файл нужный инлуд. Естественно, это наколеночное решение касаемо сишника. Что касается других языков – сам ищи или придумывай решение.

К яве наоборот довольно легко, а вот для PHP крайне сложно.

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

Фича номер два, когда я пишу SQL запрос в строке Java, Python, PHP, C, IDE мне дает автокомплит в SQL по таблицам и функциям, учитывая диалект БД, как такое получить в vim?

Не уверен на 100%, но в плагине по работе с БД встречал подобный функционал. Сам его не юзал, так как тесно не работаю с БД.

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

Мне лень решать твою задачу. Я бы проискал готовый плагин.

Готовых плагинов нету.

Не уверен на 100%, но в плагине по работе с БД встречал подобный функционал.

Такого тоже нету, я заранее погуглил.

Если бы не нашел, стряпал скриптик в пару строк, который бы юзал ctags и добавлял в файл нужный инлуд.

Как будешь вызывать ctags? Нужно будет вызывать со всеми флагами которые есть в CMakeLists.txt, и учитывая мой компилятор, потому что в зависимости от этого функция может лежать совсем не там где найдет ctags.

Что касается других языков – сам ищи или придумывай решение.

Это за меня сделали разработчики IDE, а это всего одна фича, представь сколько их в IDE? Я изучил IDE, и она мне сэкономила много времени, мог изучить vim, и еще бы не дописал и 10% того что есть в IDE.

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

А нафига вы спорите? Все равно никто не переспорит же :)

А никто не спорит. У каждого свой личный интимный опыт совокуплений с vim-ом и психологические травмы полученные в результате этого процесса)). Нравится ИДЕ – да пожалуйста. Только говорить что vim говно только на основании своего неудачного опыта – считаю глупостью.

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

vim неплохой редактор, но к IDE он никогда не приблизится, и это очень разные вещи, сколько плагинов не ставь. Но мне в качестве редактора нравится больше VSCode.

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

Как это бессмысленное? Нас в машинных кодах гоняли. Если неофит не будет понимать глубину кроличьей норы, что там внутри творится - он будет макакой. А Си - это «фреймфорк» над ассемблером, минимум удобств, максимум реальной жизни

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

это ужас из asm java делают, я в шоке на пустом месте где одной инструкции достаточно, обернул в 3 плюс долгий вызов call.

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

но к IDE он никогда не приблизится

Это чистая субъективщина. Кому-то, обмазавшись плагинами, он будет казаться ИДЕ и сможет полностью его заменить. А кому-то какие плагины не ставь, все будет не то.

Для меня vim – это простой и удобный инструмент, функционал которого покрывает 95% моих потребностей. Для оставшихся 5% могу и IDEA заюзать. Я по отношению к подобным инструментам «не религиозен».

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

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

«казаться» - все так, возможностей IDE в реальности у него не будет.

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

возможностей IDE в реальности у него не будет

Снова ты пытаешься думать за других. А они ему нужны?

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

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

Вообще все эти вещи в IDE ускоряют разработку, так что человек который пишет в vim будет медленнее просто. Тут с исключениями, в мелких проектах такой человек может быть так же эффективен.

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

И вот если что то понадобится, то никак это не получишь.

Ну верь себе в это. Я тебе уже сказал: тем, кому чего-то не хватает, могут написать скриптик или плагин либо модифицировать существующие. Если чего-то не хватает, одни ищут возможности, а другие оправдания. Каждому свое.

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

так что человек который пишет в vim будет медленнее просто

Ага, расскажи это ему.

iron ★★★★★
()

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

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

Они просто не осознают всю глубину этих глубин.

  1. Vim подходит для проектов которые тянутся с одно лицо.

  2. IDE подходят для проектов где больше одного разработчика.

  3. Разработка на языке С - анал.

Это база, очоба, фундамент…

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

Ну верь себе в это. Я тебе уже сказал: тем, кому чего-то не хватает, могут написать скриптик или плагин либо модифицировать существующие.

Нет, конечно можно получить все что угодно, не боги создают IDE, но на базовые фичи уйдет несколько лет работы только над плагином. Никто этим не занимается, поэтому я и сказал «ты никак это не получишь», готового ничего нет.

Многие свято верят что автоматизация существенно экономит ихнее время разработки.

Это объективно, взять тот же автоимпорт, не нужно листать экран и вспоминать путь пакета, Java это не С где инклуды обычно не имеют сильной вложенности, там что то типа org.someorg.pkg1.pkg2.module3.entity

Ага, расскажи это ему.

Не увидел там ничего интересного, не могу даже поэтому никак прокомментировать. Мне было бы интереснее увидеть как кто то пишет в vim крупный java-проект с большой цепочкой наследования и миллионами фабрик, ну то есть обычный такой проект на java, вот это было бы забавно.

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