VGrabko
@VGrabko
Golang, Php, Js

Как быстро разобратся в сишном коде?

В проекте куча ошибок "утечка памяти" и подобных трудно находимых. Люди решили всё переписать и выбор технологий оставили за мной. Так как с C я "на вы" то решил заюзать Go + биндинги библиотек. Сейчас там 3ляма+ строк с портированием на разные UI и ОС. Последний программист который мог объяснить как оно работает уволился с год назад (потом там понаписали ещё но такого что...). В итоге мне дали 1 год на всё про всё и бюджет для найма пары фрилансеров (ну или себе оставить если сам делать буду). Я пытался сделать лог запуска каждой функции но мне это не сильно помогло. Сейчас я окончательно отчаялся и решил просто отковырять от туда Gui и больше не вспоминать о кошмарах. Пошел я значит смотреть как там устроен клиент и обнаружил что заюзали кучу библиотек и зачем я так и не понял. И как оно вообще работает тоже непонятно.77e4f1c2b35245bc8b01632885e8b66c.png

UPD.

В идеале я хочу разобратся в коде но боюсь что знание C это не позволит. По этому хотя бы отковырять UI.
  • Вопрос задан
  • 423 просмотра
Решения вопроса 7
@sitev_ru
sitev.ru - мой блог ...
Вы пишите
Так как с C я "на вы"

Не не намного сложнее, чем тотже php или js.

Сейчас там 3ляма+ строк

Зачем переписывать столько? Не проще найти ошибки?

Люди решили всё переписать и выбор технологий оставили за мной

Люди решили всё переписать доверили человеку, который с С на вы...

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

Проблема в менеджменте. Не стали платить человеку за поддержку готового кода, а заплатили похоже в несколько раз больше, чтобы переписать всё с нуля... Неужто так всё плохо? )))

Если присмотреться, то пхп и си - очень похожие по синтаксису языки. Читаю в википедии: "Синтаксис PHP подобен синтаксису языка Си." А вот что пишут тамже про Javascript "который, по замыслу разработчиков, должен был стать достаточно мощным, чтобы заменить макросы, сохраняя при этом схожесть с Си"

Моё мнение, лучше изучить Си и просто доделать, исправить ошибки. Возможно двигаться в сторону С++, может быть Qt и т.д..
Ответ написан
Комментировать
Я бы посоветовал поставить как одну из задач найти как можно больше кода, который можно заменить библиотеками. Многие задачи, готового решения которых не существовало в 90-х, сейчас красиво и неоднократно решены.

Также советую перейти на C++. Так как он по большей части обратно совместим с C, вы постепенно при помощи новых библиотек будете ужимать раз в 10 код на C и на выходе получать С++. При этом код будет компилироваться практически на любом этапе.
Ответ написан
AtomKrieg
@AtomKrieg
Давай я поищу в Google за тебя
Наймите пару фрилансеров
Ответ написан
@res2001
Developer, ex-admin
Начните разбираться в коде, уже через неделю другую плотной работы станете довольно бегло понимать что пытался сказать разработчик своим кодом.
Си сам по себе очень простой язык, самая сложная вещь в нем - указатели, стоит что-нибудь почитать на эту тему, все остальное не сильно отличается от других языков.
Соберите софт с отладочной информацией и погоняйте под отладчиком, обычно отладчик выдает сообщения про утечки памяти при завершении программы, это может дать толчок для поиска мест где возможны утечки.
Так же можно воспользоваться каким-либо анализатором кода. Но там, скорее всего, будет много второстепенных ошибок и из всего их обилия придется долго и нудно выделять те что действительно важны на данном этапе.
Ответ написан
Комментировать
VGrabko
@VGrabko Автор вопроса
Golang, Php, Js
отвечу всем по поводу "качества". Там кодинг ещё с 90 годов. Анализаторы кода дают больше 500к ошибок и выходит что пофиксить старые и переписать с нуля почти одно и тоже по времени. Чего только стоят порты под разные оси при помощи if по всему коду...
Ответ написан
@iv_k
> Как быстро разобратся в сишном коде?

написать документацию, нарисовать диаграммы.
после этой проведенной работы можно переписывать на любой язык =)
но, как мне кажется, проще будет исправить ошибки.
Ответ написан
@abcd0x00
Пошел я значит смотреть как там устроен клиент и обнаружил что заюзали кучу библиотек и зачем я так и не понял.

Скорее всего, это каша-малаша из разных компонентов, которые надёрганы из разнородных проектов, оттуда и разные библиотеки. А чтобы всё работало, они включены в сам проект.

А зачем тебе вообще делать этот проект? Кто-то ведь его принимал в таком виде. Пусть он и делает, как он там думает "с нуля" с помощью двух фрилансеров.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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