LINUX.ORG.RU

Ответ на: комментарий от m0rph

Ну например исходники QtCreator и KDevelop.

Чтение исходников - это крайний вариант. Хотелось бы почитать книгу или несколько статей.

bbk123 ★★★★★
() автор топика

По архитектуре не скажу, но из полезного можешь погуглить: подсветку синтаксиса, AST, Code Refactoring. А дальше напиши, чего ты от IDE хочешь и прикидывай архитектуру.

Rubbiroid
()
Ответ на: комментарий от bbk123

Хотелось бы почитать книгу или несколько статей.

Вряд ли ты где-нибудь найдешь фундаментальные труды по разработке IDE. Задача весьма расплывчатая и распадается на написание инструментов анализа кода, кучи гуишных интерфейсов и разных вспомогательных интсрументов типа интеграции с VCS, парсера выдачи компилятора и т.п.

annulen ★★★★★
()
Ответ на: комментарий от bbk123

Чтение исходников - это крайний вариант. Хотелось бы почитать книгу или несколько статей.

Бесперспективное занятие - искать книгу по этой теме. Даже не знаю, кому в голову придет писать книгу по проектированию IDE. Тема эта в целом довольно тривиальная и кроме кода туда нечего будет заложить. Возьми уж тогда любой user manual по современной IDE - будет тебе ориентир.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Даже не знаю, кому в голову придет писать книгу по проектированию IDE

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

buddhist ★★★★★
()

ИМХО, это научная проблема, написание ИДЕ.

drSchur ★★★
()

В общем-то в самой по себе IDE особо больших сложностей нет, на мой взгляд основная проблема зарыта в анализе кода и построении AST для создания таких вещей, как: навигация по коду, автоматическое сворачивания неактивных блоков кода, различных инструментов рефакторинга и т.п. Правда в случае с C/C++ в этом может сильно помочь clang.

m0rph ★★★★★
()
Последнее исправление: m0rph (всего исправлений: 1)
Ответ на: комментарий от buddhist

Я интересовался. В целом интерфейсами и ИДЕ в частности.

drSchur ★★★
()

Раскин и его cat

Энгельбарт и его мыш

Алан Кей и проект vri? 20KLOC хватит на всё.

вот это вот IDE

а про что ты спрашиваеш - «это у тебя что то с животом»

qulinxao ★★☆
()

Фундаментальных трудов, как уже сказали, нет. И на самом деле, до сих пор все IDE отстойные, и законченного материала для книги не хватило бы. Но на 2013 год планка поднята достаточно высоко — хотя с другой стороны, отдельному программисту можно сосредоточиться лишь на некоторых пунктах из списка требований:

  • Знакомство с многопоточностью и синхронизацией между потоками. Причём, если язык не имеет Qt-шных сигналов/слотов либо анонимных функций, то с быстрой IDE можно попрощаться: никто не будет делать асинхронный код там, где это сложно.
  • Знакомство с фишками в построении GUI, для чего я советую почитать Алана Купера, «психбольница в руках пациентов»;
  • Знакомство с теорией компиляции.
  • Современные IDE также дают интерфейс к git и другим VCS, причём он не может просто давать список команд: он должен обрабатывать и визуализировать данные от VCS. А за пример советую взять UI в QtCreator либо программу SourceTree (увы, она лишь под оффтоп и мак)
  • Можно взглянуть и на инструменты типа анализаторов кода (lint или clang analyzer), valgrind, трейсеров OpenGL (например apitrace), форматтеров кода (astyle), ибо к ним порой тоже добавляют визуализатор.
  • Подсистема менеджера проектов тоже заслуживает внимания. Давно хочу описать принципы работы этой подсистемы в QtCreator, но пока нет времени для сбора хорошего материала. Но если вкратце, все системы сборки явно перечисляют файлы, являющиеся частью проекта — и нужно вносить исправления при любых операциях над деревом файлов и папок. Также IDE собирает и передаёт информацию парсеру C++ или какого-либо другого языка, в том числе пути поиска заголовков/фреймворков/модулей, флаги компиляции или какие-то ещё настройки, а в случае C++ ещё и макросы.

Под теорией компиляции обычно подразумевают написание своего компилятора для своего же языка — этим почти все студенты занимаются на соответствующем курсе в вузе. Так вот в случе IDE можно игнорировать всё, что касается генерации кода, и не идти дальше семантических проверок — вместо этого посмотреть, как можно реализовать различные фишки IDE на основе парсера, построенного AST и библиотеки семантических проверок.

Вот ключевые слова для фишек IDE, связанных с анализом языка: outline, code completion, fix it или quick fix, caret diagnostic, semantic highlighting, refactoring.

На счёт рефакторинга — со временем IDE берут на себя всё больше задач по рефакторингу и делают его всё точнее, так что можно почитать книги на эту тему. Но книги со словом «рефакторинг» в названии запросто могут оказаться чисто теоретическими рассуждениями, так что посоветую книгу Майкла К. Физерса «Эффективная работа с унаследованным кодом» — ибо к рефакторингу прибегают программисты, которым достался отстойный проект и несправедливые сроки деадлайна.

