@Nemo111

Как быстрее и качественнее читать код на языке Си?

Добрый день. Увлекаюсь языком Си. Знаю его не на 200%. Немного пишу и читаю программы. Хотел бы, что бы кто нибудь поделился опытом, "как он изучает программы на Си". Мне кажется, что я делаю это медленно. Иногда путаюсь и бросаю. Есть ли какие то эффективные способы чтения программ на СИ, может быть у вас какой то свой алгоритм? Или какой то хороший отладчик...
Я делаю так:
смотрю на структуру исходников, на хэдер файлы, на Makefile.
какое то время смотрю содержание всех файлов. (если проект не совсем простой здесь уже начинается апатия).
начинаю читать с точки входа в программу, прыгаю по функциям, оставляю комментарии, потому, что чем дальше захожу, тем больше забываю , что было раньше. (возможно стоит какие то графы чертить для себя?)
если совсем не понятно пытаюсь собрать программу и хожу отладчиком. (если все на макросах то не пытаюсь уже пробовать это).
Я понимаю, что возможно мне не хватает усидчивости, но все же.
В общем, есть ли какие то советы, полезные книги или курсы. Может кто то как то графы чертит что бы не путаться?
  • Вопрос задан
  • 125 просмотров
Пригласить эксперта
Ответы на вопрос 3
GavriKos
@GavriKos
Может кто то как то графы чертит что бы не путаться?

Эти графы называются UML-диаграммы. И да, они могут помочь. Есть и другие типы диаграмм, да

Но я бы не пытался никогда раскручивать программу именно от точки входа. Логичнее мне кажется исходить от какого то конкретного функционала и искать как он реализован.
Ответ написан
EgoRusMarch
@EgoRusMarch
C++ Developer
Никак. Читать и думать. Нет никакой формулы счастья. Искусство неформализуемо =) К тому же какие-то сложные абстракции понять невозможно не зная при этом предметную область.

Ты не поймёшь код, в котором есть какая-то структура данных или алгоритм, который ты не знаешь. Не поймёшь мультитрединг, если не знаешь как он устроен. Не поймешь как работает криптография, если не знаешь теории. И т.д. и т.п.
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Кто то умный пошутил любая программа на C написана что бы вызвратить значение, все остальное просто преграда к ее цели.

На самом деле разбивайте на блоки. Простые программы линейны как любая юникс утилита.

Чуть позже придумали обьектное проектирование, именно для этого.
Снижать сложность функций до терпимых 7 параметров и группировать все вместе.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы