swizard ([info]swizard) wrote,
@ 2008-02-13 02:36:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Current location:Home
Current music:Godgory / Resurrection
Entry tags:c++, emacs, g++, gcc, gcc-xml, gccxml, ide, oss, project

emacs c++ ide?
Внезапно наткнулся на такую потрясающую в своей простоте вещь: GCC-XML.

Вкрадце: похаченая g++, которая после распарсивания C++ кода умеет выплевывать его AST в XML! O_O

Попробовал -- действительно, умеет. Сразу возник наивный вопрос: а какого хрена тогда в емаксе на ее основе не сделали нормальный и мощный C++ IDE, ведь это же так тривиально? Ведь мучаются же до сих пор люди с бесплатным, но убогим семантиком, либо с платным, но более суровым xrefactory.

Я порылся в инете -- ничего подобного не нашел. Давайте, мож проектик замутим, есть желающие, разбирающиеся в elisp'ах? А то мне влом одному :)



(Post a new comment)


[info]grep_z
2008-02-13 12:53 am UTC (link)
А что, дело хорошее, можно попробовать.
Пошёл гонять тулзу. Count on me, как говорится. :)

(Reply to this)(Thread)


[info]swizard
2008-02-15 11:39 pm UTC (link)
Тут выясняется, что gccxml действительно долго работает с навороченными шаблонами вроде буста :( Да вон ниже тоже подобосрали немного =)

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

(Reply to this)(Parent)


[info]float_dublin
2008-02-13 05:52 am UTC (link)
- оно же вроде давно умерло.
- интересно скока метров xml я на каждый компайл юнит он выплюнет если в юзать например бустовый shared_ptr?
- скока на это всё надо времени если я поменял некий header от которого зависят с десяток компайл юнитов?
- кто сопсно следить за зависимостями будет?
- нафиг это вообще надо? автокомплит делать чтоли?

(Reply to this)(Thread)


[info]swizard
2008-02-15 11:43 pm UTC (link)
> - интересно скока метров xml я на каждый компайл юнит он выплюнет если в юзать например бустовый shared_ptr?
- скока на это всё надо времени если я поменял некий header от которого зависят с десяток компайл юнитов?


Ну, немало =) Но ведь можно же как-то закешировать, наверно, результаты работы тулзы.

> - кто сопсно следить за зависимостями будет?

Ну это как раз не очень сложно, хотя муторно.

> - нафиг это вообще надо? автокомплит делать чтоли?

Ну, хотя бы =) Рефакторинг там, подсветку поумнее... Хотя, в принципе, конечно, и так жить можно :)

(Reply to this)(Parent)


