Я уже 2 года программирую на Python. Обычно решаю олимпиадные задачи. Конечно, это не самый быстрый язык, но для того, чтобы что-то быстро написать, то это он может.
Но мне хочется постичь Си. Обычно на Си пишут для железа, и мне хочется окунуться в этот низкоуровневый мир, но в тоже время писать на нем, к примеру, каких-нибудь ботов, парсеров (это не самый лучший язык, но мне интересно), по сути, изобретать велосипед.
Каким образом это можно сделать? Какую для этого литературу можно почитать? С синтаксисом знаком.
Мне кажется, вы немного не для того хотите использовать Си. Если хотите парсеры и ботов делать, чтобы они мало жрали ресурсов, то можете попробовать Rust, благо на сегодня он достаточно неплохо развит для подобных задач.
У нас в компании есть команда, которая пишет на C. Они делают прошивки для микроконтроллеров. Книг по C особо нет. Потому что там особо нечего писать. Синтаксис умещается в тонкую книжку. Остальное - специфическая документация для железок. Так что лучше всего вам попасть стажером в компанию, которая пишет что-то для железа. IoT иди вроде того.
Можете купить какой-то простенький микроконтроллер и попробовать его освоить. Может в процессе и пропадет желание писать на C.
Если вы не готовы этому посвящать много времени и сил, учиться паять, пользоваться осциллографом и отказаться от многих современных инструментов разработки, то лучше не надо.
Угумс - с рутрекером мы конечно незнакомы потому и задаем такие глупые вопросы - но посещение рутрекера, или любого другого торрент-трекера открое для вас огромный мир легкодоступной литературы и много чего прочего, только неговорите что вы не знаете что такое торренты и торрент-трекеры, в таком случае что это такое вам обьяснит гугл, ну а если и гуглить не умеете то поход в книжный магазин решит вашу проблему с поиском литературы, хотя ненаучившимся гуглить вообще то нет смысла в дальнейшей работе на компьютере
Задача "стать гуру" в принципе неправильно поставлена. Любой мастер начинает с того, что работает подмастерье, делая несложные вещи. Но, опять же, именно делая, а не просто читая теоретические книжки. Так что можно брать те же олимпиадные задачки и пытаться их решать. Заодно осознать всю боль о необходимости самому выделять и освобождать память.
Почему бы и нет? Это будет лучше и полезнее, чем писать ботов.
За одно придет осознание того как же хорошо живется в С++ (про питон вообще молчу), но тут же узнаете, что они там все ущербные :-)
Си не только для железа, а ещё для системных вызовов.
Главные умения - ручное управление памятью и работа над ошибками.
Знать - libc и заголовочные файлы своей системы.
Нужно освоить сборку - обязательно make(синтаксис Makefile). Есть ещё сборщики - cmake, gmake и новых напридумывали вроде Ninja. Ну и конечно флаги компилятора и линкера.
Из литературы - *nix ситемы оснащены командой man - предоставляющей очень годную документацию(в интернетах есть web-копии).
В освоении лучших практик очень помогает чтение доброкачественного кода, например открыты исходники Plan 9.
С чего бы это? lex и yacc вроде простые. Взять RFC и написать свою реализацию это месяцев 6 работы по вечерам.
Другой вопрос что это долго тупо и нудно