
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.9.170] |
![]() |
|
Сообщ.
#1
,
|
|
|
Написал программу, сравнивающую исходный код двух и более файлов. Таких компараторов нет в старых языках программирования вроде VB6, Builder, CVI 6, Lotus Notes и т.д.
http://www.bad-good.ru/programs.html#comparer Но за год ее существования я обратил внимание, что по интернету она не распространяется. Чистильщик мусора в винде и шифратор разлетелись вмиг - а эта программа вообще не двигается. В связи с этим вопрос: а нужна ли вообще такая программа программистам? Мне она помогает уже не в первый раз, т.к. пришлось склеивать 4 одинаковых программы в одну. |
Сообщ.
#2
,
|
|
|
Сергей85
Такая не нужна. Есть diff, есть CVS, GIT и прочие где есть сравнение кода. Вы лучше бы сделали транслятор. Перевёл я код с Java на Си. Появился патч для Java. А мне надо с транслировать этот патч на Си. При этом хотелось бы видеть разницу, что вот это вот с транслировано. А вот этот кусок новый и его надо с транслировать. И да разуется программа должна работать без привязке к языкам. Или поддерживать с 10 популярных. |
Сообщ.
#3
,
|
|
|
Они ж платные. А я про бесплатный вариант говорю. Да, например, для Lotus Notes есть TeamStudio с такой функцией - но она стоит столько, что проще свою написать.
|
Сообщ.
#5
,
|
|
|
Еще есть kdiff3 для сравнения двух файлов с общей базовой версией. Все вышеперечисленные программы (diff, CVS, git, WinMerge, kdiff3) бесплатны.
|
Сообщ.
#6
,
|
|
|
Цитата Сергей85 @ Написал программу, сравнивающую исходный код двух и более файлов. Таких компараторов нет в старых языках программирования вроде VB6, Builder, CVI 6, Lotus Notes и т.д. http://www.bad-good.ru/programs.html#comparer Но за год ее существования я обратил внимание, что по интернету она не распространяется. Чистильщик мусора в винде и шифратор разлетелись вмиг - а эта программа вообще не двигается. В связи с этим вопрос: а нужна ли вообще такая программа программистам? Мне она помогает уже не в первый раз, т.к. пришлось склеивать 4 одинаковых программы в одну. Программа "компаратор исходников" нужна. Не не просто тупого сравнения текста двух файлов и визуализации отличий (таких программ в инете "вагон и маленькая тележка" - лучшие из них - это "Beyound Compare" и "Araxis Merge"), а сравнения СЕМАНТИКИ двух исходников и визуализации семантических отличий. Т.е. "компаратор" должен как мининимум понимать семантику языков программирования, исходники на котором он сравнивает |
Сообщ.
#7
,
|
|
|
Судя по молчанию не поняли о чем речь.
Приведу конкретный пример. Вы переименовали функцию, которая у Вас в исходниках вызывается раз 150. Что покажет обычный diff viewer? Выделит красным все 150 мест где находятся вызовы. А что покажет semantic diff viewer? Покажет всего одну строчку: ![]() ![]() Функция TlRof была переименована на Lsyrt. Согласитесь, что когда нужно знать не точные места где что изменилось, а смысл изменений, чтобы понять насколько они существенны, semantic diff viewer рулит больше, чем просто diff viewer. Ведь в случае просто диф. вьювера Вам придется просмотреть все 150 изменений, проанализировать их, чтобы понять, что в исходнике всего лишь переименовали функцию |
Сообщ.
#8
,
|
|
|
Цитата Исмаил Прокопенко @ Согласитесь, что когда нужно знать не точные места где что изменилось, а смысл изменений, чтобы понять насколько они существенны, semantic diff viewer рулит больше, чем просто diff viewer. ИМХО, нужно смотреть нечто типа этого. |
Сообщ.
#9
,
|
|
|
Спасибо.
Да. Я слышал, что семантические дифф. вьюверы называются что-то типа блабла ... рефакторинг .. блабла |
Сообщ.
#10
,
|
|
|
Посоветуйте semantic diff viewer для C++
|
Сообщ.
#11
,
|
|
|
Чо молчим?
Никто семантическими диф. виферами не пользуется что ли? ![]() Добавлено Вот есть, к примеру, две версии проекта. В проекте больше 300 CPP-файлов. Делаю сравнение арахисом он показывает что есть более чем 100 тыс. отличий. Я и за всю жизнь их не разгребу без семантик. дифф. вифера |
Сообщ.
#12
,
|
|
|
Судя по молчанию таких программ не существует?
|
Сообщ.
#13
,
|
|
|
Может и существуют, но зачем они нужны?
Если рефакторинг делать, так там нужны не программы просмотра изменений, а анализаторы перекрёстных ссылок и другие подобные. |
Сообщ.
#14
,
|
|
|
Цитата amk @ Может и существуют, но зачем они нужны? Я выше четко и подробно описал "зачем" |
Сообщ.
#15
,
|
|
|
Цитата Исмаил Прокопенко @ У меня возникло такое ощущение, что это "зачем" кроме тебя просто никому никогда не было нужно. Я выше четко и подробно описал "зачем" |
Сообщ.
#16
,
|
|
|
Цитата amk @ У меня возникло такое ощущение, что это "зачем" кроме тебя просто никому никогда не было нужно. Вам (или кому-то еще) никогда не ставили такую задачу? Что есть две версии проекта. Относительно небольшого. Всего то 300 *.cpp файлов. В сумме около 500 тыс строчек кода. Арахис показывает несколько сотен тысяч измененных строк. А вам поставили задачу выяснить "что изменилось в проекте. И насколько корректны эти изменения?" Ведь одно дело просто проект "причёсывали" поэтому заменили идентификаторы на более понятные. А другое дело если внесли изменения в семантику и саму идеологию построения системы. Или, к примеру, после внесения изменения появился баг. И Вам нужно выяснить "КАКОЕ КОНКРЕТНО" изменения исходника вызывало багу. ИМХО очень распространенная задача для программистов. 90% программистов только этим и занимаются: поддержкой и "вылавливанием блох" в чужих проектах |
Сообщ.
#17
,
|
|
|
Цитата Исмаил Прокопенко @ 90% программистов имеют в распоряжении только один вариант программы. В котором и ловят блох. Им польза от такого семантического сравнения не больше, чем нулевая. Ещё 9% имеют программу, которую надо полностью набело переписать (отрефакторить). Им от такой программы сравнения польза чуть больше, чем нулевая. И только 90% от оставшегося процента могут что-то получить от такого сравнения. Вам (или кому-то еще) никогда не ставили такую задачу? |
Сообщ.
#18
,
|
|
|
Мальчики, не ссорьтесь. Касательно моей темы я уже все получил - добро пожаловать во флудилку. )))
|
Сообщ.
#19
,
|
|
|
Цитата amk @ 90% программистов имеют в распоряжении только один вариант программы. Это не так. Обычно от предшественника тебе достается репозиторий, в котором 1000 версий. И тебе ставят задачу: найти с какой версии и почему "что-то пошло не так". Естественно ты должен сравнивать версии и анализировать отличия Добавлено Цитата Сергей85 @ Касательно моей темы я уже все получил Вы нашли семантический диф. вифер? ![]() |
Сообщ.
#20
,
|
|
|
Цитата Исмаил Прокопенко @ В git и svn есть команда bisect. Мне её обычно хватает. Обычно от предшественника тебе достается репозиторий, в котором 1000 версий. И тебе ставят задачу: найти с какой версии и почему "что-то пошло не так". |