[info]asgard.myopenid.com
2008-02-13 06:09 am UTC (link)
хм, semantic - вещь универсальная, подходящая абсолютно для любого языка. суть работы семантика, опять же, универсальна - дерево лексического разбора накладывается на bnf правила, в ходе чего принимается набор семантических решений. gcc-xml не универсален, и это огромный минус. те люди, которые используют ide, используют её для одного-двух языков, с котороми они работают, и ide затачивается под эти 1-2 языка. emacs не ide, он является прежде всего универсальной платформой для людей, которые применяют в повседневной работе множество языков, желая получить от emacs максимум возможностей по каждому. что действительно бы неплохо было сделать, так это переписать bnf таблицу для c/c++(к сожалению, автор смешал правила для языков в одну кучу, и это привело к полнейшей каше при работе с сями) + прикрутить систему наследования отдельных частей bnf правил. у меня всё руки не доходят, и не знаю когда дойдут =(

(Reply to this)(Thread)


rc_4096
2008-02-13 10:07 pm UTC (link)
Как обычно, в итоге имеем всё сразу и нихуя толком.

(Reply to this)(Parent)(Thread)


[info]asgard.myopenid.com
2008-02-14 05:25 am UTC (link)
хм, опять же, если тебе нужен framework, заточенный под конкретный язык/платформу, почему бы тебе не использовать eclipse? проблема того, что мы нихуя не имеем в том, что никто нихуя не делает. неужели так трудно потратить несколько часов в день на введение в проект того, что тебе нужно?

(Reply to this)(Parent)(Thread)


rc_4096
2008-02-14 11:43 am UTC (link)
Во-первых ты сам себе противоречишь. И чем же идеи эклипса (который у тебя с одной стороны универсальный "framework", с другой - заточен под конкретный язык/платформу; т.е. бредятина) так радикально отличаются от идей Emacs?
Второе - меня полностью устраивает xrefactory. Да, и "несколько часов в день" мне потратить лень. Потому что у меня их нет. Но главным образом потому, что оно мне не надо.

(Reply to this)(Parent)(Thread)


[info]asgard.myopenid.com
2008-02-14 03:25 pm UTC (link)
Во-первых ты сам себе противоречишь.

nope

И чем же идеи эклипса (который у тебя с одной стороны универсальный "framework", с другой - заточен под конкретный язык/платформу;

перечитай моё сообщение выше и попробуй найти, где я сказал что eclipse - универсальный? ага, не нашёл. далее, framework != универсальность, framework упорно и люто затачивается под конкретную платформу. посмотри на eclipse повнимательнее, он умеет хорошо работать только с java, поддержка c/c++ там неплоха, но всё же не ахти.

так радикально отличаются от идей Emacs?

emacs никогда не был и не будет полноценным framework'ом, также он никогда не позиционировался, как framework, не затачивался под конкретную платформу или язык. основная фигка emacs - расширяемая до бесконечности универсальность.

Второе - меня полностью устраивает xrefactory. Да, и "несколько часов в день" мне потратить лень. Потому что у меня их нет. Но главным образом потому, что оно мне не надо.

xrefactory не умеет делать семантический анализ языков, отличных от с/с++, java. это большой минус.

(Reply to this)(Parent)(Thread)


rc_4096
2008-02-15 08:41 am UTC (link)
>посмотри на eclipse повнимательнее, он умеет хорошо работать только с java, поддержка c/c++ там неплоха, но всё же не ахти.

Ты про чистый eclipse-platform искаропки? Гы. А теперь посмотри, что умеет емакс искаропки. Для C/C++ тебе надо будет ставить cedet, для java - jde. И даже чтобы удобно работать с лиспом, который вроде бы родной и должен быть искаропки, надо поставить slime. Ой?

>основная фигка emacs - расширяемая до бесконечности универсальность.

Прикинь, основная фишка Eclipse - тоже. Surprise? Прежде чем рассказывать, что Eclipse - это только IDE, рекомендую посмотреть на рисовалку тем для телефонов на Symbian от Nokia: http://www.forum.nokia.com/info/sw.nokia.com/id/bb173537-4e67-496f-9967-50917d5cfc47/S60_Theme_Studio_for_Symbian_OS.html

(Reply to this)(Parent)(Thread)


[info]asgard.myopenid.com
2008-02-15 11:23 pm UTC (link)
Ты про чистый eclipse-platform искаропки?

нет. ты несомненно можешь до бесконечности прикручивать всевозможне модули(c/c++/lisp/erlang/etc), но будут ли они настолько же хороши, насколько eclipse4java? nope.

Гы. А теперь посмотри, что умеет емакс искаропки. Для C/C++ тебе надо будет ставить cedet, для java - jde. И даже чтобы удобно работать с лиспом, который вроде бы родной и должен быть искаропки, надо поставить slime. Ой?

ещё раз - emacs *никогда* не позиционировался, как ide. почитай историю создания емакса. товарищ гослинг написал emacs для dynamic programming issue. это был единственный едитор, который решал string2string correction problem. stallman потом написал gnu emacs, основываясь на коде гослинга. и получить он хотел, не ide, а расширяемый text-editor.

Прикинь, основная фишка Eclipse - тоже.

are u sure? =)
eclipse никогда не даст тебе той глубины контроля над происходящем в редакторе, которую тебе может дать emacs.
там нету даже жалкого подобия emacs-hooks. я уже не говорю о чём-то похожем на scheduler и исполнения в рантайме произвольного кода, комбинирования различных команд редактора. eclipse - это чистой воды ide с рюшечками, множеством меню и иконок. расширяем eclipse ровно на столько, насколько тебе позволяет customization api. а много ли он тебе позволяет? забиндить action к hotkey, добавить менюшку, управлять буфером, текстом, etc. никаких modes там и в помине нету, нету там advanced control flow со всеми вытекащими. жмакнул на menu item - получил результат. хочешь множественных действий - забиндь их последовательность на button/icon/menu item. у-ны-ло.

так что eclipse основная цель eclipse не нацелена на максимальную расширяемость. это ide, цель ide - предоставить программисту удобный интерфейс и инструменты для рабоды с языком/платформой X. предоставить так, чтобы он не заморачивался. это *радикально* отличается от того, что тебе предлагает emacs.

Прежде чем рассказывать, что Eclipse - это только IDE, рекомендую посмотреть на рисовалку тем для телефонов на Symbian от Nokia: http://www.forum.nokia.com/info/sw.nokia.com/id/bb173537-4e67-496f-9967-50917d5cfc47/S60_Theme_Studio_for_Symbian_OS.html

не вижу в этом ничего удивительного. типичный для ide visual-programming-like style.

(Reply to this)(Parent)


[info]swizard
2008-02-15 11:45 pm UTC (link)
Не, универсальность -- хорошо, но я же не предлагаю изничтожить семантик :) Просто было бы неплохо плюс к тому спрограммировать еще нормальный режим для C++ разработчика.

> опять же, универсальна - дерево лексического разбора накладывается на bnf правила

Фишка в том, что с++ настолько сложен, что на регулярную грамматику его хрен наложишь -- стоит только воспользоваться препроцессором или шаблонами, как любая красивая структура летит ко всем чертям :)

(Reply to this)(Parent)(Thread)


[info]asgard.myopenid.com
2008-02-16 12:09 am UTC (link)
btw: а почему бы тупо и цинично не расширить этой фичей semantics? он довольно модульный и использует MOP, точнее его реализацию для elisp, так что управление над control flow там замечательное. можно впилить что хочешь куда хочешь.
проблема-то в том, что довольно много классных тулзов типа ecb используют semantics-api, чтобы получить то, что им нужно.

(Reply to this)(Parent)


[info]ringill
2008-02-13 02:08 pm UTC (link)
С GCCXML начался довольно интересный топик на RSDN

http://gzip.rsdn.ru/Forum/Message.aspx?mid=1264362&all=1

(Reply to this)(Thread)


[info]swizard
2008-02-15 11:46 pm UTC (link)
Ага, я именно по этому топику на эту штуковину и вышел =)

(Reply to this)(Parent)


Create an Account
Forgot your login?
Login w/ OpenID
English • Español • Deutsch • Русский…