Re: как читаете исходники c/c++
От: BlackEric http://black-eric.lj.ru
Дата: 07.07.16 11:10
Оценка:
Здравствуйте, tehKosh, Вы писали:

K>иногда нужно "пропахать" исходники какой-нибудь сторонней программы/библиотеки либо частей, те не пытаться откомпилировать/собрать, а только чтение кода

K>те сидишь на windows, а надо смотреть надо те сорцы, которые компилятся в старых версиях vs, в билдере, линуксовые сорцы
K>какими средствами пользуетесь?

Если разово, то Notepad++ или какой-нибудь Eclipse|CodeBlocks.
Если постоянно и долго, то могу и соответствующую софтину поставить.
https://github.com/BlackEric001
Re[5]: как читаете исходники c/c++
От: Skorodum Россия  
Дата: 07.07.16 11:46
Оценка:
Здравствуйте, flаt, Вы писали:

F>А вот для изучения исходников нужно чуть другое: помимо простого "Goto declaration/definition" хочется удобной навигации по типам/функциям/переменным с поддержкой истории переходов (как в браузере вперёд/назад), хочется поиска по имени файла, поиска символа в файле/проекте, поиска ссылок на символ (простой поиск текста здесь идёт лесом). Так тут даже VS+VAX не так удобны.

Все это есть в креаторе.
Re[6]: как читаете исходники c/c++
От: b0r3d0m  
Дата: 07.07.16 19:03
Оценка:
VTT>А чтобы получить хоть какую-то семантическую подсветку, прыжки и т.п. очумелые ручки начинают прикручивать к вимам/емаксам пачки плагинов разной степени тяжести и кривизны.
Подсветка синтаксиса у Vim из коробки, включается командой :syntax on.
Прыжки? Фиг знает, я и без них живу, никаких ctags и прочего не настраивал. Пользуюсь поиском по названию (выделяешь слово, нажимаешь * и прыгаешь на места, где оно встречается).

VTT>Ну вот не надо... Грузится шустро, памяти ест меньше, чем браузер.

Давайте хвалить студию за то, что она ест памяти меньше, чем браузер, который, блин, съедает аж больше гига при старте!
У меня студия ест ~250Mb на небольшом проекте, Vim на таком же кол-ве файлов ~10Mb. И работает гораздо шустрее.
Re[6]: как читаете исходники c/c++
От: b0r3d0m  
Дата: 07.07.16 19:04
Оценка:
EP>Vim легковесный, но не простой, с его-то кривой обучения
Да там команд-то, если исключительно для чтения исходников... Vimtutor'а хватит точно. Но Notepad++, конечно, быстрее освоить, это да.
Re[7]: как читаете исходники c/c++
От: flаt  
Дата: 08.07.16 07:30
Оценка:
Здравствуйте, b0r3d0m, Вы писали:

B> Но Notepad++, конечно, быстрее освоить, это да.


Вот только в изучении он ничем не поможет — ведь там только подсветка синтаксиса.
Re[8]: как читаете исходники c/c++
От: Evgeny.Panasyuk Россия  
Дата: 08.07.16 11:10
Оценка:
Здравствуйте, flаt, Вы писали:

B>> Но Notepad++, конечно, быстрее освоить, это да.

F>Вот только в изучении он ничем не поможет — ведь там только подсветка синтаксиса.

Google говорит что к нему прикручиваются например тэги.
Re[7]: как читаете исходники c/c++
От: VTT http://vtt.to
Дата: 08.07.16 16:46
Оценка:
То, что имеется в виме (и других текстовых редакторах) до полноценной подсветки синтаксиса не дотягивает.
Иначе никто бы не стал заморачиваться с хитрыми дополнительными плагинами на ctags или clang.
Чтобы полноценно работать с большой кодовой базой простой подсветки скобочек и ключевых слов явно не достаточно.
Требуется, чтобы редактор разбирался с семантикой в коде и с взаимосвязью файлов внутри проекта и снаружи.
С учетом сложности разбора с++ и полнейшего плюрализма среди разработчиков научить редактор этому крайне нетривиальная задача.
Даже несмотря на появление в последнее время перспективных инструментов (на основе того же clang / llvm) какого-то значительного прогресса я не наблюдаю.
Ну и говорить о простоте и легковесности при их использовании было бы странно.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Re[8]: как читаете исходники c/c++
От: Evgeny.Panasyuk Россия  
Дата: 08.07.16 18:58
Оценка:
Здравствуйте, VTT, Вы писали:

