Уважаемые! как вы думаете не изобрёл ли я велосипед?:
написал небольшую программку ,
которая, анализируя текстовый файл (исходник на языке С ), строит дерево, в котором потом можно сворачивать логические (операторные и не только) блоки исходника, чтобы они не мешались при дальнейшем анализе.
Я знаю, что такая функция реализована в Visual Studio 2003 .NET и называется она Outlining, и может где-то ещё ,
но в моей программке строится полноценное дерево ,
а не линеаризованная в одну колонку структура.
Предлагаю обсудить: нужно ли развитие этой идее? нужно ли выложить исходники? нужно ли написать статью?
или это проект нового велосипеда?
Здравствуйте, damiryaka, Вы писали:
D>Уважаемые! как вы думаете не изобрёл ли я велосипед?: D>написал небольшую программку , D>которая, анализируя текстовый файл (исходник на языке С ), строит дерево, в котором потом можно сворачивать логические (операторные и не только) блоки исходника, чтобы они не мешались при дальнейшем анализе. D>Я знаю, что такая функция реализована в Visual Studio 2003 .NET и называется она Outlining, и может где-то ещё , D>но в моей программке строится полноценное дерево , D>а не линеаризованная в одну колонку структура. D>Предлагаю обсудить: нужно ли развитие этой идее? нужно ли выложить исходники? нужно ли написать статью? D>или это проект нового велосипеда?
Встрой ее в редактор кода в VC6 и я тебе огромное спасиба скажу
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, damiryaka, Вы писали:
D>Предлагаю обсудить: нужно ли развитие этой идее? нужно ли выложить исходники? нужно ли написать статью? D>или это проект нового велосипеда?
Трудно обсуждать то, чего не пощупал своими руками.
В принципе любая вещь, которая реально помогает разобраться с иходниками, была бы очень полезной.
Но путь от идеи, до продукта, который реально помогает, а не мешает, очень долгий.
Для начала дай попользоваться другим.
Получишь отклик и сам поймешь, чего не хватает и стоит ли это развивать дальше.
Кстати, а с синтаксически неправильными программами ты тоже умеешь работать?
Здравствуйте, damiryaka, Вы писали:
D>Уважаемые! как вы думаете не изобрёл ли я велосипед?: D>написал небольшую программку , D>которая, анализируя текстовый файл (исходник на языке С ), строит дерево, в котором потом можно сворачивать логические (операторные и не только) блоки исходника, чтобы они не мешались при дальнейшем анализе. D>Я знаю, что такая функция реализована в Visual Studio 2003 .NET и называется она Outlining, и может где-то ещё , D>но в моей программке строится полноценное дерево , D>а не линеаризованная в одну колонку структура. D>Предлагаю обсудить: нужно ли развитие этой идее? нужно ли выложить исходники? нужно ли написать статью? D>или это проект нового велосипеда?
Это вредная идея. Исходник должен быть до 1000-1500 строк, функции до 100-150 строк, а такому исходнику никакое дерево не нужно, достаточно свертки по функциям. Дерево должно быть там где ему самое место — в workspace/project/solution.
Хотя, если это реализовать, я уверен, покупатели даже найдутся, и много, только вот сырцы, разработанные с помощью такой тулзы, без нее читать глазами будет невозможно.
Здравствуйте, aik, Вы писали:
a>Это вредная идея. Исходник должен быть до 1000-1500 строк, функции до 100-150 строк, ...
жаль, что моя идея вам не поможет. a>Хотя, если это реализовать, я уверен, покупатели даже найдутся, и много, только вот сырцы,
покупатели даже и не ищутся. a>разработанные с помощью такой тулзы, без нее a>читать глазами будет невозможно.
думаю тут прав bkat : сначала надо попользоваться. глядишь и глазки привыкнут.
Здравствуйте, bkat, Вы писали:
b>Трудно обсуждать то, чего не пощупал своими руками....
можно пощупать. но не сейчас. пока я тока хочу выяснить, не велосипед ли это.
вот приведу в порядок проект и можно будет пощупать руками.
даже щас можно пощупать , но пока там не всё очень красиво
есть даже скриншоты, кому интересно. http://www.hszk.bme.hu/~fm603/SourceInTreeView/about.shtml b>...путь от идеи, до продукта,...
идея воплощена в жизнь. продуктом не назовёшь, но кое-что материальное есть. b> Для начала дай попользоваться другим.
всё-таки вдруг велосипед. а так нет проблем! пользуйтесь. b>Кстати, а с синтаксически неправильными программами ты тоже умеешь работать?
нет. разве ещё кто-то распространяет синтаксически неправильные исходники готовых программ?
моя программа ориентируется тока на фигурные операторные скобки и
ещё на дополнительные скобки //{ и //}, которые не мешают компилятору.
в случае, если количество открывающих скобок и закрывающих скобок не совпадает,
программа выдаёт предупреждение, но продолжает работать без проблем.
просто дерево становится незаконченным или не корректным,
что не отражается на работоспособности программы.
при желании вы можете расширить функциональность как угодно.
Здравствуйте, CreatorCray, Вы писали:
c>Встрой ее в редактор кода в VC6 и я тебе огромное спасиба скажу.
вот я как-то не очень силён в таких серьёзных вещах.
поэтому предлагаю идею с матириализованным примером.
в надежде, что кто-нить более опытный подхватит и разовьёт.
Здравствуйте, damiryaka, Вы писали:
D>Уважаемые! как вы думаете не изобрёл ли я велосипед?: D>написал небольшую программку , D>которая, анализируя текстовый файл (исходник на языке С ), строит дерево, в котором потом можно сворачивать логические (операторные и не только) блоки исходника, чтобы они не мешались при дальнейшем анализе. D>Я знаю, что такая функция реализована в Visual Studio 2003 .NET и называется она Outlining, и может где-то ещё , D>но в моей программке строится полноценное дерево , D>а не линеаризованная в одну колонку структура.
А кому нужно полноценное дерево? В чем преимущество этого решения перед решением MSVC 2003 .NET?
Я тебе советую посмотреть библиотеку Scintilla, основу большинства выпущенных в последнее время редакторов кода, там есть авторазвертка-автосвертка в стиле MSVC 2003 .NET....
И еще, я ни разу не видел твоего решения в реализованном виде... мне кажется, потому что оно неюзабельно... D>Предлагаю обсудить: нужно ли развитие этой идее? нужно ли выложить исходники? нужно ли написать статью? D>или это проект нового велосипеда?
ИМХО, дело не в том, чтобы понять "велосипед или нет"... наверняка такую штуку писали десятки людей... скорее, ее нет в реализованном виде, потому что она никому не нужна...
Увы, единственное, чего не хватает в области анализаторов программ, так это хорошего бесплатного парсера C++ в дерево в памяти, всё остальное нужное уже есть...
Здравствуйте, buriy, Вы писали:
B>Увы, единственное, чего не хватает в области анализаторов программ, так это хорошего бесплатного парсера C++ в дерево в памяти, всё остальное нужное уже есть...
Я сейчас как раз над этим работаю. Ибо существующие парсеры слишком усложняют понимание грамматик и их расширение а у меня есть пара идей, как можно упростить работу, ценой некоторой потери в производительности.
Надеюсь, через несколько месяцев доведу его до мало-мальски пристойного состояния.
Здравствуйте, damiryaka, Вы писали:
D>Уважаемые! как вы думаете не изобрёл ли я велосипед?:
Прочитал всю тему — очень интересно, велосипеды делают многие и у всех получается по разному, так что карты в руки.
PS: есть предложение — прикрутить так же и пасилку включения файлов, а то иногда бывает очень нужно .. и пока раскопаешь что откуда .. времени проходит достаточно много...
Здравствуйте, damiryaka, Вы писали:
D>Уважаемые! как вы думаете не изобрёл ли я велосипед?:
.... D>Предлагаю обсудить: нужно ли развитие этой идее? нужно ли выложить исходники? нужно ли написать статью? D>или это проект нового велосипеда?
Вот, что я думаю:
Представленный тобою продукт вызывает интерес, но мне кажется, что он пока (на данном этапе) бесполезен. Т.к. лично я смотрю код блоками, т.е. перестаю обращать внимание на то, что внутри блоков, поэтому этот инструмент не сильно упростит жизнь.
Я считаю, что лучше было бы добавить поддержку комментариев, в стиле doxygen или прочих автодокументаторов. Хорошо бы было если б твоя программа к сворачиваемым блокам добавляла комментарий в их стиле. Т.е. смотришь — блок, разобрался — добавил комментарий, а он сразу добавился в код, т.е. чтобы после можно было удобно комментировать код... эдакая фича...
Когда разобрался в коде, написал комментарий, то код как бы во многих случаях — лишняя информация (занимает место и отвлекает). Сделать так чтоб был виден код и/или комментарий. Чтоб можно читать код по _только_ комментариям, т.е. у выбранного блока выключить код.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Здравствуйте, damiryaka, Вы писали: D>Уважаемые! как вы думаете не изобрёл ли я велосипед?: D>написал небольшую программку , D>которая, анализируя текстовый файл (исходник на языке С ), строит дерево, в котором потом можно сворачивать логические (операторные и не только) блоки исходника, чтобы они не мешались при дальнейшем анализе. здесь
Имхо вещь малополезная.
Вот чего бы хотелось по теме "Анализ чужих исходников"- это анализатор,
показывающий куски кода сделанные по принципу Copy/Paste (с небольшими
изменениями) для дальнейшего рефакторинга.
Меня такая штука интересует для Delphi.
Или кто знает что-то готовое ?
Здравствуйте, buriy, Вы писали:
B>Здравствуйте, damiryaka, Вы писали:
Г-> D>>но в моей программке строится полноценное дерево , Г-> D>>а не линеаризованная в одну колонку структура.
| B>А кому нужно полноценное дерево? В чем преимущество этого решения перед решением MSVC 2003 .NET?
| ну в этом и приемущество, что от плоского(даже линейного) представления переходим в структурированное.
L_-< вот же двумя строками выше написано.
B>Я тебе советую посмотреть библиотеку Scintilla, основу большинства выпущенных в последнее время редакторов кода, там есть авторазвертка-автосвертка в стиле MSVC 2003 .NET....
отлично! спасибо. буду копать. B>И еще, я ни разу не видел твоего решения в реализованном виде... мне кажется, потому что оно неюзабельно...
ну там ведь парой сообщений раньше есть ссылки. посмотри, если интересует. конечно, не так красиво, как у мастеров, но мой "проектик" не претендовал на коммерциализацию и ваще поддержку с моей стороны. просто велосипед хотел изобрести, с надеждой, что кто-то подхватит. B>ИМХО, дело не в том, чтобы понять "велосипед или нет"... наверняка такую штуку писали десятки людей... скорее, ее нет в реализованном виде, потому что она никому не нужна...
парой сообщений ниже выяснилось, что это уже есть, давно и довольно развито. подобные вещи даже продают, значит покупают, значит нужно.
рад, что мир не без добрых людей. B>Увы, единственное, чего не хватает в области анализаторов программ, так это хорошего бесплатного парсера C++ в дерево в памяти, всё остальное нужное уже есть...
слава Богу, что и это уже есть. то есть скоро будет, как обещал уважаемый Дарней. (смотри предыдущее сообщение)
_INDY_>>есть предложение — прикрутить так же и пасилку включения файлов, а то иногда бывает очень нужно .. и пока раскопаешь что откуда .. времени проходит достаточно много...
надеюсь, кто-нить подхватит. у меня не хватит ума. простите.
Здравствуйте, Plague, Вы писали:
P>Представленный тобою продукт вызывает интерес, но мне кажется, что он пока (на данном этапе) бесполезен.
я тоже так думаю. В) P>Т.к. лично я смотрю код блоками,
а вот я пока не научился. P>т.е. перестаю обращать внимание на то, что внутри блоков, поэтому этот инструмент не сильно упростит жизнь.
наверно мне упростит.
интересно, я один такой на свете?
P>Я считаю, что лучше было бы добавить поддержку комментариев, в стиле doxygen или прочих автодокументаторов.
спасибо за информацию, буду копать. P>Хорошо бы было если б твоя программа к сворачиваемым блокам добавляла комментарий в их стиле.
было бы хорошо, да вот тока врядли будет.
вот еси бы кто поумнее подхватил. P>Т.е. смотришь — блок, разобрался — добавил комментарий, а он сразу добавился в код, т.е. чтобы после можно было удобно комментировать код... эдакая фича...
да, было бы очень хорошо.
S>Имхо вещь малополезная. S>Вот чего бы хотелось по теме "Анализ чужих исходников"- это анализатор, S>показывающий куски кода сделанные по принципу Copy/Paste (с небольшими S>изменениями) для дальнейшего рефакторинга. S>Меня такая штука интересует для Delphi. S>Или кто знает что-то готовое ?
наверно хорошая идея, жаль что я пока не просёк её.
Здравствуйте, buriy, Вы писали:
B>Здравствуйте, damiryaka, Вы писали:
D>>Уважаемые! как вы думаете не изобрёл ли я велосипед?: B>нашел http://www.javadude.com/tools/parseview/ B>кстати, язык для того, чтобы твой велосипед было переизобретать проще — www.antlr.org ))
вот! другое дело. извини, за прошлое сообщение — недочитал до конца все ответы.
спасибо за ссылку. буду копать.
Огромное спасибо buriy, gear nuke, beroal и другим ответившим.
Особая благодарность и респекты и уважуха администрации сайта.
Администрация сайта>
Если вам пришла в голову гениальная идея, до которой пока не додумался никто другой, не торопитесь создавать трактат на эту тему. Проверьте – возможно, эта идея пришла в голову не только вам. Например, изложите ее коротко в соответствующем по тематике форуме – например, в "Философии программирования" на RSDN. Если идея не нова, вы узнаете об этом буквально за день-другой – у нас полно желающих крикнуть "Баян" по любому поводу.
Здравствуйте, beroal, Вы писали:
B>Здравствуйте, damiryaka, Вы писали: D>>Уважаемые! как вы думаете не изобрёл ли я велосипед?: D>>написал небольшую программку , D>>которая, анализируя текстовый файл (исходник на языке С ), строит дерево, в котором потом можно сворачивать логические (операторные и не только) блоки исходника, чтобы они не мешались при дальнейшем анализе. B>здесь
обсуждалось похожее. Называется ProgramTree. скриншоты.
А что-нить бесплатное найти бы. вот это было бы круто.
запустил Program Tree.
потом попытался открыть Си-шный исходник и тут меня ждал Exception. какое разочарование!
ну ничего! потом выяснилось, что это Version 1.0 Demo Trial.
надеюсь, что когда-нить выйдет вторая версия.
а вообще в этой программе есть всё, о чём я пока мечтал. вот прикольно!
значит всё же велосипед я изобрёл!
итак главная тема для продолжения.
кто возьмётся за бесплатный проект!
равнение на Program Tree!
Здравствуйте, damiryaka, Вы писали:
D>слава Богу, что и это уже есть. то есть скоро будет, как обещал уважаемый Дарней. (смотри предыдущее сообщение)
уточню сразу
я сейчас работаю над генератором парсеров, который и надеюсь достаточно скоро довести хотя бы до беты
что касается парсера конкретно для С++, то он будет достаточно сырой. Сам понимаешь, полноценный парсер для плюсов — это оччень непростая задача.
Здравствуйте, damiryaka, Вы писали:
D>наверно мне упростит. D>интересно, я один такой на свете?
Я тоже думаю, что представление проги в виде дерева было бы удобнее
правда, намного ценнее была бы другая фича — выделить кусок кода и получить список всех типов, от которых он зависит
этой фичи мне сейчас больше всего не хватает
Здравствуйте, swame, Вы писали:
S>Вот чего бы хотелось по теме "Анализ чужих исходников"- это анализатор, S>показывающий куски кода сделанные по принципу Copy/Paste (с небольшими S>изменениями) для дальнейшего рефакторинга. S>Меня такая штука интересует для Delphi. S>Или кто знает что-то готовое ?
AntiCutAndPaste is designed to search for text fragments that have been copied and pasted in programming language source code or plain text. It is tested on sources from large C++, Visual Basic, Delphi, Java, and C# projects.
Здравствуйте, damiryaka, Вы писали:
P>>Хорошо бы было если б твоя программа к сворачиваемым блокам добавляла комментарий в их стиле. P>>Т.е. смотришь — блок, разобрался — добавил комментарий, а он сразу добавился в код, т.е. чтобы после можно было удобно комментировать код... эдакая фича...
Уже есть в прогармме Program Tree Editor. Там можно не только смотреть код, но и редактировать. Ну и конечно же сохранять результаты. Только там не такое уж и простое дерево — используется смесь дерева и обычного аутлайнинга. Блоки {} показываются, в виде узлов. А комментарии, #if — #endif, case можно просто сжимать.
damiryaka>Предлагаю обсудить: нужно ли развитие этой идее? нужно ли выложить исходники? нужно ли написать статью?
или это проект нового велосипеда?
Не знаю как ты собираешся поступать с такими кусками кода, но если их тоже делать узлами, то ИМХО будет определённая неясность.
Что касается удобства использования, то весь чужой код я предпочитаю смотреть в виде дерева. Для набивания использую дерево, только для достаточно больших функций >50 строк. Если в файле функции маленькие, то выгод от дерева особых нет. Кроме того, дерево выглядит некрасиво, если в функции много блоков и все последовательно вложены:
{
{
{
}
}
}
а если есть хоть небольшое ветвление, то тогда дерево на 100% удобнее:
{
{
{
}
}
{
}
}
Крме того, Был здесь топик: Почему не все программисты выравнивают код?
Для программ которые показывают дерево, таких проблем в принципе нет.
Вообще идея не новая, но хорошая. До program tree editor я пользовался другой программкой, сделанной году 2000. Название точно не помню. Но там не было возможности менять код и даже скопировать выбранный блок — что жутко бесило. Обычно ведь анализ сам по себе не нужен, дальше нужно что-то делать с какой-либо часть текста.
ИМХО Добавь Сopy, Paste, coloring и у тебя уже продукт, который можно юзать.
Я лично купил Program tree editor, если сделаешь свой бесплатным может будет желающих его использовать.
P.S. Что не нравится у pte так это его пестрота. Хотя удобно когда блоки if, for разного цвета, но дерево становится похожи на новогоднюю елку — очень глаза напрягает. Лечится изменением настроек, но это большой минус.