all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Óscar Fuentes" <ofv@wanadoo.es>
To: help-gnu-emacs@gnu.org
Subject: Re: A guide on setting up C/C++ development environment for Emacs
Date: Thu, 28 Aug 2014 23:22:22 +0200	[thread overview]
Message-ID: <87ppfk71ip.fsf@wanadoo.es> (raw)
In-Reply-To: 47129814-f079-4441-be39-9387912bca3a@googlegroups.com

solidius4747@gmail.com writes:

>> That's a problem of clang-ctags being slow, not Clang being *so* slow,
>> because Clang can compile its own sources on a fraction of time of those
>> 98 minutes (15 minutes here on a 6 year old 4core machine, for an
>> optimized build.)
>
> Are you sure that it took you 15 minutes to build?

Absolutely. I build Clang+LLVM ToT every month or two.

> I'm pretty sure
> when I built LLVM followed the official guide:
> http://clang.llvm.org/get_started.html, it took me hours with a core
> i5 machine.

I guess that the machine have no enough memory and resorted to swapping.
Did you use GCC or Clang on that build? GCC requires much more memory.
Some source files of Clang are complex enough to require a good chunk of
memory even when compiled with Clang itself. OTOH, linking can be
memory-intensive, specially a debug build.

> I already updated the guide for people to try Clang solution first, as
> it seems to be more accepted for editor without a built-in language
> parser. I also emphasized in CEDET section that it might be slow for
> large source tree like Linux kernel or might not fully up to date to
> support all the C++ features. But if you see my demo screenshot, you
> see that CEDET works fine for code completion with BOOST. It responded
> instantly and gave candidates with full information (types, parameters
> and parameter types). I also explicitly wrote the section as: "Source
> code completion with C++", that means you only use CEDET for CODE
> COMPLETION - and no other fancy features in other IDE. As I demoed, it
> did A GOOD JOB for reasonably sized source tree, like BOOST.

My experience with CEDET C++ smart completion (I try it once a year) is
that it often works on the most simple cases. It is quite good for C++
when used as "C with classes". However, it fails with more elaborate
cases. The fact that it works for some example that uses Boost proves
nothing, as Boost is not uniformly complex. Your screenshot about
boost::asio is not very demanding. Try something involving templates
(apart from the simple ones like std::vector) and you will see failures.
CEDET's C++ parser falls short of understanding namespace resolution and
other minefields of the C++ language. Let's not discuss modern features
like lambdas and variadic templates.

For doing correct smart completion for C++, parsing is not enough.
Semantic analysis is necessary. CEDET's parser does nothing of the sort.

> Here are
> the two demo screenshots, I post it here again:
>
> http://tuhdo.github.io/static/c-ide/semantic-boost-demo.gif
>
> http://tuhdo.github.io/static/auto_complete.gif
>
> CEDET also provides a nice tool that is Semantic Symref:
>
> http://tuhdo.github.io/static/c-ide/semantic-symref.gif
>
> CEDET works best when you start a project from scratch. It will parse
> your source tree as you grow it, so there should be almost no waiting
> for parsing.
>
> I use it in my daily job, and it works pretty nice.

That's good news indeed. However, please keep in mind that there are
huge differences on how people/teams/projects use C++. Something that
works for you may be insufficient for others, and in all cases C++ is
being used. Doing the job with a good compiler is the definitive
solution.

> The current
> support development with C/C++ are much nicer with community packages
> contributed. When I first used Emacs, not Clang solution existed yet.
> CEDET was the only usable solution.
>
> Why CEDET is slow?

CEDET is fast enough for me. The problem is that it gives the wrong
answer too often.

> Because you don't try to do computational expensive
> tasks in Emacs. That's why you delegate heavy works to external
> processes. But Emacs could have more possibilities if it can generate
> native code, or at least has FFI.

FFI is in the "most wanted" feature list of the Emacs maintainers.
However, I don't see CEDET's team throwing away their Elisp parser and
start coding one on C/C++. They could use Clang's right away, or GCC's
once the modularization is completed, but they insist on their own's.