VTT>То, что имеется в виме (и других текстовых редакторах) до полноценной подсветки синтаксиса не дотягивает.


Супер семантическая подсветка синтаксиса для быстрого просмотра стороннего проекта не нужна.
Да и невозможна для C++ без модели проекта, как минимум из-за препроцессора.

VTT>Иначе никто бы не стал заморачиваться с хитрыми дополнительными плагинами на ctags или clang.


Заморачиваются не из-за подсветки, а из-за перехода по символам.
Если же брать редактирование проекта (а не просмотр как у ТС), то помимо символов ещё нужно автодополнение и фоновая компиляция с подсветкой ошибок.

VTT>Чтобы полноценно работать с большой кодовой базой простой подсветки скобочек и ключевых слов явно не достаточно.


С чего ты взял что нужна какая-то мощная "подсветка"?

VTT>Требуется, чтобы редактор разбирался с семантикой в коде и с взаимосвязью файлов внутри проекта и снаружи.


Для быстрой навигации по стороннему проекту вообще достаточно grep, тэги тут приятное дополнение.
А для "взаимосвязи файлов внутри проекта" нужно иметь модель проекта, которой нет по условиям задачи — где ты её брать собрался?

VTT>Даже несмотря на появление в последнее время перспективных инструментов (на основе того же clang / llvm) какого-то значительного прогресса я не наблюдаю.


Утилиты на базе Clang требуют модель проекта. Обычно достаточно того json что выдаёт CMake.

VTT>Ну и говорить о простоте и легковесности при их использовании было бы странно.


Если брать условия задачи ТС (без модели проекта) — то там будет что-то типа GTags/CTags — и это действительно легковесно. Запустил в папке с проектом простую команду, и редактор автоматом подцепляется к тэгам. Вполне легковесно и просто
Re[9]: как читаете исходники c/c++
От: VTT http://vtt.to
Дата: 08.07.16 19:45
Оценка:
Ну знаете, если вам надо просто текст почитать, так это часто можно сделать прямо в браузере, открыл где-нить на гитхабе или в редмайне файлик и готово.
А чтоб хоть немного разобраться, как оно работает, то без толковой подсветки не обойтись.
Без учета препроцессора многое читать же вообще невозможно.
И как раз "модель проекта" — это то, с чего стоит начинать знакомство.
Во всяком случае я так обычно и делаю, благо какой-нибудь проектный файл обычно имеется, хотя бы даже make / cmake.
И да, обычно я делаю из этого проект под мою IDE и уже в ней начинаю глубже разбираться.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Re[10]: как читаете исходники c/c++
От: Evgeny.Panasyuk Россия  
Дата: 08.07.16 20:23
Оценка:
Здравствуйте, VTT, Вы писали:

VTT>Ну знаете, если вам надо просто текст почитать, так это часто можно сделать прямо в браузере, открыл где-нить на гитхабе или в редмайне файлик и готово.


Не просто читать, а например ещё и перескакивать между файлами, ставить закладки, открывать несколько окон side-by-side, и т.д. и т.п.

VTT>А чтоб хоть немного разобраться, как оно работает, то без толковой подсветки не обойтись.


Для меня семантическая подсветка стоит где-то на последнем месте по приоритету. Некоторые даже вообще смотрят код без всякой подсветки.
Непониманию почему ты так акцентируешь внимание именно на семантической подсветке. Может ты имеешь в виду ещё что-то помимо подсветки?

VTT>Без учета препроцессора многое читать же вообще невозможно.

VTT>И как раз "модель проекта" — это то, с чего стоит начинать знакомство.

Я про ту модель, которая описывает флаги компиляции, include dirs и прочее. Обычно для понимания кода это вообще не нужно, а вот для точных утилит — да, обязательно.

