LINUX.ORG.RU

Системы плагинов и скрипты в современных IDE

 , ,


0

2

Здравствуйте! Подскажите, пожалуйста, в какую сторону и где рыть. Интересует как внутри устроенны современные IDE. Как реализуется такая ограмная расширяемость с помощью плагинов и скриптов.

P.S. Желательно информацию на примерах C++.


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

полагаю что ответом будут сорцы этого ide

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

Я о том же. IDE на Java тормозные, на C/C++ нет ни одной полноценной, хорошей IDE. Sublime Text хорош, но на мой взгляд это не совсем IDE.

То есть подводя итоги я не знаю не одной нормальной IDE под Linux.

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

Я о том же. IDE на Java тормозные, на C/C++ нет ни одной полноценной, хорошей IDE.

У меня ide на java не тормозят, но в любом случае стоит задуматься на тему почему на c++ нет ide.

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

=) Калькулятор я уже писал. IDE я писать не собираюсь. (на данный момент точно)

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

на C/C++ нет ни одной полноценной, хорошей IDE

Qt Creator / KDevelop

Смотри в их сорцы. Особенно в сорцы первого, там вообще простенький main, который загружает so'шки-плагины.

http://code.qt.io/cgit/qt-creator/qt-creator.git/tree/src/app/main.cpp

Плагинами там реализовано всё, включая редактор и парсер C++.

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

на C/C++ нет ни одной полноценной, хорошей IDE

QtCreator - полноценная среда для Qt. Для C++ без Qt не столь хорош, но лучше других линуксовых вариантов. Исходники QtCreator открыты, на хабрахабре есть статьи на тему создания плагинов для него, хоть и не очень глубокие. Хотя плагины для QtCreator - это скорее способ разделения кода самой среды на независимые модули, чем способ расширения среды сторонними разработчиками.

Sublime Text

Использует гугловскую библиотеку Skia для рендеринга, это оригинально и разумно. Хорошо реализованный текстовый редактор, но без интеграции с инструментами разработки на уровне, который дают IDE.

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

У меня ide на java не тормозят, но в любом случае стоит задуматься на тему почему на c++ нет ide.

Потому что гномерам западло думать о совместимости своего кода с QtCreator. Проект KDE предпочитает работать над KDevelop, а не улучшать плохо подходящие для них части QtCreator вроде модуля для работы с CMake. Ну и остальные линуксовые проекты также игнорируют QtCreator, и в лучшем случае делают что-то своё. Только Canonical идёт верным путём...

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

Для QtCreator товарищь пилит(пилил?) плагин, позволяющий подгружать плагины на скриптоте (js/qml).

А зачем ты спрашиваешь? У тебя праздный интерес, или хочешь как то приложить полученные знания?

Я вот считаю, что у современной IDE не должно быть привязки к gui. Но пока что современных IDE нет в свободном доступе, есть только запчасти.

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

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

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

Разделяй и властвуй ;)

Можно взять не идеальную иде и растащить её на кусочки, главное отделить мух от котлет.

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

Нужно не

пилить идеальную IDE

А

допиливать идеальную IDE.

Вот потому-то и нет в Linux IDE, сравнимой с теми же MS Visual Studio/XCode. Потому что религия мешает взять что-нибудь одно и допилить до убер-вменяемого состояния. Но не же, будем своё с нуля писать! Geany? Да в печь его, надоел. Делаем скорее Gnome Builder. KDevelop? Блин, он какой-то неповоротливый. Давай от него отпилим C++-парсер и на его основе IDE замутим. Назовём как? Qt Creator! И т. д.

состояние современных IDE

А что для тебя современное IDE? На какой уровень ты ровняешься? У каждого своё понятие на этот счёт. Кто-то и emacs, оплетённый макросами юзает и в ус не дует.

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

Гуй должен быть съемным, а модель кода, проекта и настроек, сессий и т.д. должны быть отделенны и общаться исключительно через документированные и широкодоступные интерфейсы.

Ну это как по мне.

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

ага, только вот то все кроме гуя — это по большому счету билд система, а она и так почти во всех IDE либо «съемная», либо «опционально внешняя». а само IDE — это практически и есть гуй. но это IMHO.

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

Не скажи...

  • Модель кода (для всякого рефакторинга и референсов)
  • Модель проекта (для поиска по файлам, для предоставления инфы модели кода)
  • Модель сборки
  • Модель анализа (статического например)
  • Модель различных метапараметров, требующихся для других подсистем

Гуй нужен только как набор вьюх для всех этих вещей. Всякие cloud9IDE это как бы осознали, но запилили всё равно не очень.

Единственное что плохо укладывается в эту концепцию - это отладчик. Но возможно надо просто до осмыслить.

UPD. Кстати если посмотреть код того же qtc - там эти подсистемы достаточно четко выделенны, только интерфейсы между ними слишком жесткие и слабодокументированные. Судя по тому, что позволяет делать тот же eclipse (всякие eclim и иже с ним), то там тоже такой подход архитектурно заложен.

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

то что ты описал — это не IDE, а отдельные разрозненные модули, из которых, теоретически, можно собрать IDE.

а IDE — это как раз готовый результат.

отвечу по пунктам, на примере вижуалов

Модель кода (для всякого рефакторинга и референсов)

делается внешними модулями, такими как VAX и resharper.

Модель проекта (для поиска по файлам, для предоставления инфы модели кода)

то же самое

Модель сборки

прикручивается любая модель сборки, а встроенная вполне может использоваться как headless.