API clang-c — отличный источник вдохновения на тему, как должен выглядеть движок анализа кода, чтобы разработчику IDE не пришлось залезать во внутренности этого движка. Для языков, отличных от C/C++/ObjectiveC, такой благодати нет, но есть свои средства в GHC, C Python и других интерпретаторах/компиляторах — хотя бы AST они построить смогут и синтаксические ошибки найдут.

Можно взглянуть на блоги разработчиков KDevelop, ссылки на которые можно найти на Planet KDE. Там находится очень разрозненная информация и демонстрация наглядных фич.

quiet_readonly ★★★★
()
Ответ на: комментарий от Jills

и лучше браузерную ide

Накой чёрт оно нужно?

Norgat ★★★★★
()
Ответ на: комментарий от tailgunner

да, не надо изучать IDE по недоделкам вроде QtCreator или KDevelop.

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

Кстати, QtCreator с версии 2.7 умеет то, на что неспособен эклипс — собрать под андроид с битым серийником.

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

quiet_readonly ★★★★
()
Последнее исправление: quiet_readonly (всего исправлений: 1)
Ответ на: комментарий от quiet_readonly

Не надо давать дурных советов.

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

Кстати, QtCreator с версии 2.7 умеет то, на что неспособен эклипс — собрать под андроид с битым серийником.

Я тебе страшную вещь скажу - Eclipse вообще ничего собирать не умеет.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Я тебе страшную вещь скажу - Eclipse вообще ничего собирать не умеет

И с adb нормально работать тоже не умеет. Вообще в вопросах UI у неё серьёзные проблемы.

quiet_readonly ★★★★
()
Ответ на: комментарий от quiet_readonly

Eclipse вообще ничего собирать не умеет

И с adb нормально работать тоже не умеет

В рамках этого топика твоя главная проблема - то, что ты принимаешь плагин за IDE.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

В рамках этого топика твоя главная проблема - то, что ты принимаешь плагин за IDE.

А что, если кроме плагинов в IDE ничего нет? В Eclipse и в QtCreator именно так.

quiet_readonly ★★★★
()
Ответ на: комментарий от quiet_readonly

А что, если кроме плагинов в IDE ничего нет?

IDE - это платформа для взаимодействия плагинов. И да, у этой платформы есть архитектура.

В Eclipse и в QtCreator именно так.

Еще раз - внутренняя архитектура плагина мало зависит от IDE, в которой он выполняется. И не знаю про QtCreator, но у Eclipse есть небольшое ядро (OSGi) и набор core-плагинов, без которых нет Eclipse Platform.

tailgunner ★★★★★
()
Ответ на: комментарий от bbk123

Зачем тебе это? Не проще ли написать плагин-модуль к любой понравившейся IDE?

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от tailgunner

причем сам по себе eclipse platform это тупая реализация кучи паттернов - половина их коих описанна в книге про паттерны а другая в википедии.

Deleted
()
Ответ на: комментарий от I-Love-Microsoft

внимание вопрос: как в IDE работает выделение - так чтобы меня вкладку с исходниками мы получаем смену выделения в дереве проекта\исходный файлов\навигаторе по структуре текущего класса (соотв. текущей строке) и параллельно обновление в списке TODO текущего файла? При том что все пречисленно - как правило из плагинов 8)

Deleted
()
Ответ на: комментарий от Deleted

eclipse platform это тупая реализация кучи паттернов - половина их коих описанна в книге про паттерны а другая в википедии.

И какой вывод ты делаешь из этого?

tailgunner ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

версия - IDE - это не мешок плагинов, это еще некоторая архитектура. Как тебе такая идея?

Deleted
()
Ответ на: комментарий от Deleted

ну я не спорю, просто зачем интересоваться строением ядра IDE, когда есть четкий API для плагинов?

лучше заняться чем-то полезным, например писать плагин к Qt Creator, MonoDevelop или любой другой IDE

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

зачем интересоваться строением ядра IDE, когда есть четкий API для плагинов?

Не зная архитектуры ядра, нормального плагина не получится (ну разве что вывод диалога «действительно ли вы хотите закрыть IDE» - есть такой для нетбинса)

Хуже того, если делать на имеющихся платформах свой софт, то со временем посетит мысль «ятъ, какже тут все через жадний проход то». А эта мысль должна посещеать на этапе анализа платформы, а не когда уже все под нее года два как написано 8)

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

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

короче, я за плагин с осознанием архитектуры ядра :)

плагин = что-то полезное и итересное :)

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от Jills

Щ_Щ Желаю тебе кодить в браузере до скончания веков, твоим детям и твоим внукам и вкукам, твоих внуков, и внуков внуков и внуков. «И чтобы ноги мыли в бутылке» (с) народное проклятие

ihappy
()
Ответ на: комментарий от tailgunner

Но ты ведь действительно не разбираешься в том, как QtCreator устроен.

anonymous
()
Ответ на: комментарий от anonymous

У меня ничего не капает =) Но за браузерную ИДЕ, надо и не так проклинать.

ihappy
()
Ответ на: 10 DVD от anonymous

Огромное спасибо.

tmplsr
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.