VTT>Во всяком случае я так обычно и делаю, благо какой-нибудь проектный файл обычно имеется, хотя бы даже make / cmake.

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

Только это всё не соответствует условию задачи ТС.

те сидишь на windows, а надо смотреть надо те сорцы, которые компилятся в старых версиях vs, в билдере, линуксовые сорцы

Re[11]: как читаете исходники c/c++
От: VTT http://vtt.to
Дата: 08.07.16 21:21
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

VTT>>А чтоб хоть немного разобраться, как оно работает, то без толковой подсветки не обойтись.


EP>Для меня семантическая подсветка стоит где-то на последнем месте по приоритету. Некоторые даже вообще смотрят код без всякой подсветки.

EP>Непониманию почему ты так акцентируешь внимание именно на семантической подсветке. Может ты имеешь в виду ещё что-то помимо подсветки?

VTT>>Без учета препроцессора многое читать же вообще невозможно.

VTT>>И как раз "модель проекта" — это то, с чего стоит начинать знакомство.

EP>Я про ту модель, которая описывает флаги компиляции, include dirs и прочее. Обычно для понимания кода это вообще не нужно, а вот для точных утилит — да, обязательно.


Как это не нужно? Без инклюдов и понимания зависимостей далеко не уехать.
И без работающего препроцессора тоже не обойтись.
Причем не только для подсветки макросов или затенения неактивных блоков conditional compilation, но и для разворачивания макросов.
Кроме того, я постоянно использую подсказки с выведенным типом, цепочки вызовов, навигацию по дереву типов и т.п.
Да, это совсем не так хардкорно, как чтение в окошке терминала, и навыки нахождения ошибок в программах на листочках у меня не развиты.
Но если есть возможность использовать сomputer-aid, то отчего ей не воспользоваться?

VTT>>Во всяком случае я так обычно и делаю, благо какой-нибудь проектный файл обычно имеется, хотя бы даже make / cmake.

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

EP>Только это всё не соответствует условию задачи ТС.

EP>

EP>те сидишь на windows, а надо смотреть надо те сорцы, которые компилятся в старых версиях vs, в билдере, линуксовые сорцы


Почему же не соответствует?
С сорцами из старых студий проблем меньше всего.
С линуксовыми практически всегда есть заморочки, но тоже обычно не проблема.
Вообще в студии скоро обещают полноценную разработку под линуксы из коробки, ну а пока есть VisualGdb. Или eclipse.
Но даже без всего этого вполне можно работать.
Из билдера исходники мне только пару раз попадались, но и то без VLC.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Re[12]: как читаете исходники c/c++
От: Evgeny.Panasyuk Россия  
Дата: 08.07.16 21:57
Оценка:
Здравствуйте, VTT, Вы писали:

EP>>Я про ту модель, которая описывает флаги компиляции, include dirs и прочее. Обычно для понимания кода это вообще не нужно, а вот для точных утилит — да, обязательно.

VTT>Как это не нужно? Без инклюдов и понимания зависимостей далеко не уехать.
VTT>И без работающего препроцессора тоже не обойтись.

Вполне можно обойтись и без того и без другого.

VTT>Причем не только для подсветки макросов или затенения неактивных блоков conditional compilation, но и для разворачивания макросов.


Разворачивать макрос для понимания не нужно. Обычно достаточно названия. Если нет — то одним хоткеем переходим к его определению.
Разворачивание нужно например при отладке, о которой речи не идёт. Да и опять таки — для правильного разворачивания нужна модель проекта.

VTT>Кроме того, я постоянно использую подсказки с выведенным типом, цепочки вызовов, навигацию по дереву типов и т.п.


Это всё здорово когда есть модель проекта. В нашем случае её нет.

VTT>Да, это совсем не так хардкорно, как чтение в окошке терминала,


Если "окошко терминала" это кивок в сторону Emacs — то зря, у него есть полноценная GUI оболочка (которую я постоянно использую), с поддержкой разноразмерного шрифта в рамках одного "вида", и даже картинок. "Окошко терминала" это лишь приятный бонус.