CEDET's problem with C++ is the extraordinary complexity of the
language. That's something that the handful of hackers working on CEDET,
no matter how talented they are, can't address on a reasonable
timeframe.




  reply	other threads:[~2014-08-28 21:22 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-27  7:05 A guide on setting up C/C++ development environment for Emacs solidius4747
2014-08-27 12:48 ` Dmitriy Igrishin
2014-08-27 13:18   ` Tu Hoang Do
2014-08-27 14:15     ` Dmitriy Igrishin
     [not found]       ` <CAMd9FiKzwc1QKa3KtZPFpTGs86bupRptFqL_WwCSE3kPGARXfg@mail.gmail.com>
2014-08-27 14:53         ` Fwd: " Tu Hoang Do
     [not found]           ` <CAAfz9KNL25WboPXG87Azd_6yVr8zrx6hNrCsmuWs6w_XTvdspQ@mail.gmail.com>
     [not found]             ` <CAMd9FiJyjk78a-3yMatvca3qp+pr4O+GmDp03ZqFSkpAEoxhGw@mail.gmail.com>
2014-08-27 18:14               ` Tu Hoang Do
2014-08-27 18:15                 ` Jai Dayal
2014-08-27 18:37                   ` Óscar Fuentes
2014-08-27 18:42                     ` Jai Dayal
2014-08-27 18:42                       ` Jai Dayal
2014-08-27 18:52                         ` Óscar Fuentes
2014-08-27 19:05                           ` Jai Dayal
2014-08-27 19:28                             ` Óscar Fuentes
2014-08-27 19:32                               ` Jai Dayal
2014-08-27 20:06                                 ` Óscar Fuentes
2014-08-27 20:11                                   ` Jai Dayal
2014-08-27 20:57                                     ` Óscar Fuentes
2014-08-27 23:17                                       ` Jai Dayal
2014-08-27 23:47                                         ` Óscar Fuentes
     [not found]                                       ` <mailman.7678.1409181490.1147.help-gnu-emacs@gnu.org>
2014-08-28  3:30                                         ` Rusi
2014-08-28  3:33                                           ` Jai Dayal
2014-08-28  4:29                                           ` Óscar Fuentes
     [not found]                                           ` <mailman.7693.1409200204.1147.help-gnu-emacs@gnu.org>
2014-08-28  5:39                                             ` Rusi
2014-08-28 12:27                                               ` Jai Dayal
     [not found]                                               ` <mailman.7714.1409228889.1147.help-gnu-emacs@gnu.org>
2014-08-28 15:53                                                 ` solidius4747
2014-08-28 21:22                                                   ` Óscar Fuentes [this message]
2014-08-28 22:24                                                     ` Stefan Monnier
2014-08-28 23:28                                                       ` Dmitry
2014-08-29  0:02                                                       ` Óscar Fuentes
     [not found]                                                       ` <mailman.7793.1409270604.1147.help-gnu-emacs@gnu.org>
2014-08-29  3:35                                                         ` Stefan Monnier
2014-08-29  6:06                                                     ` David Engster
2014-08-29 13:09                                                       ` Óscar Fuentes
2014-08-29 13:16                                                         ` Jai Dayal
2014-08-29 13:45                                                           ` Óscar Fuentes
2014-08-29 13:52                                                         ` David Engster
2014-08-29 14:16                                                           ` Óscar Fuentes
     [not found]                                                     ` <mailman.7808.1409292429.1147.help-gnu-emacs@gnu.org>
2014-08-29 13:15                                                       ` Rusi
2014-08-28 17:08                                                 ` Rusi
2014-08-28 17:13                                                   ` Jai Dayal
2014-08-28 19:43                                                     ` Marcin Borkowski
2014-08-28 19:47                                                       ` Jai Dayal
2014-08-28 20:15                                                         ` Marcin Borkowski
     [not found]                                                   ` <mailman.7743.1409246061.1147.help-gnu-emacs@gnu.org>
2014-08-28 17:26                                                     ` Rusi
2014-08-28 23:01                                                   ` Thorsten Jolitz
2014-08-27 18:45                     ` Óscar Fuentes
2014-08-27 14:39     ` Thien-Thi Nguyen
     [not found]     ` <mailman.7608.1409150189.1147.help-gnu-emacs@gnu.org>
2014-08-27 15:01       ` solidius4747
2014-08-27 18:31         ` Óscar Fuentes
     [not found] <mailman.127014.1409321829.1146.help-gnu-emacs@gnu.org>
2014-08-29 14:33 ` Tory S. Anderson
2014-08-29 17:21   ` Jai Dayal
2014-08-29 18:11     ` Marcin Borkowski
2014-08-29 18:15       ` Jai Dayal
2014-08-29 18:27       ` Marcin Borkowski
2014-08-29 18:34         ` Jai Dayal
2014-08-29 19:17           ` Marcin Borkowski
     [not found]     ` <mailman.7863.1409335908.1147.help-gnu-emacs@gnu.org>
2014-08-30  3:43       ` Rusi
2014-08-30  7:24         ` Thien-Thi Nguyen
2014-08-30 21:27         ` Jai Dayal
     [not found]         ` <mailman.7951.1409434065.1147.help-gnu-emacs@gnu.org>
2014-08-31  1:53           ` Rusi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ppfk71ip.fsf@wanadoo.es \
    --to=ofv@wanadoo.es \
    --cc=help-gnu-emacs@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.