Модель анализа (статического например)

не сталкивался, но наверняка будет тот же результат — внешние модули.

Модель различных метапараметров, требующихся для других подсистем

слишком абстрактно.

Единственное что плохо укладывается в эту концепцию - это отладчик.

почему? он практически везде (кроме, видимо, тех же вижуалов) реализован в виде отдельного процесса^Wпроекта^Wнутыпонел — gdb или lldb типично.

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

Ну дык.

Об том собственно и речь. Просто интерфейсы везде свои, а нужно что то типа freedesktop'ных только для IDE (ну и желательно, не через D-Bus :)).

Тогда те, кто шарят в юзабилити, смогут спокойно отрываться на гуях, не дергая тех кто шарит как запилить бэкэнд.

Я не говорю, что сия архитектура нигде не используется, я говорю, что она используется не на всю катушку :)

Ту же студию через её com интерфейсы, можно почти полностью упаковать в другой гуй, однако учитывая используемые технологии а следственно и неважную переносимость, это решение плохо масштабируется и не пышет открытостью. А интерфейсы того же qtc - вообще можно заюзать только из qtc.

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

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

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

Ой вот не надо:) На вкус и цвет...

Как по мне, с точки зрения юзабилити студия - у.г. к 2015 версии оно немножко облагородилось, но не сильно.

Хуже только стремящийся на неё походить Code::Blocks.

Но это моё субьективное мнение :)

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

Как по мне, с точки зрения юзабилити студия - у.г. к 2015 версии оно немножко облагородилось, но не сильно.

ну у них это наплывами. я в основном 10кой пользуюсь. вижуалы 4,5,6 были офигенные, потом их не знаю сколько раз делали то лучше, то хуже. 8 и 10 мне вполне нравятся. 15 RC установлен, но я им всерьез не пользовался. то что было между оригинальным vs.net (2001?) и 2005 — я уже плохо помню, но некоторые баги забыть трудно :)

тем не менее, сомневаюсь что даже сейчас есть другие IDE, сравнимые с тогдашними версиями студии :)

waker ★★★★★
()

Как реализуется такая ограмная расширяемость с помощью плагинов и скриптов.

P.S. Желательно информацию на примерах C++.

Пишешь на c++ лисп, пишешь на лиспе ide, profit.

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

А чем интерфейс в студии хорош, когда я в нём даже ШГ побороть не могу? А темную цветовую схему он только с 13 версии может более-менее использовать.

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

Я пока пользовался в основном студией тоже так думал.

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

Важное уточнение: мои наблюдения касаются исключительно крестов.

Ну и о5 же это всё субъективно, многие считают msvc лучшей ide для плюсов. Мне там нравиться только отладчик, вот он там лучший и по моему.

И это попробуй хотя бы 12ую (она совместима с солюшнами от 10ой без их конвертации) она пободрее будет ощутимо. Что бы осталась совместимость с 10ой надо оставить 10ую установленной. Для версий выше, тоже правило вроде как действует, но я не проверял.

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

с 12-ой.

По поводу косяков юзабилити - их там море, начиная с окна настроек :)

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

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

Но как только хотя бы на эклипсе посидишь

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

И это попробуй хотя бы 12ую (она совместима с солюшнами от 10ой без их конвертации) она пободрее будет ощутимо.

наш проект в данный момент не совместим с 12й, но вроде ведутся какие-то работы по апгрейду. в этом году, вероятно, перейдем сразу на 15.

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

А чем интерфейс в студии хорош, когда я в нём даже ШГ побороть не могу?

в вижуалах ШГ чем-то отличается от остальной оси? не замечал. видимо, версия вижуалов >10.

А темную цветовую схему он только с 13 версии может более-менее использовать.

я пользовался темной темой в редакторе кода еще в 6х вижуалах, если не путаю. но мне пофигу, я светлую тему предпочитаю.

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

да хоть одной eclipse

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

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

Да. Ты поставь растровый шрифт - terminus вместо векторного и узнаешь. Можешь даже в 13 ставить.

я пользовался темной темой в редакторе кода

Окошко тоже тёмное было? Или всё же белое?

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

наш проект в данный момент не совместим с 12й, но вроде ведутся какие-то работы по апгрейду. в этом году, вероятно, перейдем сразу на 15.

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

Просто на открытии скажи, на вопрос «Апдейтнуть файлы проекта?» -«не, не надо, и так норм»

pon4ik ★★★★★
()

Системы плагинов

OSGi.

</thread>

orm-i-auga ★★★★★
()
Ответ на: комментарий от peregrine

Да. Ты поставь растровый шрифт - terminus вместо векторного и узнаешь. Можешь даже в 13 ставить.

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

Окошко тоже тёмное было? Или всё же белое?

само окошко было в теме оформления самой венды (которую даже в те времена можно было делать темной).

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

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

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

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

Ох, даже представить страшно в чём может быть проблемма...

Я бы тогда на вашем месте мигрировал бы таки на CMake сразу :)

Не я теперь сильно заинтригован, чем таким можно оказаться прибитым к конкретной версии студии (да ещё и 2010) что оттуда никак не свалить?

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

Я бы тогда на вашем месте мигрировал бы таки на CMake сразу :)

у нас сейчас смесь патченного jamplus с тонной перл-скриптов.

другая команда занимается постепенной миграцией на gradle, но это еще много лет займет (там сам gradle допиливать надо). а cmake вообще не рассматривается, т.к. он от наших потребностей слишком далек.

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

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

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

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