VTT>и навыки нахождения ошибок в программах на листочках у меня не развиты.


Так этого и нет в требованиях ТС.

VTT>Но если есть возможность использовать сomputer-aid, то отчего ей не воспользоваться?


От того что нет этой возможности в заданных условиях

EP>>Только это всё не соответствует условию задачи ТС.

EP>>

EP>>те сидишь на windows, а надо смотреть надо те сорцы, которые компилятся в старых версиях vs, в билдере, линуксовые сорцы


VTT>Почему же не соответствует?

VTT>...
VTT>С линуксовыми практически всегда есть заморочки, но тоже обычно не проблема.

Да например банально нет зависимости с её заголовками — она в общем-то для изучения проекта не особо и нужна, но без неё точного разбора не будет
Re[2]: как читаете исходники c/c++
От: tehKosh  
Дата: 09.07.16 19:59
Оценка:
BE>Если постоянно и долго, то могу и соответствующую софтину поставить.
Ну да, я тоже так делаю, только ставлю не на живую машину, а на соответствующую виртуалку + активно использую снапшоты образов. Это для тех сорцов, к которым часто обращаюсь.
Re[13]: как читаете исходники c/c++
От: VTT http://vtt.to
Дата: 11.07.16 14:49
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Вполне можно обойтись и без того и без другого.


А вот мне трудно без них обойтись.

EP>Это всё здорово когда есть модель проекта. В нашем случае её нет.


С чего вы взяли, что ее нет? И даже если ее нет, то почему бы ее не сделать?

EP>Разворачивать макрос для понимания не нужно. Обычно достаточно названия. Если нет — то одним хоткеем переходим к его определению.


Что-то вы уже сами себе противоречите.
Без надлежащей модели проекта и работающего препроцессора вообще невозможно определить (в общем случае), что является макросом, а что нет.
И тем более не получится прыгать к определениям, да и найти эти определения и объявления будет крайне проблематично (при чем это не только к макросам относится).

EP>Так этого и нет в требованиях ТС.


EP>От того что нет этой возможности в заданных условиях


EP>>>Только это всё не соответствует условию задачи ТС.

EP>>>

EP>>>те сидишь на windows, а надо смотреть надо те сорцы, которые компилятся в старых версиях vs, в билдере, линуксовые сорцы


VTT>>Почему же не соответствует?

VTT>>...
VTT>>С линуксовыми практически всегда есть заморочки, но тоже обычно не проблема.

EP>Да например банально нет зависимости с её заголовками — она в общем-то для изучения проекта не особо и нужна, но без неё точного разбора не будет


"требования" ТС сводятся просто к тому, что он сидит на windows
Что помешает ему сделать студийный проектик, подтянуть зависимости, поработать с linux сорцами?
Мне вот ничего не мешает.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Re: как читаете исходники c/c++
От: Икс Россия  
Дата: 11.07.16 20:28
Оценка:
Здравствуйте, tehKosh, Вы писали:

K>иногда нужно "пропахать" исходники какой-нибудь сторонней программы/библиотеки либо частей, те не пытаться откомпилировать/собрать, а только чтение кода

K>те сидишь на windows, а надо смотреть надо те сорцы, которые компилятся в старых версиях vs, в билдере, линуксовые сорцы
K>какими средствами пользуетесь?

Никак не читаю, что я в них не видел, к тому же это вредно для глаз. Достаточно посмотреть на работу программы и с ней всё ясно.
Re[14]: как читаете исходники c/c++
От: Evgeny.Panasyuk Россия  
Дата: 11.07.16 22:08
Оценка:
Здравствуйте, VTT, Вы писали:

EP>>Это всё здорово когда есть модель проекта. В нашем случае её нет.

VTT>С чего вы взяли, что ее нет?

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

VTT>И даже если ее нет, то почему бы ее не сделать?


Потому что на это может уйти несколько часов, или даже дней, в зависимости от особенностей проекта. При том что исходная задача что-то быстро посмотреть в стороннем проекте может быть решена за 5 минут.

EP>>Разворачивать макрос для понимания не нужно. Обычно достаточно названия. Если нет — то одним хоткеем переходим к его определению.

VTT>Что-то вы уже сами себе противоречите.
VTT>Без надлежащей модели проекта и работающего препроцессора вообще невозможно определить (в общем случае), что является макросом, а что нет.

Это и не нужно. У него же будет название? А уж из названия будет понятно что происходит (причём особо неважно что перед нами — макрос или функция).

VTT>И тем более не получится прыгать к определениям, да и найти эти определения и объявления будет крайне проблематично (при чем это не только к макросам относится).


Это если делать точный поиск. В Gtags не точный, например есть false-positives, и это вполне приемлемо, главное не забывать про эту особенность. В крайнем случае есть grep и прочие ag/ack.

EP>>Да например банально нет зависимости с её заголовками — она в общем-то для изучения проекта не особо и нужна, но без неё точного разбора не будет

VTT>"требования" ТС сводятся просто к тому, что он сидит на windows
VTT>Что помешает ему сделать студийный проектик, подтянуть зависимости, поработать с linux сорцами?
VTT>Мне вот ничего не мешает.

На "сделать студийный проектик, подтянуть зависимости, поработать с linux сорцами", кроме совсем тривиальных случаев, у тебя уйдёт несколько часов минимум. Если же не делать проект, то над задачей можно начинать работать сразу же, а то и вовсе решить её за десятки минут.
Re: как читаете исходники c/c++
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 12.07.16 00:41
Оценка: 1 (1)
Здравствуйте, tehKosh, Вы писали:

K>иногда нужно "пропахать" исходники какой-нибудь сторонней программы/библиотеки либо частей, те не пытаться откомпилировать/собрать, а только чтение кода

K>те сидишь на windows, а надо смотреть надо те сорцы, которые компилятся в старых версиях vs, в билдере, линуксовые сорцы
K>какими средствами пользуетесь?

Если исходники знакомы (предыдущии версии проекта, BOOST/STL или что-то подобное), то Vim + ag и иногда CTags.

Если исходники не знакомые, то ничего удобнее и проще чем связка Doxygen + GraphViz нет и быть не может.
Отредактировано 12.07.2016 0:43 kaa.python . Предыдущая версия .
Re[2]: как читаете исходники c/c++
От: flаt  
Дата: 12.07.16 04:43
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Если исходники не знакомые, то ничего удобнее и проще чем связка Doxygen + GraphViz нет и быть не может.


Может. Но да, на безрыбье и Doxygen спасал. А ещё была такая штука как Understand C++, но она умирала на больших сорцах типа WinNT.

ЗЫ: вот тут ещё народ обсуждает: http://stackoverflow.com/questions/153074/tool-to-visualise-code-flow-c-c
Re[3]: как читаете исходники c/c++
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 12.07.16 05:31
Оценка:
Здравствуйте, flаt, Вы писали:

F>Может. Но да, на безрыбье и Doxygen спасал. А ещё была такая штука как Understand C++, но она умирала на больших сорцах типа WinNT.


Doxygen вообще ни на чем не умирает, а такие классные схемки (наследования, графы вызовов, зависимости между файлами/директориями) как GraphViz вообще на моей памяти ни один инструмент по произвольной папке с исходниками не строит
Re: как читаете исходники c/c++
От: m2l  
Дата: 13.07.16 17:51
Оценка:
Здравствуйте, tehKosh, Вы писали:

K>иногда нужно "пропахать" исходники какой-нибудь сторонней программы/библиотеки либо частей, те не пытаться откомпилировать/собрать, а только чтение кода

K>те сидишь на windows, а надо смотреть надо те сорцы, которые компилятся в старых версиях vs, в билдере, линуксовые сорцы
K>какими средствами пользуетесь?

Если по быстрому что-то глянуть, то голый vim + grep поиском по файлам, даже ctags не заморачиваюсь.
Если сложное/долгое, то VS+VA. Некоторые линуксовые сорцы через define-ы иногда на удивление просто и собираться заставить.
SourceInsight упомянутый выше когда-то смотрел, но мне не пошел.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.